UNPKG

@bettercone/ui

Version:

Comprehensive Better Auth components: authentication, security, organizations, billing, team management, and usage analytics for React

1,534 lines (1,519 loc) 163 kB
import { ClassValue } from 'clsx'; import * as react_jsx_runtime from 'react/jsx-runtime'; import * as class_variance_authority_types from 'class-variance-authority/types'; import * as React$1 from 'react'; import { ComponentProps, ReactNode, ComponentType } from 'react'; import { VariantProps } from 'class-variance-authority'; import * as ProgressPrimitive from '@radix-ui/react-progress'; import * as SeparatorPrimitive from '@radix-ui/react-separator'; import * as AvatarPrimitive from '@radix-ui/react-avatar'; import * as RechartsPrimitive from 'recharts'; import * as DialogPrimitive from '@radix-ui/react-dialog'; import { Session, User as User$1, Account } from 'better-auth'; import { Organization, Member } from 'better-auth/plugins/organization'; import { BetterFetchError } from '@better-fetch/fetch'; declare const authLocalization: { INVALID_USERNAME_OR_PASSWORD: string; EMAIL_NOT_VERIFIED: string; UNEXPECTED_ERROR: string; USERNAME_IS_ALREADY_TAKEN: string; USERNAME_TOO_SHORT: string; USERNAME_TOO_LONG: string; INVALID_USERNAME: string; OTP_NOT_ENABLED: string; OTP_HAS_EXPIRED: string; TOTP_NOT_ENABLED: string; TWO_FACTOR_NOT_ENABLED: string; BACKUP_CODES_NOT_ENABLED: string; INVALID_BACKUP_CODE: string; INVALID_CODE: string; TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE: string; INVALID_TWO_FACTOR_COOKIE: string; SUBSCRIPTION_NOT_FOUND: string; SUBSCRIPTION_PLAN_NOT_FOUND: string; ALREADY_SUBSCRIBED_PLAN: string; UNABLE_TO_CREATE_CUSTOMER: string; FAILED_TO_FETCH_PLANS: string; EMAIL_VERIFICATION_REQUIRED: string; SUBSCRIPTION_NOT_ACTIVE: string; SUBSCRIPTION_NOT_SCHEDULED_FOR_CANCELLATION: string; INVALID_PHONE_NUMBER: string; PHONE_NUMBER_EXIST: string; INVALID_PHONE_NUMBER_OR_PASSWORD: string; OTP_NOT_FOUND: string; OTP_EXPIRED: string; INVALID_OTP: string; PHONE_NUMBER_NOT_VERIFIED: string; CHALLENGE_NOT_FOUND: string; YOU_ARE_NOT_ALLOWED_TO_REGISTER_THIS_PASSKEY: string; FAILED_TO_VERIFY_REGISTRATION: string; PASSKEY_NOT_FOUND: string; AUTHENTICATION_FAILED: string; UNABLE_TO_CREATE_SESSION: string; FAILED_TO_UPDATE_PASSKEY: string; YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_ORGANIZATION: string; YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS: string; ORGANIZATION_ALREADY_EXISTS: string; ORGANIZATION_NOT_FOUND: string; USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION: string; YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION: string; YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION: string; NO_ACTIVE_ORGANIZATION: string; USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION: string; MEMBER_NOT_FOUND: string; ROLE_NOT_FOUND: string; YOU_ARE_NOT_ALLOWED_TO_CREATE_A_NEW_TEAM: string; TEAM_ALREADY_EXISTS: string; TEAM_NOT_FOUND: string; YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER: string; YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER: string; YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION: string; USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION: string; INVITATION_NOT_FOUND: string; YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION: string; YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION: string; INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION: string; YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE: string; FAILED_TO_RETRIEVE_INVITATION: string; YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_TEAMS: string; UNABLE_TO_REMOVE_LAST_TEAM: string; YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER: string; ORGANIZATION_MEMBERSHIP_LIMIT_REACHED: string; YOU_ARE_NOT_ALLOWED_TO_CREATE_TEAMS_IN_THIS_ORGANIZATION: string; YOU_ARE_NOT_ALLOWED_TO_DELETE_TEAMS_IN_THIS_ORGANIZATION: string; YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_TEAM: string; YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_TEAM: string; INVITATION_LIMIT_REACHED: string; INVALID_SESSION_TOKEN: string; PASSWORD_COMPROMISED: string; INVALID_OAUTH_CONFIGURATION: string; INVALID_EMAIL: string; USER_NOT_FOUND: string; TOO_MANY_ATTEMPTS: string; MISSING_SECRET_KEY: string; SERVICE_UNAVAILABLE: string; VERIFICATION_FAILED: string; MISSING_RESPONSE: string; UNKNOWN_ERROR: string; INVALID_METADATA_TYPE: string; REFILL_AMOUNT_AND_INTERVAL_REQUIRED: string; REFILL_INTERVAL_AND_AMOUNT_REQUIRED: string; USER_BANNED: string; UNAUTHORIZED_SESSION: string; KEY_NOT_FOUND: string; KEY_DISABLED: string; KEY_EXPIRED: string; USAGE_EXCEEDED: string; KEY_NOT_RECOVERABLE: string; EXPIRES_IN_IS_TOO_SMALL: string; EXPIRES_IN_IS_TOO_LARGE: string; INVALID_REMAINING: string; INVALID_PREFIX_LENGTH: string; INVALID_NAME_LENGTH: string; METADATA_DISABLED: string; RATE_LIMIT_EXCEEDED: string; NO_VALUES_TO_UPDATE: string; KEY_DISABLED_EXPIRATION: string; INVALID_API_KEY: string; INVALID_USER_ID_FROM_API_KEY: string; INVALID_API_KEY_GETTER_RETURN_TYPE: string; SERVER_ONLY_PROPERTY: string; FAILED_TO_CREATE_USER: string; COULD_NOT_CREATE_SESSION: string; ANONYMOUS_USERS_CANNOT_SIGN_IN_AGAIN_ANONYMOUSLY: string; USER_ALREADY_EXISTS: string; YOU_CANNOT_BAN_YOURSELF: string; YOU_ARE_NOT_ALLOWED_TO_CHANGE_USERS_ROLE: string; YOU_ARE_NOT_ALLOWED_TO_CREATE_USERS: string; YOU_ARE_NOT_ALLOWED_TO_LIST_USERS: string; YOU_ARE_NOT_ALLOWED_TO_LIST_USERS_SESSIONS: string; YOU_ARE_NOT_ALLOWED_TO_BAN_USERS: string; YOU_ARE_NOT_ALLOWED_TO_IMPERSONATE_USERS: string; YOU_ARE_NOT_ALLOWED_TO_REVOKE_USERS_SESSIONS: string; YOU_ARE_NOT_ALLOWED_TO_DELETE_USERS: string; YOU_ARE_NOT_ALLOWED_TO_SET_USERS_PASSWORD: string; BANNED_USER: string; FAILED_TO_CREATE_SESSION: string; FAILED_TO_UPDATE_USER: string; FAILED_TO_GET_SESSION: string; INVALID_PASSWORD: string; INVALID_EMAIL_OR_PASSWORD: string; SOCIAL_ACCOUNT_ALREADY_LINKED: string; PROVIDER_NOT_FOUND: string; INVALID_TOKEN: string; ID_TOKEN_NOT_SUPPORTED: string; FAILED_TO_GET_USER_INFO: string; USER_EMAIL_NOT_FOUND: string; PASSWORD_TOO_SHORT: string; PASSWORD_TOO_LONG: string; EMAIL_CAN_NOT_BE_UPDATED: string; CREDENTIAL_ACCOUNT_NOT_FOUND: string; SESSION_EXPIRED: string; FAILED_TO_UNLINK_LAST_ACCOUNT: string; ACCOUNT_NOT_FOUND: string; USER_ALREADY_HAS_PASSWORD: string; /** @default "App" */ APP: string; /** @default "Account" */ ACCOUNT: string; /** @default "Accounts" */ ACCOUNTS: string; /** @default "Manage your currently signed in accounts." */ ACCOUNTS_DESCRIPTION: string; /** @default "Sign in to an additional account." */ ACCOUNTS_INSTRUCTIONS: string; /** @default "Add Account" */ ADD_ACCOUNT: string; /** @default "Add Passkey" */ ADD_PASSKEY: string; /** @default "Already have an account?" */ ALREADY_HAVE_AN_ACCOUNT: string; /** @default "Avatar" */ AVATAR: string; /** @default "Click on the avatar to upload a custom one from your files." */ AVATAR_DESCRIPTION: string; /** @default "An avatar is optional but strongly recommended." */ AVATAR_INSTRUCTIONS: string; /** @default "Backup code is required" */ BACKUP_CODE_REQUIRED: string; /** @default "Backup Codes" */ BACKUP_CODES: string; /** @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." */ BACKUP_CODES_DESCRIPTION: string; /** @default "Backup Code." */ BACKUP_CODE_PLACEHOLDER: string; /** @default "Backup Code" */ BACKUP_CODE: string; /** @default "Cancel" */ CANCEL: string; /** @default "Change Password" */ CHANGE_PASSWORD: string; /** @default "Enter your current password and a new password." */ CHANGE_PASSWORD_DESCRIPTION: string; /** @default "Please use 8 characters at minimum." */ CHANGE_PASSWORD_INSTRUCTIONS: string; /** @default "Your password has been changed." */ CHANGE_PASSWORD_SUCCESS: string; /** @default "Confirm Password" */ CONFIRM_PASSWORD: string; /** @default "Confirm Password" */ CONFIRM_PASSWORD_PLACEHOLDER: string; /** @default "Confirm password is required" */ CONFIRM_PASSWORD_REQUIRED: string; /** @default "Continue with Authenticator" */ CONTINUE_WITH_AUTHENTICATOR: string; /** @default "Copied to clipboard" */ COPIED_TO_CLIPBOARD: string; /** @default "Copy to clipboard" */ COPY_TO_CLIPBOARD: string; /** @default "Copy all codes" */ COPY_ALL_CODES: string; /** @default "Continue" */ CONTINUE: string; /** @default "Loading..." */ LOADING: string; /** @default "Current Password" */ CURRENT_PASSWORD: string; /** @default "Current Password" */ CURRENT_PASSWORD_PLACEHOLDER: string; /** @default "Current Session" */ CURRENT_SESSION: string; /** @default "Delete" */ DELETE: string; /** @default "Delete Avatar" */ DELETE_AVATAR: string; /** @default "Delete Account" */ DELETE_ACCOUNT: string; /** @default "Permanently remove your account and all of its contents. This action is not reversible, so please continue with caution." */ DELETE_ACCOUNT_DESCRIPTION: string; /** @default "Please confirm the deletion of your account. This action is not reversible, so please continue with caution." */ DELETE_ACCOUNT_INSTRUCTIONS: string; /** @default "Please check your email to verify the deletion of your account." */ DELETE_ACCOUNT_VERIFY: string; /** @default "Your account has been deleted." */ DELETE_ACCOUNT_SUCCESS: string; /** @default "Disable Two-Factor" */ DISABLE_TWO_FACTOR: string; /** @default "Choose a provider to login to your account" */ DISABLED_CREDENTIALS_DESCRIPTION: string; /** @default "Don't have an account?" */ DONT_HAVE_AN_ACCOUNT: string; /** @default "Done" */ DONE: string; /** @default "Email" */ EMAIL: string; /** @default "Enter the email address you want to use to log in." */ EMAIL_DESCRIPTION: string; /** @default "Please enter a valid email address." */ EMAIL_INSTRUCTIONS: string; /** @default "Email is the same" */ EMAIL_IS_THE_SAME: string; /** @default "m@example.com" */ EMAIL_PLACEHOLDER: string; /** @default "Email address is required" */ EMAIL_REQUIRED: string; /** @default "Please check your email to verify the change." */ EMAIL_VERIFY_CHANGE: string; /** @default "Please check your email for the verification link." */ EMAIL_VERIFICATION: string; /** @default "Enable Two-Factor" */ ENABLE_TWO_FACTOR: string; /** @default "is invalid" */ IS_INVALID: string; /** @default "is required" */ IS_REQUIRED: string; /** @default "is the same" */ IS_THE_SAME: string; /** @default "Forgot authenticator?" */ FORGOT_AUTHENTICATOR: string; /** @default "Forgot Password" */ FORGOT_PASSWORD: string; /** @default "Send reset link" */ FORGOT_PASSWORD_ACTION: string; /** @default "Enter your email to reset your password" */ FORGOT_PASSWORD_DESCRIPTION: string; /** @default "Check your email for the password reset link." */ FORGOT_PASSWORD_EMAIL: string; /** @default "Forgot your password?" */ FORGOT_PASSWORD_LINK: string; /** @default "Link" */ LINK: string; /** @default "Magic Link" */ MAGIC_LINK: string; /** @default "Send magic link" */ MAGIC_LINK_ACTION: string; /** @default "Enter your email to receive a magic link" */ MAGIC_LINK_DESCRIPTION: string; /** @default "Check your email for the magic link" */ MAGIC_LINK_EMAIL: string; /** @default "Email Code" */ EMAIL_OTP: string; /** @default "Send code" */ EMAIL_OTP_SEND_ACTION: string; /** @default "Verify code" */ EMAIL_OTP_VERIFY_ACTION: string; /** @default "Enter your email to receive a code" */ EMAIL_OTP_DESCRIPTION: string; /** @default "Please check your email for the verification code." */ EMAIL_OTP_VERIFICATION_SENT: string; /** @default "Name" */ NAME: string; /** @default "Please enter your full name, or a display name." */ NAME_DESCRIPTION: string; /** @default "Please use 32 characters at maximum." */ NAME_INSTRUCTIONS: string; /** @default "Name" */ NAME_PLACEHOLDER: string; /** @default "New Password" */ NEW_PASSWORD: string; /** @default "New Password" */ NEW_PASSWORD_PLACEHOLDER: string; /** @default "New password is required" */ NEW_PASSWORD_REQUIRED: string; /** @default "One-Time Password" */ ONE_TIME_PASSWORD: string; /** @default "Or continue with" */ OR_CONTINUE_WITH: string; /** @default "Passkey" */ PASSKEY: string; /** @default "Passkeys" */ PASSKEYS: string; /** @default "Manage your passkeys for secure access." */ PASSKEYS_DESCRIPTION: string; /** @default "Securely access your account without a password." */ PASSKEYS_INSTRUCTIONS: string; /** @default "Personal Account" */ PERSONAL_ACCOUNT: string; /** @default "API Keys" */ API_KEYS: string; /** @default "Manage your API keys for secure access." */ API_KEYS_DESCRIPTION: string; /** @default "Generate API keys to access your account programmatically." */ API_KEYS_INSTRUCTIONS: string; /** @default "Create API Key" */ CREATE_API_KEY: string; /** @default "Enter a unique name for your API key to differentiate it from other keys." */ CREATE_API_KEY_DESCRIPTION: string; /** @default "New API Key" */ API_KEY_NAME_PLACEHOLDER: string; /** @default "API Key Created" */ API_KEY_CREATED: string; /** @default "Please copy your API key and store it in a safe place. For security reasons we cannot show it again." */ CREATE_API_KEY_SUCCESS: string; /** @default "Never Expires" */ NEVER_EXPIRES: string; /** @default "Expires" */ EXPIRES: string; /** @default "No Expiration" */ NO_EXPIRATION: string; /** @default "Create Organization" */ CREATE_ORGANIZATION: string; /** @default "Organization" */ ORGANIZATION: string; /** @default "Name" */ ORGANIZATION_NAME: string; /** @default "Acme Inc." */ ORGANIZATION_NAME_PLACEHOLDER: string; /** @default "This is your organization's visible name." */ ORGANIZATION_NAME_DESCRIPTION: string; /** @default "Please use 32 characters at maximum." */ ORGANIZATION_NAME_INSTRUCTIONS: string; /** @default "Slug URL" */ ORGANIZATION_SLUG: string; /** @default "This is your organization's URL namespace." */ ORGANIZATION_SLUG_DESCRIPTION: string; /** @default "Please use 48 characters at maximum." */ ORGANIZATION_SLUG_INSTRUCTIONS: string; /** @default "acme-inc" */ ORGANIZATION_SLUG_PLACEHOLDER: string; /** @default "Organization created successfully" */ CREATE_ORGANIZATION_SUCCESS: string; /** @default "Password" */ PASSWORD: string; /** @default "Password" */ PASSWORD_PLACEHOLDER: string; /** @default "Password is required" */ PASSWORD_REQUIRED: string; /** @default "Passwords do not match" */ PASSWORDS_DO_NOT_MATCH: string; /** @default "Providers" */ PROVIDERS: string; /** @default "Connect your account with a third-party service." */ PROVIDERS_DESCRIPTION: string; /** @default "Recover Account" */ RECOVER_ACCOUNT: string; /** @default "Recover account" */ RECOVER_ACCOUNT_ACTION: string; /** @default "Please enter a backup code to access your account" */ RECOVER_ACCOUNT_DESCRIPTION: string; /** @default "Remember me" */ REMEMBER_ME: string; /** @default "Resend code" */ RESEND_CODE: string; /** @default "Resend verification email" */ RESEND_VERIFICATION_EMAIL: string; /** @default "Reset Password" */ RESET_PASSWORD: string; /** @default "Save new password" */ RESET_PASSWORD_ACTION: string; /** @default "Enter your new password below" */ RESET_PASSWORD_DESCRIPTION: string; /** @default "Password reset successfully" */ RESET_PASSWORD_SUCCESS: string; /** @default "Request failed" */ REQUEST_FAILED: string; /** @default "Revoke" */ REVOKE: string; /** @default "Delete API Key" */ DELETE_API_KEY: string; /** @default "Are you sure you want to delete this API key?" */ DELETE_API_KEY_CONFIRM: string; /** @default "API Key" */ API_KEY: string; /** @default "Sign In" */ SIGN_IN: string; /** @default "Login" */ SIGN_IN_ACTION: string; /** @default "Enter your email below to login to your account" */ SIGN_IN_DESCRIPTION: string; /** @default "Enter your username or email below to login to your account" */ SIGN_IN_USERNAME_DESCRIPTION: string; /** @default "Sign in with" */ SIGN_IN_WITH: string; /** @default "Sign in anonymously" */ SIGN_IN_ANONYMOUSLY: string; /** @default "Continue as guest" */ ANONYMOUS_SIGN_IN: string; /** @default "Sign in with Ethereum" */ SIGN_IN_WITH_ETHEREUM: string; /** @default "Connect your Ethereum wallet" */ SIWE_SIGN_IN: string; /** @default "Sign Out" */ SIGN_OUT: string; /** @default "Sign Up" */ SIGN_UP: string; /** @default "Create an account" */ SIGN_UP_ACTION: string; /** @default "Enter your information to create an account" */ SIGN_UP_DESCRIPTION: string; /** @default "Check your email for the verification link." */ SIGN_UP_EMAIL: string; /** @default "Sessions" */ SESSIONS: string; /** @default "Manage your active sessions and revoke access." */ SESSIONS_DESCRIPTION: string; /** @default "Set Password" */ SET_PASSWORD: string; /** @default "Click the button below to receive an email to set up a password for your account." */ SET_PASSWORD_DESCRIPTION: string; /** @default "Settings" */ SETTINGS: string; /** @default "Save" */ SAVE: string; /** @default "Security" */ SECURITY: string; /** @default "Switch Account" */ SWITCH_ACCOUNT: string; /** @default "Trust this device" */ TRUST_DEVICE: string; /** @default "Two-Factor" */ TWO_FACTOR: string; /** @default "Verify code" */ TWO_FACTOR_ACTION: string; /** @default "Please enter your one-time password to continue" */ TWO_FACTOR_DESCRIPTION: string; /** @default "Add an extra layer of security to your account." */ TWO_FACTOR_CARD_DESCRIPTION: string; /** @default "Please enter your password to disable 2FA." */ TWO_FACTOR_DISABLE_INSTRUCTIONS: string; /** @default "Please enter your password to enable 2FA" */ TWO_FACTOR_ENABLE_INSTRUCTIONS: string; /** @default "Two-factor authentication has been enabled" */ TWO_FACTOR_ENABLED: string; /** @default "Two-Factor Authentication has been disabled" */ TWO_FACTOR_DISABLED: string; /** @default "Two-Factor Authentication" */ TWO_FACTOR_PROMPT: string; /** @default "Scan the QR Code with your Authenticator" */ TWO_FACTOR_TOTP_LABEL: string; /** @default "Send verification code" */ SEND_VERIFICATION_CODE: string; /** @default "Unlink" */ UNLINK: string; /** @default "Updated successfully" */ UPDATED_SUCCESSFULLY: string; /** @default "Username" */ USERNAME: string; /** @default "Enter the username you want to use to log in." */ USERNAME_DESCRIPTION: string; /** @default "Please use 32 characters at maximum." */ USERNAME_INSTRUCTIONS: string; /** @default "Username" */ USERNAME_PLACEHOLDER: string; /** @default "Username or email" */ SIGN_IN_USERNAME_PLACEHOLDER: string; /** @default "Verify Your Email" */ VERIFY_YOUR_EMAIL: string; /** @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." */ VERIFY_YOUR_EMAIL_DESCRIPTION: string; /** @default "Go back" */ GO_BACK: string; /** @default "Your session is not fresh. Please sign in again." */ SESSION_NOT_FRESH: string; /** @default "Upload Avatar" */ UPLOAD_AVATAR: string; /** @default "Logo" */ LOGO: string; /** @default "Click on the logo to upload a custom one from your files." */ LOGO_DESCRIPTION: string; /** @default "A logo is optional but strongly recommended." */ LOGO_INSTRUCTIONS: string; /** @default "Upload" */ UPLOAD: string; /** @default "Upload Logo" */ UPLOAD_LOGO: string; /** @default "Delete Logo" */ DELETE_LOGO: string; /** @default "Privacy Policy" */ PRIVACY_POLICY: string; /** @default "Terms of Service" */ TERMS_OF_SERVICE: string; /** @default "This site is protected by reCAPTCHA." */ PROTECTED_BY_RECAPTCHA: string; /** @default "By continuing, you agree to the" */ BY_CONTINUING_YOU_AGREE: string; /** @default "User" */ USER: string; /** @default "Organizations" */ ORGANIZATIONS: string; /** @default "Manage your organizations and memberships." */ ORGANIZATIONS_DESCRIPTION: string; /** @default "Create an organization to collaborate with other users." */ ORGANIZATIONS_INSTRUCTIONS: string; /** @default "Leave Organization" */ LEAVE_ORGANIZATION: string; /** @default "Are you sure you want to leave this organization?" */ LEAVE_ORGANIZATION_CONFIRM: string; /** @default "You have successfully left the organization." */ LEAVE_ORGANIZATION_SUCCESS: string; /** @default "Manage Organization" */ MANAGE_ORGANIZATION: string; /** @default "Remove Member" */ REMOVE_MEMBER: string; /** @default "Are you sure you want to remove this member from the organization?" */ REMOVE_MEMBER_CONFIRM: string; /** @default "Member removed successfully" */ REMOVE_MEMBER_SUCCESS: string; /** @default "Invite Member" */ INVITE_MEMBER: string; /** @default "Members" */ MEMBERS: string; /** @default "Add or remove members and manage their roles." */ MEMBERS_DESCRIPTION: string; /** @default "Invite new members to your organization." */ MEMBERS_INSTRUCTIONS: string; /** @default "Send an invitation to add a new member to your organization." */ INVITE_MEMBER_DESCRIPTION: string; /** @default "Role" */ ROLE: string; /** @default "Select a role" */ SELECT_ROLE: string; /** @default "Admin" */ ADMIN: string; /** @default "Member" */ MEMBER: string; /** @default "Guest" */ GUEST: string; /** @default "Owner" */ OWNER: string; /** @default "Update the role for this member" */ UPDATE_ROLE_DESCRIPTION: string; /** @default "Update Role" */ UPDATE_ROLE: string; /** @default "Member role updated successfully" */ MEMBER_ROLE_UPDATED: string; /** @default "Send Invitation" */ SEND_INVITATION: string; /** @default "Invitation sent successfully" */ SEND_INVITATION_SUCCESS: string; /** @default "Pending Invitations" */ PENDING_INVITATIONS: string; /** @default "Manage pending invitations to your organization." */ PENDING_INVITATIONS_DESCRIPTION: string; /** @default "Invitations you've received from organizations." */ PENDING_USER_INVITATIONS_DESCRIPTION: string; /** @default "Cancel Invitation" */ CANCEL_INVITATION: string; /** @default "Invitation cancelled successfully" */ INVITATION_CANCELLED: string; /** @default "Accept Invitation" */ ACCEPT_INVITATION: string; /** @default "You have been invited to join an organization." */ ACCEPT_INVITATION_DESCRIPTION: string; /** @default "Invitation accepted successfully" */ INVITATION_ACCEPTED: string; /** @default "Invitation rejected successfully" */ INVITATION_REJECTED: string; /** @default "Accept" */ ACCEPT: string; /** @default "Reject" */ REJECT: string; /** @default "This invitation has expired" */ INVITATION_EXPIRED: string; /** @default "Delete Organization" */ DELETE_ORGANIZATION: string; /** @default "Permanently remove your organization and all of its contents. This action is not reversible — please continue with caution." */ DELETE_ORGANIZATION_DESCRIPTION: string; /** @default "Organization deleted successfully" */ DELETE_ORGANIZATION_SUCCESS: string; /** @default "Enter the organization slug to continue:" */ DELETE_ORGANIZATION_INSTRUCTIONS: string; /** @default "Organization slug is required" */ SLUG_REQUIRED: string; /** @default "The slug does not match" */ SLUG_DOES_NOT_MATCH: string; /** @default "Unknown" */ UNKNOWN: string; /** @default "Enter Your Device Code" */ DEVICE_AUTH_TITLE: string; /** @default "Enter the code shown on your device to continue." */ DEVICE_AUTH_DESCRIPTION: string; /** @default "Device Code" */ DEVICE_CODE_LABEL: string; /** @default "ABCD-1234" */ DEVICE_CODE_PLACEHOLDER: string; /** @default "Please enter a valid device code" */ DEVICE_CODE_REQUIRED: string; /** @default "Invalid or expired code" */ DEVICE_CODE_INVALID: string; /** @default "Auth client not configured" */ DEVICE_CODE_NO_CLIENT: string; /** @default "Format: XXXX-XXXX" */ DEVICE_CODE_FORMAT: string; /** @default "Continue" */ DEVICE_AUTH_SUBMIT: string; /** @default "Device Authorization Request" */ DEVICE_APPROVAL_TITLE: string; /** @default "A device is requesting access to your account." */ DEVICE_APPROVAL_DESCRIPTION: string; /** @default "Code" */ DEVICE_APPROVAL_CODE_LABEL: string; /** @default "Application" */ DEVICE_APPROVAL_APP_LABEL: string; /** @default "Requested Permissions" */ DEVICE_APPROVAL_SCOPES_LABEL: string; /** @default "Approve" */ DEVICE_APPROVE_BUTTON: string; /** @default "Deny" */ DEVICE_DENY_BUTTON: string; /** @default "Device approved successfully" */ DEVICE_APPROVED_SUCCESS: string; /** @default "Device denied" */ DEVICE_DENIED_SUCCESS: string; /** @default "Failed to approve device" */ DEVICE_APPROVE_ERROR: string; /** @default "Failed to deny device" */ DEVICE_DENY_ERROR: string; /** @default "Only approve if you initiated this request on your device." */ DEVICE_APPROVAL_NOTICE: string; /** @default "Sign In on Your Computer" */ DEVICE_DISPLAY_TITLE: string; /** @default "Follow the steps below to complete authentication" */ DEVICE_DISPLAY_DESCRIPTION: string; /** @default "Visit this URL:" */ DEVICE_DISPLAY_URL_LABEL: string; /** @default "Enter this code:" */ DEVICE_DISPLAY_CODE_LABEL: string; /** @default "Scan this QR code to authorize" */ DEVICE_SCAN_QR: string; /** @default "or scan QR code" */ DEVICE_OR_SCAN_QR: string; /** @default "Copy Code" */ DEVICE_COPY_CODE: string; /** @default "Copied!" */ COPIED: string; /** @default "Expires in" */ DEVICE_EXPIRES_IN: string; /** @default "Checking for approval..." */ DEVICE_POLLING_STATUS: string; /** @default "Approved! Redirecting..." */ DEVICE_APPROVED: string; /** @default "Code expired. Please try again." */ DEVICE_EXPIRED: string; /** @default "Access denied" */ DEVICE_ACCESS_DENIED: string; /** @default "SSO Configuration" */ SSO_CONFIG: string; /** @default "Configure SAML and OIDC single sign-on for your organization" */ SSO_CONFIG_DESCRIPTION: string; /** @default "Provider Type" */ SSO_PROVIDER_TYPE: string; /** @default "OIDC (OpenID Connect)" */ SSO_TYPE_OIDC: string; /** @default "SAML 2.0" */ SSO_TYPE_SAML: string; /** @default "Provider ID" */ SSO_PROVIDER_ID: string; /** @default "Unique identifier for this SSO provider" */ SSO_PROVIDER_ID_DESCRIPTION: string; /** @default "my-company-sso" */ SSO_PROVIDER_ID_PLACEHOLDER: string; /** @default "Issuer" */ SSO_ISSUER: string; /** @default "Identity provider issuer URL" */ SSO_ISSUER_DESCRIPTION: string; /** @default "https://idp.example.com" */ SSO_ISSUER_PLACEHOLDER: string; /** @default "Domain" */ SSO_DOMAIN: string; /** @default "Email domain for automatic provider matching" */ SSO_DOMAIN_DESCRIPTION: string; /** @default "example.com" */ SSO_DOMAIN_PLACEHOLDER: string; /** @default "Organization" */ SSO_ORGANIZATION: string; /** @default "Link to organization (optional)" */ SSO_ORGANIZATION_DESCRIPTION: string; /** @default "OIDC Configuration" */ SSO_OIDC_CONFIG: string; /** @default "Client ID" */ SSO_CLIENT_ID: string; /** @default "Client Secret" */ SSO_CLIENT_SECRET: string; /** @default "Authorization Endpoint" */ SSO_AUTH_ENDPOINT: string; /** @default "Token Endpoint" */ SSO_TOKEN_ENDPOINT: string; /** @default "JWKS Endpoint" */ SSO_JWKS_ENDPOINT: string; /** @default "Discovery Endpoint" */ SSO_DISCOVERY_ENDPOINT: string; /** @default "Scopes" */ SSO_SCOPES: string; /** @default "openid email profile" */ SSO_SCOPES_PLACEHOLDER: string; /** @default "Enable PKCE" */ SSO_PKCE_ENABLED: string; /** @default "Use PKCE for additional security" */ SSO_PKCE_DESCRIPTION: string; /** @default "SAML Configuration" */ SSO_SAML_CONFIG: string; /** @default "Entry Point" */ SSO_SAML_ENTRY_POINT: string; /** @default "SAML SSO login URL" */ SSO_SAML_ENTRY_POINT_DESCRIPTION: string; /** @default "Certificate" */ SSO_SAML_CERT: string; /** @default "IdP signing certificate (PEM format)" */ SSO_SAML_CERT_DESCRIPTION: string; /** @default "Callback URL" */ SSO_CALLBACK_URL: string; /** @default "SAML assertion consumer service URL" */ SSO_CALLBACK_URL_DESCRIPTION: string; /** @default "Entity ID / Audience" */ SSO_ENTITY_ID: string; /** @default "Service provider entity identifier" */ SSO_ENTITY_ID_DESCRIPTION: string; /** @default "IdP Metadata XML" */ SSO_IDP_METADATA: string; /** @default "Paste IdP metadata XML or upload file" */ SSO_IDP_METADATA_DESCRIPTION: string; /** @default "SP Metadata" */ SSO_SP_METADATA: string; /** @default "Service Provider metadata for IdP configuration" */ SSO_SP_METADATA_DESCRIPTION: string; /** @default "Advanced Options" */ SSO_ADVANCED_OPTIONS: string; /** @default "Show Advanced" */ SSO_SHOW_ADVANCED: string; /** @default "Hide Advanced" */ SSO_HIDE_ADVANCED: string; /** @default "Attribute Mapping" */ SSO_ATTRIBUTE_MAPPING: string; /** @default "Map SSO attributes to user fields" */ SSO_ATTRIBUTE_MAPPING_DESCRIPTION: string; /** @default "User ID Attribute" */ SSO_MAP_ID: string; /** @default "Email Attribute" */ SSO_MAP_EMAIL: string; /** @default "Name Attribute" */ SSO_MAP_NAME: string; /** @default "First Name Attribute" */ SSO_MAP_FIRST_NAME: string; /** @default "Last Name Attribute" */ SSO_MAP_LAST_NAME: string; /** @default "Email Verified Attribute" */ SSO_MAP_EMAIL_VERIFIED: string; /** @default "Profile Image Attribute" */ SSO_MAP_IMAGE: string; /** @default "Extra Fields (JSON)" */ SSO_EXTRA_FIELDS: string; /** @default "Map additional custom attributes as JSON" */ SSO_EXTRA_FIELDS_DESCRIPTION: string; /** @default "Test Connection" */ SSO_TEST_CONNECTION: string; /** @default "Testing..." */ SSO_TESTING: string; /** @default "Connection successful!" */ SSO_TEST_SUCCESS: string; /** @default "Connection failed" */ SSO_TEST_FAILED: string; /** @default "Copy SP Metadata" */ SSO_COPY_SP_METADATA: string; /** @default "Fetch SP Metadata" */ SSO_FETCH_SP_METADATA: string; /** @default "SSO provider created successfully" */ SSO_PROVIDER_CREATED: string; /** @default "SSO provider updated successfully" */ SSO_PROVIDER_UPDATED: string; /** @default "SSO provider deleted successfully" */ SSO_PROVIDER_DELETED: string; /** @default "Delete SSO Provider" */ SSO_DELETE_PROVIDER: string; /** @default "Are you sure? This will remove SSO authentication for this provider." */ SSO_DELETE_CONFIRM: string; /** @default "Upload File" */ SSO_UPLOAD_FILE: string; /** @default "Or paste metadata XML" */ SSO_PASTE_METADATA: string; }; type AuthLocalization = Partial<typeof authLocalization>; type PasswordValidation = { /** * Maximum password length */ maxLength?: number; /** * Minimum password length */ minLength?: number; /** * Password validation regex */ regex?: RegExp; }; declare function cn(...inputs: ClassValue[]): string; declare function getViewByPath<T extends object>(viewPaths: T, path?: string): Extract<keyof T, string>; /** * Better Auth Client Interface * Defines the minimal interface components need from the auth client * Works with any Better Auth client implementation (@convex-dev/better-auth, better-auth/react, etc.) */ interface BetterAuthSession { user: { id: string; email?: string; name?: string; image?: string; [key: string]: any; }; session: { id: string; userId: string; expiresAt: Date; [key: string]: any; }; [key: string]: any; } interface BetterAuthOrganization { id: string; name: string; slug?: string; logo?: string; metadata?: Record<string, any>; createdAt?: Date; [key: string]: any; } interface BetterAuthSubscription { id: string; referenceId: string; status: "active" | "trialing" | "past_due" | "canceled" | "unpaid"; planId?: string; currentPeriodStart?: Date; currentPeriodEnd?: Date; cancelAt?: Date; canceledAt?: Date; trialEnd?: Date; metadata?: Record<string, any>; [key: string]: any; } interface BetterAuthClient { useSession: () => { data: BetterAuthSession | null; isPending: boolean; error?: Error; }; useListOrganizations: () => { data: BetterAuthOrganization[] | null; isPending: boolean; error?: Error; }; subscription?: { list: () => Promise<{ data?: BetterAuthSubscription[]; error?: Error; }>; createPortalSession?: (referenceId: string) => Promise<{ url?: string; error?: Error; }>; }; [key: string]: any; } /** * Localization types for billing components * Following better-auth-ui localization patterns */ interface BillingLocalization { currentPlan: string; planStatus: string; nextBillingDate: string; manageBilling: string; upgradeNow: string; cancelSubscription: string; noActiveSubscription: string; startSubscription: string; viewPlans: string; manageSubscription: string; billingPortal: string; paymentMethod: string; managePaymentDescription: string; configuredInStripe: string; manageViaPortal: string; stripe: string; organizationBilling: string; updatePaymentMethod: string; viewDownloadInvoices: string; invoicesAppearHere: string; viewAllInvoices: string; usage: string; limit: string; remaining: string; unlimited: string; usageWarning: string; upgradeToIncreaseLimit: string; openBillingPortal: string; managingBilling: string; invoiceHistory: string; date: string; amount: string; status: string; download: string; noInvoices: string; actions: string; view: string; paid: string; open: string; void: string; uncollectible: string; invoicesWillAppear: string; loadingInvoices: string; perMonth: string; perYear: string; mostPopular: string; currentPlanBadge: string; selectPlan: string; contactSales: string; active: string; canceled: string; pastDue: string; trialing: string; incomplete: string; unpaid: string; paused: string; } /** * Subscription types compatible with Better Auth Stripe plugin * @see https://www.better-auth.com/docs/plugins/stripe */ /** * Subscription status from Stripe */ type SubscriptionStatus = "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid"; /** * Subscription data structure * Compatible with Better Auth Stripe plugin schema */ interface Subscription { /** * Unique identifier for the subscription */ id: string; /** * Plan name (e.g., "pro", "team", "enterprise") */ plan: string; /** * Reference ID (user ID or organization ID) */ referenceId: string; /** * Stripe customer ID */ stripeCustomerId?: string; /** * Stripe subscription ID */ stripeSubscriptionId?: string; /** * Current subscription status */ status: SubscriptionStatus; /** * Start of current billing period */ periodStart?: Date; /** * End of current billing period */ periodEnd?: Date; /** * Whether subscription will cancel at period end */ cancelAtPeriodEnd?: boolean; /** * Number of seats (for team plans) */ seats?: number; /** * Trial start date */ trialStart?: Date; /** * Trial end date */ trialEnd?: Date; /** * Created timestamp */ createdAt?: Date; /** * Updated timestamp */ updatedAt?: Date; } /** * Payment method types */ type PaymentMethodType = "card" | "bank_account" | "paypal" | "us_bank_account"; /** * Payment method data structure */ interface PaymentMethod { /** * Unique identifier for the payment method */ id: string; /** * Payment method type */ type: PaymentMethodType; /** * Last 4 digits of card/account */ last4?: string; /** * Card brand (Visa, Mastercard, etc.) */ brand?: string; /** * Card expiry month (1-12) */ expiryMonth?: number; /** * Card expiry year */ expiryYear?: number; /** * Whether this is the default payment method */ isDefault?: boolean; /** * Stripe payment method ID */ stripePaymentMethodId?: string; } /** * Invoice status from Stripe */ type InvoiceStatus = "draft" | "open" | "paid" | "void" | "uncollectible"; /** * Invoice data structure */ interface Invoice { /** * Unique identifier for the invoice */ id: string; /** * Invoice number */ number?: string; /** * Total amount in smallest currency unit (cents) */ amount: number; /** * Amount paid */ amountPaid?: number; /** * Amount remaining */ amountRemaining?: number; /** * Currency code (USD, EUR, etc.) */ currency: string; /** * Invoice status */ status: InvoiceStatus; /** * Invoice creation date */ createdAt: Date; /** * Invoice due date */ dueDate?: Date; /** * Date invoice was paid */ paidAt?: Date; /** * Hosted invoice URL (Stripe) */ invoiceUrl?: string; /** * PDF download URL */ invoicePdf?: string; /** * Stripe invoice ID */ stripeInvoiceId?: string; /** * Description */ description?: string; } /** * Subscription plan configuration */ interface SubscriptionPlan { /** * Plan name */ name: string; /** * Stripe price ID */ priceId?: string; /** * Stripe price lookup key (alternative to priceId) */ lookupKey?: string; /** * Annual discount price ID */ annualDiscountPriceId?: string; /** * Annual discount lookup key */ annualDiscountLookupKey?: string; /** * Plan limits/features */ limits?: Record<string, number | boolean | string>; /** * Plan group/category */ group?: string; /** * Free trial configuration */ freeTrial?: { days: number; }; } /** * Checkout session parameters */ interface CheckoutSessionParams { /** * Plan name to subscribe to */ plan: string; /** * Upgrade to annual plan */ annual?: boolean; /** * Reference ID (user/org ID) */ referenceId?: string; /** * Existing subscription ID (for upgrades) */ subscriptionId?: string; /** * Number of seats */ seats?: number; /** * Success redirect URL */ successUrl: string; /** * Cancel redirect URL */ cancelUrl: string; /** * Return URL for billing portal */ returnUrl?: string; /** * Disable automatic redirect */ disableRedirect?: boolean; /** * Custom metadata */ metadata?: Record<string, any>; } /** * Billing portal session parameters */ interface BillingPortalParams { /** * Locale for billing portal (IETF language tag) */ locale?: string; /** * Reference ID (user/org ID) */ referenceId?: string; /** * Return URL */ returnUrl?: string; } declare const buttonVariants: (props?: { variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost"; size?: "default" | "sm" | "lg" | "icon" | "icon-sm" | "icon-lg"; } & class_variance_authority_types.ClassProp) => string; declare function Button({ className, variant, size, asChild, ...props }: React$1.ComponentProps<"button"> & VariantProps<typeof buttonVariants> & { asChild?: boolean; }): react_jsx_runtime.JSX.Element; declare const badgeVariants: (props?: { variant?: "default" | "destructive" | "outline" | "secondary"; } & class_variance_authority_types.ClassProp) => string; declare function Badge({ className, variant, asChild, ...props }: React$1.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & { asChild?: boolean; }): react_jsx_runtime.JSX.Element; declare function Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element; declare function Progress({ className, value, ...props }: React$1.ComponentProps<typeof ProgressPrimitive.Root>): react_jsx_runtime.JSX.Element; declare function Separator({ className, orientation, decorative, ...props }: React$1.ComponentProps<typeof SeparatorPrimitive.Root>): react_jsx_runtime.JSX.Element; interface Step { id: number; title: string; description?: string; completed?: boolean; } interface StepperProps { steps: Step[]; currentStep: number; onStepClick?: (step: number) => void; orientation?: "horizontal" | "vertical"; variant?: "default" | "circle" | "bar" | "controlled"; showTitle?: boolean; showDescription?: boolean; showStatus?: boolean; className?: string; } declare const Stepper: React$1.ForwardRefExoticComponent<StepperProps & React$1.RefAttributes<HTMLDivElement>>; /** * any-auth-client * Type for any Better Auth client */ interface AnyAuthClient { $Infer: { Session: { session: any; user: any; }; }; $fetch: (path: string, options?: any) => Promise<any>; useSession: () => any; listAccounts: any; accountInfo: any; multiSession: any; listSessions: any; useListPasskeys: any; apiKey: any; useActiveOrganization: any; useListOrganizations: any; organization: any; updateUser: any; unlinkAccount: any; passkey: any; revokeSession: any; oneTap: any; signIn: any; signOut: any; twoFactor: any; requestPasswordReset: any; changePassword: any; deleteUser: any; emailOtp: any; resetPassword: any; signUp: any; phoneNumber: any; siwe: { nonce: (params: { walletAddress: string; chainId?: number; }) => Promise<{ data?: { nonce: string; }; error?: any; }>; verify: (params: { message: string; signature: string; walletAddress: string; chainId?: number; email?: string; fetchOptions?: any; }, callbacks?: { onSuccess?: () => void; onError?: (ctx: any) => void; }) => Promise<any>; }; /** * Subscription management (optional) * Available when using @better-auth/stripe plugin or custom implementation * @see https://www.better-auth.com/docs/plugins/stripe */ subscription?: { /** * Upgrade to a subscription plan * Creates a Stripe checkout session and optionally redirects */ upgrade: (params: CheckoutSessionParams) => Promise<{ data?: { url?: string; sessionId?: string; }; error?: Error; }>; /** * List active subscriptions * @param params - Optional parameters * @param params.referenceId - Filter by reference ID (user/org ID) */ list: (params?: { referenceId?: string; }) => Promise<{ data?: Subscription[]; error?: Error; }>; /** * Cancel a subscription * Opens Stripe billing portal where user can cancel */ cancel: (params: { referenceId?: string; subscriptionId?: string; returnUrl: string; }) => Promise<{ data?: { url: string; }; error?: Error; }>; /** * Restore a canceled subscription * Reactivates a subscription marked to cancel at period end */ restore: (params: { referenceId?: string; subscriptionId?: string; }) => Promise<{ data?: Subscription; error?: Error; }>; /** * Create billing portal session * Returns URL to Stripe billing portal */ billingPortal: (params: BillingPortalParams) => Promise<{ data?: { url: string; }; error?: Error; }>; }; /** * Admin management (optional) * Available when using @better-auth/admin plugin * @see https://www.better-auth.com/docs/plugins/admin */ admin?: { /** * List users with pagination, search, and filtering */ listUsers: (params?: { searchValue?: string; searchField?: string; searchOperator?: "contains" | "starts_with" | "ends_with"; limit?: number; offset?: number; sortBy?: string; sortDirection?: "asc" | "desc"; filterBy?: Record<string, any>; }) => Promise<{ data?: { users: any[]; total: number; }; error?: any; }>; /** * Ban a user */ banUser: (params: { userId: string; banReason?: string; banExpiresIn?: number; }) => Promise<{ data?: any; error?: any; }>; /** * Unban a user */ unbanUser: (params: { userId: string; }) => Promise<{ data?: any; error?: any; }>; /** * Delete a user */ removeUser: (params: { userId: string; }) => Promise<{ data?: any; error?: any; }>; /** * Impersonate a user */ impersonateUser: (params: { userId: string; }) => Promise<{ data?: any; error?: any; }>; /** * Stop impersonating */ stopImpersonating: () => Promise<{ data?: any; error?: any; }>; }; /** * Device Authorization (optional) * Available when using @better-auth/device-authorization plugin * OAuth 2.0 Device Authorization Grant (RFC 8628) * @see https://www.better-auth.com/docs/plugins/device-authorization */ device?: { /** * Verify user code validity * @param params - Query parameters * @param params.query.user_code - The user code to verify */ (params: { query: { user_code: string; }; }): Promise<{ data?: { clientId?: string; scope?: string; }; error?: any; }>; /** * Request device and user codes * Initiates the device authorization flow */ code: (params: { client_id: string; scope?: string; }) => Promise<{ data?: { device_code: string; user_code: string; verification_uri: string; verification_uri_complete?: string; expires_in: number; interval: number; }; error?: { error: string; error_description?: string; }; }>; /** * Poll for access token * Device polls this endpoint to check authorization status */ token: (params: { grant_type: string;