{"version":3,"sources":["../src/lib/utils.ts","../src/hooks/use-hydrated.ts","../src/lib/auth-data-cache.ts","../src/hooks/use-auth-data.ts","../src/localization/admin-error-codes.ts","../src/localization/anonymous-error-codes.ts","../src/localization/api-key-error-codes.ts","../src/localization/base-error-codes.ts","../src/localization/captcha-error-codes.ts","../src/localization/email-otp-error-codes.ts","../src/localization/generic-oauth-error-codes.ts","../src/localization/haveibeenpwned-error-codes.ts","../src/localization/multi-session-error-codes.ts","../src/localization/organization-error-codes.ts","../src/localization/passkey-error-codes.ts","../src/localization/phone-number-error-codes.ts","../src/localization/two-factor-error-codes.ts","../src/localization/username-error-codes.ts","../src/localization/auth-localization.ts","../src/hooks/use-current-organization.ts","../src/lib/organization-refetcher.tsx","../src/lib/view-paths.ts","../src/lib/auth-ui-provider.tsx","../src/components/utility/components/provider-icons.tsx","../src/lib/social-providers.ts","../src/hooks/use-authenticate.ts","../src/components/ui/button.tsx","../src/components/ui/card.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/avatar.tsx","../src/components/organization/components/organization-logo.tsx","../src/components/organization/cells/organization-cell-view.tsx","../src/components/organization/cards/accept-invitation-card.tsx","../src/components/ui/separator.tsx","../src/components/auth/buttons/anonymous-sign-in-button.tsx","../src/components/auth/buttons/email-otp-button.tsx","../src/components/auth/buttons/magic-link-button.tsx","../src/hooks/use-success-transition.ts","../src/components/auth/buttons/passkey-button.tsx","../src/components/auth/buttons/provider-button.tsx","../src/components/auth/components/auth-callback.tsx","../src/components/ui/alert.tsx","../src/components/auth/components/device-code-display.tsx","../src/components/ui/badge.tsx","../src/components/auth/components/last-login-badge.tsx","../src/components/auth/components/one-tap.tsx","../src/components/auth/components/sign-out.tsx","../src/components/ui/label.tsx","../src/components/ui/form.tsx","../src/components/ui/input.tsx","../src/components/ui/input-otp.tsx","../src/components/auth/forms/email-otp-form.tsx","../src/hooks/use-captcha-stub.ts","../src/components/auth/forms/forgot-password-form.tsx","../src/components/auth/forms/magic-link-form.tsx","../src/components/utility/components/signed-in.tsx","../src/components/utility/components/signed-out.tsx","../src/components/utility/components/auth-loading.tsx","../src/components/utility/components/redirect-to-sign-in.tsx","../src/components/utility/components/redirect-to-sign-up.tsx","../src/components/utility/components/password-input.tsx","../src/components/utility/components/form-error.tsx","../src/components/ui/checkbox.tsx","../src/components/auth/forms/phone-sign-in-form.tsx","../src/components/auth/forms/phone-sign-up-form.tsx","../src/components/auth/forms/recover-account-form.tsx","../src/components/auth/forms/reset-password-form.tsx","../src/components/auth/forms/sign-in-form.tsx","../src/lib/image-utils.ts","../src/components/ui/dropdown-menu.tsx","../src/components/ui/textarea.tsx","../src/lib/gravatar-utils.ts","../src/components/user/components/user-avatar.tsx","../src/components/auth/forms/sign-up-form.tsx","../src/components/auth/forms/two-factor-form.tsx","../src/components/auth/forms/auth-form.tsx","../src/components/web3/buttons/siwe-sign-in-button.tsx","../src/components/auth/views/auth-view.tsx","../src/components/auth/cards/device-authorization-card.tsx","../src/components/auth/cards/device-approval-card.tsx","../src/components/ui/dialog.tsx","../src/components/settings/shared/session-freshness-dialog.tsx","../src/components/security/cells/passkey-cell.tsx","../src/components/settings/shared/settings-action-button.tsx","../src/components/settings/shared/settings-card-footer.tsx","../src/components/settings/shared/settings-card-header.tsx","../src/components/settings/shared/settings-card.tsx","../src/components/security/cards/passkeys-card.tsx","../src/components/ui/radio-group.tsx","../src/components/passkey/wizards/passkey-setup-wizard.tsx","../src/components/security/dialogs/backup-codes-dialog.tsx","../src/components/security/dialogs/two-factor-password-dialog.tsx","../src/components/security/cards/two-factor-card.tsx","../src/components/settings/skeletons/input-field-skeleton.tsx","../src/components/security/cards/change-password-card.tsx","../src/components/settings/skeletons/settings-cell-skeleton.tsx","../src/components/security/cells/session-cell.tsx","../src/components/security/cards/sessions-card.tsx","../src/components/settings/security/change-email-card.tsx","../src/components/security/cards/phone-number-card.tsx","../src/components/security/banners/email-verification-banner.tsx","../src/components/organization/dialogs/create-organization-dialog.tsx","../src/components/organization/cards/create-organization-card.tsx","../src/components/organization/dialogs/delete-organization-dialog.tsx","../src/components/organization/cards/delete-organization-card.tsx","../src/components/organization/dialogs/leave-organization-dialog.tsx","../src/components/organization/cards/leave-organization-card.tsx","../src/components/ui/user-view.tsx","../src/components/user/buttons/user-button.tsx","../src/components/organization/cells/invitation-cell.tsx","../src/components/organization/cards/organization-invitations-card.tsx","../src/components/organization/cards/organization-logo-card.tsx","../src/components/ui/select.tsx","../src/components/organization/dialogs/invite-member-dialog.tsx","../src/components/organization/dialogs/remove-member-dialog.tsx","../src/components/organization/dialogs/update-member-role-dialog.tsx","../src/components/organization/cells/member-cell.tsx","../src/components/organization/cards/organization-members-card.tsx","../src/components/organization/cards/organization-name-card.tsx","../src/components/organization/cards/organization-slug-card.tsx","../src/components/organization/cells/organization-cell.tsx","../src/components/organization/cards/organizations-card.tsx","../src/components/organization/cards/user-invitations-card.tsx","../src/components/organization/dialogs/transfer-ownership-dialog.tsx","../src/components/ui/drawer.tsx","../src/components/ui/progress.tsx","../src/components/apiKey/cards/api-key-usage-card.tsx","../src/hooks/use-lang.ts","../src/components/settings/api-key/api-key-delete-dialog.tsx","../src/components/organization/views/personal-account-view.tsx","../src/components/apiKey/dialogs/create-api-key-dialog.tsx","../src/components/apiKey/dialogs/update-api-key-dialog.tsx","../src/components/apiKey/cells/api-key-cell.tsx","../src/components/settings/api-key/api-key-display-dialog.tsx","../src/components/apiKey/cards/api-keys-card.tsx","../src/components/organization/components/organization-settings-cards.tsx","../src/components/organization/views/organization-view.tsx","../src/components/organization/components/organization-switcher.tsx","../src/components/settings/account/account-cell.tsx","../src/components/settings/account/accounts-card.tsx","../src/components/settings/account/update-avatar-card.tsx","../src/components/settings/account/update-field-card.tsx","../src/components/settings/account/update-name-card.tsx","../src/components/settings/account/update-username-card.tsx","../src/components/settings/account-settings-cards.tsx","../src/components/account/cards/anonymous-upgrade-card.tsx","../src/components/account/dialogs/delete-account-dialog.tsx","../src/components/account/cards/delete-account-card.tsx","../src/components/account/cards/link-account-card.tsx","../src/components/ui/alert-dialog.tsx","../src/components/account/cards/unlink-account-card.tsx","../src/components/settings/providers/providers-card.tsx","../src/components/settings/security-settings-cards.tsx","../src/components/account/views/account-view.tsx","../src/components/ui/table.tsx","../src/components/admin/tables/user-management-table.tsx","../src/components/admin/dialogs/ban-user-dialog.tsx","../src/components/admin/dialogs/impersonate-user-dialog.tsx","../src/components/web3/cards/wallet-connection-card.tsx","../src/components/enterprise/screens/oidc-consent-screen.tsx","../src/components/ui/tabs.tsx","../src/components/enterprise/cards/sso-config-card.tsx","../src/components/ui/stepper.tsx","../src/components/enterprise/wizards/saml-setup-wizard.tsx","../src/components/enterprise/cards/oidc-provider-card.tsx","../src/hooks/use-theme.ts","../src/hooks/use-organization-members.ts"],"names":["z","key","toast","useSyncExternalStore","error","useContext","useEffect","useMemo","basePath","jsx","jsxs","React","useState","useCallback","XIcon","React2","LockIcon","MailIcon","useRef","Loader2","cva","React3","Fragment","Slot","React4","z2","z3","useForm","zodResolver","z4","useFormState","CheckIcon","z5","z6","phoneNumber","z7","z8","z9","z11","QRCode","socialProvider","React6","React7","FingerprintIcon","authLocalization","RadioGroup","CircleIcon","z12","z13","z14","z15","ShieldCheck","React8","defaultLocalization","z16","logo","UploadCloudIcon","Trash2Icon","z17","isPending","sessionData","user","z18","EllipsisIcon","z19","z20","SettingsIcon","LogOutIcon","DrawerPrimitive","window","z21","z22","KeyRoundIcon","AlertTriangleIcon","ActivityIcon","RefreshCwIcon","CopyIcon","ChevronsUpDown","LogInIcon","z23","React9","AlertCircle","Mail","z24","MenuIcon","AlertTriangle","Trash2","Copy","CheckCircle2","React11","Check","React12","Upload","TestTube2","React13","Plus","Key","Eye","ExternalLink"],"mappings":"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","file":"index.mjs","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\nimport * as z from \"zod\"\nimport type { AuthLocalization } from \"../localization/auth-localization\"\nimport type { PasswordValidation } from \"../types/password-validation\"\n\nexport function cn(...inputs: ClassValue[]) {\n    return twMerge(clsx(inputs))\n}\n\nexport function isValidEmail(email: string) {\n    const emailRegex: RegExp = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n    return emailRegex.test(email)\n}\n\n/**\n * Converts error codes from SNAKE_CASE to camelCase\n * Example: INVALID_TWO_FACTOR_COOKIE -> invalidTwoFactorCookie\n */\nexport function errorCodeToCamelCase(errorCode: string): string {\n    return errorCode\n        .toLowerCase()\n        .replace(/_([a-z])/g, (_, char) => char.toUpperCase())\n}\n\n/**\n * Gets a localized error message from an error object\n */\nexport function getLocalizedError({\n    error,\n    localization\n}: {\n    // biome-ignore lint/suspicious/noExplicitAny: ignore\n    error: any\n    localization?: Partial<AuthLocalization>\n}) {\n    if (typeof error === \"string\") {\n        const key = error as keyof AuthLocalization\n        if (typeof key === \"string\" && localization?.[key])\n            return localization[key]\n    }\n\n    if (error?.error) {\n        if (error.error.code) {\n            const errorCode = error.error.code as keyof AuthLocalization\n            if (typeof errorCode === \"string\" && localization?.[errorCode]) \n                return localization[errorCode]\n        }\n\n        return (\n            error.error.message ||\n            error.error.code ||\n            error.error.statusText ||\n            localization?.REQUEST_FAILED\n        )\n    }\n\n    return error?.message || localization?.REQUEST_FAILED || \"Request failed\"\n}\n\nexport function getSearchParam(paramName: string) {\n    return typeof window !== \"undefined\"\n        ? new URLSearchParams(window.location.search).get(paramName)\n        : null\n}\n\nexport function getViewByPath<T extends object>(viewPaths: T, path?: string) {\n    for (const key in viewPaths) {\n        if (viewPaths[key] === path) {\n            return key\n        }\n    }\n}\n\nexport function getKeyByValue<T extends Record<string, unknown>>(\n    object: T,\n    value?: T[keyof T]\n): keyof T | undefined {\n    return (Object.keys(object) as Array<keyof T>).find(\n        (key) => object[key] === value\n    )\n}\n\nexport function getPasswordSchema(\n    passwordValidation?: PasswordValidation,\n    localization?: AuthLocalization\n) {\n    let schema = z.string().min(1, {\n        message: localization?.PASSWORD_REQUIRED\n    })\n    if (passwordValidation?.minLength) {\n        schema = schema.min(passwordValidation.minLength, {\n            message: localization?.PASSWORD_TOO_SHORT\n        })\n    }\n    if (passwordValidation?.maxLength) {\n        schema = schema.max(passwordValidation.maxLength, {\n            message: localization?.PASSWORD_TOO_LONG\n        })\n    }\n    if (passwordValidation?.regex) {\n        schema = schema.regex(passwordValidation.regex, {\n            message: localization?.INVALID_PASSWORD\n        })\n    }\n    return schema\n}\n","import { useSyncExternalStore } from \"react\"\n\nfunction subscribe() {\n    return () => {}\n}\n\nexport function useIsHydrated() {\n    return useSyncExternalStore(\n        subscribe,\n        () => true,\n        () => false\n    )\n}\n","type CacheEntry<T> = {\n    data: T | null\n    timestamp: number\n    isRefetching: boolean\n}\n\nclass AuthDataCache {\n    private cache = new Map<string, CacheEntry<unknown>>()\n    private listeners = new Map<string, Set<() => void>>()\n    private inFlightRequests = new Map<string, Promise<unknown>>()\n\n    get<T>(key: string): CacheEntry<T> | undefined {\n        return this.cache.get(key) as CacheEntry<T> | undefined\n    }\n\n    set<T>(key: string, data: T | null) {\n        const entry: CacheEntry<T> = {\n            data,\n            timestamp: Date.now(),\n            isRefetching: false\n        }\n        this.cache.set(key, entry)\n        this.notify(key)\n    }\n\n    setRefetching(key: string, isRefetching: boolean) {\n        const entry = this.cache.get(key)\n        if (entry) {\n            entry.isRefetching = isRefetching\n            this.notify(key)\n        }\n    }\n\n    clear(key?: string) {\n        if (key) {\n            this.cache.delete(key)\n            this.inFlightRequests.delete(key)\n            this.notify(key)\n        } else {\n            this.cache.clear()\n            this.inFlightRequests.clear()\n            const keys = Array.from(this.listeners.keys())\n            for (const key of keys) {\n                this.notify(key)\n            }\n        }\n    }\n\n    getInFlightRequest<T>(key: string): Promise<T> | undefined {\n        return this.inFlightRequests.get(key) as Promise<T> | undefined\n    }\n\n    setInFlightRequest<T>(key: string, promise: Promise<T>) {\n        this.inFlightRequests.set(key, promise)\n    }\n\n    removeInFlightRequest(key: string) {\n        this.inFlightRequests.delete(key)\n    }\n\n    subscribe(key: string, callback: () => void) {\n        if (!this.listeners.has(key)) {\n            this.listeners.set(key, new Set())\n        }\n        this.listeners.get(key)!.add(callback)\n\n        return () => {\n            const callbacks = this.listeners.get(key)\n            if (callbacks) {\n                callbacks.delete(callback)\n                if (callbacks.size === 0) {\n                    this.listeners.delete(key)\n                }\n            }\n        }\n    }\n\n    private notify(key: string) {\n        const callbacks = this.listeners.get(key)\n        if (callbacks) {\n            const callbackArray = Array.from(callbacks)\n            for (const callback of callbackArray) {\n                callback()\n            }\n        }\n    }\n}\n\n// Global singleton instance\nexport const authDataCache = new AuthDataCache()\n","import {\n    useCallback,\n    useContext,\n    useEffect,\n    useRef,\n    useState,\n    useSyncExternalStore\n} from \"react\"\n\nimport { authDataCache } from \"../lib/auth-data-cache\"\nimport { AuthUIContext } from \"../lib/auth-ui-provider\"\nimport { getLocalizedError } from \"../lib/utils\"\nimport type { FetchError } from \"../types/fetch-error\"\n\nexport function useAuthData<T>({\n    queryFn,\n    cacheKey,\n    staleTime = 10000 // Default 10 seconds\n}: {\n    queryFn: () => Promise<{ data: T | null; error?: FetchError | null }>\n    cacheKey?: string\n    staleTime?: number\n}) {\n    const {\n        hooks: { useSession },\n        toast,\n        localization\n    } = useContext(AuthUIContext)\n    const { data: sessionData, isPending: sessionPending } = useSession()\n\n    // Generate a stable cache key based on the queryFn if not provided\n    const queryFnRef = useRef(queryFn)\n    queryFnRef.current = queryFn\n\n    const stableCacheKey = cacheKey || queryFn.toString()\n\n    // Subscribe to cache updates for this key\n    const cacheEntry = useSyncExternalStore(\n        useCallback(\n            (callback) => authDataCache.subscribe(stableCacheKey, callback),\n            [stableCacheKey]\n        ),\n        useCallback(\n            () => authDataCache.get<T>(stableCacheKey),\n            [stableCacheKey]\n        ),\n        useCallback(\n            () => authDataCache.get<T>(stableCacheKey),\n            [stableCacheKey]\n        )\n    )\n\n    const initialized = useRef(false)\n    const previousUserId = useRef<string | undefined>(undefined)\n    const [error, setError] = useState<FetchError | null>(null)\n\n    const refetch = useCallback(async () => {\n        // Check if there's already an in-flight request for this key\n        const existingRequest = authDataCache.getInFlightRequest<{\n            data: T | null\n            error?: FetchError | null\n        }>(stableCacheKey)\n        if (existingRequest) {\n            // Wait for the existing request to complete\n            try {\n                const result = await existingRequest\n                if (result.error) {\n                    setError(result.error)\n                } else {\n                    setError(null)\n                }\n            } catch (err) {\n                setError(err as FetchError)\n            }\n            return\n        }\n\n        // Mark as refetching if we have cached data\n        if (cacheEntry?.data !== undefined) {\n            authDataCache.setRefetching(stableCacheKey, true)\n        }\n\n        // Create the fetch promise\n        const fetchPromise = queryFnRef.current()\n\n        // Store the promise as in-flight\n        authDataCache.setInFlightRequest(stableCacheKey, fetchPromise)\n\n        try {\n            const { data, error } = await fetchPromise\n\n            if (error) {\n                setError(error)\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n            } else {\n                setError(null)\n            }\n\n            // Update cache with new data\n            authDataCache.set(stableCacheKey, data)\n        } catch (err) {\n            const error = err as FetchError\n            setError(error)\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        } finally {\n            authDataCache.setRefetching(stableCacheKey, false)\n            authDataCache.removeInFlightRequest(stableCacheKey)\n        }\n    }, [stableCacheKey, toast, localization, cacheEntry])\n\n    useEffect(() => {\n        const currentUserId = sessionData?.user?.id\n\n        if (!sessionData) {\n            // Clear cache when session is lost\n            authDataCache.setRefetching(stableCacheKey, false)\n            authDataCache.clear(stableCacheKey)\n            initialized.current = false\n            previousUserId.current = undefined\n            return\n        }\n\n        // Check if user ID has changed\n        const userIdChanged =\n            previousUserId.current !== undefined &&\n            previousUserId.current !== currentUserId\n\n        // If user changed, clear cache to ensure isPending becomes true\n        if (userIdChanged) {\n            authDataCache.clear(stableCacheKey)\n        }\n\n        // If we have cached data, we're not pending anymore\n        const hasCachedData = cacheEntry?.data !== undefined\n\n        // Check if data is stale\n        const isStale =\n            !cacheEntry || Date.now() - cacheEntry.timestamp > staleTime\n\n        if (\n            !initialized.current ||\n            !hasCachedData ||\n            userIdChanged ||\n            (hasCachedData && isStale)\n        ) {\n            // Only fetch if we don't have data or if the data is stale\n            if (!hasCachedData || isStale) {\n                initialized.current = true\n                refetch()\n            }\n        }\n\n        // Update the previous user ID\n        previousUserId.current = currentUserId\n    }, [\n        sessionData,\n        sessionData?.user?.id,\n        stableCacheKey,\n        refetch,\n        cacheEntry,\n        staleTime\n    ])\n\n    // Determine if we're in a pending state\n    // We're only pending if:\n    // 1. Session is still loading, OR\n    // 2. We have no cached data and no error\n    const isPending =\n        sessionPending || (cacheEntry?.data === undefined && !error)\n\n    return {\n        data: cacheEntry?.data ?? null,\n        isPending,\n        isRefetching: cacheEntry?.isRefetching ?? false,\n        error,\n        refetch\n    }\n}\n","/**\n * admin-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const ADMIN_ERROR_CODES = {\n    FAILED_TO_CREATE_USER: \"Failed to create user\",\n    USER_ALREADY_EXISTS: \"User already exists\",\n    YOU_CANNOT_BAN_YOURSELF: \"You cannot ban yourself\",\n    YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE:\n        \"You are not allowed to change users role\",\n    YOU_ARE_NOT_ALLOWED_TO_CREATE_USERS: \"You are not allowed to create users\",\n    YOU_ARE_NOT_ALLOWED_TO_LIST_USERS: \"You are not allowed to list users\",\n    YOU_ARE_NOT_ALLOWED_TO_LIST_USERS_SESSIONS:\n        \"You are not allowed to list users sessions\",\n    YOU_ARE_NOT_ALLOWED_TO_BAN_USERS: \"You are not allowed to ban users\",\n    YOU_ARE_NOT_ALLOWED_TO_IMPERSONATE_USERS:\n        \"You are not allowed to impersonate users\",\n    YOU_ARE_NOT_ALLOWED_TO_REVOKE_USERS_SESSIONS:\n        \"You are not allowed to revoke users sessions\",\n    YOU_ARE_NOT_ALLOWED_TO_DELETE_USERS: \"You are not allowed to delete users\",\n    YOU_ARE_NOT_ALLOWED_TO_SET_USERS_PASSWORD:\n        \"You are not allowed to set users password\",\n    BANNED_USER: \"You have been banned from this application\"\n}\n","/**\n * anonymous-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const ANONYMOUS_ERROR_CODES = {\n    FAILED_TO_CREATE_USER: \"Failed to create user\",\n    COULD_NOT_CREATE_SESSION: \"Could not create session\",\n    ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY:\n        \"Anonymous users cannot sign in again anonymously\"\n}\n","/**\n * api-key-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const API_KEY_ERROR_CODES = {\n    INVALID_METADATA_TYPE: \"metadata must be an object or undefined\",\n    REFILL_AMOUNT_AND_INTERVAL_REQUIRED:\n        \"refillAmount is required when refillInterval is provided\",\n    REFILL_INTERVAL_AND_AMOUNT_REQUIRED:\n        \"refillInterval is required when refillAmount is provided\",\n    USER_BANNED: \"User is banned\",\n    UNAUTHORIZED_SESSION: \"Unauthorized or invalid session\",\n    KEY_NOT_FOUND: \"API Key not found\",\n    KEY_DISABLED: \"API Key is disabled\",\n    KEY_EXPIRED: \"API Key has expired\",\n    USAGE_EXCEEDED: \"API Key has reached its usage limit\",\n    KEY_NOT_RECOVERABLE: \"API Key is not recoverable\",\n    EXPIRES_IN_IS_TOO_SMALL:\n        \"The expiresIn is smaller than the predefined minimum value.\",\n    EXPIRES_IN_IS_TOO_LARGE:\n        \"The expiresIn is larger than the predefined maximum value.\",\n    INVALID_REMAINING: \"The remaining count is either too large or too small.\",\n    INVALID_PREFIX_LENGTH:\n        \"The prefix length is either too large or too small.\",\n    INVALID_NAME_LENGTH: \"The name length is either too large or too small.\",\n    METADATA_DISABLED: \"Metadata is disabled.\",\n    RATE_LIMIT_EXCEEDED: \"Rate limit exceeded.\",\n    NO_VALUES_TO_UPDATE: \"No values to update.\",\n    KEY_DISABLED_EXPIRATION: \"Custom key expiration values are disabled.\",\n    INVALID_API_KEY: \"Invalid API key.\",\n    INVALID_USER_ID_FROM_API_KEY: \"The user id from the API key is invalid.\",\n    INVALID_API_KEY_GETTER_RETURN_TYPE:\n        \"API Key getter returned an invalid key type. Expected string.\",\n    SERVER_ONLY_PROPERTY:\n        \"The property you're trying to set can only be set from the server auth instance only.\"\n}\n","/**\n * base-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const BASE_ERROR_CODES = {\n    USER_NOT_FOUND: \"User not found\",\n    FAILED_TO_CREATE_USER: \"Failed to create user\",\n    FAILED_TO_CREATE_SESSION: \"Failed to create session\",\n    FAILED_TO_UPDATE_USER: \"Failed to update user\",\n    FAILED_TO_GET_SESSION: \"Failed to get session\",\n    INVALID_PASSWORD: \"Invalid password\",\n    INVALID_EMAIL: \"Invalid email\",\n    INVALID_EMAIL_OR_PASSWORD: \"Invalid email or password\",\n    SOCIAL_ACCOUNT_ALREADY_LINKED: \"Social account already linked\",\n    PROVIDER_NOT_FOUND: \"Provider not found\",\n    INVALID_TOKEN: \"Invalid token\",\n    ID_TOKEN_NOT_SUPPORTED: \"id_token not supported\",\n    FAILED_TO_GET_USER_INFO: \"Failed to get user info\",\n    USER_EMAIL_NOT_FOUND: \"User email not found\",\n    EMAIL_NOT_VERIFIED: \"Email not verified\",\n    PASSWORD_TOO_SHORT: \"Password too short\",\n    PASSWORD_TOO_LONG: \"Password too long\",\n    USER_ALREADY_EXISTS: \"User already exists\",\n    EMAIL_CAN_NOT_BE_UPDATED: \"Email can not be updated\",\n    CREDENTIAL_ACCOUNT_NOT_FOUND: \"Credential account not found\",\n    SESSION_EXPIRED: \"Session expired. Re-authenticate to perform this action.\",\n    FAILED_TO_UNLINK_LAST_ACCOUNT: \"You can't unlink your last account\",\n    ACCOUNT_NOT_FOUND: \"Account not found\",\n    USER_ALREADY_HAS_PASSWORD:\n        \"User already has a password. Provide that to delete the account.\"\n}\n","/**\n * captcha-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n// These error codes are returned by the API\nconst EXTERNAL_ERROR_CODES = {\n    VERIFICATION_FAILED: \"Captcha verification failed\",\n    MISSING_RESPONSE: \"Missing CAPTCHA response\",\n    UNKNOWN_ERROR: \"Something went wrong\"\n}\n\n// These error codes are only visible in the server logs\nconst INTERNAL_ERROR_CODES = {\n    MISSING_SECRET_KEY: \"Missing secret key\",\n    SERVICE_UNAVAILABLE: \"CAPTCHA service unavailable\"\n}\n\nexport const CAPTCHA_ERROR_CODES = {\n    ...EXTERNAL_ERROR_CODES,\n    ...INTERNAL_ERROR_CODES\n}\n","/**\n * email-otp-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const EMAIL_OTP_ERROR_CODES = {\n    OTP_EXPIRED: \"otp expired\",\n    INVALID_OTP: \"Invalid OTP\",\n    INVALID_EMAIL: \"Invalid email\",\n    USER_NOT_FOUND: \"User not found\",\n    TOO_MANY_ATTEMPTS: \"Too many attempts\"\n}\n","/**\n * generic-oauth-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const GENERIC_OAUTH_ERROR_CODES = {\n    INVALID_OAUTH_CONFIGURATION: \"Invalid OAuth configuration\"\n}\n","/**\n * haveibeenpwned-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const HAVEIBEENPWNED_ERROR_CODES = {\n    PASSWORD_COMPROMISED:\n        \"The password you entered has been compromised. Please choose a different password.\"\n}\n","/**\n * multi-session-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const MULTI_SESSION_ERROR_CODES = {\n    INVALID_SESSION_TOKEN: \"Invalid session token\"\n}\n","/**\n * organization-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const ORGANIZATION_ERROR_CODES = {\n    YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION:\n        \"You are not allowed to create a new organization\",\n    YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS:\n        \"You have reached the maximum number of organizations\",\n    ORGANIZATION_ALREADY_EXISTS: \"Organization already exists\",\n    ORGANIZATION_NOT_FOUND: \"Organization not found\",\n    USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION:\n        \"User is not a member of the organization\",\n    YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION:\n        \"You are not allowed to update this organization\",\n    YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION:\n        \"You are not allowed to delete this organization\",\n    NO_ACTIVE_ORGANIZATION: \"No active organization\",\n    USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION:\n        \"User is already a member of this organization\",\n    MEMBER_NOT_FOUND: \"Member not found\",\n    ROLE_NOT_FOUND: \"Role not found\",\n    YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM:\n        \"You are not allowed to create a new team\",\n    TEAM_ALREADY_EXISTS: \"Team already exists\",\n    TEAM_NOT_FOUND: \"Team not found\",\n    YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER:\n        \"You cannot leave the organization as the only owner\",\n    YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER:\n        \"You are not allowed to delete this member\",\n    YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION:\n        \"You are not allowed to invite users to this organization\",\n    USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION:\n        \"User is already invited to this organization\",\n    INVITATION_NOT_FOUND: \"Invitation not found\",\n    YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION:\n        \"You are not the recipient of the invitation\",\n    YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION:\n        \"You are not allowed to cancel this invitation\",\n    INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION:\n        \"Inviter is no longer a member of the organization\",\n    YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE:\n        \"you are not allowed to invite user with this role\",\n    FAILED_TO_RETRIEVE_INVITATION: \"Failed to retrieve invitation\",\n    YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS:\n        \"You have reached the maximum number of teams\",\n    UNABLE_TO_REMOVE_LAST_TEAM: \"Unable to remove last team\",\n    YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER:\n        \"You are not allowed to update this member\",\n    ORGANIZATION_MEMBERSHIP_LIMIT_REACHED:\n        \"Organization membership limit reached\",\n    YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION:\n        \"You are not allowed to create teams in this organization\",\n    YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION:\n        \"You are not allowed to delete teams in this organization\",\n    YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM:\n        \"You are not allowed to update this team\",\n    YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM:\n        \"You are not allowed to delete this team\",\n    INVITATION_LIMIT_REACHED: \"Invitation limit reached\"\n}\n","/**\n * passkey-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const PASSKEY_ERROR_CODES = {\n    CHALLENGE_NOT_FOUND: \"Challenge not found\",\n    YOU_ARE_NOT_ALLOWED_TO_REGISTER_THIS_PASSKEY:\n        \"You are not allowed to register this passkey\",\n    FAILED_TO_VERIFY_REGISTRATION: \"Failed to verify registration\",\n    PASSKEY_NOT_FOUND: \"Passkey not found\",\n    AUTHENTICATION_FAILED: \"Authentication failed\",\n    UNABLE_TO_CREATE_SESSION: \"Unable to create session\",\n    FAILED_TO_UPDATE_PASSKEY: \"Failed to update passkey\"\n}\n","/**\n * phone-number-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const PHONE_NUMBER_ERROR_CODES = {\n    INVALID_PHONE_NUMBER: \"Invalid phone number\",\n    PHONE_NUMBER_EXIST: \"Phone number already exists\",\n    INVALID_PHONE_NUMBER_OR_PASSWORD: \"Invalid phone number or password\",\n    UNEXPECTED_ERROR: \"Unexpected error\",\n    OTP_NOT_FOUND: \"OTP not found\",\n    OTP_EXPIRED: \"OTP expired\",\n    INVALID_OTP: \"Invalid OTP\",\n    PHONE_NUMBER_NOT_VERIFIED: \"Phone number not verified\"\n}\n","/**\n * two-factor-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const TWO_FACTOR_ERROR_CODES = {\n    OTP_NOT_ENABLED: \"OTP not enabled\",\n    OTP_HAS_EXPIRED: \"OTP has expired\",\n    TOTP_NOT_ENABLED: \"TOTP not enabled\",\n    TWO_FACTOR_NOT_ENABLED: \"Two factor isn't enabled\",\n    BACKUP_CODES_NOT_ENABLED: \"Backup codes aren't enabled\",\n    INVALID_BACKUP_CODE: \"Invalid backup code\",\n    INVALID_CODE: \"Invalid code\",\n    TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE:\n        \"Too many attempts. Please request a new code.\",\n    INVALID_TWO_FACTOR_COOKIE: \"Invalid two factor cookie\"\n}\n","/**\n * username-error-codes\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nexport const USERNAME_ERROR_CODES = {\n    INVALID_USERNAME_OR_PASSWORD: \"invalid username or password\",\n    EMAIL_NOT_VERIFIED: \"email not verified\",\n    UNEXPECTED_ERROR: \"unexpected error\",\n    USERNAME_IS_ALREADY_TAKEN: \"username is already taken. please try another.\",\n    USERNAME_TOO_SHORT: \"username is too short\",\n    USERNAME_TOO_LONG: \"username is too long\",\n    INVALID_USERNAME: \"username is invalid\"\n}\n","import { ADMIN_ERROR_CODES } from \"./admin-error-codes\"\nimport { ANONYMOUS_ERROR_CODES } from \"./anonymous-error-codes\"\nimport { API_KEY_ERROR_CODES } from \"./api-key-error-codes\"\nimport { BASE_ERROR_CODES } from \"./base-error-codes\"\nimport { CAPTCHA_ERROR_CODES } from \"./captcha-error-codes\"\nimport { EMAIL_OTP_ERROR_CODES } from \"./email-otp-error-codes\"\nimport { GENERIC_OAUTH_ERROR_CODES } from \"./generic-oauth-error-codes\"\nimport { HAVEIBEENPWNED_ERROR_CODES } from \"./haveibeenpwned-error-codes\"\nimport { MULTI_SESSION_ERROR_CODES } from \"./multi-session-error-codes\"\nimport { ORGANIZATION_ERROR_CODES } from \"./organization-error-codes\"\nimport { PASSKEY_ERROR_CODES } from \"./passkey-error-codes\"\nimport { PHONE_NUMBER_ERROR_CODES } from \"./phone-number-error-codes\"\nimport { TWO_FACTOR_ERROR_CODES } from \"./two-factor-error-codes\"\nimport { USERNAME_ERROR_CODES } from \"./username-error-codes\"\n\nexport const authLocalization = {\n    /** @default \"App\" */\n    APP: \"App\",\n\n    /** @default \"Account\" */\n    ACCOUNT: \"Account\",\n\n    /** @default \"Accounts\" */\n    ACCOUNTS: \"Accounts\",\n\n    /** @default \"Manage your currently signed in accounts.\" */\n    ACCOUNTS_DESCRIPTION: \"Switch between your currently signed in accounts.\",\n\n    /** @default \"Sign in to an additional account.\" */\n    ACCOUNTS_INSTRUCTIONS: \"Sign in to an additional account.\",\n\n    /** @default \"Add Account\" */\n    ADD_ACCOUNT: \"Add Account\",\n\n    /** @default \"Add Passkey\" */\n    ADD_PASSKEY: \"Add Passkey\",\n\n    /** @default \"Already have an account?\" */\n    ALREADY_HAVE_AN_ACCOUNT: \"Already have an account?\",\n\n    /** @default \"Avatar\" */\n    AVATAR: \"Avatar\",\n\n    /** @default \"Click on the avatar to upload a custom one from your files.\" */\n    AVATAR_DESCRIPTION:\n        \"Click on the avatar to upload a custom one from your files.\",\n\n    /** @default \"An avatar is optional but strongly recommended.\" */\n    AVATAR_INSTRUCTIONS: \"An avatar is optional but strongly recommended.\",\n\n    /** @default \"Backup code is required\" */\n    BACKUP_CODE_REQUIRED: \"Backup code is required\",\n\n    /** @default \"Backup Codes\" */\n    BACKUP_CODES: \"Backup Codes\",\n\n    /** @default \"Save these backup codes in a secure place. You can use them to access your account if you lose your two-factor authentication method.\" */\n    BACKUP_CODES_DESCRIPTION:\n        \"Save these backup codes in a secure place. You can use them to access your account if you lose your two-factor authentication method.\",\n\n    /** @default \"Backup Code.\" */\n    BACKUP_CODE_PLACEHOLDER: \"Backup Code\",\n\n    /** @default \"Backup Code\" */\n    BACKUP_CODE: \"Backup Code\",\n\n    /** @default \"Cancel\" */\n    CANCEL: \"Cancel\",\n\n    /** @default \"Change Password\" */\n    CHANGE_PASSWORD: \"Change Password\",\n\n    /** @default \"Enter your current password and a new password.\" */\n    CHANGE_PASSWORD_DESCRIPTION:\n        \"Enter your current password and a new password.\",\n\n    /** @default \"Please use 8 characters at minimum.\" */\n    CHANGE_PASSWORD_INSTRUCTIONS: \"Please use 8 characters at minimum.\",\n\n    /** @default \"Your password has been changed.\" */\n    CHANGE_PASSWORD_SUCCESS: \"Your password has been changed.\",\n\n    /** @default \"Confirm Password\" */\n    CONFIRM_PASSWORD: \"Confirm Password\",\n\n    /** @default \"Confirm Password\" */\n    CONFIRM_PASSWORD_PLACEHOLDER: \"Confirm Password\",\n\n    /** @default \"Confirm password is required\" */\n    CONFIRM_PASSWORD_REQUIRED: \"Confirm password is required\",\n\n    /** @default \"Continue with Authenticator\" */\n    CONTINUE_WITH_AUTHENTICATOR: \"Continue with Authenticator\",\n\n    /** @default \"Copied to clipboard\" */\n    COPIED_TO_CLIPBOARD: \"Copied to clipboard\",\n\n    /** @default \"Copy to clipboard\" */\n    COPY_TO_CLIPBOARD: \"Copy to clipboard\",\n\n    /** @default \"Copy all codes\" */\n    COPY_ALL_CODES: \"Copy all codes\",\n\n    /** @default \"Continue\" */\n    CONTINUE: \"Continue\",\n\n    /** @default \"Loading...\" */\n    LOADING: \"Loading...\",\n\n    /** @default \"Current Password\" */\n    CURRENT_PASSWORD: \"Current Password\",\n\n    /** @default \"Current Password\" */\n    CURRENT_PASSWORD_PLACEHOLDER: \"Current Password\",\n\n    /** @default \"Current Session\" */\n    CURRENT_SESSION: \"Current Session\",\n\n    /** @default \"Delete\" */\n    DELETE: \"Delete\",\n\n    /** @default \"Delete Avatar\" */\n    DELETE_AVATAR: \"Delete Avatar\",\n\n    /** @default \"Delete Account\" */\n    DELETE_ACCOUNT: \"Delete Account\",\n\n    /** @default \"Permanently remove your account and all of its contents. This action is not reversible, so please continue with caution.\" */\n    DELETE_ACCOUNT_DESCRIPTION:\n        \"Permanently remove your account and all of its contents. This action is not reversible, so please continue with caution.\",\n\n    /** @default \"Please confirm the deletion of your account. This action is not reversible, so please continue with caution.\" */\n    DELETE_ACCOUNT_INSTRUCTIONS:\n        \"Please confirm the deletion of your account. This action is not reversible, so please continue with caution.\",\n\n    /** @default \"Please check your email to verify the deletion of your account.\" */\n    DELETE_ACCOUNT_VERIFY:\n        \"Please check your email to verify the deletion of your account.\",\n\n    /** @default \"Your account has been deleted.\" */\n    DELETE_ACCOUNT_SUCCESS: \"Your account has been deleted.\",\n\n    /** @default \"Disable Two-Factor\" */\n    DISABLE_TWO_FACTOR: \"Disable Two-Factor\",\n\n    /** @default \"Choose a provider to login to your account\" */\n    DISABLED_CREDENTIALS_DESCRIPTION:\n        \"Choose a provider to login to your account\",\n\n    /** @default \"Don't have an account?\" */\n    DONT_HAVE_AN_ACCOUNT: \"Don't have an account?\",\n\n    /** @default \"Done\" */\n    DONE: \"Done\",\n\n    /** @default \"Email\" */\n    EMAIL: \"Email\",\n\n    /** @default \"Enter the email address you want to use to log in.\" */\n    EMAIL_DESCRIPTION: \"Enter the email address you want to use to log in.\",\n\n    /** @default \"Please enter a valid email address.\" */\n    EMAIL_INSTRUCTIONS: \"Please enter a valid email address.\",\n\n    /** @default \"Email is the same\" */\n    EMAIL_IS_THE_SAME: \"Email is the same\",\n\n    /** @default \"m@example.com\" */\n    EMAIL_PLACEHOLDER: \"m@example.com\",\n\n    /** @default \"Email address is required\" */\n    EMAIL_REQUIRED: \"Email address is required\",\n\n    /** @default \"Please check your email to verify the change.\" */\n    EMAIL_VERIFY_CHANGE: \"Please check your email to verify the change.\",\n\n    /** @default \"Please check your email for the verification link.\" */\n    EMAIL_VERIFICATION: \"Please check your email for the verification link.\",\n\n    /** @default \"Enable Two-Factor\" */\n    ENABLE_TWO_FACTOR: \"Enable Two-Factor\",\n\n    /** @default \"is invalid\" */\n    IS_INVALID: \"is invalid\",\n\n    /** @default \"is required\" */\n    IS_REQUIRED: \"is required\",\n\n    /** @default \"is the same\" */\n    IS_THE_SAME: \"is the same\",\n\n    /** @default \"Forgot authenticator?\" */\n    FORGOT_AUTHENTICATOR: \"Forgot authenticator?\",\n\n    /** @default \"Forgot Password\" */\n    FORGOT_PASSWORD: \"Forgot Password\",\n\n    /** @default \"Send reset link\" */\n    FORGOT_PASSWORD_ACTION: \"Send reset link\",\n\n    /** @default \"Enter your email to reset your password\" */\n    FORGOT_PASSWORD_DESCRIPTION: \"Enter your email to reset your password\",\n\n    /** @default \"Check your email for the password reset link.\" */\n    FORGOT_PASSWORD_EMAIL: \"Check your email for the password reset link.\",\n\n    /** @default \"Forgot your password?\" */\n    FORGOT_PASSWORD_LINK: \"Forgot your password?\",\n\n    /** @default \"Link\" */\n    LINK: \"Link\",\n\n    /** @default \"Magic Link\" */\n    MAGIC_LINK: \"Magic Link\",\n\n    /** @default \"Send magic link\" */\n    MAGIC_LINK_ACTION: \"Send magic link\",\n\n    /** @default \"Enter your email to receive a magic link\" */\n    MAGIC_LINK_DESCRIPTION: \"Enter your email to receive a magic link\",\n\n    /** @default \"Check your email for the magic link\" */\n    MAGIC_LINK_EMAIL: \"Check your email for the magic link\",\n\n    /** @default \"Email Code\" */\n    EMAIL_OTP: \"Email Code\",\n\n    /** @default \"Send code\" */\n    EMAIL_OTP_SEND_ACTION: \"Send code\",\n\n    /** @default \"Verify code\" */\n    EMAIL_OTP_VERIFY_ACTION: \"Verify code\",\n\n    /** @default \"Enter your email to receive a code\" */\n    EMAIL_OTP_DESCRIPTION: \"Enter your email to receive a code\",\n\n    /** @default \"Please check your email for the verification code.\" */\n    EMAIL_OTP_VERIFICATION_SENT:\n        \"Please check your email for the verification code.\",\n\n    /** @default \"Name\" */\n    NAME: \"Name\",\n\n    /** @default \"Please enter your full name, or a display name.\" */\n    NAME_DESCRIPTION: \"Please enter your full name, or a display name.\",\n\n    /** @default \"Please use 32 characters at maximum.\" */\n    NAME_INSTRUCTIONS: \"Please use 32 characters at maximum.\",\n\n    /** @default \"Name\" */\n    NAME_PLACEHOLDER: \"Name\",\n\n    /** @default \"New Password\" */\n    NEW_PASSWORD: \"New Password\",\n\n    /** @default \"New Password\" */\n    NEW_PASSWORD_PLACEHOLDER: \"New Password\",\n\n    /** @default \"New password is required\" */\n    NEW_PASSWORD_REQUIRED: \"New password is required\",\n\n    /** @default \"One-Time Password\" */\n    ONE_TIME_PASSWORD: \"One-Time Password\",\n\n    /** @default \"Or continue with\" */\n    OR_CONTINUE_WITH: \"Or continue with\",\n\n    /** @default \"Passkey\" */\n    PASSKEY: \"Passkey\",\n\n    /** @default \"Passkeys\" */\n    PASSKEYS: \"Passkeys\",\n\n    /** @default \"Manage your passkeys for secure access.\" */\n    PASSKEYS_DESCRIPTION: \"Manage your passkeys for secure access.\",\n\n    /** @default \"Securely access your account without a password.\" */\n    PASSKEYS_INSTRUCTIONS: \"Securely access your account without a password.\",\n\n    /** @default \"Personal Account\" */\n    PERSONAL_ACCOUNT: \"Personal Account\",\n\n    /** @default \"API Keys\" */\n    API_KEYS: \"API Keys\",\n\n    /** @default \"Manage your API keys for secure access.\" */\n    API_KEYS_DESCRIPTION: \"Manage your API keys for secure access.\",\n\n    /** @default \"Generate API keys to access your account programmatically.\" */\n    API_KEYS_INSTRUCTIONS:\n        \"Generate API keys to access your account programmatically.\",\n\n    /** @default \"Create API Key\" */\n    CREATE_API_KEY: \"Create API Key\",\n\n    /** @default \"Enter a unique name for your API key to differentiate it from other keys.\" */\n    CREATE_API_KEY_DESCRIPTION:\n        \"Enter a unique name for your API key to differentiate it from other keys.\",\n\n    /** @default \"New API Key\" */\n    API_KEY_NAME_PLACEHOLDER: \"New API Key\",\n\n    /** @default \"API Key Created\" */\n    API_KEY_CREATED: \"API Key Created\",\n\n    /** @default \"Please copy your API key and store it in a safe place. For security reasons we cannot show it again.\" */\n    CREATE_API_KEY_SUCCESS:\n        \"Please copy your API key and store it in a safe place. For security reasons we cannot show it again.\",\n\n    /** @default \"Never Expires\" */\n    NEVER_EXPIRES: \"Never Expires\",\n\n    /** @default \"Expires\" */\n    EXPIRES: \"Expires\",\n\n    /** @default \"No Expiration\" */\n    NO_EXPIRATION: \"No Expiration\",\n\n    /** @default \"Create Organization\" */\n    CREATE_ORGANIZATION: \"Create Organization\",\n\n    /** @default \"Organization\" */\n    ORGANIZATION: \"Organization\",\n\n    /** @default \"Name\" */\n    ORGANIZATION_NAME: \"Name\",\n\n    /** @default \"Acme Inc.\" */\n    ORGANIZATION_NAME_PLACEHOLDER: \"Acme Inc.\",\n\n    /** @default \"This is your organization's visible name.\" */\n    ORGANIZATION_NAME_DESCRIPTION: \"This is your organization's visible name.\",\n\n    /** @default \"Please use 32 characters at maximum.\" */\n    ORGANIZATION_NAME_INSTRUCTIONS: \"Please use 32 characters at maximum.\",\n\n    /** @default \"Slug URL\" */\n    ORGANIZATION_SLUG: \"Slug URL\",\n\n    /** @default \"This is your organization's URL namespace.\" */\n    ORGANIZATION_SLUG_DESCRIPTION: \"This is your organization's URL namespace.\",\n\n    /** @default \"Please use 48 characters at maximum.\" */\n    ORGANIZATION_SLUG_INSTRUCTIONS: \"Please use 48 characters at maximum.\",\n\n    /** @default \"acme-inc\" */\n    ORGANIZATION_SLUG_PLACEHOLDER: \"acme-inc\",\n\n    /** @default \"Organization created successfully\" */\n    CREATE_ORGANIZATION_SUCCESS: \"Organization created successfully\",\n\n    /** @default \"Password\" */\n    PASSWORD: \"Password\",\n\n    /** @default \"Password\" */\n    PASSWORD_PLACEHOLDER: \"Password\",\n\n    /** @default \"Password is required\" */\n    PASSWORD_REQUIRED: \"Password is required\",\n\n    /** @default \"Passwords do not match\" */\n    PASSWORDS_DO_NOT_MATCH: \"Passwords do not match\",\n\n    /** @default \"Providers\" */\n    PROVIDERS: \"Providers\",\n\n    /** @default \"Connect your account with a third-party service.\" */\n    PROVIDERS_DESCRIPTION: \"Connect your account with a third-party service.\",\n\n    /** @default \"Recover Account\" */\n    RECOVER_ACCOUNT: \"Recover Account\",\n\n    /** @default \"Recover account\" */\n    RECOVER_ACCOUNT_ACTION: \"Recover account\",\n\n    /** @default \"Please enter a backup code to access your account\" */\n    RECOVER_ACCOUNT_DESCRIPTION:\n        \"Please enter a backup code to access your account\",\n\n    /** @default \"Remember me\" */\n    REMEMBER_ME: \"Remember me\",\n\n    /** @default \"Resend code\" */\n    RESEND_CODE: \"Resend code\",\n\n    /** @default \"Resend verification email\" */\n    RESEND_VERIFICATION_EMAIL: \"Resend Verification Email\",\n\n    /** @default \"Reset Password\" */\n    RESET_PASSWORD: \"Reset Password\",\n\n    /** @default \"Save new password\" */\n    RESET_PASSWORD_ACTION: \"Save new password\",\n\n    /** @default \"Enter your new password below\" */\n    RESET_PASSWORD_DESCRIPTION: \"Enter your new password below\",\n\n    /** @default \"Password reset successfully\" */\n    RESET_PASSWORD_SUCCESS: \"Password reset successfully\",\n\n    /** @default \"Request failed\" */\n    REQUEST_FAILED: \"Request failed\",\n\n    /** @default \"Revoke\" */\n    REVOKE: \"Revoke\",\n\n    /** @default \"Delete API Key\" */\n    DELETE_API_KEY: \"Delete API Key\",\n\n    /** @default \"Are you sure you want to delete this API key?\" */\n    DELETE_API_KEY_CONFIRM: \"Are you sure you want to delete this API key?\",\n\n    /** @default \"API Key\" */\n    API_KEY: \"API Key\",\n\n    /** @default \"Sign In\" */\n    SIGN_IN: \"Sign In\",\n\n    /** @default \"Login\" */\n    SIGN_IN_ACTION: \"Login\",\n\n    /** @default \"Enter your email below to login to your account\" */\n    SIGN_IN_DESCRIPTION: \"Enter your email below to login to your account\",\n\n    /** @default \"Enter your username or email below to login to your account\" */\n    SIGN_IN_USERNAME_DESCRIPTION:\n        \"Enter your username or email to login to your account\",\n\n    /** @default \"Sign in with\" */\n    SIGN_IN_WITH: \"Sign in with\",\n\n    /** @default \"Sign in anonymously\" */\n    SIGN_IN_ANONYMOUSLY: \"Sign in anonymously\",\n\n    /** @default \"Continue as guest\" */\n    ANONYMOUS_SIGN_IN: \"Continue as guest\",\n\n    /** @default \"Sign in with Ethereum\" */\n    SIGN_IN_WITH_ETHEREUM: \"Sign in with Ethereum\",\n\n    /** @default \"Connect your Ethereum wallet\" */\n    SIWE_SIGN_IN: \"Connect your Ethereum wallet\",\n\n    /** @default \"Sign Out\" */\n    SIGN_OUT: \"Sign Out\",\n\n    /** @default \"Sign Up\" */\n    SIGN_UP: \"Sign Up\",\n\n    /** @default \"Create an account\" */\n    SIGN_UP_ACTION: \"Create an account\",\n\n    /** @default \"Enter your information to create an account\" */\n    SIGN_UP_DESCRIPTION: \"Enter your information to create an account\",\n\n    /** @default \"Check your email for the verification link.\" */\n    SIGN_UP_EMAIL: \"Check your email for the verification link.\",\n\n    /** @default \"Sessions\" */\n    SESSIONS: \"Sessions\",\n\n    /** @default \"Manage your active sessions and revoke access.\" */\n    SESSIONS_DESCRIPTION: \"Manage your active sessions and revoke access.\",\n\n    /** @default \"Set Password\" */\n    SET_PASSWORD: \"Set Password\",\n\n    /** @default \"Click the button below to receive an email to set up a password for your account.\" */\n    SET_PASSWORD_DESCRIPTION:\n        \"Click the button below to receive an email to set up a password for your account.\",\n\n    /** @default \"Settings\" */\n    SETTINGS: \"Settings\",\n\n    /** @default \"Save\" */\n    SAVE: \"Save\",\n\n    /** @default \"Security\" */\n    SECURITY: \"Security\",\n\n    /** @default \"Switch Account\" */\n    SWITCH_ACCOUNT: \"Switch Account\",\n\n    /** @default \"Trust this device\" */\n    TRUST_DEVICE: \"Trust this device\",\n\n    /** @default \"Two-Factor\" */\n    TWO_FACTOR: \"Two-Factor\",\n\n    /** @default \"Verify code\" */\n    TWO_FACTOR_ACTION: \"Verify code\",\n\n    /** @default \"Please enter your one-time password to continue\" */\n    TWO_FACTOR_DESCRIPTION: \"Please enter your one-time password to continue\",\n\n    /** @default \"Add an extra layer of security to your account.\" */\n    TWO_FACTOR_CARD_DESCRIPTION:\n        \"Add an extra layer of security to your account.\",\n\n    /** @default \"Please enter your password to disable 2FA.\" */\n    TWO_FACTOR_DISABLE_INSTRUCTIONS:\n        \"Please enter your password to disable 2FA.\",\n\n    /** @default \"Please enter your password to enable 2FA\" */\n    TWO_FACTOR_ENABLE_INSTRUCTIONS: \"Please enter your password to enable 2FA.\",\n\n    /** @default \"Two-factor authentication has been enabled\" */\n    TWO_FACTOR_ENABLED: \"Two-factor authentication has been enabled\",\n\n    /** @default \"Two-Factor Authentication has been disabled\" */\n    TWO_FACTOR_DISABLED: \"Two-Factor Authentication has been disabled\",\n\n    /** @default \"Two-Factor Authentication\" */\n    TWO_FACTOR_PROMPT: \"Two-Factor Authentication\",\n\n    /** @default \"Scan the QR Code with your Authenticator\" */\n    TWO_FACTOR_TOTP_LABEL: \"Scan the QR Code with your Authenticator\",\n\n    /** @default \"Send verification code\" */\n    SEND_VERIFICATION_CODE: \"Send verification code\",\n\n    /** @default \"Unlink\" */\n    UNLINK: \"Unlink\",\n\n    /** @default \"Updated successfully\" */\n    UPDATED_SUCCESSFULLY: \"updated successfully\",\n\n    /** @default \"Username\" */\n    USERNAME: \"Username\",\n\n    /** @default \"Enter the username you want to use to log in.\" */\n    USERNAME_DESCRIPTION: \"Enter the username you want to use to log in.\",\n\n    /** @default \"Please use 32 characters at maximum.\" */\n    USERNAME_INSTRUCTIONS: \"Please use 32 characters at maximum.\",\n\n    /** @default \"Username\" */\n    USERNAME_PLACEHOLDER: \"Username\",\n\n    /** @default \"Username or email\" */\n    SIGN_IN_USERNAME_PLACEHOLDER: \"Username or email\",\n\n    /** @default \"Verify Your Email\" */\n    VERIFY_YOUR_EMAIL: \"Verify Your Email\",\n\n    /** @default \"Please verify your email address. Check your inbox for the verification email. If you haven't received the email, click the button below to resend.\" */\n    VERIFY_YOUR_EMAIL_DESCRIPTION:\n        \"Please verify your email address. Check your inbox for the verification email. If you haven't received the email, click the button below to resend.\",\n\n    /** @default \"Go back\" */\n    GO_BACK: \"Go back\",\n\n    /** @default \"Your session is not fresh. Please sign in again.\" */\n    SESSION_NOT_FRESH: \"Your session is not fresh. Please sign in again.\",\n\n    /** @default \"Upload Avatar\" */\n    UPLOAD_AVATAR: \"Upload Avatar\",\n\n    /** @default \"Logo\" */\n    LOGO: \"Logo\",\n\n    /** @default \"Click on the logo to upload a custom one from your files.\" */\n    LOGO_DESCRIPTION:\n        \"Click on the logo to upload a custom one from your files.\",\n\n    /** @default \"A logo is optional but strongly recommended.\" */\n    LOGO_INSTRUCTIONS: \"A logo is optional but strongly recommended.\",\n\n    /** @default \"Upload\" */\n    UPLOAD: \"Upload\",\n\n    /** @default \"Upload Logo\" */\n    UPLOAD_LOGO: \"Upload Logo\",\n\n    /** @default \"Delete Logo\" */\n    DELETE_LOGO: \"Delete Logo\",\n\n    /** @default \"Privacy Policy\" */\n    PRIVACY_POLICY: \"Privacy Policy\",\n\n    /** @default \"Terms of Service\" */\n    TERMS_OF_SERVICE: \"Terms of Service\",\n\n    /** @default \"This site is protected by reCAPTCHA.\" */\n    PROTECTED_BY_RECAPTCHA: \"This site is protected by reCAPTCHA.\",\n\n    /** @default \"By continuing, you agree to the\" */\n    BY_CONTINUING_YOU_AGREE: \"By continuing, you agree to the\",\n\n    /** @default \"User\" */\n    USER: \"User\",\n\n    /** @default \"Organizations\" */\n    ORGANIZATIONS: \"Organizations\",\n\n    /** @default \"Manage your organizations and memberships.\" */\n    ORGANIZATIONS_DESCRIPTION: \"Manage your organizations and memberships.\",\n\n    /** @default \"Create an organization to collaborate with other users.\" */\n    ORGANIZATIONS_INSTRUCTIONS:\n        \"Create an organization to collaborate with other users.\",\n\n    /** @default \"Leave Organization\" */\n    LEAVE_ORGANIZATION: \"Leave Organization\",\n\n    /** @default \"Are you sure you want to leave this organization?\" */\n    LEAVE_ORGANIZATION_CONFIRM:\n        \"Are you sure you want to leave this organization?\",\n\n    /** @default \"You have successfully left the organization.\" */\n    LEAVE_ORGANIZATION_SUCCESS: \"You have successfully left the organization.\",\n\n    /** @default \"Manage Organization\" */\n    MANAGE_ORGANIZATION: \"Manage Organization\",\n\n    /** @default \"Remove Member\" */\n    REMOVE_MEMBER: \"Remove Member\",\n\n    /** @default \"Are you sure you want to remove this member from the organization?\" */\n    REMOVE_MEMBER_CONFIRM:\n        \"Are you sure you want to remove this member from the organization?\",\n\n    /** @default \"Member removed successfully\" */\n    REMOVE_MEMBER_SUCCESS: \"Member removed successfully\",\n\n    /** @default \"Invite Member\" */\n    INVITE_MEMBER: \"Invite Member\",\n\n    /** @default \"Members\" */\n    MEMBERS: \"Members\",\n\n    /** @default \"Add or remove members and manage their roles.\" */\n    MEMBERS_DESCRIPTION: \"Add or remove members and manage their roles.\",\n\n    /** @default \"Invite new members to your organization.\" */\n    MEMBERS_INSTRUCTIONS: \"Invite new members to your organization.\",\n\n    /** @default \"Send an invitation to add a new member to your organization.\" */\n    INVITE_MEMBER_DESCRIPTION:\n        \"Send an invitation to add a new member to your organization.\",\n\n    /** @default \"Role\" */\n    ROLE: \"Role\",\n\n    /** @default \"Select a role\" */\n    SELECT_ROLE: \"Select a role\",\n\n    /** @default \"Admin\" */\n    ADMIN: \"Admin\",\n\n    /** @default \"Member\" */\n    MEMBER: \"Member\",\n\n    /** @default \"Guest\" */\n    GUEST: \"Guest\",\n\n    /** @default \"Owner\" */\n    OWNER: \"Owner\",\n\n    /** @default \"Update the role for this member\" */\n    UPDATE_ROLE_DESCRIPTION: \"Update the role for this member\",\n\n    /** @default \"Update Role\" */\n    UPDATE_ROLE: \"Update Role\",\n\n    /** @default \"Member role updated successfully\" */\n    MEMBER_ROLE_UPDATED: \"Member role updated successfully\",\n\n    /** @default \"Send Invitation\" */\n    SEND_INVITATION: \"Send Invitation\",\n\n    /** @default \"Invitation sent successfully\" */\n    SEND_INVITATION_SUCCESS: \"Invitation sent successfully\",\n\n    /** @default \"Pending Invitations\" */\n    PENDING_INVITATIONS: \"Pending Invitations\",\n\n    /** @default \"Manage pending invitations to your organization.\" */\n    PENDING_INVITATIONS_DESCRIPTION:\n        \"Manage pending invitations to your organization.\",\n\n    /** @default \"Invitations you've received from organizations.\" */\n    PENDING_USER_INVITATIONS_DESCRIPTION:\n        \"Invitations you've received from organizations.\",\n\n    /** @default \"Cancel Invitation\" */\n    CANCEL_INVITATION: \"Cancel Invitation\",\n\n    /** @default \"Invitation cancelled successfully\" */\n    INVITATION_CANCELLED: \"Invitation cancelled successfully\",\n\n    /** @default \"Accept Invitation\" */\n    ACCEPT_INVITATION: \"Accept Invitation\",\n\n    /** @default \"You have been invited to join an organization.\" */\n    ACCEPT_INVITATION_DESCRIPTION:\n        \"You have been invited to join an organization.\",\n\n    /** @default \"Invitation accepted successfully\" */\n    INVITATION_ACCEPTED: \"Invitation accepted successfully\",\n\n    /** @default \"Invitation rejected successfully\" */\n    INVITATION_REJECTED: \"Invitation rejected successfully\",\n\n    /** @default \"Accept\" */\n    ACCEPT: \"Accept\",\n\n    /** @default \"Reject\" */\n    REJECT: \"Reject\",\n\n    /** @default \"This invitation has expired\" */\n    INVITATION_EXPIRED: \"This invitation has expired\",\n\n    /** @default \"Delete Organization\" */\n    DELETE_ORGANIZATION: \"Delete Organization\",\n\n    /** @default \"Permanently remove your organization and all of its contents. This action is not reversible — please continue with caution.\" */\n    DELETE_ORGANIZATION_DESCRIPTION:\n        \"Permanently remove your organization and all of its contents. This action is not reversible — please continue with caution.\",\n\n    /** @default \"Organization deleted successfully\" */\n    DELETE_ORGANIZATION_SUCCESS: \"Organization deleted successfully\",\n\n    /** @default \"Enter the organization slug to continue:\" */\n    DELETE_ORGANIZATION_INSTRUCTIONS:\n        \"Enter the organization slug to continue:\",\n\n    /** @default \"Organization slug is required\" */\n    SLUG_REQUIRED: \"Organization slug is required\",\n\n    /** @default \"The slug does not match\" */\n    SLUG_DOES_NOT_MATCH: \"The slug does not match\",\n\n    /** @default \"Unknown\" */\n    UNKNOWN: \"Unknown\",\n\n    // Device Authorization\n    /** @default \"Enter Your Device Code\" */\n    DEVICE_AUTH_TITLE: \"Enter Your Device Code\",\n\n    /** @default \"Enter the code shown on your device to continue.\" */\n    DEVICE_AUTH_DESCRIPTION: \"Enter the code shown on your device to continue.\",\n\n    /** @default \"Device Code\" */\n    DEVICE_CODE_LABEL: \"Device Code\",\n\n    /** @default \"ABCD-1234\" */\n    DEVICE_CODE_PLACEHOLDER: \"ABCD-1234\",\n\n    /** @default \"Please enter a valid device code\" */\n    DEVICE_CODE_REQUIRED: \"Please enter a valid device code\",\n\n    /** @default \"Invalid or expired code\" */\n    DEVICE_CODE_INVALID: \"Invalid or expired code\",\n\n    /** @default \"Auth client not configured\" */\n    DEVICE_CODE_NO_CLIENT: \"Auth client not configured\",\n\n    /** @default \"Format: XXXX-XXXX\" */\n    DEVICE_CODE_FORMAT: \"Format: XXXX-XXXX\",\n\n    /** @default \"Continue\" */\n    DEVICE_AUTH_SUBMIT: \"Continue\",\n\n    // Device Approval\n    /** @default \"Device Authorization Request\" */\n    DEVICE_APPROVAL_TITLE: \"Device Authorization Request\",\n\n    /** @default \"A device is requesting access to your account.\" */\n    DEVICE_APPROVAL_DESCRIPTION: \"A device is requesting access to your account.\",\n\n    /** @default \"Code\" */\n    DEVICE_APPROVAL_CODE_LABEL: \"Code\",\n\n    /** @default \"Application\" */\n    DEVICE_APPROVAL_APP_LABEL: \"Application\",\n\n    /** @default \"Requested Permissions\" */\n    DEVICE_APPROVAL_SCOPES_LABEL: \"Requested Permissions\",\n\n    /** @default \"Approve\" */\n    DEVICE_APPROVE_BUTTON: \"Approve\",\n\n    /** @default \"Deny\" */\n    DEVICE_DENY_BUTTON: \"Deny\",\n\n    /** @default \"Device approved successfully\" */\n    DEVICE_APPROVED_SUCCESS: \"Device approved successfully\",\n\n    /** @default \"Device denied\" */\n    DEVICE_DENIED_SUCCESS: \"Device denied\",\n\n    /** @default \"Failed to approve device\" */\n    DEVICE_APPROVE_ERROR: \"Failed to approve device\",\n\n    /** @default \"Failed to deny device\" */\n    DEVICE_DENY_ERROR: \"Failed to deny device\",\n\n    /** @default \"Only approve if you initiated this request on your device.\" */\n    DEVICE_APPROVAL_NOTICE: \"Only approve if you initiated this request on your device.\",\n\n    // Device Code Display\n    /** @default \"Sign In on Your Computer\" */\n    DEVICE_DISPLAY_TITLE: \"Sign In on Your Computer\",\n\n    /** @default \"Follow the steps below to complete authentication\" */\n    DEVICE_DISPLAY_DESCRIPTION: \"Follow the steps below to complete authentication\",\n\n    /** @default \"Visit this URL:\" */\n    DEVICE_DISPLAY_URL_LABEL: \"Visit this URL:\",\n\n    /** @default \"Enter this code:\" */\n    DEVICE_DISPLAY_CODE_LABEL: \"Enter this code:\",\n\n    /** @default \"Scan this QR code to authorize\" */\n    DEVICE_SCAN_QR: \"Scan this QR code to authorize\",\n\n    /** @default \"or scan QR code\" */\n    DEVICE_OR_SCAN_QR: \"or scan QR code\",\n\n    /** @default \"Copy Code\" */\n    DEVICE_COPY_CODE: \"Copy Code\",\n\n    /** @default \"Copied!\" */\n    COPIED: \"Copied!\",\n\n    /** @default \"Expires in\" */\n    DEVICE_EXPIRES_IN: \"Expires in\",\n\n    /** @default \"Checking for approval...\" */\n    DEVICE_POLLING_STATUS: \"Checking for approval...\",\n\n    /** @default \"Approved! Redirecting...\" */\n    DEVICE_APPROVED: \"Approved! Redirecting...\",\n\n    /** @default \"Code expired. Please try again.\" */\n    DEVICE_EXPIRED: \"Code expired. Please try again.\",\n\n    /** @default \"Access denied\" */\n    DEVICE_ACCESS_DENIED: \"Access denied\",\n\n    // SSO Configuration\n    /** @default \"SSO Configuration\" */\n    SSO_CONFIG: \"SSO Configuration\",\n\n    /** @default \"Configure SAML and OIDC single sign-on for your organization\" */\n    SSO_CONFIG_DESCRIPTION: \"Configure SAML and OIDC single sign-on for your organization\",\n\n    /** @default \"Provider Type\" */\n    SSO_PROVIDER_TYPE: \"Provider Type\",\n\n    /** @default \"OIDC (OpenID Connect)\" */\n    SSO_TYPE_OIDC: \"OIDC (OpenID Connect)\",\n\n    /** @default \"SAML 2.0\" */\n    SSO_TYPE_SAML: \"SAML 2.0\",\n\n    /** @default \"Provider ID\" */\n    SSO_PROVIDER_ID: \"Provider ID\",\n\n    /** @default \"Unique identifier for this SSO provider\" */\n    SSO_PROVIDER_ID_DESCRIPTION: \"Unique identifier for this SSO provider\",\n\n    /** @default \"my-company-sso\" */\n    SSO_PROVIDER_ID_PLACEHOLDER: \"my-company-sso\",\n\n    /** @default \"Issuer\" */\n    SSO_ISSUER: \"Issuer\",\n\n    /** @default \"Identity provider issuer URL\" */\n    SSO_ISSUER_DESCRIPTION: \"Identity provider issuer URL\",\n\n    /** @default \"https://idp.example.com\" */\n    SSO_ISSUER_PLACEHOLDER: \"https://idp.example.com\",\n\n    /** @default \"Domain\" */\n    SSO_DOMAIN: \"Domain\",\n\n    /** @default \"Email domain for automatic provider matching\" */\n    SSO_DOMAIN_DESCRIPTION: \"Email domain for automatic provider matching\",\n\n    /** @default \"example.com\" */\n    SSO_DOMAIN_PLACEHOLDER: \"example.com\",\n\n    /** @default \"Organization\" */\n    SSO_ORGANIZATION: \"Organization\",\n\n    /** @default \"Link to organization (optional)\" */\n    SSO_ORGANIZATION_DESCRIPTION: \"Link to organization (optional)\",\n\n    /** @default \"OIDC Configuration\" */\n    SSO_OIDC_CONFIG: \"OIDC Configuration\",\n\n    /** @default \"Client ID\" */\n    SSO_CLIENT_ID: \"Client ID\",\n\n    /** @default \"Client Secret\" */\n    SSO_CLIENT_SECRET: \"Client Secret\",\n\n    /** @default \"Authorization Endpoint\" */\n    SSO_AUTH_ENDPOINT: \"Authorization Endpoint\",\n\n    /** @default \"Token Endpoint\" */\n    SSO_TOKEN_ENDPOINT: \"Token Endpoint\",\n\n    /** @default \"JWKS Endpoint\" */\n    SSO_JWKS_ENDPOINT: \"JWKS Endpoint\",\n\n    /** @default \"Discovery Endpoint\" */\n    SSO_DISCOVERY_ENDPOINT: \"Discovery Endpoint\",\n\n    /** @default \"Scopes\" */\n    SSO_SCOPES: \"Scopes\",\n\n    /** @default \"openid email profile\" */\n    SSO_SCOPES_PLACEHOLDER: \"openid email profile\",\n\n    /** @default \"Enable PKCE\" */\n    SSO_PKCE_ENABLED: \"Enable PKCE\",\n\n    /** @default \"Use PKCE for additional security\" */\n    SSO_PKCE_DESCRIPTION: \"Use PKCE for additional security\",\n\n    /** @default \"SAML Configuration\" */\n    SSO_SAML_CONFIG: \"SAML Configuration\",\n\n    /** @default \"Entry Point\" */\n    SSO_SAML_ENTRY_POINT: \"Entry Point\",\n\n    /** @default \"SAML SSO login URL\" */\n    SSO_SAML_ENTRY_POINT_DESCRIPTION: \"SAML SSO login URL\",\n\n    /** @default \"Certificate\" */\n    SSO_SAML_CERT: \"Certificate\",\n\n    /** @default \"IdP signing certificate (PEM format)\" */\n    SSO_SAML_CERT_DESCRIPTION: \"IdP signing certificate (PEM format)\",\n\n    /** @default \"Callback URL\" */\n    SSO_CALLBACK_URL: \"Callback URL\",\n\n    /** @default \"SAML assertion consumer service URL\" */\n    SSO_CALLBACK_URL_DESCRIPTION: \"SAML assertion consumer service URL\",\n\n    /** @default \"Entity ID / Audience\" */\n    SSO_ENTITY_ID: \"Entity ID / Audience\",\n\n    /** @default \"Service provider entity identifier\" */\n    SSO_ENTITY_ID_DESCRIPTION: \"Service provider entity identifier\",\n\n    /** @default \"IdP Metadata XML\" */\n    SSO_IDP_METADATA: \"IdP Metadata XML\",\n\n    /** @default \"Paste IdP metadata XML or upload file\" */\n    SSO_IDP_METADATA_DESCRIPTION: \"Paste IdP metadata XML or upload file\",\n\n    /** @default \"SP Metadata\" */\n    SSO_SP_METADATA: \"SP Metadata\",\n\n    /** @default \"Service Provider metadata for IdP configuration\" */\n    SSO_SP_METADATA_DESCRIPTION: \"Service Provider metadata for IdP configuration\",\n\n    /** @default \"Advanced Options\" */\n    SSO_ADVANCED_OPTIONS: \"Advanced Options\",\n\n    /** @default \"Show Advanced\" */\n    SSO_SHOW_ADVANCED: \"Show Advanced\",\n\n    /** @default \"Hide Advanced\" */\n    SSO_HIDE_ADVANCED: \"Hide Advanced\",\n\n    /** @default \"Attribute Mapping\" */\n    SSO_ATTRIBUTE_MAPPING: \"Attribute Mapping\",\n\n    /** @default \"Map SSO attributes to user fields\" */\n    SSO_ATTRIBUTE_MAPPING_DESCRIPTION: \"Map SSO attributes to user fields\",\n\n    /** @default \"User ID Attribute\" */\n    SSO_MAP_ID: \"User ID Attribute\",\n\n    /** @default \"Email Attribute\" */\n    SSO_MAP_EMAIL: \"Email Attribute\",\n\n    /** @default \"Name Attribute\" */\n    SSO_MAP_NAME: \"Name Attribute\",\n\n    /** @default \"First Name Attribute\" */\n    SSO_MAP_FIRST_NAME: \"First Name Attribute\",\n\n    /** @default \"Last Name Attribute\" */\n    SSO_MAP_LAST_NAME: \"Last Name Attribute\",\n\n    /** @default \"Email Verified Attribute\" */\n    SSO_MAP_EMAIL_VERIFIED: \"Email Verified Attribute\",\n\n    /** @default \"Profile Image Attribute\" */\n    SSO_MAP_IMAGE: \"Profile Image Attribute\",\n\n    /** @default \"Extra Fields (JSON)\" */\n    SSO_EXTRA_FIELDS: \"Extra Fields (JSON)\",\n\n    /** @default \"Map additional custom attributes as JSON\" */\n    SSO_EXTRA_FIELDS_DESCRIPTION: \"Map additional custom attributes as JSON\",\n\n    /** @default \"Test Connection\" */\n    SSO_TEST_CONNECTION: \"Test Connection\",\n\n    /** @default \"Testing...\" */\n    SSO_TESTING: \"Testing...\",\n\n    /** @default \"Connection successful!\" */\n    SSO_TEST_SUCCESS: \"Connection successful!\",\n\n    /** @default \"Connection failed\" */\n    SSO_TEST_FAILED: \"Connection failed\",\n\n    /** @default \"Copy SP Metadata\" */\n    SSO_COPY_SP_METADATA: \"Copy SP Metadata\",\n\n    /** @default \"Fetch SP Metadata\" */\n    SSO_FETCH_SP_METADATA: \"Fetch SP Metadata\",\n\n    /** @default \"SSO provider created successfully\" */\n    SSO_PROVIDER_CREATED: \"SSO provider created successfully\",\n\n    /** @default \"SSO provider updated successfully\" */\n    SSO_PROVIDER_UPDATED: \"SSO provider updated successfully\",\n\n    /** @default \"SSO provider deleted successfully\" */\n    SSO_PROVIDER_DELETED: \"SSO provider deleted successfully\",\n\n    /** @default \"Delete SSO Provider\" */\n    SSO_DELETE_PROVIDER: \"Delete SSO Provider\",\n\n    /** @default \"Are you sure? This will remove SSO authentication for this provider.\" */\n    SSO_DELETE_CONFIRM: \"Are you sure? This will remove SSO authentication for this provider.\",\n\n    /** @default \"Upload File\" */\n    SSO_UPLOAD_FILE: \"Upload File\",\n\n    /** @default \"Or paste metadata XML\" */\n    SSO_PASTE_METADATA: \"Or paste metadata XML\",\n\n    ...BASE_ERROR_CODES,\n    ...ADMIN_ERROR_CODES,\n    ...ANONYMOUS_ERROR_CODES,\n    ...API_KEY_ERROR_CODES,\n    ...CAPTCHA_ERROR_CODES,\n    ...EMAIL_OTP_ERROR_CODES,\n    ...GENERIC_OAUTH_ERROR_CODES,\n    ...HAVEIBEENPWNED_ERROR_CODES,\n    ...MULTI_SESSION_ERROR_CODES,\n    ...ORGANIZATION_ERROR_CODES,\n    ...PASSKEY_ERROR_CODES,\n    ...PHONE_NUMBER_ERROR_CODES,\n    ...TWO_FACTOR_ERROR_CODES,\n    ...USERNAME_ERROR_CODES\n}\n\nexport type AuthLocalization = Partial<typeof authLocalization>\n","import type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo } from \"react\"\nimport { AuthUIContext } from \"../lib/auth-ui-provider\"\n\nexport function useCurrentOrganization({\n    slug: slugProp\n}: {\n    slug?: string\n} = {}) {\n    const {\n        organization: organizationOptions,\n        hooks: { useActiveOrganization, useListOrganizations }\n    } = useContext(AuthUIContext)\n\n    const { pathMode, slug: contextSlug } = organizationOptions || {}\n\n    let data: Organization | null | undefined\n    let isPending: boolean | undefined\n    let isRefetching: boolean | undefined\n\n    let refetch: (() => void) | undefined\n\n    const {\n        data: organizations,\n        isPending: organizationsPending,\n        isRefetching: organizationsRefetching\n    } = useListOrganizations()\n\n    if (pathMode === \"slug\") {\n        const slug = slugProp || contextSlug\n\n        data = organizations?.find((organization: any) => organization.slug === slug)\n        isPending = organizationsPending\n        isRefetching = organizationsRefetching\n    } else {\n        const {\n            data: activeOrganization,\n            isPending: organizationPending,\n            isRefetching: organizationRefetching,\n            refetch: refetchOrganization\n        } = useActiveOrganization()\n\n        refetch = refetchOrganization\n\n        data = activeOrganization\n        isPending = organizationPending\n        isRefetching = organizationRefetching\n    }\n\n    return useMemo(\n        () => ({\n            data,\n            isPending,\n            isRefetching,\n            refetch\n        }),\n        [data, isPending, isRefetching, refetch]\n    )\n}\n","import { useContext, useEffect } from \"react\"\nimport { useCurrentOrganization } from \"../hooks/use-current-organization\"\nimport { AuthUIContext } from \"./auth-ui-provider\"\n\nexport const OrganizationRefetcher = () => {\n    const {\n        hooks: { useListOrganizations, useSession },\n        organization: organizationOptions,\n        navigate,\n        redirectTo\n    } = useContext(AuthUIContext)\n\n    const { slug, pathMode, personalPath } = organizationOptions || {}\n\n    const { data: sessionData } = useSession()\n\n    const {\n        data: organization,\n        isPending: organizationPending,\n        isRefetching: organizationRefetching,\n        refetch: refetchOrganization\n    } = useCurrentOrganization()\n\n    const { refetch: refetchListOrganizations } = useListOrganizations()\n\n    const { data: organizations } = useListOrganizations()\n\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Refetch fix\n    useEffect(() => {\n        if (!sessionData?.user.id) return\n\n        if (organization || organizations) {\n            refetchOrganization?.()\n            refetchListOrganizations?.()\n        }\n    }, [sessionData?.user.id])\n\n    useEffect(() => {\n        if (organizationRefetching || organizationPending) return\n\n        if (slug && pathMode === \"slug\" && !organization) {\n            navigate(personalPath || redirectTo)\n        }\n    }, [\n        organization,\n        organizationRefetching,\n        organizationPending,\n        slug,\n        pathMode,\n        personalPath,\n        navigate,\n        redirectTo\n    ])\n\n    return null\n}\n","export const authViewPaths = {\n    /** @default \"callback\" */\n    CALLBACK: \"callback\",\n    /** @default \"email-otp\" */\n    EMAIL_OTP: \"email-otp\",\n    /** @default \"forgot-password\" */\n    FORGOT_PASSWORD: \"forgot-password\",\n    /** @default \"magic-link\" */\n    MAGIC_LINK: \"magic-link\",\n    /** @default \"recover-account\" */\n    RECOVER_ACCOUNT: \"recover-account\",\n    /** @default \"reset-password\" */\n    RESET_PASSWORD: \"reset-password\",\n    /** @default \"sign-in\" */\n    SIGN_IN: \"sign-in\",\n    /** @default \"sign-out\" */\n    SIGN_OUT: \"sign-out\",\n    /** @default \"sign-up\" */\n    SIGN_UP: \"sign-up\",\n    /** @default \"two-factor\" */\n    TWO_FACTOR: \"two-factor\",\n    /** @default \"accept-invitation\" */\n    ACCEPT_INVITATION: \"accept-invitation\"\n}\n\nexport type AuthViewPaths = typeof authViewPaths\n\n// Account-scoped views (signed-in user)\nexport const accountViewPaths = {\n    /** @default \"settings\" */\n    SETTINGS: \"settings\",\n    /** @default \"security\" */\n    SECURITY: \"security\",\n    /** @default \"api-keys\" */\n    API_KEYS: \"api-keys\",\n    /** @default \"organizations\" */\n    ORGANIZATIONS: \"organizations\"\n}\n\nexport type AccountViewPaths = typeof accountViewPaths\n\n// Organization-scoped views\nexport const organizationViewPaths = {\n    /** @default \"settings\" */\n    SETTINGS: \"settings\",\n    /** @default \"members\" */\n    MEMBERS: \"members\",\n    /** @default \"api-keys\" */\n    API_KEYS: \"api-keys\"\n}\n\nexport type OrganizationViewPaths = typeof organizationViewPaths\nexport type AuthViewPath = keyof AuthViewPaths\nexport type AccountViewPath = keyof AccountViewPaths\nexport type OrganizationViewPath = keyof OrganizationViewPaths\n","\"use client\"\n\nimport { createContext, type ReactNode, useMemo } from \"react\"\nimport { toast } from \"sonner\"\n\n// import { RecaptchaV3 } from \"../components/captcha/recaptcha-v3\" // Optional - captcha disabled\nimport { useAuthData } from \"../hooks/use-auth-data\"\nimport {\n    type AuthLocalization,\n    authLocalization\n} from \"../localization/auth-localization\"\nimport type {\n    AccountOptions,\n    AccountOptionsContext\n} from \"../types/account-options\"\nimport type { AdditionalFields } from \"../types/additional-fields\"\nimport type { AnyAuthClient } from \"../types/any-auth-client\"\nimport type { AuthClient } from \"../types/auth-client\"\nimport type { AuthHooks } from \"../types/auth-hooks\"\nimport type { AuthMutators } from \"../types/auth-mutators\"\nimport type { AvatarOptions } from \"../types/avatar-options\"\nimport type { CaptchaOptions } from \"../types/captcha-options\"\nimport type { CredentialsOptions } from \"../types/credentials-options\"\nimport type { DeleteUserOptions } from \"../types/delete-user-options\"\nimport type { GenericOAuthOptions } from \"../types/generic-oauth-options\"\nimport type { GravatarOptions } from \"../types/gravatar-options\"\nimport type { Link } from \"../types/link\"\nimport type {\n    OrganizationOptions,\n    OrganizationOptionsContext\n} from \"../types/organization-options\"\nimport type { RenderToast } from \"../types/render-toast\"\nimport type { SignUpOptions } from \"../types/sign-up-options\"\nimport type { SocialOptions } from \"../types/social-options\"\nimport { OrganizationRefetcher } from \"./organization-refetcher\"\nimport type { AuthViewPaths } from \"./view-paths\"\nimport {\n    accountViewPaths,\n    authViewPaths,\n    organizationViewPaths\n} from \"./view-paths\"\n\nconst DefaultLink: Link = ({ href, className, children }: { href: string; className?: string; children: React.ReactNode }) => (\n    <a className={className} href={href}>\n        {children}\n    </a>\n)\n\nconst defaultNavigate = (href: string) => {\n    window.location.href = href\n}\n\nconst defaultReplace = (href: string) => {\n    window.location.replace(href)\n}\n\nconst defaultToast: RenderToast = ({ variant = \"default\", message }: { variant?: \"default\" | \"success\" | \"error\" | \"info\" | \"warning\"; message: string }) => {\n    if (variant === \"default\") {\n        toast(message)\n    } else {\n        (toast as any)[variant](message)\n    }\n}\n\nexport type AuthUIContextType = {\n    authClient: AuthClient\n    /**\n     * Additional fields for users\n     */\n    additionalFields?: AdditionalFields\n    /**\n     * API Key plugin configuration\n     */\n    apiKey?:\n    | {\n        /**\n         * Prefix for API Keys\n         */\n        prefix?: string\n        /**\n         * Metadata for API Keys\n         */\n        metadata?: Record<string, unknown>\n    }\n    | boolean\n    /**\n     * Avatar configuration\n     * @default undefined\n     */\n    avatar?: AvatarOptions\n    /**\n     * Base path for the auth views\n     * @default \"/auth\"\n     */\n    basePath: string\n    /**\n     * Front end base URL for auth API callbacks\n     */\n    baseURL?: string\n    /**\n     * Captcha configuration\n     */\n    captcha?: CaptchaOptions\n    credentials?: CredentialsOptions\n    /**\n     * Default redirect URL after authenticating\n     * @default \"/\"\n     */\n    redirectTo: string\n    /**\n     * Enable or disable user change email support\n     * @default true\n     */\n    changeEmail?: boolean\n    /**\n     * User Account deletion configuration\n     * @default undefined\n     */\n    deleteUser?: DeleteUserOptions\n    /**\n     * Show Verify Email card for unverified emails\n     */\n    emailVerification?: boolean\n    /**\n     * Freshness age for Session data\n     * @default 60 * 60 * 24\n     */\n    freshAge: number\n    /**\n     * Generic OAuth provider configuration\n     */\n    genericOAuth?: GenericOAuthOptions\n    /**\n     * Gravatar configuration\n     */\n    gravatar?: boolean | GravatarOptions\n    hooks: AuthHooks\n    localization: typeof authLocalization\n    /**\n     * Enable or disable Magic Link support\n     * @default false\n     */\n    magicLink?: boolean\n    /**\n     * Enable or disable Email OTP support\n     * @default false\n     */\n    emailOTP?: boolean\n    /**\n     * Enable or disable Multi Session support\n     * @default false\n     */\n    multiSession?: boolean\n    mutators: AuthMutators\n    /**\n     * Whether the name field should be required\n     * @default true\n     */\n    nameRequired?: boolean\n    /**\n     * Enable or disable One Tap support\n     * @default false\n     */\n    oneTap?: boolean\n    /**\n     * Perform some User updates optimistically\n     * @default false\n     */\n    optimistic?: boolean\n    /**\n     * Organization configuration\n     */\n    organization?: OrganizationOptionsContext\n    /**\n     * Enable or disable Passkey support\n     * @default false\n     */\n    passkey?: boolean\n    /**\n     * Enable or disable Anonymous sign-in support\n     * @default false\n     */\n    anonymous?: boolean\n    /**\n     * Enable or disable Sign-In with Ethereum (SIWE) support\n     * @default false\n     */\n    siwe?: boolean\n    /**\n     * Forces better-auth-tanstack to refresh the Session on the auth callback page\n     * @default false\n     */\n    persistClient?: boolean\n    /**\n     * Account configuration\n     */\n    account?: AccountOptionsContext\n    /**\n     * Sign Up configuration\n     */\n    signUp?: SignUpOptions\n    /**\n     * Social provider configuration\n     */\n    social?: SocialOptions\n    toast: RenderToast\n    /**\n     * Enable or disable two-factor authentication support\n     * @default undefined\n     */\n    twoFactor?: (\"otp\" | \"totp\")[]\n    /**\n     * Enable or disable Phone Number support\n     * @default false\n     */\n    phoneNumber?: boolean\n    /**\n     * OIDC Provider configuration\n     */\n    oidc?: boolean\n    /**\n     * Stripe configuration\n     */\n    stripe?: boolean\n    /**\n     * Polar configuration\n     */\n    polar?: boolean\n    /**\n     * Admin configuration\n     */\n    admin?: boolean\n    /**\n     * Autumn configuration\n     */\n    autumn?: boolean\n    /**\n     * Dodo Payments configuration\n     */\n    dodopayments?: boolean\n    /**\n     * Creem configuration\n     */\n    creem?: boolean\n    /**\n     * Dub Analytics configuration\n     */\n    dub?: boolean\n    viewPaths: AuthViewPaths\n    /**\n     * Navigate to a new URL\n     * @default window.location.href\n     */\n    navigate: (href: string) => void\n    /**\n     * Called whenever the Session changes\n     */\n    onSessionChange?: () => void | Promise<void>\n    /**\n     * Replace the current URL\n     * @default navigate\n     */\n    replace: (href: string) => void\n    /**\n     * Custom Link component for navigation\n     * @default <a>\n     */\n    Link: Link\n}\n\nexport type AuthUIProviderProps = {\n    children: ReactNode\n    /**\n     * Better Auth client returned from createAuthClient\n     * @default Required\n     * @remarks `AuthClient`\n     */\n    authClient: AnyAuthClient\n    /**\n     * Enable account view & account configuration\n     * @default { fields: [\"image\", \"name\"] }\n     */\n    account?: boolean | Partial<AccountOptions>\n    /**\n     * Avatar configuration\n     * @default undefined\n     */\n    avatar?: boolean | Partial<AvatarOptions>\n    /**\n     * User Account deletion configuration\n     * @default undefined\n     */\n    deleteUser?: DeleteUserOptions | boolean\n    /**\n     * ADVANCED: Custom hooks for fetching auth data\n     */\n    hooks?: Partial<AuthHooks>\n    /**\n     * Customize the paths for the auth views\n     * @default authViewPaths\n     * @remarks `AuthViewPaths`\n     */\n    viewPaths?: Partial<AuthViewPaths>\n    /**\n     * Render custom Toasts\n     * @default Sonner\n     */\n    toast?: RenderToast\n    /**\n     * Customize the Localization strings\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: AuthLocalization\n    /**\n     * ADVANCED: Custom mutators for updating auth data\n     */\n    mutators?: Partial<AuthMutators>\n    /**\n     * Organization plugin configuration\n     */\n    organization?: OrganizationOptions | boolean\n    /**\n     * Enable or disable Credentials support\n     * @default { forgotPassword: true }\n     */\n    credentials?: boolean | CredentialsOptions\n    /**\n     * Enable or disable Sign Up form\n     * @default { fields: [\"name\"] }\n     */\n    signUp?: SignUpOptions | boolean\n    /**\n     * Enable or disable Phone Number support\n     * @default false\n     */\n    phoneNumber?: boolean\n    /**\n     * OIDC Provider configuration\n     */\n    oidc?: boolean\n    /**\n     * Stripe configuration\n     */\n    stripe?: boolean\n    /**\n     * Polar configuration\n     */\n    polar?: boolean\n    /**\n     * Admin configuration\n     */\n    admin?: boolean\n    /**\n     * Autumn configuration\n     */\n    autumn?: boolean\n    /**\n     * Dodo Payments configuration\n     */\n    dodopayments?: boolean\n    /**\n     * Creem configuration\n     */\n    creem?: boolean\n    /**\n     * Dub Analytics configuration\n     */\n    dub?: boolean\n} & Partial<\n    Omit<\n        AuthUIContextType,\n        | \"authClient\"\n        | \"viewPaths\"\n        | \"localization\"\n        | \"mutators\"\n        | \"toast\"\n        | \"hooks\"\n        | \"avatar\"\n        | \"account\"\n        | \"deleteUser\"\n        | \"credentials\"\n        | \"signUp\"\n        | \"organization\"\n        | \"phoneNumber\"\n        | \"oidc\"\n        | \"stripe\"\n        | \"polar\"\n        | \"admin\"\n        | \"autumn\"\n        | \"dodopayments\"\n        | \"creem\"\n        | \"dub\"\n    >\n>\n\nexport const AuthUIContext = createContext<AuthUIContextType>(\n    {} as unknown as AuthUIContextType\n)\n\nexport const AuthUIProvider = ({\n    children,\n    authClient: authClientProp,\n    account: accountProp,\n    avatar: avatarProp,\n    deleteUser: deleteUserProp,\n    social: socialProp,\n    genericOAuth: genericOAuthProp,\n    basePath = \"/auth\",\n    baseURL = \"\",\n    captcha,\n    redirectTo = \"/\",\n    credentials: credentialsProp,\n    changeEmail = true,\n    freshAge = 60 * 60 * 24,\n    hooks: hooksProp,\n    mutators: mutatorsProp,\n    localization: localizationProp,\n    nameRequired = true,\n    organization: organizationProp,\n    signUp: signUpProp = true,\n    toast = defaultToast,\n    viewPaths: viewPathsProp,\n    navigate,\n    replace,\n    Link = DefaultLink,\n    stripe: stripeProp,\n    ...props\n}: AuthUIProviderProps) => {\n    const authClient = authClientProp as AuthClient\n\n    const avatar = useMemo<AvatarOptions | undefined>(() => {\n        if (!avatarProp) return\n\n        if (avatarProp === true) {\n            return {\n                extension: \"png\",\n                size: 128\n            }\n        }\n\n        return {\n            upload: typeof avatarProp.upload === 'function' ? avatarProp.upload : undefined,\n            delete: avatarProp.delete,\n            extension: avatarProp.extension || \"png\",\n            size: avatarProp.size || (typeof avatarProp.upload === 'function' ? 256 : 128)\n        }\n    }, [avatarProp])\n\n    const account = useMemo<AccountOptionsContext | undefined>(() => {\n        if (accountProp === false) return\n\n        if (accountProp === true || accountProp === undefined) {\n            return {\n                basePath: \"/account\",\n                fields: [\"image\", \"name\"],\n                viewPaths: accountViewPaths\n            }\n        }\n\n        // Remove trailing slash from basePath\n        const basePath = accountProp.basePath?.endsWith(\"/\")\n            ? accountProp.basePath.slice(0, -1)\n            : accountProp.basePath\n\n        return {\n            basePath: basePath ?? \"/account\",\n            fields: accountProp.fields || [\"image\", \"name\"],\n            viewPaths: { ...accountViewPaths, ...accountProp.viewPaths }\n        }\n    }, [accountProp])\n\n    const deleteUser = useMemo<DeleteUserOptions | undefined>(() => {\n        if (!deleteUserProp) return\n\n        if (deleteUserProp === true) {\n            return {}\n        }\n\n        return deleteUserProp\n    }, [deleteUserProp])\n\n    const social = useMemo<SocialOptions | undefined>(() => {\n        if (!socialProp) return\n\n        return socialProp\n    }, [socialProp])\n\n    const genericOAuth = useMemo<GenericOAuthOptions | undefined>(() => {\n        if (!genericOAuthProp) return\n\n        return genericOAuthProp\n    }, [genericOAuthProp])\n\n    const credentials = useMemo<CredentialsOptions | undefined>(() => {\n        if (credentialsProp === false) return\n\n        if (credentialsProp === true) {\n            return {\n                forgotPassword: true\n            }\n        }\n\n        return {\n            ...credentialsProp,\n            forgotPassword: credentialsProp?.forgotPassword ?? true\n        }\n    }, [credentialsProp])\n\n    const signUp = useMemo<SignUpOptions | undefined>(() => {\n        if (signUpProp === false) return\n\n        if (signUpProp === true || signUpProp === undefined) {\n            return {\n                fields: [\"name\"]\n            }\n        }\n\n        return {\n            fields: signUpProp.fields || [\"name\"]\n        }\n    }, [signUpProp])\n\n    const organization = useMemo<OrganizationOptionsContext | undefined>(() => {\n        if (!organizationProp) return\n\n        if (organizationProp === true) {\n            return {\n                basePath: \"/organization\",\n                viewPaths: organizationViewPaths,\n                customRoles: []\n            }\n        }\n\n        let logo: OrganizationOptionsContext[\"logo\"] | undefined\n\n        if (organizationProp.logo === true) {\n            logo = {\n                extension: \"png\",\n                size: 128\n            }\n        } else if (organizationProp.logo) {\n            logo = {\n                upload: organizationProp.logo.upload,\n                delete: organizationProp.logo.delete,\n                extension: organizationProp.logo.extension || \"png\",\n                size:\n                    organizationProp.logo.size || organizationProp.logo.upload\n                        ? 256\n                        : 128\n            }\n        }\n\n        // Remove trailing slash from basePath\n        const basePath = organizationProp.basePath?.endsWith(\"/\")\n            ? organizationProp.basePath.slice(0, -1)\n            : organizationProp.basePath\n\n        return {\n            ...organizationProp,\n            logo,\n            basePath: basePath ?? \"/organization\",\n            customRoles: organizationProp.customRoles || [],\n            viewPaths: {\n                ...organizationViewPaths,\n                ...organizationProp.viewPaths\n            }\n        }\n    }, [organizationProp])\n\n\n    const defaultMutators = useMemo(() => {\n        return {\n            deleteApiKey: (params: any) =>\n                authClient.apiKey.delete({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            deletePasskey: (params: any) =>\n                authClient.passkey.deletePasskey({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            revokeDeviceSession: (params: any) =>\n                authClient.multiSession.revoke({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            revokeSession: (params: any) =>\n                authClient.revokeSession({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            setActiveSession: (params: any) =>\n                authClient.multiSession.setActive({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            updateOrganization: (params: any) =>\n                authClient.organization.update({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            updateUser: (params: any) =>\n                authClient.updateUser({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            unlinkAccount: (params: any) =>\n                authClient.unlinkAccount({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            // Stripe subscription mutators\n            upgradeSubscription: async (params: any) => {\n                console.log('[DEBUG] upgradeSubscription called with params:', params)\n                console.log('[DEBUG] authClient.subscription:', (authClient as any).subscription)\n\n                if (!(authClient as any).subscription) {\n                    console.error('[ERROR] authClient.subscription is undefined - Stripe plugin not loaded')\n                    throw new Error('Stripe plugin not loaded on auth client')\n                }\n\n                if (!(authClient as any).subscription.upgrade) {\n                    console.error('[ERROR] authClient.subscription.upgrade is undefined')\n                    console.log('[DEBUG] Available methods:', Object.keys((authClient as any).subscription))\n                    throw new Error('subscription.upgrade method not available')\n                }\n\n                const result = await (authClient as any).subscription.upgrade({\n                    ...params,\n                    fetchOptions: { throw: true }\n                })\n\n                console.log('[DEBUG] upgrade result:', result)\n\n                // Redirect to Stripe Checkout\n                if (result?.url) {\n                    console.log('[DEBUG] Redirecting to:', result.url)\n                    window.location.href = result.url\n                } else {\n                    console.error('[ERROR] No URL in result:', result)\n                }\n\n                return result\n            },\n            cancelSubscription: (params: any) =>\n                (authClient as any).subscription?.cancel?.({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            restoreSubscription: (params: any) =>\n                (authClient as any).subscription?.restore?.({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            createStripeBillingPortal: (params: any) =>\n                (authClient as any).subscription?.billingPortal?.({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            // Polar subscription mutators\n            createPolarCheckout: (params: any) =>\n                (authClient as any).polar?.checkout?.({\n                    ...params,\n                    fetchOptions: { throw: true }\n                }),\n            createPolarPortal: (params: any) =>\n                (authClient as any).polar?.createCustomerPortal?.({\n                    ...params,\n                    fetchOptions: { throw: true }\n                })\n        } as AuthMutators\n    }, [authClient])\n\n    const defaultHooks = useMemo(() => {\n        return {\n            useSession: authClient.useSession,\n            useListAccounts: () =>\n                useAuthData({\n                    queryFn: authClient.listAccounts,\n                    cacheKey: \"listAccounts\"\n                }),\n            useAccountInfo: (params: any) =>\n                useAuthData({\n                    queryFn: () => authClient.accountInfo(params),\n                    cacheKey: `accountInfo:${JSON.stringify(params)}`\n                }),\n            useListDeviceSessions: () =>\n                useAuthData({\n                    queryFn: authClient.multiSession.listDeviceSessions,\n                    cacheKey: \"listDeviceSessions\"\n                }),\n            useListSessions: () =>\n                useAuthData({\n                    queryFn: authClient.listSessions,\n                    cacheKey: \"listSessions\"\n                }),\n            useListPasskeys: authClient.useListPasskeys,\n            useListApiKeys: () =>\n                useAuthData({\n                    queryFn: authClient.apiKey.list,\n                    cacheKey: \"listApiKeys\"\n                }),\n            useActiveOrganization: authClient.useActiveOrganization,\n            useListOrganizations: authClient.useListOrganizations,\n            useHasPermission: (params: any) =>\n                useAuthData({\n                    queryFn: () =>\n                        authClient.$fetch(\"/organization/has-permission\", {\n                            method: \"POST\",\n                            body: params\n                        }),\n                    cacheKey: `hasPermission:${JSON.stringify(params)}`\n                }),\n            useInvitation: (params: any) =>\n                useAuthData({\n                    queryFn: () =>\n                        authClient.organization.getInvitation(params),\n                    cacheKey: `invitation:${JSON.stringify(params)}`\n                }),\n            useListInvitations: (params?: { query?: { organizationId?: string } }) =>\n                useAuthData({\n                    queryFn: () =>\n                        authClient.$fetch(\n                            `/organization/list-invitations?organizationId=${params?.query?.organizationId || \"\"}`\n                        ),\n                    cacheKey: `listInvitations:${JSON.stringify(params)}`\n                }),\n            useListUserInvitations: () =>\n                useAuthData({\n                    queryFn: () =>\n                        authClient.$fetch(\n                            \"/organization/list-user-invitations\"\n                        ),\n                    cacheKey: `listUserInvitations`\n                }),\n            useListMembers: (params?: { query?: { organizationId?: string } }) =>\n                useAuthData({\n                    queryFn: () =>\n                        authClient.$fetch(\n                            `/organization/list-members?organizationId=${params?.query?.organizationId || \"\"}`\n                        ),\n                    cacheKey: `listMembers:${JSON.stringify(params)}`\n                }),\n            useListActiveSubscriptions: (params: any) =>\n                useAuthData({\n                    queryFn: () => (authClient as any).subscription?.list?.(params),\n                    cacheKey: `listActiveSubscriptions:${JSON.stringify(params)}`\n                })\n        } as any\n    }, [authClient])\n\n    const viewPaths = useMemo(() => {\n        return { ...authViewPaths, ...viewPathsProp }\n    }, [viewPathsProp])\n\n    const localization = useMemo(() => {\n        return { ...authLocalization, ...localizationProp }\n    }, [localizationProp])\n\n    const hooks = useMemo(() => {\n        return { ...defaultHooks, ...hooksProp }\n    }, [defaultHooks, hooksProp])\n\n    const mutators = useMemo(() => {\n        return { ...defaultMutators, ...mutatorsProp }\n    }, [defaultMutators, mutatorsProp])\n\n    // Remove trailing slash from baseURL\n    baseURL = baseURL.endsWith(\"/\") ? baseURL.slice(0, -1) : baseURL\n\n    // Remove trailing slash from basePath\n    basePath = basePath.endsWith(\"/\") ? basePath.slice(0, -1) : basePath\n\n    const { data: sessionData } = hooks.useSession()\n\n    return (\n        <AuthUIContext.Provider\n            value={{\n                authClient,\n                avatar,\n                basePath: basePath === \"/\" ? \"\" : basePath,\n                baseURL,\n                captcha,\n                redirectTo,\n                changeEmail,\n                credentials,\n                deleteUser,\n                freshAge,\n                genericOAuth,\n                hooks,\n                mutators,\n                localization,\n                nameRequired,\n                organization,\n                account,\n                signUp,\n                social,\n                toast,\n                navigate: navigate || defaultNavigate,\n                replace: replace || navigate || defaultReplace,\n                viewPaths,\n                Link,\n                additionalFields: props.additionalFields,\n                apiKey: props.apiKey,\n                emailVerification: props.emailVerification,\n                gravatar: props.gravatar,\n                magicLink: props.magicLink,\n                emailOTP: props.emailOTP,\n                multiSession: props.multiSession,\n                oneTap: props.oneTap,\n                optimistic: props.optimistic,\n                passkey: props.passkey,\n                anonymous: props.anonymous,\n                siwe: props.siwe,\n                persistClient: props.persistClient,\n                twoFactor: props.twoFactor,\n                onSessionChange: props.onSessionChange,\n                phoneNumber: props.phoneNumber,\n                oidc: props.oidc,\n                polar: props.polar,\n                admin: props.admin,\n                autumn: props.autumn,\n                dodopayments: props.dodopayments,\n                creem: props.creem,\n                dub: props.dub\n            }}\n        >\n            {sessionData && organization && <OrganizationRefetcher />}\n\n            {/* Captcha wrapper disabled - install optional captcha dependencies to enable */}\n            {children}\n        </AuthUIContext.Provider>\n    )\n}\n","/**\n * provider-icons\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport type { ComponentType } from \"react\"\n\nexport interface ProviderIconProps {\n    className?: string\n}\n\nexport type ProviderIcon = ComponentType<ProviderIconProps>\n\nexport const AppleIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 32 32\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M9.438 31.401a7 7 0 0 1-1.656-1.536a20 20 0 0 1-1.422-1.938a18.9 18.9 0 0 1-2.375-4.849c-.667-2-.99-3.917-.99-5.792c0-2.094.453-3.922 1.339-5.458a7.7 7.7 0 0 1 2.797-2.906a7.45 7.45 0 0 1 3.786-1.12q.705.002 1.51.198c.385.109.854.281 1.427.495c.729.281 1.13.453 1.266.495c.427.156.786.224 1.068.224c.214 0 .516-.068.859-.172c.193-.068.557-.188 1.078-.411c.516-.188.922-.349 1.245-.469c.495-.146.974-.281 1.401-.349a6.7 6.7 0 0 1 1.531-.063a9 9 0 0 1 2.589.557c1.359.547 2.458 1.401 3.276 2.615a6.4 6.4 0 0 0-.969.734a8.2 8.2 0 0 0-1.641 2.005a6.8 6.8 0 0 0-.859 3.359c.021 1.443.391 2.714 1.12 3.813a7.2 7.2 0 0 0 2.047 2.047c.417.281.776.474 1.12.604c-.161.5-.333.984-.536 1.464a19 19 0 0 1-1.667 3.083c-.578.839-1.031 1.464-1.375 1.88c-.536.635-1.052 1.12-1.573 1.458c-.573.38-1.25.583-1.938.583a4.4 4.4 0 0 1-1.38-.167c-.385-.13-.766-.271-1.141-.432a9 9 0 0 0-1.203-.453a6.3 6.3 0 0 0-3.099-.005c-.417.12-.818.26-1.214.432c-.557.234-.927.391-1.141.458c-.427.125-.87.203-1.318.229c-.693 0-1.339-.198-1.979-.599zm9.14-24.615c-.906.453-1.771.646-2.63.583c-.135-.865 0-1.75.359-2.719a7.3 7.3 0 0 1 1.333-2.24A7.1 7.1 0 0 1 19.812.733q1.319-.68 2.521-.734c.104.906 0 1.797-.333 2.76a8 8 0 0 1-1.333 2.344a6.8 6.8 0 0 1-2.115 1.682z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n)\n\nexport const DiscordIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 199\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M216.856 16.597A208.5 208.5 0 0 0 164.042 0c-2.275 4.113-4.933 9.645-6.766 14.046q-29.538-4.442-58.533 0c-1.832-4.4-4.55-9.933-6.846-14.046a207.8 207.8 0 0 0-52.855 16.638C5.618 67.147-3.443 116.4 1.087 164.956c22.169 16.555 43.653 26.612 64.775 33.193A161 161 0 0 0 79.735 175.3a136.4 136.4 0 0 1-21.846-10.632a109 109 0 0 0 5.356-4.237c42.122 19.702 87.89 19.702 129.51 0a132 132 0 0 0 5.355 4.237a136 136 0 0 1-21.886 10.653c4.006 8.02 8.638 15.67 13.873 22.848c21.142-6.58 42.646-16.637 64.815-33.213c5.316-56.288-9.08-105.09-38.056-148.36M85.474 135.095c-12.645 0-23.015-11.805-23.015-26.18s10.149-26.2 23.015-26.2s23.236 11.804 23.015 26.2c.02 14.375-10.148 26.18-23.015 26.18m85.051 0c-12.645 0-23.014-11.805-23.014-26.18s10.148-26.2 23.014-26.2c12.867 0 23.236 11.804 23.015 26.2c0 14.375-10.148 26.18-23.015 26.18\"\n            fill=\"#5865f2\"\n        />\n    </svg>\n)\n\nexport const DropboxIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 218\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M63.995 0L0 40.771l63.995 40.772L128 40.771zM192 0l-64 40.775l64 40.775l64.001-40.775zM0 122.321l63.995 40.772L128 122.321L63.995 81.55zM192 81.55l-64 40.775l64 40.774l64-40.774zM64 176.771l64.005 40.772L192 176.771L128.005 136z\"\n            fill=\"#0061ff\"\n        />\n    </svg>\n)\n\nexport const FacebookIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 256\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M256 128C256 57.308 198.692 0 128 0S0 57.308 0 128c0 63.888 46.808 116.843 108 126.445V165H75.5v-37H108V99.8c0-32.08 19.11-49.8 48.348-49.8C170.352 50 185 52.5 185 52.5V84h-16.14C152.959 84 148 93.867 148 103.99V128h35.5l-5.675 37H148v89.445c61.192-9.602 108-62.556 108-126.445\"\n            fill=\"#1877f2\"\n        />\n\n        <path\n            d=\"m177.825 165l5.675-37H148v-24.01C148 93.866 152.959 84 168.86 84H185V52.5S170.352 50 156.347 50C127.11 50 108 67.72 108 99.8V128H75.5v37H108v89.445A129 129 0 0 0 128 256a129 129 0 0 0 20-1.555V165z\"\n            fill=\"#fff\"\n        />\n    </svg>\n)\n\nexport const GitHubIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 24 24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\n            fill=\"currentColor\"\n        />\n    </svg>\n)\n\nexport const GitLabIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 236\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path d=\"m128.075 236.075l47.104-144.97H80.97z\" fill=\"#e24329\" />\n        <path d=\"M128.075 236.074L80.97 91.104H14.956z\" fill=\"#fc6d26\" />\n        <path\n            d=\"M14.956 91.104L.642 135.16a9.75 9.75 0 0 0 3.542 10.903l123.891 90.012z\"\n            fill=\"#fca326\"\n        />\n        <path\n            d=\"M14.956 91.105H80.97L52.601 3.79c-1.46-4.493-7.816-4.492-9.275 0z\"\n            fill=\"#e24329\"\n        />\n        <path d=\"m128.075 236.074l47.104-144.97h66.015z\" fill=\"#fc6d26\" />\n        <path\n            d=\"m241.194 91.104l14.314 44.056a9.75 9.75 0 0 1-3.543 10.903l-123.89 90.012z\"\n            fill=\"#fca326\"\n        />\n        <path\n            d=\"M241.194 91.105h-66.015l28.37-87.315c1.46-4.493 7.816-4.492 9.275 0z\"\n            fill=\"#e24329\"\n        />\n    </svg>\n)\n\nexport const GoogleIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 262\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M255.878 133.451c0-10.734-.871-18.567-2.756-26.69H130.55v48.448h71.947c-1.45 12.04-9.283 30.172-26.69 42.356l-.244 1.622l38.755 30.023l2.685.268c24.659-22.774 38.875-56.282 38.875-96.027\"\n            fill=\"#4285f4\"\n        />\n\n        <path\n            d=\"M130.55 261.1c35.248 0 64.839-11.605 86.453-31.622l-41.196-31.913c-11.024 7.688-25.82 13.055-45.257 13.055c-34.523 0-63.824-22.773-74.269-54.25l-1.531.13l-40.298 31.187l-.527 1.465C35.393 231.798 79.49 261.1 130.55 261.1\"\n            fill=\"#34a853\"\n        />\n\n        <path\n            d=\"M56.281 156.37c-2.756-8.123-4.351-16.827-4.351-25.82c0-8.994 1.595-17.697 4.206-25.82l-.073-1.73L15.26 71.312l-1.335.635C5.077 89.644 0 109.517 0 130.55s5.077 40.905 13.925 58.602z\"\n            fill=\"#fbbc05\"\n        />\n\n        <path\n            d=\"M130.55 50.479c24.514 0 41.05 10.589 50.479 19.438l36.844-35.974C195.245 12.91 165.798 0 130.55 0C79.49 0 35.393 29.301 13.925 71.947l42.211 32.783c10.59-31.477 39.891-54.251 74.414-54.251\"\n            fill=\"#eb4335\"\n        />\n    </svg>\n)\n\nexport const HuggingFaceIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n    >\n        <path\n            fill=\"currentColor\"\n            d=\"M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378c0 1.112.178 2.181.503 3.185c.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284c.278.173.48.408.71.694c.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542c.01.026.653 1.552 1.657 2.54c.616.605 1.01 1.223 1.082 1.912c.055.537-.096 1.059-.38 1.572c.637.121 1.294.187 1.967.187c.657 0 1.298-.063 1.921-.178c-.287-.517-.44-1.041-.384-1.581c.07-.69.465-1.307 1.081-1.913c1.004-.987 1.647-2.513 1.657-2.539c.021-.074.083-.285.233-.542c.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952c.23-.286.432-.52.71-.694c.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174a1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094c-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71c-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013a1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921a.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92a.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164c1.607-.007 2.984-1.155 3.572-1.164c.196-.003.305.12.305.454c0 .886-.424 2.328-1.563 3.202c-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026l-.01.008l-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116a1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243a1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444c-.034-.016-.104-.008-.2.022q-.094.03-.216.087q-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096a3 3 0 0 0-.26.219a2 2 0 0 0-.12.121a2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203c0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194c-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858s-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64c-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647s2.822 2.813 2.562 3.244s-1.176-.506-1.176-.506s-2.866-2.567-3.49-1.898s.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405c-.238.839-2.71-1.587-3.216-.642c-.506.946 3.49 2.056 3.522 2.064c1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194c1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858s.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64c.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647s-2.822 2.813-2.562 3.244s1.176-.506 1.176-.506s2.866-2.567 3.49-1.898s-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405c.238.839 2.71-1.587 3.216-.642c.506.946-3.49 2.056-3.522 2.064c-1.29.33-4.568 1.028-5.713-.624\"\n        />\n    </svg>\n)\n\nexport const KickIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width={24}\n        height={24}\n        viewBox=\"0 0 24 24\"\n    >\n        <path\n            fill=\"currentColor\"\n            d=\"M1.333 0h8v5.333H12V2.667h2.667V0h8v8H20v2.667h-2.667v2.666H20V16h2.667v8h-8v-2.667H12v-2.666H9.333V24h-8Z\"\n        />\n    </svg>\n)\n\nexport const LinearIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n    >\n        <path\n            fill=\"currentColor\"\n            d=\"M2.886 4.18A11.98 11.98 0 0 1 11.99 0C18.624 0 24 5.376 24 12.009c0 3.64-1.62 6.903-4.18 9.105L2.887 4.18ZM1.817 5.626l16.556 16.556q-.787.496-1.65.866L.951 7.277q.371-.863.866-1.65ZM.322 9.163l14.515 14.515q-1.066.26-2.195.322L0 11.358a12 12 0 0 1 .322-2.195m-.17 4.862l9.823 9.824a12.02 12.02 0 0 1-9.824-9.824Z\"\n        />\n    </svg>\n)\n\nexport const LinkedInIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 128 128\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M116 3H12a8.91 8.91 0 0 0-9 8.8v104.42a8.91 8.91 0 0 0 9 8.78h104a8.93 8.93 0 0 0 9-8.81V11.77A8.93 8.93 0 0 0 116 3\"\n            fill=\"#0076b2\"\n        />\n        <path\n            d=\"M21.06 48.73h18.11V107H21.06zm9.06-29a10.5 10.5 0 1 1-10.5 10.49a10.5 10.5 0 0 1 10.5-10.49m20.41 29h17.36v8h.24c2.42-4.58 8.32-9.41 17.13-9.41C103.6 47.28 107 59.35 107 75v32H88.89V78.65c0-6.75-.12-15.44-9.41-15.44s-10.87 7.36-10.87 15V107H50.53z\"\n            fill=\"#fff\"\n        />\n    </svg>\n)\n\nexport const MicrosoftIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 256\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path d=\"M121.666 121.666H0V0h121.666z\" fill=\"#f1511b\" />\n        <path d=\"M256 121.666H134.335V0H256z\" fill=\"#80cc28\" />\n        <path d=\"M121.663 256.002H0V134.336h121.663z\" fill=\"#00adef\" />\n        <path d=\"M256 256.002H134.335V134.336H256z\" fill=\"#fbbc09\" />\n    </svg>\n)\n\nexport const NotionIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n    >\n        <path\n            fill=\"currentColor\"\n            d=\"M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514c-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233l4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632\"\n        />\n    </svg>\n)\n\nexport const RedditIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 256\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <circle cx=\"128\" cy=\"128\" fill=\"#ff4500\" r=\"128\" />\n\n        <path\n            d=\"M213.15 129.22c0-10.376-8.391-18.617-18.617-18.617a18.74 18.74 0 0 0-12.97 5.189c-12.818-9.157-30.368-15.107-49.9-15.87l8.544-39.981l27.773 5.95c.307 7.02 6.104 12.667 13.278 12.667c7.324 0 13.275-5.95 13.275-13.278c0-7.324-5.95-13.275-13.275-13.275c-5.188 0-9.768 3.052-11.904 7.478l-30.976-6.562c-.916-.154-1.832 0-2.443.458c-.763.458-1.22 1.22-1.371 2.136l-9.464 44.558c-19.837.612-37.692 6.562-50.662 15.872a18.74 18.74 0 0 0-12.971-5.188c-10.377 0-18.617 8.391-18.617 18.617c0 7.629 4.577 14.037 10.988 16.939a33.6 33.6 0 0 0-.458 5.646c0 28.686 33.42 52.036 74.621 52.036c41.202 0 74.622-23.196 74.622-52.036a35 35 0 0 0-.458-5.646c6.408-2.902 10.985-9.464 10.985-17.093M85.272 142.495c0-7.324 5.95-13.275 13.278-13.275c7.324 0 13.275 5.95 13.275 13.275s-5.95 13.278-13.275 13.278c-7.327.15-13.278-5.953-13.278-13.278m74.317 35.251c-9.156 9.157-26.553 9.768-31.588 9.768c-5.188 0-22.584-.765-31.59-9.768c-1.371-1.373-1.371-3.51 0-4.883c1.374-1.371 3.51-1.371 4.884 0c5.8 5.8 18.008 7.782 26.706 7.782s21.058-1.983 26.704-7.782c1.374-1.371 3.51-1.371 4.884 0c1.22 1.373 1.22 3.51 0 4.883m-2.443-21.822c-7.325 0-13.275-5.95-13.275-13.275s5.95-13.275 13.275-13.275c7.327 0 13.277 5.95 13.277 13.275c0 7.17-5.95 13.275-13.277 13.275\"\n            fill=\"#fff\"\n        />\n    </svg>\n)\n\nexport const RobloxIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 24 24\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M18.926 23.998L0 18.892L5.075.002L24 5.108ZM15.348 10.09l-5.282-1.453l-1.414 5.273l5.282 1.453z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n)\n\nexport const SlackIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        viewBox=\"0 0 24 24\"\n    >\n        <path\n            fill=\"currentColor\"\n            d=\"M6 15a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2h2zm1 0a2 2 0 0 1 2-2a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2a2 2 0 0 1-2-2zm2-8a2 2 0 0 1-2-2a2 2 0 0 1 2-2a2 2 0 0 1 2 2v2zm0 1a2 2 0 0 1 2 2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2a2 2 0 0 1 2-2zm8 2a2 2 0 0 1 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2h-2zm-1 0a2 2 0 0 1-2 2a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2a2 2 0 0 1 2 2zm-2 8a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2v-2zm0-1a2 2 0 0 1-2-2a2 2 0 0 1 2-2h5a2 2 0 0 1 2 2a2 2 0 0 1-2 2z\"\n        />\n    </svg>\n)\n\nexport const SpotifyIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 256\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M128 0C57.308 0 0 57.309 0 128c0 70.696 57.309 128 128 128c70.697 0 128-57.304 128-128C256 57.314 198.697.007 127.998.007zm58.699 184.614c-2.293 3.76-7.215 4.952-10.975 2.644c-30.053-18.357-67.885-22.515-112.44-12.335a7.98 7.98 0 0 1-9.552-6.007a7.97 7.97 0 0 1 6-9.553c48.76-11.14 90.583-6.344 124.323 14.276c3.76 2.308 4.952 7.215 2.644 10.975m15.667-34.853c-2.89 4.695-9.034 6.178-13.726 3.289c-34.406-21.148-86.853-27.273-127.548-14.92c-5.278 1.594-10.852-1.38-12.454-6.649c-1.59-5.278 1.386-10.842 6.655-12.446c46.485-14.106 104.275-7.273 143.787 17.007c4.692 2.89 6.175 9.034 3.286 13.72zm1.345-36.293C162.457 88.964 94.394 86.71 55.007 98.666c-6.325 1.918-13.014-1.653-14.93-7.978c-1.917-6.328 1.65-13.012 7.98-14.935C93.27 62.027 168.434 64.68 215.929 92.876c5.702 3.376 7.566 10.724 4.188 16.405c-3.362 5.69-10.73 7.565-16.4 4.187z\"\n            fill=\"#1ed760\"\n        />\n    </svg>\n)\n\nexport const TikTokIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 256 290\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M189.72 104.421c18.678 13.345 41.56 21.197 66.273 21.197v-47.53a67 67 0 0 1-13.918-1.456v37.413c-24.711 0-47.59-7.851-66.272-21.195v96.996c0 48.523-39.356 87.855-87.9 87.855c-18.113 0-34.949-5.473-48.934-14.86c15.962 16.313 38.222 26.432 62.848 26.432c48.548 0 87.905-39.332 87.905-87.857v-96.995zm17.17-47.952c-9.546-10.423-15.814-23.893-17.17-38.785v-6.113h-13.189c3.32 18.927 14.644 35.097 30.358 44.898M69.673 225.607a40 40 0 0 1-8.203-24.33c0-22.192 18.001-40.186 40.21-40.186a40.3 40.3 0 0 1 12.197 1.883v-48.593c-4.61-.631-9.262-.9-13.912-.801v37.822a40.3 40.3 0 0 0-12.203-1.882c-22.208 0-40.208 17.992-40.208 40.187c0 15.694 8.997 29.281 22.119 35.9\"\n            fill=\"#ff004f\"\n        />\n\n        <path d=\"M175.803 92.849c18.683 13.344 41.56 21.195 66.272 21.195V76.631c-13.794-2.937-26.005-10.141-35.186-20.162c-15.715-9.802-27.038-25.972-30.358-44.898h-34.643v189.843c-.079 22.132-18.049 40.052-40.21 40.052c-13.058 0-24.66-6.221-32.007-15.86c-13.12-6.618-22.118-20.206-22.118-35.898c0-22.193 18-40.187 40.208-40.187c4.255 0 8.356.662 12.203 1.882v-37.822c-47.692.985-86.047 39.933-86.047 87.834c0 23.912 9.551 45.589 25.053 61.428c13.985 9.385 30.82 14.86 48.934 14.86c48.545 0 87.9-39.335 87.9-87.857z\" />\n\n        <path\n            d=\"M242.075 76.63V66.516a66.3 66.3 0 0 1-35.186-10.047a66.47 66.47 0 0 0 35.186 20.163M176.53 11.57a68 68 0 0 1-.728-5.457V0h-47.834v189.845c-.076 22.13-18.046 40.05-40.208 40.05a40.06 40.06 0 0 1-18.09-4.287c7.347 9.637 18.949 15.857 32.007 15.857c22.16 0 40.132-17.918 40.21-40.05V11.571zM99.966 113.58v-10.769a89 89 0 0 0-12.061-.818C39.355 101.993 0 141.327 0 189.845c0 30.419 15.467 57.227 38.971 72.996c-15.502-15.838-25.053-37.516-25.053-61.427c0-47.9 38.354-86.848 86.048-87.833\"\n            fill=\"#00f2ea\"\n        />\n    </svg>\n)\n\nexport const TwitchIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        version=\"1.1\"\n        viewBox=\"0 0 2400 2800\"\n        x=\"0px\"\n        xmlSpace=\"preserve\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n        y=\"0px\"\n    >\n        <style type=\"text/css\">\n            {`\n                .st0{fill:#FFFFFF}\n                .st1{fill:#9146FF}\n            `}\n        </style>\n\n        <title>Asset 2</title>\n\n        <g>\n            <polygon\n                className=\"st0\"\n                points=\"2200,1300 1800,1700 1400,1700 1050,2050 1050,1700 600,1700 600,200 2200,200\"\n            />\n\n            <g>\n                <g>\n                    <path\n                        className=\"st1\"\n                        d=\"M500,0L0,500v1800h600v500l500-500h400l900-900V0H500z M2200,1300l-400,400h-400l-350,350v-350H600V200h1600V1300z\"\n                    />\n\n                    <rect\n                        className=\"st1\"\n                        height=\"600\"\n                        width=\"200\"\n                        x=\"1700\"\n                        y=\"550\"\n                    />\n                    <rect\n                        className=\"st1\"\n                        height=\"600\"\n                        width=\"200\"\n                        x=\"1150\"\n                        y=\"550\"\n                    />\n                </g>\n            </g>\n        </g>\n    </svg>\n)\n\nexport const VKIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 576 512\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7c0 0-30 73.1-72.4 120.5c-13.7 13.7-20 18.1-27.5 18.1c-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5c0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5c-20 0-68.6-73.4-97.4-157.4c-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7c0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9c0-66.8-3.4-73.1 15.4-73.1c8.7 0 23.7 4.4 58.7 38.1c40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25c-11.2-34.9-86.9-106.7-90.3-111.5c-8.7-11.2-6.2-16.2 0-26.2c.1-.1 72-101.3 79.4-135.6\"\n            fill=\"currentColor\"\n        />\n    </svg>\n)\n\nexport const XIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        viewBox=\"0 0 512 512\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n    >\n        <path\n            d=\"M389.2 48h70.6L305.6 224.2L487 464H345L233.7 318.6L106.5 464H35.8l164.9-188.5L26.8 48h145.6l100.5 132.9zm-24.8 373.8h39.1L151.1 88h-42z\"\n            fill=\"currentColor\"\n        />\n    </svg>\n)\n\nexport const ZoomIcon: ProviderIcon = ({ className }) => (\n    <svg\n        className={className}\n        xmlns=\"http://www.w3.org/2000/svg\"\n        width={512}\n        height={117}\n        viewBox=\"0 0 512 117\"\n    >\n        <path\n            fill=\"#0b5cff\"\n            d=\"M107.472 114.706H16.348c-5.968 0-11.791-3.203-14.557-8.589C-1.41 99.858-.247 92.434 4.702 87.63L68.17 24.164H22.607C10.088 24.164.044 13.974.044 1.6h83.992c5.968 0 11.79 3.203 14.556 8.589c3.203 6.259 2.038 13.683-2.911 18.486L32.214 92.143h52.55c12.518 0 22.708 10.19 22.708 22.563M468.183 0c-13.1 0-24.746 5.677-32.898 14.702C427.134 5.677 415.488 0 402.388 0c-24.164 0-43.961 20.67-43.961 44.834v69.872c12.518 0 22.562-10.19 22.562-22.563V44.689c0-11.646 9.025-21.544 20.67-21.98c12.228-.437 22.272 9.315 22.272 21.397v48.037c0 12.519 10.19 22.563 22.563 22.563V44.543c0-11.645 9.025-21.544 20.67-21.98c12.228-.437 22.272 9.316 22.272 21.398v48.036c0 12.52 10.19 22.563 22.563 22.563V44.69C512.144 20.67 492.347 0 468.183 0M221.595 58.226c0 32.17-26.056 58.226-58.226 58.226s-58.226-26.056-58.226-58.226S131.199 0 163.369 0s58.226 26.056 58.226 58.226m-22.563 0c0-19.651-16.012-35.663-35.663-35.663s-35.664 16.012-35.664 35.663c0 19.652 16.013 35.664 35.664 35.664s35.663-16.012 35.663-35.664m148.04 0c0 32.17-26.056 58.226-58.226 58.226S230.62 90.396 230.62 58.226S256.676 0 288.846 0s58.227 26.056 58.227 58.226m-22.562 0c0-19.651-16.012-35.663-35.664-35.663c-19.65 0-35.663 16.012-35.663 35.663c0 19.652 16.012 35.664 35.663 35.664c19.652 0 35.664-16.012 35.664-35.664\"\n        />\n    </svg>\n)\n","import {\n    AppleIcon,\n    DiscordIcon,\n    DropboxIcon,\n    FacebookIcon,\n    GitHubIcon,\n    GitLabIcon,\n    GoogleIcon,\n    HuggingFaceIcon,\n    KickIcon,\n    LinearIcon,\n    LinkedInIcon,\n    MicrosoftIcon,\n    NotionIcon,\n    type ProviderIcon,\n    RedditIcon,\n    RobloxIcon,\n    SlackIcon,\n    SpotifyIcon,\n    TikTokIcon,\n    TwitchIcon,\n    VKIcon,\n    XIcon,\n    ZoomIcon\n} from \"../components/utility/components/provider-icons\"\n\nexport const socialProviders = [\n    {\n        provider: \"apple\",\n        name: \"Apple\",\n        icon: AppleIcon\n    },\n    {\n        provider: \"discord\",\n        name: \"Discord\",\n        icon: DiscordIcon\n    },\n    {\n        provider: \"dropbox\",\n        name: \"Dropbox\",\n        icon: DropboxIcon\n    },\n    {\n        provider: \"facebook\",\n        name: \"Facebook\",\n        icon: FacebookIcon\n    },\n    {\n        provider: \"github\",\n        name: \"GitHub\",\n        icon: GitHubIcon\n    },\n    {\n        provider: \"gitlab\",\n        name: \"GitLab\",\n        icon: GitLabIcon\n    },\n    {\n        provider: \"google\",\n        name: \"Google\",\n        icon: GoogleIcon\n    },\n    {\n        provider: \"huggingface\",\n        name: \"Hugging Face\",\n        icon: HuggingFaceIcon\n    },\n    {\n        provider: \"kick\",\n        name: \"Kick\",\n        icon: KickIcon\n    },\n    {\n        provider: \"linear\",\n        name: \"Linear\",\n        icon: LinearIcon\n    },\n    {\n        provider: \"linkedin\",\n        name: \"LinkedIn\",\n        icon: LinkedInIcon\n    },\n    {\n        provider: \"microsoft\",\n        name: \"Microsoft\",\n        icon: MicrosoftIcon\n    },\n    {\n        provider: \"notion\",\n        name: \"Notion\",\n        icon: NotionIcon\n    },\n    {\n        provider: \"reddit\",\n        name: \"Reddit\",\n        icon: RedditIcon\n    },\n    {\n        provider: \"roblox\",\n        name: \"Roblox\",\n        icon: RobloxIcon\n    },\n    {\n        provider: \"slack\",\n        name: \"Slack\",\n        icon: SlackIcon\n    },\n    {\n        provider: \"spotify\",\n        name: \"Spotify\",\n        icon: SpotifyIcon\n    },\n    {\n        provider: \"tiktok\",\n        name: \"TikTok\",\n        icon: TikTokIcon\n    },\n    {\n        provider: \"twitch\",\n        name: \"Twitch\",\n        icon: TwitchIcon\n    },\n    {\n        provider: \"vk\",\n        name: \"VK\",\n        icon: VKIcon\n    },\n    {\n        provider: \"twitter\",\n        name: \"X\",\n        icon: XIcon\n    },\n    {\n        provider: \"zoom\",\n        name: \"Zoom\",\n        icon: ZoomIcon\n    }\n] as const\n\nexport type Provider = {\n    provider: string\n    name: string\n    icon?: ProviderIcon\n}\n","import { useContext, useEffect } from \"react\"\nimport { AuthUIContext } from \"../lib/auth-ui-provider\"\nimport type { AuthViewPath } from \"../lib/view-paths\"\nimport type { AnyAuthClient } from \"../types/any-auth-client\"\n\ninterface AuthenticateOptions<TAuthClient extends AnyAuthClient> {\n    authClient?: TAuthClient\n    authView?: AuthViewPath\n    enabled?: boolean\n}\n\nexport function useAuthenticate<TAuthClient extends AnyAuthClient>(\n    options?: AuthenticateOptions<TAuthClient>\n) {\n    type Session = TAuthClient[\"$Infer\"][\"Session\"][\"session\"]\n    type User = TAuthClient[\"$Infer\"][\"Session\"][\"user\"]\n\n    const { authView = \"SIGN_IN\", enabled = true } = options ?? {}\n\n    const {\n        hooks: { useSession },\n        basePath,\n        viewPaths,\n        replace\n    } = useContext(AuthUIContext)\n\n    const { data, isPending, error, refetch } = useSession()\n    const sessionData = data as\n        | {\n              session: Session\n              user: User\n          }\n        | null\n        | undefined\n\n    useEffect(() => {\n        if (!enabled || isPending || sessionData) return\n\n        const currentUrl = new URL(window.location.href)\n        const redirectTo =\n            currentUrl.searchParams.get(\"redirectTo\") ||\n            window.location.href.replace(window.location.origin, \"\")\n\n        const targetPath = viewPaths[authView as keyof typeof viewPaths] || authView.toLowerCase().replace(/_/g, '-');\n        replace(\n            `${basePath}/${targetPath}?redirectTo=${encodeURIComponent(redirectTo)}`\n        )\n    }, [\n        isPending,\n        sessionData,\n        basePath,\n        viewPaths,\n        replace,\n        authView,\n        enabled\n    ])\n\n    return {\n        data: sessionData,\n        user: sessionData?.user,\n        isPending,\n        error,\n        refetch\n    }\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst buttonVariants = cva(\n  \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n        destructive:\n          \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n        secondary:\n          \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n        ghost:\n          \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n        link: \"text-primary underline-offset-4 hover:underline\",\n      },\n      size: {\n        default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n        sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n        lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n        icon: \"size-9\",\n        \"icon-sm\": \"size-8\",\n        \"icon-lg\": \"size-10\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n      size: \"default\",\n    },\n  }\n)\n\nfunction Button({\n  className,\n  variant,\n  size,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"button\"> &\n  VariantProps<typeof buttonVariants> & {\n    asChild?: boolean\n  }) {\n  const Comp = asChild ? Slot : \"button\"\n\n  return (\n    <Comp\n      data-slot=\"button\"\n      className={cn(buttonVariants({ variant, size, className }))}\n      {...props}\n    />\n  )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Card = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"rounded-lg border bg-card text-card-foreground shadow-sm\",\n      className\n    )}\n    {...props}\n  />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n    {...props}\n  />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\n      \"text-2xl font-semibold leading-none tracking-tight\",\n      className\n    )}\n    {...props}\n  />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"text-sm text-muted-foreground\", className)}\n    {...props}\n  />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n  HTMLDivElement,\n  React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n  <div\n    ref={ref}\n    className={cn(\"flex items-center p-6 pt-0\", className)}\n    {...props}\n  />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import { cn } from \"../../lib/utils\";\n\nfunction Skeleton({\n  className,\n  ...props\n}: React.HTMLAttributes<HTMLDivElement>) {\n  return (\n    <div\n      className={cn(\"animate-pulse rounded-md bg-muted\", className)}\n      {...props}\n    />\n  );\n}\n\nexport { Skeleton };\n","/**\n * avatar\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Avatar({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n  return (\n    <AvatarPrimitive.Root\n      data-slot=\"avatar\"\n      className={cn(\n        \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarImage({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n  return (\n    <AvatarPrimitive.Image\n      data-slot=\"avatar-image\"\n      className={cn(\"aspect-square size-full\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AvatarFallback({\n  className,\n  ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n  return (\n    <AvatarPrimitive.Fallback\n      data-slot=\"avatar-fallback\"\n      className={cn(\n        \"bg-muted flex size-full items-center justify-center rounded-full\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","/**\n * organization-logo\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { BuildingIcon } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"../../ui/avatar\"\nimport { Skeleton } from \"../../ui/skeleton\"\n\nexport interface OrganizationLogoClassNames {\n    base?: string\n    image?: string\n    fallback?: string\n    fallbackIcon?: string\n    skeleton?: string\n}\n\nexport interface OrganizationLogoProps {\n    classNames?: OrganizationLogoClassNames\n    isPending?: boolean\n    size?: \"sm\" | \"default\" | \"lg\" | \"xl\" | \"icon-sm\" | \"icon-lg\" | null\n    organization?: Partial<Organization> | null\n    /**\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: AuthLocalization\n}\n\n/**\n * Displays an organization logo with image and fallback support\n *\n * Renders an organization's logo image when available, with appropriate fallbacks:\n * - Shows a skeleton when isPending is true\n * - Falls back to a building icon when no logo is available\n */\nexport function OrganizationLogo({\n    className,\n    classNames,\n    isPending,\n    size,\n    organization,\n    localization: propLocalization,\n    ...props\n}: OrganizationLogoProps & ComponentProps<typeof Avatar>) {\n    const { localization: contextLocalization, avatar } =\n        useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...propLocalization }),\n        [contextLocalization, propLocalization]\n    )\n\n    const name = organization?.name\n    const src = organization?.logo\n\n    if (isPending) {\n        return (\n            <Skeleton\n                className={cn(\n                    \"shrink-0\",\n                    size === \"sm\"\n                        ? \"size-6 rounded-full\"\n                        : size === \"lg\"\n                          ? \"size-10 rounded-lg\"\n                          : size === \"xl\"\n                            ? \"size-12 rounded-lg\"\n                            : \"size-8 rounded-lg\",\n                    className,\n                    classNames?.base,\n                    classNames?.skeleton\n                )}\n            />\n        )\n    }\n\n    return (\n        <Avatar\n            className={cn(\n                \"bg-muted\",\n                size === \"sm\"\n                    ? \"size-6 rounded-full\"\n                    : size === \"lg\"\n                      ? \"size-10 rounded-lg\"\n                      : size === \"xl\"\n                        ? \"size-12 rounded-lg\"\n                        : \"size-8 rounded-lg\",\n                className,\n                classNames?.base\n            )}\n            {...props}\n        >\n            {avatar?.Image ? (\n                <avatar.Image\n                    alt={name || localization?.ORGANIZATION!}\n                    className={classNames?.image}\n                    src={src || \"\"}\n                />\n            ) : (\n                <AvatarImage\n                    alt={name || localization?.ORGANIZATION!}\n                    className={classNames?.image}\n                    src={src || undefined}\n                />\n            )}\n\n            <AvatarFallback\n                className={cn(\n                    \"text-foreground\",\n                    size === \"sm\" ? \"rounded-full\" : \"rounded-lg\",\n                    classNames?.fallback\n                )}\n                delayMs={src ? 600 : undefined}\n            >\n                <BuildingIcon\n                    className={cn(\"size-[50%]\", classNames?.fallbackIcon)}\n                />\n            </AvatarFallback>\n        </Avatar>\n    )\n}\n","/**\n * organization-cell-view\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport {\n    OrganizationLogo,\n    type OrganizationLogoClassNames\n} from \"../components/organization-logo\"\n\nexport interface OrganizationViewClassNames {\n    base?: string\n    avatar?: OrganizationLogoClassNames\n    content?: string\n    title?: string\n    subtitle?: string\n    skeleton?: string\n}\n\nexport interface OrganizationViewProps {\n    className?: string\n    classNames?: OrganizationViewClassNames\n    isPending?: boolean\n    size?: \"sm\" | \"default\" | \"lg\" | \"icon-sm\" | \"icon-lg\" | null\n    organization?: Organization | null\n    /**\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: AuthLocalization\n}\n\nexport function OrganizationCellView({\n    className,\n    classNames,\n    isPending,\n    size,\n    organization,\n    localization: propLocalization\n}: OrganizationViewProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...propLocalization }\n\n    return (\n        <div\n            className={cn(\n                \"flex items-center gap-2 truncate\",\n                className,\n                classNames?.base\n            )}\n        >\n            <OrganizationLogo\n                className={cn(size !== \"sm\" && \"my-0.5\")}\n                classNames={classNames?.avatar}\n                isPending={isPending}\n                localization={localization}\n                organization={organization}\n                size={size}\n            />\n\n            <div\n                className={cn(\n                    \"flex flex-col truncate text-left leading-tight\",\n                    classNames?.content\n                )}\n            >\n                {isPending ? (\n                    <>\n                        <Skeleton\n                            className={cn(\n                                \"max-w-full\",\n                                size === \"lg\" ? \"h-4.5 w-32\" : \"h-3.5 w-24\",\n                                classNames?.title,\n                                classNames?.skeleton\n                            )}\n                        />\n\n                        {size !== \"sm\" && (\n                            <Skeleton\n                                className={cn(\n                                    \"mt-1.5 max-w-full\",\n                                    size === \"lg\" ? \"h-3.5 w-24\" : \"h-3 w-16\",\n                                    classNames?.subtitle,\n                                    classNames?.skeleton\n                                )}\n                            />\n                        )}\n                    </>\n                ) : (\n                    <>\n                        <span\n                            className={cn(\n                                \"truncate font-medium\",\n                                size === \"lg\" ? \"text-base\" : \"text-sm\",\n                                classNames?.title\n                            )}\n                        >\n                            {organization?.name || localization?.ORGANIZATION}\n                        </span>\n\n                        {size !== \"sm\" && organization?.slug && (\n                            <span\n                                className={cn(\n                                    \"truncate text-xs text-muted-foreground\",\n                                    size === \"lg\" ? \"text-sm\" : \"\",\n                                    classNames?.subtitle\n                                )}\n                            >\n                                {organization.slug}\n                            </span>\n                        )}\n                    </>\n                )}\n            </div>\n        </div>\n    )\n}\n","/**\n * accept-invitation-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { CheckIcon, Loader2, XIcon } from \"lucide-react\"\nimport { useCallback, useContext, useEffect, useMemo, useState } from \"react\"\n\nimport { useAuthenticate } from \"../../../hooks/use-authenticate\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError, getSearchParam } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardHeader,\n    CardTitle\n} from \"../../ui/card\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport { OrganizationCellView } from \"../cells/organization-cell-view\"\n\nexport interface AcceptInvitationCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n}\n\nexport function AcceptInvitationCard({\n    className,\n    classNames,\n    localization: localizationProp\n}: AcceptInvitationCardProps) {\n    const {\n        localization: contextLocalization,\n        redirectTo,\n        replace,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: sessionData } = useAuthenticate()\n    const [invitationId, setInvitationId] = useState<string | null>(null)\n\n    useEffect(() => {\n        const invitationIdParam = getSearchParam(\"invitationId\")\n\n        if (!invitationIdParam) {\n            toast({\n                variant: \"error\",\n                message: localization.INVITATION_NOT_FOUND\n            })\n\n            replace(redirectTo)\n            return\n        }\n\n        setInvitationId(invitationIdParam)\n    }, [localization.INVITATION_NOT_FOUND, toast, replace, redirectTo])\n\n    if (!sessionData || !invitationId) {\n        return (\n            <AcceptInvitationSkeleton\n                className={className}\n                classNames={classNames}\n            />\n        )\n    }\n\n    return (\n        <AcceptInvitationContent\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            invitationId={invitationId}\n        />\n    )\n}\n\nfunction AcceptInvitationContent({\n    className,\n    classNames,\n    localization: localizationProp,\n    invitationId\n}: AcceptInvitationCardProps & { invitationId: string }) {\n    const {\n        authClient,\n        hooks: { useInvitation },\n        localization: contextLocalization,\n        organization,\n        redirectTo,\n        replace,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [isRejecting, setIsRejecting] = useState(false)\n    const [isAccepting, setIsAccepting] = useState(false)\n    const isProcessing = isRejecting || isAccepting\n\n    const { data: invitation, isPending } = useInvitation({\n        query: {\n            id: invitationId\n        }\n    })\n\n    const getRedirectTo = useCallback(\n        () => getSearchParam(\"redirectTo\") || redirectTo,\n        [redirectTo]\n    )\n\n    useEffect(() => {\n        if (isPending || !invitationId) return\n\n        if (!invitation) {\n            toast({\n                variant: \"error\",\n                message: localization.INVITATION_NOT_FOUND\n            })\n\n            replace(redirectTo)\n            return\n        }\n\n        if (\n            invitation.status !== \"pending\" ||\n            new Date(invitation.expiresAt) < new Date()\n        ) {\n            toast({\n                variant: \"error\",\n                message:\n                    new Date(invitation.expiresAt) < new Date()\n                        ? localization.INVITATION_EXPIRED\n                        : localization.INVITATION_NOT_FOUND\n            })\n\n            replace(redirectTo)\n        }\n    }, [\n        invitation,\n        isPending,\n        invitationId,\n        localization,\n        toast,\n        replace,\n        redirectTo\n    ])\n\n    const acceptInvitation = async () => {\n        setIsAccepting(true)\n\n        try {\n            await authClient.organization.acceptInvitation({\n                invitationId: invitationId,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message:\n                    localization.INVITATION_ACCEPTED || \"Invitation accepted\"\n            })\n\n            replace(getRedirectTo())\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsAccepting(false)\n        }\n    }\n\n    const rejectInvitation = async () => {\n        setIsRejecting(true)\n\n        try {\n            await authClient.organization.rejectInvitation({\n                invitationId: invitationId,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.INVITATION_REJECTED\n            })\n\n            replace(redirectTo)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsRejecting(false)\n        }\n    }\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ]\n\n    const roles = [...builtInRoles, ...(organization?.customRoles || [])]\n    const roleLabel =\n        roles.find((r) => r.role === invitation?.role)?.label ||\n        invitation?.role\n\n    if (!invitation)\n        return (\n            <AcceptInvitationSkeleton\n                className={className}\n                classNames={classNames}\n            />\n        )\n\n    return (\n        <Card className={cn(\"w-full max-w-sm\", className, classNames?.base)}>\n            <CardHeader\n                className={cn(\n                    \"justify-items-center text-center\",\n                    classNames?.header\n                )}\n            >\n                <CardTitle\n                    className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                >\n                    {localization.ACCEPT_INVITATION}\n                </CardTitle>\n\n                <CardDescription\n                    className={cn(\n                        \"text-xs md:text-sm\",\n                        classNames?.description\n                    )}\n                >\n                    {localization.ACCEPT_INVITATION_DESCRIPTION}\n                </CardDescription>\n            </CardHeader>\n\n            <CardContent\n                className={cn(\n                    \"flex flex-col gap-6 truncate\",\n                    classNames?.content\n                )}\n            >\n                <Card className={cn(\"flex-row items-center p-4\")}>\n                    <OrganizationCellView\n                        organization={{\n                            id: invitation.organizationId,\n                            name: invitation.organizationName,\n                            slug: invitation.organizationSlug,\n                            logo: invitation.organizationLogo,\n                            createdAt: new Date()\n                        }}\n                        localization={localization}\n                    />\n\n                    <p className=\"ml-auto text-muted-foreground text-sm\">\n                        {roleLabel}\n                    </p>\n                </Card>\n\n                <div className=\"grid grid-cols-2 gap-3\">\n                    <Button\n                        variant=\"outline\"\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        onClick={rejectInvitation}\n                        disabled={isProcessing}\n                    >\n                        {isRejecting ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <XIcon />\n                        )}\n\n                        {localization.REJECT}\n                    </Button>\n\n                    <Button\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                        onClick={acceptInvitation}\n                        disabled={isProcessing}\n                    >\n                        {isAccepting ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <CheckIcon />\n                        )}\n\n                        {localization.ACCEPT}\n                    </Button>\n                </div>\n            </CardContent>\n        </Card>\n    )\n}\n\nconst AcceptInvitationSkeleton = ({\n    className,\n    classNames,\n    localization\n}: AcceptInvitationCardProps) => {\n    return (\n        <Card className={cn(\"w-full max-w-sm\", className, classNames?.base)}>\n            <CardHeader\n                className={cn(\"justify-items-center\", classNames?.header)}\n            >\n                <Skeleton\n                    className={cn(\n                        \"my-1 h-5 w-full max-w-32 md:h-5.5 md:w-40\",\n                        classNames?.skeleton\n                    )}\n                />\n\n                <Skeleton\n                    className={cn(\n                        \"my-0.5 h-3 w-full max-w-56 md:h-3.5 md:w-64\",\n                        classNames?.skeleton\n                    )}\n                />\n            </CardHeader>\n\n            <CardContent\n                className={cn(\n                    \"flex flex-col gap-6 truncate\",\n                    classNames?.content\n                )}\n            >\n                <Card className={cn(\"flex-row items-center p-4\")}>\n                    <OrganizationCellView\n                        isPending\n                        localization={localization}\n                    />\n\n                    <Skeleton className=\"mt-0.5 ml-auto h-4 w-full max-w-14 shrink-2\" />\n                </Card>\n\n                <div className=\"grid grid-cols-2 gap-3\">\n                    <Skeleton className=\"h-9 w-full\" />\n\n                    <Skeleton className=\"h-9 w-full\" />\n                </div>\n            </CardContent>\n        </Card>\n    )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Separator({\n  className,\n  orientation = \"horizontal\",\n  decorative = true,\n  ...props\n}: React.ComponentProps<typeof SeparatorPrimitive.Root>) {\n  return (\n    <SeparatorPrimitive.Root\n      data-slot=\"separator\"\n      decorative={decorative}\n      orientation={orientation}\n      className={cn(\n        \"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Separator }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\nimport type { BetterAuthClient } from \"@/types/auth\";\n\nexport interface AnonymousSignInButtonProps {\n  /**\n   * Better Auth client instance\n   */\n  authClient?: BetterAuthClient;\n  \n  /**\n   * Callback fired on successful anonymous sign-in\n   */\n  onSuccess?: (user: any) => void;\n  \n  /**\n   * Callback fired on error\n   */\n  onError?: (error: Error) => void;\n  \n  /**\n   * Redirect URL after successful sign-in\n   */\n  redirectTo?: string;\n  \n  /**\n   * Button text\n   * @default \"Continue as Guest\"\n   */\n  children?: React.ReactNode;\n  \n  /**\n   * Custom class name\n   */\n  className?: string;\n  \n  /**\n   * Button variant\n   * @default \"outline\"\n   */\n  variant?: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\" | \"link\";\n  \n  /**\n   * Button size\n   * @default \"default\"\n   */\n  size?: \"default\" | \"sm\" | \"lg\" | \"icon\";\n  \n  /**\n   * Localization strings\n   */\n  localization?: {\n    buttonText?: string;\n    signingIn?: string;\n  };\n  \n  /**\n   * Whether the component is in a submitting state\n   */\n  isSubmitting?: boolean;\n  \n  /**\n   * Callback to update the submitting state\n   */\n  setIsSubmitting?: (isSubmitting: boolean) => void;\n}\n\nexport function AnonymousSignInButton({\n  authClient,\n  onSuccess,\n  onError,\n  redirectTo,\n  children = \"Continue as Guest\",\n  className,\n  variant = \"outline\",\n  size = \"default\",\n  localization = {},\n  isSubmitting: isSubmittingProp,\n  setIsSubmitting: setIsSubmittingProp,\n}: AnonymousSignInButtonProps) {\n  const context = React.useContext(AuthUIContext);\n  const client = authClient || context?.authClient;\n  \n  const [isLoadingState, setIsLoadingState] = React.useState(false);\n  const isLoading = isSubmittingProp ?? isLoadingState;\n  const setIsLoading = setIsSubmittingProp ?? setIsLoadingState;\n\n  const handleSignIn = async () => {\n    if (!client) {\n      const error = new Error(\"Auth client not provided\");\n      onError?.(error);\n      return;\n    }\n\n    setIsLoading(true);\n\n    try {\n      // Call Better Auth anonymous sign-in\n      const result = await client.$fetch(\"/sign-in/anonymous\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n      });\n\n      if (!result.ok) {\n        throw new Error(\"Failed to sign in anonymously\");\n      }\n\n      const user = await result.json();\n      \n      onSuccess?.(user);\n\n      // Redirect if specified\n      if (redirectTo) {\n        window.location.href = redirectTo;\n      }\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(\"Unknown error\");\n      onError?.(err);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  return (\n    <Button\n      type=\"button\"\n      variant={variant}\n      size={size}\n      className={className}\n      onClick={handleSignIn}\n      disabled={isLoading}\n    >\n      {isLoading \n        ? (localization.signingIn || \"Signing in...\") \n        : (localization.buttonText || children)\n      }\n    </Button>\n  );\n}\n","/**\n * email-otp-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { LockIcon, MailIcon } from \"lucide-react\"\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthViewPath } from \"@/lib/view-paths\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport type { AuthViewClassNames } from \"@/components/auth/views\"\n\ninterface EmailOTPButtonProps {\n    classNames?: AuthViewClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    view: AuthViewPath\n}\n\nexport function EmailOTPButton({\n    classNames,\n    isSubmitting,\n    localization,\n    view\n}: EmailOTPButtonProps) {\n    const { viewPaths, navigate, basePath } = useContext(AuthUIContext)\n\n    return (\n        <Button\n            className={cn(\n                \"w-full\",\n                classNames?.form?.button,\n                classNames?.form?.secondaryButton\n            )}\n            disabled={isSubmitting}\n            type=\"button\"\n            variant=\"secondary\"\n            onClick={() =>\n                navigate(\n                    `${basePath}/${view === \"EMAIL_OTP\" ? viewPaths.SIGN_IN : viewPaths.EMAIL_OTP}${window.location.search}`\n                )\n            }\n        >\n            {view === \"EMAIL_OTP\" ? (\n                <LockIcon className={classNames?.form?.icon} />\n            ) : (\n                <MailIcon className={classNames?.form?.icon} />\n            )}\n            {localization.SIGN_IN_WITH}{\" \"}\n            {view === \"EMAIL_OTP\"\n                ? localization.PASSWORD\n                : localization.EMAIL_OTP}\n        </Button>\n    )\n}\n","/**\n * magic-link-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { LockIcon, MailIcon } from \"lucide-react\"\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthViewPath } from \"@/lib/view-paths\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport type { AuthViewClassNames } from \"@/components/auth/views\"\n\ninterface MagicLinkButtonProps {\n    classNames?: AuthViewClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    view: AuthViewPath\n}\n\nexport function MagicLinkButton({\n    classNames,\n    isSubmitting,\n    localization,\n    view\n}: MagicLinkButtonProps) {\n    const { viewPaths, navigate, basePath, credentials } =\n        useContext(AuthUIContext)\n\n    return (\n        <Button\n            className={cn(\n                \"w-full\",\n                classNames?.form?.button,\n                classNames?.form?.secondaryButton\n            )}\n            disabled={isSubmitting}\n            type=\"button\"\n            variant=\"secondary\"\n            onClick={() =>\n                navigate(\n                    `${basePath}/${view === \"MAGIC_LINK\" || !credentials ? viewPaths.SIGN_IN : viewPaths.MAGIC_LINK}${window.location.search}`\n                )\n            }\n        >\n            {view === \"MAGIC_LINK\" ? (\n                <LockIcon className={classNames?.form?.icon} />\n            ) : (\n                <MailIcon className={classNames?.form?.icon} />\n            )}\n            {localization.SIGN_IN_WITH}{\" \"}\n            {view === \"MAGIC_LINK\"\n                ? localization.PASSWORD\n                : localization.MAGIC_LINK}\n        </Button>\n    )\n}\n","import {\n    useCallback,\n    useContext,\n    useEffect,\n    useState,\n    useTransition\n} from \"react\"\nimport { AuthUIContext } from \"../lib/auth-ui-provider\"\nimport { getSearchParam } from \"../lib/utils\"\n\nexport function useOnSuccessTransition({\n    redirectTo: redirectToProp\n}: {\n    redirectTo?: string\n}) {\n    const { redirectTo: contextRedirectTo } = useContext(AuthUIContext)\n\n    const getRedirectTo = useCallback(\n        () =>\n            redirectToProp || getSearchParam(\"redirectTo\") || contextRedirectTo,\n        [redirectToProp, contextRedirectTo]\n    )\n\n    const [isPending, startTransition] = useTransition()\n    const [success, setSuccess] = useState(false)\n\n    const {\n        navigate,\n        hooks: { useSession },\n        onSessionChange\n    } = useContext(AuthUIContext)\n\n    const { refetch: refetchSession } = useSession()\n\n    useEffect(() => {\n        if (!success || isPending) return\n\n        startTransition(() => {\n            navigate(getRedirectTo())\n        })\n    }, [success, isPending, navigate, getRedirectTo])\n\n    const onSuccess = useCallback(async () => {\n        await refetchSession?.()\n        setSuccess(true)\n\n        if (onSessionChange) startTransition(onSessionChange)\n    }, [refetchSession, onSessionChange])\n\n    return { onSuccess, isPending }\n}\n","/**\n * passkey-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { FingerprintIcon } from \"lucide-react\"\nimport { useContext } from \"react\"\n\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport type { AuthViewClassNames } from \"@/components/auth/views\"\n\ninterface PasskeyButtonProps {\n    classNames?: AuthViewClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (isSubmitting: boolean) => void\n}\n\nexport function PasskeyButton({\n    classNames,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting\n}: PasskeyButtonProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { onSuccess } = useOnSuccessTransition({ redirectTo })\n\n    const signInPassKey = async () => {\n        setIsSubmitting?.(true)\n\n        try {\n            const response = await authClient.signIn.passkey({\n                fetchOptions: { throw: true }\n            })\n\n            if (response?.error) {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({\n                        error: response.error,\n                        localization\n                    })\n                })\n\n                setIsSubmitting?.(false)\n            } else {\n                onSuccess()\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsSubmitting?.(false)\n        }\n    }\n\n    return (\n        <Button\n            className={cn(\n                \"w-full\",\n                classNames?.form?.button,\n                classNames?.form?.secondaryButton\n            )}\n            disabled={isSubmitting}\n            formNoValidate\n            name=\"passkey\"\n            value=\"true\"\n            variant=\"secondary\"\n            onClick={signInPassKey}\n        >\n            <FingerprintIcon />\n            {localization.SIGN_IN_WITH} {localization.PASSKEY}\n        </Button>\n    )\n}\n","/**\n * provider-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport type { SocialProvider } from \"better-auth/social-providers\"\nimport { useCallback, useContext } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { Provider } from \"@/lib/social-providers\"\nimport { cn, getLocalizedError, getSearchParam } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport type { AuthViewClassNames } from \"@/components/auth/views\"\n\ninterface ProviderButtonProps {\n    className?: string\n    classNames?: AuthViewClassNames\n    callbackURL?: string\n    isSubmitting: boolean\n    localization: Partial<AuthLocalization>\n    other?: boolean\n    provider: Provider\n    redirectTo?: string\n    socialLayout: \"auto\" | \"horizontal\" | \"grid\" | \"vertical\"\n    setIsSubmitting: (isSubmitting: boolean) => void\n}\n\nexport function ProviderButton({\n    className,\n    classNames,\n    callbackURL: callbackURLProp,\n    isSubmitting,\n    localization,\n    other,\n    provider,\n    redirectTo: redirectToProp,\n    socialLayout,\n    setIsSubmitting\n}: ProviderButtonProps) {\n    const {\n        authClient,\n        basePath,\n        baseURL,\n        persistClient,\n        redirectTo: contextRedirectTo,\n        viewPaths,\n        social,\n        genericOAuth,\n        toast\n    } = useContext(AuthUIContext)\n\n    const getRedirectTo = useCallback(\n        () =>\n            redirectToProp || getSearchParam(\"redirectTo\") || contextRedirectTo,\n        [redirectToProp, contextRedirectTo]\n    )\n\n    const getCallbackURL = useCallback(\n        () =>\n            `${baseURL}${\n                callbackURLProp ||\n                (persistClient\n                    ? `${basePath}/${viewPaths.CALLBACK}?redirectTo=${encodeURIComponent(getRedirectTo())}`\n                    : getRedirectTo())\n            }`,\n        [\n            callbackURLProp,\n            persistClient,\n            basePath,\n            viewPaths,\n            baseURL,\n            getRedirectTo\n        ]\n    )\n\n    const doSignInSocial = async () => {\n        setIsSubmitting(true)\n\n        try {\n            if (other) {\n                const oauth2Params = {\n                    providerId: provider.provider,\n                    callbackURL: getCallbackURL(),\n                    fetchOptions: { throw: true }\n                }\n\n                if (genericOAuth?.signIn) {\n                    await genericOAuth.signIn(oauth2Params)\n\n                    setTimeout(() => {\n                        setIsSubmitting(false)\n                    }, 10000)\n                } else {\n                    await authClient.signIn.oauth2(oauth2Params)\n                }\n            } else {\n                const socialParams = {\n                    provider: provider.provider as SocialProvider,\n                    callbackURL: getCallbackURL(),\n                    fetchOptions: { throw: true }\n                }\n\n                if (social?.signIn) {\n                    await social.signIn(socialParams)\n\n                    setTimeout(() => {\n                        setIsSubmitting(false)\n                    }, 10000)\n                } else {\n                    await authClient.signIn.social(socialParams)\n                }\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsSubmitting(false)\n        }\n    }\n\n    return (\n        <Button\n            className={cn(\n                socialLayout === \"vertical\" ? \"w-full\" : \"grow\",\n                className,\n                classNames?.form?.button,\n                classNames?.form?.outlineButton,\n                classNames?.form?.providerButton\n            )}\n            disabled={isSubmitting}\n            variant=\"outline\"\n            onClick={doSignInSocial}\n        >\n            {provider.icon && (\n                <provider.icon className={classNames?.form?.icon} />\n            )}\n\n            {socialLayout === \"grid\" && provider.name}\n            {socialLayout === \"vertical\" &&\n                `${localization.SIGN_IN_WITH} ${provider.name}`}\n        </Button>\n    )\n}\n","/**\n * auth-callback\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect, useRef } from \"react\"\n\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\n\nexport function AuthCallback({ redirectTo }: { redirectTo?: string }) {\n    const {\n        hooks: { useIsRestoring },\n        persistClient\n    } = useContext(AuthUIContext)\n\n    const isRestoring = useIsRestoring?.()\n    const isRedirecting = useRef(false)\n\n    const { onSuccess } = useOnSuccessTransition({ redirectTo })\n\n    useEffect(() => {\n        if (isRedirecting.current) return\n\n        if (!persistClient) {\n            isRedirecting.current = true\n            onSuccess()\n            return\n        }\n\n        if (isRestoring) return\n\n        isRedirecting.current = true\n        onSuccess()\n    }, [isRestoring, persistClient, onSuccess])\n\n    return <Loader2 className=\"animate-spin\" />\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst alertVariants = cva(\n  \"relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current\",\n  {\n    variants: {\n      variant: {\n        default: \"bg-card text-card-foreground\",\n        destructive:\n          \"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Alert({\n  className,\n  variant,\n  ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n  return (\n    <div\n      data-slot=\"alert\"\n      role=\"alert\"\n      className={cn(alertVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-title\"\n      className={cn(\n        \"col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDescription({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-description\"\n      className={cn(\n        \"text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Alert, AlertTitle, AlertDescription }\n","/**\n * device-code-display\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport QRCode from \"react-qr-code\"\nimport { Copy, Clock, Loader2, CheckCheck } from \"lucide-react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardHeader,\n    CardTitle,\n} from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Alert, AlertDescription } from \"@/components/ui/alert\"\n\nexport interface DeviceCodeDisplayProps {\n    /**\n     * The device code from the authorization request\n     */\n    deviceCode: string\n\n    /**\n     * The user-friendly code to display\n     */\n    userCode: string\n\n    /**\n     * The verification URI where users enter the code\n     */\n    verificationUri: string\n\n    /**\n     * Complete verification URI (includes user code as parameter)\n     * Optional, for QR code generation\n     */\n    verificationUriComplete?: string\n\n    /**\n     * Time in seconds until the code expires\n     */\n    expiresIn: number\n\n    /**\n     * Custom CSS class for the card\n     */\n    className?: string\n\n    /**\n     * Show QR code for mobile scanning\n     * @default false\n     * Note: Requires QR code component to be installed\n     */\n    showQRCode?: boolean\n\n    /**\n     * Callback when code expires\n     */\n    onExpired?: () => void\n\n    /**\n     * Callback when authorization is successful\n     */\n    onSuccess?: () => void\n\n    /**\n     * Callback when authorization fails\n     */\n    onError?: (error: string) => void\n\n    /**\n     * Polling interval in seconds\n     * @default 5\n     */\n    pollingInterval?: number\n\n    /**\n     * Whether to automatically poll for authorization\n     * @default true\n     */\n    autoPoll?: boolean\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n}\n\n/**\n * DeviceCodeDisplay Component\n *\n * Displays device authorization codes for CLI applications, smart TVs, and IoT devices.\n * Shows a large, readable code and verification URL, with optional QR code.\n * Includes countdown timer and automatic polling for authorization status.\n *\n * @example\n * ```tsx\n * import { DeviceCodeDisplay } from '@bettercone/ui';\n *\n * export function CLIAuthFlow() {\n *   const { deviceCode, userCode, verificationUri, expiresIn } = await requestDeviceCode();\n *\n *   return (\n *     <DeviceCodeDisplay\n *       deviceCode={deviceCode}\n *       userCode={userCode}\n *       verificationUri={verificationUri}\n *       expiresIn={expiresIn}\n *     />\n *   );\n * }\n * ```\n *\n * @example\n * With QR code\n * ```tsx\n * <DeviceCodeDisplay\n *   deviceCode={deviceCode}\n *   userCode={userCode}\n *   verificationUri={verificationUri}\n *   verificationUriComplete={verificationUriComplete}\n *   expiresIn={1800}\n *   showQRCode={true}\n * />\n * ```\n */\nexport function DeviceCodeDisplay({\n    deviceCode,\n    userCode,\n    verificationUri,\n    verificationUriComplete,\n    expiresIn,\n    className,\n    showQRCode = false,\n    onExpired,\n    onSuccess,\n    onError,\n    pollingInterval = 5,\n    autoPoll = true,\n    localization: localizationProp,\n}: DeviceCodeDisplayProps) {\n    const context = React.useContext(AuthUIContext)\n    const localization = React.useMemo(\n        () => ({ ...context?.localization, ...localizationProp }),\n        [context?.localization, localizationProp]\n    )\n    const authClient = context?.authClient\n\n    const [timeRemaining, setTimeRemaining] = React.useState(expiresIn)\n    const [isPolling, setIsPolling] = React.useState(autoPoll)\n    const [isApproved, setIsApproved] = React.useState(false)\n    const [copiedUrl, setCopiedUrl] = React.useState(false)\n    const [copiedCode, setCopiedCode] = React.useState(false)\n    const [error, setError] = React.useState<string | null>(null)\n    const pollingIntervalRef = React.useRef<number | null>(null)\n    const countdownIntervalRef = React.useRef<number | null>(null)\n\n    // Format user code for display (add dash after 4 characters)\n    const formattedUserCode = userCode.length === 8\n        ? `${userCode.slice(0, 4)}-${userCode.slice(4)}`\n        : userCode\n\n    // Format time remaining as MM:SS\n    const formatTime = (seconds: number) => {\n        const mins = Math.floor(seconds / 60)\n        const secs = seconds % 60\n        return `${mins}:${secs.toString().padStart(2, \"0\")}`\n    }\n\n    // Countdown timer\n    React.useEffect(() => {\n        if (isApproved) return\n\n        countdownIntervalRef.current = setInterval(() => {\n            setTimeRemaining((prev) => {\n                if (prev <= 1) {\n                    if (onExpired) onExpired()\n                    setIsPolling(false)\n                    return 0\n                }\n                return prev - 1\n            })\n        }, 1000)\n\n        return () => {\n            if (countdownIntervalRef.current) {\n                clearInterval(countdownIntervalRef.current)\n            }\n        }\n    }, [isApproved, onExpired])\n\n    // Polling for authorization status\n    React.useEffect(() => {\n        if (!authClient?.device || !isPolling || isApproved || timeRemaining === 0) return\n\n        const poll = async () => {\n            if (!authClient.device) return // Type guard for nested function\n            \n            try {\n                const response = await authClient.device.token({\n                    grant_type: \"urn:ietf:params:oauth:grant-type:device_code\",\n                    device_code: deviceCode,\n                    client_id: verificationUri.split(\"/\")[2], // Extract client ID from URL (temporary)\n                })\n\n                if (response.data?.access_token) {\n                    setIsApproved(true)\n                    setIsPolling(false)\n                    if (onSuccess) onSuccess()\n                } else if (response.error) {\n                    switch (response.error.error) {\n                        case \"authorization_pending\":\n                            // Continue polling\n                            break\n                        case \"slow_down\":\n                            // Increase polling interval (handled by server)\n                            break\n                        case \"expired_token\":\n                            setError(localization.DEVICE_EXPIRED || \"Code expired\")\n                            setIsPolling(false)\n                            if (onError) onError(\"expired\")\n                            break\n                        case \"access_denied\":\n                            setError(\n                                localization.DEVICE_ACCESS_DENIED || \"Access denied\"\n                            )\n                            setIsPolling(false)\n                            if (onError) onError(\"denied\")\n                            break\n                        default:\n                            setError(response.error.error_description || \"Unknown error\")\n                            setIsPolling(false)\n                            if (onError) onError(response.error.error)\n                    }\n                }\n            } catch (err) {\n                // Continue polling on network errors\n                console.error(\"Polling error:\", err)\n            }\n        }\n\n        // Initial poll\n        poll()\n\n        // Set up polling interval\n        pollingIntervalRef.current = setInterval(poll, pollingInterval * 1000)\n\n        return () => {\n            if (pollingIntervalRef.current) {\n                clearInterval(pollingIntervalRef.current)\n            }\n        }\n    }, [\n        authClient,\n        deviceCode,\n        isPolling,\n        isApproved,\n        timeRemaining,\n        pollingInterval,\n        verificationUri,\n        onSuccess,\n        onError,\n        localization,\n    ])\n\n    const copyToClipboard = async (text: string, type: \"url\" | \"code\") => {\n        try {\n            await navigator.clipboard.writeText(text)\n            if (type === \"url\") {\n                setCopiedUrl(true)\n                setTimeout(() => setCopiedUrl(false), 2000)\n            } else {\n                setCopiedCode(true)\n                setTimeout(() => setCopiedCode(false), 2000)\n            }\n        } catch (err) {\n            console.error(\"Failed to copy:\", err)\n        }\n    }\n\n    return (\n        <Card className={cn(\"w-full max-w-md\", className)}>\n            <CardHeader className={cn(\"text-start\")}>\n                <CardTitle className={cn(\"text-lg md:text-xl\")}>\n                    {localization.DEVICE_DISPLAY_TITLE || \"Sign In on Your Computer\"}\n                </CardTitle>\n                <CardDescription className={cn(\"text-xs md:text-sm\")}>\n                    {localization.DEVICE_DISPLAY_DESCRIPTION ||\n                        \"Follow the steps below to complete authentication\"}\n                </CardDescription>\n            </CardHeader>\n            <CardContent className=\"space-y-6\">\n                {/* Step 1: Visit URL */}\n                <div className=\"space-y-3\">\n                    <p className=\"text-sm font-medium\">\n                        {localization.DEVICE_DISPLAY_URL_LABEL || \"1. Visit this URL\"}\n                    </p>\n                    <div className=\"bg-secondary rounded-lg p-4 flex items-center gap-2\">\n                        <code className=\"flex-1 text-sm font-mono text-center break-all\">\n                            {verificationUri}\n                        </code>\n                        <Button\n                            size=\"icon\"\n                            variant=\"ghost\"\n                            className=\"shrink-0\"\n                            onClick={() => copyToClipboard(verificationUri, \"url\")}\n                        >\n                            {copiedUrl ? (\n                                <CheckCheck className=\"h-4 w-4\" />\n                            ) : (\n                                <Copy className=\"h-4 w-4\" />\n                            )}\n                        </Button>\n                    </div>\n                </div>\n\n                {/* Step 2: Enter Code */}\n                <div className=\"space-y-3\">\n                    <p className=\"text-sm font-medium\">\n                        {localization.DEVICE_DISPLAY_CODE_LABEL || \"2. Enter this code\"}\n                    </p>\n                    <div className=\"bg-secondary rounded-lg p-4 flex items-center gap-2\">\n                        <p className=\"flex-1 text-4xl md:text-5xl font-mono font-bold tracking-[0.3em] select-all text-center\">\n                            {formattedUserCode}\n                        </p>\n                        <Button\n                            size=\"icon\"\n                            variant=\"ghost\"\n                            className=\"shrink-0\"\n                            onClick={() => copyToClipboard(userCode, \"code\")}\n                        >\n                            {copiedCode ? (\n                                <CheckCheck className=\"h-4 w-4\" />\n                            ) : (\n                                <Copy className=\"h-4 w-4\" />\n                            )}\n                        </Button>\n                    </div>\n                </div>\n\n                {/* QR Code (optional) */}\n                {showQRCode && verificationUriComplete && (\n                    <div className=\"flex flex-col items-center gap-3 pt-2\">\n                        <div className=\"relative w-full\">\n                            <div className=\"relative flex justify-center text-xs\">\n                                <span className=\"px-2 text-muted-foreground\">\n                                    {localization.DEVICE_OR_SCAN_QR || \"or scan QR code\"}\n                                </span>\n                            </div>\n                        </div>\n                        <div className=\"bg-secondary p-4 rounded-lg\">\n                            <div className=\"bg-white dark:bg-white p-2 rounded\">\n                                <QRCode\n                                    value={verificationUriComplete}\n                                    size={180}\n                                    level=\"H\"\n                                    fgColor=\"#000000\"\n                                    bgColor=\"#ffffff\"\n                                />\n                            </div>\n                        </div>\n                    </div>\n                )}\n\n                {/* Status */}\n                <div className=\"space-y-2 pt-2\">\n                    <div className=\"flex items-center justify-center gap-3 text-xs text-muted-foreground\">\n                        <div className=\"flex items-center gap-1.5\">\n                            <Clock className=\"h-4 w-4\" />\n                            <span>\n                                {localization.DEVICE_EXPIRES_IN || \"Expires in\"}{\" \"}\n                                <span\n                                    className={cn(\n                                        \"font-mono font-semibold\",\n                                        timeRemaining < 300 &&\n                                            \"text-orange-600 dark:text-orange-400\",\n                                        timeRemaining < 60 && \"text-destructive\"\n                                    )}\n                                >\n                                    {formatTime(timeRemaining)}\n                                </span>\n                            </span>\n                        </div>\n                        {isPolling && !isApproved && (\n                            <>\n                                <span>•</span>\n                                <div className=\"flex items-center gap-1.5\">\n                                    <Loader2 className=\"h-3.5 w-3.5 animate-spin\" />\n                                    <span>\n                                        {localization.DEVICE_POLLING_STATUS || \"Checking...\"}\n                                    </span>\n                                </div>\n                            </>\n                        )}\n                    </div>\n\n                    {/* Success Message */}\n                    {isApproved && (\n                        <Alert className=\"border-green-200 bg-green-50 text-green-900 dark:border-green-900 dark:bg-green-950 dark:text-green-100\">\n                            <CheckCheck className=\"h-4 w-4\" />\n                            <AlertDescription>\n                                {localization.DEVICE_APPROVED || \"Approved! Redirecting...\"}\n                            </AlertDescription>\n                        </Alert>\n                    )}\n\n                    {/* Error Message */}\n                    {error && (\n                        <Alert variant=\"destructive\">\n                            <AlertDescription>{error}</AlertDescription>\n                        </Alert>\n                    )}\n\n                    {/* Expired Message */}\n                    {timeRemaining === 0 && !isApproved && (\n                        <Alert variant=\"destructive\">\n                            <AlertDescription>\n                                {localization.DEVICE_EXPIRED ||\n                                    \"Code expired. Please try again.\"}\n                            </AlertDescription>\n                        </Alert>\n                    )}\n                </div>\n            </CardContent>\n        </Card>\n    )\n}\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst badgeVariants = cva(\n  \"inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden\",\n  {\n    variants: {\n      variant: {\n        default:\n          \"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90\",\n        secondary:\n          \"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90\",\n        destructive:\n          \"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n        outline:\n          \"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground\",\n      },\n    },\n    defaultVariants: {\n      variant: \"default\",\n    },\n  }\n)\n\nfunction Badge({\n  className,\n  variant,\n  asChild = false,\n  ...props\n}: React.ComponentProps<\"span\"> &\n  VariantProps<typeof badgeVariants> & { asChild?: boolean }) {\n  const Comp = asChild ? Slot : \"span\"\n\n  return (\n    <Comp\n      data-slot=\"badge\"\n      className={cn(badgeVariants({ variant }), className)}\n      {...props}\n    />\n  )\n}\n\nexport { Badge, badgeVariants }\n","/**\n * last-login-badge\n * Badge component to display the last authentication method used\n * Part of @bettercone/ui Authentication components\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { socialProviders } from \"@/lib/social-providers\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface LastLoginBadgeProps {\n    /**\n     * The authentication method that was last used\n     * If not provided, will attempt to read from authClient\n     */\n    method?: string\n\n    /**\n     * Custom CSS class for the badge\n     */\n    className?: string\n\n    /**\n     * Badge variant\n     * @default \"secondary\"\n     */\n    variant?: \"default\" | \"secondary\" | \"outline\" | \"destructive\"\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n\n    /**\n     * Show provider icon alongside text\n     * @default true\n     */\n    showIcon?: boolean\n\n    /**\n     * Custom text format\n     * Use {provider} as placeholder for the provider name\n     * @default \"Last used\"\n     */\n    text?: string\n}\n\n/**\n * LastLoginBadge Component\n *\n * Displays a badge indicating the last authentication method used by the user.\n * Integrates with Better Auth's Last Login Method plugin.\n *\n * @example\n * ```tsx\n * import { LastLoginBadge } from '@bettercone/ui';\n *\n * export function SignInPage() {\n *   return (\n *     <div>\n *       <Button>\n *         Sign in with Google\n *         <LastLoginBadge method=\"google\" />\n *       </Button>\n *     </div>\n *   );\n * }\n * ```\n *\n * @example\n * With custom text\n * ```tsx\n * <LastLoginBadge \n *   method=\"email\" \n *   text=\"Used before\"\n *   variant=\"outline\"\n * />\n * ```\n */\nexport function LastLoginBadge({\n    method: methodProp,\n    className,\n    variant = \"secondary\",\n    localization: localizationProp,\n    showIcon = true,\n    text = \"Last used\"\n}: LastLoginBadgeProps) {\n    const context = useContext(AuthUIContext)\n    const localization = {\n        ...context?.localization,\n        ...localizationProp\n    }\n\n    // Try to get method from authClient if not provided\n    let method = methodProp\n    if (!method && context?.authClient) {\n        try {\n            // Check if lastLoginMethod plugin is available\n            if (\"getLastUsedLoginMethod\" in context.authClient) {\n                method = (context.authClient as any).getLastUsedLoginMethod()\n            }\n        } catch (error) {\n            // Plugin not available, silently fail\n            console.warn(\n                \"LastLoginBadge: lastLoginMethod plugin not found in authClient\"\n            )\n        }\n    }\n\n    // Don't render if no method is available\n    if (!method) {\n        return null\n    }\n\n    // Find provider info for social/OAuth methods\n    const provider = socialProviders.find((p) => p.provider === method)\n\n    // Determine display name\n    let displayName: string\n    if (provider) {\n        displayName = provider.name\n    } else if (method === \"email\") {\n        displayName = \"Email\"\n    } else if (method === \"passkey\") {\n        displayName = \"Passkey\"\n    } else if (method === \"magic-link\") {\n        displayName = \"Magic Link\"\n    } else if (method === \"phone\") {\n        displayName = \"Phone\"\n    } else if (method === \"anonymous\") {\n        displayName = \"Guest\"\n    } else if (method === \"siwe\") {\n        displayName = \"Ethereum\"\n    } else {\n        // Capitalize first letter for unknown methods\n        displayName = method.charAt(0).toUpperCase() + method.slice(1)\n    }\n\n    const ProviderIcon = provider?.icon\n\n    return (\n        <Badge variant={variant} className={cn(\"ml-2 gap-1\", className)}>\n            {showIcon && ProviderIcon && (\n                <ProviderIcon className=\"h-3 w-3\" />\n            )}\n            {text}\n        </Badge>\n    )\n}\n","/**\n * one-tap\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { useContext, useEffect, useMemo, useRef } from \"react\"\n\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\n\ninterface OneTapProps {\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n}\n\nexport function OneTap({ localization, redirectTo }: OneTapProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n    const oneTapFetched = useRef(false)\n\n    localization = useMemo(\n        () => ({ ...contextLocalization, ...localization }),\n        [contextLocalization, localization]\n    )\n\n    const { onSuccess } = useOnSuccessTransition({ redirectTo })\n\n    useEffect(() => {\n        if (oneTapFetched.current) return\n        oneTapFetched.current = true\n\n        try {\n            authClient.oneTap({\n                fetchOptions: {\n                    throw: true,\n                    onSuccess\n                }\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }, [authClient, localization, onSuccess, toast])\n\n    return null\n}\n","/**\n * sign-out\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect, useRef } from \"react\"\n\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\n\nexport function SignOut() {\n    const signingOut = useRef(false)\n\n    const { authClient, basePath, viewPaths } = useContext(AuthUIContext)\n    const { onSuccess } = useOnSuccessTransition({\n        redirectTo: `${basePath}/${viewPaths.SIGN_IN}`\n    })\n\n    useEffect(() => {\n        if (signingOut.current) return\n        signingOut.current = true\n\n        authClient.signOut().finally(onSuccess)\n    }, [authClient, onSuccess])\n\n    return <Loader2 className=\"animate-spin\" />\n}\n","/**\n * label\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Label({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  return (\n    <LabelPrimitive.Root\n      data-slot=\"label\"\n      className={cn(\n        \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Label }\n","/**\n * form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n  Controller,\n  FormProvider,\n  useFormContext,\n  useFormState,\n  type ControllerProps,\n  type FieldPath,\n  type FieldValues,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n  name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n  {} as FormFieldContextValue\n)\n\nconst FormField = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n  ...props\n}: ControllerProps<TFieldValues, TName>) => {\n  return (\n    <FormFieldContext.Provider value={{ name: props.name }}>\n      <Controller {...props} />\n    </FormFieldContext.Provider>\n  )\n}\n\nconst useFormField = () => {\n  const fieldContext = React.useContext(FormFieldContext)\n  const itemContext = React.useContext(FormItemContext)\n  const { getFieldState } = useFormContext()\n  const formState = useFormState({ name: fieldContext.name })\n  const fieldState = getFieldState(fieldContext.name, formState)\n\n  if (!fieldContext) {\n    throw new Error(\"useFormField should be used within <FormField>\")\n  }\n\n  const { id } = itemContext\n\n  return {\n    id,\n    name: fieldContext.name,\n    formItemId: `${id}-form-item`,\n    formDescriptionId: `${id}-form-item-description`,\n    formMessageId: `${id}-form-item-message`,\n    ...fieldState,\n  }\n}\n\ntype FormItemContextValue = {\n  id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n  {} as FormItemContextValue\n)\n\nfunction FormItem({ className, ...props }: React.ComponentProps<\"div\">) {\n  const id = React.useId()\n\n  return (\n    <FormItemContext.Provider value={{ id }}>\n      <div\n        data-slot=\"form-item\"\n        className={cn(\"grid gap-2\", className)}\n        {...props}\n      />\n    </FormItemContext.Provider>\n  )\n}\n\nfunction FormLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n  const { error, formItemId } = useFormField()\n\n  return (\n    <Label\n      data-slot=\"form-label\"\n      data-error={!!error}\n      className={cn(\"data-[error=true]:text-destructive\", className)}\n      htmlFor={formItemId}\n      {...props}\n    />\n  )\n}\n\nfunction FormControl({ ...props }: React.ComponentProps<typeof Slot>) {\n  const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n  return (\n    <Slot\n      data-slot=\"form-control\"\n      id={formItemId}\n      aria-describedby={\n        !error\n          ? `${formDescriptionId}`\n          : `${formDescriptionId} ${formMessageId}`\n      }\n      aria-invalid={!!error}\n      {...props}\n    />\n  )\n}\n\nfunction FormDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n  const { formDescriptionId } = useFormField()\n\n  return (\n    <p\n      data-slot=\"form-description\"\n      id={formDescriptionId}\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction FormMessage({ className, ...props }: React.ComponentProps<\"p\">) {\n  const { error, formMessageId } = useFormField()\n  const body = error ? String(error?.message ?? \"\") : props.children\n\n  if (!body) {\n    return null\n  }\n\n  return (\n    <p\n      data-slot=\"form-message\"\n      id={formMessageId}\n      className={cn(\"text-destructive text-sm\", className)}\n      {...props}\n    >\n      {body}\n    </p>\n  )\n}\n\nexport {\n  useFormField,\n  Form,\n  FormItem,\n  FormLabel,\n  FormControl,\n  FormDescription,\n  FormMessage,\n  FormField,\n}\n","/**\n * input\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n  return (\n    <input\n      type={type}\n      data-slot=\"input\"\n      className={cn(\n        \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n        \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { MinusIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction InputOTP({\n  className,\n  containerClassName,\n  ...props\n}: React.ComponentProps<typeof OTPInput> & {\n  containerClassName?: string\n}) {\n  return (\n    <OTPInput\n      data-slot=\"input-otp\"\n      containerClassName={cn(\n        \"flex items-center gap-2 has-disabled:opacity-50\",\n        containerClassName\n      )}\n      className={cn(\"disabled:cursor-not-allowed\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"input-otp-group\"\n      className={cn(\"flex items-center\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction InputOTPSlot({\n  index,\n  className,\n  ...props\n}: React.ComponentProps<\"div\"> & {\n  index: number\n}) {\n  const inputOTPContext = React.useContext(OTPInputContext)\n  const { char, hasFakeCaret, isActive } = inputOTPContext?.slots[index] ?? {}\n\n  return (\n    <div\n      data-slot=\"input-otp-slot\"\n      data-active={isActive}\n      className={cn(\n        \"data-[active=true]:border-ring data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:ring-destructive/20 dark:data-[active=true]:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[active=true]:aria-invalid:border-destructive dark:bg-input/30 border-input relative flex h-9 w-9 items-center justify-center border-y border-r text-sm shadow-xs transition-all outline-none first:rounded-l-md first:border-l last:rounded-r-md data-[active=true]:z-10 data-[active=true]:ring-[3px]\",\n        className\n      )}\n      {...props}\n    >\n      {char}\n      {hasFakeCaret && (\n        <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n          <div className=\"animate-caret-blink bg-foreground h-4 w-px duration-1000\" />\n        </div>\n      )}\n    </div>\n  )\n}\n\nfunction InputOTPSeparator({ ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div data-slot=\"input-otp-separator\" role=\"separator\" {...props}>\n      <MinusIcon />\n    </div>\n  )\n}\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","/**\n * email-otp-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport { InputOTP, InputOTPGroup } from \"@/components/ui/input-otp\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\n\nexport interface EmailOTPFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    callbackURL?: string\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    otpSeparators?: 0 | 1 | 2\n    redirectTo?: string\n    setIsSubmitting?: (value: boolean) => void\n}\n\nexport function EmailOTPForm(props: EmailOTPFormProps) {\n    const [email, setEmail] = useState<string | undefined>()\n\n    if (!email) {\n        return <EmailForm {...props} setEmail={setEmail} />\n    }\n\n    return <OTPForm {...props} email={email} />\n}\n\nfunction EmailForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    setIsSubmitting,\n    setEmail\n}: EmailOTPFormProps & {\n    setEmail: (email: string) => void\n}) {\n    const isHydrated = useIsHydrated()\n\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const formSchema = z.object({\n        email: z.string().email({\n            message: `${localization.EMAIL} ${localization.IS_INVALID}`\n        })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            email: \"\"\n        }\n    })\n\n    isSubmitting = isSubmitting || form.formState.isSubmitting\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting)\n    }, [form.formState.isSubmitting, setIsSubmitting])\n\n    async function sendEmailOTP({ email }: z.infer<typeof formSchema>) {\n        try {\n            await authClient.emailOtp.sendVerificationOtp({\n                email,\n                type: \"sign-in\",\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.EMAIL_OTP_VERIFICATION_SENT || \"Verification email sent\"\n            })\n\n            setEmail(email)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(sendEmailOTP)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"email\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.EMAIL}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    className={classNames?.input}\n                                    type=\"email\"\n                                    placeholder={localization.EMAIL_PLACEHOLDER}\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.EMAIL_OTP_SEND_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n\nexport function OTPForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    otpSeparators = 0,\n    redirectTo,\n    setIsSubmitting,\n    email\n}: EmailOTPFormProps & {\n    email: string\n}) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    const formSchema = z.object({\n        code: z\n            .string()\n            .min(1, {\n                message: `${localization.EMAIL_OTP} ${localization.IS_REQUIRED}`\n            })\n            .min(6, {\n                message: `${localization.EMAIL_OTP} ${localization.IS_INVALID}`\n            })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            code: \"\"\n        }\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    async function verifyCode({ code }: z.infer<typeof formSchema>) {\n        try {\n            await authClient.signIn.emailOtp({\n                email,\n                otp: code,\n                fetchOptions: { throw: true }\n            })\n\n            await onSuccess()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            form.reset()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(verifyCode)}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"code\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.EMAIL_OTP}\n                            </FormLabel>\n\n                            <FormControl>\n                                <InputOTP\n                                    {...field}\n                                    maxLength={6}\n                                    onChange={(value) => {\n                                        field.onChange(value)\n\n                                        if (value.length === 6) {\n                                            form.handleSubmit(verifyCode)()\n                                        }\n                                    }}\n                                    containerClassName={\n                                        classNames?.otpInputContainer\n                                    }\n                                    className={classNames?.otpInput}\n                                    disabled={isSubmitting}\n                                >\n                                    <InputOTPGroup />\n                                </InputOTP>\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <div className=\"grid gap-4\">\n                    <Button\n                        type=\"submit\"\n                        disabled={isSubmitting}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                    >\n                        {isSubmitting && <Loader2 className=\"animate-spin\" />}\n                        {localization.EMAIL_OTP_VERIFY_ACTION}\n                    </Button>\n                </div>\n            </form>\n        </Form>\n    )\n}\n","/**\n * use-captcha-stub\n * Stub implementation for disabled captcha functionality\n * Returns empty implementations to satisfy type requirements\n */\n\nexport function useCaptchaStub() {\n    const getCaptchaHeaders = async (_action: string): Promise<Record<string, string> | undefined> => {\n        return undefined\n    }\n\n    const resetCaptcha = (): void => {\n        // No-op for disabled captcha\n    }\n\n    return {\n        getCaptchaHeaders,\n        resetCaptcha\n    }\n}\n","/**\n * forgot-password-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { BetterFetchOption } from \"better-auth/react\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n// import { useCaptcha } from \"../../../hooks/use-captcha\" // Optional - captcha disabled\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\n// import { Captcha } from \"../../captcha/captcha\" // Optional - captcha disabled\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface ForgotPasswordFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    setIsSubmitting?: (value: boolean) => void\n}\n\nexport function ForgotPasswordForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    setIsSubmitting\n}: ForgotPasswordFormProps) {\n    const isHydrated = useIsHydrated()\n    // const { captchaRef } = useCaptcha() // Optional - captcha disabled\n\n    const {\n        authClient,\n        basePath,\n        baseURL,\n        localization: contextLocalization,\n        navigate,\n        toast,\n        viewPaths\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    // Captcha feature disabled - using stub implementation\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    const formSchema = z.object({\n        email: z\n            .string()\n            .email({\n                message: `${localization.EMAIL} ${localization.IS_INVALID}`\n            })\n            .min(1, {\n                message: `${localization.EMAIL} ${localization.IS_REQUIRED}`\n            })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            email: \"\"\n        }\n    })\n\n    isSubmitting = isSubmitting || form.formState.isSubmitting\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting)\n    }, [form.formState.isSubmitting, setIsSubmitting])\n\n    async function forgotPassword({ email }: z.infer<typeof formSchema>) {\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/forget-password\")\n            }\n\n            await authClient.requestPasswordReset({\n                email,\n                redirectTo: `${baseURL}${basePath}/${viewPaths.RESET_PASSWORD}`,\n                fetchOptions\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.FORGOT_PASSWORD_EMAIL || \"If the email exists, a password reset link has been sent.\"\n            })\n\n            navigate(\n                `${basePath}/${viewPaths.SIGN_IN}${window.location.search}`\n            )\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n            resetCaptcha()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(forgotPassword)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"email\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.EMAIL}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    className={classNames?.input}\n                                    type=\"email\"\n                                    placeholder={localization.EMAIL_PLACEHOLDER}\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {/* <Captcha ref={captchaRef} /> */}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.FORGOT_PASSWORD_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * magic-link-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { BetterFetchOption } from \"better-auth/react\"\nimport { Loader2 } from \"lucide-react\"\nimport { useCallback, useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\n// import { useCaptcha } from \"../../../hooks/use-captcha\" // Optional - captcha disabled\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError, getSearchParam } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\n// import { Captcha } from \"../../captcha/captcha\" // Optional - captcha disabled\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface MagicLinkFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    callbackURL?: string\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (value: boolean) => void\n}\n\nexport function MagicLinkForm({\n    className,\n    classNames,\n    callbackURL: callbackURLProp,\n    isSubmitting,\n    localization,\n    redirectTo: redirectToProp,\n    setIsSubmitting\n}: MagicLinkFormProps) {\n    const isHydrated = useIsHydrated()\n    // const { captchaRef } = useCaptcha() // Optional - captcha disabled\n\n    const {\n        authClient,\n        basePath,\n        baseURL,\n        persistClient,\n        localization: contextLocalization,\n        redirectTo: contextRedirectTo,\n        viewPaths,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    // Captcha feature disabled - using stub implementation\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    const getRedirectTo = useCallback(\n        () =>\n            redirectToProp || getSearchParam(\"redirectTo\") || contextRedirectTo,\n        [redirectToProp, contextRedirectTo]\n    )\n\n    const getCallbackURL = useCallback(\n        () =>\n            `${baseURL}${\n                callbackURLProp ||\n                (persistClient\n                    ? `${basePath}/${viewPaths.CALLBACK}?redirectTo=${encodeURIComponent(getRedirectTo())}`\n                    : getRedirectTo())\n            }`,\n        [\n            callbackURLProp,\n            persistClient,\n            basePath,\n            viewPaths,\n            baseURL,\n            getRedirectTo\n        ]\n    )\n\n    const formSchema = z.object({\n        email: z.string().email({\n            message: `${localization.EMAIL} ${localization.IS_INVALID}`\n        })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            email: \"\"\n        }\n    })\n\n    isSubmitting = isSubmitting || form.formState.isSubmitting\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting)\n    }, [form.formState.isSubmitting, setIsSubmitting])\n\n    async function sendMagicLink({ email }: z.infer<typeof formSchema>) {\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/sign-in/magic-link\")\n            }\n\n            await authClient.signIn.magicLink({\n                email,\n                callbackURL: getCallbackURL(),\n                fetchOptions\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.MAGIC_LINK_EMAIL || \"If the email exists, a magic link has been sent.\"\n            })\n\n            form.reset()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n            resetCaptcha()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(sendMagicLink)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"email\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.EMAIL}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    className={classNames?.input}\n                                    type=\"email\"\n                                    placeholder={localization.EMAIL_PLACEHOLDER}\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {/* <Captcha ref={captchaRef} /> */}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.MAGIC_LINK_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * signed-in\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { type ReactNode, useContext } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\n\n/**\n * Conditionally renders content for authenticated users only\n *\n * Renders its children only when a user is authenticated with a valid session.\n * If no session exists, nothing is rendered. Useful for displaying protected\n * content or UI elements that should only be visible to signed-in users.\n */\nexport function SignedIn({ children }: { children: ReactNode }) {\n    const {\n        hooks: { useSession }\n    } = useContext(AuthUIContext)\n    const { data } = useSession()\n\n    return data ? children : null\n}\n","/**\n * signed-out\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { type ReactNode, useContext } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\n\n/**\n * Conditionally renders content for unauthenticated users only\n *\n * Renders its children only when no user is authenticated and the authentication\n * state is not pending. If a session exists or is being loaded, nothing is rendered.\n * Useful for displaying sign-in prompts or content exclusive to guests.\n */\nexport function SignedOut({ children }: { children: ReactNode }) {\n    const {\n        hooks: { useSession }\n    } = useContext(AuthUIContext)\n    const { data, isPending } = useSession()\n\n    return !data && !isPending ? children : null\n}\n","/**\n * auth-loading\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { type ReactNode, useContext } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\n\n/**\n * Conditionally renders content during authentication loading state\n *\n * Renders its children only when the authentication state is being determined\n * (during the loading/pending phase). Once the authentication state is resolved,\n * nothing is rendered. Useful for displaying loading indicators or temporary\n * content while waiting for the authentication check to complete.\n */\nexport function AuthLoading({ children }: { children: ReactNode }) {\n    const {\n        hooks: { useSession }\n    } = useContext(AuthUIContext)\n    const { isPending } = useSession()\n\n    return isPending ? children : null\n}\n","/**\n * redirect-to-sign-in\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { ReactNode } from \"react\"\nimport { useAuthenticate } from \"@/hooks/use-authenticate\"\n\n/**\n * Redirects the user to the sign-in page\n *\n * Renders nothing and automatically redirects the current user to the authentication\n * sign-in page. Useful for protecting routes that require authentication or\n * redirecting users to sign in from various parts of the application.\n */\nexport function RedirectToSignIn(): ReactNode {\n    useAuthenticate({ authView: \"SIGN_IN\" })\n    return null\n}\n","/**\n * redirect-to-sign-up\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { ReactNode } from \"react\"\nimport { useAuthenticate } from \"@/hooks/use-authenticate\"\n\n/**\n * Redirects the user to the sign-up page\n *\n * Renders nothing and automatically redirects the current user to the authentication\n * sign-up page. Useful for directing new users to create an account or\n * for redirecting from marketing pages to the registration flow.\n */\nexport function RedirectToSignUp(): ReactNode {\n    useAuthenticate({ authView: \"SIGN_UP\" })\n    return null\n}\n","/**\n * password-input\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { EyeIcon, EyeOffIcon } from \"lucide-react\"\nimport { type ComponentProps, useState } from \"react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { Input } from \"@/components/ui/input\"\n\nexport function PasswordInput({\n    className,\n    enableToggle,\n    onChange,\n    ...props\n}: ComponentProps<typeof Input> & { enableToggle?: boolean }) {\n    const [disabled, setDisabled] = useState(true)\n    const [isVisible, setIsVisible] = useState(false)\n\n    return (\n        <div className=\"relative\">\n            <Input\n                className={cn(enableToggle && \"pr-10\", className)}\n                {...props}\n                type={isVisible && enableToggle ? \"text\" : \"password\"}\n                onChange={(event) => {\n                    setDisabled(!event.target.value)\n                    onChange?.(event)\n                }}\n            />\n\n            {enableToggle && (\n                <>\n                    <Button\n                        className=\"!bg-transparent absolute top-0 right-0\"\n                        disabled={disabled}\n                        size=\"icon\"\n                        type=\"button\"\n                        variant=\"ghost\"\n                        onClick={() => setIsVisible(!isVisible)}\n                    >\n                        {isVisible ? <EyeIcon /> : <EyeOffIcon />}\n                    </Button>\n\n                    <style>{`\n                        .hide-password-toggle::-ms-reveal,\n                        .hide-password-toggle::-ms-clear {\n                            visibility: hidden;\n                            pointer-events: none;\n                            display: none;\n                        }\n                    `}</style>\n                </>\n            )}\n        </div>\n    )\n}\n","/**\n * form-error\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { AlertCircle } from \"lucide-react\"\nimport { useFormState } from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport type { AuthFormClassNames } from \"@/components/auth\"\nimport { Alert, AlertDescription, AlertTitle } from \"@/components/ui/alert\"\n\nexport interface FormErrorProps {\n    title?: string\n    classNames?: AuthFormClassNames\n}\n\nexport function FormError({ title, classNames }: FormErrorProps) {\n    const { errors } = useFormState()\n\n    if (!errors.root?.message) return null\n\n    return (\n        <Alert variant=\"destructive\" className={cn(classNames?.error)}>\n            <AlertCircle className=\"self-center\" />\n            <AlertTitle>{title || \"Error\"}</AlertTitle>\n            <AlertDescription>{errors.root.message}</AlertDescription>\n        </Alert>\n    )\n}\n","/**\n * checkbox\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Checkbox({\n  className,\n  ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n  return (\n    <CheckboxPrimitive.Root\n      data-slot=\"checkbox\"\n      className={cn(\n        \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <CheckboxPrimitive.Indicator\n        data-slot=\"checkbox-indicator\"\n        className=\"flex items-center justify-center text-current transition-none\"\n      >\n        <CheckIcon className=\"size-3.5\" />\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  )\n}\n\nexport { Checkbox }\n","/**\n * phone-sign-in-form\n * Sign in with phone number and password\n * Uses Better Auth phoneNumber plugin\n */\n\n\"use client\"\n\nimport type { BetterFetchOption } from \"@better-fetch/fetch\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport {\n    cn,\n    getLocalizedError,\n    getPasswordSchema\n} from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { PasswordValidation } from \"@/types/password-validation\"\nimport { PasswordInput } from \"@/components/utility\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface PhoneSignInFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (isSubmitting: boolean) => void\n    passwordValidation?: PasswordValidation\n}\n\nexport function PhoneSignInForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting,\n    passwordValidation\n}: PhoneSignInFormProps) {\n    const isHydrated = useIsHydrated()\n\n    const {\n        authClient,\n        credentials,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const rememberMeEnabled = credentials?.rememberMe\n    const contextPasswordValidation = credentials?.passwordValidation\n\n    localization = { ...contextLocalization, ...localization }\n    passwordValidation = { ...contextPasswordValidation, ...passwordValidation }\n\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    const formSchema = z.object({\n        phoneNumber: z\n            .string()\n            .min(1, {\n                message: \"Phone number is required\"\n            })\n            .regex(/^\\+[1-9]\\d{1,14}$/, {\n                message: \"Invalid phone number format. Use international format (e.g., +1234567890)\"\n            }),\n        password: getPasswordSchema(passwordValidation, localization),\n        rememberMe: z.boolean().optional()\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            phoneNumber: \"\",\n            password: \"\",\n            rememberMe: !rememberMeEnabled\n        }\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    async function signIn({\n        phoneNumber,\n        password,\n        rememberMe\n    }: z.infer<typeof formSchema>) {\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/sign-in/phone-number\")\n            }\n\n            await authClient.signIn.phoneNumber({\n                phoneNumber,\n                password,\n                rememberMe,\n                fetchOptions\n            })\n\n            await onSuccess()\n        } catch (error) {\n            form.resetField(\"password\")\n            resetCaptcha()\n\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(signIn)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"phoneNumber\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                Phone Number\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    autoComplete=\"tel\"\n                                    className={classNames?.input}\n                                    type=\"tel\"\n                                    placeholder=\"+1234567890\"\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <FormField\n                    control={form.control}\n                    name=\"password\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.PASSWORD}\n                            </FormLabel>\n\n                            <FormControl>\n                                <PasswordInput\n                                    autoComplete=\"current-password\"\n                                    className={classNames?.input}\n                                    placeholder={\n                                        localization.PASSWORD_PLACEHOLDER\n                                    }\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {rememberMeEnabled && (\n                    <FormField\n                        control={form.control}\n                        name=\"rememberMe\"\n                        render={({ field }) => (\n                            <FormItem className=\"flex\">\n                                <FormControl>\n                                    <Checkbox\n                                        checked={field.value}\n                                        onCheckedChange={field.onChange}\n                                        disabled={isSubmitting}\n                                    />\n                                </FormControl>\n\n                                <FormLabel>\n                                    {localization.REMEMBER_ME}\n                                </FormLabel>\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.SIGN_IN_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * phone-sign-up-form\n * Sign up with phone number and OTP verification\n * Uses Better Auth phoneNumber plugin\n */\n\n\"use client\"\n\nimport type { BetterFetchOption } from \"@better-fetch/fetch\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport {\n    cn,\n    getLocalizedError\n} from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormDescription,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface PhoneSignUpFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (isSubmitting: boolean) => void\n}\n\nexport function PhoneSignUpForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting\n}: PhoneSignUpFormProps) {\n    const isHydrated = useIsHydrated()\n    const [step, setStep] = useState<\"phone\" | \"otp\">(\"phone\")\n    const [phoneNumber, setPhoneNumber] = useState(\"\")\n    const [resendTimer, setResendTimer] = useState(0)\n\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    // Phone number form schema\n    const phoneFormSchema = z.object({\n        phoneNumber: z\n            .string()\n            .min(1, {\n                message: \"Phone number is required\"\n            })\n            .regex(/^\\+[1-9]\\d{1,14}$/, {\n                message: \"Invalid phone number format. Use international format (e.g., +1234567890)\"\n            })\n    })\n\n    // OTP verification form schema\n    const otpFormSchema = z.object({\n        code: z\n            .string()\n            .length(6, {\n                message: \"OTP code must be 6 digits\"\n            })\n            .regex(/^\\d{6}$/, {\n                message: \"OTP code must contain only numbers\"\n            })\n    })\n\n    const phoneForm = useForm({\n        resolver: zodResolver(phoneFormSchema),\n        defaultValues: {\n            phoneNumber: \"\"\n        }\n    })\n\n    const otpForm = useForm({\n        resolver: zodResolver(otpFormSchema),\n        defaultValues: {\n            code: \"\"\n        }\n    })\n\n    isSubmitting =\n        isSubmitting ||\n        phoneForm.formState.isSubmitting ||\n        otpForm.formState.isSubmitting ||\n        transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(\n            phoneForm.formState.isSubmitting ||\n                otpForm.formState.isSubmitting ||\n                transitionPending\n        )\n    }, [\n        phoneForm.formState.isSubmitting,\n        otpForm.formState.isSubmitting,\n        transitionPending,\n        setIsSubmitting\n    ])\n\n    // Resend timer countdown\n    useEffect(() => {\n        if (resendTimer > 0) {\n            const timer = setTimeout(() => setResendTimer(resendTimer - 1), 1000)\n            return () => clearTimeout(timer)\n        }\n    }, [resendTimer])\n\n    async function sendOtp({ phoneNumber }: z.infer<typeof phoneFormSchema>) {\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/phone-number/send-otp\")\n            }\n\n            await authClient.phoneNumber.sendOtp({\n                phoneNumber,\n                fetchOptions\n            })\n\n            setPhoneNumber(phoneNumber)\n            setStep(\"otp\")\n            setResendTimer(60)\n\n            toast({\n                variant: \"success\",\n                message: \"OTP code sent to your phone\"\n            })\n        } catch (error) {\n            resetCaptcha()\n\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    async function verifyOtp({ code }: z.infer<typeof otpFormSchema>) {\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/phone-number/verify\")\n            }\n\n            await authClient.phoneNumber.verify({\n                phoneNumber,\n                code,\n                disableSession: false,\n                fetchOptions\n            })\n\n            await onSuccess()\n        } catch (error: any) {\n            otpForm.resetField(\"code\")\n            resetCaptcha()\n\n            // Handle rate limiting\n            if (error?.status === 403) {\n                toast({\n                    variant: \"error\",\n                    message: \"Too many attempts. Please request a new code.\"\n                })\n                setStep(\"phone\")\n                setPhoneNumber(\"\")\n                phoneForm.reset()\n                otpForm.reset()\n            } else {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n            }\n        }\n    }\n\n    async function resendOtp() {\n        if (resendTimer > 0) return\n\n        try {\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/phone-number/send-otp\")\n            }\n\n            await authClient.phoneNumber.sendOtp({\n                phoneNumber,\n                fetchOptions\n            })\n\n            setResendTimer(60)\n            otpForm.reset()\n\n            toast({\n                variant: \"success\",\n                message: \"New OTP code sent\"\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    if (step === \"phone\") {\n        return (\n            <Form {...phoneForm}>\n                <form\n                    onSubmit={phoneForm.handleSubmit(sendOtp)}\n                    noValidate={isHydrated}\n                    className={cn(\n                        \"grid w-full gap-6\",\n                        className,\n                        classNames?.base\n                    )}\n                >\n                    <FormField\n                        control={phoneForm.control}\n                        name=\"phoneNumber\"\n                        render={({ field }) => (\n                            <FormItem>\n                                <FormLabel className={classNames?.label}>\n                                    Phone Number\n                                </FormLabel>\n\n                                <FormControl>\n                                    <Input\n                                        autoComplete=\"tel\"\n                                        className={classNames?.input}\n                                        type=\"tel\"\n                                        placeholder=\"+1234567890\"\n                                        disabled={isSubmitting}\n                                        {...field}\n                                    />\n                                </FormControl>\n\n                                <FormDescription>\n                                    Enter your phone number in international\n                                    format\n                                </FormDescription>\n\n                                <FormMessage className={classNames?.error} />\n                            </FormItem>\n                        )}\n                    />\n\n                    <Button\n                        type=\"submit\"\n                        disabled={isSubmitting}\n                        className={cn(\n                            \"w-full\",\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                    >\n                        {isSubmitting ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            \"Send OTP Code\"\n                        )}\n                    </Button>\n                </form>\n            </Form>\n        )\n    }\n\n    return (\n        <Form {...otpForm}>\n            <form\n                onSubmit={otpForm.handleSubmit(verifyOtp)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <div className=\"text-sm text-muted-foreground\">\n                    Enter the 6-digit code sent to{\" \"}\n                    <span className=\"font-medium text-foreground\">\n                        {phoneNumber}\n                    </span>\n                </div>\n\n                <FormField\n                    control={otpForm.control}\n                    name=\"code\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                OTP Code\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    autoComplete=\"one-time-code\"\n                                    className={classNames?.input}\n                                    type=\"text\"\n                                    inputMode=\"numeric\"\n                                    pattern=\"\\d{6}\"\n                                    maxLength={6}\n                                    placeholder=\"123456\"\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <div className=\"flex flex-col gap-2\">\n                    <Button\n                        type=\"submit\"\n                        disabled={isSubmitting}\n                        className={cn(\n                            \"w-full\",\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                    >\n                        {isSubmitting ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            \"Verify & Sign Up\"\n                        )}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"ghost\"\n                        onClick={resendOtp}\n                        disabled={isSubmitting || resendTimer > 0}\n                        className=\"w-full\"\n                    >\n                        {resendTimer > 0\n                            ? `Resend code in ${resendTimer}s`\n                            : \"Resend code\"}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"ghost\"\n                        onClick={() => {\n                            setStep(\"phone\")\n                            setPhoneNumber(\"\")\n                            otpForm.reset()\n                        }}\n                        disabled={isSubmitting}\n                        className=\"w-full\"\n                    >\n                        Change phone number\n                    </Button>\n                </div>\n            </form>\n        </Form>\n    )\n}\n","/**\n * recover-account-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface RecoverAccountFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (value: boolean) => void\n}\n\nexport function RecoverAccountForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting\n}: RecoverAccountFormProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    const formSchema = z.object({\n        code: z.string().min(1, { message: localization.BACKUP_CODE_REQUIRED })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            code: \"\"\n        }\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    async function verifyBackupCode({ code }: z.infer<typeof formSchema>) {\n        try {\n            await authClient.twoFactor.verifyBackupCode({\n                code,\n                fetchOptions: { throw: true }\n            })\n\n            await onSuccess()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            form.reset()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(verifyBackupCode)}\n                className={cn(\"grid gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"code\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.BACKUP_CODE}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    placeholder={\n                                        localization.BACKUP_CODE_PLACEHOLDER\n                                    }\n                                    autoComplete=\"off\"\n                                    className={classNames?.input}\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.RECOVER_ACCOUNT_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * reset-password-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect, useRef } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError, getPasswordSchema } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { PasswordValidation } from \"@/types/password-validation\"\nimport { PasswordInput } from \"@/components/utility\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface ResetPasswordFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    localization: Partial<AuthLocalization>\n    passwordValidation?: PasswordValidation\n}\n\nexport function ResetPasswordForm({\n    className,\n    classNames,\n    localization,\n    passwordValidation\n}: ResetPasswordFormProps) {\n    const tokenChecked = useRef(false)\n\n    const {\n        authClient,\n        basePath,\n        credentials,\n        localization: contextLocalization,\n        viewPaths,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    const confirmPasswordEnabled = credentials?.confirmPassword\n    const contextPasswordValidation = credentials?.passwordValidation\n\n    localization = { ...contextLocalization, ...localization }\n    passwordValidation = { ...contextPasswordValidation, ...passwordValidation }\n\n    const formSchema = z\n        .object({\n            newPassword: getPasswordSchema(passwordValidation, {\n                PASSWORD_REQUIRED: localization.NEW_PASSWORD_REQUIRED,\n                PASSWORD_TOO_SHORT: localization.PASSWORD_TOO_SHORT,\n                PASSWORD_TOO_LONG: localization.PASSWORD_TOO_LONG,\n                INVALID_PASSWORD: localization.INVALID_PASSWORD\n            }),\n            confirmPassword: confirmPasswordEnabled\n                ? getPasswordSchema(passwordValidation, {\n                      PASSWORD_REQUIRED: localization.CONFIRM_PASSWORD_REQUIRED,\n                      PASSWORD_TOO_SHORT: localization.PASSWORD_TOO_SHORT,\n                      PASSWORD_TOO_LONG: localization.PASSWORD_TOO_LONG,\n                      INVALID_PASSWORD: localization.INVALID_PASSWORD\n                  })\n                : z.string().optional()\n        })\n        .refine(\n            (data) =>\n                !confirmPasswordEnabled ||\n                data.newPassword === data.confirmPassword,\n            {\n                message: localization.PASSWORDS_DO_NOT_MATCH,\n                path: [\"confirmPassword\"]\n            }\n        )\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            newPassword: \"\",\n            confirmPassword: \"\"\n        }\n    })\n\n    const isSubmitting = form.formState.isSubmitting\n\n    useEffect(() => {\n        if (tokenChecked.current) return\n        tokenChecked.current = true\n\n        const searchParams = new URLSearchParams(window.location.search)\n        const token = searchParams.get(\"token\")\n\n        if (!token || token === \"INVALID_TOKEN\") {\n            navigate(\n                `${basePath}/${viewPaths.SIGN_IN}${window.location.search}`\n            )\n            toast({ variant: \"error\", message: localization.INVALID_TOKEN || \"Invalid token\" })\n        }\n    }, [basePath, navigate, toast, viewPaths, localization])\n\n    async function resetPassword({ newPassword }: z.infer<typeof formSchema>) {\n        try {\n            const searchParams = new URLSearchParams(window.location.search)\n            const token = searchParams.get(\"token\") as string\n\n            await authClient.resetPassword({\n                newPassword,\n                token,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.RESET_PASSWORD_SUCCESS || \"Password has been reset successfully.\"\n            })\n\n            navigate(\n                `${basePath}/${viewPaths.SIGN_IN}${window.location.search}`\n            )\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            form.reset()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(resetPassword)}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"newPassword\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.NEW_PASSWORD}\n                            </FormLabel>\n\n                            <FormControl>\n                                <PasswordInput\n                                    autoComplete=\"new-password\"\n                                    className={classNames?.input}\n                                    placeholder={\n                                        localization.NEW_PASSWORD_PLACEHOLDER\n                                    }\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {confirmPasswordEnabled && (\n                    <FormField\n                        control={form.control}\n                        name=\"confirmPassword\"\n                        render={({ field }) => (\n                            <FormItem>\n                                <FormLabel className={classNames?.label}>\n                                    {localization.CONFIRM_PASSWORD}\n                                </FormLabel>\n\n                                <FormControl>\n                                    <PasswordInput\n                                        autoComplete=\"new-password\"\n                                        className={classNames?.input}\n                                        placeholder={\n                                            localization.CONFIRM_PASSWORD_PLACEHOLDER\n                                        }\n                                        disabled={isSubmitting}\n                                        {...field}\n                                    />\n                                </FormControl>\n\n                                <FormMessage className={classNames?.error} />\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.RESET_PASSWORD_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * sign-in-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { BetterFetchOption } from \"@better-fetch/fetch\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\n// import { useCaptcha } from \"../../../hooks/use-captcha\" // Optional - captcha disabled\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport {\n    cn,\n    getLocalizedError,\n    getPasswordSchema,\n    isValidEmail\n} from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { PasswordValidation } from \"@/types/password-validation\"\n// import { Captcha } from \"../../captcha/captcha\" // Optional - captcha disabled\nimport { PasswordInput } from \"@/components/utility\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface SignInFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (isSubmitting: boolean) => void\n    passwordValidation?: PasswordValidation\n}\n\nexport function SignInForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting,\n    passwordValidation\n}: SignInFormProps) {\n    const isHydrated = useIsHydrated()\n    // const { captchaRef } = useCaptcha() // Optional - captcha disabled\n\n    const {\n        authClient,\n        basePath,\n        credentials,\n        localization: contextLocalization,\n        viewPaths,\n        navigate,\n        toast,\n        Link\n    } = useContext(AuthUIContext)\n\n    const rememberMeEnabled = credentials?.rememberMe\n    const usernameEnabled = credentials?.username\n    const contextPasswordValidation = credentials?.passwordValidation\n\n    localization = { ...contextLocalization, ...localization }\n    passwordValidation = { ...contextPasswordValidation, ...passwordValidation }\n\n    // Captcha feature disabled - using stub implementation\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    const formSchema = z.object({\n        email: usernameEnabled\n            ? z.string().min(1, {\n                  message: `${localization.USERNAME} ${localization.IS_REQUIRED}`\n              })\n            : z.string().email({\n                  message: `${localization.EMAIL} ${localization.IS_INVALID}`\n              }),\n        password: getPasswordSchema(passwordValidation, localization),\n        rememberMe: z.boolean().optional()\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            email: \"\",\n            password: \"\",\n            rememberMe: !rememberMeEnabled\n        }\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    async function signIn({\n        email,\n        password,\n        rememberMe\n    }: z.infer<typeof formSchema>) {\n        try {\n            let response: Record<string, unknown> = {}\n\n            if (usernameEnabled && !isValidEmail(email)) {\n                const fetchOptions: BetterFetchOption = {\n                    throw: true,\n                    headers: await getCaptchaHeaders(\"/sign-in/username\")\n                }\n\n                response = await authClient.signIn.username({\n                    username: email,\n                    password,\n                    rememberMe,\n                    fetchOptions\n                })\n            } else {\n                const fetchOptions: BetterFetchOption = {\n                    throw: true,\n                    headers: await getCaptchaHeaders(\"/sign-in/email\")\n                }\n\n                response = await authClient.signIn.email({\n                    email,\n                    password,\n                    rememberMe,\n                    fetchOptions\n                })\n            }\n\n            if (response.twoFactorRedirect) {\n                navigate(\n                    `${basePath}/${viewPaths.TWO_FACTOR}${window.location.search}`\n                )\n            } else {\n                await onSuccess()\n            }\n        } catch (error) {\n            form.resetField(\"password\")\n            resetCaptcha()\n\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(signIn)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                <FormField\n                    control={form.control}\n                    name=\"email\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {usernameEnabled\n                                    ? localization.USERNAME\n                                    : localization.EMAIL}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    autoComplete={\n                                        usernameEnabled ? \"username\" : \"email\"\n                                    }\n                                    className={classNames?.input}\n                                    type={usernameEnabled ? \"text\" : \"email\"}\n                                    placeholder={\n                                        usernameEnabled\n                                            ? localization.SIGN_IN_USERNAME_PLACEHOLDER\n                                            : localization.EMAIL_PLACEHOLDER\n                                    }\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <FormField\n                    control={form.control}\n                    name=\"password\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <div className=\"flex items-center justify-between\">\n                                <FormLabel className={classNames?.label}>\n                                    {localization.PASSWORD}\n                                </FormLabel>\n\n                                {credentials?.forgotPassword && (\n                                    <Link\n                                        className={cn(\n                                            \"text-sm hover:underline\",\n                                            classNames?.forgotPasswordLink\n                                        )}\n                                        href={`${basePath}/${viewPaths.FORGOT_PASSWORD}${isHydrated ? window.location.search : \"\"}`}\n                                    >\n                                        {localization.FORGOT_PASSWORD_LINK}\n                                    </Link>\n                                )}\n                            </div>\n\n                            <FormControl>\n                                <PasswordInput\n                                    autoComplete=\"current-password\"\n                                    className={classNames?.input}\n                                    placeholder={\n                                        localization.PASSWORD_PLACEHOLDER\n                                    }\n                                    disabled={isSubmitting}\n                                    {...field}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {rememberMeEnabled && (\n                    <FormField\n                        control={form.control}\n                        name=\"rememberMe\"\n                        render={({ field }) => (\n                            <FormItem className=\"flex\">\n                                <FormControl>\n                                    <Checkbox\n                                        checked={field.value}\n                                        onCheckedChange={field.onChange}\n                                        disabled={isSubmitting}\n                                    />\n                                </FormControl>\n\n                                <FormLabel>\n                                    {localization.REMEMBER_ME}\n                                </FormLabel>\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                {/* <Captcha ref={captchaRef} /> */}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.SIGN_IN_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","export async function resizeAndCropImage(\n    file: File,\n    name: string,\n    size: number,\n    extension: string\n): Promise<File> {\n    const image = await loadImage(file)\n\n    const canvas = document.createElement(\"canvas\")\n    canvas.width = canvas.height = size\n\n    const ctx = canvas.getContext(\"2d\")\n\n    const minEdge = Math.min(image.width, image.height)\n\n    const sx = (image.width - minEdge) / 2\n    const sy = (image.height - minEdge) / 2\n    const sWidth = minEdge\n    const sHeight = minEdge\n\n    ctx?.drawImage(image, sx, sy, sWidth, sHeight, 0, 0, size, size)\n\n    const resizedImageBlob = await new Promise<Blob | null>((resolve) =>\n        canvas.toBlob(resolve, `image/${extension}`)\n    )\n\n    return new File([resizedImageBlob as BlobPart], `${name}.${extension}`, {\n        type: `image/${extension}`\n    })\n}\n\nasync function loadImage(file: File): Promise<HTMLImageElement> {\n    return new Promise((resolve, reject) => {\n        const image = new Image()\n        const reader = new FileReader()\n\n        reader.onload = (e) => {\n            image.src = e.target?.result as string\n        }\n\n        image.onload = () => resolve(image)\n        image.onerror = (err) => reject(err)\n\n        reader.readAsDataURL(file)\n    })\n}\n\nexport async function fileToBase64(file: File): Promise<string> {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader()\n        reader.onloadend = () => resolve(reader.result as string)\n        reader.onerror = reject\n        reader.readAsDataURL(file)\n    })\n}\n","/**\n * dropdown-menu\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction DropdownMenu({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n  return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />\n}\n\nfunction DropdownMenuPortal({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n  return (\n    <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />\n  )\n}\n\nfunction DropdownMenuTrigger({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n  return (\n    <DropdownMenuPrimitive.Trigger\n      data-slot=\"dropdown-menu-trigger\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuContent({\n  className,\n  sideOffset = 4,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n  return (\n    <DropdownMenuPrimitive.Portal>\n      <DropdownMenuPrimitive.Content\n        data-slot=\"dropdown-menu-content\"\n        sideOffset={sideOffset}\n        className={cn(\n          \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md\",\n          className\n        )}\n        {...props}\n      />\n    </DropdownMenuPrimitive.Portal>\n  )\n}\n\nfunction DropdownMenuGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n  return (\n    <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />\n  )\n}\n\nfunction DropdownMenuItem({\n  className,\n  inset,\n  variant = \"default\",\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n  inset?: boolean\n  variant?: \"default\" | \"destructive\"\n}) {\n  return (\n    <DropdownMenuPrimitive.Item\n      data-slot=\"dropdown-menu-item\"\n      data-inset={inset}\n      data-variant={variant}\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuCheckboxItem({\n  className,\n  children,\n  checked,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem>) {\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      data-slot=\"dropdown-menu-checkbox-item\"\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      checked={checked}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.CheckboxItem>\n  )\n}\n\nfunction DropdownMenuRadioGroup({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n  return (\n    <DropdownMenuPrimitive.RadioGroup\n      data-slot=\"dropdown-menu-radio-group\"\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuRadioItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem>) {\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      data-slot=\"dropdown-menu-radio-item\"\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"pointer-events-none absolute left-2 flex size-3.5 items-center justify-center\">\n        <DropdownMenuPrimitive.ItemIndicator>\n          <CircleIcon className=\"size-2 fill-current\" />\n        </DropdownMenuPrimitive.ItemIndicator>\n      </span>\n      {children}\n    </DropdownMenuPrimitive.RadioItem>\n  )\n}\n\nfunction DropdownMenuLabel({\n  className,\n  inset,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.Label\n      data-slot=\"dropdown-menu-label\"\n      data-inset={inset}\n      className={cn(\n        \"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n  return (\n    <DropdownMenuPrimitive.Separator\n      data-slot=\"dropdown-menu-separator\"\n      className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuShortcut({\n  className,\n  ...props\n}: React.ComponentProps<\"span\">) {\n  return (\n    <span\n      data-slot=\"dropdown-menu-shortcut\"\n      className={cn(\n        \"text-muted-foreground ml-auto text-xs tracking-widest\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DropdownMenuSub({\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n  return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />\n}\n\nfunction DropdownMenuSubTrigger({\n  className,\n  inset,\n  children,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n  inset?: boolean\n}) {\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      data-slot=\"dropdown-menu-sub-trigger\"\n      data-inset={inset}\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <ChevronRightIcon className=\"ml-auto size-4\" />\n    </DropdownMenuPrimitive.SubTrigger>\n  )\n}\n\nfunction DropdownMenuSubContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n  return (\n    <DropdownMenuPrimitive.SubContent\n      data-slot=\"dropdown-menu-sub-content\"\n      className={cn(\n        \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport {\n  DropdownMenu,\n  DropdownMenuPortal,\n  DropdownMenuTrigger,\n  DropdownMenuContent,\n  DropdownMenuGroup,\n  DropdownMenuLabel,\n  DropdownMenuItem,\n  DropdownMenuCheckboxItem,\n  DropdownMenuRadioGroup,\n  DropdownMenuRadioItem,\n  DropdownMenuSeparator,\n  DropdownMenuShortcut,\n  DropdownMenuSub,\n  DropdownMenuSubTrigger,\n  DropdownMenuSubContent,\n}\n","/**\n * textarea\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n  return (\n    <textarea\n      data-slot=\"textarea\"\n      className={cn(\n        \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nexport { Textarea }\n","import { sha256 } from \"@noble/hashes/sha2.js\"\nimport { bytesToHex } from \"@noble/hashes/utils.js\"\nimport type { GravatarOptions } from \"../types/gravatar-options\"\n\n/**\n * Generate a Gravatar URL for an email address\n * @param email - Email address\n * @param options - Gravatar options\n * @returns Gravatar URL or null if email is invalid\n */\nexport function getGravatarUrl(\n    email?: string | null,\n    options?: GravatarOptions\n): string | null {\n    if (!email) return null\n\n    try {\n        // Normalize email: trim and lowercase\n        const normalizedEmail = email.trim().toLowerCase()\n        // sha256 expects Uint8Array, so encode string to Uint8Array\n        const encoder = new TextEncoder()\n        const emailBytes = encoder.encode(normalizedEmail)\n        const hash = bytesToHex(sha256(emailBytes))\n        const extension = options?.jpg ? \".jpg\" : \"\"\n        let url = `https://gravatar.com/avatar/${hash}${extension}`\n\n        const params = new URLSearchParams()\n\n        // Add size parameter\n        if (options?.size) {\n            params.append(\n                \"s\",\n                Math.min(Math.max(options.size, 1), 2048).toString()\n            )\n        }\n\n        // Add default image parameter\n        if (options?.d) {\n            params.append(\"d\", options.d)\n        }\n\n        // Add force default parameter\n        if (options?.forceDefault) {\n            params.append(\"f\", \"y\")\n        }\n\n        // Append parameters if any\n        const queryString = params.toString()\n        if (queryString) {\n            url += `?${queryString}`\n        }\n\n        return url\n    } catch (error) {\n        console.error(\"Error generating Gravatar URL:\", error)\n        return null\n    }\n}\n","/**\n * user-avatar\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { UserRoundIcon } from \"lucide-react\"\nimport { type ComponentProps, useContext } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { getGravatarUrl } from \"@/lib/gravatar-utils\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { Profile } from \"@/types/profile\"\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\n\nexport interface UserAvatarClassNames {\n    base?: string\n    image?: string\n    fallback?: string\n    fallbackIcon?: string\n    skeleton?: string\n}\n\nexport interface UserAvatarProps {\n    classNames?: UserAvatarClassNames\n    isPending?: boolean\n    size?: \"sm\" | \"default\" | \"lg\" | \"xl\" | \"icon-sm\" | \"icon-lg\" | null\n    user?: Profile | null\n    /**\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: Partial<AuthLocalization>\n}\n\n/**\n * Displays a user avatar with image and fallback support\n *\n * Renders a user's avatar image when available, with appropriate fallbacks:\n * - Shows a skeleton when isPending is true\n * - Displays first two characters of user's name when no image is available\n * - Falls back to a generic user icon when neither image nor name is available\n */\nexport function UserAvatar({\n    className,\n    classNames,\n    isPending,\n    size,\n    user,\n    localization: propLocalization,\n    ...props\n}: UserAvatarProps & ComponentProps<typeof Avatar>) {\n    const {\n        localization: contextLocalization,\n        gravatar,\n        avatar\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...propLocalization }\n\n    const name =\n        user?.displayName ||\n        user?.name ||\n        user?.fullName ||\n        user?.firstName ||\n        user?.displayUsername ||\n        user?.username ||\n        user?.email\n    const userImage = user?.image || user?.avatar || user?.avatarUrl\n\n    // Calculate gravatar URL synchronously\n    const gravatarUrl =\n        gravatar && user?.email\n            ? getGravatarUrl(\n                  user.email,\n                  gravatar === true ? undefined : gravatar\n              )\n            : null\n\n    const src = gravatar ? gravatarUrl : userImage\n\n    if (isPending) {\n        return (\n            <Skeleton\n                className={cn(\n                    \"shrink-0\",\n                    size === \"sm\"\n                        ? \"size-6 rounded-full\"\n                        : size === \"lg\"\n                          ? \"size-10 rounded-lg\"\n                          : size === \"xl\"\n                            ? \"size-12 rounded-lg\"\n                            : \"size-8 rounded-lg\",\n                    className,\n                    classNames?.base,\n                    classNames?.skeleton\n                )}\n            />\n        )\n    }\n\n    return (\n        <Avatar\n            className={cn(\n                \"bg-muted\",\n                size === \"sm\"\n                    ? \"size-6 rounded-full\"\n                    : size === \"lg\"\n                      ? \"size-10 rounded-lg\"\n                      : size === \"xl\"\n                        ? \"size-12 rounded-lg\"\n                        : \"size-8 rounded-lg\",\n                className,\n                classNames?.base\n            )}\n            {...props}\n        >\n            {avatar?.Image ? (\n                <avatar.Image\n                    alt={name || localization?.USER!}\n                    className={classNames?.image}\n                    src={src || \"\"}\n                />\n            ) : (\n                <AvatarImage\n                    alt={name || localization?.USER}\n                    className={classNames?.image}\n                    src={src || undefined}\n                />\n            )}\n\n            <AvatarFallback\n                className={cn(\n                    \"text-foreground uppercase\",\n                    size === \"sm\" ? \"rounded-full\" : \"rounded-lg\",\n                    classNames?.fallback\n                )}\n                delayMs={src ? 600 : undefined}\n            >\n                {firstTwoCharacters(name) || (\n                    <UserRoundIcon\n                        className={cn(\"size-[50%]\", classNames?.fallbackIcon)}\n                    />\n                )}\n            </AvatarFallback>\n        </Avatar>\n    )\n}\n\nconst firstTwoCharacters = (name?: string | null) => name?.slice(0, 2)\n","/**\n * sign-up-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { BetterFetchOption } from \"better-auth/react\"\nimport { Loader2, Trash2Icon, UploadCloudIcon } from \"lucide-react\"\nimport { useCallback, useContext, useEffect, useRef, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\n// import { useCaptcha } from \"../../../hooks/use-captcha\" // Optional - captcha disabled\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { fileToBase64, resizeAndCropImage } from \"@/lib/image-utils\"\nimport {\n    cn,\n    getLocalizedError,\n    getPasswordSchema,\n    getSearchParam\n} from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { PasswordValidation } from \"@/types/password-validation\"\n// import { Captcha } from \"../../captcha/captcha\" // Optional - captcha disabled\nimport { PasswordInput } from \"@/components/utility\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"@/components/ui/dropdown-menu\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { UserAvatar } from \"@/components/user/components/user-avatar\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface SignUpFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    callbackURL?: string\n    isSubmitting?: boolean\n    localization: Partial<AuthLocalization>\n    redirectTo?: string\n    setIsSubmitting?: (value: boolean) => void\n    passwordValidation?: PasswordValidation\n}\n\nexport function SignUpForm({\n    className,\n    classNames,\n    callbackURL,\n    isSubmitting,\n    localization,\n    redirectTo,\n    setIsSubmitting,\n    passwordValidation\n}: SignUpFormProps) {\n    const isHydrated = useIsHydrated()\n    // const { captchaRef } = useCaptcha() // Optional - captcha disabled\n\n    const {\n        additionalFields,\n        authClient,\n        basePath,\n        baseURL,\n        credentials,\n        localization: contextLocalization,\n        nameRequired,\n        persistClient,\n        redirectTo: contextRedirectTo,\n        signUp: signUpOptions,\n        viewPaths,\n        navigate,\n        toast,\n        avatar\n    } = useContext(AuthUIContext)\n\n    const confirmPasswordEnabled = credentials?.confirmPassword\n    const usernameEnabled = credentials?.username\n    const contextPasswordValidation = credentials?.passwordValidation\n    const signUpFields = signUpOptions?.fields\n\n    localization = { ...contextLocalization, ...localization }\n    passwordValidation = { ...contextPasswordValidation, ...passwordValidation }\n\n    // Captcha feature disabled - using stub implementation\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n\n    // Avatar upload state\n    const fileInputRef = useRef<HTMLInputElement>(null)\n    const [avatarImage, setAvatarImage] = useState<string | null>(null)\n    const [uploadingAvatar, setUploadingAvatar] = useState(false)\n\n    const getRedirectTo = useCallback(\n        () => redirectTo || getSearchParam(\"redirectTo\") || contextRedirectTo,\n        [redirectTo, contextRedirectTo]\n    )\n\n    const getCallbackURL = useCallback(\n        () =>\n            `${baseURL}${\n                callbackURL ||\n                (persistClient\n                    ? `${basePath}/${viewPaths.CALLBACK}?redirectTo=${encodeURIComponent(getRedirectTo())}`\n                    : getRedirectTo())\n            }`,\n        [\n            callbackURL,\n            persistClient,\n            basePath,\n            viewPaths,\n            baseURL,\n            getRedirectTo\n        ]\n    )\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    // Create the base schema for standard fields\n    const defaultFields = {\n        email: z.string().email({\n            message: `${localization.EMAIL} ${localization.IS_INVALID}`\n        }),\n        password: getPasswordSchema(passwordValidation, localization),\n        name:\n            signUpFields?.includes(\"name\") && nameRequired\n                ? z.string().min(1, {\n                      message: `${localization.NAME} ${localization.IS_REQUIRED}`\n                  })\n                : z.string().optional(),\n        image: z.string().optional(),\n        username: usernameEnabled\n            ? z.string().min(1, {\n                  message: `${localization.USERNAME} ${localization.IS_REQUIRED}`\n              })\n            : z.string().optional(),\n        confirmPassword: confirmPasswordEnabled\n            ? getPasswordSchema(passwordValidation, {\n                  PASSWORD_REQUIRED: localization.CONFIRM_PASSWORD_REQUIRED,\n                  PASSWORD_TOO_SHORT: localization.PASSWORD_TOO_SHORT,\n                  PASSWORD_TOO_LONG: localization.PASSWORD_TOO_LONG,\n                  INVALID_PASSWORD: localization.INVALID_PASSWORD\n              })\n            : z.string().optional()\n    }\n\n    const schemaFields: Record<string, z.ZodTypeAny> = {}\n\n    // Add additional fields from signUpFields\n    if (signUpFields) {\n        for (const field of signUpFields) {\n            if (field === \"name\") continue // Already handled above\n            if (field === \"image\") continue // Already handled above\n\n            const additionalField = additionalFields?.[field]\n            if (!additionalField) continue\n\n            let fieldSchema: z.ZodTypeAny\n\n            // Create the appropriate schema based on field type\n            if (additionalField.type === \"number\") {\n                fieldSchema = additionalField.required\n                    ? z.preprocess(\n                          (val) => (!val ? undefined : Number(val)),\n                          z.number({\n                              message: `${additionalField.label} ${localization.IS_INVALID}`\n                          })\n                      )\n                    : z.coerce\n                          .number({\n                              message: `${additionalField.label} ${localization.IS_INVALID}`\n                          })\n                          .optional()\n            } else if (additionalField.type === \"boolean\") {\n                fieldSchema = additionalField.required\n                    ? z.coerce\n                          .boolean({\n                              message: `${additionalField.label} ${localization.IS_INVALID}`\n                          })\n                          .refine((val) => val === true, {\n                              message: `${additionalField.label} ${localization.IS_REQUIRED}`\n                          })\n                    : z.coerce\n                          .boolean({\n                              message: `${additionalField.label} ${localization.IS_INVALID}`\n                          })\n                          .optional()\n            } else {\n                fieldSchema = additionalField.required\n                    ? z\n                          .string()\n                          .min(\n                              1,\n                              `${additionalField.label} ${localization.IS_REQUIRED}`\n                          )\n                    : z.string().optional()\n            }\n\n            schemaFields[field] = fieldSchema\n        }\n    }\n\n    const formSchema = z\n        .object(defaultFields)\n        .extend(schemaFields)\n        .refine(\n            (data) => {\n                // Skip validation if confirmPassword is not enabled\n                if (!confirmPasswordEnabled) return true\n                return data.password === data.confirmPassword\n            },\n            {\n                message: localization.PASSWORDS_DO_NOT_MATCH!,\n                path: [\"confirmPassword\"]\n            }\n        )\n\n    // Create default values for the form\n    const defaultValues: Record<string, unknown> = {\n        email: \"\",\n        password: \"\",\n        ...(confirmPasswordEnabled && { confirmPassword: \"\" }),\n        ...(signUpFields?.includes(\"name\") ? { name: \"\" } : {}),\n        ...(usernameEnabled ? { username: \"\" } : {}),\n        ...(signUpFields?.includes(\"image\") && avatar ? { image: \"\" } : {})\n    }\n\n    // Add default values for additional fields\n    if (signUpFields) {\n        for (const field of signUpFields) {\n            if (field === \"name\") continue\n            if (field === \"image\") continue\n            const additionalField = additionalFields?.[field]\n            if (!additionalField) continue\n\n            defaultValues[field] =\n                additionalField.type === \"boolean\" ? false : \"\"\n        }\n    }\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    const handleAvatarChange = async (file: File) => {\n        if (!avatar) return\n\n        setUploadingAvatar(true)\n\n        try {\n            const resizedFile = await resizeAndCropImage(\n                file,\n                crypto.randomUUID(),\n                avatar.size || 128,\n                avatar.extension || \"png\"\n            )\n\n            let image: string | undefined | null\n\n            if (avatar.upload) {\n                image = await avatar.upload(resizedFile)\n            } else {\n                image = await fileToBase64(resizedFile)\n            }\n\n            if (image) {\n                setAvatarImage(image)\n                form.setValue(\"image\", image)\n            } else {\n                setAvatarImage(null)\n                form.setValue(\"image\", \"\")\n            }\n        } catch (error) {\n            console.error(error)\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setUploadingAvatar(false)\n    }\n\n    const handleDeleteAvatar = () => {\n        setAvatarImage(null)\n        form.setValue(\"image\", \"\")\n    }\n\n    const openFileDialog = () => fileInputRef.current?.click()\n\n    async function signUp({\n        email,\n        password,\n        name,\n        username,\n        confirmPassword,\n        image,\n        ...additionalFieldValues\n    }: z.infer<typeof formSchema>) {\n        try {\n            // Validate additional fields with custom validators if provided\n            for (const [field, value] of Object.entries(\n                additionalFieldValues\n            )) {\n                const additionalField = additionalFields?.[field]\n                if (!additionalField?.validate) continue\n\n                if (\n                    typeof value === \"string\" &&\n                    !(await additionalField.validate(value))\n                ) {\n                    form.setError(field, {\n                        message: `${additionalField.label} ${localization.IS_INVALID}`\n                    })\n                    return\n                }\n            }\n\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/sign-up/email\")\n            }\n\n            const additionalParams: Record<string, unknown> = {}\n\n            if (username !== undefined) {\n                additionalParams.username = username\n            }\n\n            if (image !== undefined) {\n                additionalParams.image = image\n            }\n\n            const data = await authClient.signUp.email({\n                email: email as string,\n                password: password as string,\n                name: (name as string) || \"\",\n                ...additionalParams,\n                ...additionalFieldValues,\n                callbackURL: getCallbackURL(),\n                fetchOptions\n            })\n\n            if (\"token\" in data && data.token) {\n                await onSuccess()\n            } else {\n                navigate(\n                    `${basePath}/${viewPaths.SIGN_IN}${window.location.search}`\n                )\n                toast({\n                    variant: \"success\",\n                    message: localization.SIGN_UP_EMAIL!\n                })\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            form.resetField(\"password\")\n            form.resetField(\"confirmPassword\")\n            resetCaptcha()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(signUp)}\n                noValidate={isHydrated}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                {signUpFields?.includes(\"image\") && avatar && (\n                    <>\n                        <input\n                            ref={fileInputRef}\n                            accept=\"image/*\"\n                            disabled={uploadingAvatar}\n                            hidden\n                            type=\"file\"\n                            onChange={(e) => {\n                                const file = e.target.files?.item(0)\n                                if (file) handleAvatarChange(file)\n                                e.target.value = \"\"\n                            }}\n                        />\n\n                        <FormField\n                            control={form.control}\n                            name=\"image\"\n                            render={() => (\n                                <FormItem>\n                                    <FormLabel>{localization.AVATAR}</FormLabel>\n\n                                    <div className=\"flex items-center gap-4\">\n                                        <DropdownMenu>\n                                            <DropdownMenuTrigger asChild>\n                                                <Button\n                                                    className=\"size-fit rounded-full\"\n                                                    size=\"icon\"\n                                                    variant=\"ghost\"\n                                                    type=\"button\"\n                                                >\n                                                    <UserAvatar\n                                                        isPending={\n                                                            uploadingAvatar\n                                                        }\n                                                        className=\"size-16\"\n                                                        user={\n                                                            avatarImage\n                                                                ? {\n                                                                      name: form.watch(\n                                                                          \"name\"\n                                                                      ) as string,\n                                                                      email: form.watch(\n                                                                          \"email\"\n                                                                      ) as string,\n                                                                      image: avatarImage\n                                                                  }\n                                                                : null\n                                                        }\n                                                        localization={\n                                                            localization\n                                                        }\n                                                    />\n                                                </Button>\n                                            </DropdownMenuTrigger>\n\n                                            <DropdownMenuContent\n                                                align=\"start\"\n                                                onCloseAutoFocus={(e) =>\n                                                    e.preventDefault()\n                                                }\n                                            >\n                                                <DropdownMenuItem\n                                                    onClick={openFileDialog}\n                                                    disabled={uploadingAvatar}\n                                                >\n                                                    <UploadCloudIcon />\n                                                    {localization.UPLOAD_AVATAR}\n                                                </DropdownMenuItem>\n\n                                                {avatarImage && (\n                                                    <DropdownMenuItem\n                                                        onClick={\n                                                            handleDeleteAvatar\n                                                        }\n                                                        disabled={\n                                                            uploadingAvatar\n                                                        }\n                                                        variant=\"destructive\"\n                                                    >\n                                                        <Trash2Icon />\n                                                        {\n                                                            localization.DELETE_AVATAR\n                                                        }\n                                                    </DropdownMenuItem>\n                                                )}\n                                            </DropdownMenuContent>\n                                        </DropdownMenu>\n\n                                        <Button\n                                            type=\"button\"\n                                            variant=\"outline\"\n                                            onClick={openFileDialog}\n                                            disabled={uploadingAvatar}\n                                        >\n                                            {uploadingAvatar && (\n                                                <Loader2 className=\"animate-spin\" />\n                                            )}\n\n                                            {localization.UPLOAD}\n                                        </Button>\n                                    </div>\n\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n                    </>\n                )}\n\n                {signUpFields?.includes(\"name\") && (\n                    <FormField\n                        control={form.control}\n                        name=\"name\"\n                        render={({ field }) => (\n                            <FormItem>\n                                <FormLabel className={classNames?.label}>\n                                    {localization.NAME}\n                                </FormLabel>\n\n                                <FormControl>\n                                    <Input\n                                        className={classNames?.input}\n                                        placeholder={\n                                            localization.NAME_PLACEHOLDER\n                                        }\n                                        disabled={isSubmitting}\n                                        {...field}\n                                        value={field.value as string}\n                                    />\n                                </FormControl>\n\n                                <FormMessage className={classNames?.error} />\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                {usernameEnabled && (\n                    <FormField\n                        control={form.control}\n                        name=\"username\"\n                        render={({ field }) => (\n                            <FormItem>\n                                <FormLabel className={classNames?.label}>\n                                    {localization.USERNAME}\n                                </FormLabel>\n\n                                <FormControl>\n                                    <Input\n                                        className={classNames?.input}\n                                        placeholder={\n                                            localization.USERNAME_PLACEHOLDER\n                                        }\n                                        disabled={isSubmitting}\n                                        {...field}\n                                        value={field.value as string}\n                                    />\n                                </FormControl>\n\n                                <FormMessage className={classNames?.error} />\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                <FormField\n                    control={form.control}\n                    name=\"email\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.EMAIL}\n                            </FormLabel>\n\n                            <FormControl>\n                                <Input\n                                    className={classNames?.input}\n                                    type=\"email\"\n                                    placeholder={localization.EMAIL_PLACEHOLDER}\n                                    disabled={isSubmitting}\n                                    {...field}\n                                    value={field.value as string}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                <FormField\n                    control={form.control}\n                    name=\"password\"\n                    render={({ field }) => (\n                        <FormItem>\n                            <FormLabel className={classNames?.label}>\n                                {localization.PASSWORD}\n                            </FormLabel>\n\n                            <FormControl>\n                                <PasswordInput\n                                    autoComplete=\"new-password\"\n                                    className={classNames?.input}\n                                    placeholder={\n                                        localization.PASSWORD_PLACEHOLDER\n                                    }\n                                    disabled={isSubmitting}\n                                    enableToggle\n                                    {...field}\n                                    value={field.value as string}\n                                />\n                            </FormControl>\n\n                            <FormMessage className={classNames?.error} />\n                        </FormItem>\n                    )}\n                />\n\n                {confirmPasswordEnabled && (\n                    <FormField\n                        control={form.control}\n                        name=\"confirmPassword\"\n                        render={({ field }) => (\n                            <FormItem>\n                                <FormLabel className={classNames?.label}>\n                                    {localization.CONFIRM_PASSWORD}\n                                </FormLabel>\n\n                                <FormControl>\n                                    <PasswordInput\n                                        autoComplete=\"new-password\"\n                                        className={classNames?.input}\n                                        placeholder={\n                                            localization.CONFIRM_PASSWORD_PLACEHOLDER\n                                        }\n                                        disabled={isSubmitting}\n                                        enableToggle\n                                        {...field}\n                                        value={field.value as string}\n                                    />\n                                </FormControl>\n\n                                <FormMessage className={classNames?.error} />\n                            </FormItem>\n                        )}\n                    />\n                )}\n\n                {signUpFields\n                    ?.filter((field: string) => field !== \"name\" && field !== \"image\")\n                    .map((field: string) => {\n                        const additionalField = additionalFields?.[field]\n                        if (!additionalField) {\n                            console.error(`Additional field ${field} not found`)\n                            return null\n                        }\n\n                        return additionalField.type === \"boolean\" ? (\n                            <FormField\n                                key={field}\n                                control={form.control}\n                                name={field}\n                                render={({ field: formField }) => (\n                                    <FormItem className=\"flex\">\n                                        <FormControl>\n                                            <Checkbox\n                                                checked={\n                                                    formField.value as boolean\n                                                }\n                                                onCheckedChange={\n                                                    formField.onChange\n                                                }\n                                                disabled={isSubmitting}\n                                            />\n                                        </FormControl>\n\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {additionalField.label}\n                                        </FormLabel>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        ) : (\n                            <FormField\n                                key={field}\n                                control={form.control}\n                                name={field}\n                                render={({ field: formField }) => (\n                                    <FormItem>\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {additionalField.label}\n                                        </FormLabel>\n\n                                        <FormControl>\n                                            {additionalField.type ===\n                                            \"number\" ? (\n                                                <Input\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    type=\"number\"\n                                                    placeholder={\n                                                        additionalField.placeholder ||\n                                                        (typeof additionalField.label ===\n                                                        \"string\"\n                                                            ? additionalField.label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...formField}\n                                                    value={\n                                                        formField.value as number\n                                                    }\n                                                />\n                                            ) : additionalField.multiline ? (\n                                                <Textarea\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    placeholder={\n                                                        additionalField.placeholder ||\n                                                        (typeof additionalField.label ===\n                                                        \"string\"\n                                                            ? additionalField.label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...formField}\n                                                    value={\n                                                        formField.value as string\n                                                    }\n                                                />\n                                            ) : (\n                                                <Input\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    type=\"text\"\n                                                    placeholder={\n                                                        additionalField.placeholder ||\n                                                        (typeof additionalField.label ===\n                                                        \"string\"\n                                                            ? additionalField.label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...formField}\n                                                    value={\n                                                        formField.value as string\n                                                    }\n                                                />\n                                            )}\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        )\n                    })}\n\n                {/* <Captcha ref={captchaRef} /> */}\n\n                <Button\n                    type=\"submit\"\n                    disabled={isSubmitting}\n                    className={cn(\n                        \"w-full\",\n                        classNames?.button,\n                        classNames?.primaryButton\n                    )}\n                >\n                    {isSubmitting ? (\n                        <Loader2 className=\"animate-spin\" />\n                    ) : (\n                        localization.SIGN_UP_ACTION\n                    )}\n                </Button>\n            </form>\n        </Form>\n    )\n}\n","/**\n * two-factor-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { BetterFetchError } from \"@better-fetch/fetch\"\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2, QrCodeIcon, SendIcon } from \"lucide-react\"\nimport { useContext, useEffect, useRef, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport QRCode from \"react-qr-code\"\nimport * as z from \"zod\"\n\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError, getSearchParam } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { User } from \"@/types/auth-client\"\nimport { Button } from \"@/components/ui/button\"\nimport { Checkbox } from \"@/components/ui/checkbox\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { InputOTP, InputOTPGroup } from \"@/components/ui/input-otp\"\nimport { Label } from \"@/components/ui/label\"\nimport type { AuthFormClassNames } from \"./auth-form\"\n\nexport interface TwoFactorFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    isSubmitting?: boolean\n    localization?: Partial<AuthLocalization>\n    otpSeparators?: 0 | 1 | 2\n    redirectTo?: string\n    setIsSubmitting?: (value: boolean) => void\n}\n\nexport function TwoFactorForm({\n    className,\n    classNames,\n    isSubmitting,\n    localization,\n    otpSeparators = 0,\n    redirectTo,\n    setIsSubmitting\n}: TwoFactorFormProps) {\n    const isHydrated = useIsHydrated()\n    const totpURI = isHydrated ? getSearchParam(\"totpURI\") : null\n    const initialSendRef = useRef(false)\n\n    const {\n        authClient,\n        basePath,\n        hooks: { useSession },\n        localization: contextLocalization,\n        twoFactor,\n        viewPaths,\n        toast,\n        Link\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { onSuccess, isPending: transitionPending } = useOnSuccessTransition({\n        redirectTo\n    })\n\n    const { data: sessionData } = useSession()\n    const isTwoFactorEnabled = (sessionData?.user as User)?.twoFactorEnabled\n\n    const [method, setMethod] = useState<\"totp\" | \"otp\" | null>(\n        twoFactor?.length === 1 ? twoFactor[0] : null\n    )\n\n    const [isSendingOtp, setIsSendingOtp] = useState(false)\n    const [cooldownSeconds, setCooldownSeconds] = useState(0)\n\n    const formSchema = z.object({\n        code: z\n            .string()\n            .min(1, {\n                message: `${localization.ONE_TIME_PASSWORD} ${localization.IS_REQUIRED}`\n            })\n            .min(6, {\n                message: `${localization.ONE_TIME_PASSWORD} ${localization.IS_INVALID}`\n            }),\n        trustDevice: z.boolean().optional()\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            code: \"\"\n        }\n    })\n\n    isSubmitting =\n        isSubmitting || form.formState.isSubmitting || transitionPending\n\n    useEffect(() => {\n        setIsSubmitting?.(form.formState.isSubmitting || transitionPending)\n    }, [form.formState.isSubmitting, transitionPending, setIsSubmitting])\n\n    // biome-ignore lint/correctness/useExhaustiveDependencies: ignore\n    useEffect(() => {\n        if (\n            method === \"otp\" &&\n            cooldownSeconds <= 0 &&\n            !initialSendRef.current\n        ) {\n            initialSendRef.current = true\n            sendOtp()\n        }\n    }, [method])\n\n    useEffect(() => {\n        if (cooldownSeconds <= 0) return\n\n        const timer = setTimeout(() => {\n            setCooldownSeconds((prev) => prev - 1)\n        }, 1000)\n        return () => clearTimeout(timer)\n    }, [cooldownSeconds])\n\n    const sendOtp = async () => {\n        if (isSendingOtp || cooldownSeconds > 0) return\n\n        try {\n            setIsSendingOtp(true)\n            await authClient.twoFactor.sendOtp({\n                fetchOptions: { throw: true }\n            })\n            setCooldownSeconds(60)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            if (\n                (error as BetterFetchError).error.code ===\n                \"INVALID_TWO_FACTOR_COOKIE\"\n            ) {\n                history.back()\n            }\n        }\n\n        initialSendRef.current = false\n        setIsSendingOtp(false)\n    }\n\n    async function verifyCode({\n        code,\n        trustDevice\n    }: z.infer<typeof formSchema>) {\n        try {\n            const verifyMethod =\n                method === \"totp\"\n                    ? authClient.twoFactor.verifyTotp\n                    : authClient.twoFactor.verifyOtp\n\n            await verifyMethod({\n                code,\n                trustDevice,\n                fetchOptions: { throw: true }\n            })\n\n            await onSuccess()\n\n            if (sessionData && !isTwoFactorEnabled) {\n                toast({\n                    variant: \"success\",\n                    message: localization?.TWO_FACTOR_ENABLED || \"Two-factor authentication has been enabled successfully.\"\n                })\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            form.reset()\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form\n                onSubmit={form.handleSubmit(verifyCode)}\n                className={cn(\"grid w-full gap-6\", className, classNames?.base)}\n            >\n                {twoFactor?.includes(\"totp\") &&\n                    totpURI &&\n                    method === \"totp\" && (\n                        <div className=\"space-y-3\">\n                            <Label className={classNames?.label}>\n                                {localization.TWO_FACTOR_TOTP_LABEL}\n                            </Label>\n\n                            <QRCode\n                                className={cn(\n                                    \"border shadow-xs\",\n                                    classNames?.qrCode\n                                )}\n                                value={totpURI}\n                            />\n                        </div>\n                    )}\n\n                {method !== null && (\n                    <>\n                        <FormField\n                            control={form.control}\n                            name=\"code\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <div className=\"flex items-center justify-between\">\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization.ONE_TIME_PASSWORD}\n                                        </FormLabel>\n\n                                        <Link\n                                            className={cn(\n                                                \"text-sm hover:underline\",\n                                                classNames?.forgotPasswordLink\n                                            )}\n                                            href={`${basePath}/${viewPaths.RECOVER_ACCOUNT}${isHydrated ? window.location.search : \"\"}`}\n                                        >\n                                            {localization.FORGOT_AUTHENTICATOR}\n                                        </Link>\n                                    </div>\n\n                                    <FormControl>\n                                        <InputOTP\n                                            {...field}\n                                            maxLength={6}\n                                            onChange={(value) => {\n                                                field.onChange(value)\n\n                                                if (value.length === 6) {\n                                                    form.handleSubmit(\n                                                        verifyCode\n                                                    )()\n                                                }\n                                            }}\n                                            containerClassName={\n                                                classNames?.otpInputContainer\n                                            }\n                                            className={classNames?.otpInput}\n                                            disabled={isSubmitting}\n                                        >\n                                        <InputOTPGroup />\n                                        </InputOTP>\n                                    </FormControl>\n\n                                    <FormMessage\n                                        className={classNames?.error}\n                                    />\n                                </FormItem>\n                            )}\n                        />\n\n                        <FormField\n                            control={form.control}\n                            name=\"trustDevice\"\n                            render={({ field }) => (\n                                <FormItem className=\"flex\">\n                                    <FormControl>\n                                        <Checkbox\n                                            checked={field.value}\n                                            onCheckedChange={field.onChange}\n                                            disabled={isSubmitting}\n                                            className={classNames?.checkbox}\n                                        />\n                                    </FormControl>\n\n                                    <FormLabel className={classNames?.label}>\n                                        {localization.TRUST_DEVICE}\n                                    </FormLabel>\n                                </FormItem>\n                            )}\n                        />\n                    </>\n                )}\n\n                <div className=\"grid gap-4\">\n                    {method !== null && (\n                        <Button\n                            type=\"submit\"\n                            disabled={isSubmitting}\n                            className={cn(\n                                classNames?.button,\n                                classNames?.primaryButton\n                            )}\n                        >\n                            {isSubmitting && (\n                                <Loader2 className=\"animate-spin\" />\n                            )}\n                            {localization.TWO_FACTOR_ACTION}\n                        </Button>\n                    )}\n\n                    {method === \"otp\" && twoFactor?.includes(\"otp\") && (\n                        <Button\n                            type=\"button\"\n                            variant=\"outline\"\n                            onClick={sendOtp}\n                            disabled={\n                                cooldownSeconds > 0 ||\n                                isSendingOtp ||\n                                isSubmitting\n                            }\n                            className={cn(\n                                classNames?.button,\n                                classNames?.outlineButton\n                            )}\n                        >\n                            {isSendingOtp ? (\n                                <Loader2 className=\"animate-spin\" />\n                            ) : (\n                                <SendIcon className={classNames?.icon} />\n                            )}\n\n                            {localization.RESEND_CODE}\n                            {cooldownSeconds > 0 && ` (${cooldownSeconds})`}\n                        </Button>\n                    )}\n\n                    {method !== \"otp\" && twoFactor?.includes(\"otp\") && (\n                        <Button\n                            type=\"button\"\n                            variant=\"secondary\"\n                            className={cn(\n                                classNames?.button,\n                                classNames?.secondaryButton\n                            )}\n                            onClick={() => setMethod(\"otp\")}\n                            disabled={isSubmitting}\n                        >\n                            <SendIcon className={classNames?.icon} />\n                            {localization.SEND_VERIFICATION_CODE}\n                        </Button>\n                    )}\n\n                    {method !== \"totp\" && twoFactor?.includes(\"totp\") && (\n                        <Button\n                            type=\"button\"\n                            variant=\"secondary\"\n                            className={cn(\n                                classNames?.button,\n                                classNames?.secondaryButton\n                            )}\n                            onClick={() => setMethod(\"totp\")}\n                            disabled={isSubmitting}\n                        >\n                            <QrCodeIcon className={classNames?.icon} />\n                            {localization.CONTINUE_WITH_AUTHENTICATOR}\n                        </Button>\n                    )}\n                </div>\n            </form>\n        </Form>\n    )\n}\n","/**\n * auth-form\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useEffect } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { getViewByPath } from \"@/lib/utils\"\nimport type { AuthViewPath } from \"@/lib/view-paths\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { AuthCallback } from \"@/components/auth/components/auth-callback\"\nimport { EmailOTPForm } from \"./email-otp-form\"\nimport { ForgotPasswordForm } from \"./forgot-password-form\"\nimport { MagicLinkForm } from \"./magic-link-form\"\nimport { PhoneSignInForm } from \"./phone-sign-in-form\"\nimport { PhoneSignUpForm } from \"./phone-sign-up-form\"\nimport { RecoverAccountForm } from \"./recover-account-form\"\nimport { ResetPasswordForm } from \"./reset-password-form\"\nimport { SignInForm } from \"./sign-in-form\"\nimport { SignUpForm } from \"./sign-up-form\"\nimport { TwoFactorForm } from \"./two-factor-form\"\nimport { SignOut } from \"@/components/auth/components/sign-out\"\n\nexport type AuthFormClassNames = {\n    base?: string\n    button?: string\n    checkbox?: string\n    description?: string\n    error?: string\n    forgotPasswordLink?: string\n    icon?: string\n    input?: string\n    label?: string\n    otpInput?: string\n    otpInputContainer?: string\n    outlineButton?: string\n    primaryButton?: string\n    providerButton?: string\n    qrCode?: string\n    secondaryButton?: string\n}\n\nexport interface AuthFormProps {\n    className?: string\n    classNames?: AuthFormClassNames\n    callbackURL?: string\n    isSubmitting?: boolean\n    localization?: Partial<AuthLocalization>\n    pathname?: string\n    redirectTo?: string\n    view?: AuthViewPath\n    otpSeparators?: 0 | 1 | 2\n    setIsSubmitting?: (isSubmitting: boolean) => void\n}\n\nexport function AuthForm({\n    className,\n    classNames,\n    callbackURL,\n    isSubmitting,\n    localization,\n    pathname,\n    redirectTo,\n    view,\n    otpSeparators = 0,\n    setIsSubmitting\n}: AuthFormProps) {\n    const {\n        basePath,\n        credentials,\n        localization: contextLocalization,\n        magicLink,\n        emailOTP,\n        phoneNumber,\n        signUp,\n        twoFactor: twoFactorEnabled,\n        viewPaths,\n        replace\n    } = useContext(AuthUIContext)\n\n    const signUpEnabled = !!signUp\n\n    localization = { ...contextLocalization, ...localization }\n\n    useEffect(() => {\n        if (pathname && !getViewByPath(viewPaths, pathname)) {\n            console.error(`Invalid auth view: ${pathname}`)\n            replace(`${basePath}/${viewPaths.SIGN_IN}${window.location.search}`)\n        }\n    }, [pathname, viewPaths, basePath, replace])\n\n    view =\n        view ||\n        (getViewByPath(viewPaths, pathname) as AuthViewPath) ||\n        \"SIGN_IN\"\n\n    // Redirect to appropriate view based on enabled features\n    useEffect(() => {\n        let isInvalidView = false\n\n        if (\n            view === \"MAGIC_LINK\" &&\n            (!magicLink || (!credentials && !emailOTP))\n        ) {\n            isInvalidView = true\n        }\n\n        if (\n            view === \"EMAIL_OTP\" &&\n            (!emailOTP || (!credentials && !magicLink))\n        ) {\n            isInvalidView = true\n        }\n\n        if (view === \"SIGN_UP\" && !signUpEnabled) {\n            isInvalidView = true\n        }\n\n        if (\n            !credentials &&\n            [\n                \"SIGN_UP\",\n                \"FORGOT_PASSWORD\",\n                \"RESET_PASSWORD\",\n                \"TWO_FACTOR\",\n                \"RECOVER_ACCOUNT\"\n            ].includes(view)\n        ) {\n            isInvalidView = true\n        }\n\n        if (\n            [\"TWO_FACTOR\", \"RECOVER_ACCOUNT\"].includes(view) &&\n            !twoFactorEnabled\n        ) {\n            isInvalidView = true\n        }\n\n        if (isInvalidView) {\n            replace(`${basePath}/${viewPaths.SIGN_IN}${window.location.search}`)\n        }\n    }, [\n        basePath,\n        view,\n        viewPaths,\n        credentials,\n        replace,\n        emailOTP,\n        signUpEnabled,\n        magicLink,\n        twoFactorEnabled\n    ])\n\n    if (view === \"SIGN_OUT\") return <SignOut />\n    if (view === \"CALLBACK\") return <AuthCallback redirectTo={redirectTo} />\n\n    if (view === \"SIGN_IN\") {\n        return credentials ? (\n            <SignInForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : phoneNumber ? (\n            <PhoneSignInForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : magicLink ? (\n            <MagicLinkForm\n                className={className}\n                classNames={classNames}\n                callbackURL={callbackURL}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : emailOTP ? (\n            <EmailOTPForm\n                className={className}\n                classNames={classNames}\n                callbackURL={callbackURL}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : null\n    }\n\n    if (view === \"TWO_FACTOR\") {\n        return (\n            <TwoFactorForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                otpSeparators={otpSeparators}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        )\n    }\n\n    if (view === \"RECOVER_ACCOUNT\") {\n        return (\n            <RecoverAccountForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        )\n    }\n\n    if (view === \"MAGIC_LINK\") {\n        return (\n            <MagicLinkForm\n                className={className}\n                classNames={classNames}\n                callbackURL={callbackURL}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        )\n    }\n\n    if (view === \"EMAIL_OTP\") {\n        return (\n            <EmailOTPForm\n                className={className}\n                classNames={classNames}\n                callbackURL={callbackURL}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        )\n    }\n\n    if (view === \"FORGOT_PASSWORD\") {\n        return (\n            <ForgotPasswordForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        )\n    }\n\n    if (view === \"RESET_PASSWORD\") {\n        return (\n            <ResetPasswordForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n            />\n        )\n    }\n\n    if (view === \"SIGN_UP\") {\n        if (!signUpEnabled) return null\n\n        return credentials ? (\n            <SignUpForm\n                className={className}\n                classNames={classNames}\n                callbackURL={callbackURL}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : phoneNumber ? (\n            <PhoneSignUpForm\n                className={className}\n                classNames={classNames}\n                localization={localization}\n                redirectTo={redirectTo}\n                isSubmitting={isSubmitting}\n                setIsSubmitting={setIsSubmitting}\n            />\n        ) : null\n    }\n}\n","/**\n * siwe-sign-in-button\n * Sign-In with Ethereum (SIWE) button component\n * Part of @bettercone/ui Web3 components\n */\n\n\"use client\"\n\nimport type { BetterFetchOption } from \"@better-fetch/fetch\"\nimport { Loader2 } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\n\nimport { useCaptchaStub } from \"@/hooks/use-captcha-stub\"\nimport { useOnSuccessTransition } from \"@/hooks/use-success-transition\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\n\nexport type SiweSignInButtonClassNames = {\n    base?: string\n    button?: string\n}\n\nexport interface SiweSignInButtonProps {\n    /**\n     * Custom CSS class names for styling different parts of the component\n     */\n    classNames?: SiweSignInButtonClassNames\n\n    /**\n     * Custom CSS class for the button\n     */\n    className?: string\n\n    /**\n     * Whether the component is in a submitting state\n     */\n    isSubmitting?: boolean\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n\n    /**\n     * URL to redirect to after successful sign-in\n     */\n    redirectTo?: string\n\n    /**\n     * Callback to update the submitting state\n     */\n    setIsSubmitting?: (isSubmitting: boolean) => void\n\n    /**\n     * Button variant\n     * @default \"default\"\n     */\n    variant?: \"default\" | \"outline\" | \"ghost\" | \"secondary\"\n\n    /**\n     * Button size\n     * @default \"default\"\n     */\n    size?: \"default\" | \"sm\" | \"lg\" | \"icon\"\n}\n\n/**\n * SiweSignInButton Component\n *\n * Provides a button for Sign-In with Ethereum (SIWE) authentication.\n * Integrates with Better Auth's SIWE plugin and wallet providers.\n *\n * @example\n * ```tsx\n * import { SiweSignInButton } from '@bettercone/ui';\n *\n * export function LoginPage() {\n *   return (\n *     <div className=\"space-y-4\">\n *       <SiweSignInButton />\n *     </div>\n *   );\n * }\n * ```\n *\n * @example\n * With custom styling\n * ```tsx\n * <SiweSignInButton\n *   variant=\"outline\"\n *   size=\"lg\"\n *   classNames={{\n *     button: \"w-full\"\n *   }}\n * />\n * ```\n */\nexport function SiweSignInButton({\n    className,\n    classNames,\n    isSubmitting: isSubmittingProp,\n    localization: localizationProp,\n    redirectTo: redirectToProp,\n    setIsSubmitting: setIsSubmittingProp,\n    variant = \"default\",\n    size = \"default\"\n}: SiweSignInButtonProps) {\n    const {\n        authClient,\n        basePath,\n        localization: contextLocalization,\n        replace,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp }\n\n    const [isSubmittingState, setIsSubmittingState] = useState(false)\n    const isSubmitting = isSubmittingProp ?? isSubmittingState\n    const setIsSubmitting = setIsSubmittingProp ?? setIsSubmittingState\n\n    const { getCaptchaHeaders, resetCaptcha } = useCaptchaStub()\n    const { onSuccess, isPending } = useOnSuccessTransition({\n        redirectTo: redirectToProp\n    })\n\n    async function handleSiweSignIn() {\n        setIsSubmitting(true)\n\n        try {\n            // Check if window.ethereum is available\n            if (typeof window === \"undefined\" || !window.ethereum) {\n                toast({\n                    variant: \"error\",\n                    message: \"No Ethereum wallet found. Please install MetaMask or another Web3 wallet.\"\n                })\n                setIsSubmitting(false)\n                return\n            }\n\n            // Request account access\n            const accounts = await window.ethereum.request({\n                method: \"eth_requestAccounts\"\n            })\n\n            if (!accounts || accounts.length === 0) {\n                toast({\n                    variant: \"error\",\n                    message: \"Failed to connect to wallet\"\n                })\n                setIsSubmitting(false)\n                return\n            }\n\n            const walletAddress = accounts[0] as `0x${string}`\n\n            // Get chain ID\n            const chainId = await window.ethereum.request({\n                method: \"eth_chainId\"\n            })\n            const chainIdNumber = parseInt(chainId, 16)\n\n            // Step 1: Get nonce from Better Auth\n            const nonceResponse = await authClient.siwe.nonce({\n                walletAddress,\n                chainId: chainIdNumber\n            })\n\n            if (!nonceResponse.data?.nonce) {\n                toast({\n                    variant: \"error\",\n                    message: \"Failed to get authentication nonce\"\n                })\n                setIsSubmitting(false)\n                return\n            }\n\n            const nonce = nonceResponse.data.nonce\n\n            // Step 2: Create SIWE message\n            const domain = window.location.host\n            const origin = window.location.origin\n            const statement = \"Sign in with Ethereum to the app.\"\n            \n            const message = `${domain} wants you to sign in with your Ethereum account:\n${walletAddress}\n\n${statement}\n\nURI: ${origin}\nVersion: 1\nChain ID: ${chainIdNumber}\nNonce: ${nonce}\nIssued At: ${new Date().toISOString()}`\n\n            // Step 3: Request signature from wallet\n            const signature = await window.ethereum.request({\n                method: \"personal_sign\",\n                params: [message, walletAddress]\n            })\n\n            // Step 4: Verify signature with Better Auth\n            const fetchOptions: BetterFetchOption = {\n                throw: true,\n                headers: await getCaptchaHeaders(\"/siwe/verify\")\n            }\n\n            const verifyResponse = await authClient.siwe.verify(\n                {\n                    message,\n                    signature,\n                    walletAddress,\n                    chainId: chainIdNumber,\n                    fetchOptions\n                },\n                {\n                    onSuccess: async () => {\n                        toast({\n                            variant: \"success\",\n                            message: \"Successfully signed in with Ethereum\"\n                        })\n\n                        await onSuccess()\n                    },\n                    onError: (ctx: any) => {\n                        toast({\n                            variant: \"error\",\n                            message: getLocalizedError({\n                                error: ctx.error,\n                                localization\n                            })\n                        })\n                        resetCaptcha()\n                        setIsSubmitting(false)\n                    }\n                }\n            )\n        } catch (error: any) {\n            console.error(\"SIWE sign-in error:\", error)\n            \n            // Handle user rejection\n            if (error.code === 4001) {\n                toast({\n                    variant: \"error\",\n                    message: \"Signature request was rejected\"\n                })\n            } else {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n            }\n            \n            resetCaptcha()\n            setIsSubmitting(false)\n        }\n    }\n\n    return (\n        <div className={cn(\"space-y-2\", classNames?.base)}>\n            <Button\n                type=\"button\"\n                variant={variant}\n                size={size}\n                onClick={handleSiweSignIn}\n                disabled={isSubmitting}\n                className={cn(\"w-full\", className, classNames?.button)}\n            >\n                {isSubmitting || isPending ? (\n                    <>\n                        <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                        Connecting...\n                    </>\n                ) : (\n                    <>\n                        <EthereumIcon className=\"mr-2 h-4 w-4\" />\n                        Sign in with Ethereum\n                    </>\n                )}\n            </Button>\n        </div>\n    )\n}\n\n/**\n * Simple Ethereum icon component\n */\nfunction EthereumIcon({ className }: { className?: string }) {\n    return (\n        <svg\n            viewBox=\"0 0 24 24\"\n            fill=\"currentColor\"\n            className={className}\n            xmlns=\"http://www.w3.org/2000/svg\"\n        >\n            <path d=\"M11.944 17.97L4.58 13.62 11.943 24l7.37-10.38-7.372 4.35h.003zM12.056 0L4.69 12.223l7.365 4.354 7.365-4.35L12.056 0z\" />\n        </svg>\n    )\n}\n\n// Extend Window interface for TypeScript\ndeclare global {\n    interface Window {\n        ethereum?: {\n            request: (args: { method: string; params?: any[] }) => Promise<any>\n            on?: (event: string, handler: (...args: any[]) => void) => void\n            removeListener?: (\n                event: string,\n                handler: (...args: any[]) => void\n            ) => void\n        }\n    }\n}\n","/**\n * auth-view\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { ArrowLeftIcon } from \"lucide-react\"\nimport { type ReactNode, useContext, useEffect, useState } from \"react\"\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { socialProviders } from \"@/lib/social-providers\"\nimport { cn, getViewByPath } from \"@/lib/utils\"\nimport type { AuthViewPaths } from \"@/lib/view-paths\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { AcceptInvitationCard } from \"@/components/organization/cards/accept-invitation-card\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardFooter,\n    CardHeader,\n    CardTitle\n} from \"@/components/ui/card\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { AnonymousSignInButton } from \"@/components/auth/buttons\"\nimport { AuthCallback } from \"@/components/auth/components\"\nimport { AuthForm, type AuthFormClassNames } from \"@/components/auth/forms/auth-form\"\nimport { EmailOTPButton } from \"@/components/auth/buttons\"\nimport { MagicLinkButton } from \"@/components/auth/buttons/magic-link-button\"\nimport { OneTap } from \"@/components/auth/components/one-tap\"\nimport { PasskeyButton } from \"@/components/auth/buttons/passkey-button\"\nimport { ProviderButton } from \"@/components/auth/buttons/provider-button\"\nimport { SignOut } from \"@/components/auth/components/sign-out\"\nimport { SiweSignInButton } from \"@/components/web3/buttons/siwe-sign-in-button\"\n\nexport type AuthViewClassNames = {\n    base?: string\n    content?: string\n    description?: string\n    footer?: string\n    footerLink?: string\n    continueWith?: string\n    form?: AuthFormClassNames\n    header?: string\n    separator?: string\n    title?: string\n}\n\nexport interface AuthViewProps {\n    className?: string\n    classNames?: AuthViewClassNames\n    callbackURL?: string\n    cardHeader?: ReactNode\n    localization?: AuthLocalization\n    path?: string\n    pathname?: string\n    redirectTo?: string\n    socialLayout?: \"auto\" | \"horizontal\" | \"grid\" | \"vertical\"\n    view?: keyof AuthViewPaths\n    otpSeparators?: 0 | 1 | 2\n}\n\nexport function AuthView({\n    className,\n    classNames,\n    callbackURL,\n    cardHeader,\n    localization,\n    path: pathProp,\n    pathname,\n    redirectTo,\n    socialLayout: socialLayoutProp = \"auto\",\n    view: viewProp,\n    otpSeparators = 0\n}: AuthViewProps) {\n    const isHydrated = useIsHydrated()\n    const {\n        basePath,\n        credentials,\n        localization: contextLocalization,\n        magicLink,\n        emailOTP,\n        oneTap,\n        passkey,\n        anonymous,\n        siwe,\n        signUp,\n        social,\n        genericOAuth,\n        viewPaths,\n        Link\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    let socialLayout = socialLayoutProp\n    if (socialLayout === \"auto\") {\n        socialLayout = !credentials\n            ? \"vertical\"\n            : social?.providers && social.providers.length > 2\n              ? \"horizontal\"\n              : \"vertical\"\n    }\n\n    const path = pathProp ?? pathname?.split(\"/\").pop()\n\n    const view = viewProp || getViewByPath(viewPaths!, path) || \"SIGN_IN\"\n\n    const [isSubmitting, setIsSubmitting] = useState(false)\n\n    useEffect(() => {\n        const handlePageHide = () => setIsSubmitting(false)\n        window.addEventListener(\"pagehide\", handlePageHide)\n        return () => {\n            setIsSubmitting(false)\n            window.removeEventListener(\"pagehide\", handlePageHide)\n        }\n    }, [])\n\n    if (view === \"CALLBACK\") return <AuthCallback redirectTo={redirectTo} />\n    if (view === \"SIGN_OUT\") return <SignOut />\n    if (view === \"ACCEPT_INVITATION\") return <AcceptInvitationCard />\n\n    const description =\n        !credentials && !magicLink && !emailOTP\n            ? localization.DISABLED_CREDENTIALS_DESCRIPTION\n            : localization[`${view}_DESCRIPTION` as keyof typeof localization]\n\n    return (\n        <Card className={cn(\"w-full max-w-sm\", className, classNames?.base)}>\n            <CardHeader className={classNames?.header}>\n                {cardHeader ? (\n                    cardHeader\n                ) : (\n                    <>\n                        <CardTitle\n                            className={cn(\n                                \"text-lg md:text-xl\",\n                                classNames?.title\n                            )}\n                        >\n                            {localization[view as keyof typeof localization]}\n                        </CardTitle>\n                        {description && (\n                            <CardDescription\n                                className={cn(\n                                    \"text-xs md:text-sm\",\n                                    classNames?.description\n                                )}\n                            >\n                                {description}\n                            </CardDescription>\n                        )}\n                    </>\n                )}\n            </CardHeader>\n\n            <CardContent className={cn(\"grid gap-6\", classNames?.content)}>\n                {oneTap &&\n                    [\"SIGN_IN\", \"SIGN_UP\", \"MAGIC_LINK\", \"EMAIL_OTP\"].includes(\n                        view as string\n                    ) && (\n                        <OneTap\n                            localization={localization}\n                            redirectTo={redirectTo}\n                        />\n                    )}\n\n                {(credentials || magicLink || emailOTP) && (\n                    <div className=\"grid gap-4\">\n                        <AuthForm\n                            classNames={classNames?.form}\n                            callbackURL={callbackURL}\n                            isSubmitting={isSubmitting}\n                            localization={localization}\n                            otpSeparators={otpSeparators}\n                            view={view}\n                            redirectTo={redirectTo}\n                            setIsSubmitting={setIsSubmitting}\n                        />\n\n                        {magicLink &&\n                            ((credentials &&\n                                [\n                                    \"FORGOT_PASSWORD\",\n                                    \"SIGN_UP\",\n                                    \"SIGN_IN\",\n                                    \"MAGIC_LINK\",\n                                    \"EMAIL_OTP\"\n                                ].includes(view as string)) ||\n                                (emailOTP && view === \"EMAIL_OTP\")) && (\n                                <MagicLinkButton\n                                    classNames={classNames}\n                                    localization={localization}\n                                    view={view}\n                                    isSubmitting={isSubmitting}\n                                />\n                            )}\n\n                        {emailOTP &&\n                            ((credentials &&\n                                [\n                                    \"FORGOT_PASSWORD\",\n                                    \"SIGN_UP\",\n                                    \"SIGN_IN\",\n                                    \"MAGIC_LINK\",\n                                    \"EMAIL_OTP\"\n                                ].includes(view as string)) ||\n                                (magicLink &&\n                                    [\"SIGN_IN\", \"MAGIC_LINK\"].includes(\n                                        view as string\n                                    ))) && (\n                                <EmailOTPButton\n                                    classNames={classNames}\n                                    localization={localization}\n                                    view={view}\n                                    isSubmitting={isSubmitting}\n                                />\n                            )}\n                    </div>\n                )}\n\n                {view !== \"RESET_PASSWORD\" &&\n                    (social?.providers?.length ||\n                        genericOAuth?.providers?.length ||\n                        (view === \"SIGN_IN\" && (passkey || anonymous || siwe))) && (\n                        <>\n                            {(credentials || magicLink || emailOTP) && (\n                                <div\n                                    className={cn(\n                                        \"flex items-center gap-2\",\n                                        classNames?.continueWith\n                                    )}\n                                >\n                                    <Separator\n                                        className={cn(\n                                            \"!w-auto grow\",\n                                            classNames?.separator\n                                        )}\n                                    />\n                                    <span className=\"flex-shrink-0 text-muted-foreground text-sm\">\n                                        {localization.OR_CONTINUE_WITH}\n                                    </span>\n                                    <Separator\n                                        className={cn(\n                                            \"!w-auto grow\",\n                                            classNames?.separator\n                                        )}\n                                    />\n                                </div>\n                            )}\n\n                            <div className=\"grid gap-4\">\n                                {(social?.providers?.length ||\n                                    genericOAuth?.providers?.length) && (\n                                    <div\n                                        className={cn(\n                                            \"flex w-full items-center justify-between gap-4\",\n                                            socialLayout === \"horizontal\" &&\n                                                \"flex-wrap\",\n                                            socialLayout === \"vertical\" &&\n                                                \"flex-col\",\n                                            socialLayout === \"grid\" &&\n                                                \"grid grid-cols-2\"\n                                        )}\n                                    >\n                                        {social?.providers?.map((provider: any) => {\n                                            const providerString = typeof provider === 'string' ? provider : provider.id;\n                                            const socialProvider =\n                                                socialProviders.find(\n                                                    (socialProvider) =>\n                                                        socialProvider.provider ===\n                                                        providerString\n                                                )\n                                            if (!socialProvider) return null\n                                            return (\n                                                <ProviderButton\n                                                    key={providerString}\n                                                    classNames={classNames}\n                                                    callbackURL={callbackURL}\n                                                    isSubmitting={isSubmitting}\n                                                    localization={localization}\n                                                    provider={socialProvider}\n                                                    redirectTo={redirectTo}\n                                                    setIsSubmitting={\n                                                        setIsSubmitting\n                                                    }\n                                                    socialLayout={socialLayout}\n                                                />\n                                            )\n                                        })}\n                                        {genericOAuth?.providers?.map(\n                                            (provider: any) => (\n                                                <ProviderButton\n                                                    key={typeof provider === 'string' ? provider : (provider as any).provider}\n                                                    classNames={classNames}\n                                                    callbackURL={callbackURL}\n                                                    isSubmitting={isSubmitting}\n                                                    localization={localization}\n                                                    provider={typeof provider === 'string' ? socialProviders.find(p => p.provider === provider) : provider as any}\n                                                    redirectTo={redirectTo}\n                                                    setIsSubmitting={\n                                                        setIsSubmitting\n                                                    }\n                                                    socialLayout={socialLayout}\n                                                    other\n                                                />\n                                            )\n                                        )}\n                                    </div>\n                                )}\n\n                                {passkey &&\n                                    [\n                                        \"SIGN_IN\",\n                                        \"MAGIC_LINK\",\n                                        \"EMAIL_OTP\",\n                                        \"RECOVER_ACCOUNT\",\n                                        \"TWO_FACTOR\",\n                                        \"FORGOT_PASSWORD\"\n                                    ].includes(view as string) && (\n                                        <PasskeyButton\n                                            classNames={classNames}\n                                            isSubmitting={isSubmitting}\n                                            localization={localization}\n                                            redirectTo={redirectTo}\n                                            setIsSubmitting={setIsSubmitting}\n                                        />\n                                    )}\n\n                                {anonymous && view === \"SIGN_IN\" && (\n                                    <AnonymousSignInButton\n                                        className=\"w-full\"\n                                        variant=\"outline\"\n                                        localization={{\n                                            buttonText: localization.ANONYMOUS_SIGN_IN,\n                                            signingIn: \"Signing in...\"\n                                        }}\n                                        isSubmitting={isSubmitting}\n                                        redirectTo={redirectTo}\n                                        setIsSubmitting={setIsSubmitting}\n                                    />\n                                )}\n\n                                {siwe &&\n                                    view === \"SIGN_IN\" &&\n                                    typeof window !== \"undefined\" &&\n                                    window.ethereum && (\n                                        <SiweSignInButton\n                                            variant=\"outline\"\n                                            classNames={classNames}\n                                            isSubmitting={isSubmitting}\n                                            localization={localization}\n                                            redirectTo={redirectTo}\n                                            setIsSubmitting={setIsSubmitting}\n                                        />\n                                    )}\n                            </div>\n                        </>\n                    )}\n            </CardContent>\n\n            {credentials && signUp && (\n                <CardFooter\n                    className={cn(\n                        \"justify-center gap-1.5 text-muted-foreground text-sm\",\n                        classNames?.footer\n                    )}\n                >\n                    {view === \"SIGN_IN\" ||\n                    view === \"MAGIC_LINK\" ||\n                    view === \"EMAIL_OTP\" ? (\n                        localization.DONT_HAVE_AN_ACCOUNT\n                    ) : view === \"SIGN_UP\" ? (\n                        localization.ALREADY_HAVE_AN_ACCOUNT\n                    ) : (\n                        <ArrowLeftIcon className=\"size-3\" />\n                    )}\n\n                    {view === \"SIGN_IN\" ||\n                    view === \"MAGIC_LINK\" ||\n                    view === \"EMAIL_OTP\" ||\n                    view === \"SIGN_UP\" ? (\n                        <Link\n                            className={cn(\n                                \"text-foreground underline\",\n                                classNames?.footerLink\n                            )}\n                            href={`${basePath}/${viewPaths[(view === \"SIGN_IN\" || view === \"MAGIC_LINK\" || view === \"EMAIL_OTP\") ? \"SIGN_UP\" : \"SIGN_IN\"]}${\n                                isHydrated ? window.location.search : \"\"\n                            }`}\n                        >\n                            <Button\n                                variant=\"link\"\n                                size=\"sm\"\n                                className={cn(\n                                    \"px-0 text-foreground underline\",\n                                    classNames?.footerLink\n                                )}\n                            >\n                                {view === \"SIGN_IN\" ||\n                                view === \"MAGIC_LINK\" ||\n                                view === \"EMAIL_OTP\"\n                                    ? localization.SIGN_UP\n                                    : localization.SIGN_IN}\n                            </Button>\n                        </Link>\n                    ) : (\n                        <Button\n                            variant=\"link\"\n                            size=\"sm\"\n                            className={cn(\n                                \"px-0 text-foreground underline\",\n                                classNames?.footerLink\n                            )}\n                            onClick={() => window.history.back()}\n                        >\n                            {localization.GO_BACK}\n                        </Button>\n                    )}\n                </CardFooter>\n            )}\n        </Card>\n    )\n}\n","/**\n * device-authorization-card\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardHeader,\n    CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Label } from \"@/components/ui/label\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface DeviceAuthorizationCardProps {\n    /**\n     * Custom CSS class for the card\n     */\n    className?: string\n\n    /**\n     * URL to redirect to after successful code validation\n     * The user_code will be appended as a query parameter\n     * @default \"/device/approve\"\n     */\n    redirectUrl?: string\n\n    /**\n     * Callback when code is successfully validated\n     * @param userCode - The validated user code\n     */\n    onSuccess?: (userCode: string) => void\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n}\n\n/**\n * DeviceAuthorizationCard Component\n *\n * A card component that allows users to enter device authorization codes.\n * Used in the OAuth 2.0 Device Authorization Grant flow (RFC 8628).\n * Validates the code and redirects to the approval page.\n *\n * @example\n * ```tsx\n * import { DeviceAuthorizationCard } from '@bettercone/ui';\n *\n * export function DevicePage() {\n *   return (\n *     <DeviceAuthorizationCard />\n *   );\n * }\n * ```\n *\n * @example\n * With custom redirect\n * ```tsx\n * <DeviceAuthorizationCard \n *   redirectUrl=\"/auth/device/confirm\"\n *   onSuccess={(code) => console.log('Valid code:', code)}\n * />\n * ```\n */\nexport function DeviceAuthorizationCard({\n    className,\n    redirectUrl = \"/device/approve\",\n    onSuccess,\n    localization: localizationProp,\n}: DeviceAuthorizationCardProps) {\n    const context = React.useContext(AuthUIContext)\n    const localization = React.useMemo(\n        () => ({ ...context?.localization, ...localizationProp }),\n        [context?.localization, localizationProp]\n    )\n    const authClient = context?.authClient\n\n    const [userCode, setUserCode] = React.useState(\"\")\n    const [isLoading, setIsLoading] = React.useState(false)\n    const [error, setError] = React.useState<string | null>(null)\n\n    // Format user code: remove dashes, convert to uppercase, add dash after 4 chars\n    const formatUserCode = (value: string) => {\n        // Remove all non-alphanumeric characters and convert to uppercase\n        const cleaned = value.replace(/[^A-Z0-9]/gi, \"\").toUpperCase()\n        \n        // Limit to 8 characters\n        const limited = cleaned.slice(0, 8)\n        \n        // Add dash after 4 characters\n        if (limited.length > 4) {\n            return `${limited.slice(0, 4)}-${limited.slice(4)}`\n        }\n        \n        return limited\n    }\n\n    const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const formatted = formatUserCode(e.target.value)\n        setUserCode(formatted)\n        setError(null) // Clear error on input change\n    }\n\n    const handleSubmit = async (e: React.FormEvent) => {\n        e.preventDefault()\n        \n        if (!authClient?.device) {\n            setError(localization.DEVICE_CODE_NO_CLIENT || \"Auth client not configured\")\n            return\n        }\n\n        if (!userCode || userCode.length < 8) {\n            setError(localization.DEVICE_CODE_REQUIRED || \"Please enter a valid device code\")\n            return\n        }\n\n        setIsLoading(true)\n        setError(null)\n\n        try {\n            // Remove dash for API call\n            const formattedCode = userCode.replace(/-/g, \"\")\n\n            // Verify the code is valid\n            const response = await authClient.device({\n                query: { user_code: formattedCode },\n            })\n\n            if (response.data) {\n                // Code is valid, call onSuccess callback\n                if (onSuccess) {\n                    onSuccess(formattedCode)\n                }\n\n                // Redirect to approval page\n                if (typeof window !== \"undefined\") {\n                    window.location.href = `${redirectUrl}?user_code=${formattedCode}`\n                }\n            } else if (response.error) {\n                setError(\n                    response.error.message || \n                    localization.DEVICE_CODE_INVALID || \n                    \"Invalid or expired code\"\n                )\n            }\n        } catch (err) {\n            setError(localization.DEVICE_CODE_INVALID || \"Invalid or expired code\")\n        } finally {\n            setIsLoading(false)\n        }\n    }\n\n    return (\n        <Card className={cn(\"w-full max-w-md\", className)}>\n            <CardHeader>\n                <CardTitle>\n                    {localization.DEVICE_AUTH_TITLE || \"Enter Your Device Code\"}\n                </CardTitle>\n                <CardDescription>\n                    {localization.DEVICE_AUTH_DESCRIPTION ||\n                        \"Enter the code shown on your device to continue.\"}\n                </CardDescription>\n            </CardHeader>\n            <CardContent>\n                <form onSubmit={handleSubmit} className=\"space-y-4\">\n                    <div className=\"space-y-2\">\n                        <Label htmlFor=\"device-code\">\n                            {localization.DEVICE_CODE_LABEL || \"Device Code\"}\n                        </Label>\n                        <Input\n                            id=\"device-code\"\n                            type=\"text\"\n                            placeholder={\n                                localization.DEVICE_CODE_PLACEHOLDER || \"ABCD-1234\"\n                            }\n                            value={userCode}\n                            onChange={handleInputChange}\n                            maxLength={9} // 8 characters + 1 dash\n                            className={cn(\n                                \"font-mono text-lg tracking-wider text-center uppercase\",\n                                error && \"border-destructive\"\n                            )}\n                            disabled={isLoading}\n                            autoComplete=\"off\"\n                            autoCorrect=\"off\"\n                            autoCapitalize=\"characters\"\n                            spellCheck={false}\n                        />\n                        <p className=\"text-xs text-muted-foreground\">\n                            {localization.DEVICE_CODE_FORMAT || \"Format: XXXX-XXXX\"}\n                        </p>\n                    </div>\n\n                    {error && (\n                        <div className=\"text-sm text-destructive\" role=\"alert\">\n                            {error}\n                        </div>\n                    )}\n\n                    <Button\n                        type=\"submit\"\n                        className=\"w-full\"\n                        disabled={isLoading || userCode.length < 8}\n                    >\n                        {isLoading\n                            ? localization.LOADING || \"Loading...\"\n                            : localization.DEVICE_AUTH_SUBMIT || \"Continue\"}\n                    </Button>\n                </form>\n            </CardContent>\n        </Card>\n    )\n}\n","/**\n * device-approval-card\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon, Loader2, XIcon, Smartphone } from \"lucide-react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardHeader,\n    CardTitle,\n} from \"@/components/ui/card\"\nimport { Button } from \"@/components/ui/button\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\nexport interface DeviceApprovalCardProps {\n    /**\n     * The user code from the device authorization request\n     * Usually passed as a URL query parameter\n     */\n    userCode: string\n\n    /**\n     * Custom CSS class for the card\n     */\n    className?: string\n\n    /**\n     * Custom class names for sub-components\n     */\n    classNames?: SettingsCardClassNames\n\n    /**\n     * URL to redirect to after approval or denial\n     * @default \"/\"\n     */\n    redirectUrl?: string\n\n    /**\n     * Callback when device is approved\n     */\n    onApprove?: () => void\n\n    /**\n     * Callback when device is denied\n     */\n    onDeny?: () => void\n\n    /**\n     * Whether to show client information if available\n     * @default true\n     */\n    showClientInfo?: boolean\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n}\n\n/**\n * DeviceApprovalCard Component\n *\n * Allows authenticated users to approve or deny device authorization requests.\n * Used in the OAuth 2.0 Device Authorization Grant flow (RFC 8628).\n *\n * @example\n * ```tsx\n * import { DeviceApprovalCard } from '@bettercone/ui';\n *\n * export function DeviceApprovalPage({ searchParams }) {\n *   return (\n *     <DeviceApprovalCard userCode={searchParams.user_code} />\n *   );\n * }\n * ```\n *\n * @example\n * With custom redirect\n * ```tsx\n * <DeviceApprovalCard \n *   userCode=\"ABCD1234\"\n *   redirectUrl=\"/dashboard\"\n *   onApprove={() => console.log('Approved')}\n * />\n * ```\n */\nexport function DeviceApprovalCard({\n    userCode,\n    className,\n    classNames,\n    redirectUrl = \"/\",\n    onApprove,\n    onDeny,\n    showClientInfo = true,\n    localization: localizationProp,\n}: DeviceApprovalCardProps) {\n    const context = React.useContext(AuthUIContext)\n    const localization = React.useMemo(\n        () => ({ ...context?.localization, ...localizationProp }),\n        [context?.localization, localizationProp]\n    )\n    const authClient = context?.authClient\n\n    const [isApproving, setIsApproving] = React.useState(false)\n    const [isDenying, setIsDenying] = React.useState(false)\n    const [error, setError] = React.useState<string | null>(null)\n    const [success, setSuccess] = React.useState<string | null>(null)\n    const [deviceInfo, setDeviceInfo] = React.useState<{\n        clientId?: string\n        scope?: string\n    } | null>(null)\n    const [isPending, setIsPending] = React.useState(true)\n\n    // Fetch device information on mount\n    React.useEffect(() => {\n        const fetchDeviceInfo = async () => {\n            if (!authClient?.device || !userCode) {\n                setIsPending(false)\n                return\n            }\n\n            try {\n                const response = await authClient.device({\n                    query: { user_code: userCode },\n                })\n\n                if (response.data) {\n                    setDeviceInfo({\n                        clientId: response.data.clientId,\n                        scope: response.data.scope,\n                    })\n                }\n            } catch (err) {\n                // Silently fail - device info is optional\n                console.error(\"Failed to fetch device info:\", err)\n            } finally {\n                setIsPending(false)\n            }\n        }\n\n        fetchDeviceInfo()\n    }, [authClient, userCode])\n\n    const handleApprove = async () => {\n        if (!authClient?.device) {\n            setError(localization.DEVICE_CODE_NO_CLIENT || \"Auth client not configured\")\n            return\n        }\n\n        setIsApproving(true)\n        setError(null)\n        setSuccess(null)\n\n        try {\n            const response = await authClient.device.approve({\n                userCode: userCode,\n            })\n\n            if (response.data) {\n                setSuccess(\n                    localization.DEVICE_APPROVED_SUCCESS || \"Device approved successfully\"\n                )\n\n                // Call onApprove callback\n                if (onApprove) {\n                    onApprove()\n                }\n\n                // Redirect after short delay to show success message\n                setTimeout(() => {\n                    if (typeof window !== \"undefined\") {\n                        window.location.href = redirectUrl\n                    }\n                }, 1500)\n            } else if (response.error) {\n                setError(\n                    response.error.message ||\n                    localization.DEVICE_APPROVE_ERROR ||\n                    \"Failed to approve device\"\n                )\n            }\n        } catch (err) {\n            setError(localization.DEVICE_APPROVE_ERROR || \"Failed to approve device\")\n        } finally {\n            setIsApproving(false)\n        }\n    }\n\n    const handleDeny = async () => {\n        if (!authClient?.device) {\n            setError(localization.DEVICE_CODE_NO_CLIENT || \"Auth client not configured\")\n            return\n        }\n\n        setIsDenying(true)\n        setError(null)\n        setSuccess(null)\n\n        try {\n            const response = await authClient.device.deny({\n                userCode: userCode,\n            })\n\n            if (response.data) {\n                setSuccess(localization.DEVICE_DENIED_SUCCESS || \"Device denied\")\n\n                // Call onDeny callback\n                if (onDeny) {\n                    onDeny()\n                }\n\n                // Redirect after short delay to show success message\n                setTimeout(() => {\n                    if (typeof window !== \"undefined\") {\n                        window.location.href = redirectUrl\n                    }\n                }, 1500)\n            } else if (response.error) {\n                setError(\n                    response.error.message ||\n                    localization.DEVICE_DENY_ERROR ||\n                    \"Failed to deny device\"\n                )\n            }\n        } catch (err) {\n            setError(localization.DEVICE_DENY_ERROR || \"Failed to deny device\")\n        } finally {\n            setIsDenying(false)\n        }\n    }\n\n    const isProcessing = isApproving || isDenying\n\n    // Format user code for display (add dash)\n    const formattedUserCode = userCode.length === 8\n        ? `${userCode.slice(0, 4)}-${userCode.slice(4)}`\n        : userCode\n\n    if (isPending) {\n        return <DeviceApprovalSkeleton className={className} classNames={classNames} localization={localization} />\n    }\n\n    if (success) {\n        return (\n            <Card className={cn(\"w-full max-w-md\", className, classNames?.base)}>\n                <CardHeader className={cn(\"text-center\", classNames?.header)}>\n                    <div className=\"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-green-100 dark:bg-green-900/20\">\n                        <CheckIcon className=\"h-6 w-6 text-green-600 dark:text-green-500\" />\n                    </div>\n                    <CardTitle className={cn(\"text-lg md:text-xl\", classNames?.title)}>\n                        {success}\n                    </CardTitle>\n                    <CardDescription className={cn(\"text-xs md:text-sm\", classNames?.description)}>\n                        {localization.DEVICE_APPROVED_SUCCESS || \"Redirecting...\"}\n                    </CardDescription>\n                </CardHeader>\n            </Card>\n        )\n    }\n\n    if (error) {\n        return (\n            <Card className={cn(\"w-full max-w-md border-destructive/40\", className, classNames?.base)}>\n                <CardHeader className={cn(\"text-center\", classNames?.header)}>\n                    <div className=\"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-destructive/10\">\n                        <XIcon className=\"h-6 w-6 text-destructive\" />\n                    </div>\n                    <CardTitle className={cn(\"text-lg md:text-xl\", classNames?.title)}>\n                        {localization.UNEXPECTED_ERROR || \"Error\"}\n                    </CardTitle>\n                    <CardDescription className={cn(\"text-xs md:text-sm text-destructive\", classNames?.description)}>\n                        {error}\n                    </CardDescription>\n                </CardHeader>\n            </Card>\n        )\n    }\n\n    return (\n        <Card className={cn(\"w-full max-w-md\", className, classNames?.base)}>\n            <CardHeader className={cn(\"text-center\", classNames?.header)}>\n                <div className=\"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-primary/10\">\n                    <Smartphone className=\"h-6 w-6 text-primary\" />\n                </div>\n                <CardTitle className={cn(\"text-lg md:text-xl\", classNames?.title)}>\n                    {localization.DEVICE_APPROVAL_TITLE || \"Device Authorization\"}\n                </CardTitle>\n                <CardDescription className={cn(\"text-xs md:text-sm\", classNames?.description)}>\n                    {localization.DEVICE_APPROVAL_DESCRIPTION || \"A device is requesting access to your account\"}\n                </CardDescription>\n            </CardHeader>\n            <CardContent className={cn(\"flex flex-col gap-6\", classNames?.content)}>\n                {/* Device Code Display */}\n                <Card className=\"p-4\">\n                    <div className=\"space-y-3\">\n                        <p className=\"text-xs font-medium text-muted-foreground text-center\">\n                            {localization.DEVICE_APPROVAL_CODE_LABEL || \"Device Code\"}\n                        </p>\n                        <p className=\"text-center text-2xl font-mono font-bold tracking-wider\">\n                            {formattedUserCode}\n                        </p>\n                    </div>\n                </Card>\n\n                {/* Client Information (if available) */}\n                {showClientInfo && (deviceInfo?.clientId || deviceInfo?.scope) && (\n                    <div className=\"space-y-2\">\n                        {deviceInfo?.clientId && (\n                            <div>\n                                <p className=\"text-xs font-medium text-muted-foreground mb-1\">\n                                    {localization.DEVICE_APPROVAL_APP_LABEL || \"Application\"}\n                                </p>\n                                <p className=\"text-sm\">{deviceInfo.clientId}</p>\n                            </div>\n                        )}\n\n                        {deviceInfo?.scope && (\n                            <div>\n                                <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n                                    {localization.DEVICE_APPROVAL_SCOPES_LABEL || \"Permissions\"}\n                                </p>\n                                <div className=\"flex flex-wrap gap-1.5\">\n                                    {deviceInfo.scope.split(\" \").map((scope) => (\n                                        <Badge key={scope} variant=\"secondary\" className=\"text-xs\">\n                                            {scope}\n                                        </Badge>\n                                    ))}\n                                </div>\n                            </div>\n                        )}\n                    </div>\n                )}\n\n                {/* Action Buttons */}\n                <div className=\"grid grid-cols-2 gap-3\">\n                    <Button\n                        variant=\"outline\"\n                        className={cn(classNames?.button, classNames?.outlineButton)}\n                        onClick={handleDeny}\n                        disabled={isProcessing}\n                    >\n                        {isDenying ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <XIcon />\n                        )}\n\n                        {localization.DEVICE_DENY_BUTTON || \"Deny\"}\n                    </Button>\n\n                    <Button\n                        className={cn(\"bg-green-600 hover:bg-green-700 dark:bg-green-700 dark:hover:bg-green-800\", classNames?.button, classNames?.primaryButton)}\n                        onClick={handleApprove}\n                        disabled={isProcessing}\n                    >\n                        {isApproving ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <CheckIcon />\n                        )}\n\n                        {localization.DEVICE_APPROVE_BUTTON || \"Approve\"}\n                    </Button>\n                </div>\n\n                {/* Security Notice */}\n                <p className=\"text-xs text-center text-muted-foreground\">\n                    {localization.DEVICE_APPROVAL_NOTICE ||\n                        \"Only approve if you initiated this request on your device\"}\n                </p>\n            </CardContent>\n        </Card>\n    )\n}\n\nfunction DeviceApprovalSkeleton({\n    className,\n    classNames,\n    localization,\n}: Pick<DeviceApprovalCardProps, 'className' | 'classNames' | 'localization'>) {\n    return (\n        <Card className={cn(\"w-full max-w-md\", className, classNames?.base)}>\n            <CardHeader className={cn(\"text-center\", classNames?.header)}>\n                <div className=\"mx-auto mb-4 flex h-12 w-12 items-center justify-center rounded-full bg-muted\">\n                    <Skeleton className=\"h-6 w-6 rounded-full\" />\n                </div>\n                <Skeleton className={cn(\"mx-auto h-5 w-48 md:h-5.5\", classNames?.skeleton)} />\n                <Skeleton className={cn(\"mx-auto mt-2 h-3 w-64 md:h-3.5\", classNames?.skeleton)} />\n            </CardHeader>\n            <CardContent className={cn(\"flex flex-col gap-6\", classNames?.content)}>\n                <Card className=\"p-4\">\n                    <div className=\"space-y-3\">\n                        <Skeleton className=\"mx-auto h-3 w-20\" />\n                        <Skeleton className=\"mx-auto h-8 w-32\" />\n                    </div>\n                </Card>\n\n                <div className=\"grid grid-cols-2 gap-3\">\n                    <Skeleton className=\"h-9 w-full\" />\n                    <Skeleton className=\"h-9 w-full\" />\n                </div>\n\n                <Skeleton className=\"mx-auto h-3 w-56\" />\n            </CardContent>\n        </Card>\n    )\n}\n","/**\n * dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { XIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Dialog({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n  return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n  return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />\n}\n\nfunction DialogPortal({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n  return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />\n}\n\nfunction DialogClose({\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n  return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n  return (\n    <DialogPrimitive.Overlay\n      data-slot=\"dialog-overlay\"\n      className={cn(\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogContent({\n  className,\n  children,\n  showCloseButton = true,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n  showCloseButton?: boolean\n}) {\n  return (\n    <DialogPortal data-slot=\"dialog-portal\">\n      <DialogOverlay />\n      <DialogPrimitive.Content\n        data-slot=\"dialog-content\"\n        className={cn(\n          \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        {showCloseButton && (\n          <DialogPrimitive.Close\n            data-slot=\"dialog-close\"\n            className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n          >\n            <XIcon />\n            <span className=\"sr-only\">Close</span>\n          </DialogPrimitive.Close>\n        )}\n      </DialogPrimitive.Content>\n    </DialogPortal>\n  )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-header\"\n      className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"dialog-footer\"\n      className={cn(\n        \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n  return (\n    <DialogPrimitive.Title\n      data-slot=\"dialog-title\"\n      className={cn(\"text-lg leading-none font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n  return (\n    <DialogPrimitive.Description\n      data-slot=\"dialog-description\"\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Dialog,\n  DialogClose,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogOverlay,\n  DialogPortal,\n  DialogTitle,\n  DialogTrigger,\n}\n","/**\n * session-freshness-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { type ComponentProps, useContext } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Button } from \"../../ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"../../ui/dialog\"\nimport type { SettingsCardClassNames } from \"./settings-card\"\n\nexport interface SessionFreshnessDialogProps\n    extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    title?: string\n    description?: string\n}\n\nexport function SessionFreshnessDialog({\n    classNames,\n    localization,\n    title,\n    description,\n    onOpenChange,\n    ...props\n}: SessionFreshnessDialogProps) {\n    const {\n        basePath,\n        localization: contextLocalization,\n        viewPaths,\n        navigate\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const handleSignOut = () => {\n        navigate(`${basePath}/${viewPaths.SIGN_OUT}`)\n        onOpenChange?.(false)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={cn(\"sm:max-w-md\", classNames?.dialog?.content)}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {title ||\n                            localization?.SESSION_EXPIRED ||\n                            \"Session Expired\"}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {description || localization?.SESSION_NOT_FRESH}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"secondary\"\n                        className={cn(\n                            classNames?.button,\n                            classNames?.secondaryButton\n                        )}\n                        onClick={() => onOpenChange?.(false)}\n                    >\n                        {localization.CANCEL}\n                    </Button>\n\n                    <Button\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                        variant=\"default\"\n                        onClick={handleSignOut}\n                    >\n                        {localization?.SIGN_OUT}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * passkey-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { FingerprintIcon, Loader2 } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { SessionFreshnessDialog } from \"@/components/settings/shared/session-freshness-dialog\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\nexport interface PasskeyCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n    passkey: { id: string; createdAt: Date }\n}\n\nexport function PasskeyCell({\n    className,\n    classNames,\n    localization,\n    passkey\n}: PasskeyCellProps) {\n    const {\n        freshAge,\n        hooks: { useSession, useListPasskeys },\n        localization: contextLocalization,\n        mutators: { deletePasskey },\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const listPasskeysResult = useListPasskeys();\n    const refetch = listPasskeysResult?.refetch;\n\n    const { data: sessionData } = useSession()\n    const session = sessionData?.session\n    const isFresh = session\n        ? Date.now() - new Date(session?.createdAt).getTime() < freshAge * 1000\n        : false\n\n    const [showFreshnessDialog, setShowFreshnessDialog] = useState(false)\n    const [isLoading, setIsLoading] = useState(false)\n\n    const handleDeletePasskey = async () => {\n        // If session isn't fresh, show the freshness dialog\n        if (!isFresh) {\n            setShowFreshnessDialog(true)\n            return\n        }\n\n        setIsLoading(true)\n\n        try {\n            await deletePasskey?.({ id: passkey.id })\n            refetch?.()\n        } catch (error) {\n            setIsLoading(false)\n\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <>\n            <SessionFreshnessDialog\n                open={showFreshnessDialog}\n                onOpenChange={setShowFreshnessDialog}\n                classNames={classNames}\n                localization={localization}\n            />\n\n            <Card\n                className={cn(\n                    \"flex-row items-center p-4\",\n                    className,\n                    classNames?.cell\n                )}\n            >\n                <div className=\"flex items-center gap-3\">\n                    <FingerprintIcon\n                        className={cn(\"size-4\", classNames?.icon)}\n                    />\n                    <span className=\"text-sm\">\n                        {new Date(passkey.createdAt).toLocaleString()}\n                    </span>\n                </div>\n\n                <Button\n                    className={cn(\n                        \"relative ms-auto\",\n                        classNames?.button,\n                        classNames?.outlineButton\n                    )}\n                    disabled={isLoading}\n                    size=\"sm\"\n                    variant=\"outline\"\n                    onClick={handleDeletePasskey}\n                >\n                    {isLoading && <Loader2 className=\"animate-spin\" />}\n\n                    {localization.DELETE}\n                </Button>\n            </Card>\n        </>\n    )\n}\n","/**\n * settings-action-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2 } from \"lucide-react\"\nimport type { ComponentProps, ReactNode } from \"react\"\nimport { useFormState } from \"react-hook-form\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Button } from \"../../ui/button\"\nimport type { SettingsCardClassNames } from \"./settings-card\"\n\ninterface SettingsActionButtonProps extends ComponentProps<typeof Button> {\n    classNames?: SettingsCardClassNames\n    actionLabel: ReactNode\n    disabled?: boolean\n    isSubmitting?: boolean\n}\n\nexport function SettingsActionButton({\n    classNames,\n    actionLabel,\n    disabled,\n    isSubmitting,\n    variant,\n    onClick,\n    ...props\n}: SettingsActionButtonProps) {\n    if (!onClick) {\n        const formState = useFormState()\n        isSubmitting = formState.isSubmitting\n    }\n\n    return (\n        <Button\n            className={cn(\n                \"md:ms-auto\",\n                classNames?.button,\n                variant === \"default\" && classNames?.primaryButton,\n                variant === \"destructive\" && classNames?.destructiveButton\n            )}\n            disabled={isSubmitting || disabled}\n            size=\"sm\"\n            type={onClick ? \"button\" : \"submit\"}\n            variant={variant}\n            onClick={onClick}\n            {...props}\n        >\n            {isSubmitting && <Loader2 className=\"animate-spin\" />}\n            {actionLabel}\n        </Button>\n    )\n}\n","/**\n * settings-card-footer\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { ReactNode } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { CardDescription, CardFooter } from \"../../ui/card\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport { SettingsActionButton } from \"./settings-action-button\"\nimport type { SettingsCardClassNames } from \"./settings-card\"\n\nexport interface SettingsCardFooterProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    actionLabel?: ReactNode\n    disabled?: boolean\n    instructions?: ReactNode\n    isPending?: boolean\n    isSubmitting?: boolean\n    optimistic?: boolean\n    variant?: \"default\" | \"destructive\"\n    action?: () => Promise<unknown> | unknown\n}\n\nexport function SettingsCardFooter({\n    className,\n    classNames,\n    actionLabel,\n    disabled,\n    instructions,\n    isPending,\n    isSubmitting,\n    variant,\n    action\n}: SettingsCardFooterProps) {\n    return (\n        <CardFooter\n            className={cn(\n                \"flex flex-col justify-between gap-4 rounded-b-xl md:flex-row\",\n                (actionLabel || instructions) && \"!py-4 border-t\",\n                variant === \"destructive\"\n                    ? \"border-destructive/30 bg-destructive/15\"\n                    : \"bg-sidebar\",\n                className,\n                classNames?.footer\n            )}\n        >\n            {isPending ? (\n                <>\n                    {instructions && (\n                        <Skeleton\n                            className={cn(\n                                \"my-0.5 h-3 w-48 max-w-full md:h-4 md:w-56\",\n                                classNames?.skeleton\n                            )}\n                        />\n                    )}\n\n                    {actionLabel && (\n                        <Skeleton\n                            className={cn(\n                                \"h-8 w-14 md:ms-auto\",\n                                classNames?.skeleton\n                            )}\n                        />\n                    )}\n                </>\n            ) : (\n                <>\n                    {instructions && (\n                        <CardDescription\n                            className={cn(\n                                \"text-center text-muted-foreground text-xs md:text-start md:text-sm\",\n                                classNames?.instructions\n                            )}\n                        >\n                            {instructions}\n                        </CardDescription>\n                    )}\n\n                    {actionLabel && (\n                        <SettingsActionButton\n                            classNames={classNames}\n                            actionLabel={actionLabel}\n                            disabled={disabled}\n                            isSubmitting={isSubmitting}\n                            variant={variant}\n                            onClick={action}\n                        />\n                    )}\n                </>\n            )}\n        </CardFooter>\n    )\n}\n","/**\n * settings-card-header\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { ReactNode } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { CardDescription, CardHeader, CardTitle } from \"../../ui/card\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport type { SettingsCardClassNames } from \"./settings-card\"\n\nexport interface SettingsCardHeaderProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    description?: ReactNode\n    isPending?: boolean\n    title: ReactNode\n}\n\nexport function SettingsCardHeader({\n    className,\n    classNames,\n    description,\n    isPending,\n    title\n}: SettingsCardHeaderProps) {\n    return (\n        <CardHeader className={cn(classNames?.header, className)}>\n            {isPending ? (\n                <>\n                    <Skeleton\n                        className={cn(\n                            \"my-0.5 h-5 w-1/3 md:h-5.5\",\n                            classNames?.skeleton\n                        )}\n                    />\n\n                    {description && (\n                        <Skeleton\n                            className={cn(\n                                \"mt-1.5 mb-0.5 h-3 w-2/3 md:h-3.5\",\n                                classNames?.skeleton\n                            )}\n                        />\n                    )}\n                </>\n            ) : (\n                <>\n                    <CardTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {title}\n                    </CardTitle>\n\n                    {description && (\n                        <CardDescription\n                            className={cn(\n                                \"text-xs md:text-sm\",\n                                classNames?.description\n                            )}\n                        >\n                            {description}\n                        </CardDescription>\n                    )}\n                </>\n            )}\n        </CardHeader>\n    )\n}\n","/**\n * settings-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { ComponentProps, ReactNode } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport type { UserAvatarClassNames } from \"../../user\"\nimport { SettingsCardFooter } from \"./settings-card-footer\"\nimport { SettingsCardHeader } from \"./settings-card-header\"\n\nexport type SettingsCardClassNames = {\n    base?: string\n    avatar?: UserAvatarClassNames\n    button?: string\n    cell?: string\n    checkbox?: string\n    destructiveButton?: string\n    content?: string\n    description?: string\n    dialog?: {\n        content?: string\n        footer?: string\n        header?: string\n    }\n    error?: string\n    footer?: string\n    header?: string\n    icon?: string\n    input?: string\n    instructions?: string\n    label?: string\n    primaryButton?: string\n    secondaryButton?: string\n    outlineButton?: string\n    skeleton?: string\n    title?: string\n}\n\nexport interface SettingsCardProps\n    extends Omit<ComponentProps<typeof Card>, \"title\"> {\n    children?: ReactNode\n    className?: string\n    classNames?: SettingsCardClassNames\n    title?: ReactNode\n    description?: ReactNode\n    instructions?: ReactNode\n    actionLabel?: ReactNode\n    isSubmitting?: boolean\n    disabled?: boolean\n    isPending?: boolean\n    optimistic?: boolean\n    variant?: \"default\" | \"destructive\"\n    size?: \"default\" | \"compact\" | \"button-only\"\n    icon?: LucideIcon\n    localization?: AuthLocalization\n    action?: () => Promise<unknown> | unknown\n}\n\nexport function SettingsCard({\n    children,\n    className,\n    classNames,\n    title,\n    description,\n    instructions,\n    actionLabel,\n    disabled,\n    isPending,\n    isSubmitting,\n    optimistic,\n    variant,\n    size = \"default\",\n    icon: IconComponent,\n    action,\n    ...props\n}: SettingsCardProps) {\n    // Button-only variant - render just the action button with optional icon\n    if (size === \"button-only\") {\n        return (\n            <Button\n                className={cn(\n                    classNames?.button,\n                    variant === \"destructive\" && classNames?.destructiveButton\n                )}\n                variant={variant === \"destructive\" ? \"destructive\" : \"default\"}\n                disabled={disabled || isPending || isSubmitting}\n                onClick={action}\n            >\n                {IconComponent && <IconComponent className=\"mr-2 h-4 w-4\" />}\n                {actionLabel}\n            </Button>\n        )\n    }\n\n    // Compact variant - minimal horizontal layout with icon, title, and action button\n    if (size === \"compact\") {\n        const hasChildren = Boolean(children);\n        const hasAction = Boolean(action) && Boolean(actionLabel);\n\n        return (\n            <Card\n                className={cn(\n                    \"w-full\",\n                    variant === \"destructive\" && \"border-destructive/40 bg-destructive/5\",\n                    className,\n                    classNames?.base\n                )}\n                {...props}\n            >\n                <div className=\"p-3\">\n                    <div className=\"flex items-center justify-between gap-3\">\n                        {/* Left side: Icon and Title */}\n                        <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n                            {IconComponent && (\n                                <div className={cn(\n                                    \"flex-shrink-0\",\n                                    variant === \"destructive\" ? \"text-destructive\" : \"text-muted-foreground\",\n                                    classNames?.icon\n                                )}>\n                                    <IconComponent className=\"h-4 w-4\" />\n                                </div>\n                            )}\n                            <div className=\"flex-1 min-w-0\">\n                                {isPending ? (\n                                    <div className=\"h-4 w-24 bg-muted rounded animate-pulse\" />\n                                ) : (\n                                    <h3 className={cn(\n                                        \"text-sm font-medium\",\n                                        variant === \"destructive\" ? \"text-destructive\" : \"text-foreground\",\n                                        classNames?.title\n                                    )}>\n                                        {title}\n                                    </h3>\n                                )}\n                            </div>\n                        </div>\n\n                        {/* Right side: Children OR Action Button */}\n                        {hasChildren ? (\n                            <div className=\"flex-shrink-0\">\n                                {children}\n                            </div>\n                        ) : hasAction ? (\n                            <div className=\"flex-shrink-0\">\n                                <Button\n                                    className={cn(\n                                        \"text-sm h-8 px-3\",\n                                        variant === \"destructive\" && classNames?.destructiveButton,\n                                        classNames?.button\n                                    )}\n                                    variant={variant === \"destructive\" ? \"destructive\" : \"outline\"}\n                                    disabled={disabled || isPending || isSubmitting}\n                                    onClick={action}\n                                >\n                                    {actionLabel}\n                                </Button>\n                            </div>\n                        ) : null}\n                    </div>\n                </div>\n            </Card>\n        )\n    }\n\n    // Default variant - full card with all features\n    return (\n        <Card\n            className={cn(\n                \"w-full pb-0 text-start\",\n                variant === \"destructive\" && \"border-destructive/40\",\n                className,\n                classNames?.base\n            )}\n            {...props}\n        >\n            <SettingsCardHeader\n                classNames={classNames}\n                description={description}\n                isPending={isPending}\n                title={title}\n            />\n\n            {children}\n\n            <SettingsCardFooter\n                classNames={classNames}\n                actionLabel={actionLabel}\n                disabled={disabled}\n                isPending={isPending}\n                isSubmitting={isSubmitting}\n                instructions={instructions}\n                optimistic={optimistic}\n                variant={variant}\n                action={action}\n            />\n        </Card>\n    )\n}\n","/**\n * passkeys-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { CardContent } from \"@/components/ui/card\"\nimport { Form } from \"@/components/ui/form\"\nimport { SessionFreshnessDialog } from \"@/components/settings/shared/session-freshness-dialog\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport { PasskeyCell } from \"@/components/security/cells/passkey-cell\"\n\nexport interface PasskeysCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n}\n\nexport function PasskeysCard({\n    className,\n    classNames,\n    localization\n}: PasskeysCardProps) {\n    const {\n        authClient,\n        freshAge,\n        hooks: { useListPasskeys, useSession },\n        localization: authLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...authLocalization, ...localization }\n\n    const { data: passkeys, isPending, refetch } = useListPasskeys()\n\n    const { data: sessionData } = useSession()\n    const session = sessionData?.session\n    const isFresh = session\n        ? Date.now() - new Date(session?.createdAt).getTime() < freshAge * 1000\n        : false\n\n    const [showFreshnessDialog, setShowFreshnessDialog] = useState(false)\n\n    const addPasskey = async () => {\n        // If session isn't fresh, show the freshness dialog\n        if (!isFresh) {\n            setShowFreshnessDialog(true)\n            return\n        }\n\n        try {\n            await authClient.passkey.addPasskey({\n                fetchOptions: { throw: true }\n            })\n            await refetch?.()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const form = useForm()\n\n    return (\n        <>\n            <SessionFreshnessDialog\n                open={showFreshnessDialog}\n                onOpenChange={setShowFreshnessDialog}\n                classNames={classNames}\n                localization={localization}\n            />\n\n            <Form {...form}>\n                <form onSubmit={form.handleSubmit(addPasskey)}>\n                    <SettingsCard\n                        className={className}\n                        classNames={classNames}\n                        actionLabel={localization.ADD_PASSKEY}\n                        description={localization.PASSKEYS_DESCRIPTION}\n                        instructions={localization.PASSKEYS_INSTRUCTIONS}\n                        isPending={isPending}\n                        title={localization.PASSKEYS}\n                    >\n                        {passkeys && passkeys.length > 0 && (\n                            <CardContent\n                                className={cn(\n                                    \"grid gap-4\",\n                                    classNames?.content\n                                )}\n                            >\n                                {passkeys?.map((passkey: any) => (\n                                    <PasskeyCell\n                                        key={passkey.id}\n                                        classNames={classNames}\n                                        localization={localization}\n                                        passkey={passkey}\n                                    />\n                                ))}\n                            </CardContent>\n                        )}\n                    </SettingsCard>\n                </form>\n            </Form>\n        </>\n    )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { CircleIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction RadioGroup({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n  return (\n    <RadioGroupPrimitive.Root\n      data-slot=\"radio-group\"\n      className={cn(\"grid gap-3\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction RadioGroupItem({\n  className,\n  ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n  return (\n    <RadioGroupPrimitive.Item\n      data-slot=\"radio-group-item\"\n      className={cn(\n        \"border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator\n        data-slot=\"radio-group-indicator\"\n        className=\"relative flex items-center justify-center\"\n      >\n        <CircleIcon className=\"fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n}\n\nexport { RadioGroup, RadioGroupItem }\n","/**\n * passkey-setup-wizard\n * Step-by-step passkey registration wizard for Better Auth\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { CheckCircle2, Fingerprint, Key, Loader2, ShieldCheck } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { RadioGroup, RadioGroupItem } from \"@/components/ui/radio-group\"\n\ntype WizardStep = \"intro\" | \"name\" | \"type\" | \"register\" | \"success\"\n\nexport interface PasskeySetupWizardProps {\n    className?: string\n    classNames?: {\n        card?: string\n        header?: string\n        title?: string\n        description?: string\n        content?: string\n        footer?: string\n        button?: string\n        input?: string\n        label?: string\n        error?: string\n        step?: string\n        stepIcon?: string\n        stepText?: string\n    }\n    localization?: Partial<AuthLocalization>\n    onSuccess?: () => void\n    onCancel?: () => void\n    defaultName?: string\n    defaultType?: \"platform\" | \"cross-platform\"\n}\n\nexport function PasskeySetupWizard({\n    className,\n    classNames,\n    localization: localizationProp,\n    onSuccess,\n    onCancel,\n    defaultName,\n    defaultType = \"platform\"\n}: PasskeySetupWizardProps) {\n    const {\n        authClient,\n        hooks: { useSession },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp } as any\n\n    const { data: sessionData } = useSession()\n    const [currentStep, setCurrentStep] = useState<WizardStep>(\"intro\")\n    const [passkeyName, setPasskeyName] = useState(\n        defaultName || sessionData?.user.email || sessionData?.user.name || \"\"\n    )\n    const [authenticatorType, setAuthenticatorType] = useState<\"platform\" | \"cross-platform\">(defaultType)\n    const [isRegistering, setIsRegistering] = useState(false)\n    const [error, setError] = useState<string>()\n\n    const handleRegister = async () => {\n        setIsRegistering(true)\n        setError(undefined)\n\n        try {\n            const result = await authClient.passkey.addPasskey({\n                name: passkeyName || undefined,\n                authenticatorAttachment: authenticatorType\n            })\n\n            if (result.error) {\n                setError(getLocalizedError({ error: result.error, localization }))\n                setIsRegistering(false)\n                return\n            }\n\n            toast({\n                variant: \"success\",\n                message: \"Passkey registered successfully!\"\n            })\n\n            setCurrentStep(\"success\")\n            setIsRegistering(false)\n        } catch (err) {\n            setError(getLocalizedError({ error: err, localization }))\n            setIsRegistering(false)\n        }\n    }\n\n    const handleFinish = () => {\n        onSuccess?.()\n    }\n\n    const handleCancel = () => {\n        onCancel?.()\n    }\n\n    const renderStep = () => {\n        switch (currentStep) {\n            case \"intro\":\n                return (\n                    <>\n                        <CardHeader className={classNames?.header}>\n                            <div className=\"flex items-center gap-3\">\n                                <div className=\"flex h-12 w-12 items-center justify-center rounded-full bg-primary/10\">\n                                    <ShieldCheck className={cn(\"h-6 w-6 text-primary\", classNames?.stepIcon)} />\n                                </div>\n                                <div>\n                                    <CardTitle className={classNames?.title}>\n                                        {localization.PASSKEY_SETUP_TITLE || \"Set Up Passkey\"}\n                                    </CardTitle>\n                                    <CardDescription className={classNames?.description}>\n                                        {localization.PASSKEY_SETUP_DESCRIPTION || \"Secure your account with passwordless authentication\"}\n                                    </CardDescription>\n                                </div>\n                            </div>\n                        </CardHeader>\n                        <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                            <div className=\"space-y-3\">\n                                <div className=\"flex items-start gap-3\">\n                                    <CheckCircle2 className=\"mt-0.5 h-5 w-5 text-primary\" />\n                                    <div>\n                                        <p className=\"font-medium\">\n                                            {localization.PASSKEY_BENEFIT_1_TITLE || \"Passwordless Login\"}\n                                        </p>\n                                        <p className=\"text-muted-foreground text-sm\">\n                                            {localization.PASSKEY_BENEFIT_1_DESC || \"Sign in with your fingerprint, face, or PIN\"}\n                                        </p>\n                                    </div>\n                                </div>\n                                <div className=\"flex items-start gap-3\">\n                                    <CheckCircle2 className=\"mt-0.5 h-5 w-5 text-primary\" />\n                                    <div>\n                                        <p className=\"font-medium\">\n                                            {localization.PASSKEY_BENEFIT_2_TITLE || \"Enhanced Security\"}\n                                        </p>\n                                        <p className=\"text-muted-foreground text-sm\">\n                                            {localization.PASSKEY_BENEFIT_2_DESC || \"Phishing-resistant authentication using WebAuthn\"}\n                                        </p>\n                                    </div>\n                                </div>\n                                <div className=\"flex items-start gap-3\">\n                                    <CheckCircle2 className=\"mt-0.5 h-5 w-5 text-primary\" />\n                                    <div>\n                                        <p className=\"font-medium\">\n                                            {localization.PASSKEY_BENEFIT_3_TITLE || \"Faster Access\"}\n                                        </p>\n                                        <p className=\"text-muted-foreground text-sm\">\n                                            {localization.PASSKEY_BENEFIT_3_DESC || \"Quick authentication without typing passwords\"}\n                                        </p>\n                                    </div>\n                                </div>\n                            </div>\n                        </CardContent>\n                        <CardFooter className={cn(\"flex justify-between\", classNames?.footer)}>\n                            {onCancel && (\n                                <Button\n                                    variant=\"outline\"\n                                    onClick={handleCancel}\n                                    className={classNames?.button}\n                                >\n                                    {localization.CANCEL || \"Cancel\"}\n                                </Button>\n                            )}\n                            <Button\n                                onClick={() => setCurrentStep(\"name\")}\n                                className={cn(\"ml-auto\", classNames?.button)}\n                            >\n                                {localization.GET_STARTED || \"Get Started\"}\n                            </Button>\n                        </CardFooter>\n                    </>\n                )\n\n            case \"name\":\n                return (\n                    <>\n                        <CardHeader className={classNames?.header}>\n                            <CardTitle className={classNames?.title}>\n                                {localization.PASSKEY_NAME_TITLE || \"Name Your Passkey\"}\n                            </CardTitle>\n                            <CardDescription className={classNames?.description}>\n                                {localization.PASSKEY_NAME_DESCRIPTION || \"Choose a memorable name to identify this passkey\"}\n                            </CardDescription>\n                        </CardHeader>\n                        <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                            <div className=\"space-y-2\">\n                                <Label htmlFor=\"passkey-name\" className={classNames?.label}>\n                                    {localization.PASSKEY_NAME || \"Passkey Name\"}\n                                </Label>\n                                <Input\n                                    id=\"passkey-name\"\n                                    type=\"text\"\n                                    placeholder={localization.PASSKEY_NAME_PLACEHOLDER || \"e.g., My iPhone, Work Laptop\"}\n                                    value={passkeyName}\n                                    onChange={(e) => setPasskeyName(e.target.value)}\n                                    className={classNames?.input}\n                                />\n                                <p className=\"text-muted-foreground text-xs\">\n                                    {localization.PASSKEY_NAME_HINT || \"This helps you identify which device or authenticator you're using\"}\n                                </p>\n                            </div>\n                        </CardContent>\n                        <CardFooter className={cn(\"flex justify-between\", classNames?.footer)}>\n                            <Button\n                                variant=\"outline\"\n                                onClick={() => setCurrentStep(\"intro\")}\n                                className={classNames?.button}\n                            >\n                                {localization.BACK || \"Back\"}\n                            </Button>\n                            <Button\n                                onClick={() => setCurrentStep(\"type\")}\n                                className={classNames?.button}\n                            >\n                                {localization.NEXT || \"Next\"}\n                            </Button>\n                        </CardFooter>\n                    </>\n                )\n\n            case \"type\":\n                return (\n                    <>\n                        <CardHeader className={classNames?.header}>\n                            <CardTitle className={classNames?.title}>\n                                Choose Authenticator Type\n                            </CardTitle>\n                            <CardDescription className={classNames?.description}>\n                                Select how you want to authenticate\n                            </CardDescription>\n                        </CardHeader>\n                        <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                            <RadioGroup\n                                value={authenticatorType}\n                                onValueChange={(value: \"platform\" | \"cross-platform\") => setAuthenticatorType(value)}\n                                className=\"grid gap-3\"\n                            >\n                                <Label\n                                    htmlFor=\"platform\"\n                                    className={cn(\n                                        \"flex items-start space-x-3 rounded-lg border p-4 cursor-pointer transition-colors hover:bg-muted/50\",\n                                        authenticatorType === \"platform\" && \"border-primary bg-primary/5\"\n                                    )}\n                                >\n                                    <RadioGroupItem value=\"platform\" id=\"platform\" className=\"mt-0.5\" />\n                                    <div className=\"flex-1\">\n                                        <div className=\"flex items-center gap-2 mb-1\">\n                                            <Fingerprint className=\"h-5 w-5 text-primary\" />\n                                            <span className=\"font-medium\">This Device</span>\n                                        </div>\n                                        <p className=\"text-muted-foreground text-sm\">\n                                            Use built-in biometrics like Face ID, Touch ID, or Windows Hello\n                                        </p>\n                                    </div>\n                                </Label>\n                                <Label\n                                    htmlFor=\"cross-platform\"\n                                    className={cn(\n                                        \"flex items-start space-x-3 rounded-lg border p-4 cursor-pointer transition-colors hover:bg-muted/50\",\n                                        authenticatorType === \"cross-platform\" && \"border-primary bg-primary/5\"\n                                    )}\n                                >\n                                    <RadioGroupItem value=\"cross-platform\" id=\"cross-platform\" className=\"mt-0.5\" />\n                                    <div className=\"flex-1\">\n                                        <div className=\"flex items-center gap-2 mb-1\">\n                                            <Key className=\"h-5 w-5 text-primary\" />\n                                            <span className=\"font-medium\">Security Key</span>\n                                        </div>\n                                        <p className=\"text-muted-foreground text-sm\">\n                                            Use a physical security key like YubiKey or other FIDO2 device\n                                        </p>\n                                    </div>\n                                </Label>\n                            </RadioGroup>\n                        </CardContent>\n                        <CardFooter className={cn(\"flex justify-between\", classNames?.footer)}>\n                            <Button\n                                variant=\"outline\"\n                                onClick={() => setCurrentStep(\"name\")}\n                                className={classNames?.button}\n                            >\n                                {localization.SIGN_IN_BACK || \"Back\"}\n                            </Button>\n                            <Button\n                                onClick={() => setCurrentStep(\"register\")}\n                                className={classNames?.button}\n                            >\n                                Next\n                            </Button>\n                        </CardFooter>\n                    </>\n                )\n\n            case \"register\":\n                return (\n                    <>\n                        <CardHeader className={classNames?.header}>\n                            <CardTitle className={classNames?.title}>\n                                {localization.PASSKEY_REGISTER_TITLE || \"Register Your Passkey\"}\n                            </CardTitle>\n                            <CardDescription className={classNames?.description}>\n                                {localization.PASSKEY_REGISTER_DESCRIPTION || \"Click the button below to complete registration\"}\n                            </CardDescription>\n                        </CardHeader>\n                        <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                            <div className=\"rounded-lg border bg-muted/50 p-4 space-y-3\">\n                                <div className=\"flex items-center gap-2\">\n                                    <span className=\"font-medium\">{localization.PASSKEY_NAME || \"Name\"}:</span>\n                                    <span className=\"text-muted-foreground\">{passkeyName || localization.UNNAMED || \"Unnamed\"}</span>\n                                </div>\n                                <div className=\"flex items-center gap-2\">\n                                    <span className=\"font-medium\">{localization.PASSKEY_TYPE || \"Type\"}:</span>\n                                    <span className=\"text-muted-foreground\">\n                                        {authenticatorType === \"platform\"\n                                            ? localization.PASSKEY_TYPE_PLATFORM || \"This Device\"\n                                            : localization.PASSKEY_TYPE_CROSS_PLATFORM || \"Security Key\"}\n                                    </span>\n                                </div>\n                            </div>\n\n                            {error && (\n                                <div className={cn(\"text-destructive text-sm\", classNames?.error)}>\n                                    {error}\n                                </div>\n                            )}\n\n                            <div className=\"rounded-lg border border-primary/20 bg-primary/5 p-4\">\n                                <p className=\"text-sm\">\n                                    {authenticatorType === \"platform\"\n                                        ? localization.PASSKEY_REGISTER_HINT_PLATFORM || \"You'll be prompted to use your device's biometric authentication (fingerprint, face recognition, or PIN).\"\n                                        : localization.PASSKEY_REGISTER_HINT_CROSS_PLATFORM || \"Insert your security key when prompted and follow the on-screen instructions.\"}\n                                </p>\n                            </div>\n                        </CardContent>\n                        <CardFooter className={cn(\"flex justify-between\", classNames?.footer)}>\n                            <Button\n                                variant=\"outline\"\n                                onClick={() => setCurrentStep(\"type\")}\n                                disabled={isRegistering}\n                                className={classNames?.button}\n                            >\n                                {localization.BACK || \"Back\"}\n                            </Button>\n                            <Button\n                                onClick={handleRegister}\n                                disabled={isRegistering}\n                                className={classNames?.button}\n                            >\n                                {isRegistering && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n                                {isRegistering\n                                    ? localization.PASSKEY_REGISTERING || \"Registering...\"\n                                    : localization.PASSKEY_REGISTER || \"Register Passkey\"}\n                            </Button>\n                        </CardFooter>\n                    </>\n                )\n\n            case \"success\":\n                return (\n                    <>\n                        <CardHeader className={classNames?.header}>\n                            <div className=\"flex flex-col items-center gap-4 text-center\">\n                                <div className=\"flex h-16 w-16 items-center justify-center rounded-full bg-primary/10\">\n                                    <CheckCircle2 className={cn(\"h-8 w-8 text-primary\", classNames?.stepIcon)} />\n                                </div>\n                                <div>\n                                    <CardTitle className={classNames?.title}>\n                                        {localization.PASSKEY_SUCCESS_TITLE || \"Passkey Registered!\"}\n                                    </CardTitle>\n                                    <CardDescription className={classNames?.description}>\n                                        {localization.PASSKEY_SUCCESS_DESCRIPTION || \"Your passkey has been successfully registered\"}\n                                    </CardDescription>\n                                </div>\n                            </div>\n                        </CardHeader>\n                        <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                            <div className=\"rounded-lg border bg-muted/50 p-4 text-center\">\n                                <p className=\"text-sm\">\n                                    {localization.PASSKEY_SUCCESS_MESSAGE || \"You can now use your passkey to sign in quickly and securely without a password.\"}\n                                </p>\n                            </div>\n                        </CardContent>\n                        <CardFooter className={cn(\"flex justify-center\", classNames?.footer)}>\n                            <Button\n                                onClick={handleFinish}\n                                className={classNames?.button}\n                            >\n                                {localization.DONE || \"Done\"}\n                            </Button>\n                        </CardFooter>\n                    </>\n                )\n        }\n    }\n\n    return (\n        <Card className={cn(\"w-full max-w-2xl\", className, classNames?.card)}>\n            {renderStep()}\n        </Card>\n    )\n}\n","/**\n * backup-codes-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { CheckIcon, CopyIcon } from \"lucide-react\"\nimport { type ComponentProps, useContext, useState } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\ninterface BackupCodesDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    backupCodes: string[]\n}\n\nexport function BackupCodesDialog({\n    classNames,\n    backupCodes,\n    onOpenChange,\n    ...props\n}: BackupCodesDialogProps) {\n    const { localization } = useContext(AuthUIContext)\n    const [copied, setCopied] = useState(false)\n\n    const handleCopy = () => {\n        const codeText = backupCodes.join(\"\\n\")\n        navigator.clipboard.writeText(codeText)\n        setCopied(true)\n        setTimeout(() => setCopied(false), 2000)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                onOpenAutoFocus={(e) => e.preventDefault()}\n                className={classNames?.dialog?.content}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.BACKUP_CODES}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.BACKUP_CODES_DESCRIPTION}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <div className=\"grid grid-cols-2 gap-2\">\n                    {backupCodes.map((code, index) => (\n                        <div\n                            key={index}\n                            className=\"rounded-md bg-muted p-2 text-center font-mono text-sm\"\n                        >\n                            {code}\n                        </div>\n                    ))}\n                </div>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={handleCopy}\n                        disabled={copied}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                    >\n                        {copied ? (\n                            <>\n                                <CheckIcon className={classNames?.icon} />\n                                {localization.COPIED_TO_CLIPBOARD}\n                            </>\n                        ) : (\n                            <>\n                                <CopyIcon className={classNames?.icon} />\n                                {localization.COPY_ALL_CODES}\n                            </>\n                        )}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"default\"\n                        onClick={() => onOpenChange?.(false)}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                    >\n                        {localization.CONTINUE}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * two-factor-password-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport { PasswordInput } from \"@/components/utility\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { BackupCodesDialog } from \"./backup-codes-dialog\"\n\ninterface TwoFactorPasswordDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    isTwoFactorEnabled: boolean\n}\n\nexport function TwoFactorPasswordDialog({\n    classNames,\n    onOpenChange,\n    isTwoFactorEnabled,\n    ...props\n}: TwoFactorPasswordDialogProps) {\n    const {\n        localization,\n        authClient,\n        basePath,\n        viewPaths,\n        navigate,\n        toast,\n        twoFactor\n    } = useContext(AuthUIContext)\n    const [showBackupCodesDialog, setShowBackupCodesDialog] = useState(false)\n    const [backupCodes, setBackupCodes] = useState<string[]>([])\n    const [totpURI, setTotpURI] = useState<string | null>(null)\n\n    const formSchema = z.object({\n        password: z.string().min(1, { message: localization.PASSWORD_REQUIRED })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            password: \"\"\n        }\n    })\n\n    const { isSubmitting } = form.formState\n\n    async function enableTwoFactor({ password }: z.infer<typeof formSchema>) {\n        try {\n            const response = await authClient.twoFactor.enable({\n                password,\n                fetchOptions: { throw: true }\n            })\n\n            onOpenChange?.(false)\n            setBackupCodes(response.backupCodes)\n\n            if (twoFactor?.includes(\"totp\")) {\n                setTotpURI(response.totpURI)\n            }\n\n            setTimeout(() => {\n                setShowBackupCodesDialog(true)\n            }, 250)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    async function disableTwoFactor({ password }: z.infer<typeof formSchema>) {\n        try {\n            await authClient.twoFactor.disable({\n                password,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.TWO_FACTOR_DISABLED\n            })\n\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <>\n            <Dialog onOpenChange={onOpenChange} {...props}>\n                <DialogContent\n                    className={cn(\"sm:max-w-md\", classNames?.dialog)}\n                >\n                    <DialogHeader className={classNames?.dialog?.header}>\n                        <DialogTitle className={classNames?.title}>\n                            {localization.TWO_FACTOR}\n                        </DialogTitle>\n\n                        <DialogDescription className={classNames?.description}>\n                            {isTwoFactorEnabled\n                                ? localization.TWO_FACTOR_DISABLE_INSTRUCTIONS\n                                : localization.TWO_FACTOR_ENABLE_INSTRUCTIONS}\n                        </DialogDescription>\n                    </DialogHeader>\n\n                    <Form {...form}>\n                        <form\n                            onSubmit={form.handleSubmit(\n                                isTwoFactorEnabled\n                                    ? disableTwoFactor\n                                    : enableTwoFactor\n                            )}\n                            className=\"grid gap-4\"\n                        >\n                            <FormField\n                                control={form.control}\n                                name=\"password\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization.PASSWORD}\n                                        </FormLabel>\n\n                                        <FormControl>\n                                            <PasswordInput\n                                                className={classNames?.input}\n                                                placeholder={\n                                                    localization.PASSWORD_PLACEHOLDER\n                                                }\n                                                autoComplete=\"current-password\"\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n\n                            <DialogFooter\n                                className={classNames?.dialog?.footer}\n                            >\n                                <Button\n                                    type=\"button\"\n                                    variant=\"secondary\"\n                                    onClick={() => onOpenChange?.(false)}\n                                    className={cn(\n                                        classNames?.button,\n                                        classNames?.secondaryButton\n                                    )}\n                                >\n                                    {localization.CANCEL}\n                                </Button>\n\n                                <Button\n                                    type=\"submit\"\n                                    disabled={isSubmitting}\n                                    className={cn(\n                                        classNames?.button,\n                                        classNames?.primaryButton\n                                    )}\n                                >\n                                    {isSubmitting && (\n                                        <Loader2 className=\"animate-spin\" />\n                                    )}\n                                    {isTwoFactorEnabled\n                                        ? localization.DISABLE_TWO_FACTOR\n                                        : localization.ENABLE_TWO_FACTOR}\n                                </Button>\n                            </DialogFooter>\n                        </form>\n                    </Form>\n                </DialogContent>\n            </Dialog>\n\n            <BackupCodesDialog\n                classNames={classNames}\n                open={showBackupCodesDialog}\n                onOpenChange={(open) => {\n                    setShowBackupCodesDialog(open)\n\n                    if (!open) {\n                        const url = `${basePath}/${viewPaths.TWO_FACTOR}`\n                        navigate(\n                            twoFactor?.includes(\"totp\") && totpURI\n                                ? `${url}?totpURI=${totpURI}`\n                                : url\n                        )\n                    }\n                }}\n                backupCodes={backupCodes}\n            />\n        </>\n    )\n}\n","/**\n * two-factor-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { User } from \"@/types/auth-client\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport { TwoFactorPasswordDialog } from \"@/components/security/dialogs/two-factor-password-dialog\"\n\nexport interface TwoFactorCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n}\n\nexport function TwoFactorCard({\n    className,\n    classNames,\n    localization\n}: TwoFactorCardProps) {\n    const {\n        localization: contextLocalization,\n        hooks: { useSession }\n    } = useContext(AuthUIContext)\n\n    const [showPasswordDialog, setShowPasswordDialog] = useState(false)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData, isPending } = useSession()\n    const isTwoFactorEnabled = (sessionData?.user as User)?.twoFactorEnabled\n\n    return (\n        <div>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                actionLabel={\n                    isTwoFactorEnabled\n                        ? localization.DISABLE_TWO_FACTOR\n                        : localization.ENABLE_TWO_FACTOR\n                }\n                description={localization.TWO_FACTOR_CARD_DESCRIPTION}\n                instructions={\n                    isTwoFactorEnabled\n                        ? localization.TWO_FACTOR_DISABLE_INSTRUCTIONS\n                        : localization.TWO_FACTOR_ENABLE_INSTRUCTIONS\n                }\n                isPending={isPending}\n                title={localization.TWO_FACTOR}\n                action={() => setShowPasswordDialog(true)}\n            />\n\n            <TwoFactorPasswordDialog\n                classNames={classNames}\n                open={showPasswordDialog}\n                onOpenChange={setShowPasswordDialog}\n                isTwoFactorEnabled={!!isTwoFactorEnabled}\n            />\n        </div>\n    )\n}\n","/**\n * input-field-skeleton\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\n\nexport function InputFieldSkeleton({\n    classNames\n}: {\n    classNames?: SettingsCardClassNames\n}) {\n    return (\n        <div className=\"flex flex-col gap-1.5\">\n            <Skeleton className={cn(\"h-4 w-32\", classNames?.skeleton)} />\n            <Skeleton className={cn(\"h-9 w-full\", classNames?.skeleton)} />\n        </div>\n    )\n}\n","/**\n * change-password-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { useContext } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError, getPasswordSchema } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { PasswordValidation } from \"@/types/password-validation\"\nimport { PasswordInput } from \"@/components/utility\"\nimport { CardContent } from \"@/components/ui/card\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport {\n    SettingsCard,\n    type SettingsCardClassNames\n} from \"@/components/settings/shared/settings-card\"\nimport { InputFieldSkeleton } from \"@/components/settings/skeletons/input-field-skeleton\"\n\nexport interface ChangePasswordCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    accounts?: { providerId: string }[] | null\n    isPending?: boolean\n    localization?: AuthLocalization\n    skipHook?: boolean\n    passwordValidation?: PasswordValidation\n}\n\nexport function ChangePasswordCard({\n    className,\n    classNames,\n    accounts,\n    isPending,\n    localization,\n    skipHook,\n    passwordValidation\n}: ChangePasswordCardProps) {\n    const {\n        authClient,\n        basePath,\n        baseURL,\n        credentials,\n        hooks: { useSession, useListAccounts },\n        localization: contextLocalization,\n        viewPaths,\n        toast\n    } = useContext(AuthUIContext)\n\n    const confirmPasswordEnabled = credentials?.confirmPassword\n    const contextPasswordValidation = credentials?.passwordValidation\n\n    localization = { ...contextLocalization, ...localization }\n    passwordValidation = { ...contextPasswordValidation, ...passwordValidation }\n\n    const { data: sessionData } = useSession()\n\n    if (!skipHook) {\n        const result = useListAccounts()\n        accounts = result.data\n        isPending = result.isPending\n    }\n\n    const formSchema = z\n        .object({\n            currentPassword: getPasswordSchema(\n                passwordValidation,\n                localization\n            ),\n            newPassword: getPasswordSchema(passwordValidation, {\n                PASSWORD_REQUIRED: localization.NEW_PASSWORD_REQUIRED,\n                PASSWORD_TOO_SHORT: localization.PASSWORD_TOO_SHORT,\n                PASSWORD_TOO_LONG: localization.PASSWORD_TOO_LONG,\n                INVALID_PASSWORD: localization.INVALID_PASSWORD\n            }),\n            confirmPassword: confirmPasswordEnabled\n                ? getPasswordSchema(passwordValidation, {\n                      PASSWORD_REQUIRED: localization.CONFIRM_PASSWORD_REQUIRED,\n                      PASSWORD_TOO_SHORT: localization.PASSWORD_TOO_SHORT,\n                      PASSWORD_TOO_LONG: localization.PASSWORD_TOO_LONG,\n                      INVALID_PASSWORD: localization.INVALID_PASSWORD\n                  })\n                : z.string().optional()\n        })\n        .refine(\n            (data) =>\n                !confirmPasswordEnabled ||\n                data.newPassword === data.confirmPassword,\n            {\n                message: localization.PASSWORDS_DO_NOT_MATCH,\n                path: [\"confirmPassword\"]\n            }\n        )\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            currentPassword: \"\",\n            newPassword: \"\",\n            confirmPassword: \"\"\n        }\n    })\n\n    const setPasswordForm = useForm()\n\n    const { isSubmitting } = form.formState\n\n    const setPassword = async () => {\n        if (!sessionData) return\n        const email = sessionData?.user.email\n\n        try {\n            await authClient.requestPasswordReset({\n                email,\n                redirectTo: `${baseURL}${basePath}/${viewPaths.RESET_PASSWORD}`,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.FORGOT_PASSWORD_EMAIL!\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const changePassword = async ({\n        currentPassword,\n        newPassword\n    }: z.infer<typeof formSchema>) => {\n        try {\n            await authClient.changePassword({\n                currentPassword,\n                newPassword,\n                revokeOtherSessions: true,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.CHANGE_PASSWORD_SUCCESS!\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        form.reset()\n    }\n\n    const credentialsLinked = accounts?.some(\n        (acc) => acc.providerId === \"credential\"\n    )\n\n    if (!isPending && !credentialsLinked) {\n        return (\n            <Form {...setPasswordForm}>\n                <form onSubmit={setPasswordForm.handleSubmit(setPassword)}>\n                    <SettingsCard\n                        title={localization.SET_PASSWORD}\n                        description={localization.SET_PASSWORD_DESCRIPTION}\n                        actionLabel={localization.SET_PASSWORD}\n                        isPending={isPending}\n                        className={className}\n                        classNames={classNames}\n                    />\n                </form>\n            </Form>\n        )\n    }\n\n    return (\n        <Form {...form}>\n            <form onSubmit={form.handleSubmit(changePassword)}>\n                <SettingsCard\n                    className={className}\n                    classNames={classNames}\n                    actionLabel={localization.SAVE}\n                    description={localization.CHANGE_PASSWORD_DESCRIPTION}\n                    instructions={localization.CHANGE_PASSWORD_INSTRUCTIONS}\n                    isPending={isPending}\n                    title={localization.CHANGE_PASSWORD}\n                >\n                    <CardContent\n                        className={cn(\"grid gap-6\", classNames?.content)}\n                    >\n                        {isPending || !accounts ? (\n                            <>\n                                <InputFieldSkeleton classNames={classNames} />\n                                <InputFieldSkeleton classNames={classNames} />\n\n                                {confirmPasswordEnabled && (\n                                    <InputFieldSkeleton\n                                        classNames={classNames}\n                                    />\n                                )}\n                            </>\n                        ) : (\n                            <>\n                                <FormField\n                                    control={form.control}\n                                    name=\"currentPassword\"\n                                    render={({ field }) => (\n                                        <FormItem>\n                                            <FormLabel\n                                                className={classNames?.label}\n                                            >\n                                                {localization.CURRENT_PASSWORD}\n                                            </FormLabel>\n\n                                            <FormControl>\n                                                <PasswordInput\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    autoComplete=\"current-password\"\n                                                    placeholder={\n                                                        localization.CURRENT_PASSWORD_PLACEHOLDER\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...field}\n                                                />\n                                            </FormControl>\n\n                                            <FormMessage\n                                                className={classNames?.error}\n                                            />\n                                        </FormItem>\n                                    )}\n                                />\n\n                                <FormField\n                                    control={form.control}\n                                    name=\"newPassword\"\n                                    render={({ field }) => (\n                                        <FormItem>\n                                            <FormLabel\n                                                className={classNames?.label}\n                                            >\n                                                {localization.NEW_PASSWORD}\n                                            </FormLabel>\n\n                                            <FormControl>\n                                                <PasswordInput\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    autoComplete=\"new-password\"\n                                                    disabled={isSubmitting}\n                                                    placeholder={\n                                                        localization.NEW_PASSWORD_PLACEHOLDER\n                                                    }\n                                                    enableToggle\n                                                    {...field}\n                                                />\n                                            </FormControl>\n\n                                            <FormMessage\n                                                className={classNames?.error}\n                                            />\n                                        </FormItem>\n                                    )}\n                                />\n\n                                {confirmPasswordEnabled && (\n                                    <FormField\n                                        control={form.control}\n                                        name=\"confirmPassword\"\n                                        render={({ field }) => (\n                                            <FormItem>\n                                                <FormLabel\n                                                    className={\n                                                        classNames?.label\n                                                    }\n                                                >\n                                                    {\n                                                        localization.CONFIRM_PASSWORD\n                                                    }\n                                                </FormLabel>\n\n                                                <FormControl>\n                                                    <PasswordInput\n                                                        className={\n                                                            classNames?.input\n                                                        }\n                                                        autoComplete=\"new-password\"\n                                                        placeholder={\n                                                            localization.CONFIRM_PASSWORD_PLACEHOLDER\n                                                        }\n                                                        disabled={isSubmitting}\n                                                        enableToggle\n                                                        {...field}\n                                                    />\n                                                </FormControl>\n\n                                                <FormMessage\n                                                    className={\n                                                        classNames?.error\n                                                    }\n                                                />\n                                            </FormItem>\n                                        )}\n                                    />\n                                )}\n                            </>\n                        )}\n                    </CardContent>\n                </SettingsCard>\n            </form>\n        </Form>\n    )\n}\n","/**\n * settings-cell-skeleton\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { Card } from \"../../ui/card\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\n\nexport function SettingsCellSkeleton({\n    classNames\n}: {\n    classNames?: SettingsCardClassNames\n}) {\n    return (\n        <Card\n            className={cn(\n                \"flex-row items-center gap-3 px-4 py-3\",\n                classNames?.cell\n            )}\n        >\n            <div className=\"flex items-center gap-2\">\n                <Skeleton\n                    className={cn(\"size-5 rounded-full\", classNames?.skeleton)}\n                />\n\n                <div>\n                    <Skeleton\n                        className={cn(\"h-4 w-24\", classNames?.skeleton)}\n                    />\n                </div>\n            </div>\n\n            <Skeleton\n                className={cn(\"ms-auto size-8 w-12\", classNames?.skeleton)}\n            />\n        </Card>\n    )\n}\n","/**\n * session-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Session } from \"better-auth\"\nimport { LaptopIcon, Loader2, SmartphoneIcon } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { UAParser } from \"ua-parser-js\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { Refetch } from \"@/types/refetch\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\nexport interface SessionCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n    session: Session\n    refetch?: Refetch\n}\n\nexport function SessionCell({\n    className,\n    classNames,\n    localization,\n    session,\n    refetch\n}: SessionCellProps) {\n    const {\n        basePath,\n        hooks: { useSession },\n        localization: contextLocalization,\n        mutators: { revokeSession },\n        viewPaths,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData } = useSession()\n    const isCurrentSession = session.id === sessionData?.session?.id\n\n    const [isLoading, setIsLoading] = useState(false)\n\n    const handleRevoke = async () => {\n        setIsLoading(true)\n\n        if (isCurrentSession) {\n            navigate(`${basePath}/${viewPaths.SIGN_OUT}`)\n            return\n        }\n\n        try {\n            await revokeSession?.({ token: session.token })\n            refetch?.()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsLoading(false)\n        }\n    }\n\n    const parser = UAParser(session.userAgent as string)\n    const isMobile = parser.device.type === \"mobile\"\n\n    return (\n        <Card\n            className={cn(\n                \"flex-row items-center gap-3 px-4 py-3\",\n                className,\n                classNames?.cell\n            )}\n        >\n            {isMobile ? (\n                <SmartphoneIcon className={cn(\"size-4\", classNames?.icon)} />\n            ) : (\n                <LaptopIcon className={cn(\"size-4\", classNames?.icon)} />\n            )}\n\n            <div className=\"flex flex-col\">\n                <span className=\"font-semibold text-sm\">\n                    {isCurrentSession\n                        ? localization.CURRENT_SESSION\n                        : session?.ipAddress}\n                </span>\n\n                <span className=\"text-muted-foreground text-xs\">\n                    {session.userAgent?.includes(\"tauri-plugin-http\")\n                        ? localization.APP\n                        : parser.os.name && parser.browser.name\n                          ? `${parser.os.name}, ${parser.browser.name}`\n                          : parser.os.name ||\n                            parser.browser.name ||\n                            session.userAgent ||\n                            localization.UNKNOWN}\n                </span>\n            </div>\n\n            <Button\n                className={cn(\n                    \"relative ms-auto\",\n                    classNames?.button,\n                    classNames?.outlineButton\n                )}\n                disabled={isLoading}\n                size=\"sm\"\n                variant=\"outline\"\n                onClick={handleRevoke}\n            >\n                {isLoading && <Loader2 className=\"animate-spin\" />}\n                {isCurrentSession ? localization.SIGN_OUT : localization.REVOKE}\n            </Button>\n        </Card>\n    )\n}\n","/**\n * sessions-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { CardContent } from \"@/components/ui/card\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCellSkeleton } from \"@/components/settings/skeletons/settings-cell-skeleton\"\nimport { SessionCell } from \"@/components/security/cells/session-cell\"\n\nexport interface SessionsCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n}\n\nexport function SessionsCard({\n    className,\n    classNames,\n    localization\n}: SessionsCardProps) {\n    const {\n        hooks: { useListSessions },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessions, isPending, refetch } = useListSessions()\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            description={localization.SESSIONS_DESCRIPTION}\n            isPending={isPending}\n            title={localization.SESSIONS}\n        >\n            <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                {isPending ? (\n                    <SettingsCellSkeleton classNames={classNames} />\n                ) : (\n                    sessions?.map((session) => (\n                        <SessionCell\n                            key={session.id}\n                            classNames={classNames}\n                            localization={localization}\n                            session={session}\n                            refetch={refetch}\n                        />\n                    ))\n                )}\n            </CardContent>\n        </SettingsCard>\n    )\n}\n","/**\n * change-email-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { useContext, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport { CardContent } from \"../../ui/card\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormMessage\n} from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport type { SettingsCardProps } from \"../shared/settings-card\"\nimport { SettingsCard } from \"../shared/settings-card\"\n\nexport function ChangeEmailCard({\n    className,\n    classNames,\n    localization,\n    ...props\n}: SettingsCardProps) {\n    const {\n        authClient,\n        emailVerification,\n        hooks: { useSession },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData, isPending, refetch } = useSession()\n    const [resendDisabled, setResendDisabled] = useState(false)\n\n    const formSchema = z.object({\n        email: z.string().email({ message: localization.INVALID_EMAIL })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        values: {\n            email: sessionData?.user.email || \"\"\n        }\n    })\n\n    const resendForm = useForm()\n\n    const { isSubmitting } = form.formState\n\n    const changeEmail = async ({ email }: z.infer<typeof formSchema>) => {\n        if (email === sessionData?.user.email) {\n            await new Promise((resolve) => setTimeout(resolve))\n            toast({\n                variant: \"error\",\n                message: localization.EMAIL_IS_THE_SAME || \"Email is the same\"\n            })\n            return\n        }\n\n        try {\n            await authClient.$fetch(\"/user/change-email\", {\n                method: \"POST\",\n                body: {\n                    newEmail: email,\n                    callbackURL: window.location.pathname\n                },\n                throw: true\n            })\n\n            if (sessionData?.user.emailVerified) {\n                toast({\n                    variant: \"success\",\n                    message: localization.EMAIL_VERIFY_CHANGE || \"Please check your email to verify the change.\"\n                })\n            } else {\n                await refetch?.()\n                toast({\n                    variant: \"success\",\n                    message: `${localization.EMAIL} ${localization.UPDATED_SUCCESSFULLY}`\n                })\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const resendVerification = async () => {\n        if (!sessionData) return\n        const email = sessionData.user.email\n\n        setResendDisabled(true)\n\n        try {\n            await authClient.$fetch(\"/send-verification-email\", {\n                method: \"POST\",\n                body: {\n                    email\n                },\n                throw: true\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.EMAIL_VERIFICATION || \"Please check your email for the verification link.\"\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n            setResendDisabled(false)\n            throw error\n        }\n    }\n\n    return (\n        <>\n            <Form {...form}>\n                <form noValidate onSubmit={form.handleSubmit(changeEmail)}>\n                    <SettingsCard\n                        className={className}\n                        classNames={classNames}\n                        description={localization.EMAIL_DESCRIPTION}\n                        instructions={localization.EMAIL_INSTRUCTIONS}\n                        isPending={isPending}\n                        title={localization.EMAIL}\n                        actionLabel={localization.SAVE}\n                        {...props}\n                    >\n                        <CardContent className={classNames?.content}>\n                            {isPending ? (\n                                <Skeleton\n                                    className={cn(\n                                        \"h-9 w-full\",\n                                        classNames?.skeleton\n                                    )}\n                                />\n                            ) : (\n                                <FormField\n                                    control={form.control}\n                                    name=\"email\"\n                                    render={({ field }) => (\n                                        <FormItem>\n                                            <FormControl>\n                                                <Input\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    placeholder={\n                                                        localization.EMAIL_PLACEHOLDER\n                                                    }\n                                                    type=\"email\"\n                                                    disabled={isSubmitting}\n                                                    {...field}\n                                                />\n                                            </FormControl>\n\n                                            <FormMessage\n                                                className={classNames?.error}\n                                            />\n                                        </FormItem>\n                                    )}\n                                />\n                            )}\n                        </CardContent>\n                    </SettingsCard>\n                </form>\n            </Form>\n\n            {emailVerification &&\n                sessionData?.user &&\n                !sessionData?.user.emailVerified && (\n                    <Form {...resendForm}>\n                        <form\n                            onSubmit={resendForm.handleSubmit(\n                                resendVerification\n                            )}\n                        >\n                            <SettingsCard\n                                className={className}\n                                classNames={classNames}\n                                title={localization.VERIFY_YOUR_EMAIL}\n                                description={\n                                    localization.VERIFY_YOUR_EMAIL_DESCRIPTION\n                                }\n                                actionLabel={\n                                    localization.RESEND_VERIFICATION_EMAIL\n                                }\n                                disabled={resendDisabled}\n                                {...props}\n                            />\n                        </form>\n                    </Form>\n                )}\n        </>\n    )\n}\n","/**\n * phone-number-card\n * Manage phone number in user settings\n * Uses Better Auth phoneNumber plugin\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2, ShieldCheck } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { CardContent } from \"@/components/ui/card\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormDescription,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n    SettingsCard,\n    type SettingsCardClassNames\n} from \"@/components/settings/shared/settings-card\"\n\nexport interface PhoneNumberCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n}\n\nexport function PhoneNumberCard({\n    className,\n    classNames,\n    localization\n}: PhoneNumberCardProps) {\n    const {\n        authClient,\n        hooks: { useSession },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const { data: sessionData, refetch: refetchSession } = useSession()\n    const [showOtpDialog, setShowOtpDialog] = useState(false)\n    const [pendingPhoneNumber, setPendingPhoneNumber] = useState(\"\")\n    const [resendTimer, setResendTimer] = useState(0)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const phoneFormSchema = z.object({\n        phoneNumber: z\n            .string()\n            .min(1, { message: \"Phone number is required\" })\n            .regex(/^\\+[1-9]\\d{1,14}$/, {\n                message: \"Invalid phone number format. Use international format (e.g., +1234567890)\"\n            })\n    })\n\n    const otpFormSchema = z.object({\n        code: z\n            .string()\n            .length(6, { message: \"OTP code must be 6 digits\" })\n            .regex(/^\\d{6}$/, { message: \"OTP code must contain only numbers\" })\n    })\n\n    const phoneForm = useForm({\n        resolver: zodResolver(phoneFormSchema),\n        defaultValues: {\n            phoneNumber: sessionData?.user.phoneNumber || \"\"\n        }\n    })\n\n    const otpForm = useForm({\n        resolver: zodResolver(otpFormSchema),\n        defaultValues: {\n            code: \"\"\n        }\n    })\n\n    const { isSubmitting } = phoneForm.formState\n\n    // Resend timer countdown\n    useState(() => {\n        if (resendTimer > 0) {\n            const timer = setTimeout(() => setResendTimer(resendTimer - 1), 1000)\n            return () => clearTimeout(timer)\n        }\n    })\n\n    async function sendOtp({ phoneNumber }: z.infer<typeof phoneFormSchema>) {\n        try {\n            await authClient.phoneNumber.sendOtp({\n                phoneNumber,\n                fetchOptions: { throw: true }\n            })\n\n            setPendingPhoneNumber(phoneNumber)\n            setShowOtpDialog(true)\n            setResendTimer(60)\n\n            toast({\n                variant: \"success\",\n                message: \"OTP code sent to your phone\"\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    async function verifyOtp({ code }: z.infer<typeof otpFormSchema>) {\n        try {\n            await authClient.phoneNumber.verify({\n                phoneNumber: pendingPhoneNumber,\n                code,\n                updatePhoneNumber: true,\n                fetchOptions: { throw: true }\n            })\n\n            await refetchSession()\n            setShowOtpDialog(false)\n            setPendingPhoneNumber(\"\")\n            otpForm.reset()\n            phoneForm.reset({ phoneNumber: pendingPhoneNumber })\n\n            toast({\n                variant: \"success\",\n                message: \"Phone number updated successfully\"\n            })\n        } catch (error: any) {\n            otpForm.resetField(\"code\")\n\n            // Handle rate limiting\n            if (error?.status === 403) {\n                toast({\n                    variant: \"error\",\n                    message: \"Too many attempts. Please request a new code.\"\n                })\n                setShowOtpDialog(false)\n                setPendingPhoneNumber(\"\")\n                otpForm.reset()\n            } else {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n            }\n        }\n    }\n\n    async function resendOtp() {\n        if (resendTimer > 0) return\n\n        try {\n            await authClient.phoneNumber.sendOtp({\n                phoneNumber: pendingPhoneNumber,\n                fetchOptions: { throw: true }\n            })\n\n            setResendTimer(60)\n            otpForm.reset()\n\n            toast({\n                variant: \"success\",\n                message: \"New OTP code sent\"\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const currentPhoneNumber = sessionData?.user.phoneNumber\n    const isVerified = sessionData?.user.phoneNumberVerified\n\n    return (\n        <>\n            <Form {...phoneForm}>\n                <form onSubmit={phoneForm.handleSubmit(sendOtp)}>\n                    <SettingsCard\n                        className={className}\n                        classNames={classNames}\n                        actionLabel=\"Update Phone\"\n                        description=\"Manage your phone number for authentication\"\n                        isPending={false}\n                        title=\"Phone Number\"\n                    >\n                        <CardContent\n                            className={cn(\"grid gap-6\", classNames?.content)}\n                        >\n                            {currentPhoneNumber && (\n                                <div className=\"flex items-center justify-between rounded-lg border p-4\">\n                                    <div className=\"flex flex-col gap-1\">\n                                        <div className=\"font-medium\">\n                                            Current Phone Number\n                                        </div>\n                                        <div className=\"text-sm text-muted-foreground\">\n                                            {currentPhoneNumber}\n                                        </div>\n                                    </div>\n                                    {isVerified && (\n                                        <Badge\n                                            variant=\"outline\"\n                                            className=\"gap-1\"\n                                        >\n                                            <ShieldCheck className=\"h-3 w-3\" />\n                                            Verified\n                                        </Badge>\n                                    )}\n                                </div>\n                            )}\n\n                            <FormField\n                                control={phoneForm.control}\n                                name=\"phoneNumber\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormLabel className={classNames?.label}>\n                                            {currentPhoneNumber\n                                                ? \"New Phone Number\"\n                                                : \"Phone Number\"}\n                                        </FormLabel>\n\n                                        <FormControl>\n                                            <Input\n                                                autoComplete=\"tel\"\n                                                className={classNames?.input}\n                                                type=\"tel\"\n                                                placeholder=\"+1234567890\"\n                                                disabled={isSubmitting}\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormDescription>\n                                            Enter your phone number in\n                                            international format\n                                        </FormDescription>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        </CardContent>\n                    </SettingsCard>\n                </form>\n            </Form>\n\n            <Dialog open={showOtpDialog} onOpenChange={setShowOtpDialog}>\n                <DialogContent>\n                    <DialogHeader>\n                        <DialogTitle>Verify Phone Number</DialogTitle>\n                        <DialogDescription>\n                            Enter the 6-digit code sent to{\" \"}\n                            <span className=\"font-medium\">\n                                {pendingPhoneNumber}\n                            </span>\n                        </DialogDescription>\n                    </DialogHeader>\n\n                    <Form {...otpForm}>\n                        <form\n                            onSubmit={otpForm.handleSubmit(verifyOtp)}\n                            className=\"grid gap-4\"\n                        >\n                            <FormField\n                                control={otpForm.control}\n                                name=\"code\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormLabel>OTP Code</FormLabel>\n\n                                        <FormControl>\n                                            <Input\n                                                autoComplete=\"one-time-code\"\n                                                type=\"text\"\n                                                inputMode=\"numeric\"\n                                                pattern=\"\\d{6}\"\n                                                maxLength={6}\n                                                placeholder=\"123456\"\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage />\n                                    </FormItem>\n                                )}\n                            />\n\n                            <DialogFooter className=\"flex-col gap-2 sm:flex-col\">\n                                <Button type=\"submit\" className=\"w-full\">\n                                    {otpForm.formState.isSubmitting ? (\n                                        <Loader2 className=\"animate-spin\" />\n                                    ) : (\n                                        \"Verify & Update\"\n                                    )}\n                                </Button>\n\n                                <Button\n                                    type=\"button\"\n                                    variant=\"outline\"\n                                    onClick={resendOtp}\n                                    disabled={resendTimer > 0}\n                                    className=\"w-full\"\n                                >\n                                    {resendTimer > 0\n                                        ? `Resend code in ${resendTimer}s`\n                                        : \"Resend code\"}\n                                </Button>\n                            </DialogFooter>\n                        </form>\n                    </Form>\n                </DialogContent>\n            </Dialog>\n        </>\n    )\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Mail, X, Loader2, AlertTriangle } from \"lucide-react\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\nimport type { BetterAuthClient } from \"@/types/auth\";\n\nexport interface EmailVerificationBannerClassNames {\n  alert?: string;\n  button?: string;\n  description?: string;\n  error?: string;\n  icon?: string;\n  message?: string;\n  title?: string;\n}\n\nexport interface EmailVerificationBannerProps {\n  /**\n   * Better Auth client instance\n   */\n  authClient?: BetterAuthClient;\n  /**\n   * Whether the banner can be dismissed\n   * @default true\n   */\n  dismissible?: boolean;\n  /**\n   * Cooldown period in seconds before allowing resend\n   * @default 60\n   */\n  cooldown?: number;\n  /**\n   * Email address to send verification to\n   * If not provided, uses current user's email\n   */\n  email?: string;\n  /**\n   * Callback URL after verification\n   */\n  callbackURL?: string;\n  /**\n   * Callback when verification email is sent\n   */\n  onResend?: () => void;\n  /**\n   * Callback when verification is successful\n   */\n  onVerified?: () => void;\n  /**\n   * Callback when banner is dismissed\n   */\n  onDismiss?: () => void;\n  /**\n   * Additional CSS classes\n   */\n  className?: string;\n  /**\n   * Custom class names for specific parts\n   */\n  classNames?: EmailVerificationBannerClassNames;\n  /**\n   * Custom localization strings\n   */\n  localization?: {\n    title?: string;\n    description?: string;\n    resendButton?: string;\n    resendingButton?: string;\n    dismissButton?: string;\n    successMessage?: string;\n    errorMessage?: string;\n    cooldownMessage?: string;\n  };\n}\n\n/**\n * Email Verification Banner Component\n * \n * Displays a persistent banner to unverified users prompting them to verify their email.\n * Includes functionality to resend verification emails with cooldown protection.\n * \n * @example\n * ```tsx\n * <EmailVerificationBanner\n *   authClient={authClient}\n *   dismissible\n *   cooldown={60}\n *   onResend={() => console.log('Email sent')}\n * />\n * ```\n */\nexport function EmailVerificationBanner({\n  authClient: providedAuthClient,\n  dismissible = true,\n  cooldown = 60,\n  email,\n  callbackURL,\n  onResend,\n  onVerified,\n  onDismiss,\n  className,\n  classNames = {},\n  localization,\n}: EmailVerificationBannerProps) {\n  const context = React.useContext(AuthUIContext);\n  const authClient = providedAuthClient || context?.authClient;\n\n  const [isDismissed, setIsDismissed] = useState(false);\n  const [isSending, setIsSending] = useState(false);\n  const [cooldownRemaining, setCooldownRemaining] = useState(0);\n  const [successMessage, setSuccessMessage] = useState<string | null>(null);\n  const [errorMessage, setErrorMessage] = useState<string | null>(null);\n\n  const defaultLocalization = {\n    title: localization?.title || \"Please verify your email\",\n    description: localization?.description || \"We sent you a verification email. Please check your inbox and click the link to verify your account.\",\n    resendButton: localization?.resendButton || \"Resend Email\",\n    resendingButton: localization?.resendingButton || \"Sending...\",\n    dismissButton: localization?.dismissButton || \"Dismiss\",\n    successMessage: localization?.successMessage || \"Verification email sent! Please check your inbox.\",\n    errorMessage: localization?.errorMessage || \"Failed to send verification email. Please try again.\",\n    cooldownMessage: localization?.cooldownMessage || \"Please wait {seconds}s before resending\",\n  };\n\n  // Cooldown timer\n  useEffect(() => {\n    if (cooldownRemaining <= 0) return;\n\n    const timer = setInterval(() => {\n      setCooldownRemaining((prev) => {\n        if (prev <= 1) {\n          clearInterval(timer);\n          return 0;\n        }\n        return prev - 1;\n      });\n    }, 1000);\n\n    return () => clearInterval(timer);\n  }, [cooldownRemaining]);\n\n  // Auto-hide success/error messages\n  useEffect(() => {\n    if (successMessage || errorMessage) {\n      const timer = setTimeout(() => {\n        setSuccessMessage(null);\n        setErrorMessage(null);\n      }, 5000);\n\n      return () => clearTimeout(timer);\n    }\n  }, [successMessage, errorMessage]);\n\n  const handleResend = async () => {\n    if (!authClient || isSending || cooldownRemaining > 0) return;\n\n    setIsSending(true);\n    setErrorMessage(null);\n    setSuccessMessage(null);\n\n    try {\n      const result = await authClient.$fetch(\"/send-verification-email\", {\n        method: \"POST\",\n        headers: {\n          \"Content-Type\": \"application/json\",\n        },\n        body: JSON.stringify({\n          email: email || \"\",\n          callbackURL: callbackURL || window.location.origin,\n        }),\n      });\n\n      if (!result.ok) {\n        throw new Error(\"Failed to send verification email\");\n      }\n\n      setSuccessMessage(defaultLocalization.successMessage);\n      setCooldownRemaining(cooldown);\n      onResend?.();\n    } catch (error) {\n      setErrorMessage(\n        error instanceof Error ? error.message : defaultLocalization.errorMessage\n      );\n    } finally {\n      setIsSending(false);\n    }\n  };\n\n  const handleDismiss = () => {\n    setIsDismissed(true);\n    onDismiss?.();\n  };\n\n  if (isDismissed) {\n    return null;\n  }\n\n  return (\n    <Alert className={cn(className, classNames?.alert)}>\n      <Mail className={cn(\"h-4 w-4\", classNames?.icon)} />\n      <AlertDescription className=\"flex items-start justify-between gap-4\">\n        <div className=\"flex-1 space-y-2\">\n          <p className={cn(\"font-medium\", classNames?.title)}>\n            {defaultLocalization.title}\n          </p>\n          <p className={cn(\"text-sm text-muted-foreground\", classNames?.description)}>\n            {defaultLocalization.description}\n          </p>\n\n          {successMessage && (\n            <p className={cn(\"text-sm font-medium\", classNames?.message)}>\n              {successMessage}\n            </p>\n          )}\n\n          {errorMessage && (\n            <Alert variant=\"destructive\" className={cn(\"mt-2\", classNames?.error)}>\n              <AlertTriangle className=\"h-4 w-4\" />\n              <AlertDescription className=\"text-sm\">\n                {errorMessage}\n              </AlertDescription>\n            </Alert>\n          )}\n\n          <div className=\"flex items-center gap-2 pt-1\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={handleResend}\n              disabled={isSending || cooldownRemaining > 0}\n              className={cn(classNames?.button)}\n            >\n              {isSending ? (\n                <>\n                  <Loader2 className=\"mr-2 h-3 w-3 animate-spin\" />\n                  {defaultLocalization.resendingButton}\n                </>\n              ) : cooldownRemaining > 0 ? (\n                defaultLocalization.cooldownMessage.replace(\n                  \"{seconds}\",\n                  cooldownRemaining.toString()\n                )\n              ) : (\n                defaultLocalization.resendButton\n              )}\n            </Button>\n\n            {dismissible && (\n              <Button\n                variant=\"ghost\"\n                size=\"sm\"\n                onClick={handleDismiss}\n                className={cn(classNames?.button)}\n              >\n                {defaultLocalization.dismissButton}\n              </Button>\n            )}\n          </div>\n        </div>\n\n        {dismissible && (\n          <button\n            onClick={handleDismiss}\n            className=\"text-muted-foreground hover:text-foreground transition-colors\"\n            aria-label=\"Dismiss\"\n          >\n            <X className=\"h-4 w-4\" />\n          </button>\n        )}\n      </AlertDescription>\n    </Alert>\n  );\n}\n","/**\n * create-organization-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2, Trash2Icon, UploadCloudIcon } from \"lucide-react\"\nimport {\n    type ComponentProps,\n    useContext,\n    useMemo,\n    useRef,\n    useState\n} from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { fileToBase64, resizeAndCropImage } from \"../../../lib/image-utils\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\n\n\n\n\n\nimport { OrganizationLogo } from \"../components/organization-logo\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"../../ui/dialog\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"../../ui/dropdown-menu\"\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\n\nexport interface CreateOrganizationDialogProps\n    extends ComponentProps<typeof Dialog> {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n}\n\nexport function CreateOrganizationDialog({\n    className,\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    ...props\n}: CreateOrganizationDialogProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        organization: organizationOptions,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [logo, setLogo] = useState<string | null>(null)\n    const [logoPending, setLogoPending] = useState(false)\n\n    const fileInputRef = useRef<HTMLInputElement>(null)\n    const openFileDialog = () => fileInputRef.current?.click()\n\n    const formSchema = z.object({\n        logo: z.string().optional(),\n        name: z.string().min(1, {\n            message: `${localization.ORGANIZATION_NAME} ${localization.IS_REQUIRED}`\n        }),\n        slug: z\n            .string()\n            .min(1, {\n                message: `${localization.ORGANIZATION_SLUG} ${localization.IS_REQUIRED}`\n            })\n            .regex(/^[a-z0-9-]+$/, {\n                message: `${localization.ORGANIZATION_SLUG} ${localization.IS_INVALID}`\n            })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            logo: \"\",\n            name: \"\",\n            slug: \"\"\n        }\n    })\n\n    const isSubmitting = form.formState.isSubmitting\n\n    const handleLogoChange = async (file: File) => {\n        if (!organizationOptions?.logo) return\n\n        setLogoPending(true)\n\n        try {\n            const resizedFile = await resizeAndCropImage(\n                file,\n                crypto.randomUUID(),\n                organizationOptions.logo.size,\n                organizationOptions.logo.extension\n            )\n\n            let image: string | undefined | null\n\n            if (organizationOptions?.logo.upload) {\n                image = await organizationOptions.logo.upload(resizedFile)\n            } else {\n                image = await fileToBase64(resizedFile)\n            }\n\n            setLogo(image || null)\n            form.setValue(\"logo\", image || \"\")\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setLogoPending(false)\n    }\n\n    const deleteLogo = async () => {\n        setLogoPending(true)\n\n        const currentUrl = logo || undefined\n        if (currentUrl && organizationOptions?.logo?.delete) {\n            await organizationOptions.logo.delete(currentUrl)\n        }\n\n        setLogo(null)\n        form.setValue(\"logo\", \"\")\n        setLogoPending(false)\n    }\n\n    async function onSubmit({ name, slug, logo }: z.infer<typeof formSchema>) {\n        try {\n            const organization = await authClient.organization.create({\n                name,\n                slug,\n                logo,\n                fetchOptions: { throw: true }\n            })\n\n            if (organizationOptions?.pathMode === \"slug\") {\n                navigate(`${organizationOptions.basePath}/${organization.slug}`)\n                return\n            }\n\n            await authClient.organization.setActive({\n                organizationId: organization.id\n            })\n\n            onOpenChange?.(false)\n            form.reset()\n            setLogo(null)\n\n            toast({\n                variant: \"success\",\n                message: localization.CREATE_ORGANIZATION_SUCCESS\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent className={classNames?.dialog?.content}>\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.CREATE_ORGANIZATION}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.ORGANIZATIONS_INSTRUCTIONS}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(onSubmit)}\n                        className=\"space-y-6\"\n                    >\n                        {organizationOptions?.logo && (\n                            <FormField\n                                control={form.control}\n                                name=\"logo\"\n                                render={() => (\n                                    <FormItem>\n                                        <input\n                                            ref={fileInputRef}\n                                            accept=\"image/*\"\n                                            disabled={logoPending}\n                                            hidden\n                                            type=\"file\"\n                                            onChange={(e) => {\n                                                const file =\n                                                    e.target.files?.item(0)\n                                                if (file) handleLogoChange(file)\n                                                e.target.value = \"\"\n                                            }}\n                                        />\n\n                                        <FormLabel>\n                                            {localization.LOGO}\n                                        </FormLabel>\n\n                                        <div className=\"flex items-center gap-4\">\n                                            <DropdownMenu>\n                                                <DropdownMenuTrigger asChild>\n                                                    <Button\n                                                        className=\"size-fit rounded-full\"\n                                                        size=\"icon\"\n                                                        type=\"button\"\n                                                        variant=\"ghost\"\n                                                    >\n                                                        <OrganizationLogo\n                                                            className=\"size-16\"\n                                                            isPending={\n                                                                logoPending\n                                                            }\n                                                            localization={\n                                                                localization\n                                                            }\n                                                            organization={{\n                                                                name: form.watch(\n                                                                    \"name\"\n                                                                ),\n                                                                logo\n                                                            }}\n                                                        />\n                                                    </Button>\n                                                </DropdownMenuTrigger>\n\n                                                <DropdownMenuContent\n                                                    align=\"start\"\n                                                    onCloseAutoFocus={(e) =>\n                                                        e.preventDefault()\n                                                    }\n                                                >\n                                                    <DropdownMenuItem\n                                                        onClick={openFileDialog}\n                                                        disabled={logoPending}\n                                                    >\n                                                        <UploadCloudIcon />\n\n                                                        {\n                                                            localization.UPLOAD_LOGO\n                                                        }\n                                                    </DropdownMenuItem>\n\n                                                    {logo && (\n                                                        <DropdownMenuItem\n                                                            onClick={deleteLogo}\n                                                            disabled={\n                                                                logoPending\n                                                            }\n                                                            variant=\"destructive\"\n                                                        >\n                                                            <Trash2Icon />\n\n                                                            {\n                                                                localization.DELETE_LOGO\n                                                            }\n                                                        </DropdownMenuItem>\n                                                    )}\n                                                </DropdownMenuContent>\n                                            </DropdownMenu>\n\n                                            <Button\n                                                disabled={logoPending}\n                                                variant=\"outline\"\n                                                onClick={openFileDialog}\n                                                type=\"button\"\n                                            >\n                                                {logoPending && (\n                                                    <Loader2 className=\"animate-spin\" />\n                                                )}\n\n                                                {localization.UPLOAD}\n                                            </Button>\n                                        </div>\n\n                                        <FormMessage />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n\n                        <FormField\n                            control={form.control}\n                            name=\"name\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel>\n                                        {localization.ORGANIZATION_NAME}\n                                    </FormLabel>\n\n                                    <FormControl>\n                                        <Input\n                                            placeholder={\n                                                localization.ORGANIZATION_NAME_PLACEHOLDER\n                                            }\n                                            {...field}\n                                        />\n                                    </FormControl>\n\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n\n                        <FormField\n                            control={form.control}\n                            name=\"slug\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel>\n                                        {localization.ORGANIZATION_SLUG}\n                                    </FormLabel>\n\n                                    <FormControl>\n                                        <Input\n                                            placeholder={\n                                                localization.ORGANIZATION_SLUG_PLACEHOLDER\n                                            }\n                                            {...field}\n                                        />\n                                    </FormControl>\n\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"outline\"\n                                onClick={() => onOpenChange?.(false)}\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.outlineButton\n                                )}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                type=\"submit\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.primaryButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n\n                                {localization.CREATE_ORGANIZATION}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * create-organization-card\n * Card wrapper for CreateOrganizationDialog\n */\n\n\"use client\"\n\nimport { useContext, useMemo, useState } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { CreateOrganizationDialog } from \"../dialogs/create-organization-dialog\"\n\nexport interface OrganizationCardProps\n    extends SettingsCardProps {\n}\n\nexport function CreateOrganizationCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    size = \"default\",\n    icon,\n    ...props\n}: OrganizationCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [showDialog, setShowDialog] = useState(false)\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization?.CREATE_ORGANIZATION}\n                description={size === \"default\" ? localization?.ORGANIZATIONS_DESCRIPTION : undefined}\n                instructions={size === \"default\" ? localization?.ORGANIZATIONS_INSTRUCTIONS : undefined}\n                actionLabel={localization?.CREATE_ORGANIZATION}\n                variant=\"default\"\n                size={size}\n                icon={icon}\n                action={() => setShowDialog(true)}\n                {...props}\n            />\n\n            <CreateOrganizationDialog\n                classNames={classNames}\n                localization={localization}\n                open={showDialog}\n                onOpenChange={setShowDialog}\n            />\n        </>\n    )\n}","/**\n * delete-organization-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"../../ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { OrganizationCellView } from \"../cells/organization-cell-view\"\n\nexport interface DeleteOrganizationDialogProps\n    extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    organization: Organization\n}\n\nexport function DeleteOrganizationDialog({\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    organization,\n    ...props\n}: DeleteOrganizationDialogProps) {\n    const {\n        authClient,\n        account: accountOptions,\n        hooks: { useListOrganizations },\n        localization: contextLocalization,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { refetch: refetchOrganizations } = useListOrganizations()\n\n    const formSchema = z.object({\n        slug: z\n            .string()\n            .min(1, { message: localization.SLUG_REQUIRED! })\n            .refine((val) => val === organization.slug, {\n                message: localization.SLUG_DOES_NOT_MATCH!\n            })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            slug: \"\"\n        }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const deleteOrganization = async () => {\n        try {\n            await authClient.organization.delete({\n                organizationId: organization.id,\n                fetchOptions: { throw: true }\n            })\n\n            await refetchOrganizations?.()\n\n            toast({\n                variant: \"success\",\n                message: localization.DELETE_ORGANIZATION_SUCCESS!\n            })\n\n            navigate(\n                `${accountOptions?.basePath}/${accountOptions?.viewPaths.ORGANIZATIONS}`\n            )\n\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={cn(\"sm:max-w-md\", classNames?.dialog?.content)}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization?.DELETE_ORGANIZATION}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization?.DELETE_ORGANIZATION_DESCRIPTION}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Card className={cn(\"my-2 flex-row p-4\", classNames?.cell)}>\n                    <OrganizationCellView\n                        organization={organization}\n                        localization={localization}\n                    />\n                </Card>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(deleteOrganization)}\n                        className=\"grid gap-6\"\n                    >\n                        <FormField\n                            control={form.control}\n                            name=\"slug\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel className={classNames?.label}>\n                                        {\n                                            localization?.DELETE_ORGANIZATION_INSTRUCTIONS\n                                        }\n\n                                        <span className=\"font-bold\">\n                                            {organization.slug}\n                                        </span>\n                                    </FormLabel>\n\n                                    <FormControl>\n                                        <Input\n                                            placeholder={organization.slug}\n                                            className={classNames?.input}\n                                            autoComplete=\"off\"\n                                            {...field}\n                                        />\n                                    </FormControl>\n\n                                    <FormMessage\n                                        className={classNames?.error}\n                                    />\n                                </FormItem>\n                            )}\n                        />\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"secondary\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.secondaryButton\n                                )}\n                                onClick={() => onOpenChange?.(false)}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.destructiveButton\n                                )}\n                                disabled={isSubmitting}\n                                variant=\"destructive\"\n                                type=\"submit\"\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n\n                                {localization?.DELETE_ORGANIZATION}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * delete-organization-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo, useState } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { DeleteOrganizationDialog } from \"../dialogs/delete-organization-dialog\"\n\nexport interface OrganizationCardProps\n    extends SettingsCardProps {\n    organization?: Organization\n    slug?: string\n}\n\nexport function DeleteOrganizationCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug,\n    size = \"default\",\n    icon,\n    ...props\n}: OrganizationCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization)\n        return (\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                actionLabel={localization?.DELETE_ORGANIZATION}\n                description={localization?.DELETE_ORGANIZATION_DESCRIPTION}\n                isPending\n                title={localization?.DELETE_ORGANIZATION}\n                variant=\"destructive\"\n                size={size}\n                icon={icon}\n            />\n        )\n\n    return (\n        <DeleteOrganizationForm\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            size={size}\n            icon={icon}\n            {...props}\n        />\n    )\n}\n\nfunction DeleteOrganizationForm({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    size = \"default\",\n    icon\n}: SettingsCardProps & { organization: Organization; size?: \"default\" | \"compact\" | \"button-only\"; icon?: LucideIcon }) {\n    const {\n        localization: contextLocalization,\n        hooks: { useHasPermission }\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: hasPermission, isPending } = useHasPermission({\n        organizationId: organization.id,\n        permissions: {\n            organization: [\"delete\"]\n        }\n    })\n\n    const [showDialog, setShowDialog] = useState(false)\n\n    if (!hasPermission?.success) return null\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization?.DELETE_ORGANIZATION}\n                actionLabel={localization?.DELETE_ORGANIZATION}\n                description={size === \"default\" ? localization?.DELETE_ORGANIZATION_DESCRIPTION : undefined}\n                isPending={isPending}\n                variant=\"destructive\"\n                size={size}\n                icon={icon}\n                action={() => setShowDialog(true)}\n            />\n\n            <DeleteOrganizationDialog\n                classNames={classNames}\n                localization={localization}\n                open={showDialog}\n                onOpenChange={setShowDialog}\n                organization={organization}\n            />\n        </>\n    )\n}\n","/**\n * leave-organization-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\n\n\n\nimport { OrganizationCellView } from \"../cells/organization-cell-view\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"../../ui/dialog\"\n\nexport interface LeaveOrganizationDialogProps\n    extends ComponentProps<typeof Dialog> {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    organization: Organization\n}\n\nexport function LeaveOrganizationDialog({\n    organization,\n    className,\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    ...props\n}: LeaveOrganizationDialogProps) {\n    const {\n        authClient,\n        hooks: { useListOrganizations },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { refetch: refetchOrganizations } = useListOrganizations()\n\n    const [isLeaving, setIsLeaving] = useState(false)\n\n    const handleLeaveOrganization = async () => {\n        setIsLeaving(true)\n\n        try {\n            await authClient.organization.leave({\n                organizationId: organization.id,\n                fetchOptions: { throw: true }\n            })\n\n            await refetchOrganizations?.()\n\n            toast({\n                variant: \"success\",\n                message: localization.LEAVE_ORGANIZATION_SUCCESS\n            })\n\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLeaving(false)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={classNames?.dialog?.content}\n                onOpenAutoFocus={(e) => e.preventDefault()}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.LEAVE_ORGANIZATION}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.LEAVE_ORGANIZATION_CONFIRM}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Card\n                    className={cn(\n                        \"my-2 flex-row p-4\",\n                        className,\n                        classNames?.cell\n                    )}\n                >\n                    <OrganizationCellView\n                        organization={organization}\n                        localization={localization}\n                    />\n                </Card>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => onOpenChange?.(false)}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        disabled={isLeaving}\n                    >\n                        {localization.CANCEL}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"destructive\"\n                        onClick={handleLeaveOrganization}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.destructiveButton\n                        )}\n                        disabled={isLeaving}\n                    >\n                        {isLeaving && <Loader2 className=\"animate-spin\" />}\n\n                        {localization.LEAVE_ORGANIZATION}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * leave-organization-card\n * Card wrapper for LeaveOrganizationDialog\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo, useState } from \"react\"\nimport type { LucideIcon } from \"lucide-react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { LeaveOrganizationDialog } from \"../dialogs/leave-organization-dialog\"\n\nexport interface OrganizationCardProps\n    extends SettingsCardProps {\n    organization: Organization\n}\n\nexport function LeaveOrganizationCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    size = \"default\",\n    icon,\n    ...props\n}: OrganizationCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [showDialog, setShowDialog] = useState(false)\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization?.LEAVE_ORGANIZATION}\n                description={size === \"default\" ? localization?.LEAVE_ORGANIZATION_CONFIRM : undefined}\n                actionLabel={localization?.LEAVE_ORGANIZATION}\n                variant=\"destructive\"\n                size={size}\n                icon={icon}\n                action={() => setShowDialog(true)}\n                {...props}\n            />\n\n            <LeaveOrganizationDialog\n                classNames={classNames}\n                localization={localization}\n                open={showDialog}\n                onOpenChange={setShowDialog}\n                organization={organization}\n            />\n        </>\n    )\n}","/**\n * user-view\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useMemo } from \"react\"\nimport { AuthUIContext } from \"../../lib/auth-ui-provider\"\nimport { cn } from \"../../lib/utils\"\nimport type { AuthLocalization } from \"../../localization/auth-localization\"\nimport type { Profile } from \"../../types/profile\"\nimport { Skeleton } from \"./skeleton\"\nimport { UserAvatar, type UserAvatarClassNames } from \"../user\"\n\nexport interface UserViewClassNames {\n    base?: string\n    avatar?: UserAvatarClassNames\n    content?: string\n    title?: string\n    subtitle?: string\n    skeleton?: string\n}\n\nexport interface UserViewProps {\n    className?: string\n    classNames?: UserViewClassNames\n    isPending?: boolean\n    size?: \"sm\" | \"default\" | \"lg\" | \"icon-sm\" | \"icon-lg\" | null\n    user?: Profile | null\n    /**\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: AuthLocalization\n}\n\n/**\n * Displays user information with avatar and details in a compact view\n *\n * Renders a user's profile information with appropriate fallbacks:\n * - Shows avatar alongside user name and email when available\n * - Shows loading skeletons when isPending is true\n * - Falls back to generic \"User\" text when neither name nor email is available\n * - Supports customization through classNames prop\n */\nexport function UserView({\n    className,\n    classNames,\n    isPending,\n    size,\n    user,\n    localization: propLocalization\n}: UserViewProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...propLocalization }),\n        [contextLocalization, propLocalization]\n    )\n\n    return (\n        <div\n            className={cn(\n                \"flex items-center gap-2\",\n                className,\n                classNames?.base\n            )}\n        >\n            <UserAvatar\n                className={cn(size !== \"sm\" && \"my-0.5\")}\n                classNames={classNames?.avatar}\n                isPending={isPending}\n                size={size}\n                user={user}\n                localization={localization}\n            />\n\n            <div\n                className={cn(\n                    \"grid flex-1 text-left leading-tight\",\n                    classNames?.content\n                )}\n            >\n                {isPending ? (\n                    <>\n                        <Skeleton\n                            className={cn(\n                                \"max-w-full\",\n                                size === \"lg\" ? \"h-4.5 w-32\" : \"h-3.5 w-24\",\n                                classNames?.title,\n                                classNames?.skeleton\n                            )}\n                        />\n                        {size !== \"sm\" && (\n                            <Skeleton\n                                className={cn(\n                                    \"mt-1.5 max-w-full\",\n                                    size === \"lg\" ? \"h-3.5 w-40\" : \"h-3 w-32\",\n                                    classNames?.subtitle,\n                                    classNames?.skeleton\n                                )}\n                            />\n                        )}\n                    </>\n                ) : (\n                    <>\n                        <span\n                            className={cn(\n                                \"truncate font-medium\",\n                                size === \"lg\" ? \"text-base\" : \"text-sm\",\n                                classNames?.title\n                            )}\n                        >\n                            {user?.displayName ||\n                                user?.name ||\n                                user?.fullName ||\n                                user?.firstName ||\n                                user?.displayUsername ||\n                                user?.username ||\n                                user?.email ||\n                                localization?.USER}\n                        </span>\n\n                        {!user?.isAnonymous &&\n                            size !== \"sm\" &&\n                            (user?.name || user?.username) && (\n                                <span\n                                    className={cn(\n                                        \"truncate text-xs text-muted-foreground\",\n                                        size === \"lg\" ? \"text-sm\" : \"\",\n                                        classNames?.subtitle\n                                    )}\n                                >\n                                    {user?.email}\n                                </span>\n                            )}\n                    </>\n                )}\n            </div>\n        </div>\n    )\n}\n","/**\n * user-button\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\nimport {\n    ChevronsUpDown,\n    LogInIcon,\n    LogOutIcon,\n    PlusCircleIcon,\n    SettingsIcon,\n    UserRoundPlus\n} from \"lucide-react\"\nimport {\n    type ComponentProps,\n    Fragment,\n    type ReactNode,\n    useCallback,\n    useContext,\n    useEffect,\n    useMemo,\n    useState\n} from \"react\"\n\nimport { useIsHydrated } from \"@/hooks/use-hydrated\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { AnyAuthClient } from \"@/types/any-auth-client\"\nimport type { User } from \"@/types/auth-client\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuLabel,\n    DropdownMenuGroup,\n    DropdownMenuSeparator,\n    DropdownMenuTrigger\n} from \"@/components/ui/dropdown-menu\"\nimport { UserAvatar, type UserAvatarClassNames} from \"@/components/user\" \nimport { UserView, type UserViewClassNames } from \"@/components/ui/user-view\"\n\nexport interface UserButtonClassNames {\n    base?: string\n    skeleton?: string\n    trigger?: {\n        base?: string\n        avatar?: UserAvatarClassNames\n        user?: UserViewClassNames\n        skeleton?: string\n    }\n    content?: {\n        base?: string\n        user?: UserViewClassNames\n        avatar?: UserAvatarClassNames\n        menuItem?: string\n        separator?: string\n    }\n}\n\nexport interface UserButtonProps {\n    className?: string\n    classNames?: UserButtonClassNames\n    align?: \"center\" | \"start\" | \"end\"\n    alignOffset?: number\n    side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n    sideOffset?: number\n    additionalLinks?: {\n        href: string\n        icon?: ReactNode\n        label: ReactNode\n        signedIn?: boolean\n        separator?: boolean\n    }[]\n    trigger?: ReactNode\n    disableDefaultLinks?: boolean\n    /**\n     * @default authLocalization\n     * @remarks `AuthLocalization`\n     */\n    localization?: AuthLocalization\n}\n\n/**\n * Displays an interactive user button with dropdown menu functionality\n *\n * Renders a user interface element that can be displayed as either an icon or full button:\n * - Shows a user avatar or placeholder when in icon mode\n * - Displays user name and email with dropdown indicator in full mode\n * - Provides dropdown menu with authentication options (sign in/out, settings, etc.)\n * - Supports multi-session functionality for switching between accounts\n * - Can be customized with additional links and styling options\n */\nexport function UserButton({\n    className,\n    classNames,\n    align,\n    alignOffset,\n    side,\n    sideOffset,\n    trigger,\n    additionalLinks,\n    disableDefaultLinks,\n    localization: propLocalization,\n    size,\n    ...props\n}: UserButtonProps & ComponentProps<typeof Button>) {\n    const {\n        basePath,\n        hooks: { useSession, useListDeviceSessions },\n        mutators: { setActiveSession },\n        localization: contextLocalization,\n        multiSession,\n        account: accountOptions,\n        signUp,\n        toast,\n        viewPaths,\n        onSessionChange,\n        Link\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...propLocalization }),\n        [contextLocalization, propLocalization]\n    )\n\n    let deviceSessions:\n        | AnyAuthClient[\"$Infer\"][\"Session\"][]\n        | undefined\n        | null = null\n    let deviceSessionsPending = false\n\n    if (multiSession) {\n        const { data, isPending } = useListDeviceSessions()\n        deviceSessions = data\n        deviceSessionsPending = isPending\n    }\n\n    const { data: sessionData, isPending: sessionPending } = useSession()\n    const user = sessionData?.user\n    const [activeSessionPending, setActiveSessionPending] = useState(false)\n\n    const isHydrated = useIsHydrated()\n    const isPending = sessionPending || activeSessionPending || !isHydrated\n\n    const switchAccount = useCallback(\n        async (sessionToken: string) => {\n            if (!setActiveSession) return\n            \n            setActiveSessionPending(true)\n\n            try {\n                await setActiveSession({ sessionToken })\n\n                onSessionChange?.()\n            } catch (error) {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n                setActiveSessionPending(false)\n            }\n        },\n        [setActiveSession, onSessionChange, toast, localization]\n    )\n\n    // biome-ignore lint/correctness/useExhaustiveDependencies: ignore\n    useEffect(() => {\n        if (!multiSession) return\n\n        setActiveSessionPending(false)\n    }, [sessionData, multiSession])\n\n    return (\n        <DropdownMenu>\n            <DropdownMenuTrigger\n                asChild\n                className={cn(\n                    size === \"icon\" && \"rounded-full\",\n                    classNames?.trigger?.base\n                )}\n            >\n                {trigger ||\n                    (size === \"icon\" ? (\n                        <Button\n                            size=\"icon\"\n                            className=\"size-fit rounded-full\"\n                            variant=\"ghost\"\n                        >\n                            <UserAvatar\n                                key={user?.image}\n                                isPending={isPending}\n                                className={cn(className, classNames?.base)}\n                                classNames={classNames?.trigger?.avatar}\n                                user={user}\n                                aria-label={localization.ACCOUNT}\n                                localization={localization}\n                            />\n                        </Button>\n                    ) : (\n                        <Button\n                            className={cn(\n                                \"h-auto w-full justify-start gap-2 px-2 py-1.5 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n                                className,\n                                classNames?.trigger?.base\n                            )}\n                            variant=\"ghost\"\n                            size={size}\n                            {...props}\n                        >\n                            <UserView\n                                size={size}\n                                user={\n                                    !(user as User)?.isAnonymous ? user : null\n                                }\n                                isPending={isPending}\n                                classNames={classNames?.trigger?.user}\n                                localization={localization}\n                            />\n\n                            <ChevronsUpDown className=\"ml-auto size-4\" />\n                        </Button>\n                    ))}\n            </DropdownMenuTrigger>\n\n            <DropdownMenuContent\n                className={cn(\n                    \"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\",\n                    classNames?.content?.base\n                )}\n                align={align || \"start\"}\n                alignOffset={alignOffset}\n                side={side || \"bottom\"}\n                sideOffset={sideOffset || 4}\n                onCloseAutoFocus={(e) => e.preventDefault()}\n            >\n                {((user && !(user as User).isAnonymous) || isPending) && (\n                    <>\n                        <div className=\"flex items-center gap-2 px-1 py-1.5 text-left text-sm\">\n                            <UserView\n                                user={user}\n                                isPending={isPending}\n                                classNames={classNames?.content?.user}\n                                localization={localization}\n                            />\n                        </div>\n\n                        <DropdownMenuSeparator\n                            className={classNames?.content?.separator}\n                        />\n                    </>\n                )}\n\n                {!user && !isPending && (\n                    <>\n                        <div className=\"px-1 py-1.5 text-xs text-muted-foreground\">\n                            {localization.ACCOUNT}\n                        </div>\n                        <DropdownMenuSeparator\n                            className={classNames?.content?.separator}\n                        />\n                    </>\n                )}\n\n                {additionalLinks?.map(\n                    ({ href, icon, label, signedIn, separator }, index) =>\n                        (signedIn === undefined ||\n                            (signedIn && !!sessionData) ||\n                            (!signedIn && !sessionData)) && (\n                            <Fragment key={index}>\n                                <Link href={href}>\n                                    <DropdownMenuItem\n                                        className={\n                                            classNames?.content?.menuItem\n                                        }\n                                    >\n                                        {icon}\n                                        {label}\n                                    </DropdownMenuItem>\n                                </Link>\n                                {separator && (\n                                    <DropdownMenuSeparator\n                                        className={\n                                            classNames?.content?.separator\n                                        }\n                                    />\n                                )}\n                            </Fragment>\n                        )\n                )}\n\n                {!user || (user as User).isAnonymous ? (\n                    <>\n                        <Link href={`${basePath}/${viewPaths.SIGN_IN}`}>\n                            <DropdownMenuItem\n                                className={classNames?.content?.menuItem}\n                            >\n                                <LogInIcon />\n\n                                {localization.SIGN_IN}\n                            </DropdownMenuItem>\n                        </Link>\n\n                        {signUp && (\n                            <Link href={`${basePath}/${viewPaths.SIGN_UP}`}>\n                                <DropdownMenuItem\n                                    className={classNames?.content?.menuItem}\n                                >\n                                    <UserRoundPlus />\n\n                                    {localization.SIGN_UP}\n                                </DropdownMenuItem>\n                            </Link>\n                        )}\n                    </>\n                ) : (\n                    <>\n                        {!disableDefaultLinks && accountOptions && (\n                            <Link\n                                href={`${accountOptions.basePath}/${accountOptions.viewPaths?.SETTINGS}`}\n                            >\n                                <DropdownMenuItem\n                                    className={classNames?.content?.menuItem}\n                                >\n                                    <SettingsIcon />\n\n                                    {localization.SETTINGS}\n                                </DropdownMenuItem>\n                            </Link>\n                        )}\n\n                        <Link href={`${basePath}/${viewPaths.SIGN_OUT}`}>\n                            <DropdownMenuItem\n                                className={classNames?.content?.menuItem}\n                            >\n                                <LogOutIcon />\n\n                                {localization.SIGN_OUT}\n                            </DropdownMenuItem>\n                        </Link>\n                    </>\n                )}\n\n                {user && multiSession && (\n                    <>\n                        <DropdownMenuSeparator\n                            className={classNames?.content?.separator}\n                        />\n\n                        {!deviceSessions && deviceSessionsPending && (\n                            <>\n                                <DropdownMenuItem\n                                    disabled\n                                    className={classNames?.content?.menuItem}\n                                >\n                                    <UserView\n                                        isPending={true}\n                                        classNames={classNames?.content?.user}\n                                    />\n                                </DropdownMenuItem>\n\n                                <DropdownMenuSeparator\n                                    className={classNames?.content?.separator}\n                                />\n                            </>\n                        )}\n\n                        {deviceSessions\n                            ?.filter(\n                                (sessionData) =>\n                                    sessionData.user.id !== user?.id\n                            )\n                            .map(({ session, user }) => (\n                                <Fragment key={session.id}>\n                                    <DropdownMenuItem\n                                        className={\n                                            classNames?.content?.menuItem\n                                        }\n                                        onClick={() =>\n                                            switchAccount(session.token)\n                                        }\n                                    >\n                                        <UserView\n                                            user={user}\n                                            classNames={\n                                                classNames?.content?.user\n                                            }\n                                        />\n                                    </DropdownMenuItem>\n\n                                    <DropdownMenuSeparator\n                                        className={\n                                            classNames?.content?.separator\n                                        }\n                                    />\n                                </Fragment>\n                            ))}\n\n                        <Link href={`${basePath}/${viewPaths.SIGN_IN}`}>\n                            <DropdownMenuItem\n                                className={classNames?.content?.menuItem}\n                            >\n                                <PlusCircleIcon />\n\n                                {localization.ADD_ACCOUNT}\n                            </DropdownMenuItem>\n                        </Link>\n                    </>\n                )}\n            </DropdownMenuContent>\n        </DropdownMenu>\n    )\n}\n","/**\n * invitation-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { EllipsisIcon, Loader2, XIcon } from \"lucide-react\"\nimport { useContext, useMemo, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { Invitation } from \"../../../types/invitation\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"../../ui/dropdown-menu\"\nimport { UserAvatar } from \"../../user\"\n\nexport interface InvitationCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    invitation: Invitation\n    localization?: AuthLocalization\n    organization: Organization\n}\n\nexport function InvitationCell({\n    className,\n    classNames,\n    invitation,\n    localization: localizationProp,\n    organization\n}: InvitationCellProps) {\n    const {\n        authClient,\n        hooks: { useListInvitations },\n        organization: organizationOptions,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [isLoading, setIsLoading] = useState(false)\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ]\n\n    const roles = [...builtInRoles, ...(organizationOptions?.customRoles || [])]\n    const role = roles.find((r) => r.role === invitation.role)\n\n    const { refetch } = useListInvitations({\n        query: { organizationId: organization?.id }\n    })\n\n    const handleCancelInvitation = async () => {\n        setIsLoading(true)\n\n        try {\n            await authClient.organization.cancelInvitation({\n                invitationId: invitation.id,\n                fetchOptions: { throw: true }\n            })\n\n            await refetch?.()\n\n            toast({\n                variant: \"success\",\n                message: localization.INVITATION_CANCELLED\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLoading(false)\n    }\n\n    return (\n        <Card\n            className={cn(\n                \"flex-row items-center p-4\",\n                className,\n                classNames?.cell\n            )}\n        >\n            <div className=\"flex flex-1 items-center gap-2\">\n                <UserAvatar\n                    className=\"my-0.5\"\n                    user={invitation}\n                    localization={localization}\n                />\n\n                <div className=\"grid flex-1 text-left leading-tight\">\n                    <span className=\"truncate font-semibold text-sm\">\n                        {invitation.email}\n                    </span>\n\n                    <span className=\"truncate text-muted-foreground text-xs\">\n                        {localization.EXPIRES}{\" \"}\n                        {invitation.expiresAt.toLocaleDateString()}\n                    </span>\n                </div>\n            </div>\n\n            <span className=\"truncate text-sm opacity-70\">{role?.label}</span>\n\n            <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                    <Button\n                        className={cn(\n                            \"relative ms-auto\",\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        disabled={isLoading}\n                        size=\"icon\"\n                        type=\"button\"\n                        variant=\"outline\"\n                    >\n                        {isLoading ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <EllipsisIcon className={classNames?.icon} />\n                        )}\n                    </Button>\n                </DropdownMenuTrigger>\n\n                <DropdownMenuContent\n                    onCloseAutoFocus={(e) => e.preventDefault()}\n                >\n                    <DropdownMenuItem\n                        onClick={handleCancelInvitation}\n                        disabled={isLoading}\n                        variant=\"destructive\"\n                    >\n                        <XIcon className={classNames?.icon} />\n\n                        {localization.CANCEL_INVITATION}\n                    </DropdownMenuItem>\n                </DropdownMenuContent>\n            </DropdownMenu>\n        </Card>\n    )\n}\n","/**\n * organization-invitations-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo } from \"react\"\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { CardContent } from \"../../ui/card\"\nimport { InvitationCell } from \"../cells/invitation-cell\"\n\nexport function OrganizationInvitationsCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug: slugProp,\n    ...props\n}: SettingsCardProps & { slug?: string }) {\n    const {\n        localization: contextLocalization,\n        organization: organizationOptions\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const slug = slugProp || organizationOptions?.slug\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization) return null\n\n    return (\n        <OrganizationInvitationsContent\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            {...props}\n        />\n    )\n}\n\nfunction OrganizationInvitationsContent({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    ...props\n}: SettingsCardProps & { organization: Organization }) {\n    const {\n        hooks: { useListInvitations },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: invitations } = useListInvitations({\n        query: { organizationId: organization.id }\n    })\n\n    const pendingInvitations = invitations?.filter(\n        (invitation) => invitation.status === \"pending\"\n    )\n    if (!pendingInvitations?.length) return null\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            title={localization.PENDING_INVITATIONS}\n            description={localization.PENDING_INVITATIONS_DESCRIPTION}\n            {...props}\n        >\n            <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                {pendingInvitations.map((invitation) => (\n                    <InvitationCell\n                        key={invitation.id}\n                        classNames={classNames}\n                        invitation={invitation}\n                        localization={localization}\n                        organization={organization}\n                    />\n                ))}\n            </CardContent>\n        </SettingsCard>\n    )\n}\n","/**\n * organization-logo-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { Trash2Icon, UploadCloudIcon } from \"lucide-react\"\nimport {\n    type ComponentProps,\n    useContext,\n    useMemo,\n    useRef,\n    useState\n} from \"react\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { fileToBase64, resizeAndCropImage } from \"../../../lib/image-utils\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"../../ui/button\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { SettingsCardFooter } from \"../../settings/shared/settings-card-footer\"\nimport { SettingsCardHeader } from \"../../settings/shared/settings-card-header\"\nimport { Card } from \"../../ui/card\"\n\n\n\nimport { OrganizationLogo } from \"../components/organization-logo\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"../../ui/dropdown-menu\"\n\nexport interface OrganizationLogoCardProps extends ComponentProps<typeof Card> {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    slug?: string\n}\n\nexport function OrganizationLogoCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug,\n    ...props\n}: OrganizationLogoCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization) {\n        return (\n            <Card\n                className={cn(\n                    \"w-full pb-0 text-start\",\n                    className,\n                    classNames?.base\n                )}\n                {...props}\n            >\n                <div className=\"flex justify-between\">\n                    <SettingsCardHeader\n                        className=\"grow self-start\"\n                        title={localization.LOGO}\n                        description={localization.LOGO_DESCRIPTION}\n                        isPending\n                        classNames={classNames}\n                    />\n\n                    <Button\n                        type=\"button\"\n                        className=\"me-6 size-fit rounded-full\"\n                        size=\"icon\"\n                        variant=\"ghost\"\n                        disabled\n                    >\n                        <OrganizationLogo\n                            isPending\n                            className=\"size-20 text-2xl\"\n                            classNames={classNames?.avatar}\n                            localization={localization}\n                        />\n                    </Button>\n                </div>\n\n                <SettingsCardFooter\n                    className=\"!py-5\"\n                    instructions={localization.LOGO_INSTRUCTIONS}\n                    classNames={classNames}\n                    isPending\n                />\n            </Card>\n        )\n    }\n\n    return (\n        <OrganizationLogoForm\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            {...props}\n        />\n    )\n}\n\nfunction OrganizationLogoForm({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    ...props\n}: OrganizationLogoCardProps & { organization: Organization }) {\n    const {\n        hooks: { useHasPermission },\n        localization: authLocalization,\n        organization: organizationOptions,\n        mutators: { updateOrganization },\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...authLocalization, ...localizationProp }),\n        [authLocalization, localizationProp]\n    )\n\n    const { refetch: refetchOrganization } = useCurrentOrganization({\n        slug: organization.slug\n    })\n\n    const { data: hasPermission, isPending: permissionPending } =\n        useHasPermission({\n            organizationId: organization.id,\n            permissions: {\n                organization: [\"update\"]\n            }\n        })\n\n    const isPending = permissionPending\n\n    const fileInputRef = useRef<HTMLInputElement | null>(null)\n    const [loading, setLoading] = useState(false)\n\n    const handleLogoChange = async (file: File) => {\n        if (!organizationOptions?.logo || !hasPermission?.success) return\n\n        setLoading(true)\n\n        const resizedFile = await resizeAndCropImage(\n            file,\n            crypto.randomUUID(),\n            organizationOptions.logo.size,\n            organizationOptions.logo.extension\n        )\n\n        let image: string | undefined | null\n\n        if (organizationOptions.logo.upload) {\n            image = await organizationOptions.logo.upload(resizedFile)\n        } else {\n            image = await fileToBase64(resizedFile)\n        }\n\n        if (!image) {\n            setLoading(false)\n            return\n        }\n\n        try {\n            if (updateOrganization) {\n                await updateOrganization({\n                    organizationId: organization.id,\n                    data: { logo: image }\n                })\n            }\n\n            if (refetchOrganization) {\n                await refetchOrganization()\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setLoading(false)\n    }\n\n    const handleDeleteLogo = async () => {\n        if (!hasPermission?.success) return\n\n        setLoading(true)\n\n        try {\n            if (organization.logo && organizationOptions?.logo?.delete) {\n                await organizationOptions.logo.delete(organization.logo)\n            }\n\n            if (updateOrganization) {\n                await updateOrganization({\n                    organizationId: organization.id,\n                    data: { logo: \"\" }\n                })\n            }\n\n            if (refetchOrganization) {\n                await refetchOrganization()\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setLoading(false)\n    }\n\n    const openFileDialog = () => {\n        fileInputRef.current?.click()\n    }\n\n    return (\n        <Card\n            className={cn(\n                \"w-full pb-0 text-start\",\n                className,\n                classNames?.base\n            )}\n            {...props}\n        >\n            <input\n                ref={fileInputRef}\n                accept=\"image/*\"\n                disabled={loading || !hasPermission?.success}\n                hidden\n                type=\"file\"\n                onChange={(e) => {\n                    const file = e.target.files?.item(0)\n                    if (file) handleLogoChange(file)\n\n                    e.target.value = \"\"\n                }}\n            />\n\n            <div className=\"flex justify-between\">\n                <SettingsCardHeader\n                    className=\"grow self-start\"\n                    title={localization.LOGO}\n                    description={localization.LOGO_DESCRIPTION}\n                    isPending={isPending}\n                    classNames={classNames}\n                />\n\n                <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                        <Button\n                            type=\"button\"\n                            className=\"me-6 size-fit rounded-full\"\n                            size=\"icon\"\n                            variant=\"ghost\"\n                            disabled={!hasPermission?.success}\n                        >\n                            <OrganizationLogo\n                                isPending={isPending || loading}\n                                key={organization.logo}\n                                className=\"size-20 text-2xl\"\n                                classNames={classNames?.avatar}\n                                organization={organization}\n                                localization={localization}\n                            />\n                        </Button>\n                    </DropdownMenuTrigger>\n\n                    <DropdownMenuContent\n                        align=\"end\"\n                        onCloseAutoFocus={(e) => e.preventDefault()}\n                    >\n                        <DropdownMenuItem\n                            onClick={openFileDialog}\n                            disabled={loading || !hasPermission?.success}\n                        >\n                            <UploadCloudIcon />\n\n                            {localization.UPLOAD_LOGO}\n                        </DropdownMenuItem>\n\n                        {organization.logo && (\n                            <DropdownMenuItem\n                                onClick={handleDeleteLogo}\n                                disabled={loading || !hasPermission?.success}\n                                variant=\"destructive\"\n                            >\n                                <Trash2Icon />\n\n                                {localization.DELETE_LOGO}\n                            </DropdownMenuItem>\n                        )}\n                    </DropdownMenuContent>\n                </DropdownMenu>\n            </div>\n\n            <SettingsCardFooter\n                className=\"!py-5\"\n                instructions={localization.LOGO_INSTRUCTIONS}\n                classNames={classNames}\n                isPending={isPending}\n                isSubmitting={loading}\n            />\n        </Card>\n    )\n}\n","/**\n * select\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Select({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n  return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n  return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n  return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n  className,\n  size = \"default\",\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n  size?: \"sm\" | \"default\"\n}) {\n  return (\n    <SelectPrimitive.Trigger\n      data-slot=\"select-trigger\"\n      data-size={size}\n      className={cn(\n        \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    >\n      {children}\n      <SelectPrimitive.Icon asChild>\n        <ChevronDownIcon className=\"size-4 opacity-50\" />\n      </SelectPrimitive.Icon>\n    </SelectPrimitive.Trigger>\n  )\n}\n\nfunction SelectContent({\n  className,\n  children,\n  position = \"popper\",\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n  return (\n    <SelectPrimitive.Portal>\n      <SelectPrimitive.Content\n        data-slot=\"select-content\"\n        className={cn(\n          \"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n          position === \"popper\" &&\n            \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n          className\n        )}\n        position={position}\n        {...props}\n      >\n        <SelectScrollUpButton />\n        <SelectPrimitive.Viewport\n          className={cn(\n            \"p-1\",\n            position === \"popper\" &&\n              \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n          )}\n        >\n          {children}\n        </SelectPrimitive.Viewport>\n        <SelectScrollDownButton />\n      </SelectPrimitive.Content>\n    </SelectPrimitive.Portal>\n  )\n}\n\nfunction SelectLabel({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n  return (\n    <SelectPrimitive.Label\n      data-slot=\"select-label\"\n      className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectItem({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n  return (\n    <SelectPrimitive.Item\n      data-slot=\"select-item\"\n      className={cn(\n        \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n        className\n      )}\n      {...props}\n    >\n      <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n        <SelectPrimitive.ItemIndicator>\n          <CheckIcon className=\"size-4\" />\n        </SelectPrimitive.ItemIndicator>\n      </span>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  )\n}\n\nfunction SelectSeparator({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n  return (\n    <SelectPrimitive.Separator\n      data-slot=\"select-separator\"\n      className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction SelectScrollUpButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n  return (\n    <SelectPrimitive.ScrollUpButton\n      data-slot=\"select-scroll-up-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronUpIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollUpButton>\n  )\n}\n\nfunction SelectScrollDownButton({\n  className,\n  ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n  return (\n    <SelectPrimitive.ScrollDownButton\n      data-slot=\"select-scroll-down-button\"\n      className={cn(\n        \"flex cursor-default items-center justify-center py-1\",\n        className\n      )}\n      {...props}\n    >\n      <ChevronDownIcon className=\"size-4\" />\n    </SelectPrimitive.ScrollDownButton>\n  )\n}\n\nexport {\n  Select,\n  SelectContent,\n  SelectGroup,\n  SelectItem,\n  SelectLabel,\n  SelectScrollDownButton,\n  SelectScrollUpButton,\n  SelectSeparator,\n  SelectTrigger,\n  SelectValue,\n}\n","/**\n * invite-member-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"../../ui/dialog\"\nimport { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../../ui/select\"\n\n\n\n\n\nexport interface InviteMemberDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    organization: Organization\n}\n\nexport function InviteMemberDialog({\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    organization,\n    ...props\n}: InviteMemberDialogProps) {\n    const {\n        authClient,\n        hooks: { useListInvitations, useListMembers, useSession },\n        localization: contextLocalization,\n        toast,\n        organization: organizationOptions\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data } = useListMembers({\n        query: { organizationId: organization.id }\n    })\n\n    const { refetch } = useListInvitations({\n        query: { organizationId: organization.id }\n    })\n\n    const members = data?.members\n\n    const { data: sessionData } = useSession()\n    const membership = members?.find((m) => m.userId === sessionData?.user.id)\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ] as const\n\n    const roles = [...builtInRoles, ...(organizationOptions?.customRoles || [])]\n    const availableRoles = roles.filter(\n        (role) => membership?.role === \"owner\" || role.role !== \"owner\"\n    )\n\n    const formSchema = z.object({\n        email: z\n            .string()\n            .min(1, { message: localization.EMAIL_REQUIRED })\n            .email({\n                message: localization.INVALID_EMAIL\n            }),\n        role: z.string().min(1, {\n            message: `${localization.ROLE} ${localization.IS_REQUIRED}`\n        })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            email: \"\",\n            role: \"member\"\n        }\n    })\n\n    const isSubmitting = form.formState.isSubmitting\n\n    async function onSubmit({ email, role }: z.infer<typeof formSchema>) {\n        try {\n            await authClient.organization.inviteMember({\n                email,\n                role: role as (typeof builtInRoles)[number][\"role\"],\n                organizationId: organization.id,\n                fetchOptions: { throw: true }\n            })\n\n            await refetch?.()\n\n            onOpenChange?.(false)\n            form.reset()\n\n            toast({\n                variant: \"success\",\n                message:\n                    localization.SEND_INVITATION_SUCCESS ||\n                    \"Invitation sent successfully\"\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent className={classNames?.dialog?.content}>\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.INVITE_MEMBER}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.INVITE_MEMBER_DESCRIPTION}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(onSubmit)}\n                        className=\"space-y-6\"\n                    >\n                        <FormField\n                            control={form.control}\n                            name=\"email\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel className={classNames?.label}>\n                                        {localization.EMAIL}\n                                    </FormLabel>\n\n                                    <FormControl>\n                                        <Input\n                                            placeholder={\n                                                localization.EMAIL_PLACEHOLDER\n                                            }\n                                            type=\"email\"\n                                            {...field}\n                                            className={classNames?.input}\n                                        />\n                                    </FormControl>\n\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n\n                        <FormField\n                            control={form.control}\n                            name=\"role\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel className={classNames?.label}>\n                                        {localization.ROLE}\n                                    </FormLabel>\n\n                                    <Select\n                                        onValueChange={field.onChange}\n                                        defaultValue={field.value}\n                                    >\n                                        <FormControl>\n                                            <SelectTrigger>\n                                                <SelectValue />\n                                            </SelectTrigger>\n                                        </FormControl>\n\n                                        <SelectContent>\n                                            {availableRoles.map((role) => (\n                                                <SelectItem\n                                                    key={role.role}\n                                                    value={role.role}\n                                                >\n                                                    {role.label}\n                                                </SelectItem>\n                                            ))}\n                                        </SelectContent>\n                                    </Select>\n\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"outline\"\n                                onClick={() => onOpenChange?.(false)}\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.outlineButton\n                                )}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                type=\"submit\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.primaryButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n\n                                {localization.SEND_INVITATION}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * remove-member-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { User } from \"better-auth\"\nimport type { Member } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\n\n\nimport { MemberCell } from \"../cells/member-cell\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"../../ui/dialog\"\n\nexport interface RemoveMemberDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    member: Member & { user?: Partial<User> | null }\n}\n\nexport function RemoveMemberDialog({\n    member,\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    ...props\n}: RemoveMemberDialogProps) {\n    const {\n        authClient,\n        hooks: { useListMembers },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { refetch } = useListMembers({\n        query: { organizationId: member.organizationId }\n    })\n\n    const [isRemoving, setIsRemoving] = useState(false)\n\n    const removeMember = async () => {\n        setIsRemoving(true)\n\n        try {\n            await authClient.organization.removeMember({\n                memberIdOrEmail: member.id,\n                organizationId: member.organizationId,\n                fetchOptions: { throw: true }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.REMOVE_MEMBER_SUCCESS\n            })\n\n            await refetch?.()\n\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsRemoving(false)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={classNames?.dialog?.content}\n                onOpenAutoFocus={(e) => e.preventDefault()}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.REMOVE_MEMBER}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.REMOVE_MEMBER_CONFIRM}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <MemberCell\n                    className={classNames?.cell}\n                    member={member}\n                    localization={localization}\n                    hideActions\n                />\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => onOpenChange?.(false)}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        disabled={isRemoving}\n                    >\n                        {localization.CANCEL}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"destructive\"\n                        onClick={removeMember}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.destructiveButton\n                        )}\n                        disabled={isRemoving}\n                    >\n                        {isRemoving && <Loader2 className=\"animate-spin\" />}\n\n                        {localization.REMOVE_MEMBER}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * update-member-role-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { User } from \"better-auth\"\nimport type { Member } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useMemo, useState } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\n\n\n\nimport { MemberCell } from \"../cells/member-cell\"\nimport { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from \"../../ui/dialog\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../../ui/select\"\n\nexport interface UpdateMemberRoleDialogProps\n    extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    member: Member & { user?: Partial<User> | null }\n}\n\nexport function UpdateMemberRoleDialog({\n    member,\n    classNames,\n    localization: localizationProp,\n    onOpenChange,\n    ...props\n}: UpdateMemberRoleDialogProps) {\n    const {\n        authClient,\n        hooks: { useSession, useListMembers },\n        localization: contextLocalization,\n        organization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data, refetch } = useListMembers({\n        query: { organizationId: member.organizationId }\n    })\n\n    const members = data?.members\n\n    const { data: sessionData } = useSession()\n\n    const [isUpdating, setIsUpdating] = useState(false)\n    const [selectedRole, setSelectedRole] = useState(member.role)\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ]\n\n    const roles = [...builtInRoles, ...(organization?.customRoles || [])]\n\n    const currentUserRole = members?.find(\n        (m) => m.user?.id === sessionData?.user.id\n    )?.role\n\n    const availableRoles = roles.filter((role) => {\n        if (role.role === \"owner\") {\n            return currentUserRole === \"owner\"\n        }\n\n        if (role.role === \"admin\") {\n            return currentUserRole === \"owner\" || currentUserRole === \"admin\"\n        }\n\n        return true\n    })\n\n    const updateMemberRole = async () => {\n        if (selectedRole === member.role) {\n            toast({\n                variant: \"error\",\n                message: `${localization.ROLE} ${localization.IS_THE_SAME}`\n            })\n\n            return\n        }\n\n        setIsUpdating(true)\n\n        try {\n            await authClient.organization.updateMemberRole({\n                memberId: member.id,\n                role: selectedRole,\n                organizationId: member.organizationId,\n                fetchOptions: {\n                    throw: true\n                }\n            })\n\n            toast({\n                variant: \"success\",\n                message: localization.MEMBER_ROLE_UPDATED\n            })\n\n            await refetch?.()\n\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsUpdating(false)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={classNames?.dialog?.content}\n                onOpenAutoFocus={(e) => e.preventDefault()}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.UPDATE_ROLE}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.UPDATE_ROLE_DESCRIPTION}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <div className=\"grid gap-6 py-4\">\n                    <MemberCell\n                        className={classNames?.cell}\n                        member={member}\n                        localization={localization}\n                        hideActions\n                    />\n\n                    <Select\n                        value={selectedRole}\n                        onValueChange={setSelectedRole}\n                    >\n                        <SelectTrigger className=\"w-full\">\n                            <SelectValue\n                                placeholder={localization.SELECT_ROLE}\n                            />\n                        </SelectTrigger>\n\n                        <SelectContent>\n                            {availableRoles.map((role) => (\n                                <SelectItem key={role.role} value={role.role}>\n                                    {role.label}\n                                </SelectItem>\n                            ))}\n                        </SelectContent>\n                    </Select>\n                </div>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={() => onOpenChange?.(false)}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        disabled={isUpdating}\n                    >\n                        {localization.CANCEL}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        onClick={updateMemberRole}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                        disabled={isUpdating}\n                    >\n                        {isUpdating && <Loader2 className=\"animate-spin\" />}\n\n                        {localization.UPDATE_ROLE}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * member-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { User } from \"better-auth\"\nimport type { Member } from \"better-auth/plugins/organization\"\nimport { EllipsisIcon, UserCogIcon, UserXIcon } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"../../ui/dropdown-menu\"\nimport { UserView } from \"../../ui/user-view\"\nimport { LeaveOrganizationDialog } from \"../dialogs/leave-organization-dialog\"\nimport { RemoveMemberDialog } from \"../dialogs/remove-member-dialog\"\nimport { UpdateMemberRoleDialog } from \"../dialogs/update-member-role-dialog\"\n\nexport interface MemberCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    member: Member & { user?: Partial<User> | null }\n    localization?: AuthLocalization\n    hideActions?: boolean\n}\n\nexport function MemberCell({\n    className,\n    classNames,\n    member,\n    localization: localizationProp,\n    hideActions\n}: MemberCellProps) {\n    const {\n        organization: organizationOptions,\n        hooks: {\n            useListMembers,\n            useSession,\n            useListOrganizations,\n            useHasPermission\n        },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n    const localization = { ...contextLocalization, ...localizationProp }\n\n    const { data: sessionData } = useSession()\n    const [removeDialogOpen, setRemoveDialogOpen] = useState(false)\n    const [leaveDialogOpen, setLeaveDialogOpen] = useState(false)\n    const [updateRoleDialogOpen, setUpdateRoleDialogOpen] = useState(false)\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ]\n\n    const { data } = useListMembers({\n        query: { organizationId: member.organizationId }\n    })\n\n    const members = data?.members\n\n    const myRole = members?.find(\n        (m) => m.user?.id === sessionData?.user.id\n    )?.role\n    const roles = [...builtInRoles, ...(organizationOptions?.customRoles || [])]\n    const role = roles.find((r) => r.role === member.role)\n\n    const isSelf = sessionData?.user.id === member?.userId\n\n    const { data: organizations } = useListOrganizations()\n    const organization = organizations?.find(\n        (org: any) => org.id === member.organizationId\n    )\n\n    const { data: hasPermissionToUpdateMember } = useHasPermission({\n        organizationId: member.organizationId,\n        permission: { member: [\"update\"] }\n    })\n\n    return (\n        <>\n            <Card\n                className={cn(\n                    \"flex-row items-center p-4\",\n                    className,\n                    classNames?.cell\n                )}\n            >\n                <UserView\n                    user={member.user}\n                    localization={localization}\n                    className=\"flex-1\"\n                />\n\n                <span className=\"text-xs opacity-70\">{role?.label}</span>\n\n                {!hideActions &&\n                    (isSelf ||\n                        member.role !== \"owner\" ||\n                        myRole === \"owner\") && (\n                        <DropdownMenu>\n                            <DropdownMenuTrigger asChild>\n                                <Button\n                                    className={cn(\n                                        \"relative ms-auto\",\n                                        classNames?.button,\n                                        classNames?.outlineButton\n                                    )}\n                                    size=\"icon\"\n                                    type=\"button\"\n                                    variant=\"outline\"\n                                >\n                                    <EllipsisIcon\n                                        className={classNames?.icon}\n                                    />\n                                </Button>\n                            </DropdownMenuTrigger>\n\n                            <DropdownMenuContent\n                                onCloseAutoFocus={(e) => e.preventDefault()}\n                            >\n                                {hasPermissionToUpdateMember?.success && (\n                                    <DropdownMenuItem\n                                        onClick={() =>\n                                            setUpdateRoleDialogOpen(true)\n                                        }\n                                    >\n                                        <UserCogIcon\n                                            className={classNames?.icon}\n                                        />\n                                        {localization?.UPDATE_ROLE}\n                                    </DropdownMenuItem>\n                                )}\n\n                                <DropdownMenuItem\n                                    onClick={() =>\n                                        isSelf\n                                            ? setLeaveDialogOpen(true)\n                                            : setRemoveDialogOpen(true)\n                                    }\n                                    variant=\"destructive\"\n                                >\n                                    <UserXIcon className={classNames?.icon} />\n                                    {isSelf\n                                        ? localization?.LEAVE_ORGANIZATION\n                                        : localization?.REMOVE_MEMBER}\n                                </DropdownMenuItem>\n                            </DropdownMenuContent>\n                        </DropdownMenu>\n                    )}\n            </Card>\n\n            <RemoveMemberDialog\n                open={removeDialogOpen}\n                onOpenChange={setRemoveDialogOpen}\n                member={member}\n                classNames={classNames}\n                localization={localization}\n            />\n\n            {organization && (\n                <LeaveOrganizationDialog\n                    open={leaveDialogOpen}\n                    onOpenChange={setLeaveDialogOpen}\n                    organization={organization}\n                    classNames={classNames}\n                    localization={localization}\n                />\n            )}\n\n            <UpdateMemberRoleDialog\n                open={updateRoleDialogOpen}\n                onOpenChange={setUpdateRoleDialogOpen}\n                member={member}\n                classNames={classNames}\n                localization={localization}\n            />\n        </>\n    )\n}\n","/**\n * organization-members-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo, useState } from \"react\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { CardContent } from \"../../ui/card\"\nimport { InviteMemberDialog } from \"../dialogs/invite-member-dialog\"\nimport { MemberCell } from \"../cells/member-cell\"\n\nexport function OrganizationMembersCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug: slugProp,\n    ...props\n}: SettingsCardProps & { slug?: string }) {\n    const {\n        localization: contextLocalization,\n        organization: organizationOptions\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const slug = slugProp || organizationOptions?.slug\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization) {\n        return (\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization.MEMBERS}\n                description={localization.MEMBERS_DESCRIPTION}\n                instructions={localization.MEMBERS_INSTRUCTIONS}\n                actionLabel={localization.INVITE_MEMBER}\n                isPending\n                {...props}\n            />\n        )\n    }\n\n    return (\n        <OrganizationMembersContent\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            {...props}\n        />\n    )\n}\n\nfunction OrganizationMembersContent({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    ...props\n}: SettingsCardProps & { organization: Organization }) {\n    const {\n        hooks: { useHasPermission, useListMembers },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: hasPermissionInvite, isPending: isPendingInvite } =\n        useHasPermission({\n            organizationId: organization.id,\n            permissions: {\n                invitation: [\"create\"]\n            }\n        })\n\n    const {\n        data: hasPermissionUpdateMember,\n        isPending: isPendingUpdateMember\n    } = useHasPermission({\n        organizationId: organization.id,\n        permission: {\n            member: [\"update\"]\n        }\n    })\n\n    const isPending = isPendingInvite || isPendingUpdateMember\n\n    const { data } = useListMembers({\n        query: { organizationId: organization.id }\n    })\n\n    const members = data?.members\n\n    const [inviteDialogOpen, setInviteDialogOpen] = useState(false)\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization.MEMBERS}\n                description={localization.MEMBERS_DESCRIPTION}\n                instructions={localization.MEMBERS_INSTRUCTIONS}\n                actionLabel={localization.INVITE_MEMBER}\n                action={() => setInviteDialogOpen(true)}\n                isPending={isPending}\n                disabled={!hasPermissionInvite?.success}\n                {...props}\n            >\n                {!isPending && members && members.length > 0 && (\n                    <CardContent\n                        className={cn(\"grid gap-4\", classNames?.content)}\n                    >\n                        {members\n                            .sort(\n                                (a, b) =>\n                                    new Date(a.createdAt).getTime() -\n                                    new Date(b.createdAt).getTime()\n                            )\n                            .map((member) => (\n                                <MemberCell\n                                    key={member.id}\n                                    classNames={classNames}\n                                    member={member}\n                                    localization={localization}\n                                    hideActions={\n                                        !hasPermissionUpdateMember?.success\n                                    }\n                                />\n                            ))}\n                    </CardContent>\n                )}\n            </SettingsCard>\n\n            <InviteMemberDialog\n                open={inviteDialogOpen}\n                onOpenChange={setInviteDialogOpen}\n                classNames={classNames}\n                localization={localization}\n                organization={organization}\n            />\n        </>\n    )\n}\n","/**\n * organization-name-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport { CardContent } from \"../../ui/card\"\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport {\n    SettingsCard,\n    type SettingsCardProps\n} from \"../../settings/shared/settings-card\"\n\n\n\n\nexport interface OrganizationNameCardProps extends SettingsCardProps {\n    slug?: string\n}\n\nexport function OrganizationNameCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug,\n    ...props\n}: OrganizationNameCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization) {\n        return (\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                actionLabel={localization.SAVE}\n                description={localization.ORGANIZATION_NAME_DESCRIPTION}\n                instructions={localization.ORGANIZATION_NAME_INSTRUCTIONS}\n                isPending\n                title={localization.ORGANIZATION_NAME}\n                {...props}\n            >\n                <CardContent className={classNames?.content}>\n                    <Skeleton\n                        className={cn(\"h-9 w-full\", classNames?.skeleton)}\n                    />\n                </CardContent>\n            </SettingsCard>\n        )\n    }\n\n    return (\n        <OrganizationNameForm\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            {...props}\n        />\n    )\n}\n\nfunction OrganizationNameForm({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    ...props\n}: OrganizationNameCardProps & { organization: Organization }) {\n    const {\n        localization: contextLocalization,\n        hooks: { useHasPermission },\n        mutators: { updateOrganization },\n        optimistic,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp }\n\n    const { data: hasPermission, isPending: permissionPending } =\n        useHasPermission({\n            organizationId: organization.id,\n            permissions: {\n                organization: [\"update\"]\n            }\n        })\n\n    const { refetch: refetchOrganization } = useCurrentOrganization({\n        slug: organization.slug\n    })\n\n    const isPending = permissionPending\n\n    const formSchema = z.object({\n        name: z.string().min(1, {\n            message: `${localization.ORGANIZATION_NAME} ${localization.IS_REQUIRED}`\n        })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        values: { name: organization.name || \"\" }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const updateOrganizationName = async ({\n        name\n    }: z.infer<typeof formSchema>) => {\n        if (organization.name === name) {\n            toast({\n                variant: \"error\",\n                message: `${localization.ORGANIZATION_NAME} ${localization.IS_THE_SAME}`\n            })\n\n            return\n        }\n\n        try {\n            await updateOrganization({\n                organizationId: organization.id,\n                data: { name }\n            })\n\n            await refetchOrganization?.()\n\n            toast({\n                variant: \"success\",\n                message: `${localization.ORGANIZATION_NAME} ${localization.UPDATED_SUCCESSFULLY}`\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form onSubmit={form.handleSubmit(updateOrganizationName)}>\n                <SettingsCard\n                    className={className}\n                    classNames={classNames}\n                    description={localization.ORGANIZATION_NAME_DESCRIPTION}\n                    instructions={localization.ORGANIZATION_NAME_INSTRUCTIONS}\n                    isPending={isPending}\n                    title={localization.ORGANIZATION_NAME}\n                    actionLabel={localization.SAVE}\n                    optimistic={optimistic}\n                    disabled={!hasPermission?.success}\n                    {...props}\n                >\n                    <CardContent className={classNames?.content}>\n                        {isPending ? (\n                            <Skeleton\n                                className={cn(\n                                    \"h-9 w-full\",\n                                    classNames?.skeleton\n                                )}\n                            />\n                        ) : (\n                            <FormField\n                                control={form.control}\n                                name=\"name\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormControl>\n                                            <Input\n                                                className={classNames?.input}\n                                                placeholder={\n                                                    localization.ORGANIZATION_NAME_PLACEHOLDER\n                                                }\n                                                disabled={\n                                                    isSubmitting ||\n                                                    !hasPermission?.success\n                                                }\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n                    </CardContent>\n                </SettingsCard>\n            </form>\n        </Form>\n    )\n}\n","/**\n * organization-slug-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport { CardContent } from \"../../ui/card\"\nimport { Form, FormControl, FormField, FormItem, FormMessage } from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport {\n    SettingsCard,\n    type SettingsCardProps\n} from \"../../settings/shared/settings-card\"\n\n\n\n\nexport interface OrganizationSlugCardProps extends SettingsCardProps {\n    slug?: string\n}\n\nexport function OrganizationSlugCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    slug: slugProp,\n    ...props\n}: OrganizationSlugCardProps) {\n    const {\n        localization: contextLocalization,\n        organization: organizationOptions\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const slug = slugProp || organizationOptions?.slug\n\n    const { data: organization } = useCurrentOrganization({ slug })\n\n    if (!organization) {\n        return (\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                description={localization.ORGANIZATION_SLUG_DESCRIPTION}\n                instructions={localization.ORGANIZATION_SLUG_INSTRUCTIONS}\n                isPending\n                title={localization.ORGANIZATION_SLUG}\n                actionLabel={localization.SAVE}\n                {...props}\n            >\n                <CardContent className={classNames?.content}>\n                    <Skeleton\n                        className={cn(\"h-9 w-full\", classNames?.skeleton)}\n                    />\n                </CardContent>\n            </SettingsCard>\n        )\n    }\n\n    return (\n        <OrganizationSlugForm\n            className={className}\n            classNames={classNames}\n            localization={localization}\n            organization={organization}\n            {...props}\n        />\n    )\n}\n\nfunction OrganizationSlugForm({\n    className,\n    classNames,\n    localization: localizationProp,\n    organization,\n    ...props\n}: OrganizationSlugCardProps & { organization: Organization }) {\n    const {\n        localization: contextLocalization,\n        hooks: { useHasPermission },\n        mutators: { updateOrganization },\n        optimistic,\n        toast,\n        organization: organizationOptions,\n        replace\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { refetch: refetchOrganization } = useCurrentOrganization({\n        slug: organization.slug\n    })\n\n    const { data: hasPermission, isPending } = useHasPermission({\n        organizationId: organization.id,\n        permissions: {\n            organization: [\"update\"]\n        }\n    })\n\n    const formSchema = z.object({\n        slug: z\n            .string()\n            .min(1, {\n                message: `${localization.ORGANIZATION_SLUG} ${localization.IS_REQUIRED}`\n            })\n            .regex(/^[a-z0-9-]+$/, {\n                message: `${localization.ORGANIZATION_SLUG} ${localization.IS_INVALID}`\n            })\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        values: { slug: organization.slug || \"\" }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const updateOrganizationSlug = async ({\n        slug\n    }: z.infer<typeof formSchema>) => {\n        if (organization.slug === slug) {\n            toast({\n                variant: \"error\",\n                message: `${localization.ORGANIZATION_SLUG} ${localization.IS_THE_SAME}`\n            })\n\n            return\n        }\n\n        try {\n            await updateOrganization({\n                organizationId: organization.id,\n                data: { slug }\n            })\n\n            await refetchOrganization?.()\n\n            toast({\n                variant: \"success\",\n                message: `${localization.ORGANIZATION_SLUG} ${localization.UPDATED_SUCCESSFULLY}`\n            })\n\n            // If using slug-based paths, redirect to the new slug's settings route\n            if (organizationOptions?.pathMode === \"slug\") {\n                const basePath = organizationOptions.basePath\n                const settingsPath = organizationOptions.viewPaths.SETTINGS\n                replace(`${basePath}/${slug}/${settingsPath}`)\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form onSubmit={form.handleSubmit(updateOrganizationSlug)}>\n                <SettingsCard\n                    className={className}\n                    classNames={classNames}\n                    description={localization.ORGANIZATION_SLUG_DESCRIPTION}\n                    instructions={localization.ORGANIZATION_SLUG_INSTRUCTIONS}\n                    isPending={isPending}\n                    title={localization.ORGANIZATION_SLUG}\n                    actionLabel={localization.SAVE}\n                    optimistic={optimistic}\n                    disabled={!hasPermission?.success}\n                    {...props}\n                >\n                    <CardContent className={classNames?.content}>\n                        {isPending ? (\n                            <Skeleton\n                                className={cn(\n                                    \"h-9 w-full\",\n                                    classNames?.skeleton\n                                )}\n                            />\n                        ) : (\n                            <FormField\n                                control={form.control}\n                                name=\"slug\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormControl>\n                                            <Input\n                                                className={classNames?.input}\n                                                placeholder={\n                                                    localization.ORGANIZATION_SLUG_PLACEHOLDER\n                                                }\n                                                disabled={\n                                                    isSubmitting ||\n                                                    !hasPermission?.success\n                                                }\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n                    </CardContent>\n                </SettingsCard>\n            </form>\n        </Form>\n    )\n}\n","/**\n * organization-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { EllipsisIcon, Loader2, LogOutIcon, SettingsIcon } from \"lucide-react\"\nimport { useCallback, useContext, useMemo, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"../../ui/dropdown-menu\"\nimport { LeaveOrganizationDialog } from \"../dialogs/leave-organization-dialog\"\nimport { OrganizationCellView } from \"./organization-cell-view\"\n\nexport interface OrganizationCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    organization: Organization\n    localization?: AuthLocalization\n}\n\nexport function OrganizationCell({\n    className,\n    classNames,\n    organization,\n    localization: localizationProp\n}: OrganizationCellProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        organization: organizationOptions,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { pathMode } = organizationOptions || {}\n\n    const [isLeaveDialogOpen, setIsLeaveDialogOpen] = useState(false)\n    const [isManagingOrganization, setIsManagingOrganization] = useState(false)\n\n    const handleManageOrganization = useCallback(async () => {\n        setIsManagingOrganization(true)\n\n        if (pathMode === \"slug\") {\n            navigate(\n                `${organizationOptions?.basePath}/${organization.slug}/${organizationOptions?.viewPaths.SETTINGS}`\n            )\n\n            return\n        }\n\n        try {\n            await authClient.organization.setActive({\n                organizationId: organization.id,\n                fetchOptions: {\n                    throw: true\n                }\n            })\n\n            navigate(\n                `${organizationOptions?.basePath}/${organizationOptions?.viewPaths?.SETTINGS}`\n            )\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n\n            setIsManagingOrganization(false)\n        }\n    }, [\n        authClient,\n        organization.id,\n        organizationOptions?.basePath,\n        organizationOptions?.viewPaths?.SETTINGS,\n        organization.slug,\n        pathMode,\n        navigate,\n        toast,\n        localization\n    ])\n\n    return (\n        <>\n            <Card className={cn(\"flex-row p-4\", className, classNames?.cell)}>\n                <OrganizationCellView\n                    organization={organization}\n                    localization={localization}\n                />\n\n                <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                        <Button\n                            className={cn(\n                                \"relative ms-auto\",\n                                classNames?.button,\n                                classNames?.outlineButton\n                            )}\n                            disabled={isManagingOrganization}\n                            size=\"icon\"\n                            type=\"button\"\n                            variant=\"outline\"\n                        >\n                            {isManagingOrganization ? (\n                                <Loader2 className=\"animate-spin\" />\n                            ) : (\n                                <EllipsisIcon className={classNames?.icon} />\n                            )}\n                        </Button>\n                    </DropdownMenuTrigger>\n\n                    <DropdownMenuContent>\n                        <DropdownMenuItem\n                            onClick={handleManageOrganization}\n                            disabled={isManagingOrganization}\n                        >\n                            <SettingsIcon className={classNames?.icon} />\n\n                            {localization.MANAGE_ORGANIZATION}\n                        </DropdownMenuItem>\n\n                        <DropdownMenuItem\n                            onClick={() => setIsLeaveDialogOpen(true)}\n                            variant=\"destructive\"\n                        >\n                            <LogOutIcon className={classNames?.icon} />\n\n                            {localization.LEAVE_ORGANIZATION}\n                        </DropdownMenuItem>\n                    </DropdownMenuContent>\n                </DropdownMenu>\n            </Card>\n\n            <LeaveOrganizationDialog\n                open={isLeaveDialogOpen}\n                onOpenChange={setIsLeaveDialogOpen}\n                organization={organization}\n                localization={localization}\n            />\n        </>\n    )\n}\n","/**\n * organizations-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\nimport { useContext, useMemo, useState } from \"react\"\n\nimport { useIsHydrated } from \"../../../hooks/use-hydrated\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { SettingsCellSkeleton } from \"../../settings/skeletons/settings-cell-skeleton\"\nimport { CardContent } from \"../../ui/card\"\nimport { CreateOrganizationDialog } from \"../dialogs/create-organization-dialog\"\nimport { OrganizationCell } from \"../cells/organization-cell\"\n\nexport function OrganizationsCard({\n    className,\n    classNames,\n    localization,\n    ...props\n}: SettingsCardProps) {\n    const {\n        hooks: { useListOrganizations },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    localization = useMemo(\n        () => ({ ...contextLocalization, ...localization }),\n        [contextLocalization, localization]\n    )\n\n    const isHydrated = useIsHydrated()\n    const { data: organizations, isPending: organizationsPending } =\n        useListOrganizations()\n\n    const isPending = !isHydrated || organizationsPending\n\n    const [createDialogOpen, setCreateDialogOpen] = useState(false)\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization.ORGANIZATIONS}\n                description={localization.ORGANIZATIONS_DESCRIPTION}\n                instructions={localization.ORGANIZATIONS_INSTRUCTIONS}\n                actionLabel={localization.CREATE_ORGANIZATION}\n                action={() => setCreateDialogOpen(true)}\n                isPending={isPending}\n                {...props}\n            >\n                <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                    {isPending && <SettingsCellSkeleton />}\n                    {organizations?.map((organization: any) => (\n                        <OrganizationCell\n                            key={organization.id}\n                            classNames={classNames}\n                            organization={organization}\n                            localization={localization}\n                        />\n                    ))}\n                </CardContent>\n            </SettingsCard>\n\n            <CreateOrganizationDialog\n                classNames={classNames}\n                localization={localization}\n                open={createDialogOpen}\n                onOpenChange={setCreateDialogOpen}\n            />\n        </>\n    )\n}\n","/**\n * user-invitations-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { CheckIcon, EllipsisIcon, Loader2, XIcon } from \"lucide-react\"\nimport { useContext, useMemo, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport { Button } from \"../../ui/button\"\nimport type { SettingsCardProps } from \"../../settings/shared/settings-card\"\nimport { SettingsCard } from \"../../settings/shared/settings-card\"\nimport { Card, CardContent } from \"../../ui/card\"\n\n\n\nimport { UserAvatar } from \"../../user\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"../../ui/dropdown-menu\"\n\nexport function UserInvitationsCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    ...props\n}: SettingsCardProps) {\n    const {\n        hooks: { useListUserInvitations, useListOrganizations },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { data: invitations, refetch: refetchInvitations } =\n        useListUserInvitations()\n    const { refetch: refetchOrganizations } = useListOrganizations()\n\n    const handleRefresh = async () => {\n        await refetchInvitations?.()\n        await refetchOrganizations?.()\n    }\n\n    const pendingInvitations = invitations?.filter(\n        (invitation) => invitation.status === \"pending\"\n    )\n\n    if (!pendingInvitations?.length) return null\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            title={localization.PENDING_INVITATIONS}\n            description={\n                localization.PENDING_USER_INVITATIONS_DESCRIPTION ||\n                localization.PENDING_INVITATIONS_DESCRIPTION\n            }\n            {...props}\n        >\n            <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                {pendingInvitations.map((invitation) => (\n                    <UserInvitationRow\n                        key={invitation.id}\n                        classNames={classNames}\n                        invitation={{\n                            id: invitation.id,\n                            email: invitation.email,\n                            role: invitation.role,\n                            status: invitation.status,\n                            expiresAt: invitation.expiresAt\n                        }}\n                        onChanged={handleRefresh}\n                    />\n                ))}\n            </CardContent>\n        </SettingsCard>\n    )\n}\n\nfunction UserInvitationRow({\n    classNames,\n    invitation,\n    onChanged\n}: {\n    classNames?: SettingsCardProps[\"classNames\"]\n    invitation: {\n        id: string\n        email: string\n        role: string\n        status: string\n        expiresAt: Date\n    }\n    onChanged?: () => unknown\n}) {\n    const {\n        authClient,\n        organization: organizationOptions,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = contextLocalization\n\n    const [isLoading, setIsLoading] = useState(false)\n\n    const builtInRoles = [\n        { role: \"owner\", label: localization.OWNER },\n        { role: \"admin\", label: localization.ADMIN },\n        { role: \"member\", label: localization.MEMBER }\n    ]\n\n    const roles = [...builtInRoles, ...(organizationOptions?.customRoles || [])]\n    const role = roles.find((r) => r.role === invitation.role)\n\n    const handleAccept = async () => {\n        setIsLoading(true)\n\n        try {\n            await authClient.organization.acceptInvitation({\n                invitationId: invitation.id,\n                fetchOptions: { throw: true }\n            })\n\n            await onChanged?.()\n\n            toast({\n                variant: \"success\",\n                message: localization.INVITATION_ACCEPTED\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLoading(false)\n    }\n\n    const handleReject = async () => {\n        setIsLoading(true)\n\n        try {\n            await authClient.organization.rejectInvitation({\n                invitationId: invitation.id,\n                fetchOptions: { throw: true }\n            })\n\n            await onChanged?.()\n\n            toast({\n                variant: \"success\",\n                message: localization.INVITATION_REJECTED\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLoading(false)\n    }\n\n    return (\n        <Card className={cn(\"flex-row items-center p-4\", classNames?.cell)}>\n            <div className=\"flex flex-1 items-center gap-2\">\n                <UserAvatar\n                    className=\"my-0.5\"\n                    user={{ email: invitation.email }}\n                    localization={localization}\n                />\n\n                <div className=\"grid flex-1 text-left leading-tight\">\n                    <span className=\"truncate font-semibold text-sm\">\n                        {invitation.email}\n                    </span>\n\n                    <span className=\"truncate text-muted-foreground text-xs\">\n                        {localization.EXPIRES}{\" \"}\n                        {invitation.expiresAt.toLocaleDateString()}\n                    </span>\n                </div>\n            </div>\n\n            <span className=\"truncate text-sm opacity-70\">{role?.label}</span>\n\n            <div className=\"flex items-center gap-2\">\n                <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                        <Button\n                            className={cn(\n                                \"relative ms-auto\",\n                                classNames?.button,\n                                classNames?.outlineButton\n                            )}\n                            disabled={isLoading}\n                            size=\"icon\"\n                            type=\"button\"\n                            variant=\"outline\"\n                        >\n                            {isLoading ? (\n                                <Loader2 className=\"animate-spin\" />\n                            ) : (\n                                <EllipsisIcon className={classNames?.icon} />\n                            )}\n                        </Button>\n                    </DropdownMenuTrigger>\n\n                    <DropdownMenuContent\n                        onCloseAutoFocus={(e) => e.preventDefault()}\n                    >\n                        <DropdownMenuItem\n                            onClick={handleAccept}\n                            disabled={isLoading}\n                        >\n                            <CheckIcon className={classNames?.icon} />\n\n                            {localization.ACCEPT}\n                        </DropdownMenuItem>\n\n                        <DropdownMenuItem\n                            onClick={handleReject}\n                            disabled={isLoading}\n                            variant=\"destructive\"\n                        >\n                            <XIcon className={classNames?.icon} />\n\n                            {localization.REJECT}\n                        </DropdownMenuItem>\n                    </DropdownMenuContent>\n                </DropdownMenu>\n            </div>\n        </Card>\n    )\n}\n","/**\n * transfer-ownership-dialog\n * Transfer organization ownership to another member\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2, UserCog } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport { Button } from \"../../ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger\n} from \"../../ui/dialog\"\nimport { Label } from \"../../ui/label\"\nimport {\n    Select,\n    SelectContent,\n    SelectItem,\n    SelectTrigger,\n    SelectValue\n} from \"../../ui/select\"\n\nexport interface TransferOwnershipDialogProps {\n    className?: string\n    classNames?: {\n        trigger?: string\n        dialog?: string\n        header?: string\n        title?: string\n        description?: string\n        content?: string\n        footer?: string\n        label?: string\n        select?: string\n        button?: string\n    }\n    organizationId?: string\n    onSuccess?: (newOwnerId: string) => void\n    onCancel?: () => void\n    children?: React.ReactNode\n}\n\nexport function TransferOwnershipDialog({\n    className,\n    classNames,\n    organizationId: orgIdProp,\n    onSuccess,\n    onCancel,\n    children\n}: TransferOwnershipDialogProps) {\n    const {\n        authClient,\n        hooks: { useActiveOrganization, useSession },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = contextLocalization as any\n\n    const { data: activeOrg } = useActiveOrganization()\n    const { data: session } = useSession()\n    const [open, setOpen] = useState(false)\n    const [selectedMemberId, setSelectedMemberId] = useState<string>(\"\")\n    const [isTransferring, setIsTransferring] = useState(false)\n    const [members, setMembers] = useState<any[]>([])\n    const [isLoadingMembers, setIsLoadingMembers] = useState(false)\n\n    const organizationId = orgIdProp || activeOrg?.id\n\n    // Load members when dialog opens\n    const handleOpenChange = async (isOpen: boolean) => {\n        setOpen(isOpen)\n        \n        if (isOpen && organizationId) {\n            setIsLoadingMembers(true)\n            try {\n                const { data, error } = await authClient.organization.listMembers({\n                    organizationId\n                })\n\n                if (error) {\n                    toast({\n                        variant: \"error\",\n                        message: getLocalizedError({ error, localization })\n                    })\n                    return\n                }\n\n                // Filter out current user and non-admin members\n                const eligibleMembers = (data || []).filter(\n                    (member: any) => \n                        member.userId !== session?.user?.id &&\n                        (member.role === \"admin\" || member.role === \"owner\")\n                )\n                \n                setMembers(eligibleMembers)\n            } catch (err) {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error: err, localization })\n                })\n            } finally {\n                setIsLoadingMembers(false)\n            }\n        } else {\n            setSelectedMemberId(\"\")\n            setMembers([])\n        }\n    }\n\n    const handleTransfer = async () => {\n        if (!selectedMemberId || !organizationId) return\n\n        setIsTransferring(true)\n\n        try {\n            // Update the selected member's role to owner\n            const { error: updateError } = await authClient.organization.updateMemberRole({\n                memberId: selectedMemberId,\n                role: \"owner\",\n                organizationId\n            })\n\n            if (updateError) {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error: updateError, localization })\n                })\n                setIsTransferring(false)\n                return\n            }\n\n            // Update current owner's role to admin\n            const currentMember = members.find(m => m.userId === session?.user?.id)\n            if (currentMember) {\n                await authClient.organization.updateMemberRole({\n                    memberId: currentMember.id,\n                    role: \"admin\",\n                    organizationId\n                })\n            }\n\n            toast({\n                variant: \"success\",\n                message: localization.OWNERSHIP_TRANSFERRED || \"Ownership transferred successfully\"\n            })\n\n            onSuccess?.(selectedMemberId)\n            setOpen(false)\n        } catch (err) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error: err, localization })\n            })\n        } finally {\n            setIsTransferring(false)\n        }\n    }\n\n    const handleCancel = () => {\n        setOpen(false)\n        onCancel?.()\n    }\n\n    if (!organizationId) {\n        return null\n    }\n\n    return (\n        <Dialog open={open} onOpenChange={handleOpenChange}>\n            <DialogTrigger asChild className={classNames?.trigger}>\n                {children || (\n                    <Button variant=\"outline\" className={className}>\n                        <UserCog className=\"mr-2 h-4 w-4\" />\n                        {localization.TRANSFER_OWNERSHIP || \"Transfer Ownership\"}\n                    </Button>\n                )}\n            </DialogTrigger>\n            <DialogContent className={cn(\"sm:max-w-[425px]\", classNames?.dialog)}>\n                <DialogHeader className={classNames?.header}>\n                    <DialogTitle className={classNames?.title}>\n                        {localization.TRANSFER_OWNERSHIP || \"Transfer Ownership\"}\n                    </DialogTitle>\n                    <DialogDescription className={classNames?.description}>\n                        {localization.TRANSFER_OWNERSHIP_DESCRIPTION || \n                            \"Transfer organization ownership to another admin. You will become an admin after the transfer.\"}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <div className={cn(\"grid gap-4 py-4\", classNames?.content)}>\n                    <div className=\"grid gap-2\">\n                        <Label htmlFor=\"new-owner\" className={classNames?.label}>\n                            {localization.NEW_OWNER || \"New Owner\"}\n                        </Label>\n                        {isLoadingMembers ? (\n                            <div className=\"flex items-center justify-center py-8\">\n                                <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n                            </div>\n                        ) : members.length === 0 ? (\n                            <p className=\"text-sm text-muted-foreground py-4\">\n                                {localization.NO_ELIGIBLE_MEMBERS || \n                                    \"No eligible members found. Only admins can receive ownership.\"}\n                            </p>\n                        ) : (\n                            <Select\n                                value={selectedMemberId}\n                                onValueChange={setSelectedMemberId}\n                                disabled={isTransferring}\n                            >\n                                <SelectTrigger id=\"new-owner\" className={classNames?.select}>\n                                    <SelectValue \n                                        placeholder={localization.SELECT_MEMBER || \"Select a member\"} \n                                    />\n                                </SelectTrigger>\n                                <SelectContent>\n                                    {members.map((member) => (\n                                        <SelectItem key={member.id} value={member.id}>\n                                            <div className=\"flex flex-col\">\n                                                <span className=\"font-medium\">\n                                                    {member.user.name || member.user.email}\n                                                </span>\n                                                {member.user.name && (\n                                                    <span className=\"text-xs text-muted-foreground\">\n                                                        {member.user.email}\n                                                    </span>\n                                                )}\n                                            </div>\n                                        </SelectItem>\n                                    ))}\n                                </SelectContent>\n                            </Select>\n                        )}\n                    </div>\n\n                    {selectedMemberId && (\n                        <div className=\"rounded-lg bg-muted p-4\">\n                            <p className=\"text-sm text-muted-foreground\">\n                                <strong className=\"text-foreground\">\n                                    {localization.WARNING || \"Warning\"}:\n                                </strong>{\" \"}\n                                {localization.TRANSFER_OWNERSHIP_WARNING || \n                                    \"This action will transfer full ownership to the selected member. You will lose owner privileges and become an admin.\"}\n                            </p>\n                        </div>\n                    )}\n                </div>\n\n                <DialogFooter className={classNames?.footer}>\n                    <Button\n                        variant=\"outline\"\n                        onClick={handleCancel}\n                        disabled={isTransferring}\n                        className={classNames?.button}\n                    >\n                        {localization.CANCEL || \"Cancel\"}\n                    </Button>\n                    <Button\n                        onClick={handleTransfer}\n                        disabled={!selectedMemberId || isTransferring || members.length === 0}\n                        className={classNames?.button}\n                    >\n                        {isTransferring && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n                        {isTransferring\n                            ? localization.TRANSFERRING || \"Transferring...\"\n                            : localization.TRANSFER_OWNERSHIP || \"Transfer Ownership\"}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * drawer\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Drawer({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) {\n  return <DrawerPrimitive.Root data-slot=\"drawer\" {...props} />\n}\n\nfunction DrawerTrigger({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger>) {\n  return <DrawerPrimitive.Trigger data-slot=\"drawer-trigger\" {...props} />\n}\n\nfunction DrawerPortal({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal>) {\n  return <DrawerPrimitive.Portal data-slot=\"drawer-portal\" {...props} />\n}\n\nfunction DrawerClose({\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close>) {\n  return <DrawerPrimitive.Close data-slot=\"drawer-close\" {...props} />\n}\n\nfunction DrawerOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay>) {\n  return (\n    <DrawerPrimitive.Overlay\n      data-slot=\"drawer-overlay\"\n      className={cn(\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerContent({\n  className,\n  children,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content>) {\n  return (\n    <DrawerPortal data-slot=\"drawer-portal\">\n      <DrawerOverlay />\n      <DrawerPrimitive.Content\n        data-slot=\"drawer-content\"\n        className={cn(\n          \"group/drawer-content bg-background fixed z-50 flex h-auto flex-col\",\n          \"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b\",\n          \"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t\",\n          \"data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l data-[vaul-drawer-direction=right]:sm:max-w-sm\",\n          \"data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r data-[vaul-drawer-direction=left]:sm:max-w-sm\",\n          className\n        )}\n        {...props}\n      >\n        <div className=\"bg-muted mx-auto mt-4 hidden h-2 w-[100px] shrink-0 rounded-full group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n        {children}\n      </DrawerPrimitive.Content>\n    </DrawerPortal>\n  )\n}\n\nfunction DrawerHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-header\"\n      className={cn(\n        \"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"drawer-footer\"\n      className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title>) {\n  return (\n    <DrawerPrimitive.Title\n      data-slot=\"drawer-title\"\n      className={cn(\"text-foreground font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction DrawerDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description>) {\n  return (\n    <DrawerPrimitive.Description\n      data-slot=\"drawer-description\"\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Drawer,\n  DrawerPortal,\n  DrawerOverlay,\n  DrawerTrigger,\n  DrawerClose,\n  DrawerContent,\n  DrawerHeader,\n  DrawerFooter,\n  DrawerTitle,\n  DrawerDescription,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Progress({\n  className,\n  value,\n  ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root>) {\n  return (\n    <ProgressPrimitive.Root\n      data-slot=\"progress\"\n      className={cn(\n        \"bg-primary/20 relative h-2 w-full overflow-hidden rounded-full\",\n        className\n      )}\n      {...props}\n    >\n      <ProgressPrimitive.Indicator\n        data-slot=\"progress-indicator\"\n        className=\"bg-primary h-full w-full flex-1 transition-all\"\n        style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n      />\n    </ProgressPrimitive.Root>\n  )\n}\n\nexport { Progress }\n","/**\n * api-key-usage-card\n * Detailed usage view for Better Auth API Key with remaining count, refills, rate limits\n * Shows progress bars, countdowns, and usage trends\n */\n\n\"use client\"\n\nimport { useContext, useMemo } from \"react\"\nimport { \n    ActivityIcon, \n    RefreshCwIcon, \n    TrendingUpIcon, \n    TrendingDownIcon,\n    AlertTriangleIcon,\n    CheckCircleIcon \n} from \"lucide-react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { ApiKey } from \"@/types/api-key\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Progress } from \"@/components/ui/progress\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\n\nexport interface ApiKeyUsageCardClassNames {\n    base?: string\n    header?: string\n    title?: string\n    description?: string\n    content?: string\n    icon?: string\n    badge?: string\n    progress?: string\n    stat?: string\n}\n\nexport interface ApiKeyUsageCardProps {\n    /** API Key object with usage data */\n    apiKey: ApiKey\n    \n    /** Optional CSS class name */\n    className?: string\n    \n    /** CSS class names for specific parts */\n    classNames?: ApiKeyUsageCardClassNames\n    \n    /** Localization strings */\n    localization?: Partial<AuthLocalization>\n    \n    /** Warning threshold percentage (default: 80) */\n    warningThreshold?: number\n}\n\nexport function ApiKeyUsageCard({\n    apiKey,\n    className,\n    classNames,\n    localization,\n    warningThreshold = 80\n}: ApiKeyUsageCardProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n    localization = { ...contextLocalization, ...localization }\n\n    // Calculate usage percentage (if we have refillAmount as the \"total\")\n    const usageData = useMemo(() => {\n        if (apiKey.remaining === null || apiKey.remaining === undefined) {\n            return null\n        }\n\n        const total = apiKey.refillAmount || apiKey.remaining\n        const used = total - apiKey.remaining\n        const percentage = (apiKey.remaining / total) * 100\n\n        return {\n            remaining: apiKey.remaining,\n            used,\n            total,\n            percentage,\n            isLow: percentage < (100 - warningThreshold)\n        }\n    }, [apiKey.remaining, apiKey.refillAmount, warningThreshold])\n\n    // Calculate refill countdown\n    const refillData = useMemo(() => {\n        if (!apiKey.refillInterval || !apiKey.lastRefillAt) return null\n\n        const lastRefill = new Date(apiKey.lastRefillAt)\n        const nextRefill = new Date(lastRefill.getTime() + apiKey.refillInterval)\n        const now = new Date()\n\n        if (nextRefill <= now) {\n            return {\n                status: \"refilling\",\n                text: \"Refilling now...\",\n                percentage: 100\n            }\n        }\n\n        const total = apiKey.refillInterval\n        const elapsed = now.getTime() - lastRefill.getTime()\n        const percentage = (elapsed / total) * 100\n\n        const remaining = nextRefill.getTime() - now.getTime()\n        const days = Math.floor(remaining / (1000 * 60 * 60 * 24))\n        const hours = Math.floor((remaining % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\n        const minutes = Math.floor((remaining % (1000 * 60 * 60)) / (1000 * 60))\n\n        let text = \"Refills in \"\n        if (days > 0) text += `${days}d ${hours}h`\n        else if (hours > 0) text += `${hours}h ${minutes}m`\n        else text += `${minutes}m`\n\n        return {\n            status: \"waiting\",\n            text,\n            percentage,\n            nextRefill\n        }\n    }, [apiKey.refillInterval, apiKey.lastRefillAt])\n\n    // Calculate rate limit status\n    const rateLimitData = useMemo(() => {\n        if (!apiKey.rateLimitEnabled || !apiKey.rateLimitMax || !apiKey.rateLimitTimeWindow) {\n            return null\n        }\n\n        const percentage = (apiKey.requestCount / apiKey.rateLimitMax) * 100\n        const remaining = apiKey.rateLimitMax - apiKey.requestCount\n\n        const hours = apiKey.rateLimitTimeWindow / (1000 * 60 * 60)\n        const days = hours / 24\n\n        let window = \"\"\n        if (days >= 1) window = `${Math.round(days)} day${days > 1 ? 's' : ''}`\n        else if (hours >= 1) window = `${Math.round(hours)} hour${hours > 1 ? 's' : ''}`\n        else window = \"window\"\n\n        return {\n            current: apiKey.requestCount,\n            max: apiKey.rateLimitMax,\n            remaining,\n            percentage,\n            window,\n            isHigh: percentage > warningThreshold\n        }\n    }, [apiKey.rateLimitEnabled, apiKey.rateLimitMax, apiKey.rateLimitTimeWindow, apiKey.requestCount, warningThreshold])\n\n    if (!usageData && !refillData && !rateLimitData) {\n        return (\n            <Card className={cn(className, classNames?.base)}>\n                <CardHeader className={classNames?.header}>\n                    <CardTitle className={cn(\"flex items-center gap-2\", classNames?.title)}>\n                        <ActivityIcon className={cn(\"size-5\", classNames?.icon)} />\n                        API Key Usage\n                    </CardTitle>\n                    <CardDescription className={classNames?.description}>\n                        No usage tracking configured for this key\n                    </CardDescription>\n                </CardHeader>\n            </Card>\n        )\n    }\n\n    return (\n        <Card className={cn(className, classNames?.base)}>\n            <CardHeader className={classNames?.header}>\n                <CardTitle className={cn(\"flex items-center gap-2\", classNames?.title)}>\n                    <ActivityIcon className={cn(\"size-5\", classNames?.icon)} />\n                    API Key Usage\n                </CardTitle>\n                <CardDescription className={classNames?.description}>\n                    {apiKey.name || \"Unnamed Key\"}\n                </CardDescription>\n            </CardHeader>\n\n            <CardContent className={cn(\"space-y-6\", classNames?.content)}>\n                {/* Usage Status */}\n                {usageData && (\n                    <div className=\"space-y-2\">\n                        <div className=\"flex items-center justify-between\">\n                            <div className=\"flex items-center gap-2\">\n                                <span className=\"text-sm font-medium\">Requests Remaining</span>\n                                {usageData.isLow && (\n                                    <Badge variant=\"destructive\" className={cn(\"text-xs\", classNames?.badge)}>\n                                        <AlertTriangleIcon className=\"size-3 mr-1\" />\n                                        Low\n                                    </Badge>\n                                )}\n                            </div>\n                            <span className=\"text-sm text-muted-foreground\">\n                                {usageData.remaining} / {usageData.total}\n                            </span>\n                        </div>\n                        \n                        <Progress \n                            value={usageData.percentage} \n                            className={cn(\"h-2\", classNames?.progress)}\n                        />\n\n                        <div className=\"flex justify-between text-xs text-muted-foreground\">\n                            <span>{usageData.used} used</span>\n                            <span>{Math.round(usageData.percentage)}% available</span>\n                        </div>\n                    </div>\n                )}\n\n                {/* Rate Limit Status */}\n                {rateLimitData && (\n                    <div className=\"space-y-2\">\n                        <div className=\"flex items-center justify-between\">\n                            <div className=\"flex items-center gap-2\">\n                                <span className=\"text-sm font-medium\">Rate Limit</span>\n                                {rateLimitData.isHigh && (\n                                    <Badge variant=\"outline\" className={cn(\"text-xs\", classNames?.badge)}>\n                                        <TrendingUpIcon className=\"size-3 mr-1\" />\n                                        High\n                                    </Badge>\n                                )}\n                            </div>\n                            <span className=\"text-sm text-muted-foreground\">\n                                {rateLimitData.current} / {rateLimitData.max}\n                            </span>\n                        </div>\n                        \n                        <Progress \n                            value={rateLimitData.percentage} \n                            className={cn(\"h-2\", classNames?.progress)}\n                        />\n\n                        <div className=\"flex justify-between text-xs text-muted-foreground\">\n                            <span>{rateLimitData.remaining} remaining</span>\n                            <span>per {rateLimitData.window}</span>\n                        </div>\n                    </div>\n                )}\n\n                {/* Refill Schedule */}\n                {refillData && (\n                    <div className=\"space-y-2\">\n                        <div className=\"flex items-center justify-between\">\n                            <div className=\"flex items-center gap-2\">\n                                <RefreshCwIcon className={cn(\"size-4\", classNames?.icon)} />\n                                <span className=\"text-sm font-medium\">Auto-Refill</span>\n                                {refillData.status === \"refilling\" && (\n                                    <Badge variant=\"default\" className={cn(\"text-xs\", classNames?.badge)}>\n                                        <CheckCircleIcon className=\"size-3 mr-1\" />\n                                        Active\n                                    </Badge>\n                                )}\n                            </div>\n                        </div>\n                        \n                        <div className=\"text-sm text-muted-foreground\">\n                            {refillData.text}\n                        </div>\n\n                        {apiKey.refillAmount && (\n                            <div className=\"text-xs text-muted-foreground\">\n                                Refills to {apiKey.refillAmount} requests\n                            </div>\n                        )}\n                    </div>\n                )}\n\n                {/* Last Request */}\n                {apiKey.lastRequest && (\n                    <div className=\"pt-4 border-t\">\n                        <div className=\"text-xs text-muted-foreground\">\n                            Last used {new Date(apiKey.lastRequest).toLocaleString()}\n                        </div>\n                    </div>\n                )}\n            </CardContent>\n        </Card>\n    )\n}\n\nexport function ApiKeyUsageCardSkeleton() {\n    return (\n        <Card>\n            <CardHeader>\n                <Skeleton className=\"h-6 w-32\" />\n                <Skeleton className=\"h-4 w-48\" />\n            </CardHeader>\n            <CardContent className=\"space-y-6\">\n                <div className=\"space-y-2\">\n                    <Skeleton className=\"h-4 w-full\" />\n                    <Skeleton className=\"h-2 w-full\" />\n                    <Skeleton className=\"h-3 w-full\" />\n                </div>\n                <div className=\"space-y-2\">\n                    <Skeleton className=\"h-4 w-full\" />\n                    <Skeleton className=\"h-2 w-full\" />\n                    <Skeleton className=\"h-3 w-full\" />\n                </div>\n            </CardContent>\n        </Card>\n    )\n}\n","import { useEffect, useState } from \"react\"\n\nexport function useLang() {\n    const [lang, setLang] = useState<string>()\n\n    useEffect(() => {\n        const checkLang = () => {\n            const currentLang = document.documentElement.getAttribute(\"lang\")\n            setLang(currentLang ?? undefined)\n        }\n\n        // Initial check\n        checkLang()\n\n        // Listen for changes to lang attribute on html tag\n        const observer = new MutationObserver((mutations) => {\n            for (const mutation of mutations) {\n                if (mutation.attributeName === \"lang\") {\n                    checkLang()\n                }\n            }\n        })\n\n        observer.observe(document.documentElement, { attributes: true })\n\n        return () => {\n            observer.disconnect()\n        }\n    }, [])\n\n    return { lang }\n}\n","/**\n * api-key-delete-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { KeyRoundIcon, Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useState } from \"react\"\n\nimport { useLang } from \"../../../hooks/use-lang\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { ApiKey } from \"../../../types/api-key\"\nimport type { Refetch } from \"../../../types/refetch\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"../../ui/dialog\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\n\ninterface ApiKeyDeleteDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    apiKey: ApiKey\n    localization?: AuthLocalization\n    refetch?: Refetch\n}\n\nexport function ApiKeyDeleteDialog({\n    classNames,\n    apiKey,\n    localization,\n    refetch,\n    onOpenChange,\n    ...props\n}: ApiKeyDeleteDialogProps) {\n    const {\n        localization: contextLocalization,\n        mutators: { deleteApiKey },\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { lang } = useLang()\n    const [isLoading, setIsLoading] = useState(false)\n\n    const handleDelete = async () => {\n        setIsLoading(true)\n\n        try {\n            await deleteApiKey({ keyId: apiKey.id })\n            await refetch?.()\n            onOpenChange?.(false)\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLoading(false)\n    }\n\n    // Format expiration date or show \"Never expires\"\n    const formatExpiration = () => {\n        if (!apiKey.expiresAt) return localization.NEVER_EXPIRES\n\n        const expiresDate = new Date(apiKey.expiresAt)\n        return `${localization.EXPIRES} ${expiresDate.toLocaleDateString(\n            lang ?? \"en\",\n            {\n                month: \"short\",\n                day: \"numeric\",\n                year: \"numeric\"\n            }\n        )}`\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                onOpenAutoFocus={(e) => e.preventDefault()}\n                className={classNames?.dialog?.content}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.DELETE} {localization.API_KEY}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.DELETE_API_KEY_CONFIRM}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Card\n                    className={cn(\n                        \"my-2 flex-row items-center gap-3 px-4 py-3\",\n                        classNames?.cell\n                    )}\n                >\n                    <KeyRoundIcon className={cn(\"size-4\", classNames?.icon)} />\n\n                    <div className=\"flex flex-col\">\n                        <div className=\"flex items-center gap-2\">\n                            <span className=\"font-semibold text-sm\">\n                                {apiKey.name}\n                            </span>\n\n                            <span className=\"text-muted-foreground text-sm\">\n                                {apiKey.start}\n                                {\"******\"}\n                            </span>\n                        </div>\n\n                        <div className=\"text-muted-foreground text-xs\">\n                            {formatExpiration()}\n                        </div>\n                    </div>\n                </Card>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"secondary\"\n                        onClick={() => onOpenChange?.(false)}\n                        disabled={isLoading}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.secondaryButton\n                        )}\n                    >\n                        {localization.CANCEL}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"destructive\"\n                        onClick={handleDelete}\n                        disabled={isLoading}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.destructiveButton\n                        )}\n                    >\n                        {isLoading && <Loader2 className=\"animate-spin\" />}\n                        {localization.DELETE}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * personal-account-view\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useMemo } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport { UserAvatar } from \"../../user\"\nimport type { UserViewProps } from \"../../ui/user-view\"\n\n/**\n * Displays user information with avatar and details in a compact view for personal accounts\n *\n * Renders a user's profile information with appropriate fallbacks:\n * - Shows avatar alongside user name and \"Personal Account\" subtitle when available\n * - Shows loading skeletons when isPending is true\n * - Falls back to generic \"User\" text when neither name nor email is available\n * - Always shows \"Personal Account\" as subtitle for default and lg sizes\n * - Supports customization through classNames prop\n */\nexport function PersonalAccountView({\n    className,\n    classNames,\n    isPending,\n    size,\n    user,\n    localization: propLocalization\n}: UserViewProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...propLocalization }),\n        [contextLocalization, propLocalization]\n    )\n\n    return (\n        <div\n            className={cn(\n                \"flex items-center gap-2\",\n                className,\n                classNames?.base\n            )}\n        >\n            <UserAvatar\n                className={cn(size !== \"sm\" && \"my-0.5\")}\n                classNames={classNames?.avatar}\n                isPending={isPending}\n                localization={localization}\n                size={size}\n                user={user}\n            />\n\n            <div\n                className={cn(\n                    \"grid flex-1 text-left leading-tight\",\n                    classNames?.content\n                )}\n            >\n                {isPending ? (\n                    <>\n                        <Skeleton\n                            className={cn(\n                                \"max-w-full\",\n                                size === \"lg\" ? \"h-4.5 w-32\" : \"h-3.5 w-24\",\n                                classNames?.title,\n                                classNames?.skeleton\n                            )}\n                        />\n\n                        {size !== \"sm\" && (\n                            <Skeleton\n                                className={cn(\n                                    \"mt-1.5 max-w-full\",\n                                    size === \"lg\" ? \"h-3.5 w-40\" : \"h-3 w-32\",\n                                    classNames?.subtitle,\n                                    classNames?.skeleton\n                                )}\n                            />\n                        )}\n                    </>\n                ) : (\n                    <>\n                        <span\n                            className={cn(\n                                \"truncate font-medium\",\n                                size === \"lg\" ? \"text-base\" : \"text-sm\",\n                                classNames?.title\n                            )}\n                        >\n                            {user?.displayName ||\n                                user?.name ||\n                                user?.fullName ||\n                                user?.firstName ||\n                                user?.displayUsername ||\n                                user?.username ||\n                                user?.email ||\n                                localization?.USER}\n                        </span>\n\n                        {size !== \"sm\" && (\n                            <span\n                                className={cn(\n                                    \"truncate text-xs text-muted-foreground\",\n                                    size === \"lg\" ? \"text-sm\" : \"\",\n                                    classNames?.subtitle\n                                )}\n                            >\n                                {localization?.PERSONAL_ACCOUNT}\n                            </span>\n                        )}\n                    </>\n                )}\n            </div>\n        </div>\n    )\n}\n","/**\n * create-api-key-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useState } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { useLang } from \"@/hooks/use-lang\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { Refetch } from \"@/types/refetch\"\nimport { OrganizationCellView } from \"@/components/organization/cells/organization-cell-view\"\nimport { PersonalAccountView } from \"@/components/organization/views/personal-account-view\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport {\n    Select,\n    SelectContent,\n    SelectItem,\n    SelectTrigger,\n    SelectValue\n} from \"@/components/ui/select\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\ninterface CreateApiKeyDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    onSuccess: (key: string) => void\n    refetch?: Refetch\n    organizationId?: string\n}\n\nexport function CreateApiKeyDialog({\n    classNames,\n    localization,\n    onSuccess,\n    refetch,\n    organizationId,\n    onOpenChange,\n    ...props\n}: CreateApiKeyDialogProps) {\n    const {\n        authClient,\n        apiKey,\n        hooks: { useListOrganizations, useSession },\n        localization: contextLocalization,\n        organization: contextOrganization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { lang } = useLang()\n\n    let organizations: Organization[] | null | undefined\n    if (contextOrganization) {\n        const { data } = useListOrganizations()\n        organizations = data\n    }\n\n    const { data: sessionData } = useSession()\n    const user = sessionData?.user\n\n    const showOrganizationSelect = contextOrganization?.apiKey\n\n    const formSchema = z.object({\n        name: z\n            .string()\n            .min(1, `${localization.NAME} ${localization.IS_REQUIRED}`),\n        expiresInDays: z.string().optional(),\n        organizationId: showOrganizationSelect\n            ? z\n                  .string()\n                  .min(\n                      1,\n                      `${localization.ORGANIZATION} ${localization.IS_REQUIRED}`\n                  )\n            : z.string().optional(),\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            name: \"\",\n            expiresInDays: \"none\",\n            organizationId: organizationId ?? \"personal\",\n        }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const onSubmit = async (values: z.infer<typeof formSchema>) => {\n        try {\n            const expiresIn =\n                values.expiresInDays && values.expiresInDays !== \"none\"\n                    ? Number.parseInt(values.expiresInDays) * 60 * 60 * 24\n                    : undefined\n\n            const selectedOrgId =\n                values.organizationId === \"personal\"\n                    ? undefined\n                    : values.organizationId\n\n            const metadata = {\n                ...(typeof apiKey === \"object\" ? apiKey.metadata : {}),\n                ...(contextOrganization && selectedOrgId\n                    ? { organizationId: selectedOrgId }\n                    : {})\n            }\n\n            // Only use client-supported fields (name, expiresIn, prefix, metadata)\n            // Server-only fields (userId, remaining) cannot be set from client for security reasons\n            const result = await authClient.apiKey.create({\n                name: values.name,\n                expiresIn,\n                prefix: typeof apiKey === \"object\" ? apiKey.prefix : undefined,\n                metadata:\n                    Object.keys(metadata).length > 0 ? metadata : undefined,\n                fetchOptions: { throw: true }\n            })\n\n            await refetch?.()\n            onSuccess(result.key)\n            onOpenChange?.(false)\n            form.reset()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const rtf = new Intl.RelativeTimeFormat(lang ?? \"en\")\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                onOpenAutoFocus={(e) => e.preventDefault()}\n                className={classNames?.dialog?.content}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.CREATE_API_KEY}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.CREATE_API_KEY_DESCRIPTION}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(onSubmit)}\n                        className=\"space-y-6\"\n                    >\n                        {showOrganizationSelect && (\n                            <FormField\n                                control={form.control}\n                                name=\"organizationId\"\n                                render={({ field }) => (\n                                    <FormItem className=\"w-full\">\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization.ORGANIZATION}\n                                        </FormLabel>\n\n                                        <Select\n                                            onValueChange={field.onChange}\n                                            value={field.value}\n                                            disabled={isSubmitting}\n                                        >\n                                            <FormControl>\n                                                <SelectTrigger\n                                                    className={cn(\n                                                        \"w-full p-2\",\n                                                        classNames?.input\n                                                    )}\n                                                >\n                                                    <SelectValue\n                                                        placeholder={\n                                                            localization.ORGANIZATION\n                                                        }\n                                                    />\n                                                </SelectTrigger>\n                                            </FormControl>\n\n                                            <SelectContent className=\"w-[--radix-select-trigger-width]\">\n                                                <SelectItem\n                                                    value=\"personal\"\n                                                    className=\"p-2\"\n                                                >\n                                                    <PersonalAccountView\n                                                        user={user}\n                                                        localization={\n                                                            localization\n                                                        }\n                                                        size=\"sm\"\n                                                    />\n                                                </SelectItem>\n\n                                                {organizations?.map((org) => (\n                                                    <SelectItem\n                                                        key={org.id}\n                                                        value={org.id}\n                                                        className=\"p-2\"\n                                                    >\n                                                        <OrganizationCellView\n                                                            organization={org}\n                                                            localization={\n                                                                localization\n                                                            }\n                                                            size=\"sm\"\n                                                        />\n                                                    </SelectItem>\n                                                ))}\n                                            </SelectContent>\n                                        </Select>\n\n                                        <FormMessage />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n\n                        <div className=\"flex gap-4\">\n                            <FormField\n                                control={form.control}\n                                name=\"name\"\n                                render={({ field }) => (\n                                    <FormItem className=\"flex-1\">\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization.NAME}\n                                        </FormLabel>\n\n                                        <FormControl>\n                                            <Input\n                                                className={classNames?.input}\n                                                placeholder={\n                                                    localization.API_KEY_NAME_PLACEHOLDER\n                                                }\n                                                autoFocus\n                                                disabled={isSubmitting}\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage />\n                                    </FormItem>\n                                )}\n                            />\n\n                            <FormField\n                                control={form.control}\n                                name=\"expiresInDays\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization.EXPIRES}\n                                        </FormLabel>\n\n                                        <Select\n                                            onValueChange={field.onChange}\n                                            defaultValue={field.value}\n                                            disabled={isSubmitting}\n                                        >\n                                            <FormControl>\n                                                <SelectTrigger\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                >\n                                                    <SelectValue\n                                                        placeholder={\n                                                            localization.NO_EXPIRATION\n                                                        }\n                                                    />\n                                                </SelectTrigger>\n                                            </FormControl>\n\n                                            <SelectContent>\n                                                <SelectItem value=\"none\">\n                                                    {localization.NO_EXPIRATION}\n                                                </SelectItem>\n\n                                                {[\n                                                    1, 7, 30, 60, 90, 180, 365\n                                                ].map((days) => (\n                                                    <SelectItem\n                                                        key={days}\n                                                        value={days.toString()}\n                                                    >\n                                                        {days === 365\n                                                            ? rtf.format(\n                                                                  1,\n                                                                  \"year\"\n                                                              )\n                                                            : rtf.format(\n                                                                  days,\n                                                                  \"day\"\n                                                              )}\n                                                    </SelectItem>\n                                                ))}\n                                            </SelectContent>\n                                        </Select>\n\n                                        <FormMessage />\n                                    </FormItem>\n                                )}\n                            />\n                        </div>\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"outline\"\n                                onClick={() => onOpenChange?.(false)}\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.outlineButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                type=\"submit\"\n                                variant=\"default\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.primaryButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n\n                                {localization.CREATE_API_KEY}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * update-api-key-dialog\n * Dialog for editing API key names (client-only field)\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext, useEffect } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { ApiKey } from \"@/types/api-key\"\nimport type { Refetch } from \"@/types/refetch\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\ninterface UpdateApiKeyDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    apiKey: ApiKey | null\n    onSuccess?: () => void\n    refetch?: Refetch\n}\n\nexport function UpdateApiKeyDialog({\n    classNames,\n    localization,\n    apiKey,\n    onSuccess,\n    refetch,\n    onOpenChange,\n    ...props\n}: UpdateApiKeyDialogProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const formSchema = z.object({\n        name: z.string().min(1, `${localization.NAME} ${localization.IS_REQUIRED}`),\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            name: \"\",\n        }\n    })\n\n    // Update form when apiKey changes\n    useEffect(() => {\n        if (apiKey) {\n            form.reset({\n                name: apiKey.name || \"\",\n            })\n        }\n    }, [apiKey, form])\n\n    const { isSubmitting } = form.formState\n\n    const onSubmit = async (values: z.infer<typeof formSchema>) => {\n        if (!apiKey) return\n\n        try {\n            // Client can only update name (server-only fields like enabled, remaining, refills, rate limits cannot be updated from client)\n            await authClient.apiKey.update({\n                keyId: apiKey.id,\n                name: values.name,\n                fetchOptions: { throw: true }\n            })\n\n            await refetch?.()\n            onSuccess?.()\n            onOpenChange?.(false)\n            \n            toast({\n                variant: \"success\",\n                message: \"API key updated successfully\"\n            })\n        } catch (error: any) {\n            toast({\n                variant: \"error\",\n                message: error?.body?.message || error?.message || getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    if (!apiKey) return null\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                onOpenAutoFocus={(e) => e.preventDefault()}\n                className={classNames?.dialog?.content}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        Edit API Key\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        Update the name for <span className=\"font-mono\">{apiKey.name}</span>\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(onSubmit)}\n                        className=\"space-y-6\"\n                    >\n                        <FormField\n                            control={form.control}\n                            name=\"name\"\n                            render={({ field }) => (\n                                <FormItem>\n                                    <FormLabel className={classNames?.label}>\n                                        {localization.NAME}\n                                    </FormLabel>\n                                    <FormControl>\n                                        <Input\n                                            className={classNames?.input}\n                                            placeholder=\"API Key Name\"\n                                            autoFocus\n                                            disabled={isSubmitting}\n                                            {...field}\n                                        />\n                                    </FormControl>\n                                    <FormMessage />\n                                </FormItem>\n                            )}\n                        />\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"outline\"\n                                onClick={() => onOpenChange?.(false)}\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.outlineButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                type=\"submit\"\n                                variant=\"default\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.primaryButton\n                                )}\n                                disabled={isSubmitting}\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n\n                                {localization.SAVE || \"Save Changes\"}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * api-key-cell\n * Enhanced to show Better Auth native fields: remaining, rate limits, refills, permissions\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { KeyRoundIcon, ActivityIcon, RefreshCwIcon, ShieldCheckIcon, AlertTriangleIcon } from \"lucide-react\"\nimport { useContext, useState, useMemo } from \"react\"\n\nimport { useLang } from \"@/hooks/use-lang\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { ApiKey } from \"@/types/api-key\"\nimport type { Refetch } from \"@/types/refetch\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Progress } from \"@/components/ui/progress\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { ApiKeyDeleteDialog } from \"@/components/settings/api-key/api-key-delete-dialog\"\nimport { UpdateApiKeyDialog } from \"../dialogs\"\n\nexport interface ApiKeyCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    apiKey: ApiKey\n    localization?: Partial<AuthLocalization>\n    refetch?: Refetch\n    showUsage?: boolean\n    showRateLimit?: boolean\n    showRefill?: boolean\n    showPermissions?: boolean\n    onClick?: () => void\n    isSelected?: boolean\n}\n\nexport function ApiKeyCell({\n    className,\n    classNames,\n    apiKey,\n    localization,\n    refetch,\n    showUsage = true,\n    showRateLimit = true,\n    showRefill = true,\n    showPermissions = true,\n    onClick,\n    isSelected = false\n}: ApiKeyCellProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n    localization = { ...contextLocalization, ...localization }\n\n    const { lang } = useLang()\n\n    const [showDeleteDialog, setShowDeleteDialog] = useState(false)\n    const [showEditDialog, setShowEditDialog] = useState(false)\n\n    // Format expiration date or show \"Never expires\"\n    const formatExpiration = () => {\n        if (!apiKey.expiresAt) return localization.NEVER_EXPIRES\n\n        const expiresDate = new Date(apiKey.expiresAt)\n        return `${localization.EXPIRES} ${expiresDate.toLocaleDateString(\n            lang ?? \"en\",\n            {\n                month: \"short\",\n                day: \"numeric\",\n                year: \"numeric\"\n            }\n        )}`\n    }\n\n    // Calculate usage percentage\n    const usagePercentage = useMemo(() => {\n        if (!apiKey.remaining || !showUsage) return null\n        // If we have remaining, we need to infer the total\n        // This assumes remaining starts at some value and decrements\n        // For display, we can show just the remaining count\n        return apiKey.remaining\n    }, [apiKey.remaining, showUsage])\n\n    // Format refill time\n    const formatRefillTime = () => {\n        if (!apiKey.refillInterval || !apiKey.lastRefillAt) return null\n        \n        const lastRefill = new Date(apiKey.lastRefillAt)\n        const nextRefill = new Date(lastRefill.getTime() + apiKey.refillInterval)\n        const now = new Date()\n        \n        if (nextRefill <= now) return \"Refilling...\"\n        \n        const diff = nextRefill.getTime() - now.getTime()\n        const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n        const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60))\n        \n        if (days > 0) return `Refills in ${days}d`\n        if (hours > 0) return `Refills in ${hours}h`\n        return \"Refills soon\"\n    }\n\n    // Format rate limit\n    const formatRateLimit = () => {\n        if (!apiKey.rateLimitEnabled || !apiKey.rateLimitMax || !apiKey.rateLimitTimeWindow) return null\n        \n        const hours = apiKey.rateLimitTimeWindow / (1000 * 60 * 60)\n        const days = hours / 24\n        \n        if (days >= 1) return `${apiKey.requestCount}/${apiKey.rateLimitMax} per ${Math.round(days)}d`\n        if (hours >= 1) return `${apiKey.requestCount}/${apiKey.rateLimitMax} per ${Math.round(hours)}h`\n        return `${apiKey.requestCount}/${apiKey.rateLimitMax} requests`\n    }\n\n    // Parse permissions\n    const formattedPermissions = useMemo(() => {\n        if (!apiKey.permissions || !showPermissions) return null\n        \n        try {\n            const perms = typeof apiKey.permissions === 'string' \n                ? JSON.parse(apiKey.permissions) \n                : apiKey.permissions\n            \n            // Format as \"resource:actions\"\n            return Object.entries(perms as Record<string, string[]>)\n                .map(([resource, actions]) => `${resource}:${(actions as string[]).map(a => a[0]).join('')}`)\n                .join(', ')\n        } catch {\n            return null\n        }\n    }, [apiKey.permissions, showPermissions])\n\n    // Check if approaching limit\n    const isApproachingLimit = useMemo(() => {\n        if (!apiKey.remaining) return false\n        return apiKey.remaining <= 100 // Warn when < 100 remaining\n    }, [apiKey.remaining])\n\n    return (\n        <>\n            <Card\n                className={cn(\n                    \"flex flex-col gap-3 p-4 transition-colors\",\n                    !apiKey.enabled && \"opacity-60\",\n                    onClick && \"cursor-pointer hover:bg-accent\",\n                    isSelected && \"ring-2 ring-primary\",\n                    className,\n                    classNames?.cell\n                )}\n                onClick={onClick}\n            >\n                {/* Header Row */}\n                <div className=\"flex items-start gap-3\">\n                    <KeyRoundIcon\n                        className={cn(\"size-4 flex-shrink-0 mt-0.5\", classNames?.icon)}\n                    />\n\n                    <div className=\"flex flex-col flex-1 truncate min-w-0\">\n                        <div className=\"flex items-center gap-2 flex-wrap\">\n                            <span className=\"truncate font-semibold text-sm\">\n                                {apiKey.name || \"Unnamed Key\"}\n                            </span>\n\n                            {!apiKey.enabled && (\n                                <Badge variant=\"secondary\" className=\"text-xs\">\n                                    Disabled\n                                </Badge>\n                            )}\n\n                            {isApproachingLimit && (\n                                <Badge variant=\"destructive\" className=\"text-xs flex items-center gap-1\">\n                                    <AlertTriangleIcon className=\"size-3\" />\n                                    Low\n                                </Badge>\n                            )}\n                        </div>\n\n                        <span className=\"text-muted-foreground text-xs font-mono\">\n                            {apiKey.start}{\"******\"}\n                        </span>\n                    </div>\n\n                    <div className=\"ml-auto flex gap-2 flex-shrink-0\">\n                        <Button\n                            className={cn(\n                                classNames?.button,\n                                classNames?.outlineButton\n                            )}\n                            size=\"sm\"\n                            variant=\"outline\"\n                            onClick={(e) => {\n                                e.stopPropagation()\n                                setShowEditDialog(true)\n                            }}\n                        >\n                            Edit\n                        </Button>\n                        <Button\n                            className={cn(\n                                classNames?.button,\n                                classNames?.outlineButton\n                            )}\n                            size=\"sm\"\n                            variant=\"outline\"\n                            onClick={(e) => {\n                                e.stopPropagation()\n                                setShowDeleteDialog(true)\n                            }}\n                        >\n                            {localization.DELETE}\n                        </Button>\n                    </div>\n                </div>\n\n                {/* Usage & Limits Row */}\n                {(showUsage || showRateLimit || showRefill) && (\n                    <div className=\"flex flex-wrap gap-3 text-xs text-muted-foreground\">\n                        {/* Remaining Requests */}\n                        {showUsage && apiKey.remaining !== null && apiKey.remaining !== undefined && (\n                            <div className=\"flex items-center gap-1.5\">\n                                <ActivityIcon className=\"size-3\" />\n                                <span>{apiKey.remaining} remaining</span>\n                            </div>\n                        )}\n\n                        {/* Rate Limit Status */}\n                        {showRateLimit && formatRateLimit() && (\n                            <div className=\"flex items-center gap-1.5\">\n                                <ActivityIcon className=\"size-3\" />\n                                <span>{formatRateLimit()}</span>\n                            </div>\n                        )}\n\n                        {/* Refill Schedule */}\n                        {showRefill && formatRefillTime() && (\n                            <div className=\"flex items-center gap-1.5\">\n                                <RefreshCwIcon className=\"size-3\" />\n                                <span>{formatRefillTime()}</span>\n                            </div>\n                        )}\n\n                        {/* Permissions */}\n                        {formattedPermissions && (\n                            <div className=\"flex items-center gap-1.5\">\n                                <ShieldCheckIcon className=\"size-3\" />\n                                <span className=\"truncate\">{formattedPermissions}</span>\n                            </div>\n                        )}\n\n                        {/* Expiration */}\n                        <div className=\"flex items-center gap-1.5\">\n                            <span>{formatExpiration()}</span>\n                        </div>\n                    </div>\n                )}\n\n                {/* Usage Progress Bar (if we have remaining count) */}\n                {showUsage && apiKey.remaining !== null && apiKey.remaining !== undefined && apiKey.refillAmount && (\n                    <div className=\"space-y-1\">\n                        <Progress \n                            value={(apiKey.remaining / apiKey.refillAmount) * 100} \n                            className=\"h-1.5\"\n                        />\n                        <div className=\"text-xs text-muted-foreground text-right\">\n                            {apiKey.remaining} / {apiKey.refillAmount} requests\n                        </div>\n                    </div>\n                )}\n            </Card>\n\n            <UpdateApiKeyDialog\n                classNames={classNames}\n                apiKey={apiKey}\n                localization={localization}\n                open={showEditDialog}\n                onOpenChange={setShowEditDialog}\n                onSuccess={() => setShowEditDialog(false)}\n                refetch={refetch}\n            />\n\n            <ApiKeyDeleteDialog\n                classNames={classNames}\n                apiKey={apiKey}\n                localization={localization}\n                open={showDeleteDialog}\n                onOpenChange={setShowDeleteDialog}\n                refetch={refetch}\n            />\n        </>\n    )\n}\n","/**\n * api-key-display-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { CheckIcon, CopyIcon } from \"lucide-react\"\nimport { type ComponentProps, useContext, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Button } from \"../../ui/button\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"../../ui/dialog\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\n\ninterface ApiKeyDisplayDialogProps extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n    apiKey: string\n}\n\nexport function ApiKeyDisplayDialog({\n    classNames,\n    apiKey,\n    localization,\n    onOpenChange,\n    ...props\n}: ApiKeyDisplayDialogProps) {\n    const { localization: contextLocalization } = useContext(AuthUIContext)\n    localization = { ...contextLocalization, ...localization }\n\n    const [copied, setCopied] = useState(false)\n\n    const handleCopy = () => {\n        navigator.clipboard.writeText(apiKey)\n        setCopied(true)\n        setTimeout(() => setCopied(false), 2000)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                onOpenAutoFocus={(e) => e.preventDefault()}\n                className={classNames?.dialog?.content}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization.API_KEY_CREATED}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {localization.CREATE_API_KEY_SUCCESS}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <div className=\"break-all rounded-md bg-muted p-4 font-mono text-sm\">\n                    {apiKey}\n                </div>\n\n                <DialogFooter className={classNames?.dialog?.footer}>\n                    <Button\n                        type=\"button\"\n                        variant=\"outline\"\n                        onClick={handleCopy}\n                        disabled={copied}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                    >\n                        {copied ? (\n                            <>\n                                <CheckIcon className={classNames?.icon} />\n                                {localization.COPIED_TO_CLIPBOARD}\n                            </>\n                        ) : (\n                            <>\n                                <CopyIcon className={classNames?.icon} />\n                                {localization.COPY_TO_CLIPBOARD}\n                            </>\n                        )}\n                    </Button>\n\n                    <Button\n                        type=\"button\"\n                        variant=\"default\"\n                        onClick={() => onOpenChange?.(false)}\n                        className={cn(\n                            classNames?.button,\n                            classNames?.primaryButton\n                        )}\n                    >\n                        {localization.DONE}\n                    </Button>\n                </DialogFooter>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * api-keys-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext, useMemo, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn } from \"@/lib/utils\"\nimport { CardContent } from \"@/components/ui/card\"\nimport type { SettingsCardProps } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport { ApiKeyCell } from \"../cells\"\nimport { ApiKeyDisplayDialog } from \"@/components/settings/api-key/api-key-display-dialog\"\nimport { CreateApiKeyDialog } from \"../dialogs\"\n\nexport interface ApiKeysCardProps extends SettingsCardProps {\n    organizationId?: string\n    onSelectApiKey?: (apiKey: any) => void\n    selectedApiKeyId?: string\n}\n\nexport function ApiKeysCard({\n    className,\n    classNames,\n    localization,\n    organizationId,\n    onSelectApiKey,\n    selectedApiKeyId,\n    ...props\n}: ApiKeysCardProps) {\n    const {\n        hooks: { useListApiKeys },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: apiKeys, isPending, refetch } = useListApiKeys()\n\n    // Filter API keys by organizationId\n    const filteredApiKeys = useMemo(() => {\n        return apiKeys?.filter(\n            (apiKey) => organizationId === apiKey.metadata?.organizationId\n        )\n    }, [apiKeys, organizationId])\n\n    const [createDialogOpen, setCreateDialogOpen] = useState(false)\n    const [displayDialogOpen, setDisplayDialogOpen] = useState(false)\n    const [createdApiKey, setCreatedApiKey] = useState(\"\")\n\n    const handleCreateApiKey = (apiKey: string) => {\n        setCreatedApiKey(apiKey)\n        setDisplayDialogOpen(true)\n    }\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                actionLabel={localization.CREATE_API_KEY}\n                description={localization.API_KEYS_DESCRIPTION}\n                instructions={localization.API_KEYS_INSTRUCTIONS}\n                isPending={isPending}\n                title={localization.API_KEYS}\n                action={() => setCreateDialogOpen(true)}\n                {...props}\n            >\n                {filteredApiKeys && filteredApiKeys.length > 0 && (\n                    <CardContent\n                        className={cn(\"grid gap-4\", classNames?.content)}\n                    >\n                        {filteredApiKeys?.map((apiKey) => (\n                            <ApiKeyCell\n                                key={apiKey.id}\n                                classNames={classNames}\n                                apiKey={apiKey}\n                                localization={localization}\n                                refetch={refetch}\n                                onClick={onSelectApiKey ? () => onSelectApiKey(apiKey) : undefined}\n                                isSelected={selectedApiKeyId === apiKey.id}\n                            />\n                        ))}\n                    </CardContent>\n                )}\n            </SettingsCard>\n\n            <CreateApiKeyDialog\n                classNames={classNames}\n                localization={localization}\n                open={createDialogOpen}\n                onOpenChange={setCreateDialogOpen}\n                onSuccess={handleCreateApiKey}\n                refetch={refetch}\n                organizationId={organizationId}\n            />\n\n            <ApiKeyDisplayDialog\n                classNames={classNames}\n                apiKey={createdApiKey}\n                localization={localization}\n                open={displayDialogOpen}\n                onOpenChange={setDisplayDialogOpen}\n            />\n        </>\n    )\n}\n","/**\n * organization-settings-cards\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { DeleteOrganizationCard } from \"../cards/delete-organization-card\"\nimport { OrganizationLogoCard } from \"../cards/organization-logo-card\"\nimport { OrganizationNameCard } from \"../cards/organization-name-card\"\nimport { OrganizationSlugCard } from \"../cards/organization-slug-card\"\n\nexport type OrganizationSettingsCardsProps = {\n    className?: string\n    classNames?: {\n        card?: SettingsCardClassNames\n        cards?: string\n    }\n    localization?: Partial<AuthLocalization>\n    slug?: string\n}\n\nexport function OrganizationSettingsCards({\n    className,\n    classNames,\n    localization,\n    slug\n}: OrganizationSettingsCardsProps) {\n    const { organization: organizationOptions } = useContext(AuthUIContext)\n\n    return (\n        <div\n            className={cn(\n                \"flex w-full flex-col gap-4 md:gap-6\",\n                className,\n                classNames?.cards\n            )}\n        >\n            {organizationOptions?.logo && (\n                <OrganizationLogoCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                    slug={slug}\n                />\n            )}\n\n            <OrganizationNameCard\n                classNames={classNames?.card}\n                localization={localization}\n                slug={slug}\n            />\n\n            <OrganizationSlugCard\n                classNames={classNames?.card}\n                localization={localization}\n                slug={slug}\n            />\n\n            <DeleteOrganizationCard\n                classNames={classNames?.card}\n                localization={localization}\n                slug={slug}\n            />\n        </div>\n    )\n}\n","/**\n * organization-view\n * Enhanced for @bettercone/ui\n * \n * Organization management view with tab-based navigation for settings, members, and API keys.\n * Follows the same pattern as AccountView with responsive sidebar/drawer navigation.\n */\n\n\"use client\"\n\nimport { MenuIcon } from \"lucide-react\"\nimport { useContext, useMemo } from \"react\"\nimport { useAuthenticate } from \"../../../hooks/use-authenticate\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getViewByPath } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { OrganizationViewPath } from \"../../../lib/view-paths\"\nimport { Button } from \"../../ui/button\"\nimport { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from \"../../ui/drawer\"\nimport { Label } from \"../../ui/label\"\nimport type { SettingsCardClassNames } from \"../../settings/shared/settings-card\"\nimport { ApiKeysCard } from \"../../apiKey\"\nimport { OrganizationSettingsCards } from \"../components/organization-settings-cards\"\nimport { OrganizationMembersCard } from \"../cards/organization-members-card\"\nimport { OrganizationInvitationsCard } from \"../cards/organization-invitations-card\"\n\nexport interface OrganizationViewProps {\n    className?: string\n    classNames?: {\n        base?: string\n        cards?: string\n        drawer?: { menuItem?: string }\n        sidebar?: { base?: string; button?: string; buttonActive?: string }\n        card?: SettingsCardClassNames\n    }\n    localization?: AuthLocalization\n    path?: string\n    pathname?: string\n    view?: OrganizationViewPath\n    hideNav?: boolean\n    slug?: string\n}\n\nexport function OrganizationView({\n    className,\n    classNames,\n    localization: localizationProp,\n    path: pathProp,\n    pathname,\n    view: viewProp,\n    hideNav,\n    slug\n}: OrganizationViewProps) {\n    const {\n        apiKey,\n        localization: contextLocalization,\n        organization: organizationOptions,\n        Link\n    } = useContext(AuthUIContext)\n\n    useAuthenticate()\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const path = pathProp ?? pathname?.split(\"/\").pop()\n\n    const view =\n        viewProp || getViewByPath(organizationOptions?.viewPaths, path!) || \"SETTINGS\"\n\n    const navItems: {\n        view: OrganizationViewPath\n        label: string\n    }[] = [\n        { view: \"SETTINGS\", label: localization.SETTINGS },\n        { view: \"MEMBERS\", label: localization.MEMBERS }\n    ]\n\n    if (apiKey) {\n        navItems.push({\n            view: \"API_KEYS\",\n            label: localization.API_KEYS\n        })\n    }\n\n    return (\n        <div\n            className={cn(\n                \"flex w-full grow flex-col gap-4 md:flex-row md:gap-12\",\n                className,\n                classNames?.base\n            )}\n        >\n            {!hideNav && (\n                <div className=\"flex justify-between gap-2 md:hidden\">\n                    <Label className=\"font-semibold text-base\">\n                        {navItems.find((i) => i.view === view)?.label}\n                    </Label>\n\n                    <Drawer>\n                        <DrawerTrigger asChild>\n                            <Button variant=\"outline\">\n                                <MenuIcon />\n                            </Button>\n                        </DrawerTrigger>\n                        <DrawerContent>\n                            <DrawerHeader>\n                                <DrawerTitle className=\"hidden\">\n                                    {localization.SETTINGS}\n                                </DrawerTitle>\n                            </DrawerHeader>\n                            <div className=\"flex flex-col px-4 pb-4\">\n                                {navItems.map((item) => (\n                                    <Link\n                                        key={item.view}\n                                        href={`${organizationOptions?.basePath}/${slug}/${organizationOptions?.viewPaths[item.view]}`}\n                                    >\n                                        <Button\n                                            size=\"lg\"\n                                            className={cn(\n                                                \"w-full justify-start px-4 transition-none\",\n                                                classNames?.drawer?.menuItem,\n                                                view === item.view\n                                                    ? \"font-semibold\"\n                                                    : \"text-foreground/70\"\n                                            )}\n                                            variant=\"ghost\"\n                                        >\n                                            {item.label}\n                                        </Button>\n                                    </Link>\n                                ))}\n                            </div>\n                        </DrawerContent>\n                    </Drawer>\n                </div>\n            )}\n\n            {!hideNav && (\n                <div className=\"hidden md:block\">\n                    <div\n                        className={cn(\n                            \"flex w-48 flex-col gap-1 lg:w-60\",\n                            classNames?.sidebar?.base\n                        )}\n                    >\n                        {navItems.map((item) => (\n                            <Link\n                                key={item.view}\n                                href={`${organizationOptions?.basePath}/${slug}/${organizationOptions?.viewPaths[item.view]}`}\n                            >\n                                <Button\n                                    size=\"lg\"\n                                    className={cn(\n                                        \"w-full justify-start px-4 transition-none\",\n                                        classNames?.sidebar?.button,\n                                        view === item.view\n                                            ? \"font-semibold\"\n                                            : \"text-foreground/70\",\n                                        view === item.view &&\n                                            classNames?.sidebar?.buttonActive\n                                    )}\n                                    variant=\"ghost\"\n                                >\n                                    {item.label}\n                                </Button>\n                            </Link>\n                        ))}\n                    </div>\n                </div>\n            )}\n\n            {view === \"SETTINGS\" && (\n                <OrganizationSettingsCards\n                    classNames={classNames}\n                    localization={localization}\n                    slug={slug}\n                />\n            )}\n\n            {view === \"MEMBERS\" && (\n                <div className=\"grid w-full gap-4 md:gap-6\">\n                    <OrganizationMembersCard\n                        classNames={classNames?.card}\n                        localization={localization}\n                        slug={slug}\n                    />\n\n                    <OrganizationInvitationsCard\n                        classNames={classNames?.card}\n                        localization={localization}\n                        slug={slug}\n                    />\n                </div>\n            )}\n\n            {view === \"API_KEYS\" && apiKey && (\n                <ApiKeysCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n        </div>\n    )\n}\n","/**\n * organization-switcher\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Organization } from \"better-auth/plugins/organization\"\nimport {\n    ChevronsUpDown,\n    LogInIcon,\n    Plus,\n    PlusCircleIcon,\n    SettingsIcon\n} from \"lucide-react\"\nimport {\n    type ComponentProps,\n    type ReactNode,\n    useCallback,\n    useContext,\n    useEffect,\n    useMemo,\n    useState\n} from \"react\"\n\nimport { useCurrentOrganization } from \"../../../hooks/use-current-organization\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { User } from \"../../../types/auth-client\"\nimport { Button } from \"../../ui/button\"\n\n\nimport { UserAvatar, type UserAvatarClassNames } from \"../../user\"\nimport type { UserViewClassNames } from \"../../ui/user-view\"\nimport { CreateOrganizationDialog } from \"../dialogs/create-organization-dialog\"\nimport {\n    OrganizationCellView,\n    type OrganizationViewClassNames\n} from \"../cells/organization-cell-view\"\nimport { OrganizationLogo } from \"./organization-logo\"\nimport { PersonalAccountView } from \"../views/personal-account-view\"\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger } from \"../../ui/dropdown-menu\"\n\nexport interface OrganizationSwitcherClassNames {\n    base?: string\n    skeleton?: string\n    trigger?: {\n        base?: string\n        avatar?: UserAvatarClassNames\n        user?: UserViewClassNames\n        organization?: OrganizationViewClassNames\n        skeleton?: string\n    }\n    content?: {\n        base?: string\n        user?: UserViewClassNames\n        organization?: OrganizationViewClassNames\n        avatar?: UserAvatarClassNames\n        menuItem?: string\n        separator?: string\n    }\n}\n\nexport interface OrganizationSwitcherProps\n    extends Omit<ComponentProps<typeof Button>, \"trigger\"> {\n    classNames?: OrganizationSwitcherClassNames\n    align?: \"center\" | \"start\" | \"end\"\n    alignOffset?: number\n    side?: \"top\" | \"right\" | \"bottom\" | \"left\"\n    sideOffset?: number\n    trigger?: ReactNode\n    localization?: AuthLocalization\n    slug?: string\n    onSetActive?: (organization: Organization | null) => void\n    /**\n     * Hide the personal organization option from the switcher.\n     * When true, users can only switch between organizations and cannot access their personal account.\n     * If no organization is active, the first available organization will be automatically selected.\n     * @default false\n     */\n    hidePersonal?: boolean\n}\n\n/**\n * Displays an interactive user button with dropdown menu functionality\n *\n * Renders a user interface element that can be displayed as either an icon or full button:\n * - Shows a user avatar or placeholder when in icon mode\n * - Displays user name and email with dropdown indicator in full mode\n * - Provides dropdown menu with authentication options (sign in/out, settings, etc.)\n * - Supports multi-session functionality for switching between accounts\n * - Can be customized with additional links and styling options\n */\nexport function OrganizationSwitcher({\n    className,\n    classNames,\n    align,\n    alignOffset,\n    side,\n    sideOffset,\n    trigger,\n    localization: localizationProp,\n    slug: slugProp,\n    size,\n    onSetActive,\n    hidePersonal,\n    ...props\n}: OrganizationSwitcherProps) {\n    const {\n        authClient,\n        basePath,\n        hooks: { useSession, useListOrganizations },\n        localization: contextLocalization,\n        account: accountOptions,\n        organization: organizationOptions,\n        redirectTo,\n        navigate,\n        toast,\n        viewPaths,\n        Link\n    } = useContext(AuthUIContext)\n\n    const {\n        pathMode,\n        slug: contextSlug,\n        personalPath\n    } = organizationOptions || {}\n\n    const slug = slugProp || contextSlug\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const [activeOrganizationPending, setActiveOrganizationPending] =\n        useState(false)\n    const [isCreateOrgDialogOpen, setIsCreateOrgDialogOpen] = useState(false)\n    const [dropdownOpen, setDropdownOpen] = useState(false)\n\n    const { data: sessionData, isPending: sessionPending } = useSession()\n    const user = sessionData?.user\n\n    const { data: organizations, isPending: organizationsPending } =\n        useListOrganizations()\n\n    const {\n        data: activeOrganization,\n        isPending: organizationPending,\n        isRefetching: organizationRefetching,\n        refetch: organizationRefetch\n    } = useCurrentOrganization({ slug })\n\n    const isPending =\n        organizationsPending ||\n        sessionPending ||\n        activeOrganizationPending ||\n        organizationPending\n\n    // biome-ignore lint/correctness/useExhaustiveDependencies: ignore\n    useEffect(() => {\n        if (organizationRefetching) return\n\n        setActiveOrganizationPending(false)\n    }, [activeOrganization, organizationRefetching])\n\n    const switchOrganization = useCallback(\n        async (organization: Organization | null) => {\n            // Prevent switching to personal account when hidePersonal is true\n            if (hidePersonal && organization === null) {\n                return\n            }\n\n            if (pathMode === \"slug\") {\n                if (organization) {\n                    navigate(\n                        `${organizationOptions?.basePath}/${organization.slug}`\n                    )\n                } else {\n                    navigate(personalPath ?? redirectTo)\n                }\n\n                return\n            }\n\n            setActiveOrganizationPending(true)\n\n            try {\n                onSetActive?.(organization)\n\n                await authClient.organization.setActive({\n                    organizationId: organization?.id || null,\n                    fetchOptions: {\n                        throw: true\n                    }\n                })\n\n                organizationRefetch?.()\n            } catch (error) {\n                toast({\n                    variant: \"error\",\n                    message: getLocalizedError({ error, localization })\n                })\n\n                setActiveOrganizationPending(false)\n            }\n        },\n        [\n            authClient,\n            toast,\n            localization,\n            onSetActive,\n            hidePersonal,\n            pathMode,\n            personalPath,\n            organizationOptions?.basePath,\n            redirectTo,\n            navigate,\n            organizationRefetch\n        ]\n    )\n\n    // Auto-select first organization when hidePersonal is true\n    useEffect(() => {\n        if (\n            hidePersonal &&\n            !activeOrganization &&\n            !activeOrganizationPending &&\n            organizations &&\n            organizations.length > 0 &&\n            !sessionPending &&\n            !organizationPending &&\n            !slug\n        ) {\n            switchOrganization(organizations[0])\n        }\n    }, [\n        hidePersonal,\n        activeOrganization,\n        activeOrganizationPending,\n        organizations,\n        sessionPending,\n        organizationPending,\n        switchOrganization,\n        slug\n    ])\n\n    return (\n        <>\n            <DropdownMenu open={dropdownOpen} onOpenChange={setDropdownOpen}>\n                <DropdownMenuTrigger asChild>\n                    {trigger ||\n                        (size === \"icon\" ? (\n                            <Button\n                                size=\"icon\"\n                                className={cn(\n                                    \"size-fit rounded-full\",\n                                    className,\n                                    classNames?.trigger?.base\n                                )}\n                                variant=\"ghost\"\n                                type=\"button\"\n                                {...props}\n                            >\n                                {isPending ||\n                                activeOrganization ||\n                                !sessionData ||\n                                (user as User)?.isAnonymous ||\n                                hidePersonal ? (\n                                    <OrganizationLogo\n                                        key={activeOrganization?.logo}\n                                        className={cn(\n                                            className,\n                                            classNames?.base\n                                        )}\n                                        classNames={classNames?.trigger?.avatar}\n                                        isPending={isPending}\n                                        organization={activeOrganization}\n                                        aria-label={localization.ORGANIZATION}\n                                        localization={localization}\n                                    />\n                                ) : (\n                                    <UserAvatar\n                                        key={user?.image}\n                                        className={cn(\n                                            className,\n                                            classNames?.base\n                                        )}\n                                        classNames={classNames?.trigger?.avatar}\n                                        user={user}\n                                        aria-label={localization.ACCOUNT}\n                                        localization={localization}\n                                    />\n                                )}\n                            </Button>\n                        ) : (\n                            <Button\n                                className={cn(\n                                    \"h-auto w-full justify-start gap-2 px-2 py-1.5 data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n                                    className,\n                                    classNames?.trigger?.base\n                                )}\n                                variant=\"ghost\"\n                                size={size}\n                                type=\"button\"\n                                {...props}\n                            >\n                                {isPending ||\n                                activeOrganization ||\n                                !sessionData ||\n                                (user as User)?.isAnonymous ||\n                                hidePersonal ? (\n                                    <OrganizationCellView\n                                        classNames={\n                                            classNames?.trigger?.organization\n                                        }\n                                        isPending={isPending}\n                                        localization={localization}\n                                        organization={activeOrganization}\n                                        size={size}\n                                    />\n                                ) : (\n                                    <PersonalAccountView\n                                        classNames={classNames?.trigger?.user}\n                                        localization={localization}\n                                        size={size}\n                                        user={user}\n                                    />\n                                )}\n\n                                <ChevronsUpDown className=\"ml-auto size-4\" />\n                            </Button>\n                        ))}\n                </DropdownMenuTrigger>\n\n                <DropdownMenuContent\n                    className={cn(\n                        \"w-[--radix-dropdown-menu-trigger-width] min-w-56 rounded-lg\",\n                        classNames?.content?.base\n                    )}\n                    align={align || \"start\"}\n                    alignOffset={alignOffset}\n                    side={side || \"bottom\"}\n                    sideOffset={sideOffset || 4}\n                    onCloseAutoFocus={(e) => e.preventDefault()}\n                >\n                    <DropdownMenuLabel className=\"text-xs text-muted-foreground\">\n                        {hidePersonal ? localization.ORGANIZATION : localization.ACCOUNT}\n                    </DropdownMenuLabel>\n\n                    {activeOrganization &&\n                        !hidePersonal &&\n                        (pathMode === \"slug\" ? (\n                            <Link href={personalPath ?? redirectTo}>\n                                <DropdownMenuItem className=\"gap-2 p-2\">\n                                    <PersonalAccountView\n                                        classNames={classNames?.content?.user}\n                                        isPending={isPending}\n                                        localization={localization}\n                                        user={user}\n                                    />\n                                </DropdownMenuItem>\n                            </Link>\n                        ) : (\n                            <DropdownMenuItem\n                                onClick={() => switchOrganization(null)}\n                                className=\"gap-2 p-2\"\n                            >\n                                <PersonalAccountView\n                                    classNames={classNames?.content?.user}\n                                    isPending={isPending}\n                                    localization={localization}\n                                    user={user}\n                                />\n                            </DropdownMenuItem>\n                        ))}\n\n                    {organizations?.map(\n                        (organization: any) =>\n                            organization.id !== activeOrganization?.id &&\n                            (pathMode === \"slug\" ? (\n                                <Link\n                                    key={organization.id}\n                                    href={`${organizationOptions?.basePath}/${organization.slug}`}\n                                >\n                                    <DropdownMenuItem className=\"gap-2 p-2\">\n                                        <OrganizationCellView\n                                            classNames={\n                                                classNames?.content\n                                                    ?.organization\n                                            }\n                                            isPending={isPending}\n                                            localization={localization}\n                                            organization={organization}\n                                        />\n                                    </DropdownMenuItem>\n                                </Link>\n                            ) : (\n                                <DropdownMenuItem\n                                    key={organization.id}\n                                    onClick={() =>\n                                        switchOrganization(organization)\n                                    }\n                                    className=\"gap-2 p-2\"\n                                >\n                                    <OrganizationCellView\n                                        classNames={\n                                            classNames?.content?.organization\n                                        }\n                                        isPending={isPending}\n                                        localization={localization}\n                                        organization={organization}\n                                    />\n                                </DropdownMenuItem>\n                            ))\n                    )}\n\n                    {organizations &&\n                        organizations.length > 0 &&\n                        (!hidePersonal || organizations.length > 1) && (\n                            <DropdownMenuSeparator\n                                className={classNames?.content?.separator}\n                            />\n                        )}\n\n                    {!isPending &&\n                    sessionData &&\n                    !(user as User).isAnonymous ? (\n                        <DropdownMenuItem\n                            className={cn(\"gap-2 p-2\", classNames?.content?.menuItem)}\n                            onClick={() => setIsCreateOrgDialogOpen(true)}\n                        >\n                            <div className=\"flex size-6 items-center justify-center rounded-md border bg-transparent\">\n                                <Plus className=\"size-4\" />\n                            </div>\n                            <div className=\"font-medium text-muted-foreground\">\n                                {localization.CREATE_ORGANIZATION}\n                            </div>\n                        </DropdownMenuItem>\n                    ) : (\n                        <Link href={`${basePath}/${viewPaths.SIGN_IN}`}>\n                            <DropdownMenuItem\n                                className={cn(\"gap-2 p-2\", classNames?.content?.menuItem)}\n                            >\n                                <LogInIcon />\n                                {localization.SIGN_IN}\n                            </DropdownMenuItem>\n                        </Link>\n                    )}\n                </DropdownMenuContent>\n            </DropdownMenu>\n\n            <CreateOrganizationDialog\n                open={isCreateOrgDialogOpen}\n                onOpenChange={setIsCreateOrgDialogOpen}\n                localization={localization}\n            />\n        </>\n    )\n}\n","/**\n * account-cell\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Session, User } from \"better-auth\"\nimport {\n    EllipsisIcon,\n    Loader2,\n    LogOutIcon,\n    RepeatIcon,\n    UserX2Icon\n} from \"lucide-react\"\nimport { useContext, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { Refetch } from \"../../../types/refetch\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"../../ui/dropdown-menu\"\nimport { UserView } from \"../../ui/user-view\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\n\nexport interface AccountCellProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    deviceSession: { user: User; session: Session }\n    localization?: Partial<AuthLocalization>\n    refetch?: Refetch\n}\n\nexport function AccountCell({\n    className,\n    classNames,\n    deviceSession,\n    localization,\n    refetch\n}: AccountCellProps) {\n    const {\n        basePath,\n        localization: contextLocalization,\n        hooks: { useSession },\n        mutators: { revokeDeviceSession, setActiveSession },\n        toast,\n        viewPaths,\n        navigate\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData } = useSession()\n    const [isLoading, setIsLoading] = useState(false)\n\n    const handleRevoke = async () => {\n        setIsLoading(true)\n\n        try {\n            await revokeDeviceSession({\n                sessionToken: deviceSession.session.token\n            })\n\n            refetch?.()\n        } catch (error) {\n            setIsLoading(false)\n\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    const handleSetActiveSession = async () => {\n        setIsLoading(true)\n\n        try {\n            await setActiveSession({\n                sessionToken: deviceSession.session.token\n            })\n\n            refetch?.()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setIsLoading(false)\n    }\n\n    const isCurrentSession =\n        deviceSession.session.id === sessionData?.session.id\n\n    return (\n        <Card className={cn(\"flex-row p-4\", className, classNames?.cell)}>\n            <UserView user={deviceSession.user} localization={localization} />\n\n            <DropdownMenu>\n                <DropdownMenuTrigger asChild>\n                    <Button\n                        className={cn(\n                            \"relative ms-auto\",\n                            classNames?.button,\n                            classNames?.outlineButton\n                        )}\n                        disabled={isLoading}\n                        size=\"icon\"\n                        type=\"button\"\n                        variant=\"outline\"\n                    >\n                        {isLoading ? (\n                            <Loader2 className=\"animate-spin\" />\n                        ) : (\n                            <EllipsisIcon className={classNames?.icon} />\n                        )}\n                    </Button>\n                </DropdownMenuTrigger>\n\n                <DropdownMenuContent>\n                    {!isCurrentSession && (\n                        <DropdownMenuItem onClick={handleSetActiveSession}>\n                            <RepeatIcon className={classNames?.icon} />\n\n                            {localization.SWITCH_ACCOUNT}\n                        </DropdownMenuItem>\n                    )}\n\n                    <DropdownMenuItem\n                        onClick={() => {\n                            if (isCurrentSession) {\n                                navigate(`${basePath}/${viewPaths.SIGN_OUT}`)\n                                return\n                            }\n\n                            handleRevoke()\n                        }}\n                        variant=\"destructive\"\n                    >\n                        {isCurrentSession ? (\n                            <LogOutIcon className={classNames?.icon} />\n                        ) : (\n                            <UserX2Icon className={classNames?.icon} />\n                        )}\n\n                        {isCurrentSession\n                            ? localization.SIGN_OUT\n                            : localization.REVOKE}\n                    </DropdownMenuItem>\n                </DropdownMenuContent>\n            </DropdownMenu>\n        </Card>\n    )\n}\n","/**\n * accounts-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { CardContent } from \"../../ui/card\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\nimport { SettingsCard } from \"../shared/settings-card\"\nimport { AccountCell } from \"./account-cell\"\n\nexport interface AccountsCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: Partial<AuthLocalization>\n}\n\nexport function AccountsCard({\n    className,\n    classNames,\n    localization\n}: AccountsCardProps) {\n    const {\n        basePath,\n        hooks: { useListDeviceSessions, useSession },\n        localization: contextLocalization,\n        viewPaths,\n        navigate\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: deviceSessions, isPending, refetch } = useListDeviceSessions()\n    const { data: sessionData } = useSession()\n\n    const otherDeviceSessions = (deviceSessions || []).filter(\n        (ds) => ds.session.id !== sessionData?.session.id\n    )\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            title={localization.ACCOUNTS}\n            description={localization.ACCOUNTS_DESCRIPTION}\n            actionLabel={localization.ADD_ACCOUNT}\n            instructions={localization.ACCOUNTS_INSTRUCTIONS}\n            isPending={isPending}\n            action={() => navigate(`${basePath}/${viewPaths.SIGN_IN}`)}\n        >\n            {deviceSessions?.length && (\n                <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                    {sessionData && (\n                        <AccountCell\n                            classNames={classNames}\n                            deviceSession={sessionData}\n                            localization={localization}\n                            refetch={refetch}\n                        />\n                    )}\n\n                    {otherDeviceSessions.map((deviceSession) => (\n                        <AccountCell\n                            key={deviceSession.session.id}\n                            classNames={classNames}\n                            deviceSession={deviceSession}\n                            localization={localization}\n                            refetch={refetch}\n                        />\n                    ))}\n                </CardContent>\n            )}\n        </SettingsCard>\n    )\n}\n","/**\n * update-avatar-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Trash2Icon, UploadCloudIcon } from \"lucide-react\"\nimport { type ComponentProps, useContext, useRef, useState } from \"react\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { fileToBase64, resizeAndCropImage } from \"../../../lib/image-utils\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport { Button } from \"../../ui/button\"\nimport { Card } from \"../../ui/card\"\nimport {\n    DropdownMenu,\n    DropdownMenuContent,\n    DropdownMenuItem,\n    DropdownMenuTrigger\n} from \"../../ui/dropdown-menu\"\nimport { UserAvatar } from \"../../user\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\nimport { SettingsCardFooter } from \"../shared/settings-card-footer\"\nimport { SettingsCardHeader } from \"../shared/settings-card-header\"\n\nexport interface UpdateAvatarCardProps extends ComponentProps<typeof Card> {\n    className?: string\n    classNames?: SettingsCardClassNames\n    localization?: AuthLocalization\n}\n\nexport function UpdateAvatarCard({\n    className,\n    classNames,\n    localization,\n    ...props\n}: UpdateAvatarCardProps) {\n    const {\n        hooks: { useSession },\n        mutators: { updateUser },\n        localization: authLocalization,\n        optimistic,\n        avatar,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...authLocalization, ...localization }\n\n    const { data: sessionData, isPending, refetch } = useSession()\n    const fileInputRef = useRef<HTMLInputElement | null>(null)\n    const [loading, setLoading] = useState(false)\n\n    const handleAvatarChange = async (file: File) => {\n        if (!sessionData || !avatar) return\n\n        setLoading(true)\n        const resizedFile = await resizeAndCropImage(\n            file,\n            crypto.randomUUID(),\n            avatar.size,\n            avatar.extension\n        )\n\n        let image: string | undefined | null\n\n        if (avatar.upload) {\n            image = await avatar.upload(resizedFile)\n        } else {\n            image = await fileToBase64(resizedFile)\n        }\n\n        if (!image) {\n            setLoading(false)\n            return\n        }\n\n        if (optimistic && !avatar.upload) setLoading(false)\n\n        try {\n            await updateUser({ image })\n            await refetch?.()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setLoading(false)\n    }\n\n    const handleDeleteAvatar = async () => {\n        if (!sessionData) return\n\n        setLoading(true)\n\n        try {\n            // If a custom storage remover is provided, attempt to clean up the old asset first\n            if (sessionData.user.image && avatar?.delete) {\n                await avatar.delete(sessionData.user.image)\n            }\n\n            await updateUser({ image: null })\n            await refetch?.()\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        setLoading(false)\n    }\n\n    const openFileDialog = () => fileInputRef.current?.click()\n\n    return (\n        <Card\n            className={cn(\n                \"w-full pb-0 text-start\",\n                className,\n                classNames?.base\n            )}\n            {...props}\n        >\n            <input\n                ref={fileInputRef}\n                accept=\"image/*\"\n                disabled={loading}\n                hidden\n                type=\"file\"\n                onChange={(e) => {\n                    const file = e.target.files?.item(0)\n                    if (file) handleAvatarChange(file)\n\n                    e.target.value = \"\"\n                }}\n            />\n\n            <div className=\"flex justify-between\">\n                <SettingsCardHeader\n                    className=\"grow self-start\"\n                    title={localization.AVATAR}\n                    description={localization.AVATAR_DESCRIPTION}\n                    isPending={isPending}\n                    classNames={classNames}\n                />\n\n                <DropdownMenu>\n                    <DropdownMenuTrigger asChild>\n                        <Button\n                            className=\"me-6 size-fit rounded-full\"\n                            size=\"icon\"\n                            variant=\"ghost\"\n                        >\n                            <UserAvatar\n                                isPending={isPending || loading}\n                                key={sessionData?.user.image}\n                                className=\"size-20 text-2xl\"\n                                classNames={classNames?.avatar}\n                                user={sessionData?.user}\n                                localization={localization}\n                            />\n                        </Button>\n                    </DropdownMenuTrigger>\n\n                    <DropdownMenuContent\n                        align=\"end\"\n                        onCloseAutoFocus={(e) => e.preventDefault()}\n                    >\n                        <DropdownMenuItem\n                            onClick={openFileDialog}\n                            disabled={loading}\n                        >\n                            <UploadCloudIcon />\n                            {localization.UPLOAD_AVATAR}\n                        </DropdownMenuItem>\n                        {sessionData?.user.image && (\n                            <DropdownMenuItem\n                                onClick={handleDeleteAvatar}\n                                disabled={loading}\n                                variant=\"destructive\"\n                            >\n                                <Trash2Icon />\n                                {localization.DELETE_AVATAR}\n                            </DropdownMenuItem>\n                        )}\n                    </DropdownMenuContent>\n                </DropdownMenu>\n            </div>\n\n            <SettingsCardFooter\n                className=\"!py-5\"\n                instructions={localization.AVATAR_INSTRUCTIONS}\n                classNames={classNames}\n                isPending={isPending}\n                isSubmitting={loading}\n            />\n        </Card>\n    )\n}\n","/**\n * update-field-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport { type ReactNode, useContext, useMemo } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\n\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { FieldType } from \"../../../types/additional-fields\"\nimport { CardContent } from \"../../ui/card\"\nimport { Checkbox } from \"../../ui/checkbox\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"../../ui/form\"\nimport { Input } from \"../../ui/input\"\nimport { Skeleton } from \"../../ui/skeleton\"\nimport { Textarea } from \"../../ui/textarea\"\nimport {\n    SettingsCard,\n    type SettingsCardClassNames\n} from \"../shared/settings-card\"\n\nexport interface UpdateFieldCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    description?: ReactNode\n    instructions?: ReactNode\n    localization?: Partial<AuthLocalization>\n    name: string\n    placeholder?: string\n    required?: boolean\n    label?: ReactNode\n    type?: FieldType\n    multiline?: boolean\n    value?: unknown\n    validate?: (value: string) => boolean | Promise<boolean>\n}\n\nexport function UpdateFieldCard({\n    className,\n    classNames,\n    description,\n    instructions,\n    localization: localizationProp,\n    name,\n    placeholder,\n    required,\n    label,\n    type,\n    multiline,\n    value,\n    validate\n}: UpdateFieldCardProps) {\n    const {\n        hooks: { useSession },\n        mutators: { updateUser },\n        localization: contextLocalization,\n        optimistic,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const { isPending } = useSession()\n\n    let fieldSchema = z.unknown() as z.ZodType<unknown>\n\n    // Create the appropriate schema based on type\n    if (type === \"number\") {\n        fieldSchema = required\n            ? z.preprocess(\n                  (val) => (!val ? undefined : Number(val)),\n                  z.number({\n                      message: `${label} ${localization.IS_INVALID}`\n                  })\n              )\n            : z.coerce\n                  .number({\n                      message: `${label} ${localization.IS_INVALID}`\n                  })\n                  .optional()\n    } else if (type === \"boolean\") {\n        fieldSchema = required\n            ? z.coerce\n                  .boolean({\n                      message: `${label} ${localization.IS_INVALID}`\n                  })\n                  .refine((val) => val === true, {\n                      message: `${label} ${localization.IS_REQUIRED}`\n                  })\n            : z.coerce.boolean({\n                  message: `${label} ${localization.IS_INVALID}`\n              })\n    } else {\n        fieldSchema = required\n            ? z.string().min(1, `${label} ${localization.IS_REQUIRED}`)\n            : z.string().optional()\n    }\n\n    const form = useForm({\n        resolver: zodResolver(z.object({ [name]: fieldSchema })),\n        values: { [name]: value || \"\" }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const updateField = async (values: Record<string, unknown>) => {\n        await new Promise((resolve) => setTimeout(resolve))\n        const newValue = values[name]\n\n        if (value === newValue) {\n            toast({\n                variant: \"error\",\n                message: `${label} ${localization.IS_THE_SAME}`\n            })\n            return\n        }\n\n        if (\n            validate &&\n            typeof newValue === \"string\" &&\n            !(await validate(newValue))\n        ) {\n            form.setError(name, {\n                message: `${label} ${localization.IS_INVALID}`\n            })\n\n            return\n        }\n\n        try {\n            await updateUser({ [name]: newValue })\n\n            toast({\n                variant: \"success\",\n                message: `${label} ${localization.UPDATED_SUCCESSFULLY}`\n            })\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n    }\n\n    return (\n        <Form {...form}>\n            <form onSubmit={form.handleSubmit(updateField)}>\n                <SettingsCard\n                    className={className}\n                    classNames={classNames}\n                    description={description}\n                    instructions={instructions}\n                    isPending={isPending}\n                    title={label}\n                    actionLabel={localization.SAVE}\n                    optimistic={optimistic}\n                >\n                    <CardContent className={classNames?.content}>\n                        {type === \"boolean\" ? (\n                            <FormField\n                                control={form.control}\n                                name={name}\n                                render={({ field }) => (\n                                    <FormItem className=\"flex\">\n                                        <FormControl>\n                                            <Checkbox\n                                                checked={field.value as boolean}\n                                                onCheckedChange={field.onChange}\n                                                disabled={isSubmitting}\n                                                className={classNames?.checkbox}\n                                            />\n                                        </FormControl>\n\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {label}\n                                        </FormLabel>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        ) : isPending ? (\n                            <Skeleton\n                                className={cn(\n                                    \"h-9 w-full\",\n                                    classNames?.skeleton\n                                )}\n                            />\n                        ) : (\n                            <FormField\n                                control={form.control}\n                                name={name}\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormControl>\n                                            {type === \"number\" ? (\n                                                <Input\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    type=\"number\"\n                                                    placeholder={\n                                                        placeholder ||\n                                                        (typeof label ===\n                                                        \"string\"\n                                                            ? label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...field}\n                                                    value={\n                                                        field.value as string\n                                                    }\n                                                />\n                                            ) : multiline ? (\n                                                <Textarea\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    placeholder={\n                                                        placeholder ||\n                                                        (typeof label ===\n                                                        \"string\"\n                                                            ? label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...field}\n                                                    value={\n                                                        field.value as string\n                                                    }\n                                                />\n                                            ) : (\n                                                <Input\n                                                    className={\n                                                        classNames?.input\n                                                    }\n                                                    type=\"text\"\n                                                    placeholder={\n                                                        placeholder ||\n                                                        (typeof label ===\n                                                        \"string\"\n                                                            ? label\n                                                            : \"\")\n                                                    }\n                                                    disabled={isSubmitting}\n                                                    {...field}\n                                                    value={\n                                                        field.value as string\n                                                    }\n                                                />\n                                            )}\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n                    </CardContent>\n                </SettingsCard>\n            </form>\n        </Form>\n    )\n}\n","/**\n * update-name-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport type { SettingsCardProps } from \"../shared/settings-card\"\nimport { UpdateFieldCard } from \"./update-field-card\"\n\nexport function UpdateNameCard({\n    className,\n    classNames,\n    localization,\n    ...props\n}: SettingsCardProps) {\n    const {\n        hooks: { useSession },\n        localization: contextLocalization,\n        nameRequired\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData } = useSession()\n\n    return (\n        <UpdateFieldCard\n            className={className}\n            classNames={classNames}\n            value={sessionData?.user.name}\n            description={localization.NAME_DESCRIPTION}\n            name=\"name\"\n            instructions={localization.NAME_INSTRUCTIONS}\n            label={localization.NAME}\n            localization={localization}\n            placeholder={localization.NAME_PLACEHOLDER}\n            required={nameRequired}\n            {...props}\n        />\n    )\n}\n","/**\n * update-username-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport type { User } from \"../../../types/auth-client\"\nimport type { SettingsCardProps } from \"../shared/settings-card\"\nimport { UpdateFieldCard } from \"./update-field-card\"\n\nexport function UpdateUsernameCard({\n    className,\n    classNames,\n    localization,\n    ...props\n}: SettingsCardProps) {\n    const {\n        hooks: { useSession },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData } = useSession()\n    const value =\n        (sessionData?.user as User)?.displayUsername ||\n        (sessionData?.user as User)?.username\n\n    return (\n        <UpdateFieldCard\n            className={className}\n            classNames={classNames}\n            value={value}\n            description={localization.USERNAME_DESCRIPTION}\n            name=\"username\"\n            instructions={localization.USERNAME_INSTRUCTIONS}\n            label={localization.USERNAME}\n            localization={localization}\n            placeholder={localization.USERNAME_PLACEHOLDER}\n            required\n            {...props}\n        />\n    )\n}\n","/**\n * account-settings-cards\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\n\nimport { AuthUIContext } from \"../../lib/auth-ui-provider\"\nimport { cn } from \"../../lib/utils\"\nimport type { AuthLocalization } from \"../../localization/auth-localization\"\nimport { AccountsCard } from \"./account/accounts-card\"\nimport { UpdateAvatarCard } from \"./account/update-avatar-card\"\nimport { UpdateFieldCard } from \"./account/update-field-card\"\nimport { UpdateNameCard } from \"./account/update-name-card\"\nimport { UpdateUsernameCard } from \"./account/update-username-card\"\nimport { ChangeEmailCard } from \"./security/change-email-card\"\nimport type { SettingsCardClassNames } from \"./shared/settings-card\"\n\nexport function AccountSettingsCards({\n    className,\n    classNames,\n    localization\n}: {\n    className?: string\n    classNames?: {\n        card?: SettingsCardClassNames\n        cards?: string\n    }\n    localization?: Partial<AuthLocalization>\n}) {\n    const {\n        additionalFields,\n        avatar,\n        changeEmail,\n        credentials,\n        hooks: { useSession },\n        multiSession,\n        account: accountOptions\n    } = useContext(AuthUIContext)\n\n    const { data: sessionData } = useSession()\n\n    return (\n        <div\n            className={cn(\n                \"flex w-full flex-col gap-4 md:gap-6\",\n                className,\n                classNames?.cards\n            )}\n        >\n            {accountOptions?.fields?.includes(\"image\") && avatar && (\n                <UpdateAvatarCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {credentials?.username && (\n                <UpdateUsernameCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {accountOptions?.fields?.includes(\"name\") && (\n                <UpdateNameCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {changeEmail && (\n                <ChangeEmailCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {accountOptions?.fields?.map((field: string) => {\n                if (field === \"image\") return null\n                if (field === \"name\") return null\n                const additionalField = additionalFields?.[field]\n                if (!additionalField) return null\n\n                const {\n                    label,\n                    description,\n                    instructions,\n                    placeholder,\n                    required,\n                    type,\n                    multiline,\n                    validate\n                } = additionalField\n\n                \n                const defaultValue = sessionData?.user[field] as unknown\n\n                return (\n                    <UpdateFieldCard\n                        key={field}\n                        classNames={classNames?.card}\n                        value={defaultValue}\n                        description={description}\n                        name={field}\n                        instructions={instructions}\n                        label={label}\n                        localization={localization}\n                        placeholder={placeholder}\n                        required={required}\n                        type={type}\n                        multiline={multiline}\n                        validate={validate}\n                    />\n                )\n            })}\n\n            {multiSession && (\n                <AccountsCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n        </div>\n    )\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Mail, UserPlus, AlertCircle } from \"lucide-react\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\n\nexport interface AnonymousUpgradeCardClassNames {\n  card?: string;\n  header?: string;\n  title?: string;\n  description?: string;\n  content?: string;\n  alert?: string;\n  buttonContainer?: string;\n  button?: string;\n}\n\nexport interface AnonymousUpgradeCardLocalization {\n  title?: string;\n  description?: string;\n  alertMessage?: string;\n  signUpWithEmail?: string;\n  linkOAuth?: string;\n  benefits?: {\n    title?: string;\n    items?: string[];\n  };\n}\n\nexport interface AnonymousUpgradeCardProps {\n  /**\n   * Callback when user clicks to upgrade with email\n   */\n  onUpgradeWithEmail?: () => void;\n  \n  /**\n   * Callback when user clicks to link OAuth account\n   */\n  onLinkOAuth?: () => void;\n  \n  /**\n   * Show OAuth providers for linking\n   * @default false\n   */\n  showOAuthProviders?: boolean;\n  \n  /**\n   * OAuth providers to display\n   */\n  oauthProviders?: Array<{\n    id: string;\n    name: string;\n    icon?: React.ReactNode;\n  }>;\n  \n  /**\n   * Custom class names for styling\n   */\n  classNames?: AnonymousUpgradeCardClassNames;\n  \n  /**\n   * Localization strings\n   */\n  localization?: AnonymousUpgradeCardLocalization;\n  \n  /**\n   * Custom class name for the card\n   */\n  className?: string;\n}\n\nconst defaultLocalization: Required<AnonymousUpgradeCardLocalization> = {\n  title: \"Upgrade Your Account\",\n  description: \"You're currently signed in as a guest. Upgrade to save your progress and access more features.\",\n  alertMessage: \"Guest accounts are temporary. Link an account to keep your data.\",\n  signUpWithEmail: \"Sign up with Email\",\n  linkOAuth: \"Link {provider}\",\n  benefits: {\n    title: \"Benefits of upgrading:\",\n    items: [\n      \"Save your progress across devices\",\n      \"Access your account from anywhere\",\n      \"Enhanced security features\",\n      \"Never lose your data\"\n    ]\n  }\n};\n\nexport function AnonymousUpgradeCard({\n  onUpgradeWithEmail,\n  onLinkOAuth,\n  showOAuthProviders = false,\n  oauthProviders = [],\n  classNames = {},\n  localization = {},\n  className,\n}: AnonymousUpgradeCardProps) {\n  const context = React.useContext(AuthUIContext);\n  const [isLoading, setIsLoading] = React.useState(false);\n\n  const loc = {\n    ...defaultLocalization,\n    ...localization,\n    benefits: {\n      ...defaultLocalization.benefits,\n      ...localization.benefits\n    }\n  };\n\n  const handleUpgradeWithEmail = async () => {\n    setIsLoading(true);\n    try {\n      if (onUpgradeWithEmail) {\n        await onUpgradeWithEmail();\n      } else {\n        // Default: Navigate to sign-up page\n        const basePath = context?.basePath || \"/auth\";\n        window.location.href = `${basePath}/sign-up`;\n      }\n    } catch (error) {\n      console.error(\"Failed to upgrade account:\", error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const handleLinkOAuth = async (providerId: string) => {\n    setIsLoading(true);\n    try {\n      if (onLinkOAuth) {\n        await onLinkOAuth();\n      } else {\n        // Default: Navigate to OAuth sign-in\n        const basePath = context?.basePath || \"/auth\";\n        window.location.href = `${basePath}/sign-in?provider=${providerId}`;\n      }\n    } catch (error) {\n      console.error(\"Failed to link account:\", error);\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  return (\n    <Card className={className || classNames.card}>\n      <CardHeader className={classNames.header}>\n        <CardTitle className={classNames.title}>{loc.title}</CardTitle>\n        <CardDescription className={classNames.description}>\n          {loc.description}\n        </CardDescription>\n      </CardHeader>\n      <CardContent className={classNames.content}>\n        <div className=\"space-y-4\">\n          {/* Alert */}\n          <Alert className={classNames.alert}>\n            <AlertCircle className=\"h-4 w-4\" />\n            <AlertDescription>{loc.alertMessage}</AlertDescription>\n          </Alert>\n\n          {/* Benefits List */}\n          <div className=\"space-y-2\">\n            <p className=\"text-sm font-medium\">{loc.benefits.title}</p>\n            <ul className=\"text-sm text-muted-foreground space-y-1\">\n              {(loc.benefits.items || []).map((benefit, index) => (\n                <li key={index} className=\"flex items-start\">\n                  <span className=\"mr-2\">•</span>\n                  <span>{benefit}</span>\n                </li>\n              ))}\n            </ul>\n          </div>\n\n          {/* Action Buttons */}\n          <div className={`space-y-2 ${classNames.buttonContainer || \"\"}`}>\n            {/* Email Sign-up Button */}\n            <Button\n              className={`w-full ${classNames.button || \"\"}`}\n              onClick={handleUpgradeWithEmail}\n              disabled={isLoading}\n            >\n              <Mail className=\"mr-2 h-4 w-4\" />\n              {loc.signUpWithEmail}\n            </Button>\n\n            {/* OAuth Provider Buttons */}\n            {showOAuthProviders && oauthProviders.map((provider) => (\n              <Button\n                key={provider.id}\n                variant=\"outline\"\n                className={`w-full ${classNames.button || \"\"}`}\n                onClick={() => handleLinkOAuth(provider.id)}\n                disabled={isLoading}\n              >\n                {provider.icon || <UserPlus className=\"mr-2 h-4 w-4\" />}\n                {loc.linkOAuth.replace(\"{provider}\", provider.name)}\n              </Button>\n            ))}\n          </div>\n        </div>\n      </CardContent>\n    </Card>\n  );\n}\n","/**\n * delete-account-dialog\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\nimport { zodResolver } from \"@hookform/resolvers/zod\"\nimport type { Account } from \"better-auth\"\nimport { Loader2 } from \"lucide-react\"\nimport { type ComponentProps, useContext } from \"react\"\nimport { useForm } from \"react-hook-form\"\nimport * as z from \"zod\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card } from \"@/components/ui/card\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\nimport {\n    Form,\n    FormControl,\n    FormField,\n    FormItem,\n    FormLabel,\n    FormMessage\n} from \"@/components/ui/form\"\nimport { Input } from \"@/components/ui/input\"\nimport { UserView } from \"@/components/ui/user-view\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\n\nexport interface DeleteAccountDialogProps\n    extends ComponentProps<typeof Dialog> {\n    classNames?: SettingsCardClassNames\n    accounts?: Account[] | null\n    localization?: AuthLocalization\n}\n\nexport function DeleteAccountDialog({\n    classNames,\n    accounts,\n    localization,\n    onOpenChange,\n    ...props\n}: DeleteAccountDialogProps) {\n    const {\n        authClient,\n        basePath,\n        baseURL,\n        deleteUser,\n        freshAge,\n        hooks: { useSession },\n        localization: contextLocalization,\n        viewPaths,\n        navigate,\n        toast\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { data: sessionData } = useSession()\n    const session = sessionData?.session\n    const user = sessionData?.user\n\n    const isFresh = session\n        ? Date.now() - new Date(session?.createdAt).getTime() < freshAge * 1000\n        : false\n    const credentialsLinked = accounts?.some(\n        (acc) => acc.providerId === \"credential\"\n    )\n\n    const formSchema = z.object({\n        password: credentialsLinked\n            ? z.string().min(1, { message: localization.PASSWORD_REQUIRED! })\n            : z.string().optional()\n    })\n\n    const form = useForm({\n        resolver: zodResolver(formSchema),\n        defaultValues: {\n            password: \"\"\n        }\n    })\n\n    const { isSubmitting } = form.formState\n\n    const deleteAccount = async ({ password }: z.infer<typeof formSchema>) => {\n        const params = {} as Record<string, string>\n\n        if (credentialsLinked) {\n            params.password = password!\n        } else if (!isFresh) {\n            navigate(`${basePath}/${viewPaths.SIGN_OUT}`)\n            return\n        }\n\n        if (deleteUser?.verification) {\n            params.callbackURL = `${baseURL}${basePath}/${viewPaths.SIGN_OUT}`\n        }\n\n        try {\n            await authClient.deleteUser({\n                ...params,\n                fetchOptions: {\n                    throw: true\n                }\n            })\n\n            if (deleteUser?.verification) {\n                toast({\n                    variant: \"success\",\n                    message: localization.DELETE_ACCOUNT_VERIFY!\n                })\n            } else {\n                toast({\n                    variant: \"success\",\n                    message: localization.DELETE_ACCOUNT_SUCCESS!\n                })\n                navigate(`${basePath}/${viewPaths.SIGN_OUT}`)\n            }\n        } catch (error) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        }\n\n        onOpenChange?.(false)\n    }\n\n    return (\n        <Dialog onOpenChange={onOpenChange} {...props}>\n            <DialogContent\n                className={cn(\"sm:max-w-md\", classNames?.dialog?.content)}\n            >\n                <DialogHeader className={classNames?.dialog?.header}>\n                    <DialogTitle\n                        className={cn(\"text-lg md:text-xl\", classNames?.title)}\n                    >\n                        {localization?.DELETE_ACCOUNT}\n                    </DialogTitle>\n\n                    <DialogDescription\n                        className={cn(\n                            \"text-xs md:text-sm\",\n                            classNames?.description\n                        )}\n                    >\n                        {isFresh\n                            ? localization?.DELETE_ACCOUNT_INSTRUCTIONS\n                            : localization?.SESSION_NOT_FRESH}\n                    </DialogDescription>\n                </DialogHeader>\n\n                <Card className={cn(\"my-2 flex-row p-4\", classNames?.cell)}>\n                    <UserView user={user} localization={localization} />\n                </Card>\n\n                <Form {...form}>\n                    <form\n                        onSubmit={form.handleSubmit(deleteAccount)}\n                        className=\"grid gap-6\"\n                    >\n                        {credentialsLinked && (\n                            <FormField\n                                control={form.control}\n                                name=\"password\"\n                                render={({ field }) => (\n                                    <FormItem>\n                                        <FormLabel\n                                            className={classNames?.label}\n                                        >\n                                            {localization?.PASSWORD}\n                                        </FormLabel>\n\n                                        <FormControl>\n                                            <Input\n                                                autoComplete=\"current-password\"\n                                                placeholder={\n                                                    localization?.PASSWORD_PLACEHOLDER\n                                                }\n                                                type=\"password\"\n                                                className={classNames?.input}\n                                                {...field}\n                                            />\n                                        </FormControl>\n\n                                        <FormMessage\n                                            className={classNames?.error}\n                                        />\n                                    </FormItem>\n                                )}\n                            />\n                        )}\n\n                        <DialogFooter className={classNames?.dialog?.footer}>\n                            <Button\n                                type=\"button\"\n                                variant=\"secondary\"\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.secondaryButton\n                                )}\n                                onClick={() => onOpenChange?.(false)}\n                            >\n                                {localization.CANCEL}\n                            </Button>\n\n                            <Button\n                                className={cn(\n                                    classNames?.button,\n                                    classNames?.destructiveButton\n                                )}\n                                disabled={isSubmitting}\n                                variant=\"destructive\"\n                                type=\"submit\"\n                            >\n                                {isSubmitting && (\n                                    <Loader2 className=\"animate-spin\" />\n                                )}\n                                {isFresh\n                                    ? localization?.DELETE_ACCOUNT\n                                    : localization?.SIGN_OUT}\n                            </Button>\n                        </DialogFooter>\n                    </form>\n                </Form>\n            </DialogContent>\n        </Dialog>\n    )\n}\n","/**\n * delete-account-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Account } from \"better-auth\"\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport { DeleteAccountDialog } from \"../dialogs\"\n\nexport interface DeleteAccountCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    accounts?: Account[] | null\n    isPending?: boolean\n    localization?: AuthLocalization\n    skipHook?: boolean\n}\n\nexport function DeleteAccountCard({\n    className,\n    classNames,\n    accounts,\n    isPending,\n    localization,\n    skipHook\n}: DeleteAccountCardProps) {\n    const {\n        hooks: { useListAccounts },\n        localization: contextLocalization\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const [showDialog, setShowDialog] = useState(false)\n\n    if (!skipHook) {\n        const result = useListAccounts()\n        accounts = result.data\n        isPending = result.isPending\n    }\n\n    return (\n        <div>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                actionLabel={localization?.DELETE_ACCOUNT}\n                description={localization?.DELETE_ACCOUNT_DESCRIPTION}\n                isPending={isPending}\n                title={localization?.DELETE_ACCOUNT}\n                variant=\"destructive\"\n                action={() => setShowDialog(true)}\n            />\n\n            <DeleteAccountDialog\n                classNames={classNames}\n                accounts={accounts}\n                localization={localization}\n                open={showDialog}\n                onOpenChange={setShowDialog}\n            />\n        </div>\n    )\n}\n","/**\n * link-account-card\n * Link OAuth providers to existing account\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2, Link2 } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { CardContent } from \"@/components/ui/card\"\nimport type { SettingsCardProps } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\n\nexport interface LinkAccountCardProps extends Omit<SettingsCardProps, 'action'> {\n    providers?: Array<{\n        id: string\n        name: string\n    }>\n    callbackURL?: string\n    onLinkStart?: (providerId: string) => void\n}\n\nexport function LinkAccountCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    providers = [],\n    callbackURL,\n    onLinkStart\n}: LinkAccountCardProps) {\n    const {\n        authClient,\n        hooks: { useListAccounts },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp } as any\n\n    const { data: accounts, isPending } = useListAccounts()\n    const [linkingProvider, setLinkingProvider] = useState<string | null>(null)\n\n    const linkedProviderIds = new Set(\n        (accounts || []).map((account: any) => account.providerId)\n    )\n\n    const availableProviders = providers.filter(\n        provider => !linkedProviderIds.has(provider.id)\n    )\n\n    const handleLinkProvider = (providerId: string) => {\n        setLinkingProvider(providerId)\n        onLinkStart?.(providerId)\n\n        // Redirect to OAuth link flow\n        // The OAuth flow will redirect back to callbackURL after completion\n        const linkURL = `${window.location.origin}/api/auth/oauth2/link/${providerId}?callbackURL=${encodeURIComponent(callbackURL || window.location.pathname)}`\n        window.location.href = linkURL\n    }\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            title={localization.LINK_ACCOUNT || \"Link Account\"}\n            description={localization.LINK_ACCOUNT_DESCRIPTION || \"Connect additional OAuth providers to your account\"}\n            isPending={isPending}\n        >\n            <CardContent className={cn(\"grid gap-3\", classNames?.content)}>\n                {availableProviders.length === 0 ? (\n                    <p className=\"text-sm text-muted-foreground py-4\">\n                        {localization.ALL_PROVIDERS_LINKED || \n                            \"All available providers are already linked to your account.\"}\n                    </p>\n                ) : (\n                    availableProviders.map((provider) => (\n                        <Button\n                            key={provider.id}\n                            variant=\"outline\"\n                            onClick={() => handleLinkProvider(provider.id)}\n                            disabled={linkingProvider !== null}\n                            className={cn(\n                                \"w-full justify-start\",\n                                linkingProvider === provider.id && \"opacity-70\"\n                            )}\n                        >\n                            {linkingProvider === provider.id ? (\n                                <>\n                                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                    {localization.LINKING || \"Linking...\"}\n                                </>\n                            ) : (\n                                <>\n                                    <Link2 className=\"mr-2 h-4 w-4\" />\n                                    {localization.LINK_WITH || \"Link with\"} {provider.name}\n                                </>\n                            )}\n                        </Button>\n                    ))\n                )}\n            </CardContent>\n        </SettingsCard>\n    )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { buttonVariants } from \"./button\"\n\nfunction AlertDialog({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n  return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n  return (\n    <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n  )\n}\n\nfunction AlertDialogPortal({\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n  return (\n    <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n  )\n}\n\nfunction AlertDialogOverlay({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>) {\n  return (\n    <AlertDialogPrimitive.Overlay\n      data-slot=\"alert-dialog-overlay\"\n      className={cn(\n        \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content>) {\n  return (\n    <AlertDialogPortal>\n      <AlertDialogOverlay />\n      <AlertDialogPrimitive.Content\n        data-slot=\"alert-dialog-content\"\n        className={cn(\n          \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg\",\n          className\n        )}\n        {...props}\n      />\n    </AlertDialogPortal>\n  )\n}\n\nfunction AlertDialogHeader({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-header\"\n      className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogFooter({\n  className,\n  ...props\n}: React.ComponentProps<\"div\">) {\n  return (\n    <div\n      data-slot=\"alert-dialog-footer\"\n      className={cn(\n        \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogTitle({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n  return (\n    <AlertDialogPrimitive.Title\n      data-slot=\"alert-dialog-title\"\n      className={cn(\"text-lg font-semibold\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogDescription({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n  return (\n    <AlertDialogPrimitive.Description\n      data-slot=\"alert-dialog-description\"\n      className={cn(\"text-muted-foreground text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogAction({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n  return (\n    <AlertDialogPrimitive.Action\n      className={cn(buttonVariants(), className)}\n      {...props}\n    />\n  )\n}\n\nfunction AlertDialogCancel({\n  className,\n  ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n  return (\n    <AlertDialogPrimitive.Cancel\n      className={cn(buttonVariants({ variant: \"outline\" }), className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  AlertDialog,\n  AlertDialogPortal,\n  AlertDialogOverlay,\n  AlertDialogTrigger,\n  AlertDialogContent,\n  AlertDialogHeader,\n  AlertDialogFooter,\n  AlertDialogTitle,\n  AlertDialogDescription,\n  AlertDialogAction,\n  AlertDialogCancel,\n}\n","/**\n * unlink-account-card\n * Unlink OAuth providers from account\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { Loader2, Unlink } from \"lucide-react\"\nimport { useContext, useState } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport { CardContent } from \"@/components/ui/card\"\nimport type { SettingsCardProps } from \"@/components/settings/shared/settings-card\"\nimport { SettingsCard } from \"@/components/settings/shared/settings-card\"\nimport {\n    AlertDialog,\n    AlertDialogAction,\n    AlertDialogCancel,\n    AlertDialogContent,\n    AlertDialogDescription,\n    AlertDialogFooter,\n    AlertDialogHeader,\n    AlertDialogTitle,\n    AlertDialogTrigger\n} from \"@/components/ui/alert-dialog\"\n\nexport interface UnlinkAccountCardProps extends Omit<SettingsCardProps, 'action'> {\n    onUnlinkSuccess?: (providerId: string) => void\n    onUnlinkError?: (providerId: string, error: any) => void\n    minimumLinkedAccounts?: number\n}\n\nexport function UnlinkAccountCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    onUnlinkSuccess,\n    onUnlinkError,\n    minimumLinkedAccounts = 1\n}: UnlinkAccountCardProps) {\n    const {\n        authClient,\n        mutators,\n        hooks: { useListAccounts },\n        localization: contextLocalization,\n        toast\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp } as any\n\n    const { data: accounts, isPending, refetch } = useListAccounts()\n    const [unlinkingAccountId, setUnlinkingAccountId] = useState<string | null>(null)\n    const [confirmUnlink, setConfirmUnlink] = useState<{ id: string; name: string } | null>(null)\n\n    const handleUnlinkAccount = async (accountId: string, providerId: string) => {\n        setUnlinkingAccountId(accountId)\n        setConfirmUnlink(null)\n\n        try {\n            if (mutators?.unlinkAccount) {\n                await mutators.unlinkAccount({ accountId })\n            }\n\n            toast({\n                variant: \"success\",\n                message: localization.ACCOUNT_UNLINKED || \"Account unlinked successfully\"\n            })\n\n            if (refetch) {\n                await refetch()\n            }\n            onUnlinkSuccess?.(providerId)\n        } catch (err) {\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error: err, localization })\n            })\n            onUnlinkError?.(providerId, err)\n        } finally {\n            setUnlinkingAccountId(null)\n        }\n    }\n\n    const canUnlink = (accounts || []).length > minimumLinkedAccounts\n\n    return (\n        <>\n            <SettingsCard\n                className={className}\n                classNames={classNames}\n                title={localization.UNLINK_ACCOUNT || \"Unlink Account\"}\n                description={localization.UNLINK_ACCOUNT_DESCRIPTION || \"Remove OAuth providers from your account\"}\n                isPending={isPending}\n            >\n                <CardContent className={cn(\"grid gap-3\", classNames?.content)}>\n                    {!accounts || accounts.length === 0 ? (\n                        <p className=\"text-sm text-muted-foreground py-4\">\n                            {localization.NO_LINKED_ACCOUNTS || \n                                \"No linked accounts found.\"}\n                        </p>\n                    ) : (\n                        accounts.map((account: any) => (\n                            <div\n                                key={account.id}\n                                className=\"flex items-center justify-between rounded-lg border p-4\"\n                            >\n                                <div className=\"flex flex-col gap-1\">\n                                    <p className=\"text-sm font-medium\">\n                                        {account.providerId}\n                                    </p>\n                                    {account.email && (\n                                        <p className=\"text-xs text-muted-foreground\">\n                                            {account.email}\n                                        </p>\n                                    )}\n                                </div>\n                                <Button\n                                    variant=\"outline\"\n                                    size=\"sm\"\n                                    onClick={() => setConfirmUnlink({ id: account.id, name: account.providerId })}\n                                    disabled={!canUnlink || unlinkingAccountId === account.id}\n                                >\n                                    {unlinkingAccountId === account.id ? (\n                                        <>\n                                            <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                            {localization.UNLINKING || \"Unlinking...\"}\n                                        </>\n                                    ) : (\n                                        <>\n                                            <Unlink className=\"mr-2 h-4 w-4\" />\n                                            {localization.UNLINK || \"Unlink\"}\n                                        </>\n                                    )}\n                                </Button>\n                            </div>\n                        ))\n                    )}\n                    {!canUnlink && accounts && accounts.length > 0 && (\n                        <p className=\"text-xs text-muted-foreground\">\n                            {localization.MINIMUM_ACCOUNTS_WARNING || \n                                \"You must keep at least one account linked.\"}\n                        </p>\n                    )}\n                </CardContent>\n            </SettingsCard>\n\n            <AlertDialog open={confirmUnlink !== null} onOpenChange={(open) => !open && setConfirmUnlink(null)}>\n                <AlertDialogContent>\n                    <AlertDialogHeader>\n                        <AlertDialogTitle>\n                            {localization.CONFIRM_UNLINK || \"Confirm Unlink\"}\n                        </AlertDialogTitle>\n                        <AlertDialogDescription>\n                            {localization.CONFIRM_UNLINK_DESCRIPTION || \n                                `Are you sure you want to unlink ${confirmUnlink?.name}? You won't be able to sign in with this provider anymore.`}\n                        </AlertDialogDescription>\n                    </AlertDialogHeader>\n                    <AlertDialogFooter>\n                        <AlertDialogCancel>\n                            {localization.CANCEL || \"Cancel\"}\n                        </AlertDialogCancel>\n                        <AlertDialogAction\n                            onClick={() => confirmUnlink && handleUnlinkAccount(confirmUnlink.id, confirmUnlink.name)}\n                        >\n                            {localization.UNLINK || \"Unlink\"}\n                        </AlertDialogAction>\n                    </AlertDialogFooter>\n                </AlertDialogContent>\n            </AlertDialog>\n        </>\n    )\n}\n","/**\n * providers-card\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport type { Account } from \"better-auth\"\nimport { useContext } from \"react\"\nimport { AuthUIContext } from \"../../../lib/auth-ui-provider\"\nimport { socialProviders } from \"../../../lib/social-providers\"\nimport { cn } from \"../../../lib/utils\"\nimport type { AuthLocalization } from \"../../../localization/auth-localization\"\nimport type { Refetch } from \"../../../types/refetch\"\nimport { CardContent } from \"../../ui/card\"\nimport type { SettingsCardClassNames } from \"../shared/settings-card\"\nimport { SettingsCard } from \"../shared/settings-card\"\nimport { SettingsCellSkeleton } from \"../skeletons/settings-cell-skeleton\"\n// import { ProviderCell } from \"./provider-cell\" // Component not extracted\n\nexport interface ProvidersCardProps {\n    className?: string\n    classNames?: SettingsCardClassNames\n    accounts?: Account[] | null\n    isPending?: boolean\n    localization?: Partial<AuthLocalization>\n    skipHook?: boolean\n    refetch?: Refetch\n}\n\nexport function ProvidersCard({\n    className,\n    classNames,\n    accounts,\n    isPending,\n    localization,\n    skipHook,\n    refetch\n}: ProvidersCardProps) {\n    const {\n        hooks: { useListAccounts },\n        localization: contextLocalization,\n        social,\n        genericOAuth\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    if (!skipHook) {\n        const result = useListAccounts()\n        accounts = result.data\n        isPending = result.isPending\n        refetch = result.refetch\n    }\n\n    return (\n        <SettingsCard\n            className={className}\n            classNames={classNames}\n            title={localization.PROVIDERS}\n            description={localization.PROVIDERS_DESCRIPTION}\n            isPending={isPending}\n        >\n            <CardContent className={cn(\"grid gap-4\", classNames?.content)}>\n                {isPending ? (\n                    social?.providers?.map((provider) => (\n                        <SettingsCellSkeleton\n                            key={provider}\n                            classNames={classNames}\n                        />\n                    ))\n                ) : (\n                    <>\n                        {social?.providers?.map((provider) => {\n                            const socialProvider = socialProviders.find(\n                                (socialProvider) =>\n                                    socialProvider.provider === provider\n                            )\n\n                            if (!socialProvider) return null\n\n                            return (\n                                <ProviderCell\n                                    key={provider}\n                                    classNames={classNames}\n                                    account={accounts?.find(\n                                        (acc) => acc.providerId === provider\n                                    )}\n                                    provider={socialProvider}\n                                    refetch={refetch}\n                                />\n                            )\n                        })}\n\n                        {genericOAuth?.providers?.map((provider) => (\n                            <ProviderCell\n                                key={provider.provider}\n                                classNames={classNames}\n                                account={accounts?.find(\n                                    (acc) =>\n                                        acc.providerId === provider.provider\n                                )}\n                                provider={provider}\n                                refetch={refetch}\n                                other\n                            />\n                        ))}\n                    </>\n                )}\n            </CardContent>\n        </SettingsCard>\n    )\n}\n","/**\n * security-settings-cards\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { useContext } from \"react\"\nimport { AuthUIContext } from \"../../lib/auth-ui-provider\"\nimport { cn } from \"../../lib/utils\"\nimport type { AuthLocalization } from \"../../localization/auth-localization\"\nimport { DeleteAccountCard } from \"../account\"\nimport { PasskeysCard, ChangePasswordCard, SessionsCard, TwoFactorCard } from \"../security\"\nimport { SettingsCardClassNames } from \"./shared/settings-card\"\nimport { ProvidersCard } from \"./providers/providers-card\"\n\nexport function SecuritySettingsCards({\n    className,\n    classNames,\n    localization\n}: {\n    className?: string\n    classNames?: {\n        card?: SettingsCardClassNames\n        cards?: string\n    }\n    localization?: Partial<AuthLocalization>\n}) {\n    const {\n        credentials,\n        deleteUser,\n        hooks,\n        localization: contextLocalization,\n        passkey,\n        social,\n        genericOAuth,\n        twoFactor\n    } = useContext(AuthUIContext)\n\n    localization = { ...contextLocalization, ...localization }\n\n    const { useListAccounts } = hooks\n\n    const {\n        data: accounts,\n        isPending: accountsPending,\n        refetch: refetchAccounts\n    } = useListAccounts()\n\n    const credentialsLinked = accounts?.some(\n        (acc) => acc.providerId === \"credential\"\n    )\n\n    return (\n        <div\n            className={cn(\n                \"flex w-full flex-col gap-4 md:gap-6\",\n                className,\n                classNames?.cards\n            )}\n        >\n            {credentials && (\n                <ChangePasswordCard\n                    accounts={accounts}\n                    classNames={classNames?.card}\n                    isPending={accountsPending}\n                    localization={localization}\n                    skipHook\n                />\n            )}\n\n            {(social?.providers?.length || genericOAuth?.providers?.length) && (\n                <ProvidersCard\n                    accounts={accounts}\n                    classNames={classNames?.card}\n                    isPending={accountsPending}\n                    localization={localization}\n                    refetch={refetchAccounts}\n                    skipHook\n                />\n            )}\n\n            {twoFactor && credentialsLinked && (\n                <TwoFactorCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {passkey && (\n                <PasskeysCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            <SessionsCard\n                classNames={classNames?.card}\n                localization={localization}\n            />\n\n            {deleteUser && (\n                <DeleteAccountCard\n                    accounts={accounts}\n                    classNames={classNames?.card}\n                    isPending={accountsPending}\n                    localization={localization}\n                    skipHook\n                />\n            )}\n        </div>\n    )\n}\n","/**\n * account-view\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport { MenuIcon } from \"lucide-react\"\nimport { useContext, useMemo } from \"react\"\nimport { useAuthenticate } from \"@/hooks/use-authenticate\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getViewByPath } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { AccountViewPath } from \"@/lib/view-paths\"\nimport { Button } from \"@/components/ui/button\"\nimport { OrganizationsCard } from \"@/components/organization/cards/organizations-card\"\nimport { UserInvitationsCard } from \"@/components/organization/cards/user-invitations-card\"\nimport { AccountSettingsCards } from \"@/components/settings/account-settings-cards\"\nimport { ApiKeysCard } from \"@/components/apiKey\"\nimport { SecuritySettingsCards } from \"@/components/settings/security-settings-cards\"\nimport type { SettingsCardClassNames } from \"@/components/settings/shared/settings-card\"\nimport { Drawer, DrawerContent, DrawerHeader, DrawerTitle, DrawerTrigger } from \"@/components/ui/drawer\"\nimport { Label } from \"@/components/ui/label\"\n\n\n\nexport interface AccountViewProps {\n    className?: string\n    classNames?: {\n        base?: string\n        cards?: string\n        drawer?: { menuItem?: string }\n        sidebar?: { base?: string; button?: string; buttonActive?: string }\n        card?: SettingsCardClassNames\n    }\n    localization?: AuthLocalization\n    path?: string\n    pathname?: string\n    view?: AccountViewPath\n    hideNav?: boolean\n}\n\nexport function AccountView({\n    className,\n    classNames,\n    localization: localizationProp,\n    path: pathProp,\n    pathname,\n    view: viewProp,\n    hideNav\n}: AccountViewProps) {\n    const {\n        apiKey,\n        localization: contextLocalization,\n        organization,\n        account: accountOptions,\n        Link\n    } = useContext(AuthUIContext)\n\n    if (!accountOptions) {\n        return null\n    }\n\n    useAuthenticate()\n\n    const localization = useMemo(\n        () => ({ ...contextLocalization, ...localizationProp }),\n        [contextLocalization, localizationProp]\n    )\n\n    const path = pathProp ?? pathname?.split(\"/\").pop()\n\n    const view =\n        viewProp || getViewByPath(accountOptions.viewPaths, path!) || \"SETTINGS\"\n\n    const navItems: {\n        view: AccountViewPath\n        label: string\n    }[] = [\n        { view: \"SETTINGS\", label: localization.ACCOUNT },\n        { view: \"SECURITY\", label: localization.SECURITY }\n    ]\n\n    if (apiKey) {\n        navItems.push({\n            view: \"API_KEYS\",\n            label: localization.API_KEYS\n        })\n    }\n\n    if (organization) {\n        navItems.push({\n            view: \"ORGANIZATIONS\",\n            label: localization.ORGANIZATIONS\n        })\n    }\n\n    return (\n        <div\n            className={cn(\n                \"flex w-full grow flex-col gap-4 md:flex-row md:gap-12\",\n                className,\n                classNames?.base\n            )}\n        >\n            {!hideNav && (\n                <div className=\"flex justify-between gap-2 md:hidden\">\n                    <Label className=\"font-semibold text-base\">\n                        {navItems.find((i) => i.view === view)?.label}\n                    </Label>\n\n                    <Drawer>\n                        <DrawerTrigger asChild>\n                            <Button variant=\"outline\">\n                                <MenuIcon />\n                            </Button>\n                        </DrawerTrigger>\n                        <DrawerContent>\n                            <DrawerHeader>\n                                <DrawerTitle className=\"hidden\">\n                                    {localization.SETTINGS}\n                                </DrawerTitle>\n                            </DrawerHeader>\n                            <div className=\"flex flex-col px-4 pb-4\">\n                                {navItems.map((item) => (\n                                    <Link\n                                        key={item.view}\n                                        href={`${accountOptions?.basePath}/${accountOptions?.viewPaths[item.view]}`}\n                                    >\n                                        <Button\n                                            size=\"lg\"\n                                            className={cn(\n                                                \"w-full justify-start px-4 transition-none\",\n                                                classNames?.drawer?.menuItem,\n                                                view === item.view\n                                                    ? \"font-semibold\"\n                                                    : \"text-foreground/70\"\n                                            )}\n                                            variant=\"ghost\"\n                                        >\n                                            {item.label}\n                                        </Button>\n                                    </Link>\n                                ))}\n                            </div>\n                        </DrawerContent>\n                    </Drawer>\n                </div>\n            )}\n\n            {!hideNav && (\n                <div className=\"hidden md:block\">\n                    <div\n                        className={cn(\n                            \"flex w-48 flex-col gap-1 lg:w-60\",\n                            classNames?.sidebar?.base\n                        )}\n                    >\n                        {navItems.map((item) => (\n                            <Link\n                                key={item.view}\n                                href={`${accountOptions?.basePath}/${accountOptions?.viewPaths[item.view]}`}\n                            >\n                                <Button\n                                    size=\"lg\"\n                                    className={cn(\n                                        \"w-full justify-start px-4 transition-none\",\n                                        classNames?.sidebar?.button,\n                                        view === item.view\n                                            ? \"font-semibold\"\n                                            : \"text-foreground/70\",\n                                        view === item.view &&\n                                            classNames?.sidebar?.buttonActive\n                                    )}\n                                    variant=\"ghost\"\n                                >\n                                    {item.label}\n                                </Button>\n                            </Link>\n                        ))}\n                    </div>\n                </div>\n            )}\n\n            {view === \"SETTINGS\" && (\n                <AccountSettingsCards\n                    classNames={classNames}\n                    localization={localization}\n                />\n            )}\n\n            {view === \"SECURITY\" && (\n                <SecuritySettingsCards\n                    classNames={classNames}\n                    localization={localization}\n                />\n            )}\n\n            {view === \"API_KEYS\" && (\n                <ApiKeysCard\n                    classNames={classNames?.card}\n                    localization={localization}\n                />\n            )}\n\n            {view === \"ORGANIZATIONS\" && organization && (\n                <div className=\"grid w-full gap-4 md:gap-6\">\n                    <OrganizationsCard\n                        classNames={classNames?.card}\n                        localization={localization}\n                    />\n\n                    <UserInvitationsCard\n                        classNames={classNames?.card}\n                        localization={localization}\n                    />\n                </div>\n            )}\n        </div>\n    )\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n  return (\n    <div\n      data-slot=\"table-container\"\n      className=\"relative w-full overflow-x-auto\"\n    >\n      <table\n        data-slot=\"table\"\n        className={cn(\"w-full caption-bottom text-sm\", className)}\n        {...props}\n      />\n    </div>\n  )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n  return (\n    <thead\n      data-slot=\"table-header\"\n      className={cn(\"[&_tr]:border-b\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n  return (\n    <tbody\n      data-slot=\"table-body\"\n      className={cn(\"[&_tr:last-child]:border-0\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n  return (\n    <tfoot\n      data-slot=\"table-footer\"\n      className={cn(\n        \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n  return (\n    <tr\n      data-slot=\"table-row\"\n      className={cn(\n        \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n  return (\n    <th\n      data-slot=\"table-head\"\n      className={cn(\n        \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n  return (\n    <td\n      data-slot=\"table-cell\"\n      className={cn(\n        \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TableCaption({\n  className,\n  ...props\n}: React.ComponentProps<\"caption\">) {\n  return (\n    <caption\n      data-slot=\"table-caption\"\n      className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n      {...props}\n    />\n  )\n}\n\nexport {\n  Table,\n  TableHeader,\n  TableBody,\n  TableFooter,\n  TableHead,\n  TableRow,\n  TableCell,\n  TableCaption,\n}\n","\"use client\";\n\nimport { useState, useEffect, useContext } from \"react\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\nimport {\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableHeader,\n  TableRow,\n} from \"@/components/ui/table\";\nimport { Input } from \"@/components/ui/input\";\nimport { Button } from \"@/components/ui/button\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\";\nimport { Badge } from \"@/components/ui/badge\";\nimport {\n  DropdownMenu,\n  DropdownMenuContent,\n  DropdownMenuItem,\n  DropdownMenuSeparator,\n  DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\";\nimport {\n  AlertDialog,\n  AlertDialogAction,\n  AlertDialogCancel,\n  AlertDialogContent,\n  AlertDialogDescription,\n  AlertDialogFooter,\n  AlertDialogHeader,\n  AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\";\nimport { MoreHorizontal, Search, UserX, UserCheck, Eye, Trash2 } from \"lucide-react\";\nimport { toast } from \"sonner\";\n\nexport interface User {\n  id: string;\n  email: string;\n  name: string;\n  role?: string | string[];\n  banned?: boolean;\n  banReason?: string;\n  banExpires?: Date | null;\n  createdAt: Date;\n  emailVerified: boolean;\n}\n\ninterface ListUsersResponse {\n  users: User[];\n  total: number;\n  limit?: number;\n  offset?: number;\n}\n\nexport interface UserManagementTableProps {\n  /**\n   * Callback fired when a user action is successful\n   */\n  onSuccess?: () => void;\n  /**\n   * Callback fired when an error occurs\n   */\n  onError?: (error: Error) => void;\n  /**\n   * Custom CSS class\n   */\n  className?: string;\n  /**\n   * Custom localization\n   */\n  localization?: Partial<UserManagementLocalization>;\n}\n\nexport interface UserManagementLocalization {\n  // Table\n  userManagement: string;\n  userManagementDescription: string;\n  \n  // Search\n  searchPlaceholder: string;\n  searchByEmail: string;\n  searchByName: string;\n  \n  // Table headers\n  email: string;\n  name: string;\n  role: string;\n  status: string;\n  createdAt: string;\n  actions: string;\n  \n  // Status badges\n  active: string;\n  banned: string;\n  verified: string;\n  unverified: string;\n  \n  // Actions\n  viewDetails: string;\n  banUser: string;\n  unbanUser: string;\n  impersonate: string;\n  deleteUser: string;\n  \n  // Pagination\n  showing: string;\n  of: string;\n  users: string;\n  previous: string;\n  next: string;\n  \n  // Dialogs\n  banUserTitle: string;\n  banUserDescription: string;\n  unbanUserTitle: string;\n  unbanUserDescription: string;\n  deleteUserTitle: string;\n  deleteUserDescription: string;\n  cancel: string;\n  confirm: string;\n  \n  // Messages\n  userBanned: string;\n  userUnbanned: string;\n  userDeleted: string;\n  impersonationStarted: string;\n  errorLoadingUsers: string;\n  errorBanningUser: string;\n  errorUnbanningUser: string;\n  errorDeletingUser: string;\n  errorImpersonating: string;\n  \n  // Empty state\n  noUsers: string;\n  noUsersDescription: string;\n}\n\nconst defaultLocalization: UserManagementLocalization = {\n  // Table\n  userManagement: \"User Management\",\n  userManagementDescription: \"Manage users, roles, and permissions\",\n  \n  // Search\n  searchPlaceholder: \"Search users...\",\n  searchByEmail: \"Email\",\n  searchByName: \"Name\",\n  \n  // Table headers\n  email: \"Email\",\n  name: \"Name\",\n  role: \"Role\",\n  status: \"Status\",\n  createdAt: \"Created\",\n  actions: \"Actions\",\n  \n  // Status badges\n  active: \"Active\",\n  banned: \"Banned\",\n  verified: \"Verified\",\n  unverified: \"Unverified\",\n  \n  // Actions\n  viewDetails: \"View Details\",\n  banUser: \"Ban User\",\n  unbanUser: \"Unban User\",\n  impersonate: \"Impersonate\",\n  deleteUser: \"Delete User\",\n  \n  // Pagination\n  showing: \"Showing\",\n  of: \"of\",\n  users: \"users\",\n  previous: \"Previous\",\n  next: \"Next\",\n  \n  // Dialogs\n  banUserTitle: \"Ban User?\",\n  banUserDescription: \"This will prevent the user from signing in and revoke all their sessions.\",\n  unbanUserTitle: \"Unban User?\",\n  unbanUserDescription: \"This will allow the user to sign in again.\",\n  deleteUserTitle: \"Delete User?\",\n  deleteUserDescription: \"This will permanently delete the user and all their data. This action cannot be undone.\",\n  cancel: \"Cancel\",\n  confirm: \"Confirm\",\n  \n  // Messages\n  userBanned: \"User banned successfully\",\n  userUnbanned: \"User unbanned successfully\",\n  userDeleted: \"User deleted successfully\",\n  impersonationStarted: \"Now impersonating user\",\n  errorLoadingUsers: \"Failed to load users\",\n  errorBanningUser: \"Failed to ban user\",\n  errorUnbanningUser: \"Failed to unban user\",\n  errorDeletingUser: \"Failed to delete user\",\n  errorImpersonating: \"Failed to impersonate user\",\n  \n  // Empty state\n  noUsers: \"No users found\",\n  noUsersDescription: \"No users match your search criteria\",\n};\n\nexport function UserManagementTable({\n  onSuccess,\n  onError,\n  className,\n  localization: customLocalization,\n}: UserManagementTableProps) {\n  const context = useContext(AuthUIContext);\n  if (!context) {\n    throw new Error(\"UserManagementTable must be used within AuthUIProvider\");\n  }\n  const { authClient } = context;\n  const localization = { ...defaultLocalization, ...customLocalization };\n\n  // State\n  const [users, setUsers] = useState<User[]>([]);\n  const [total, setTotal] = useState(0);\n  const [loading, setLoading] = useState(true);\n  const [searchValue, setSearchValue] = useState(\"\");\n  const [searchField, setSearchField] = useState<\"email\" | \"name\">(\"email\");\n  const [currentPage, setCurrentPage] = useState(1);\n  const [pageSize] = useState(10);\n  \n  // Action states\n  const [selectedUser, setSelectedUser] = useState<User | null>(null);\n  const [banDialogOpen, setBanDialogOpen] = useState(false);\n  const [unbanDialogOpen, setUnbanDialogOpen] = useState(false);\n  const [deleteDialogOpen, setDeleteDialogOpen] = useState(false);\n  const [actionLoading, setActionLoading] = useState(false);\n\n  // Fetch users\n  const fetchUsers = async () => {\n    if (!authClient) return;\n    \n    setLoading(true);\n    try {\n      if (!authClient.admin) {\n        throw new Error(\"Admin plugin not configured\");\n      }\n      \n      const { data, error } = await authClient.admin.listUsers({\n        searchValue: searchValue || undefined,\n        searchField,\n        searchOperator: \"contains\",\n        limit: pageSize,\n        offset: (currentPage - 1) * pageSize,\n        sortBy: \"createdAt\",\n        sortDirection: \"desc\",\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorLoadingUsers);\n      }\n\n      if (data) {\n        const response = data as ListUsersResponse;\n        setUsers(response.users || []);\n        setTotal(response.total || 0);\n      }\n    } catch (error) {\n      console.error(\"Error fetching users:\", error);\n      toast.error(localization.errorLoadingUsers);\n      onError?.(error as Error);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  // Load users on mount and when dependencies change\n  useEffect(() => {\n    fetchUsers();\n  }, [currentPage, searchValue, searchField]);\n\n  // Ban user\n  const handleBanUser = async () => {\n    if (!selectedUser || !authClient?.admin) return;\n    \n    setActionLoading(true);\n    try {\n      const { error } = await authClient.admin.banUser({\n        userId: selectedUser.id,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorBanningUser);\n      }\n\n      toast.success(localization.userBanned);\n      setBanDialogOpen(false);\n      setSelectedUser(null);\n      onSuccess?.();\n      fetchUsers(); // Refresh list\n    } catch (error) {\n      console.error(\"Error banning user:\", error);\n      toast.error(localization.errorBanningUser);\n      onError?.(error as Error);\n    } finally {\n      setActionLoading(false);\n    }\n  };\n\n  // Unban user\n  const handleUnbanUser = async () => {\n    if (!selectedUser || !authClient?.admin) return;\n    \n    setActionLoading(true);\n    try {\n      const { error } = await authClient.admin.unbanUser({\n        userId: selectedUser.id,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorUnbanningUser);\n      }\n\n      toast.success(localization.userUnbanned);\n      setUnbanDialogOpen(false);\n      setSelectedUser(null);\n      onSuccess?.();\n      fetchUsers(); // Refresh list\n    } catch (error) {\n      console.error(\"Error unbanning user:\", error);\n      toast.error(localization.errorUnbanningUser);\n      onError?.(error as Error);\n    } finally {\n      setActionLoading(false);\n    }\n  };\n\n  // Delete user\n  const handleDeleteUser = async () => {\n    if (!selectedUser || !authClient?.admin) return;\n    \n    setActionLoading(true);\n    try {\n      const { error } = await authClient.admin.removeUser({\n        userId: selectedUser.id,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorDeletingUser);\n      }\n\n      toast.success(localization.userDeleted);\n      setDeleteDialogOpen(false);\n      setSelectedUser(null);\n      onSuccess?.();\n      fetchUsers(); // Refresh list\n    } catch (error) {\n      console.error(\"Error deleting user:\", error);\n      toast.error(localization.errorDeletingUser);\n      onError?.(error as Error);\n    } finally {\n      setActionLoading(false);\n    }\n  };\n\n  // Impersonate user\n  const handleImpersonate = async (user: User) => {\n    if (!authClient?.admin) return;\n    \n    try {\n      const { error } = await authClient.admin.impersonateUser({\n        userId: user.id,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorImpersonating);\n      }\n\n      toast.success(localization.impersonationStarted);\n      onSuccess?.();\n      // Reload page to update session\n      window.location.reload();\n    } catch (error) {\n      console.error(\"Error impersonating user:\", error);\n      toast.error(localization.errorImpersonating);\n      onError?.(error as Error);\n    }\n  };\n\n  // Pagination\n  const totalPages = Math.ceil(total / pageSize);\n  const startIndex = (currentPage - 1) * pageSize + 1;\n  const endIndex = Math.min(currentPage * pageSize, total);\n\n  // Format date\n  const formatDate = (date: Date) => {\n    return new Date(date).toLocaleDateString('en-US', {\n      year: 'numeric',\n      month: 'short',\n      day: 'numeric'\n    });\n  };\n\n  // Get role display\n  const getRoleDisplay = (role?: string | string[]) => {\n    if (!role) return \"user\";\n    return Array.isArray(role) ? role.join(\", \") : role;\n  };\n\n  return (\n    <div className={className}>\n      {/* Header */}\n      <div className=\"space-y-4\">\n        <div>\n          <h3 className=\"text-lg font-semibold\">{localization.userManagement}</h3>\n          <p className=\"text-sm text-muted-foreground mt-1\">\n            {localization.userManagementDescription}\n          </p>\n        </div>\n\n        {/* Search and filters */}\n        <div className=\"flex items-center gap-3\">\n          <div className=\"relative flex-1 max-w-md\">\n            <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground pointer-events-none\" />\n            <Input\n              placeholder={localization.searchPlaceholder}\n              value={searchValue}\n              onChange={(e) => {\n                setSearchValue(e.target.value);\n                setCurrentPage(1); // Reset to first page on search\n              }}\n              className=\"pl-10\"\n            />\n          </div>\n          <Select\n            value={searchField}\n            onValueChange={(value: \"email\" | \"name\") => {\n              setSearchField(value);\n              setCurrentPage(1);\n            }}\n          >\n            <SelectTrigger className=\"w-[160px]\">\n              <SelectValue />\n            </SelectTrigger>\n            <SelectContent>\n              <SelectItem value=\"email\">{localization.searchByEmail}</SelectItem>\n              <SelectItem value=\"name\">{localization.searchByName}</SelectItem>\n            </SelectContent>\n          </Select>\n        </div>\n      </div>\n\n      {/* Table */}\n      <div className=\"mt-4 rounded-lg border overflow-hidden\">\n        <Table>\n          <TableHeader>\n            <TableRow className=\"bg-muted/50\">\n              <TableHead className=\"font-semibold\">{localization.email}</TableHead>\n              <TableHead className=\"font-semibold\">{localization.name}</TableHead>\n              <TableHead className=\"font-semibold\">{localization.role}</TableHead>\n              <TableHead className=\"font-semibold\">{localization.status}</TableHead>\n              <TableHead className=\"font-semibold\">{localization.createdAt}</TableHead>\n              <TableHead className=\"text-right font-semibold\">{localization.actions}</TableHead>\n            </TableRow>\n          </TableHeader>\n          <TableBody>\n            {loading ? (\n              <TableRow>\n                <TableCell colSpan={6} className=\"h-32 text-center\">\n                  <div className=\"flex items-center justify-center\">\n                    <div className=\"text-muted-foreground\">Loading...</div>\n                  </div>\n                </TableCell>\n              </TableRow>\n            ) : users.length === 0 ? (\n              <TableRow>\n                <TableCell colSpan={6} className=\"h-32 text-center\">\n                  <div className=\"flex flex-col items-center justify-center text-muted-foreground\">\n                    <p className=\"font-medium text-base\">{localization.noUsers}</p>\n                    <p className=\"text-sm mt-1\">{localization.noUsersDescription}</p>\n                  </div>\n                </TableCell>\n              </TableRow>\n            ) : (\n              users.map((user) => (\n                <TableRow key={user.id} className=\"hover:bg-muted/50\">\n                  <TableCell className=\"font-medium\">{user.email}</TableCell>\n                  <TableCell>{user.name}</TableCell>\n                  <TableCell>\n                    <Badge variant=\"secondary\" className=\"font-medium\">\n                      {getRoleDisplay(user.role)}\n                    </Badge>\n                  </TableCell>\n                  <TableCell>\n                    <div className=\"flex flex-wrap gap-1.5\">\n                      {user.banned ? (\n                        <Badge variant=\"destructive\" className=\"font-medium\">\n                          {localization.banned}\n                        </Badge>\n                      ) : (\n                        <Badge variant=\"default\" className=\"font-medium\">\n                          {localization.active}\n                        </Badge>\n                      )}\n                      {user.emailVerified ? (\n                        <Badge variant=\"outline\" className=\"font-medium\">\n                          {localization.verified}\n                        </Badge>\n                      ) : (\n                        <Badge variant=\"outline\" className=\"font-medium text-muted-foreground\">\n                          {localization.unverified}\n                        </Badge>\n                      )}\n                    </div>\n                  </TableCell>\n                  <TableCell className=\"text-muted-foreground text-sm\">\n                    {formatDate(user.createdAt)}\n                  </TableCell>\n                  <TableCell className=\"text-right\">\n                    <DropdownMenu>\n                      <DropdownMenuTrigger asChild>\n                        <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n                          <MoreHorizontal className=\"h-4 w-4\" />\n                          <span className=\"sr-only\">{localization.actions}</span>\n                        </Button>\n                      </DropdownMenuTrigger>\n                      <DropdownMenuContent align=\"end\">\n                        <DropdownMenuItem onClick={() => handleImpersonate(user)}>\n                          <Eye className=\"mr-2 h-4 w-4\" />\n                          {localization.impersonate}\n                        </DropdownMenuItem>\n                        <DropdownMenuSeparator />\n                        {user.banned ? (\n                          <DropdownMenuItem\n                            onClick={() => {\n                              setSelectedUser(user);\n                              setUnbanDialogOpen(true);\n                            }}\n                          >\n                            <UserCheck className=\"mr-2 h-4 w-4\" />\n                            {localization.unbanUser}\n                          </DropdownMenuItem>\n                        ) : (\n                          <DropdownMenuItem\n                            onClick={() => {\n                              setSelectedUser(user);\n                              setBanDialogOpen(true);\n                            }}\n                          >\n                            <UserX className=\"mr-2 h-4 w-4\" />\n                            {localization.banUser}\n                          </DropdownMenuItem>\n                        )}\n                        <DropdownMenuSeparator />\n                        <DropdownMenuItem\n                          onClick={() => {\n                            setSelectedUser(user);\n                            setDeleteDialogOpen(true);\n                          }}\n                          className=\"text-destructive focus:text-destructive\"\n                        >\n                          <Trash2 className=\"mr-2 h-4 w-4\" />\n                          {localization.deleteUser}\n                        </DropdownMenuItem>\n                      </DropdownMenuContent>\n                    </DropdownMenu>\n                  </TableCell>\n                </TableRow>\n              ))\n            )}\n          </TableBody>\n        </Table>\n      </div>\n\n      {/* Pagination */}\n      {!loading && users.length > 0 && (\n        <div className=\"flex items-center justify-between mt-4\">\n          <p className=\"text-sm text-muted-foreground\">\n            {localization.showing} <span className=\"font-medium text-foreground\">{startIndex}-{endIndex}</span> {localization.of} <span className=\"font-medium text-foreground\">{total}</span>{\" \"}\n            {localization.users}\n          </p>\n          <div className=\"flex items-center gap-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => setCurrentPage((p) => Math.max(1, p - 1))}\n              disabled={currentPage === 1}\n            >\n              {localization.previous}\n            </Button>\n            <div className=\"flex items-center gap-1 px-2\">\n              <span className=\"text-sm font-medium\">{currentPage}</span>\n              <span className=\"text-sm text-muted-foreground\">/</span>\n              <span className=\"text-sm text-muted-foreground\">{totalPages}</span>\n            </div>\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              onClick={() => setCurrentPage((p) => Math.min(totalPages, p + 1))}\n              disabled={currentPage === totalPages}\n            >\n              {localization.next}\n            </Button>\n          </div>\n        </div>\n      )}\n\n      {/* Ban User Dialog */}\n      <AlertDialog open={banDialogOpen} onOpenChange={setBanDialogOpen}>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>{localization.banUserTitle}</AlertDialogTitle>\n            <AlertDialogDescription>\n              {localization.banUserDescription}\n              {selectedUser && (\n                <div className=\"mt-2 p-2 bg-muted rounded-md\">\n                  <p className=\"font-medium\">{selectedUser.email}</p>\n                </div>\n              )}\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel disabled={actionLoading}>\n              {localization.cancel}\n            </AlertDialogCancel>\n            <AlertDialogAction\n              onClick={handleBanUser}\n              disabled={actionLoading}\n              className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n            >\n              {actionLoading ? \"Banning...\" : localization.confirm}\n            </AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n\n      {/* Unban User Dialog */}\n      <AlertDialog open={unbanDialogOpen} onOpenChange={setUnbanDialogOpen}>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>{localization.unbanUserTitle}</AlertDialogTitle>\n            <AlertDialogDescription>\n              {localization.unbanUserDescription}\n              {selectedUser && (\n                <div className=\"mt-2 p-2 bg-muted rounded-md\">\n                  <p className=\"font-medium\">{selectedUser.email}</p>\n                </div>\n              )}\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel disabled={actionLoading}>\n              {localization.cancel}\n            </AlertDialogCancel>\n            <AlertDialogAction onClick={handleUnbanUser} disabled={actionLoading}>\n              {actionLoading ? \"Unbanning...\" : localization.confirm}\n            </AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n\n      {/* Delete User Dialog */}\n      <AlertDialog open={deleteDialogOpen} onOpenChange={setDeleteDialogOpen}>\n        <AlertDialogContent>\n          <AlertDialogHeader>\n            <AlertDialogTitle>{localization.deleteUserTitle}</AlertDialogTitle>\n            <AlertDialogDescription>\n              {localization.deleteUserDescription}\n              {selectedUser && (\n                <div className=\"mt-2 p-2 bg-muted rounded-md\">\n                  <p className=\"font-medium\">{selectedUser.email}</p>\n                </div>\n              )}\n            </AlertDialogDescription>\n          </AlertDialogHeader>\n          <AlertDialogFooter>\n            <AlertDialogCancel disabled={actionLoading}>\n              {localization.cancel}\n            </AlertDialogCancel>\n            <AlertDialogAction\n              onClick={handleDeleteUser}\n              disabled={actionLoading}\n              className=\"bg-destructive text-destructive-foreground hover:bg-destructive/90\"\n            >\n              {actionLoading ? \"Deleting...\" : localization.confirm}\n            </AlertDialogAction>\n          </AlertDialogFooter>\n        </AlertDialogContent>\n      </AlertDialog>\n    </div>\n  );\n}\n","\"use client\";\n\nimport { useState, useContext } from \"react\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Label } from \"@/components/ui/label\";\nimport {\n  Select,\n  SelectContent,\n  SelectItem,\n  SelectTrigger,\n  SelectValue,\n} from \"@/components/ui/select\";\nimport { Input } from \"@/components/ui/input\";\nimport { Textarea } from \"@/components/ui/textarea\";\nimport { UserAvatar } from \"@/components/user\";\nimport { toast } from \"sonner\";\n\n// Localization interface\nexport interface BanUserDialogLocalization {\n  // Dialog\n  title: string;\n  description: string;\n  \n  // Form labels\n  reasonLabel: string;\n  reasonPlaceholder: string;\n  durationLabel: string;\n  customDurationLabel: string;\n  customDurationPlaceholder: string;\n  daysLabel: string;\n  \n  // Duration options\n  permanent: string;\n  oneDay: string;\n  threeDays: string;\n  sevenDays: string;\n  thirtyDays: string;\n  custom: string;\n  \n  // Buttons\n  cancel: string;\n  banUser: string;\n  banning: string;\n  \n  // Messages\n  success: string;\n  errorBanning: string;\n  invalidDuration: string;\n}\n\nconst defaultLocalization: BanUserDialogLocalization = {\n  // Dialog\n  title: \"Ban User\",\n  description: \"Ban this user from accessing the platform. You can specify a reason and duration.\",\n  \n  // Form labels\n  reasonLabel: \"Ban Reason\",\n  reasonPlaceholder: \"Enter the reason for banning this user...\",\n  durationLabel: \"Ban Duration\",\n  customDurationLabel: \"Custom Duration (days)\",\n  customDurationPlaceholder: \"Enter number of days\",\n  daysLabel: \"days\",\n  \n  // Duration options\n  permanent: \"Permanent\",\n  oneDay: \"1 Day\",\n  threeDays: \"3 Days\",\n  sevenDays: \"7 Days\",\n  thirtyDays: \"30 Days\",\n  custom: \"Custom\",\n  \n  // Buttons\n  cancel: \"Cancel\",\n  banUser: \"Ban User\",\n  banning: \"Banning...\",\n  \n  // Messages\n  success: \"User banned successfully\",\n  errorBanning: \"Failed to ban user\",\n  invalidDuration: \"Please enter a valid duration in days\",\n};\n\nexport interface BanUserDialogProps {\n  /**\n   * Whether the dialog is open\n   */\n  open: boolean;\n  \n  /**\n   * Callback when dialog open state changes\n   */\n  onOpenChange: (open: boolean) => void;\n  \n  /**\n   * User to ban\n   */\n  user: {\n    id: string;\n    name?: string;\n    email: string;\n    image?: string;\n  } | null;\n  \n  /**\n   * Callback after successful ban\n   */\n  onSuccess?: () => void;\n  \n  /**\n   * Callback on error\n   */\n  onError?: (error: Error) => void;\n  \n  /**\n   * Custom class name\n   */\n  className?: string;\n  \n  /**\n   * Localization overrides\n   */\n  localization?: Partial<BanUserDialogLocalization>;\n}\n\nexport function BanUserDialog({\n  open,\n  onOpenChange,\n  user,\n  onSuccess,\n  onError,\n  localization: customLocalization,\n}: BanUserDialogProps) {\n  const context = useContext(AuthUIContext);\n  if (!context) {\n    throw new Error(\"BanUserDialog must be used within AuthUIProvider\");\n  }\n  const { authClient } = context;\n  const localization = { ...defaultLocalization, ...customLocalization };\n\n  const [reason, setReason] = useState(\"\");\n  const [durationType, setDurationType] = useState<\"permanent\" | \"1\" | \"3\" | \"7\" | \"30\" | \"custom\">(\"permanent\");\n  const [customDays, setCustomDays] = useState(\"\");\n  const [loading, setLoading] = useState(false);\n\n  const handleBan = async () => {\n    if (!user || !authClient?.admin) return;\n    \n    // Validate custom duration\n    if (durationType === \"custom\") {\n      const days = parseInt(customDays);\n      if (isNaN(days) || days <= 0) {\n        toast.error(localization.invalidDuration);\n        return;\n      }\n    }\n    \n    setLoading(true);\n    try {\n      // Calculate ban expiration in seconds\n      let banExpiresIn: number | undefined;\n      if (durationType !== \"permanent\") {\n        const days = durationType === \"custom\" \n          ? parseInt(customDays) \n          : parseInt(durationType);\n        banExpiresIn = days * 24 * 60 * 60; // Convert days to seconds\n      }\n      \n      const { error } = await authClient.admin.banUser({\n        userId: user.id,\n        banReason: reason || undefined,\n        banExpiresIn,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorBanning);\n      }\n\n      toast.success(localization.success);\n      onSuccess?.();\n      onOpenChange(false);\n      \n      // Reset form\n      setReason(\"\");\n      setDurationType(\"permanent\");\n      setCustomDays(\"\");\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(localization.errorBanning);\n      toast.error(err.message);\n      onError?.(err);\n    } finally {\n      setLoading(false);\n    }\n  };\n\n  const handleClose = () => {\n    if (!loading) {\n      setReason(\"\");\n      setDurationType(\"permanent\");\n      setCustomDays(\"\");\n      onOpenChange(false);\n    }\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={handleClose}>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>{localization.title}</DialogTitle>\n          <DialogDescription>\n            {localization.description}\n          </DialogDescription>\n        </DialogHeader>\n\n        <div className=\"space-y-4 py-4\">\n          {/* User info */}\n          {user && (\n            <div className=\"rounded-lg border p-4 bg-muted/50\">\n              <div className=\"flex items-center gap-3\">\n                <UserAvatar user={user} size=\"default\" />\n                <div>\n                  <div className=\"font-medium\">{user.name || user.email}</div>\n                  {user.name && (\n                    <div className=\"text-sm text-muted-foreground\">{user.email}</div>\n                  )}\n                </div>\n              </div>\n            </div>\n          )}\n\n          {/* Ban reason */}\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"ban-reason\">{localization.reasonLabel}</Label>\n            <Textarea\n              id=\"ban-reason\"\n              placeholder={localization.reasonPlaceholder}\n              value={reason}\n              onChange={(e) => setReason(e.target.value)}\n              disabled={loading}\n              rows={3}\n            />\n          </div>\n\n          {/* Duration selector */}\n          <div className=\"space-y-2\">\n            <Label htmlFor=\"ban-duration\">{localization.durationLabel}</Label>\n            <Select\n              value={durationType}\n              onValueChange={(value: any) => setDurationType(value)}\n              disabled={loading}\n            >\n              <SelectTrigger id=\"ban-duration\">\n                <SelectValue />\n              </SelectTrigger>\n              <SelectContent>\n                <SelectItem value=\"permanent\">{localization.permanent}</SelectItem>\n                <SelectItem value=\"1\">{localization.oneDay}</SelectItem>\n                <SelectItem value=\"3\">{localization.threeDays}</SelectItem>\n                <SelectItem value=\"7\">{localization.sevenDays}</SelectItem>\n                <SelectItem value=\"30\">{localization.thirtyDays}</SelectItem>\n                <SelectItem value=\"custom\">{localization.custom}</SelectItem>\n              </SelectContent>\n            </Select>\n          </div>\n\n          {/* Custom duration input */}\n          {durationType === \"custom\" && (\n            <div className=\"space-y-2\">\n              <Label htmlFor=\"custom-days\">{localization.customDurationLabel}</Label>\n              <div className=\"flex gap-2 items-center\">\n                <Input\n                  id=\"custom-days\"\n                  type=\"number\"\n                  min=\"1\"\n                  placeholder={localization.customDurationPlaceholder}\n                  value={customDays}\n                  onChange={(e) => setCustomDays(e.target.value)}\n                  disabled={loading}\n                />\n                <span className=\"text-sm text-muted-foreground whitespace-nowrap\">\n                  {localization.daysLabel}\n                </span>\n              </div>\n            </div>\n          )}\n        </div>\n\n        <DialogFooter>\n          <Button\n            variant=\"outline\"\n            onClick={handleClose}\n            disabled={loading}\n          >\n            {localization.cancel}\n          </Button>\n          <Button\n            variant=\"destructive\"\n            onClick={handleBan}\n            disabled={loading || !user}\n          >\n            {loading ? localization.banning : localization.banUser}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","\"use client\";\n\nimport { useState, useContext } from \"react\";\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\";\nimport {\n  Dialog,\n  DialogContent,\n  DialogDescription,\n  DialogFooter,\n  DialogHeader,\n  DialogTitle,\n} from \"@/components/ui/dialog\";\nimport { Button } from \"@/components/ui/button\";\nimport { Alert, AlertDescription } from \"@/components/ui/alert\";\nimport { UserAvatar } from \"@/components/user\";\nimport { toast } from \"sonner\";\nimport { AlertTriangle } from \"lucide-react\";\n\n// Localization interface\nexport interface ImpersonateUserDialogLocalization {\n  // Dialog\n  title: string;\n  description: string;\n  \n  // Warning\n  warningTitle: string;\n  warningMessage: string;\n  \n  // Buttons\n  cancel: string;\n  impersonate: string;\n  impersonating: string;\n  \n  // Messages\n  success: string;\n  errorImpersonating: string;\n}\n\nconst defaultLocalization: ImpersonateUserDialogLocalization = {\n  // Dialog\n  title: \"Impersonate User\",\n  description: \"You are about to impersonate this user. All actions will be performed as this user.\",\n  \n  // Warning\n  warningTitle: \"Important\",\n  warningMessage: \"While impersonating, you will have full access to this user's account. Use this feature responsibly and only for support purposes. All actions will be logged.\",\n  \n  // Buttons\n  cancel: \"Cancel\",\n  impersonate: \"Start Impersonation\",\n  impersonating: \"Starting...\",\n  \n  // Messages\n  success: \"Impersonation started\",\n  errorImpersonating: \"Failed to start impersonation\",\n};\n\nexport interface ImpersonateUserDialogProps {\n  /**\n   * Whether the dialog is open\n   */\n  open: boolean;\n  \n  /**\n   * Callback when dialog open state changes\n   */\n  onOpenChange: (open: boolean) => void;\n  \n  /**\n   * User to impersonate\n   */\n  user: {\n    id: string;\n    name?: string;\n    email: string;\n    image?: string;\n  } | null;\n  \n  /**\n   * Callback after successful impersonation\n   */\n  onSuccess?: () => void;\n  \n  /**\n   * Callback on error\n   */\n  onError?: (error: Error) => void;\n  \n  /**\n   * Custom class name\n   */\n  className?: string;\n  \n  /**\n   * Localization overrides\n   */\n  localization?: Partial<ImpersonateUserDialogLocalization>;\n}\n\nexport function ImpersonateUserDialog({\n  open,\n  onOpenChange,\n  user,\n  onSuccess,\n  onError,\n  localization: customLocalization,\n}: ImpersonateUserDialogProps) {\n  const context = useContext(AuthUIContext);\n  if (!context) {\n    throw new Error(\"ImpersonateUserDialog must be used within AuthUIProvider\");\n  }\n  const { authClient } = context;\n  const localization = { ...defaultLocalization, ...customLocalization };\n\n  const [loading, setLoading] = useState(false);\n\n  const handleImpersonate = async () => {\n    if (!user || !authClient?.admin) return;\n    \n    setLoading(true);\n    try {\n      const { error } = await authClient.admin.impersonateUser({\n        userId: user.id,\n      });\n\n      if (error) {\n        throw new Error(error.message || localization.errorImpersonating);\n      }\n\n      toast.success(localization.success);\n      onSuccess?.();\n      onOpenChange(false);\n      \n      // Reload page to update session\n      window.location.reload();\n    } catch (error) {\n      const err = error instanceof Error ? error : new Error(localization.errorImpersonating);\n      toast.error(err.message);\n      onError?.(err);\n      setLoading(false);\n    }\n  };\n\n  const handleClose = () => {\n    if (!loading) {\n      onOpenChange(false);\n    }\n  };\n\n  return (\n    <Dialog open={open} onOpenChange={handleClose}>\n      <DialogContent>\n        <DialogHeader>\n          <DialogTitle>{localization.title}</DialogTitle>\n          <DialogDescription>\n            {localization.description}\n          </DialogDescription>\n        </DialogHeader>\n\n        <div className=\"space-y-4 py-4\">\n          {/* User info */}\n          {user && (\n            <div className=\"rounded-lg border p-4 bg-muted/50\">\n              <div className=\"flex items-center gap-3\">\n                <UserAvatar user={user} size=\"default\" />\n                <div>\n                  <div className=\"font-medium\">{user.name || user.email}</div>\n                  {user.name && (\n                    <div className=\"text-sm text-muted-foreground\">{user.email}</div>\n                  )}\n                </div>\n              </div>\n            </div>\n          )}\n\n          {/* Warning */}\n          <Alert variant=\"destructive\">\n            <AlertTriangle className=\"h-4 w-4\" />\n            <AlertDescription>\n              <div className=\"font-semibold mb-1\">{localization.warningTitle}</div>\n              <div className=\"text-sm\">{localization.warningMessage}</div>\n            </AlertDescription>\n          </Alert>\n        </div>\n\n        <DialogFooter>\n          <Button\n            variant=\"outline\"\n            onClick={handleClose}\n            disabled={loading}\n          >\n            {localization.cancel}\n          </Button>\n          <Button\n            variant=\"default\"\n            onClick={handleImpersonate}\n            disabled={loading || !user}\n          >\n            {loading ? localization.impersonating : localization.impersonate}\n          </Button>\n        </DialogFooter>\n      </DialogContent>\n    </Dialog>\n  );\n}\n","/**\n * wallet-connection-card\n * Manage Web3 wallet connections\n * Part of @bettercone/ui Web3 components\n */\n\n\"use client\"\n\nimport { Loader2, Trash2, Wallet } from \"lucide-react\"\nimport { useContext, useEffect, useState } from \"react\"\n\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { cn, getLocalizedError } from \"@/lib/utils\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle\n} from \"@/components/ui/dialog\"\n\nexport type WalletConnectionCardClassNames = {\n    base?: string\n    header?: string\n    title?: string\n    description?: string\n    content?: string\n    walletItem?: string\n    button?: string\n    badge?: string\n}\n\nexport interface WalletConnectionCardProps {\n    /**\n     * Custom CSS class names for styling different parts of the component\n     */\n    classNames?: WalletConnectionCardClassNames\n\n    /**\n     * Custom CSS class for the card\n     */\n    className?: string\n\n    /**\n     * Localization object for customizing text\n     */\n    localization?: Partial<AuthLocalization>\n\n    /**\n     * Card title\n     * @default \"Wallet Connections\"\n     */\n    title?: string\n\n    /**\n     * Card description\n     * @default \"Manage your connected Web3 wallets\"\n     */\n    description?: string\n}\n\ninterface WalletConnection {\n    id: string\n    userId: string\n    address: string\n    chainId: number\n    isPrimary?: boolean\n    createdAt: Date\n}\n\n/**\n * WalletConnectionCard Component\n *\n * Displays and manages connected Web3 wallets for the current user.\n * Allows users to view, connect, and disconnect Ethereum wallets.\n *\n * @example\n * ```tsx\n * import { WalletConnectionCard } from '@bettercone/ui';\n *\n * export function SettingsPage() {\n *   return (\n *     <div className=\"space-y-6\">\n *       <WalletConnectionCard />\n *     </div>\n *   );\n * }\n * ```\n *\n * @example\n * With custom title\n * ```tsx\n * <WalletConnectionCard\n *   title=\"My Web3 Wallets\"\n *   description=\"Connect and manage your Ethereum addresses\"\n * />\n * ```\n */\nexport function WalletConnectionCard({\n    className,\n    classNames,\n    localization: localizationProp,\n    title = \"Wallet Connections\",\n    description = \"Manage your connected Web3 wallets\"\n}: WalletConnectionCardProps) {\n    const {\n        authClient,\n        localization: contextLocalization,\n        toast,\n        hooks: { useSession }\n    } = useContext(AuthUIContext)\n\n    const localization = { ...contextLocalization, ...localizationProp }\n\n    const { data: sessionData, refetch: refetchSession } = useSession()\n    const [wallets, setWallets] = useState<WalletConnection[]>([])\n    const [isLoading, setIsLoading] = useState(false)\n    const [isConnecting, setIsConnecting] = useState(false)\n    const [walletToRemove, setWalletToRemove] = useState<string | null>(null)\n    const [isRemoving, setIsRemoving] = useState(false)\n\n    // Load wallet connections\n    useEffect(() => {\n        if (sessionData?.user) {\n            loadWallets()\n        }\n    }, [sessionData])\n\n    async function loadWallets() {\n        setIsLoading(true)\n        try {\n            // Fetch connected wallets from Better Auth\n            const response = await authClient.$fetch(\"/api/auth/wallets\", {\n                method: \"GET\"\n            })\n\n            if (response && response.wallets) {\n                setWallets(response.wallets)\n            }\n        } catch (error) {\n            console.error(\"Failed to load wallets:\", error)\n        } finally {\n            setIsLoading(false)\n        }\n    }\n\n    async function connectWallet() {\n        setIsConnecting(true)\n\n        try {\n            if (typeof window === \"undefined\" || !window.ethereum) {\n                toast({\n                    variant: \"error\",\n                    message: \"No Ethereum wallet found. Please install MetaMask or another Web3 wallet.\"\n                })\n                return\n            }\n\n            // Request account access\n            const accounts = await window.ethereum.request({\n                method: \"eth_requestAccounts\"\n            })\n\n            if (!accounts || accounts.length === 0) {\n                toast({\n                    variant: \"error\",\n                    message: \"Failed to connect to wallet\"\n                })\n                return\n            }\n\n            const address = accounts[0]\n\n            // Connect wallet via Better Auth\n            await authClient.$fetch(\"/api/auth/wallets/connect\", {\n                method: \"POST\",\n                body: { address }\n            })\n\n            toast({\n                variant: \"success\",\n                message: \"Wallet connected successfully\"\n            })\n\n            await loadWallets()\n            await refetchSession()\n        } catch (error) {\n            console.error(\"Wallet connection error:\", error)\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        } finally {\n            setIsConnecting(false)\n        }\n    }\n\n    async function disconnectWallet(walletId: string) {\n        setIsRemoving(true)\n\n        try {\n            await authClient.$fetch(\"/api/auth/wallets/disconnect\", {\n                method: \"POST\",\n                body: { walletId }\n            })\n\n            toast({\n                variant: \"success\",\n                message: \"Wallet disconnected successfully\"\n            })\n\n            await loadWallets()\n            await refetchSession()\n            setWalletToRemove(null)\n        } catch (error) {\n            console.error(\"Wallet disconnect error:\", error)\n            toast({\n                variant: \"error\",\n                message: getLocalizedError({ error, localization })\n            })\n        } finally {\n            setIsRemoving(false)\n        }\n    }\n\n    function formatAddress(address: string): string {\n        if (!address) return \"\"\n        return `${address.slice(0, 6)}...${address.slice(-4)}`\n    }\n\n    function getChainName(chainId: number): string {\n        const chainNames: Record<number, string> = {\n            1: \"Ethereum\",\n            137: \"Polygon\",\n            42161: \"Arbitrum\",\n            8453: \"Base\",\n            10: \"Optimism\",\n        }\n        return chainNames[chainId] || `Chain ${chainId}`\n    }\n\n    return (\n        <>\n            <Card className={cn(\"\", className, classNames?.base)}>\n                <CardHeader className={classNames?.header}>\n                    <CardTitle className={classNames?.title}>\n                        {title}\n                    </CardTitle>\n                    <CardDescription className={classNames?.description}>\n                        {description}\n                    </CardDescription>\n                </CardHeader>\n\n                <CardContent className={cn(\"space-y-4\", classNames?.content)}>\n                    {isLoading ? (\n                        <div className=\"flex items-center justify-center py-8\">\n                            <Loader2 className=\"h-6 w-6 animate-spin text-muted-foreground\" />\n                        </div>\n                    ) : wallets.length > 0 ? (\n                        <div className=\"space-y-3\">\n                            {wallets.map((wallet) => (\n                                <div\n                                    key={wallet.id}\n                                    className={cn(\n                                        \"flex items-center justify-between p-4 rounded-lg border bg-card\",\n                                        classNames?.walletItem\n                                    )}\n                                >\n                                    <div className=\"flex items-center gap-3\">\n                                        <div className=\"p-2 rounded-full bg-primary/10\">\n                                            <Wallet className=\"h-4 w-4 text-primary\" />\n                                        </div>\n                                        <div>\n                                            <div className=\"flex items-center gap-2\">\n                                                <p className=\"font-medium text-sm\">\n                                                    {formatAddress(wallet.address)}\n                                                </p>\n                                                {wallet.isPrimary && (\n                                                    <Badge\n                                                        variant=\"secondary\"\n                                                        className={cn(\"text-xs\", classNames?.badge)}\n                                                    >\n                                                        Primary\n                                                    </Badge>\n                                                )}\n                                            </div>\n                                            <p className=\"text-xs text-muted-foreground\">\n                                                {getChainName(wallet.chainId)} • {new Date(wallet.createdAt).toLocaleDateString()}\n                                            </p>\n                                        </div>\n                                    </div>\n\n                                    <Button\n                                        variant=\"ghost\"\n                                        size=\"icon\"\n                                        onClick={() => setWalletToRemove(wallet.id)}\n                                        disabled={wallet.isPrimary && wallets.length === 1}\n                                        title={\n                                            wallet.isPrimary && wallets.length === 1\n                                                ? \"Cannot remove your only wallet\"\n                                                : \"Disconnect wallet\"\n                                        }\n                                    >\n                                        <Trash2 className=\"h-4 w-4 text-muted-foreground\" />\n                                    </Button>\n                                </div>\n                            ))}\n                        </div>\n                    ) : (\n                        <div className=\"text-center py-8 text-muted-foreground\">\n                            <Wallet className=\"h-12 w-12 mx-auto mb-3 opacity-20\" />\n                            <p className=\"text-sm\">No wallets connected</p>\n                        </div>\n                    )}\n\n                    <Button\n                        onClick={connectWallet}\n                        disabled={isConnecting}\n                        className={cn(\"w-full\", classNames?.button)}\n                    >\n                        {isConnecting ? (\n                            <>\n                                <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                Connecting...\n                            </>\n                        ) : (\n                            <>\n                                <Wallet className=\"mr-2 h-4 w-4\" />\n                                Connect Wallet\n                            </>\n                        )}\n                    </Button>\n                </CardContent>\n            </Card>\n\n            {/* Disconnect Confirmation Dialog */}\n            <Dialog\n                open={walletToRemove !== null}\n                onOpenChange={(open) => !open && setWalletToRemove(null)}\n            >\n                <DialogContent>\n                    <DialogHeader>\n                        <DialogTitle>Disconnect Wallet</DialogTitle>\n                        <DialogDescription>\n                            Are you sure you want to disconnect this wallet? You\n                            can reconnect it anytime.\n                        </DialogDescription>\n                    </DialogHeader>\n\n                    <DialogFooter>\n                        <Button\n                            variant=\"outline\"\n                            onClick={() => setWalletToRemove(null)}\n                            disabled={isRemoving}\n                        >\n                            Cancel\n                        </Button>\n                        <Button\n                            variant=\"destructive\"\n                            onClick={() =>\n                                walletToRemove && disconnectWallet(walletToRemove)\n                            }\n                            disabled={isRemoving}\n                        >\n                            {isRemoving ? (\n                                <>\n                                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                    Disconnecting...\n                                </>\n                            ) : (\n                                \"Disconnect\"\n                            )}\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        </>\n    )\n}\n\n// Extend Window interface for TypeScript\ndeclare global {\n    interface Window {\n        ethereum?: {\n            request: (args: { method: string; params?: any[] }) => Promise<any>\n            on?: (event: string, handler: (...args: any[]) => void) => void\n            removeListener?: (\n                event: string,\n                handler: (...args: any[]) => void\n            ) => void\n        }\n    }\n}\n","\"use client\"\n\nimport { useContext, useState, useEffect } from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Loader2 } from \"lucide-react\"\n\nexport function OIDCConsentScreen() {\n    const { authClient } = useContext(AuthUIContext)\n    const [loading, setLoading] = useState(false)\n    const [params, setParams] = useState<{\n        consentCode: string | null\n        clientId: string | null\n        scopes: string[]\n    }>({ consentCode: null, clientId: null, scopes: [] })\n    const [error, setError] = useState<string | null>(null)\n\n    useEffect(() => {\n        if (typeof window !== \"undefined\") {\n            const searchParams = new URLSearchParams(window.location.search)\n            const consentCode = searchParams.get(\"consent_code\")\n            const clientId = searchParams.get(\"client_id\")\n            const scopeString = searchParams.get(\"scope\")\n\n            if (!consentCode) {\n                setError(\"Missing consent code\")\n            }\n\n            setParams({\n                consentCode,\n                clientId,\n                scopes: scopeString ? scopeString.split(\" \") : []\n            })\n        }\n    }, [])\n\n    const handleAccept = async () => {\n        if (!params.consentCode) return\n        setLoading(true)\n        try {\n            // @ts-ignore - oauth2 property exists on better-auth client but might not be in context type yet\n            await authClient.oauth2.consent({\n                consent_code: params.consentCode,\n                accept: true\n            })\n            // Redirect is usually handled by the SDK/Backend after consent\n        } catch (error) {\n            console.error(\"Failed to accept consent\", error)\n            setError(\"Failed to accept consent\")\n        } finally {\n            setLoading(false)\n        }\n    }\n\n    const handleReject = async () => {\n        if (!params.consentCode) return\n        setLoading(true)\n        try {\n            // @ts-ignore\n            await authClient.oauth2.consent({\n                consent_code: params.consentCode,\n                accept: false\n            })\n        } catch (error) {\n            console.error(\"Failed to reject consent\", error)\n            setError(\"Failed to reject consent\")\n        } finally {\n            setLoading(false)\n        }\n    }\n\n    if (error) {\n        return (\n            <Card className=\"w-full max-w-md mx-auto border-red-200 bg-red-50 dark:bg-red-900/10\">\n                <CardContent className=\"pt-6 text-center text-red-600 dark:text-red-400\">\n                    {error}\n                </CardContent>\n            </Card>\n        )\n    }\n\n    if (!params.consentCode) return null // Wait for hydration/params\n\n    return (\n        <Card className=\"w-full max-w-md mx-auto\">\n            <CardHeader>\n                <CardTitle>Authorize Application</CardTitle>\n                <CardDescription>\n                    <strong>{params.clientId || \"An application\"}</strong> wants to access your account.\n                </CardDescription>\n            </CardHeader>\n            <CardContent>\n                <p className=\"text-sm text-muted-foreground mb-4\">This application requests access to:</p>\n                <ul className=\"space-y-2\">\n                    {params.scopes.map((scope) => (\n                        <li key={scope} className=\"flex items-center gap-2 text-sm\">\n                            <div className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n                            <span className=\"font-medium\">{scope}</span>\n                        </li>\n                    ))}\n                    {params.scopes.length === 0 && (\n                        <li className=\"text-sm text-muted-foreground italic\">No specific scopes requested</li>\n                    )}\n                </ul>\n            </CardContent>\n            <CardFooter className=\"flex justify-between gap-4\">\n                <Button variant=\"outline\" onClick={handleReject} disabled={loading} className=\"w-full\">\n                    Cancel\n                </Button>\n                <Button onClick={handleAccept} disabled={loading} className=\"w-full\">\n                    {loading && <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />}\n                    Authorize\n                </Button>\n            </CardFooter>\n        </Card>\n    )\n}\n","/**\n * tabs\n * Adapted from @daveyplate/better-auth-ui\n * Enhanced for @bettercone/ui\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"../../lib/utils\"\n\nfunction Tabs({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Root>) {\n  return (\n    <TabsPrimitive.Root\n      data-slot=\"tabs\"\n      className={cn(\"flex flex-col gap-2\", className)}\n      {...props}\n    />\n  )\n}\n\nfunction TabsList({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.List>) {\n  return (\n    <TabsPrimitive.List\n      data-slot=\"tabs-list\"\n      className={cn(\n        \"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsTrigger({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n  return (\n    <TabsPrimitive.Trigger\n      data-slot=\"tabs-trigger\"\n      className={cn(\n        \"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n        className\n      )}\n      {...props}\n    />\n  )\n}\n\nfunction TabsContent({\n  className,\n  ...props\n}: React.ComponentProps<typeof TabsPrimitive.Content>) {\n  return (\n    <TabsPrimitive.Content\n      data-slot=\"tabs-content\"\n      className={cn(\"flex-1 outline-none\", className)}\n      {...props}\n    />\n  )\n}\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","/**\n * sso-config-card\n * SAML and OIDC SSO configuration component\n * Redesigned with clean tab-based layout following BetterCone design system\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { AnyAuthClient } from \"@/types/any-auth-client\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardFooter,\n    CardHeader,\n    CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n    AlertDialog,\n    AlertDialogAction,\n    AlertDialogCancel,\n    AlertDialogContent,\n    AlertDialogDescription,\n    AlertDialogFooter,\n    AlertDialogHeader,\n    AlertDialogTitle,\n} from \"@/components/ui/alert-dialog\"\nimport {\n    Select,\n    SelectContent,\n    SelectItem,\n    SelectTrigger,\n    SelectValue,\n} from \"@/components/ui/select\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { \n    CheckCircle2, \n    XCircle, \n    Loader2, \n    Copy, \n    Check,\n    Upload,\n    Settings2,\n    TestTube2\n} from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\n/**\n * Attribute Mapping for OIDC and SAML\n */\nexport interface AttributeMapping {\n    id?: string\n    email?: string\n    emailVerified?: string\n    name?: string\n    firstName?: string\n    lastName?: string\n    image?: string\n    extraFields?: Record<string, string>\n}\n\n/**\n * IdP Metadata (SAML)\n */\nexport interface IDPMetadata {\n    metadata?: string\n    privateKey?: string\n    privateKeyPass?: string\n    isAssertionEncrypted?: boolean\n    encPrivateKey?: string\n    encPrivateKeyPass?: string\n}\n\n/**\n * SP Metadata (SAML)\n */\nexport interface SPMetadata {\n    metadata?: string\n    binding?: 'post' | 'redirect'\n    privateKey?: string\n    privateKeyPass?: string\n    isAssertionEncrypted?: boolean\n    encPrivateKey?: string\n    encPrivateKeyPass?: string\n}\n\n/**\n * OIDC Configuration\n */\nexport interface OIDCConfig {\n    clientId: string\n    clientSecret?: string\n    authorizationEndpoint: string\n    tokenEndpoint: string\n    jwksEndpoint?: string\n    discoveryEndpoint?: string\n    scopes?: string[]\n    pkce?: boolean\n    mapping?: AttributeMapping\n}\n\n/**\n * SAML Configuration\n */\nexport interface SAMLConfig {\n    entryPoint: string\n    cert: string\n    callbackUrl: string\n    audience?: string\n    wantAssertionsSigned?: boolean\n    signatureAlgorithm?: 'sha1' | 'sha256' | 'sha512'\n    digestAlgorithm?: 'sha1' | 'sha256' | 'sha512'\n    identifierFormat?: string\n    idpMetadata?: IDPMetadata\n    spMetadata?: SPMetadata\n    mapping?: AttributeMapping\n}\n\n/**\n * SSO Provider Data Structure\n */\nexport interface SSOProvider {\n    id: string\n    providerId: string\n    issuer: string\n    domain: string\n    organizationId?: string\n    oidcConfig?: OIDCConfig\n    samlConfig?: SAMLConfig\n    createdAt?: Date\n    updatedAt?: Date\n}\n\n/**\n * Component Props\n */\nexport interface SSOConfigCardProps {\n    data?: SSOProvider\n    providerId?: string\n    authClient?: AnyAuthClient\n    className?: string\n    classNames?: {\n        base?: string\n        header?: string\n        title?: string\n        description?: string\n        content?: string\n        footer?: string\n    }\n    localization?: Partial<AuthLocalization>\n    onSuccess?: (provider: SSOProvider) => void\n    onError?: (error: Error) => void\n    showActions?: boolean\n    allowDelete?: boolean\n    allowMetadataUpload?: boolean\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * SSOConfigCard Component\n *\n * Configure SAML and OIDC single sign-on providers for enterprise authentication.\n * Clean tab-based layout with separate sections for configuration, mapping, and advanced options.\n *\n * @example\n * ```tsx\n * import { SSOConfigCard } from '@bettercone/ui';\n *\n * export function SSOPage() {\n *   return <SSOConfigCard />;\n * }\n * ```\n */\nexport function SSOConfigCard({\n    data: dataProp,\n    providerId: providerIdProp,\n    authClient: authClientProp,\n    className,\n    classNames,\n    localization: localizationProp,\n    onSuccess,\n    onError,\n    showActions = true,\n    allowDelete = true,\n    allowMetadataUpload = true,\n}: SSOConfigCardProps) {\n    const context = React.useContext(AuthUIContext)\n    const localization = React.useMemo(\n        () => ({ ...context?.localization, ...localizationProp }),\n        [context?.localization, localizationProp]\n    )\n    const authClient = authClientProp || context?.authClient\n\n    // State\n    const [activeTab, setActiveTab] = React.useState<\"config\" | \"mapping\" | \"advanced\">(\"config\")\n    const [providerType, setProviderType] = React.useState<\"oidc\" | \"saml\">(\"oidc\")\n    const [isLoading, setIsLoading] = React.useState(false)\n    const [isTesting, setIsTesting] = React.useState(false)\n    const [testResult, setTestResult] = React.useState<{ success: boolean; message?: string } | null>(null)\n    const [showDeleteDialog, setShowDeleteDialog] = React.useState(false)\n    const [copiedField, setCopiedField] = React.useState<string | null>(null)\n\n    // Form data - Common fields\n    const [providerId, setProviderId] = React.useState(\"\")\n    const [issuer, setIssuer] = React.useState(\"\")\n    const [domain, setDomain] = React.useState(\"\")\n    const [organizationId, setOrganizationId] = React.useState(\"\")\n\n    // OIDC fields\n    const [clientId, setClientId] = React.useState(\"\")\n    const [clientSecret, setClientSecret] = React.useState(\"\")\n    const [authEndpoint, setAuthEndpoint] = React.useState(\"\")\n    const [tokenEndpoint, setTokenEndpoint] = React.useState(\"\")\n    const [jwksEndpoint, setJwksEndpoint] = React.useState(\"\")\n    const [discoveryEndpoint, setDiscoveryEndpoint] = React.useState(\"\")\n    const [scopes, setScopes] = React.useState(\"openid email profile\")\n    const [pkceEnabled, setPkceEnabled] = React.useState(\"true\")\n\n    // SAML fields\n    const [entryPoint, setEntryPoint] = React.useState(\"\")\n    const [certificate, setCertificate] = React.useState(\"\")\n    const [callbackUrl, setCallbackUrl] = React.useState(\"\")\n    const [entityId, setEntityId] = React.useState(\"\")\n    const [idpMetadataXml, setIdpMetadataXml] = React.useState(\"\")\n    \n    // SAML Advanced\n    const [wantAssertionsSigned, setWantAssertionsSigned] = React.useState(\"true\")\n    const [signatureAlgorithm, setSignatureAlgorithm] = React.useState<'sha256' | 'sha512'>('sha256')\n    const [digestAlgorithm, setDigestAlgorithm] = React.useState<'sha256' | 'sha512'>('sha256')\n    const [identifierFormat, setIdentifierFormat] = React.useState(\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\")\n\n    // Attribute Mapping\n    const [mapId, setMapId] = React.useState(\"\")\n    const [mapEmail, setMapEmail] = React.useState(\"\")\n    const [mapName, setMapName] = React.useState(\"\")\n    const [mapFirstName, setMapFirstName] = React.useState(\"\")\n    const [mapLastName, setMapLastName] = React.useState(\"\")\n    const [mapEmailVerified, setMapEmailVerified] = React.useState(\"\")\n    const [mapImage, setMapImage] = React.useState(\"\")\n    const [extraFieldsJson, setExtraFieldsJson] = React.useState(\"{}\")\n\n    // Load existing provider data\n    React.useEffect(() => {\n        if (dataProp) {\n            loadProviderData(dataProp)\n        } else if (providerIdProp && authClient?.sso) {\n            fetchProvider(providerIdProp)\n        }\n    }, [dataProp, providerIdProp])\n\n    const loadProviderData = (provider: SSOProvider) => {\n        setProviderId(provider.providerId)\n        setIssuer(provider.issuer)\n        setDomain(provider.domain)\n        setOrganizationId(provider.organizationId || \"\")\n\n        if (provider.oidcConfig) {\n            setProviderType(\"oidc\")\n            const oidc = provider.oidcConfig\n            setClientId(oidc.clientId)\n            setClientSecret(oidc.clientSecret || \"\")\n            setAuthEndpoint(oidc.authorizationEndpoint)\n            setTokenEndpoint(oidc.tokenEndpoint)\n            setJwksEndpoint(oidc.jwksEndpoint || \"\")\n            setDiscoveryEndpoint(oidc.discoveryEndpoint || \"\")\n            setScopes(oidc.scopes?.join(\" \") || \"openid email profile\")\n            setPkceEnabled(oidc.pkce !== false ? \"true\" : \"false\")\n\n            if (oidc.mapping) {\n                loadMapping(oidc.mapping)\n            }\n        } else if (provider.samlConfig) {\n            setProviderType(\"saml\")\n            const saml = provider.samlConfig\n            setEntryPoint(saml.entryPoint)\n            setCertificate(saml.cert)\n            setCallbackUrl(saml.callbackUrl)\n            setEntityId(saml.audience || \"\")\n            setIdpMetadataXml(saml.idpMetadata?.metadata || \"\")\n            setWantAssertionsSigned(saml.wantAssertionsSigned !== false ? \"true\" : \"false\")\n            setSignatureAlgorithm(saml.signatureAlgorithm as any || 'sha256')\n            setDigestAlgorithm(saml.digestAlgorithm as any || 'sha256')\n            setIdentifierFormat(saml.identifierFormat || \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\")\n\n            if (saml.mapping) {\n                loadMapping(saml.mapping)\n            }\n        }\n    }\n\n    const loadMapping = (mapping: AttributeMapping) => {\n        setMapId(mapping.id || \"\")\n        setMapEmail(mapping.email || \"\")\n        setMapName(mapping.name || \"\")\n        setMapFirstName(mapping.firstName || \"\")\n        setMapLastName(mapping.lastName || \"\")\n        setMapEmailVerified(mapping.emailVerified || \"\")\n        setMapImage(mapping.image || \"\")\n        if (mapping.extraFields) {\n            setExtraFieldsJson(JSON.stringify(mapping.extraFields, null, 2))\n        }\n    }\n\n    const fetchProvider = async (id: string) => {\n        if (!authClient?.sso?.getProvider) return\n\n        setIsLoading(true)\n        try {\n            const response = await authClient.sso.getProvider({ providerId: id })\n            if (response.data) {\n                loadProviderData(response.data)\n            } else if (response.error) {\n                onError?.(new Error(response.error.message || \"Failed to load provider\"))\n            }\n        } catch (error) {\n            onError?.(error as Error)\n        } finally {\n            setIsLoading(false)\n        }\n    }\n\n    const buildMapping = (): AttributeMapping | undefined => {\n        const mapping: AttributeMapping = {}\n        if (mapId) mapping.id = mapId\n        if (mapEmail) mapping.email = mapEmail\n        if (mapName) mapping.name = mapName\n        if (mapFirstName) mapping.firstName = mapFirstName\n        if (mapLastName) mapping.lastName = mapLastName\n        if (mapEmailVerified) mapping.emailVerified = mapEmailVerified\n        if (mapImage) mapping.image = mapImage\n        \n        try {\n            const extraFields = JSON.parse(extraFieldsJson || \"{}\")\n            if (Object.keys(extraFields).length > 0) {\n                mapping.extraFields = extraFields\n            }\n        } catch (e) {\n            // Invalid JSON, ignore\n        }\n\n        return Object.keys(mapping).length > 0 ? mapping : undefined\n    }\n\n    const handleSubmit = async (e: React.FormEvent) => {\n        e.preventDefault()\n\n        if (!authClient?.sso) {\n            onError?.(new Error(localization.SSO_CONFIG_DESCRIPTION || \"SSO client not configured\"))\n            return\n        }\n\n        setIsLoading(true)\n        setTestResult(null)\n\n        try {\n            const config: any = {\n                providerId,\n                issuer,\n                domain,\n                organizationId: organizationId || undefined,\n            }\n\n            const mapping = buildMapping()\n\n            if (providerType === \"oidc\") {\n                config.oidcConfig = {\n                    clientId,\n                    clientSecret: clientSecret || undefined,\n                    authorizationEndpoint: authEndpoint,\n                    tokenEndpoint,\n                    jwksEndpoint: jwksEndpoint || undefined,\n                    discoveryEndpoint: discoveryEndpoint || undefined,\n                    scopes: scopes.split(\" \").filter(Boolean),\n                    pkce: pkceEnabled === \"true\",\n                    mapping,\n                }\n            } else {\n                config.samlConfig = {\n                    entryPoint,\n                    cert: certificate,\n                    callbackUrl,\n                    audience: entityId || undefined,\n                    wantAssertionsSigned: wantAssertionsSigned === \"true\",\n                    signatureAlgorithm,\n                    digestAlgorithm,\n                    identifierFormat,\n                    mapping,\n                }\n\n                if (idpMetadataXml) {\n                    config.samlConfig.idpMetadata = {\n                        metadata: idpMetadataXml,\n                    }\n                }\n            }\n\n            const response = dataProp\n                ? await authClient.sso.updateProvider?.(config)\n                : await authClient.sso.register(config)\n\n            if (response?.error) {\n                throw new Error(response.error.message || \"Failed to save provider\")\n            }\n\n            context?.toast?.({\n                variant: \"success\",\n                message: dataProp\n                    ? localization.SSO_PROVIDER_UPDATED || \"SSO provider updated\"\n                    : localization.SSO_PROVIDER_CREATED || \"SSO provider created\"\n            })\n\n            onSuccess?.(response?.data || config)\n        } catch (error) {\n            context?.toast?.({\n                variant: \"error\",\n                message: (error as Error).message\n            })\n            onError?.(error as Error)\n        } finally {\n            setIsLoading(false)\n        }\n    }\n\n    const handleTestConnection = async () => {\n        if (!authClient?.sso?.testConnection || !providerId) return\n\n        setIsTesting(true)\n        setTestResult(null)\n\n        try {\n            const response = await authClient.sso.testConnection({ providerId })\n            if (response.data) {\n                setTestResult(response.data)\n                context?.toast?.({\n                    variant: response.data.success ? \"success\" : \"error\",\n                    message: response.data.message || (response.data.success\n                        ? localization.SSO_TEST_SUCCESS || \"Connection successful\"\n                        : localization.SSO_TEST_FAILED || \"Connection failed\")\n                })\n            } else if (response.error) {\n                setTestResult({ success: false, message: response.error.message })\n            }\n        } catch (error) {\n            setTestResult({ success: false, message: (error as Error).message })\n        } finally {\n            setIsTesting(false)\n        }\n    }\n\n    const handleFetchSpMetadata = async () => {\n        if (!authClient?.sso?.spMetadata || !providerId) return\n\n        try {\n            const response = await authClient.sso.spMetadata({ \n                providerId,\n                format: 'xml' \n            })\n            \n            let metadataXml: string\n            if (response instanceof Response) {\n                metadataXml = await response.text()\n            } else if (response.data?.metadata) {\n                metadataXml = response.data.metadata\n            } else {\n                throw new Error(\"Failed to fetch SP metadata\")\n            }\n\n            copyToClipboard(metadataXml, \"sp-metadata\")\n        } catch (error) {\n            context?.toast?.({\n                variant: \"error\",\n                message: (error as Error).message\n            })\n        }\n    }\n\n    const handleDelete = async () => {\n        if (!authClient?.sso?.deleteProvider || !providerId) return\n\n        setIsLoading(true)\n        try {\n            const response = await authClient.sso.deleteProvider({ providerId })\n            if (response.error) {\n                throw new Error(response.error.message || \"Failed to delete provider\")\n            }\n\n            context?.toast?.({\n                variant: \"success\",\n                message: localization.SSO_PROVIDER_DELETED || \"SSO provider deleted\"\n            })\n\n            onSuccess?.(null as any)\n        } catch (error) {\n            context?.toast?.({\n                variant: \"error\",\n                message: (error as Error).message\n            })\n            onError?.(error as Error)\n        } finally {\n            setIsLoading(false)\n            setShowDeleteDialog(false)\n        }\n    }\n\n    const copyToClipboard = (text: string, field: string) => {\n        navigator.clipboard.writeText(text)\n        setCopiedField(field)\n        context?.toast?.({\n            variant: \"success\",\n            message: localization.COPIED_TO_CLIPBOARD || \"Copied to clipboard\"\n        })\n        setTimeout(() => setCopiedField(null), 2000)\n    }\n\n    const handleFileUpload = (e: React.ChangeEvent<HTMLInputElement>) => {\n        const file = e.target.files?.[0]\n        if (!file) return\n\n        const reader = new FileReader()\n        reader.onload = (event) => {\n            const content = event.target?.result as string\n            setIdpMetadataXml(content)\n        }\n        reader.readAsText(file)\n    }\n\n    if (isLoading && !dataProp) {\n        return (\n            <Card className={cn(\"w-full\", className, classNames?.base)}>\n                <CardContent className=\"flex items-center justify-center py-8\">\n                    <Loader2 className=\"h-6 w-6 animate-spin\" />\n                </CardContent>\n            </Card>\n        )\n    }\n\n    return (\n        <>\n            <Card className={cn(\"w-full\", className, classNames?.base)}>\n                <form onSubmit={handleSubmit}>\n                    <CardHeader className={classNames?.header}>\n                        <div className=\"flex items-center justify-between\">\n                            <div>\n                                <CardTitle className={classNames?.title}>\n                                    {localization.SSO_CONFIG || \"SSO Configuration\"}\n                                </CardTitle>\n                                <CardDescription className={classNames?.description}>\n                                    {localization.SSO_CONFIG_DESCRIPTION || \"Configure SAML and OIDC single sign-on\"}\n                                </CardDescription>\n                            </div>\n                            {dataProp && (\n                                <Badge variant=\"secondary\">\n                                    {providerType.toUpperCase()}\n                                </Badge>\n                            )}\n                        </div>\n                    </CardHeader>\n\n                    <CardContent className={cn(\"space-y-6\", classNames?.content)}>\n                        {/* Provider Type Selection */}\n                        {!dataProp && (\n                            <div className=\"space-y-3\">\n                                <Label>{localization.SSO_PROVIDER_TYPE || \"Provider Type\"}</Label>\n                                <Select value={providerType} onValueChange={(v) => setProviderType(v as \"oidc\" | \"saml\")}>\n                                    <SelectTrigger>\n                                        <SelectValue />\n                                    </SelectTrigger>\n                                    <SelectContent>\n                                        <SelectItem value=\"oidc\">\n                                            OIDC (OpenID Connect)\n                                        </SelectItem>\n                                        <SelectItem value=\"saml\">\n                                            SAML 2.0\n                                        </SelectItem>\n                                    </SelectContent>\n                                </Select>\n                            </div>\n                        )}\n\n                        {/* Main Configuration Tabs */}\n                        <Tabs value={activeTab} onValueChange={(v) => setActiveTab(v as any)} >\n                            <TabsList className=\"w-full\">\n                                <TabsTrigger value=\"config\">Configuration</TabsTrigger>\n                                <TabsTrigger value=\"mapping\">Mapping</TabsTrigger>\n                                <TabsTrigger value=\"advanced\" className=\"gap-1.5\">\n                                    <Settings2 className=\"h-3.5 w-3.5\" />\n                                    Advanced\n                                </TabsTrigger>\n                            </TabsList>\n\n                            {/* Configuration Tab */}\n                            <TabsContent value=\"config\" className=\"space-y-4 mt-4\">\n                                {/* Basic Settings */}\n                                <div className=\"space-y-4\">\n                                    <div>\n                                        <h3 className=\"text-sm font-medium mb-3\">Basic Information</h3>\n                                        <div className=\"space-y-3\">\n                                            <div className=\"grid gap-3 md:grid-cols-2\">\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"providerId\">\n                                                        {localization.SSO_PROVIDER_ID || \"Provider ID\"}\n                                                    </Label>\n                                                    <Input\n                                                        id=\"providerId\"\n                                                        value={providerId}\n                                                        onChange={(e) => setProviderId(e.target.value)}\n                                                        placeholder=\"my-company-sso\"\n                                                        required\n                                                        disabled={!!dataProp}\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"domain\">\n                                                        {localization.SSO_DOMAIN || \"Domain\"}\n                                                    </Label>\n                                                    <Input\n                                                        id=\"domain\"\n                                                        value={domain}\n                                                        onChange={(e) => setDomain(e.target.value)}\n                                                        placeholder=\"example.com\"\n                                                        required\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"issuer\">\n                                                    {localization.SSO_ISSUER || \"Issuer URL\"}\n                                                </Label>\n                                                <Input\n                                                    id=\"issuer\"\n                                                    value={issuer}\n                                                    onChange={(e) => setIssuer(e.target.value)}\n                                                    placeholder=\"https://idp.example.com\"\n                                                    required\n                                                />\n                                            </div>\n\n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"organizationId\">\n                                                    {localization.SSO_ORGANIZATION || \"Organization\"} \n                                                    <span className=\"text-muted-foreground ml-1\">(Optional)</span>\n                                                </Label>\n                                                <Input\n                                                    id=\"organizationId\"\n                                                    value={organizationId}\n                                                    onChange={(e) => setOrganizationId(e.target.value)}\n                                                    placeholder=\"org_xxxxx\"\n                                                />\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <Separator />\n\n                                    {/* Provider-specific Configuration */}\n                                    {providerType === \"oidc\" ? (\n                                        <div className=\"space-y-4\">\n                                            <h3 className=\"text-sm font-medium\">OIDC Configuration</h3>\n\n                                            <div className=\"grid gap-3 md:grid-cols-2\">\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"clientId\">Client ID</Label>\n                                                    <Input\n                                                        id=\"clientId\"\n                                                        value={clientId}\n                                                        onChange={(e) => setClientId(e.target.value)}\n                                                        required\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"clientSecret\">Client Secret</Label>\n                                                    <Input\n                                                        id=\"clientSecret\"\n                                                        type=\"password\"\n                                                        value={clientSecret}\n                                                        onChange={(e) => setClientSecret(e.target.value)}\n                                                    />\n                                                </div>\n                                            </div>\n\n                                            <div className=\"space-y-3\">\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"authEndpoint\">Authorization Endpoint</Label>\n                                                    <Input\n                                                        id=\"authEndpoint\"\n                                                        value={authEndpoint}\n                                                        onChange={(e) => setAuthEndpoint(e.target.value)}\n                                                        placeholder=\"https://idp.example.com/authorize\"\n                                                        required\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"tokenEndpoint\">Token Endpoint</Label>\n                                                    <Input\n                                                        id=\"tokenEndpoint\"\n                                                        value={tokenEndpoint}\n                                                        onChange={(e) => setTokenEndpoint(e.target.value)}\n                                                        placeholder=\"https://idp.example.com/token\"\n                                                        required\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"discoveryEndpoint\">\n                                                        Discovery Endpoint <span className=\"text-muted-foreground\">(Optional)</span>\n                                                    </Label>\n                                                    <Input\n                                                        id=\"discoveryEndpoint\"\n                                                        value={discoveryEndpoint}\n                                                        onChange={(e) => setDiscoveryEndpoint(e.target.value)}\n                                                        placeholder=\"https://idp.example.com/.well-known/openid-configuration\"\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"scopes\">Scopes</Label>\n                                                    <Input\n                                                        id=\"scopes\"\n                                                        value={scopes}\n                                                        onChange={(e) => setScopes(e.target.value)}\n                                                        placeholder=\"openid email profile\"\n                                                    />\n                                                    <p className=\"text-xs text-muted-foreground\">\n                                                        Space-separated list of OAuth scopes\n                                                    </p>\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"pkce\">PKCE</Label>\n                                                    <Select value={pkceEnabled} onValueChange={setPkceEnabled}>\n                                                        <SelectTrigger id=\"pkce\">\n                                                            <SelectValue />\n                                                        </SelectTrigger>\n                                                        <SelectContent>\n                                                            <SelectItem value=\"true\">Enabled (Recommended)</SelectItem>\n                                                            <SelectItem value=\"false\">Disabled</SelectItem>\n                                                        </SelectContent>\n                                                    </Select>\n                                                    <p className=\"text-xs text-muted-foreground\">\n                                                        Proof Key for Code Exchange adds additional security\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    ) : (\n                                        <div className=\"space-y-4\">\n                                            <h3 className=\"text-sm font-medium\">SAML Configuration</h3>\n\n                                            <div className=\"space-y-3\">\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"entryPoint\">SSO Entry Point</Label>\n                                                    <Input\n                                                        id=\"entryPoint\"\n                                                        value={entryPoint}\n                                                        onChange={(e) => setEntryPoint(e.target.value)}\n                                                        placeholder=\"https://idp.example.com/sso\"\n                                                        required\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"certificate\">IdP Certificate (X.509)</Label>\n                                                    <Textarea\n                                                        id=\"certificate\"\n                                                        value={certificate}\n                                                        onChange={(e) => setCertificate(e.target.value)}\n                                                        placeholder=\"-----BEGIN CERTIFICATE-----&#10;...&#10;-----END CERTIFICATE-----\"\n                                                        rows={5}\n                                                        required\n                                                        className=\"font-mono text-xs\"\n                                                    />\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"callbackUrl\">Callback URL (ACS)</Label>\n                                                    <div className=\"flex gap-2\">\n                                                        <Input\n                                                            id=\"callbackUrl\"\n                                                            value={callbackUrl}\n                                                            onChange={(e) => setCallbackUrl(e.target.value)}\n                                                            placeholder=\"https://yourapp.com/api/auth/sso/saml2/callback/provider-id\"\n                                                            required\n                                                        />\n                                                        <Button\n                                                            type=\"button\"\n                                                            variant=\"outline\"\n                                                            size=\"icon\"\n                                                            onClick={() => copyToClipboard(callbackUrl, \"callback\")}\n                                                        >\n                                                            {copiedField === \"callback\" ? (\n                                                                <Check className=\"h-4 w-4\" />\n                                                            ) : (\n                                                                <Copy className=\"h-4 w-4\" />\n                                                            )}\n                                                        </Button>\n                                                    </div>\n                                                </div>\n\n                                                <div className=\"space-y-2\">\n                                                    <Label htmlFor=\"entityId\">\n                                                        Entity ID <span className=\"text-muted-foreground\">(Optional)</span>\n                                                    </Label>\n                                                    <Input\n                                                        id=\"entityId\"\n                                                        value={entityId}\n                                                        onChange={(e) => setEntityId(e.target.value)}\n                                                        placeholder=\"https://yourapp.com\"\n                                                    />\n                                                </div>\n\n                                                {allowMetadataUpload && (\n                                                    <div className=\"space-y-2\">\n                                                        <Label>IdP Metadata XML <span className=\"text-muted-foreground\">(Optional)</span></Label>\n                                                        <div className=\"flex gap-2\">\n                                                            <label htmlFor=\"metadata-file\" className=\"cursor-pointer\">\n                                                                <Button type=\"button\" variant=\"outline\" size=\"sm\" asChild>\n                                                                    <span>\n                                                                        <Upload className=\"mr-2 h-4 w-4\" />\n                                                                        Upload File\n                                                                    </span>\n                                                                </Button>\n                                                                <input\n                                                                    id=\"metadata-file\"\n                                                                    type=\"file\"\n                                                                    accept=\".xml,text/xml\"\n                                                                    className=\"hidden\"\n                                                                    onChange={handleFileUpload}\n                                                                />\n                                                            </label>\n                                                        </div>\n                                                        {idpMetadataXml && (\n                                                            <Textarea\n                                                                value={idpMetadataXml}\n                                                                onChange={(e) => setIdpMetadataXml(e.target.value)}\n                                                                placeholder=\"<EntityDescriptor>...</EntityDescriptor>\"\n                                                                rows={4}\n                                                                className=\"font-mono text-xs\"\n                                                            />\n                                                        )}\n                                                    </div>\n                                                )}\n                                            </div>\n                                        </div>\n                                    )}\n                                </div>\n                            </TabsContent>\n\n                            {/* Attribute Mapping Tab */}\n                            <TabsContent value=\"mapping\" className=\"space-y-4 mt-4\">\n                                <p className=\"text-sm text-muted-foreground\">\n                                    Map SSO provider attributes to user profile fields. Leave empty to use defaults.\n                                </p>\n\n                                <div className=\"grid gap-4 md:grid-cols-2\">\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapId\">User ID Attribute</Label>\n                                        <Input\n                                            id=\"mapId\"\n                                            value={mapId}\n                                            onChange={(e) => setMapId(e.target.value)}\n                                            placeholder={providerType === \"oidc\" ? \"sub\" : \"nameID\"}\n                                        />\n                                    </div>\n\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapEmail\">Email Attribute</Label>\n                                        <Input\n                                            id=\"mapEmail\"\n                                            value={mapEmail}\n                                            onChange={(e) => setMapEmail(e.target.value)}\n                                            placeholder=\"email\"\n                                        />\n                                    </div>\n\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapName\">Full Name Attribute</Label>\n                                        <Input\n                                            id=\"mapName\"\n                                            value={mapName}\n                                            onChange={(e) => setMapName(e.target.value)}\n                                            placeholder={providerType === \"oidc\" ? \"name\" : \"displayName\"}\n                                        />\n                                    </div>\n\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapFirstName\">First Name Attribute</Label>\n                                        <Input\n                                            id=\"mapFirstName\"\n                                            value={mapFirstName}\n                                            onChange={(e) => setMapFirstName(e.target.value)}\n                                            placeholder=\"givenName\"\n                                        />\n                                    </div>\n\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapLastName\">Last Name Attribute</Label>\n                                        <Input\n                                            id=\"mapLastName\"\n                                            value={mapLastName}\n                                            onChange={(e) => setMapLastName(e.target.value)}\n                                            placeholder={providerType === \"oidc\" ? \"family_name\" : \"surname\"}\n                                        />\n                                    </div>\n\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"mapEmailVerified\">Email Verified Attribute</Label>\n                                        <Input\n                                            id=\"mapEmailVerified\"\n                                            value={mapEmailVerified}\n                                            onChange={(e) => setMapEmailVerified(e.target.value)}\n                                            placeholder=\"email_verified\"\n                                        />\n                                    </div>\n\n                                    {providerType === \"oidc\" && (\n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"mapImage\">Profile Image Attribute</Label>\n                                            <Input\n                                                id=\"mapImage\"\n                                                value={mapImage}\n                                                onChange={(e) => setMapImage(e.target.value)}\n                                                placeholder=\"picture\"\n                                            />\n                                        </div>\n                                    )}\n                                </div>\n\n                                <div className=\"space-y-2\">\n                                    <Label htmlFor=\"extraFields\">Extra Fields (JSON)</Label>\n                                    <Textarea\n                                        id=\"extraFields\"\n                                        value={extraFieldsJson}\n                                        onChange={(e) => setExtraFieldsJson(e.target.value)}\n                                        placeholder='{\"department\": \"department\", \"role\": \"role\"}'\n                                        rows={4}\n                                        className=\"font-mono text-sm\"\n                                    />\n                                    <p className=\"text-xs text-muted-foreground\">\n                                        Map additional custom attributes as JSON key-value pairs\n                                    </p>\n                                </div>\n                            </TabsContent>\n\n                            {/* Advanced Tab */}\n                            <TabsContent value=\"advanced\" className=\"space-y-4 mt-4\">\n                                {providerType === \"oidc\" ? (\n                                    <div className=\"space-y-4\">\n                                        <p className=\"text-sm text-muted-foreground\">\n                                            Advanced OIDC configuration options\n                                        </p>\n                                        \n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"jwksEndpoint\">JWKS Endpoint</Label>\n                                            <Input\n                                                id=\"jwksEndpoint\"\n                                                value={jwksEndpoint}\n                                                onChange={(e) => setJwksEndpoint(e.target.value)}\n                                                placeholder=\"https://idp.example.com/.well-known/jwks.json\"\n                                            />\n                                            <p className=\"text-xs text-muted-foreground\">\n                                                JSON Web Key Set endpoint for token validation\n                                            </p>\n                                        </div>\n                                    </div>\n                                ) : (\n                                    <div className=\"space-y-4\">\n                                        <p className=\"text-sm text-muted-foreground\">\n                                            Advanced SAML security and signing options\n                                        </p>\n\n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"wantAssertionsSigned\">Require Signed Assertions</Label>\n                                            <Select value={wantAssertionsSigned} onValueChange={setWantAssertionsSigned}>\n                                                <SelectTrigger id=\"wantAssertionsSigned\">\n                                                    <SelectValue />\n                                                </SelectTrigger>\n                                                <SelectContent>\n                                                    <SelectItem value=\"true\">Required</SelectItem>\n                                                    <SelectItem value=\"false\">Not Required</SelectItem>\n                                                </SelectContent>\n                                            </Select>\n                                        </div>\n\n                                        <div className=\"grid gap-4 md:grid-cols-2\">\n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"signatureAlgorithm\">Signature Algorithm</Label>\n                                                <Select value={signatureAlgorithm} onValueChange={(v) => setSignatureAlgorithm(v as any)}>\n                                                    <SelectTrigger id=\"signatureAlgorithm\">\n                                                        <SelectValue />\n                                                    </SelectTrigger>\n                                                    <SelectContent>\n                                                        <SelectItem value=\"sha256\">SHA-256 (Recommended)</SelectItem>\n                                                        <SelectItem value=\"sha512\">SHA-512</SelectItem>\n                                                    </SelectContent>\n                                                </Select>\n                                            </div>\n\n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"digestAlgorithm\">Digest Algorithm</Label>\n                                                <Select value={digestAlgorithm} onValueChange={(v) => setDigestAlgorithm(v as any)}>\n                                                    <SelectTrigger id=\"digestAlgorithm\">\n                                                        <SelectValue />\n                                                    </SelectTrigger>\n                                                    <SelectContent>\n                                                        <SelectItem value=\"sha256\">SHA-256 (Recommended)</SelectItem>\n                                                        <SelectItem value=\"sha512\">SHA-512</SelectItem>\n                                                    </SelectContent>\n                                                </Select>\n                                            </div>\n                                        </div>\n\n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"identifierFormat\">Name ID Format</Label>\n                                            <Input\n                                                id=\"identifierFormat\"\n                                                value={identifierFormat}\n                                                onChange={(e) => setIdentifierFormat(e.target.value)}\n                                            />\n                                            <p className=\"text-xs text-muted-foreground\">\n                                                SAML NameID format identifier\n                                            </p>\n                                        </div>\n                                    </div>\n                                )}\n                            </TabsContent>\n                        </Tabs>\n\n                        {/* Test Results */}\n                        {testResult && (\n                            <div\n                                className={cn(\n                                    \"flex items-center gap-3 rounded-lg border p-4\",\n                                    testResult.success\n                                        ? \"border-green-200 bg-green-50 dark:border-green-900 dark:bg-green-950\"\n                                        : \"border-red-200 bg-red-50 dark:border-red-900 dark:bg-red-950\"\n                                )}\n                            >\n                                {testResult.success ? (\n                                    <CheckCircle2 className=\"h-5 w-5 text-green-600 dark:text-green-400\" />\n                                ) : (\n                                    <XCircle className=\"h-5 w-5 text-red-600 dark:text-red-400\" />\n                                )}\n                                <div className=\"flex-1\">\n                                    <p className={cn(\n                                        \"text-sm font-medium\",\n                                        testResult.success\n                                            ? \"text-green-900 dark:text-green-100\"\n                                            : \"text-red-900 dark:text-red-100\"\n                                    )}>\n                                        {testResult.message || (testResult.success\n                                            ? \"Connection successful\"\n                                            : \"Connection failed\")}\n                                    </p>\n                                </div>\n                            </div>\n                        )}\n                    </CardContent>\n\n                    {showActions && (\n                        <CardFooter className={cn(\"flex flex-col gap-3 border-t pt-6\", classNames?.footer)}>\n                            <div className=\"flex flex-col sm:flex-row gap-2 w-full sm:justify-end sm:items-center\">\n                                <div className=\"flex flex-wrap gap-2\">\n                                    {dataProp && allowDelete && (\n                                        <Button\n                                            type=\"button\"\n                                            variant=\"destructive\"\n                                            onClick={() => setShowDeleteDialog(true)}\n                                            disabled={isLoading}\n                                            size=\"sm\"\n                                        >\n                                            Delete\n                                        </Button>\n                                    )}\n                                    {dataProp && authClient?.sso?.testConnection && (\n                                        <Button\n                                            type=\"button\"\n                                            variant=\"outline\"\n                                            onClick={handleTestConnection}\n                                            disabled={isTesting || !providerId}\n                                            size=\"sm\"\n                                        >\n                                            {isTesting ? (\n                                                <>\n                                                    <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                                    Testing...\n                                                </>\n                                            ) : (\n                                                <>\n                                                    <TestTube2 className=\"mr-2 h-4 w-4\" />\n                                                    Test Connection\n                                                </>\n                                            )}\n                                        </Button>\n                                    )}\n                                    {dataProp && providerType === \"saml\" && authClient?.sso?.spMetadata && (\n                                        <Button\n                                            type=\"button\"\n                                            variant=\"outline\"\n                                            onClick={handleFetchSpMetadata}\n                                            disabled={!providerId}\n                                            size=\"sm\"\n                                        >\n                                            {copiedField === \"sp-metadata\" ? (\n                                                <>\n                                                    <Check className=\"mr-2 h-4 w-4\" />\n                                                    Copied!\n                                                </>\n                                            ) : (\n                                                <>\n                                                    <Copy className=\"mr-2 h-4 w-4\" />\n                                                    Copy SP Metadata\n                                                </>\n                                            )}\n                                        </Button>\n                                    )}\n                                </div>\n                                <Button type=\"submit\" disabled={isLoading} size=\"sm\" className=\"sm:ml-auto\">\n                                    {isLoading ? (\n                                        <>\n                                            <Loader2 className=\"mr-2 h-4 w-4 animate-spin\" />\n                                            Saving...\n                                        </>\n                                    ) : (\n                                        localization.SAVE || \"Save Configuration\"\n                                    )}\n                                </Button>\n                            </div>\n                        </CardFooter>\n                    )}\n                </form>\n            </Card>\n\n            {/* Delete Confirmation Dialog */}\n            <AlertDialog open={showDeleteDialog} onOpenChange={setShowDeleteDialog}>\n                <AlertDialogContent>\n                    <AlertDialogHeader>\n                        <AlertDialogTitle>Delete SSO Provider</AlertDialogTitle>\n                        <AlertDialogDescription>\n                            Are you sure you want to delete this SSO provider? Users will no longer be able to sign in using this provider. This action cannot be undone.\n                        </AlertDialogDescription>\n                    </AlertDialogHeader>\n                    <AlertDialogFooter>\n                        <AlertDialogCancel>Cancel</AlertDialogCancel>\n                        <AlertDialogAction onClick={handleDelete} className=\"bg-destructive text-destructive-foreground\">\n                            Delete Provider\n                        </AlertDialogAction>\n                    </AlertDialogFooter>\n                </AlertDialogContent>\n            </AlertDialog>\n        </>\n    )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Check } from \"lucide-react\"\nimport { cn } from \"../../lib/utils\"\n\nexport interface Step {\n  id: number\n  title: string\n  description?: string\n  completed?: boolean\n}\n\nexport interface StepperProps {\n  steps: Step[]\n  currentStep: number\n  onStepClick?: (step: number) => void\n  orientation?: \"horizontal\" | \"vertical\"\n  variant?: \"default\" | \"circle\" | \"bar\" | \"controlled\"\n  showTitle?: boolean\n  showDescription?: boolean\n  showStatus?: boolean\n  className?: string\n}\n\nexport const Stepper = React.forwardRef<HTMLDivElement, StepperProps>(\n  (\n    {\n      steps,\n      currentStep,\n      onStepClick,\n      orientation = \"horizontal\",\n      variant = \"default\",\n      showTitle = false,\n      showDescription = false,\n      showStatus = false,\n      className,\n    },\n    ref\n  ) => {\n    const isVertical = orientation === \"vertical\"\n\n    return (\n      <nav\n        ref={ref}\n        aria-label=\"Progress\"\n        className={cn(\"w-full\", className)}\n      >\n        <ol\n          role=\"list\"\n          className={cn(\n            \"flex\",\n            isVertical ? \"flex-col gap-4\" : \"items-center justify-between gap-2\"\n          )}\n        >\n          {steps.map((step, index) => {\n            const isCurrent = currentStep === step.id\n            // For controlled variant, use only the completed property from step\n            // For other variants, auto-mark previous steps as completed\n            const isCompleted = variant === \"controlled\" \n              ? step.completed === true\n              : step.completed || step.id < currentStep\n            const isClickable = onStepClick && (isCompleted || isCurrent)\n\n            return (\n              <li\n                key={step.id}\n                className={cn(\n                  \"flex items-center\",\n                  isVertical ? \"w-full\" : index < steps.length - 1 ? \"flex-1\" : \"\",\n                  index < steps.length - 1 && !isVertical && \"gap-2\"\n                )}\n              >\n                <div\n                  className={cn(\n                    \"flex items-center gap-3\",\n                    isVertical && \"w-full\"\n                  )}\n                >\n                  {/* Step indicator */}\n                  <button\n                    type=\"button\"\n                    onClick={() => isClickable && onStepClick?.(step.id)}\n                    disabled={!isClickable}\n                    aria-current={isCurrent ? \"step\" : undefined}\n                    className={cn(\n                      \"relative flex items-center justify-center rounded-full transition-all\",\n                      variant === \"circle\"\n                        ? \"h-10 w-10\"\n                        : \"h-8 w-8\",\n                      isCompleted\n                        ? \"bg-primary text-primary-foreground border-2 border-primary\"\n                        : isCurrent\n                        ? \"border-2 border-primary bg-background text-primary\"\n                        : \"border-2 border-muted-foreground/30 bg-background text-muted-foreground\",\n                      isClickable && \"cursor-pointer hover:border-primary hover:text-primary\",\n                      !isClickable && \"cursor-not-allowed opacity-60\"\n                    )}\n                  >\n                    {isCompleted ? (\n                      <Check className=\"h-4 w-4\" />\n                    ) : (\n                      <span className=\"text-sm font-semibold\">{step.id}</span>\n                    )}\n                  </button>\n\n                  {/* Title and description */}\n                  {(showTitle || showDescription) && (\n                    <div className=\"flex flex-col\">\n                      {showTitle && (\n                        <span\n                          className={cn(\n                            \"text-sm font-medium\",\n                            isCurrent\n                              ? \"text-foreground\"\n                              : isCompleted\n                              ? \"text-foreground\"\n                              : \"text-muted-foreground\"\n                          )}\n                        >\n                          {step.title}\n                        </span>\n                      )}\n                      {showDescription && step.description && (\n                        <span className=\"text-xs text-muted-foreground\">\n                          {step.description}\n                        </span>\n                      )}\n                      {showStatus && (\n                        <span className=\"text-xs text-muted-foreground\">\n                          {isCompleted\n                            ? \"Completed\"\n                            : isCurrent\n                            ? \"In progress\"\n                            : \"Pending\"}\n                        </span>\n                      )}\n                    </div>\n                  )}\n                </div>\n\n                {/* Connector line */}\n                {index < steps.length - 1 && (\n                  <div\n                    aria-hidden=\"true\"\n                    className={cn(\n                      isVertical\n                        ? \"ml-4 h-8 w-0.5\"\n                        : \"h-0.5 flex-1\",\n                      variant === \"bar\" && !isVertical && \"h-1\",\n                      isCompleted\n                        ? \"bg-primary\"\n                        : \"bg-muted\"\n                    )}\n                  />\n                )}\n              </li>\n            )\n          })}\n        </ol>\n      </nav>\n    )\n  }\n)\n\nStepper.displayName = \"Stepper\"\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Check, ChevronRight, ChevronLeft, Upload, FileText, Settings, Link2, TestTube2, AlertCircle, Info, Copy, CheckCircle2, ExternalLink } from \"lucide-react\"\nimport { Button } from \"@/components/ui/button\"\nimport { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/ui/select\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { Alert, AlertDescription } from \"@/components/ui/alert\"\nimport { Badge } from \"@/components/ui/badge\"\nimport { Stepper, type Step } from \"@/components/ui/stepper\"\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// TYPES & INTERFACES\n// ============================================================================\n\n/**\n * SAML attribute mapping configuration\n * Maps SAML assertion attributes to user model fields\n */\nexport interface SAMLAttributeMapping {\n  /** User ID (typically nameID) */\n  id?: string\n  /** Email address attribute */\n  email?: string\n  /** Email verified status attribute */\n  emailVerified?: string\n  /** Full name attribute */\n  name?: string\n  /** First/given name attribute */\n  firstName?: string\n  /** Last/family name attribute */\n  lastName?: string\n  /** Profile image/picture URL attribute */\n  image?: string\n  /** Custom additional attributes */\n  extraFields?: Record<string, string>\n}\n\n/**\n * Complete SAML configuration\n */\nexport interface SAMLConfiguration {\n  /** SSO entry point URL (IdP initiated login) */\n  entryPoint: string\n  /** X.509 certificate for signature verification (PEM format) */\n  cert: string\n  /** Assertion Consumer Service (ACS) URL - your callback endpoint */\n  callbackUrl: string\n  /** Expected audience (entity ID) */\n  audience?: string\n  /** Entity ID for your service provider */\n  entityId?: string\n  /** Require signed SAML assertions */\n  wantAssertionsSigned?: boolean\n  /** Signature algorithm */\n  signatureAlgorithm?: \"sha1\" | \"sha256\" | \"sha512\"\n  /** Digest algorithm */\n  digestAlgorithm?: \"sha1\" | \"sha256\" | \"sha512\"\n  /** NameID format */\n  identifierFormat?: string\n  /** Attribute mapping configuration */\n  mapping?: SAMLAttributeMapping\n}\n\n/**\n * Known SAML Identity Provider presets\n */\ninterface SAMLIdPPreset {\n  id: string\n  name: string\n  logo?: string\n  description: string\n  metadataUrl?: string\n  defaultConfig?: Partial<SAMLConfiguration>\n}\n\n/**\n * Props for SAMLSetupWizard component\n */\nexport interface SAMLSetupWizardProps {\n  /** Better Auth client instance (optional - uses context if not provided) */\n  authClient?: {\n    sso?: {\n      createProvider?: (config: SAMLConfiguration) => Promise<unknown>\n      testConnection?: (providerId: string) => Promise<{ success: boolean; error?: string }>\n    }\n  }\n  /** Organization ID to scope this SSO configuration */\n  organizationId?: string\n  /** Initial SAML configuration (for editing existing provider) */\n  initialConfig?: Partial<SAMLConfiguration>\n  /** Called when setup completes successfully */\n  onSuccess?: (config: SAMLConfiguration) => void\n  /** Called on errors */\n  onError?: (error: Error) => void\n  /** Called when wizard is cancelled */\n  onCancel?: () => void\n  /** Additional CSS classes */\n  className?: string\n}\n\n// ============================================================================\n// IDENTITY PROVIDER PRESETS\n// ============================================================================\n\nconst SAML_IDP_PRESETS: SAMLIdPPreset[] = [\n  {\n    id: \"azure-ad\",\n    name: \"Azure Active Directory\",\n    description: \"Microsoft Azure AD / Entra ID\",\n    metadataUrl: \"https://login.microsoftonline.com/{tenant-id}/federationmetadata/2007-06/federationmetadata.xml\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress\",\n        name: \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name\",\n        firstName: \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname\",\n        lastName: \"http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname\",\n      },\n    },\n  },\n  {\n    id: \"okta\",\n    name: \"Okta\",\n    description: \"Okta Identity Platform\",\n    metadataUrl: \"https://{your-domain}.okta.com/app/{app-id}/sso/saml/metadata\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"email\",\n        name: \"displayName\",\n        firstName: \"firstName\",\n        lastName: \"lastName\",\n      },\n    },\n  },\n  {\n    id: \"google\",\n    name: \"Google Workspace\",\n    description: \"Google Workspace SAML SSO\",\n    metadataUrl: \"https://accounts.google.com/o/saml2/idp?idpid={idp-id}\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"email\",\n        name: \"displayName\",\n        firstName: \"firstName\",\n        lastName: \"lastName\",\n      },\n    },\n  },\n  {\n    id: \"onelogin\",\n    name: \"OneLogin\",\n    description: \"OneLogin Identity Platform\",\n    metadataUrl: \"https://app.onelogin.com/saml/metadata/{app-id}\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"User.email\",\n        name: \"User.DisplayName\",\n        firstName: \"User.FirstName\",\n        lastName: \"User.LastName\",\n      },\n    },\n  },\n  {\n    id: \"auth0\",\n    name: \"Auth0\",\n    description: \"Auth0 SAML Provider\",\n    metadataUrl: \"https://{your-domain}.auth0.com/samlp/metadata/{client-id}\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"email\",\n        name: \"name\",\n        firstName: \"given_name\",\n        lastName: \"family_name\",\n      },\n    },\n  },\n  {\n    id: \"jumpcloud\",\n    name: \"JumpCloud\",\n    description: \"JumpCloud Directory Platform\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"email\",\n        name: \"displayName\",\n        firstName: \"firstname\",\n        lastName: \"lastname\",\n      },\n    },\n  },\n  {\n    id: \"custom\",\n    name: \"Custom SAML Provider\",\n    description: \"Configure manually for other providers\",\n    defaultConfig: {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      mapping: {\n        id: \"nameID\",\n        email: \"email\",\n        name: \"name\",\n      },\n    },\n  },\n]\n\n// ============================================================================\n// COMPONENT\n// ============================================================================\n\nexport const SAMLSetupWizard = ({\n  authClient,\n  organizationId,\n  initialConfig,\n  onSuccess,\n  onError,\n  onCancel,\n  className,\n}: SAMLSetupWizardProps) => {\n  // State: Current wizard step (1-5)\n  const [currentStep, setCurrentStep] = React.useState(1)\n  \n  // State: Track completed steps\n  const [completedSteps, setCompletedSteps] = React.useState<Set<number>>(new Set())\n  \n  // State: Selected IdP preset\n  const [selectedIdP, setSelectedIdP] = React.useState<string>(\"\")\n  \n  // State: SAML configuration\n  const [config, setConfig] = React.useState<Partial<SAMLConfiguration>>(\n    initialConfig || {\n      signatureAlgorithm: \"sha256\",\n      digestAlgorithm: \"sha256\",\n      identifierFormat: \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\",\n      wantAssertionsSigned: true,\n      callbackUrl: \"https://yourapp.com/api/auth/sso/saml2/callback\",\n      entityId: \"https://yourapp.com\",\n    }\n  )\n  \n  // State: Metadata XML\n  const [metadataXML, setMetadataXML] = React.useState(\"\")\n  \n  // State: Loading & error states\n  const [isLoading, setIsLoading] = React.useState(false)\n  const [error, setError] = React.useState<string>(\"\")\n  const [testResult, setTestResult] = React.useState<{ success: boolean; message: string } | null>(null)\n  \n  // State: Copied states\n  const [copiedACS, setCopiedACS] = React.useState(false)\n  const [copiedEntity, setCopiedEntity] = React.useState(false)\n\n  // Wizard steps configuration\n  const steps: Step[] = [\n    {\n      id: 1,\n      title: \"Select Identity Provider\",\n      description: \"Choose your SAML IdP\",\n      completed: completedSteps.has(1) && currentStep > 1,\n    },\n    {\n      id: 2,\n      title: \"Upload Metadata\",\n      description: \"Provide IdP metadata\",\n      completed: completedSteps.has(2) && currentStep > 2,\n    },\n    {\n      id: 3,\n      title: \"Configure Settings\",\n      description: \"Set SAML parameters\",\n      completed: completedSteps.has(3) && currentStep > 3,\n    },\n    {\n      id: 4,\n      title: \"Attribute Mapping\",\n      description: \"Map user attributes\",\n      completed: completedSteps.has(4) && currentStep > 4,\n    },\n    {\n      id: 5,\n      title: \"Test & Complete\",\n      description: \"Verify and finish\",\n      completed: completedSteps.has(5) && currentStep > 5,\n    },\n  ]\n\n  // Auto-populate config when IdP is selected\n  const handleIdPSelect = (idpId: string) => {\n    setSelectedIdP(idpId)\n    const preset = SAML_IDP_PRESETS.find((p) => p.id === idpId)\n    if (preset?.defaultConfig) {\n      setConfig((prev) => ({\n        ...prev,\n        ...preset.defaultConfig,\n      }))\n    }\n  }\n\n  // Parse SAML metadata XML\n  const handleMetadataUpload = (xml: string) => {\n    setMetadataXML(xml)\n    try {\n      // Extract entryPoint (SSO URL) - look for Location in SingleSignOnService\n      const ssoMatch = xml.match(/<SingleSignOnService[^>]*Location=\"([^\"]+)\"/i)\n      if (ssoMatch) {\n        setConfig((prev) => ({ ...prev, entryPoint: ssoMatch[1] }))\n      }\n\n      // Extract certificate\n      const certMatch = xml.match(/<X509Certificate>([^<]+)<\\/X509Certificate>/i)\n      if (certMatch) {\n        const cert = certMatch[1].replace(/\\s/g, \"\")\n        const formattedCert = `-----BEGIN CERTIFICATE-----\\n${cert.match(/.{1,64}/g)?.join(\"\\n\")}\\n-----END CERTIFICATE-----`\n        setConfig((prev) => ({ ...prev, cert: formattedCert }))\n      }\n\n      // Extract entityID\n      const entityMatch = xml.match(/entityID=\"([^\"]+)\"/i)\n      if (entityMatch) {\n        setConfig((prev) => ({ ...prev, audience: entityMatch[1] }))\n      }\n\n      setError(\"\")\n    } catch (err) {\n      setError(\"Failed to parse metadata XML. Please check the format.\")\n    }\n  }\n\n  // Test SAML connection\n  const handleTestConnection = async () => {\n    setIsLoading(true)\n    setTestResult(null)\n    \n    try {\n      // Validate required fields\n      if (!config.entryPoint || !config.cert || !config.callbackUrl) {\n        throw new Error(\"Missing required fields: entryPoint, cert, or callbackUrl\")\n      }\n\n      // If authClient is provided, use it to test\n      if (authClient?.sso?.testConnection) {\n        const result = await authClient.sso.testConnection(\"temp-test-id\")\n        setTestResult({\n          success: result.success,\n          message: result.success \n            ? \"SAML configuration is valid!\" \n            : result.error || \"Connection test failed\",\n        })\n        \n        // Mark step 5 as completed if test succeeds\n        if (result.success) {\n          setCompletedSteps((prev) => new Set(prev).add(5))\n        }\n      } else {\n        // Basic validation without actual connection test\n        setTestResult({\n          success: true,\n          message: \"Configuration appears valid (no connection test available)\",\n        })\n        // Mark step 5 as completed\n        setCompletedSteps((prev) => new Set(prev).add(5))\n      }\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : \"Unknown error\"\n      setTestResult({\n        success: false,\n        message: errorMessage,\n      })\n      onError?.(err instanceof Error ? err : new Error(errorMessage))\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  // Complete wizard\n  const handleComplete = async () => {\n    setIsLoading(true)\n    \n    try {\n      // Validate complete config\n      if (!config.entryPoint || !config.cert || !config.callbackUrl) {\n        throw new Error(\"Missing required SAML configuration\")\n      }\n\n      const completeConfig: SAMLConfiguration = {\n        entryPoint: config.entryPoint,\n        cert: config.cert,\n        callbackUrl: config.callbackUrl,\n        audience: config.audience,\n        entityId: config.entityId,\n        wantAssertionsSigned: config.wantAssertionsSigned,\n        signatureAlgorithm: config.signatureAlgorithm,\n        digestAlgorithm: config.digestAlgorithm,\n        identifierFormat: config.identifierFormat,\n        mapping: config.mapping,\n      }\n\n      // If authClient is provided, create provider\n      if (authClient?.sso?.createProvider) {\n        await authClient.sso.createProvider(completeConfig)\n      }\n\n      onSuccess?.(completeConfig)\n    } catch (err) {\n      const errorMessage = err instanceof Error ? err.message : \"Failed to complete setup\"\n      setError(errorMessage)\n      onError?.(err instanceof Error ? err : new Error(errorMessage))\n    } finally {\n      setIsLoading(false)\n    }\n  }\n\n  // Copy to clipboard helpers\n  const copyToClipboard = (text: string, type: \"acs\" | \"entity\") => {\n    navigator.clipboard.writeText(text)\n    if (type === \"acs\") {\n      setCopiedACS(true)\n      setTimeout(() => setCopiedACS(false), 2000)\n    } else {\n      setCopiedEntity(true)\n      setTimeout(() => setCopiedEntity(false), 2000)\n    }\n  }\n\n  // Navigate steps\n  const goToStep = (step: number) => {\n    if (step >= 1 && step <= 5) {\n      setCurrentStep(step)\n      setError(\"\")\n    }\n  }\n\n  // Validate if current step can proceed\n  const canProceedFromStep = (step: number): boolean => {\n    switch (step) {\n      case 1:\n        return !!selectedIdP\n      case 2:\n        return !!config.entryPoint && !!config.cert\n      case 3:\n        // Step 3 shows callbackUrl (always has default) - just ensure it exists\n        return !!config.callbackUrl\n      case 4:\n        return !!config.mapping?.email\n      case 5:\n        return testResult?.success || false\n      default:\n        return false\n    }\n  }\n\n  const nextStep = () => {\n    if (currentStep < 5 && canProceedFromStep(currentStep)) {\n      // Mark current step as completed before moving to next\n      setCompletedSteps((prev) => new Set(prev).add(currentStep))\n      setCurrentStep(currentStep + 1)\n      setError(\"\")\n    }\n  }\n\n  const prevStep = () => {\n    if (currentStep > 1) {\n      setCurrentStep(currentStep - 1)\n      setError(\"\")\n    }\n  }\n\n  // ============================================================================\n  // RENDER: Step Content\n  // ============================================================================\n\n  const renderStepContent = () => {\n    switch (currentStep) {\n      // STEP 1: Select Identity Provider\n      case 1:\n        return (\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"text-lg font-semibold mb-2\">Choose Your Identity Provider</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Select your SAML provider. We'll pre-configure the optimal settings for you.\n              </p>\n            </div>\n\n            <div className=\"grid gap-3 sm:grid-cols-2\">\n              {SAML_IDP_PRESETS.map((idp) => (\n                <Card\n                  key={idp.id}\n                  className={cn(\n                    \"cursor-pointer transition-all hover:shadow-md\",\n                    selectedIdP === idp.id\n                      ? \"border-primary ring-2 ring-primary/20\"\n                      : \"hover:border-primary/50\"\n                  )}\n                  onClick={() => handleIdPSelect(idp.id)}\n                >\n                  <CardHeader className=\"pb-3\">\n                    <div className=\"flex items-start justify-between\">\n                      <div className=\"space-y-1\">\n                        <CardTitle className=\"text-base\">{idp.name}</CardTitle>\n                        <CardDescription className=\"text-xs\">\n                          {idp.description}\n                        </CardDescription>\n                      </div>\n                      {selectedIdP === idp.id && (\n                        <div className=\"flex items-center justify-center\">\n                          <CheckCircle2 className=\"h-5 w-5\" />\n                        </div>\n                      )}\n                    </div>\n                  </CardHeader>\n                  {idp.metadataUrl && (\n                    <CardContent className=\"pt-0\">\n                      <p className=\"text-xs text-muted-foreground font-mono break-all\">\n                        {idp.metadataUrl}\n                      </p>\n                    </CardContent>\n                  )}\n                </Card>\n              ))}\n            </div>\n\n            {selectedIdP && (\n              <Alert>\n                <CheckCircle2 className=\"h-4 w-4\" />\n                <AlertDescription>\n                  <strong>{SAML_IDP_PRESETS.find((p) => p.id === selectedIdP)?.name}</strong> selected. \n                  Click Continue to proceed.\n                </AlertDescription>\n              </Alert>\n            )}\n          </div>\n        )\n\n      // STEP 2: Upload Metadata\n      case 2:\n        return (\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"text-lg font-semibold mb-2\">Import SAML Metadata</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Paste your IdP metadata XML to auto-configure, or enter settings manually.\n              </p>\n            </div>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base flex items-center gap-2\">\n                  <Upload className=\"h-4 w-4\" />\n                  SAML Metadata XML\n                </CardTitle>\n                <CardDescription>\n                  Download from your IdP's admin console or metadata endpoint\n                </CardDescription>\n              </CardHeader>\n              <CardContent>\n                <Textarea\n                  id=\"metadata-xml\"\n                  placeholder=\"<EntityDescriptor xmlns=...>\"\n                  value={metadataXML}\n                  onChange={(e) => handleMetadataUpload(e.target.value)}\n                  rows={8}\n                  className=\"font-mono text-xs\"\n                />\n              </CardContent>\n            </Card>\n\n            <div className=\"text-center\">\n              <p className=\"text-sm text-muted-foreground\">Or configure manually</p>\n            </div>\n\n            <div className=\"space-y-4\">\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"entry-point\">\n                  SSO Entry Point URL\n                  <Badge variant=\"destructive\" className=\"ml-2 text-xs\">Required</Badge>\n                </Label>\n                <Input\n                  id=\"entry-point\"\n                  placeholder=\"https://idp.example.com/saml2/sso\"\n                  value={config.entryPoint || \"\"}\n                  onChange={(e) => setConfig((prev) => ({ ...prev, entryPoint: e.target.value }))}\n                  className=\"font-mono text-sm\"\n                />\n              </div>\n\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"cert\">\n                  X.509 Certificate (PEM)\n                  <Badge variant=\"destructive\" className=\"ml-2 text-xs\">Required</Badge>\n                </Label>\n                <Textarea\n                  id=\"cert\"\n                  placeholder=\"-----BEGIN CERTIFICATE-----&#10;MIIDdzCCAl+gAwIBAgIE...&#10;-----END CERTIFICATE-----\"\n                  value={config.cert || \"\"}\n                  onChange={(e) => setConfig((prev) => ({ ...prev, cert: e.target.value }))}\n                  rows={6}\n                  className=\"font-mono text-xs\"\n                />\n              </div>\n\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"audience\">Audience / Entity ID</Label>\n                <Input\n                  id=\"audience\"\n                  placeholder=\"https://yourapp.com\"\n                  value={config.audience || \"\"}\n                  onChange={(e) => setConfig((prev) => ({ ...prev, audience: e.target.value }))}\n                  className=\"font-mono text-sm\"\n                />\n              </div>\n            </div>\n          </div>\n        )\n\n      // STEP 3: Configure Settings\n      case 3:\n        const acsUrl = config.callbackUrl || \"https://yourapp.com/api/auth/sso/saml2/callback\"\n        const spEntityId = config.entityId || \"https://yourapp.com\"\n\n        return (\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"text-lg font-semibold mb-2\">Configure SAML Settings</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Provide these URLs to your IdP and configure security settings.\n              </p>\n            </div>\n\n            <Alert>\n              <Info className=\"h-4 w-4\" />\n              <AlertDescription>\n                Copy these URLs to your Identity Provider's SAML application settings\n              </AlertDescription>\n            </Alert>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base\">Service Provider URLs</CardTitle>\n                <CardDescription>Configure these in your IdP</CardDescription>\n              </CardHeader>\n              <CardContent className=\"space-y-4\">\n                <div className=\"space-y-2\">\n                  <Label>Assertion Consumer Service (ACS) URL</Label>\n                  <div className=\"flex gap-2\">\n                    <Input\n                      value={acsUrl}\n                      onChange={(e) => setConfig((prev) => ({ ...prev, callbackUrl: e.target.value }))}\n                      className=\"font-mono text-xs\"\n                    />\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"icon\"\n                      onClick={() => copyToClipboard(acsUrl, \"acs\")}\n                    >\n                      {copiedACS ? <Check className=\"h-4 w-4\" /> : <Copy className=\"h-4 w-4\" />}\n                    </Button>\n                  </div>\n                </div>\n\n                <div className=\"space-y-2\">\n                  <Label>Service Provider Entity ID</Label>\n                  <div className=\"flex gap-2\">\n                    <Input\n                      value={spEntityId}\n                      onChange={(e) => setConfig((prev) => ({ ...prev, entityId: e.target.value }))}\n                      className=\"font-mono text-xs\"\n                    />\n                    <Button\n                      type=\"button\"\n                      variant=\"outline\"\n                      size=\"icon\"\n                      onClick={() => copyToClipboard(spEntityId, \"entity\")}\n                    >\n                      {copiedEntity ? <Check className=\"h-4 w-4\" /> : <Copy className=\"h-4 w-4\" />}\n                    </Button>\n                  </div>\n                </div>\n              </CardContent>\n            </Card>\n\n            <Separator />\n\n            <div className=\"space-y-4\">\n              <h4 className=\"font-medium\">Security Settings</h4>\n\n              <div className=\"grid gap-4 sm:grid-cols-2\">\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"signature-algorithm\">Signature Algorithm</Label>\n                  <Select\n                    value={config.signatureAlgorithm || \"sha256\"}\n                    onValueChange={(value: \"sha1\" | \"sha256\" | \"sha512\") =>\n                      setConfig((prev) => ({ ...prev, signatureAlgorithm: value }))\n                    }\n                  >\n                    <SelectTrigger id=\"signature-algorithm\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"sha256\">SHA-256 (Recommended)</SelectItem>\n                      <SelectItem value=\"sha512\">SHA-512</SelectItem>\n                      <SelectItem value=\"sha1\">SHA-1 (Legacy)</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n\n                <div className=\"space-y-2\">\n                  <Label htmlFor=\"digest-algorithm\">Digest Algorithm</Label>\n                  <Select\n                    value={config.digestAlgorithm || \"sha256\"}\n                    onValueChange={(value: \"sha1\" | \"sha256\" | \"sha512\") =>\n                      setConfig((prev) => ({ ...prev, digestAlgorithm: value }))\n                    }\n                  >\n                    <SelectTrigger id=\"digest-algorithm\">\n                      <SelectValue />\n                    </SelectTrigger>\n                    <SelectContent>\n                      <SelectItem value=\"sha256\">SHA-256 (Recommended)</SelectItem>\n                      <SelectItem value=\"sha512\">SHA-512</SelectItem>\n                      <SelectItem value=\"sha1\">SHA-1 (Legacy)</SelectItem>\n                    </SelectContent>\n                  </Select>\n                </div>\n              </div>\n\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"identifier-format\">NameID Format</Label>\n                <Select\n                  value={config.identifierFormat || \"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\"}\n                  onValueChange={(value) =>\n                    setConfig((prev) => ({ ...prev, identifierFormat: value }))\n                  }\n                >\n                  <SelectTrigger id=\"identifier-format\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">\n                      Email Address\n                    </SelectItem>\n                    <SelectItem value=\"urn:oasis:names:tc:SAML:2.0:nameid-format:persistent\">\n                      Persistent\n                    </SelectItem>\n                    <SelectItem value=\"urn:oasis:names:tc:SAML:2.0:nameid-format:transient\">\n                      Transient\n                    </SelectItem>\n                    <SelectItem value=\"urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified\">\n                      Unspecified\n                    </SelectItem>\n                  </SelectContent>\n                </Select>\n              </div>\n\n              <div className=\"space-y-2\">\n                <Label htmlFor=\"want-signed\">Require Signed Assertions</Label>\n                <Select\n                  value={config.wantAssertionsSigned ? \"true\" : \"false\"}\n                  onValueChange={(value) =>\n                    setConfig((prev) => ({ ...prev, wantAssertionsSigned: value === \"true\" }))\n                  }\n                >\n                  <SelectTrigger id=\"want-signed\">\n                    <SelectValue />\n                  </SelectTrigger>\n                  <SelectContent>\n                    <SelectItem value=\"true\">Yes (Recommended)</SelectItem>\n                    <SelectItem value=\"false\">No</SelectItem>\n                  </SelectContent>\n                </Select>\n                <p className=\"text-xs text-muted-foreground\">\n                  Digitally signed assertions for enhanced security\n                </p>\n              </div>\n            </div>\n          </div>\n        )\n\n      // STEP 4: Attribute Mapping\n      case 4:\n        return (\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"text-lg font-semibold mb-2\">Map User Attributes</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Specify SAML attribute names that map to user fields. These are attribute names, not values.\n              </p>\n            </div>\n\n            <Alert>\n              <Info className=\"h-4 w-4\" />\n              <AlertDescription>\n                Enter attribute names from your IdP's SAML response (e.g., \"email\", \"givenName\"). \n                Check your IdP documentation for exact names.\n              </AlertDescription>\n            </Alert>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base\">Standard Attributes</CardTitle>\n                <CardDescription>Basic user profile fields</CardDescription>\n              </CardHeader>\n              <CardContent className=\"space-y-4\">\n                <div className=\"grid gap-4 sm:grid-cols-2\">\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-id\">User ID</Label>\n                    <Input\n                      id=\"map-id\"\n                      placeholder=\"nameID\"\n                      value={config.mapping?.id || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, id: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-email\">\n                      Email Address\n                      <Badge variant=\"destructive\" className=\"ml-2 text-xs\">Required</Badge>\n                    </Label>\n                    <Input\n                      id=\"map-email\"\n                      placeholder=\"email\"\n                      value={config.mapping?.email || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, email: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n                </div>\n\n                <div className=\"grid gap-4 sm:grid-cols-2\">\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-first-name\">First Name</Label>\n                    <Input\n                      id=\"map-first-name\"\n                      placeholder=\"givenName\"\n                      value={config.mapping?.firstName || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, firstName: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-last-name\">Last Name</Label>\n                    <Input\n                      id=\"map-last-name\"\n                      placeholder=\"surname\"\n                      value={config.mapping?.lastName || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, lastName: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n                </div>\n\n                <div className=\"grid gap-4 sm:grid-cols-2\">\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-name\">Full Name</Label>\n                    <Input\n                      id=\"map-name\"\n                      placeholder=\"displayName\"\n                      value={config.mapping?.name || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, name: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n\n                  <div className=\"space-y-2\">\n                    <Label htmlFor=\"map-image\">Profile Picture</Label>\n                    <Input\n                      id=\"map-image\"\n                      placeholder=\"picture\"\n                      value={config.mapping?.image || \"\"}\n                      onChange={(e) =>\n                        setConfig((prev) => ({\n                          ...prev,\n                          mapping: { ...prev.mapping, image: e.target.value },\n                        }))\n                      }\n                      className=\"font-mono\"\n                    />\n                  </div>\n                </div>\n              </CardContent>\n            </Card>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base\">Custom Attributes (Optional)</CardTitle>\n                <CardDescription>Organization-specific fields as JSON</CardDescription>\n              </CardHeader>\n              <CardContent>\n                <Textarea\n                  placeholder={'{\\n  \"department\": \"dept\",\\n  \"employeeId\": \"empId\"\\n}'}\n                  value={\n                    config.mapping?.extraFields\n                      ? JSON.stringify(config.mapping.extraFields, null, 2)\n                      : \"\"\n                  }\n                  onChange={(e) => {\n                    try {\n                      const extraFields = e.target.value ? JSON.parse(e.target.value) : {}\n                      setConfig((prev) => ({\n                        ...prev,\n                        mapping: { ...prev.mapping, extraFields },\n                      }))\n                      setError(\"\")\n                    } catch {\n                      setError(\"Invalid JSON format for custom attributes\")\n                    }\n                  }}\n                  rows={5}\n                  className=\"font-mono text-xs\"\n                />\n              </CardContent>\n            </Card>\n          </div>\n        )\n\n      // STEP 5: Test & Complete\n      case 5:\n        return (\n          <div className=\"space-y-6\">\n            <div>\n              <h3 className=\"text-lg font-semibold mb-2\">Review & Test Configuration</h3>\n              <p className=\"text-sm text-muted-foreground\">\n                Verify your setup and test the connection before completing.\n              </p>\n            </div>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base\">Configuration Summary</CardTitle>\n                <CardDescription>Review your SAML settings</CardDescription>\n              </CardHeader>\n              <CardContent>\n                <div className=\"space-y-3 text-sm\">\n                  <div className=\"flex justify-between items-center\">\n                    <span className=\"text-muted-foreground\">Provider</span>\n                    <Badge variant=\"outline\">\n                      {SAML_IDP_PRESETS.find((p) => p.id === selectedIdP)?.name || \"Custom\"}\n                    </Badge>\n                  </div>\n                  <Separator />\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">SSO Entry Point</span>\n                    <code className=\"text-xs\">{config.entryPoint ? \"✓\" : \"✗\"}</code>\n                  </div>\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">Callback URL</span>\n                    <code className=\"text-xs\">{config.callbackUrl ? \"✓\" : \"✗\"}</code>\n                  </div>\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">Certificate</span>\n                    <Badge variant={config.cert ? \"default\" : \"destructive\"}>\n                      {config.cert ? \"Configured\" : \"Missing\"}\n                    </Badge>\n                  </div>\n                  <div className=\"flex justify-between\">\n                    <span className=\"text-muted-foreground\">Email Mapping</span>\n                    <code className=\"text-xs\">{config.mapping?.email || \"-\"}</code>\n                  </div>\n                </div>\n              </CardContent>\n            </Card>\n\n            <Card>\n              <CardHeader>\n                <CardTitle className=\"text-base flex items-center gap-2\">\n                  <TestTube2 className=\"h-4 w-4\" />\n                  Connection Test\n                </CardTitle>\n                <CardDescription>Test SAML configuration</CardDescription>\n              </CardHeader>\n              <CardContent className=\"space-y-4\">\n                <Button\n                  type=\"button\"\n                  onClick={handleTestConnection}\n                  disabled={isLoading || !config.entryPoint || !config.cert}\n                  variant=\"outline\"\n                  className=\"w-full\"\n                >\n                  {isLoading ? (\n                    \"Testing...\"\n                  ) : (\n                    <>\n                      <TestTube2 className=\"h-4 w-4 mr-2\" />\n                      Test Connection\n                    </>\n                  )}\n                </Button>\n\n                {testResult && (\n                  <Alert variant={testResult.success ? \"default\" : \"destructive\"}>\n                    {testResult.success ? (\n                      <CheckCircle2 className=\"h-4 w-4\" />\n                    ) : (\n                      <AlertCircle className=\"h-4 w-4\" />\n                    )}\n                    <AlertDescription>{testResult.message}</AlertDescription>\n                  </Alert>\n                )}\n              </CardContent>\n            </Card>\n\n            <Alert>\n              <Info className=\"h-4 w-4\" />\n              <AlertDescription>\n                Ensure ACS URL and Entity ID are configured in your IdP before testing\n              </AlertDescription>\n            </Alert>\n          </div>\n        )\n\n      default:\n        return null\n    }\n  }\n\n  // ============================================================================\n  // RENDER: Main Component\n  // ============================================================================\n\n  return (\n    <Card className={cn(\"w-full mx-auto\", className)}>\n      <CardHeader>\n        <div className=\"flex items-center justify-between mb-4\">\n          <Badge variant=\"secondary\">SAML 2.0 Setup Wizard</Badge>\n          <div className=\"text-sm text-muted-foreground\">\n            Step {currentStep} of {steps.length}\n          </div>\n        </div>\n        <CardTitle>\n          {steps[currentStep - 1]?.title}\n        </CardTitle>\n        <CardDescription>\n          {steps[currentStep - 1]?.description}\n        </CardDescription>\n      </CardHeader>\n\n      <CardContent className=\"space-y-6 \">\n        {/* Progress Stepper */}\n        <Stepper\n          steps={steps}\n          currentStep={currentStep}\n          onStepClick={goToStep}\n          variant=\"controlled\"\n        />\n\n        <Separator />\n\n        {/* Error Display */}\n        {error && (\n          <Alert variant=\"destructive\">\n            <AlertCircle className=\"h-4 w-4\" />\n            <AlertDescription>{error}</AlertDescription>\n          </Alert>\n        )}\n\n        {/* Step Content */}\n        <div className=\"min-h-[400px]\">\n          {renderStepContent()}\n        </div>\n      </CardContent>\n\n      <CardFooter className=\"flex flex-col sm:flex-row justify-between gap-2 border-t pt-6\">\n        <div className=\"flex gap-2 w-full sm:w-auto\">\n          <Button\n            type=\"button\"\n            variant=\"ghost\"\n            onClick={onCancel}\n            disabled={isLoading}\n            className=\"flex-1 sm:flex-none\"\n          >\n            Cancel\n          </Button>\n          {currentStep > 1 && (\n            <Button\n              type=\"button\"\n              variant=\"outline\"\n              onClick={prevStep}\n              disabled={isLoading}\n              className=\"flex-1 sm:flex-none\"\n            >\n              <ChevronLeft className=\"h-4 w-4 mr-1\" />\n              Previous\n            </Button>\n          )}\n        </div>\n\n        <div className=\"flex gap-2 w-full sm:w-auto\">\n          {currentStep < 5 ? (\n            <Button\n              type=\"button\"\n              onClick={nextStep}\n              disabled={isLoading || !canProceedFromStep(currentStep)}\n              className=\"flex-1 sm:flex-none\"\n            >\n              Next\n              <ChevronRight className=\"h-4 w-4 ml-1\" />\n            </Button>\n          ) : (\n            <Button\n              type=\"button\"\n              onClick={handleComplete}\n              disabled={isLoading || !testResult?.success}\n              className=\"flex-1 sm:flex-none\"\n            >\n              <CheckCircle2 className=\"h-4 w-4 mr-2\" />\n              Complete Setup\n            </Button>\n          )}\n        </div>\n      </CardFooter>\n    </Card>\n  )\n}\n\nexport default SAMLSetupWizard\n","/**\n * oidc-provider-card\n * OAuth2/OIDC Provider - Client Application Management\n * \n * Supports RFC7591 dynamic client registration, client credentials management,\n * token lifecycle, consent screens, and trusted client configuration.\n * \n * @see https://www.better-auth.com/docs/plugins/oidc-provider\n */\n\n\"use client\"\n\nimport * as React from \"react\"\nimport { AuthUIContext } from \"@/lib/auth-ui-provider\"\nimport type { AuthLocalization } from \"@/localization/auth-localization\"\nimport type { AnyAuthClient } from \"@/types/any-auth-client\"\nimport {\n    Card,\n    CardContent,\n    CardDescription,\n    CardFooter,\n    CardHeader,\n    CardTitle,\n} from \"@/components/ui/card\"\nimport { Input } from \"@/components/ui/input\"\nimport { Button } from \"@/components/ui/button\"\nimport { Label } from \"@/components/ui/label\"\nimport { Textarea } from \"@/components/ui/textarea\"\nimport { Badge } from \"@/components/ui/badge\"\nimport {\n    AlertDialog,\n    AlertDialogAction,\n    AlertDialogCancel,\n    AlertDialogContent,\n    AlertDialogDescription,\n    AlertDialogFooter,\n    AlertDialogHeader,\n    AlertDialogTitle,\n    AlertDialogTrigger,\n} from \"@/components/ui/alert-dialog\"\nimport {\n    Select,\n    SelectContent,\n    SelectItem,\n    SelectTrigger,\n    SelectValue,\n} from \"@/components/ui/select\"\nimport {\n    Dialog,\n    DialogContent,\n    DialogDescription,\n    DialogFooter,\n    DialogHeader,\n    DialogTitle,\n    DialogTrigger,\n} from \"@/components/ui/dialog\"\nimport { Separator } from \"@/components/ui/separator\"\nimport { \n    Plus,\n    Copy,\n    Check,\n    Trash2,\n    Key,\n    Shield,\n    ExternalLink,\n    AlertCircle,\n    Loader2,\n    Settings,\n    Eye,\n    EyeOff,\n    CheckCircle2\n} from \"lucide-react\"\nimport { cn } from \"@/lib/utils\"\n\n// ============================================================================\n// Types & Interfaces\n// ============================================================================\n\n/**\n * OAuth2 Client Data Structure (Better Auth Schema)\n * Based on Better Auth oauthApplication table\n */\nexport interface OAuth2Client {\n    id: string\n    clientId: string\n    clientSecret?: string\n    name: string\n    redirectURLs: string[] // Stored as comma-separated string in DB\n    type: string // 'web', 'spa', 'native', 'm2m', etc.\n    disabled: boolean\n    userId?: string\n    metadata?: string | Record<string, any> // Stored as string in DB\n    createdAt: Date\n    updatedAt?: Date\n}\n\n/**\n * OAuth2 Access Token Data Structure (Better Auth Schema)\n * Based on Better Auth oauthAccessToken table\n */\nexport interface OAuth2AccessToken {\n    id: string\n    accessToken: string\n    refreshToken: string\n    accessTokenExpiresAt: Date\n    refreshTokenExpiresAt: Date\n    clientId: string\n    userId: string\n    scopes: string // Stored as comma-separated string in DB\n    createdAt: Date\n    updatedAt: Date\n}\n\n/**\n * Client Registration Form Data (RFC7591)\n */\nexport interface ClientRegistrationData {\n    client_name: string\n    redirect_uris: string[]\n    token_endpoint_auth_method?: 'none' | 'client_secret_basic' | 'client_secret_post'\n    grant_types?: ('authorization_code' | 'refresh_token' | 'implicit' | 'password' | 'client_credentials' | 'urn:ietf:params:oauth:grant-type:jwt-bearer' | 'urn:ietf:params:oauth:grant-type:saml2-bearer')[]\n    response_types?: ('code' | 'token')[]\n    client_uri?: string\n    logo_uri?: string\n    scope?: string\n    contacts?: string[]\n    tos_uri?: string\n    policy_uri?: string\n    jwks_uri?: string\n    jwks?: Record<string, any>\n}\n\n/**\n * Component Props\n */\nexport interface OIDCProviderCardProps {\n    /**\n     * List of OAuth2 clients (optional - auto-fetches if not provided)\n     */\n    clients?: OAuth2Client[]\n\n    /**\n     * Custom auth client\n     */\n    authClient?: AnyAuthClient\n\n    /**\n     * Custom CSS class\n     */\n    className?: string\n\n    /**\n     * Custom class names\n     */\n    classNames?: {\n        base?: string\n        header?: string\n        clientList?: string\n        clientCard?: string\n    }\n\n    /**\n     * Localization strings\n     */\n    localization?: Partial<AuthLocalization>\n\n    /**\n     * Callback when client is registered\n     */\n    onClientRegistered?: (client: OAuth2Client) => void\n\n    /**\n     * Callback when client is updated\n     */\n    onClientUpdated?: (client: OAuth2Client) => void\n\n    /**\n     * Callback when client is deleted\n     */\n    onClientDeleted?: (clientId: string) => void\n\n    /**\n     * Callback on error\n     */\n    onError?: (error: Error) => void\n\n    /**\n     * Show active tokens section\n     */\n    showActiveTokens?: boolean\n\n    /**\n     * Show trusted clients section\n     */\n    showTrustedClients?: boolean\n\n    /**\n     * Allow dynamic client registration\n     */\n    allowRegistration?: boolean\n}\n\n// ============================================================================\n// Main Component with Auto-Detection\n// ============================================================================\n\nexport function OIDCProviderCard(props: OIDCProviderCardProps) {\n    const context = React.useContext(AuthUIContext)\n    \n    // Check if auto-fetch is possible\n    const hasOAuth2API = context?.authClient?.oauth2?.listClients\n    const shouldAutoFetch = hasOAuth2API && !props.clients\n    \n    if (shouldAutoFetch) {\n        return <OIDCProviderCardAutoFetch {...props} />\n    }\n    \n    return <OIDCProviderCardPresentational {...props} />\n}\n\n// ============================================================================\n// Auto-Fetch Implementation\n// ============================================================================\n\nfunction OIDCProviderCardAutoFetch(props: OIDCProviderCardProps) {\n    const context = React.useContext(AuthUIContext)\n    \n    if (!context) {\n        return <OIDCProviderCardError \n            message=\"AuthUIContext not found. Wrap component in AuthUIProvider.\" \n            className={props.className}\n        />\n    }\n    \n    const { authClient, toast } = context\n    const [clients, setClients] = React.useState<OAuth2Client[] | null>(null)\n    const [isLoading, setIsLoading] = React.useState(true)\n    const [error, setError] = React.useState<Error | null>(null)\n    \n    const fetchClients = React.useCallback(async () => {\n        if (!authClient?.oauth2?.listClients) {\n            setError(new Error(\"authClient.oauth2.listClients not available\"))\n            setIsLoading(false)\n            return\n        }\n        \n        try {\n            setIsLoading(true)\n            const { data, error: fetchError } = await authClient.oauth2.listClients()\n            \n            if (fetchError) {\n                setError(fetchError)\n                props.onError?.(fetchError)\n                toast?.({\n                    variant: \"error\",\n                    message: \"Failed to load OAuth2 clients\"\n                })\n            } else {\n                setClients((data as any[]) || [])\n                setError(null)\n            }\n        } catch (err) {\n            const error = err instanceof Error ? err : new Error(\"Unknown error\")\n            setError(error)\n            props.onError?.(error)\n        } finally {\n            setIsLoading(false)\n        }\n    }, [authClient, toast, props])\n    \n    React.useEffect(() => {\n        fetchClients()\n    }, [fetchClients])\n    \n    if (isLoading) {\n        return <OIDCProviderCardLoading className={props.className} />\n    }\n    \n    if (error) {\n        return <OIDCProviderCardError \n            message={error.message} \n            className={props.className}\n            onRetry={fetchClients}\n        />\n    }\n    \n    return (\n        <OIDCProviderCardPresentational \n            {...props} \n            clients={clients || []}\n            onClientRegistered={(client) => {\n                props.onClientRegistered?.(client)\n                fetchClients()\n            }}\n            onClientUpdated={(client) => {\n                props.onClientUpdated?.(client)\n                fetchClients()\n            }}\n            onClientDeleted={(clientId) => {\n                props.onClientDeleted?.(clientId)\n                fetchClients()\n            }}\n        />\n    )\n}\n\n// ============================================================================\n// Presentational Implementation\n// ============================================================================\n\nfunction OIDCProviderCardPresentational({\n    clients = [],\n    authClient,\n    className,\n    classNames,\n    localization: localizationProp,\n    onClientRegistered,\n    onClientUpdated,\n    onClientDeleted,\n    onError,\n    showActiveTokens = false,\n    showTrustedClients = false,\n    allowRegistration = true,\n}: OIDCProviderCardProps) {\n    const context = React.useContext(AuthUIContext)\n    const localization = React.useMemo(\n        () => ({ ...context?.localization, ...localizationProp }),\n        [context?.localization, localizationProp]\n    )\n    const toast = context?.toast\n    \n    // State\n    const [isRegistering, setIsRegistering] = React.useState(false)\n    const [showRegisterDialog, setShowRegisterDialog] = React.useState(false)\n    const [showSecretDialog, setShowSecretDialog] = React.useState(false)\n    const [newClientData, setNewClientData] = React.useState<OAuth2Client | null>(null)\n    const [selectedClient, setSelectedClient] = React.useState<OAuth2Client | null>(null)\n    const [copiedField, setCopiedField] = React.useState<string | null>(null)\n    const [showSecret, setShowSecret] = React.useState<Record<string, boolean>>({})\n    \n    // Form state\n    const [formData, setFormData] = React.useState<ClientRegistrationData>({\n        client_name: \"\",\n        redirect_uris: [],\n        token_endpoint_auth_method: \"client_secret_basic\",\n        grant_types: [\"authorization_code\", \"refresh_token\"],\n        response_types: [\"code\"],\n        scope: \"openid email profile\",\n        contacts: [],\n    })\n    \n    // Handle client registration\n    const handleRegisterClient = async () => {\n        if (!authClient?.oauth2?.register) {\n            onError?.(new Error(\"OAuth2 registration not available\"))\n            return\n        }\n        \n        try {\n            setIsRegistering(true)\n            \n            const { data, error } = await authClient.oauth2.register(formData)\n            \n            if (error) {\n                onError?.(error)\n                toast?.({\n                    variant: \"error\",\n                    message: \"Failed to register client\"\n                })\n            } else if (data) {\n                // Transform API response to OAuth2Client format\n                const client: OAuth2Client = {\n                    id: (data as any).client_id || '',\n                    clientId: (data as any).client_id || '',\n                    clientSecret: (data as any).client_secret,\n                    name: (data as any).client_name || formData.client_name,\n                    redirectURLs: (data as any).redirect_uris || formData.redirect_uris,\n                    type: 'web',\n                    disabled: false,\n                    createdAt: new Date(),\n                }\n                setNewClientData(client)\n                setShowRegisterDialog(false)\n                setShowSecretDialog(true)\n                onClientRegistered?.(client)\n                toast?.({\n                    variant: \"success\",\n                    message: \"Client registered successfully\"\n                })\n                // Reset form\n                setFormData({\n                    client_name: \"\",\n                    redirect_uris: [],\n                    token_endpoint_auth_method: \"client_secret_basic\",\n                    grant_types: [\"authorization_code\", \"refresh_token\"],\n                    response_types: [\"code\"],\n                    scope: \"openid email profile\",\n                    contacts: [],\n                })\n            }\n        } catch (err) {\n            const error = err instanceof Error ? err : new Error(\"Unknown error\")\n            onError?.(error)\n            toast?.({\n                variant: \"error\",\n                message: error.message\n            })\n        } finally {\n            setIsRegistering(false)\n        }\n    }\n    \n    // Handle client deletion\n    const handleDeleteClient = async (clientId: string) => {\n        if (!authClient?.oauth2?.deleteClient) {\n            onError?.(new Error(\"OAuth2 delete not available\"))\n            return\n        }\n        \n        try {\n            const { error } = await authClient.oauth2.deleteClient({ clientId })\n            \n            if (error) {\n                onError?.(error)\n                toast?.({\n                    variant: \"error\",\n                    message: \"Failed to delete client\"\n                })\n            } else {\n                onClientDeleted?.(clientId)\n                toast?.({\n                    variant: \"success\",\n                    message: \"Client deleted successfully\"\n                })\n            }\n        } catch (err) {\n            const error = err instanceof Error ? err : new Error(\"Unknown error\")\n            onError?.(error)\n        }\n    }\n    \n    // Copy to clipboard\n    const copyToClipboard = (text: string, field: string) => {\n        navigator.clipboard.writeText(text)\n        setCopiedField(field)\n        setTimeout(() => setCopiedField(null), 2000)\n    }\n    \n    // Toggle secret visibility\n    const toggleSecretVisibility = (clientId: string) => {\n        setShowSecret(prev => ({ ...prev, [clientId]: !prev[clientId] }))\n    }\n    \n    return (\n        <Card className={cn(\"w-full\", className, classNames?.base)}>\n            <CardHeader className={classNames?.header}>\n                <div className=\"flex items-start justify-between\">\n                    <div className=\"space-y-1\">\n                        <CardTitle className=\"flex items-center gap-2\">\n                            OIDC Provider\n                        </CardTitle>\n                        <CardDescription>\n                            Manage OAuth2/OIDC client applications\n                        </CardDescription>\n                    </div>\n                    {allowRegistration && authClient?.oauth2?.register && (\n                        <Dialog open={showRegisterDialog} onOpenChange={setShowRegisterDialog}>\n                            <DialogTrigger asChild>\n                                <Button size=\"sm\">\n                                    <Plus className=\"h-4 w-4 mr-1\" />\n                                    Register Client\n                                </Button>\n                            </DialogTrigger>\n                            <DialogContent className=\"max-w-2xl max-h-[90vh] overflow-y-auto\">\n                                <DialogHeader>\n                                    <DialogTitle>Register OAuth2 Client</DialogTitle>\n                                    <DialogDescription>\n                                        Create a new OAuth2/OIDC client application\n                                    </DialogDescription>\n                                </DialogHeader>\n                                \n                                <div className=\"space-y-4\">\n                                    {/* Client Name */}\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"client-name\">\n                                            Client Name\n                                            <Badge variant=\"destructive\" className=\"ml-2 text-xs\">Required</Badge>\n                                        </Label>\n                                        <Input\n                                            id=\"client-name\"\n                                            placeholder=\"My Application\"\n                                            value={formData.client_name}\n                                            onChange={(e) => setFormData(prev => ({ ...prev, client_name: e.target.value }))}\n                                        />\n                                    </div>\n                                    \n                                    {/* Redirect URIs */}\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"redirect-uris\">\n                                            Redirect URIs\n                                            <Badge variant=\"destructive\" className=\"ml-2 text-xs\">Required</Badge>\n                                        </Label>\n                                        <Textarea\n                                            id=\"redirect-uris\"\n                                            placeholder=\"https://myapp.com/callback&#10;https://myapp.com/auth/callback\"\n                                            rows={3}\n                                            value={formData.redirect_uris.join(\"\\n\")}\n                                            onChange={(e) => setFormData(prev => ({ \n                                                ...prev, \n                                                redirect_uris: e.target.value.split(\"\\n\").filter(Boolean) \n                                            }))}\n                                        />\n                                        <p className=\"text-xs text-muted-foreground\">One URI per line</p>\n                                    </div>\n                                    \n                                    {/* Token Endpoint Auth Method */}\n                                    <div className=\"space-y-2\">\n                                        <Label htmlFor=\"auth-method\">Token Endpoint Auth Method</Label>\n                                        <Select\n                                            value={formData.token_endpoint_auth_method}\n                                            onValueChange={(value: 'none' | 'client_secret_basic' | 'client_secret_post') =>\n                                                setFormData(prev => ({ ...prev, token_endpoint_auth_method: value }))\n                                            }\n                                        >\n                                            <SelectTrigger id=\"auth-method\">\n                                                <SelectValue />\n                                            </SelectTrigger>\n                                            <SelectContent>\n                                                <SelectItem value=\"client_secret_basic\">Client Secret (Basic)</SelectItem>\n                                                <SelectItem value=\"client_secret_post\">Client Secret (Post)</SelectItem>\n                                                <SelectItem value=\"none\">None (Public Client)</SelectItem>\n                                            </SelectContent>\n                                        </Select>\n                                    </div>\n                                    \n                                    <Separator />\n                                    \n                                    {/* Optional Metadata */}\n                                    <div className=\"space-y-4\">\n                                        <h4 className=\"font-medium text-sm\">Optional Metadata</h4>\n                                        \n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"client-uri\">Application URL</Label>\n                                            <Input\n                                                id=\"client-uri\"\n                                                placeholder=\"https://myapp.com\"\n                                                value={formData.client_uri || \"\"}\n                                                onChange={(e) => setFormData(prev => ({ ...prev, client_uri: e.target.value }))}\n                                            />\n                                        </div>\n                                        \n                                        <div className=\"space-y-2\">\n                                            <Label htmlFor=\"logo-uri\">Logo URL</Label>\n                                            <Input\n                                                id=\"logo-uri\"\n                                                placeholder=\"https://myapp.com/logo.png\"\n                                                value={formData.logo_uri || \"\"}\n                                                onChange={(e) => setFormData(prev => ({ ...prev, logo_uri: e.target.value }))}\n                                            />\n                                        </div>\n                                        \n                                        <div className=\"grid gap-4 sm:grid-cols-2\">\n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"tos-uri\">Terms of Service URL</Label>\n                                                <Input\n                                                    id=\"tos-uri\"\n                                                    placeholder=\"https://myapp.com/terms\"\n                                                    value={formData.tos_uri || \"\"}\n                                                    onChange={(e) => setFormData(prev => ({ ...prev, tos_uri: e.target.value }))}\n                                                />\n                                            </div>\n                                            \n                                            <div className=\"space-y-2\">\n                                                <Label htmlFor=\"policy-uri\">Privacy Policy URL</Label>\n                                                <Input\n                                                    id=\"policy-uri\"\n                                                    placeholder=\"https://myapp.com/privacy\"\n                                                    value={formData.policy_uri || \"\"}\n                                                    onChange={(e) => setFormData(prev => ({ ...prev, policy_uri: e.target.value }))}\n                                                />\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                \n                                <DialogFooter>\n                                    <Button\n                                        variant=\"outline\"\n                                        onClick={() => setShowRegisterDialog(false)}\n                                        disabled={isRegistering}\n                                    >\n                                        Cancel\n                                    </Button>\n                                    <Button\n                                        onClick={handleRegisterClient}\n                                        disabled={isRegistering || !formData.client_name || formData.redirect_uris.length === 0}\n                                    >\n                                        {isRegistering && <Loader2 className=\"h-4 w-4 mr-2 animate-spin\" />}\n                                        Register Client\n                                    </Button>\n                                </DialogFooter>\n                            </DialogContent>\n                        </Dialog>\n                    )}\n                </div>\n            </CardHeader>\n            \n            <CardContent className={classNames?.clientList}>\n                {clients.length === 0 ? (\n                    <div className=\"text-center py-12 space-y-3\">\n                        <div className=\"flex justify-center\">\n                            <div className=\"h-12 w-12 rounded-full bg-muted flex items-center justify-center\">\n                                <Key className=\"h-6 w-6 text-muted-foreground\" />\n                            </div>\n                        </div>\n                        <div>\n                            <h3 className=\"font-medium\">No OAuth2 clients registered</h3>\n                            <p className=\"text-sm text-muted-foreground mt-1\">\n                                Get started by registering your first client application\n                            </p>\n                        </div>\n                        {allowRegistration && authClient?.oauth2?.register && (\n                            <Button onClick={() => setShowRegisterDialog(true)}>\n                                <Plus className=\"h-4 w-4 mr-2\" />\n                                Register Client\n                            </Button>\n                        )}\n                    </div>\n                ) : (\n                    <div className=\"space-y-4\">\n                        {clients.map((client) => (\n                            <Card key={client.id} className={cn(\"border-muted\", classNames?.clientCard)}>\n                                <CardHeader className=\"pb-3\">\n                                    <div className=\"flex items-start justify-between\">\n                                        <div className=\"space-y-1\">\n                                            <CardTitle className=\"text-base\">{client.name}</CardTitle>\n                                            <div className=\"flex gap-2 flex-wrap\">\n                                                <Badge variant=\"secondary\" className=\"text-xs\">\n                                                    {client.type.toUpperCase()}\n                                                </Badge>\n                                                {client.disabled && (\n                                                    <Badge variant=\"destructive\" className=\"text-xs\">\n                                                        Disabled\n                                                    </Badge>\n                                                )}\n                                            </div>\n                                        </div>\n                                        {authClient?.oauth2?.deleteClient && (\n                                            <AlertDialog>\n                                                <AlertDialogTrigger asChild>\n                                                    <Button\n                                                        variant=\"ghost\"\n                                                        size=\"sm\"\n                                                        className=\"text-destructive hover:text-destructive\"\n                                                    >\n                                                        <Trash2 className=\"h-4 w-4\" />\n                                                    </Button>\n                                                </AlertDialogTrigger>\n                                                <AlertDialogContent>\n                                                    <AlertDialogHeader>\n                                                        <AlertDialogTitle>Delete OAuth2 Client</AlertDialogTitle>\n                                                        <AlertDialogDescription>\n                                                            Are you sure? This will revoke access for all users of this application.\n                                                        </AlertDialogDescription>\n                                                    </AlertDialogHeader>\n                                                    <AlertDialogFooter>\n                                                        <AlertDialogCancel>Cancel</AlertDialogCancel>\n                                                        <AlertDialogAction\n                                                            onClick={() => handleDeleteClient(client.id)}\n                                                            className=\"bg-destructive hover:bg-destructive/90\"\n                                                        >\n                                                            Delete\n                                                        </AlertDialogAction>\n                                                    </AlertDialogFooter>\n                                                </AlertDialogContent>\n                                            </AlertDialog>\n                                        )}\n                                    </div>\n                                </CardHeader>\n                                <CardContent className=\"space-y-3\">\n                                    {/* Client ID */}\n                                    <div className=\"space-y-2\">\n                                        <Label className=\"text-xs text-muted-foreground\">Client ID</Label>\n                                        <div className=\"flex gap-2\">\n                                            <Input\n                                                value={client.clientId}\n                                                readOnly\n                                                className=\"font-mono text-xs\"\n                                            />\n                                            <Button\n                                                variant=\"outline\"\n                                                size=\"icon\"\n                                                onClick={() => copyToClipboard(client.clientId, `client-id-${client.id}`)}\n                                            >\n                                                {copiedField === `client-id-${client.id}` ? (\n                                                    <Check className=\"h-4 w-4\" />\n                                                ) : (\n                                                    <Copy className=\"h-4 w-4\" />\n                                                )}\n                                            </Button>\n                                        </div>\n                                    </div>\n                                    \n                                    {/* Client Secret */}\n                                    {client.clientSecret && (\n                                        <div className=\"space-y-2\">\n                                            <Label className=\"text-xs text-muted-foreground\">Client Secret</Label>\n                                            <div className=\"flex gap-2\">\n                                                <Input\n                                                    type={showSecret[client.id] ? \"text\" : \"password\"}\n                                                    value={client.clientSecret}\n                                                    readOnly\n                                                    className=\"font-mono text-xs\"\n                                                />\n                                                <Button\n                                                    variant=\"outline\"\n                                                    size=\"icon\"\n                                                    onClick={() => toggleSecretVisibility(client.id)}\n                                                >\n                                                    {showSecret[client.id] ? (\n                                                        <EyeOff className=\"h-4 w-4\" />\n                                                    ) : (\n                                                        <Eye className=\"h-4 w-4\" />\n                                                    )}\n                                                </Button>\n                                                <Button\n                                                    variant=\"outline\"\n                                                    size=\"icon\"\n                                                    onClick={() => copyToClipboard(client.clientSecret!, `client-secret-${client.id}`)}\n                                                >\n                                                    {copiedField === `client-secret-${client.id}` ? (\n                                                        <Check className=\"h-4 w-4\" />\n                                                    ) : (\n                                                        <Copy className=\"h-4 w-4\" />\n                                                    )}\n                                                </Button>\n                                            </div>\n                                        </div>\n                                    )}\n                                    \n                                    {/* Redirect URLs */}\n                                    <div className=\"space-y-2\">\n                                        <Label className=\"text-xs text-muted-foreground\">Redirect URLs</Label>\n                                        <div className=\"space-y-1\">\n                                            {client.redirectURLs.map((url, index) => (\n                                                <div key={index} className=\"text-xs font-mono bg-muted px-2 py-1 rounded\">\n                                                    {url}\n                                                </div>\n                                            ))}\n                                        </div>\n                                    </div>\n                                    \n                                    {/* Metadata Links - Parse metadata if it's a string */}\n                                    {(() => {\n                                        const metadata = typeof client.metadata === 'string' \n                                            ? JSON.parse(client.metadata || '{}')\n                                            : client.metadata || {};\n                                        const hasMetadata = metadata.client_uri || metadata.tos_uri || metadata.policy_uri;\n                                        \n                                        return hasMetadata ? (\n                                            <div className=\"flex gap-2 pt-2\">\n                                                {metadata.client_uri && (\n                                                    <Button variant=\"outline\" size=\"sm\" asChild>\n                                                        <a href={metadata.client_uri} target=\"_blank\" rel=\"noopener noreferrer\">\n                                                            <ExternalLink className=\"h-3 w-3 mr-1\" />\n                                                            Website\n                                                        </a>\n                                                    </Button>\n                                                )}\n                                                {metadata.tos_uri && (\n                                                    <Button variant=\"outline\" size=\"sm\" asChild>\n                                                        <a href={metadata.tos_uri} target=\"_blank\" rel=\"noopener noreferrer\">\n                                                            Terms\n                                                        </a>\n                                                    </Button>\n                                                )}\n                                                {metadata.policy_uri && (\n                                                    <Button variant=\"outline\" size=\"sm\" asChild>\n                                                        <a href={metadata.policy_uri} target=\"_blank\" rel=\"noopener noreferrer\">\n                                                            Privacy\n                                                        </a>\n                                                    </Button>\n                                                )}\n                                            </div>\n                                        ) : null;\n                                    })()}\n                                </CardContent>\n                            </Card>\n                        ))}\n                    </div>\n                )}\n            </CardContent>\n            \n            {/* New Client Secret Dialog */}\n            <Dialog open={showSecretDialog} onOpenChange={setShowSecretDialog}>\n                <DialogContent>\n                    <DialogHeader>\n                        <DialogTitle className=\"flex items-center gap-2\">\n                            <CheckCircle2 className=\"h-5 w-5 text-green-600\" />\n                            Client Registered Successfully\n                        </DialogTitle>\n                        <DialogDescription>\n                            Copy and save these credentials securely. The secret will only be shown once.\n                        </DialogDescription>\n                    </DialogHeader>\n                    \n                    {newClientData && (\n                        <div className=\"space-y-4\">\n                            <div className=\"space-y-2\">\n                                <Label>Client ID</Label>\n                                <div className=\"flex gap-2\">\n                                    <Input\n                                        value={newClientData.clientId}\n                                        readOnly\n                                        className=\"font-mono text-sm\"\n                                    />\n                                    <Button\n                                        variant=\"outline\"\n                                        size=\"icon\"\n                                        onClick={() => copyToClipboard(newClientData.clientId, 'new-client-id')}\n                                    >\n                                        {copiedField === 'new-client-id' ? (\n                                            <Check className=\"h-4 w-4\" />\n                                        ) : (\n                                            <Copy className=\"h-4 w-4\" />\n                                        )}\n                                    </Button>\n                                </div>\n                            </div>\n                            \n                            {newClientData.clientSecret && (\n                                <div className=\"space-y-2\">\n                                    <Label>Client Secret</Label>\n                                    <div className=\"flex gap-2\">\n                                        <Input\n                                            value={newClientData.clientSecret}\n                                            readOnly\n                                            className=\"font-mono text-sm\"\n                                        />\n                                        <Button\n                                            variant=\"outline\"\n                                            size=\"icon\"\n                                            onClick={() => copyToClipboard(newClientData.clientSecret!, 'new-client-secret')}\n                                        >\n                                            {copiedField === 'new-client-secret' ? (\n                                                <Check className=\"h-4 w-4\" />\n                                            ) : (\n                                                <Copy className=\"h-4 w-4\" />\n                                            )}\n                                        </Button>\n                                    </div>\n                                    <div className=\"flex items-start gap-2 p-3 bg-amber-50 dark:bg-amber-950/20 border border-amber-200 dark:border-amber-900 rounded-md\">\n                                        <AlertCircle className=\"h-4 w-4 text-amber-600 dark:text-amber-500 shrink-0 mt-0.5\" />\n                                        <p className=\"text-xs text-amber-900 dark:text-amber-200\">\n                                            This secret will only be shown once. Make sure to save it securely.\n                                        </p>\n                                    </div>\n                                </div>\n                            )}\n                        </div>\n                    )}\n                    \n                    <DialogFooter>\n                        <Button onClick={() => {\n                            setShowSecretDialog(false)\n                            setNewClientData(null)\n                        }}>\n                            Done\n                        </Button>\n                    </DialogFooter>\n                </DialogContent>\n            </Dialog>\n        </Card>\n    )\n}\n\n// ============================================================================\n// Loading State\n// ============================================================================\n\nfunction OIDCProviderCardLoading({ className }: { className?: string }) {\n    return (\n        <Card className={cn(\"w-full\", className)}>\n            <CardHeader>\n                <div className=\"flex items-center gap-2\">\n                    <Loader2 className=\"h-5 w-5 animate-spin\" />\n                    <CardTitle>Loading OAuth2 clients...</CardTitle>\n                </div>\n            </CardHeader>\n        </Card>\n    )\n}\n\n// ============================================================================\n// Error State\n// ============================================================================\n\nfunction OIDCProviderCardError({ \n    message, \n    className, \n    onRetry \n}: { \n    message: string\n    className?: string\n    onRetry?: () => void\n}) {\n    return (\n        <Card className={cn(\"w-full border-destructive\", className)}>\n            <CardHeader>\n                <CardTitle className=\"flex items-center gap-2 text-destructive\">\n                    <AlertCircle className=\"h-5 w-5\" />\n                    Error Loading Clients\n                </CardTitle>\n                <CardDescription>{message}</CardDescription>\n            </CardHeader>\n            {onRetry && (\n                <CardFooter>\n                    <Button variant=\"outline\" onClick={onRetry}>\n                        Retry\n                    </Button>\n                </CardFooter>\n            )}\n        </Card>\n    )\n}\n","import { useEffect, useState } from \"react\"\n\nexport function useTheme() {\n    const [theme, setTheme] = useState<\"light\" | \"dark\">(\"light\")\n\n    useEffect(() => {\n        const checkTheme = () => {\n            const isDark =\n                document.documentElement.classList.contains(\"dark\") ||\n                document.documentElement\n                    .getAttribute(\"style\")\n                    ?.includes(\"color-scheme: dark\")\n            setTheme(isDark ? \"dark\" : \"light\")\n        }\n\n        // Initial check\n        checkTheme()\n\n        // Listen for changes to html tag\n        const observer = new MutationObserver((mutations) => {\n            for (const mutation of mutations) {\n                if (\n                    mutation.attributeName === \"style\" ||\n                    mutation.attributeName === \"class\"\n                ) {\n                    checkTheme()\n                }\n            }\n        })\n\n        observer.observe(document.documentElement, { attributes: true })\n\n        return () => {\n            observer.disconnect()\n        }\n    }, [])\n\n    return { theme }\n}\n","import type { Member } from \"better-auth/plugins/organization\"\nimport { useContext, useMemo } from \"react\"\nimport { AuthUIContext } from \"../lib/auth-ui-provider\"\n\nexport function useOrganizationMembers({\n    organizationId\n}: {\n    organizationId?: string\n} = {}) {\n    const { hooks } = useContext(AuthUIContext)\n\n    const {\n        data,\n        isPending,\n        refetch\n    } = hooks.useListMembers({\n        query: organizationId ? { organizationId } : undefined\n    })\n\n    return useMemo(\n        () => ({\n            data: data?.members as (Member & { user?: any })[] | undefined,\n            isPending,\n            refetch\n        }),\n        [data, isPending, refetch]\n    )\n}"]}