UNPKG

@frank-auth/react

Version:

Flexible and customizable React UI components for Frank Authentication

806 lines (769 loc) 32.1 kB
import type {LocaleMessages} from './types'; export const en: LocaleMessages = { common: { actions: { save: 'Save', cancel: 'Cancel', delete: 'Delete', edit: 'Edit', update: 'Update', create: 'Create', submit: 'Submit', reset: 'Reset', clear: 'Clear', search: 'Search', filter: 'Filter', sort: 'Sort', refresh: 'Refresh', reload: 'Reload', back: 'Back', next: 'Next', previous: 'Previous', continue: 'Continue', finish: 'Finish', close: 'Close', open: 'Open', show: 'Show', hide: 'Hide', copy: 'Copy', paste: 'Paste', cut: 'Cut', select: 'Select', selectAll: 'Select All', deselect: 'Deselect', confirm: 'Confirm', deny: 'Deny', approve: 'Approve', reject: 'Reject', retry: 'Retry', undo: 'Undo', redo: 'Redo', }, status: { loading: 'Loading', success: 'Success', error: 'Error', warning: 'Warning', info: 'Info', pending: 'Pending', completed: 'Completed', failed: 'Failed', cancelled: 'Cancelled', active: 'Active', inactive: 'Inactive', enabled: 'Enabled', disabled: 'Disabled', online: 'Online', offline: 'Offline', connected: 'Connected', disconnected: 'Disconnected', }, timeAgo: { justNow: 'just now', minutesAgo: '{count} minutes ago', hoursAgo: '{count} hours ago', daysAgo: '{count} days ago', weeksAgo: '{count} weeks ago', monthsAgo: '{count} months ago', yearsAgo: '{count} years ago', }, navigation: { home: 'Home', dashboard: 'Dashboard', profile: 'Profile', settings: 'Settings', help: 'Help', support: 'Support', documentation: 'Documentation', feedback: 'Feedback', about: 'About', privacy: 'Privacy', terms: 'Terms', contact: 'Contact', }, general: { yes: 'Yes', no: 'No', ok: 'OK', maybe: 'Maybe', none: 'None', all: 'All', other: 'Other', unknown: 'Unknown', optional: 'Optional', required: 'Required', recommended: 'Recommended', advanced: 'Advanced', basic: 'Basic', custom: 'Custom', default: 'Default', example: 'Example', placeholder: 'Placeholder', noData: 'No data available', noResults: 'No results found', empty: 'Empty', total: 'Total', subtotal: 'Subtotal', count: 'Count', limit: 'Limit', unlimited: 'Unlimited', }, }, auth: { signIn: { title: 'Sign In', subtitle: 'Welcome back! Please sign in to your account.', emailLabel: 'Email', emailPlaceholder: 'Enter your email', usernameLabel: 'Username', usernamePlaceholder: 'Enter your username', passwordLabel: 'Password', passwordPlaceholder: 'Enter your password', rememberMe: 'Remember me', forgotPassword: 'Forgot password?', signInButton: 'Sign In', signInWithProvider: 'Sign in with {provider}', orDivider: 'or', noAccount: "Don't have an account?", createAccount: 'Create account', success: 'Successfully signed in', welcomeBack: 'Welcome back!', }, signUp: { title: 'Create Account', subtitle: 'Get started by creating your account.', firstNameLabel: 'First Name', firstNamePlaceholder: 'Enter your first name', lastNameLabel: 'Last Name', lastNamePlaceholder: 'Enter your last name', emailLabel: 'Email', emailPlaceholder: 'Enter your email', usernameLabel: 'Username', usernamePlaceholder: 'Choose a username', passwordLabel: 'Password', passwordPlaceholder: 'Create a password', confirmPasswordLabel: 'Confirm Password', confirmPasswordPlaceholder: 'Confirm your password', phoneLabel: 'Phone Number', phonePlaceholder: 'Enter your phone number', signUpButton: 'Create Account', signUpWithProvider: 'Sign up with {provider}', orDivider: 'or', hasAccount: 'Already have an account?', signInLink: 'Sign in', termsAcceptance: 'By creating an account, you agree to our', termsOfService: 'Terms of Service', privacyPolicy: 'Privacy Policy', success: 'Account created successfully', welcomeMessage: 'Welcome to Frank Auth!', }, passwordReset: { title: 'Reset Password', subtitle: 'Enter your email to receive password reset instructions.', emailLabel: 'Email', emailPlaceholder: 'Enter your email', sendResetButton: 'Send Reset Link', backToSignIn: 'Back to sign in', success: 'Password reset link sent', checkEmail: 'Check your email for reset instructions', resetPassword: 'Reset Password', newPasswordLabel: 'New Password', newPasswordPlaceholder: 'Enter new password', confirmNewPasswordLabel: 'Confirm New Password', confirmNewPasswordPlaceholder: 'Confirm new password', resetButton: 'Reset Password', passwordUpdated: 'Password updated successfully', }, mfa: { title: 'Two-Factor Authentication', subtitle: 'Enter the verification code from your authenticator app.', codeLabel: 'Verification Code', codePlaceholder: 'Enter 6-digit code', verifyButton: 'Verify', resendCode: 'Resend code', useBackupCode: 'Use backup code', backupCodeLabel: 'Backup Code', backupCodePlaceholder: 'Enter backup code', useAuthenticator: 'Use authenticator app', success: 'Successfully verified', setup: { title: 'Set Up Two-Factor Authentication', subtitle: 'Add an extra layer of security to your account.', step1: 'Step 1: Download an authenticator app', step2: 'Step 2: Scan the QR code', step3: 'Step 3: Enter verification code', downloadApp: 'Download a compatible app like Google Authenticator or Authy', scanQR: 'Scan this QR code with your authenticator app', enterCode: 'Enter the 6-digit code from your app', manualEntry: 'Or enter this key manually:', secretKey: 'Secret Key', verificationCode: 'Verification Code', enableButton: 'Enable Two-Factor Auth', backupCodes: 'Backup Codes', saveBackupCodes: 'Save these backup codes in a safe place', backupCodesWarning: 'These codes can be used if you lose access to your authenticator app', }, }, passkeys: { title: 'Passkeys', subtitle: 'Use your device to sign in securely without passwords.', setup: 'Set up passkey', use: 'Use passkey', notSupported: 'Passkeys are not supported on this device', setupButton: 'Set Up Passkey', useButton: 'Use Passkey', success: 'Passkey operation successful', registered: 'Passkey registered successfully', manage: { title: 'Manage Passkeys', noPasskeys: 'No passkeys configured', addPasskey: 'Add Passkey', deviceName: 'Device Name', createdAt: 'Created', lastUsed: 'Last Used', remove: 'Remove', removeConfirm: 'Are you sure you want to remove this passkey?', }, }, oauth: { signInWith: 'Sign in with {provider}', signUpWith: 'Sign up with {provider}', continueWith: 'Continue with {provider}', connecting: 'Connecting...', success: 'Successfully connected', error: 'Connection failed', cancelled: 'Connection cancelled', providers: { google: 'Google', github: 'GitHub', microsoft: 'Microsoft', facebook: 'Facebook', apple: 'Apple', twitter: 'Twitter', linkedin: 'LinkedIn', discord: 'Discord', slack: 'Slack', spotify: 'Spotify', }, }, verification: { email: { title: 'Verify Email', subtitle: 'Check your email and click the verification link.', checkEmail: 'We sent a verification link to your email', resendEmail: 'Resend email', changeEmail: 'Change email', success: 'Email verified successfully', verified: 'Your email has been verified', }, phone: { title: 'Verify Phone', subtitle: 'Enter the verification code sent to your phone.', codeLabel: 'Verification Code', codePlaceholder: 'Enter 6-digit code', resendCode: 'Resend code', verifyButton: 'Verify Phone', success: 'Phone verified successfully', verified: 'Your phone has been verified', }, }, magicLink: { title: 'Magic Link', subtitle: 'Sign in with a secure link sent to your email.', emailLabel: 'Email', emailPlaceholder: 'Enter your email', sendLinkButton: 'Send Magic Link', checkEmail: 'Check your email for the magic link', success: 'Magic link sent successfully', expired: 'Magic link has expired', invalid: 'Magic link is invalid', }, logout: { title: 'Sign Out', subtitle: 'Are you sure you want to sign out?', button: 'Sign Out', confirm: 'Sign Out', success: 'Successfully signed out', goodbye: 'Goodbye!', }, session: { expired: 'Your session has expired', invalid: 'Invalid session', refresh: 'Refresh session', refreshing: 'Refreshing session...', multipleWarning: 'You are signed in on multiple devices', deviceLimit: 'Device limit reached', }, }, user: { profile: { title: 'Profile', personalInfo: 'Personal Information', accountInfo: 'Account Information', security: 'Security', preferences: 'Preferences', firstName: 'First Name', lastName: 'Last Name', email: 'Email', username: 'Username', phone: 'Phone', bio: 'Bio', website: 'Website', location: 'Location', timezone: 'Timezone', language: 'Language', avatar: 'Profile Picture', changeAvatar: 'Change Picture', removeAvatar: 'Remove Picture', updateProfile: 'Update Profile', profileUpdated: 'Profile updated successfully', }, security: { title: 'Security', changePassword: 'Change Password', currentPassword: 'Current Password', newPassword: 'New Password', confirmPassword: 'Confirm Password', passwordStrength: 'Password Strength', passwordRequirements: 'Password Requirements', twoFactor: 'Two-Factor Authentication', enableTwoFactor: 'Enable Two-Factor Auth', disableTwoFactor: 'Disable Two-Factor Auth', twoFactorEnabled: 'Two-factor authentication enabled', twoFactorDisabled: 'Two-factor authentication disabled', backupCodes: 'Backup Codes', viewBackupCodes: 'View Backup Codes', regenerateBackupCodes: 'Regenerate Backup Codes', devices: 'Devices', trustedDevices: 'Trusted Devices', removeDevice: 'Remove Device', deviceRemoved: 'Device removed successfully', sessions: 'Sessions', activeSessions: 'Active Sessions', terminateSession: 'Terminate Session', terminateAllSessions: 'Terminate All Sessions', sessionTerminated: 'Session terminated', connectedAccounts: 'Connected Accounts', disconnect: 'Disconnect', accountDisconnected: 'Account disconnected', deleteAccount: 'Delete Account', deleteAccountWarning: 'This action cannot be undone', deleteAccountConfirm: 'Delete My Account', accountDeleted: 'Account deleted successfully', }, preferences: { title: 'Preferences', theme: 'Theme', lightMode: 'Light Mode', darkMode: 'Dark Mode', systemMode: 'System Default', notifications: 'Notifications', emailNotifications: 'Email Notifications', pushNotifications: 'Push Notifications', smsNotifications: 'SMS Notifications', marketingEmails: 'Marketing Emails', securityAlerts: 'Security Alerts', accountActivity: 'Account Activity', productUpdates: 'Product Updates', preferences: 'Preferences', preferencesUpdated: 'Preferences updated successfully', }, }, organization: { general: { title: 'Organization', name: 'Organization Name', description: 'Description', website: 'Website', logo: 'Logo', settings: 'Settings', members: 'Members', billing: 'Billing', usage: 'Usage', security: 'Security', integrations: 'Integrations', audit: 'Audit Log', support: 'Support', }, profile: { title: 'Organization Profile', updateOrganization: 'Update Organization', organizationUpdated: 'Organization updated successfully', logo: 'Logo', changeLogo: 'Change Logo', removeLogo: 'Remove Logo', brandColors: 'Brand Colors', primaryColor: 'Primary Color', secondaryColor: 'Secondary Color', customBranding: 'Custom Branding', domain: 'Domain', customDomain: 'Custom Domain', verifyDomain: 'Verify Domain', domainVerified: 'Domain verified', domainPending: 'Domain verification pending', contact: 'Contact Information', contactEmail: 'Contact Email', supportUrl: 'Support URL', address: 'Address', country: 'Country', timezone: 'Timezone', }, members: { title: 'Members', totalMembers: 'Total Members', activeMembers: 'Active Members', pendingInvitations: 'Pending Invitations', roles: 'Roles', permissions: 'Permissions', inviteMember: 'Invite Member', inviteMembers: 'Invite Members', emailAddress: 'Email Address', role: 'Role', customMessage: 'Custom Message', sendInvitation: 'Send Invitation', invitationSent: 'Invitation sent successfully', resendInvitation: 'Resend Invitation', cancelInvitation: 'Cancel Invitation', invitationCancelled: 'Invitation cancelled', memberName: 'Name', memberEmail: 'Email', memberRole: 'Role', memberStatus: 'Status', memberJoined: 'Joined', lastActive: 'Last Active', changeRole: 'Change Role', removeMember: 'Remove Member', removeMemberConfirm: 'Are you sure you want to remove this member?', memberRemoved: 'Member removed successfully', transferOwnership: 'Transfer Ownership', transferOwnershipConfirm: 'Are you sure you want to transfer ownership?', ownershipTransferred: 'Ownership transferred successfully', bulkActions: 'Bulk Actions', selectAll: 'Select All', selectedMembers: '{count} members selected', bulkRemove: 'Remove Selected', bulkChangeRole: 'Change Role', export: 'Export', exportMembers: 'Export Members', }, roles: { title: 'Roles', createRole: 'Create Role', editRole: 'Edit Role', deleteRole: 'Delete Role', roleName: 'Role Name', roleDescription: 'Description', permissions: 'Permissions', systemPermissions: 'System Permissions', organizationPermissions: 'Organization Permissions', memberPermissions: 'Member Permissions', billingPermissions: 'Billing Permissions', defaultRole: 'Default Role', customRole: 'Custom Role', roleCreated: 'Role created successfully', roleUpdated: 'Role updated successfully', roleDeleted: 'Role deleted successfully', assignRole: 'Assign Role', unassignRole: 'Unassign Role', roleAssigned: 'Role assigned successfully', roleUnassigned: 'Role unassigned successfully', owner: 'Owner', admin: 'Admin', member: 'Member', guest: 'Guest', viewer: 'Viewer', editor: 'Editor', manager: 'Manager', }, settings: { title: 'Settings', general: 'General', authentication: 'Authentication', security: 'Security', integrations: 'Integrations', advanced: 'Advanced', allowPublicSignup: 'Allow Public Signup', requireEmailVerification: 'Require Email Verification', allowUsernameSignup: 'Allow Username Signup', passwordPolicy: 'Password Policy', minPasswordLength: 'Minimum Password Length', requireUppercase: 'Require Uppercase', requireLowercase: 'Require Lowercase', requireNumbers: 'Require Numbers', requireSymbols: 'Require Symbols', sessionDuration: 'Session Duration', mfaRequired: 'Require MFA', allowedDomains: 'Allowed Domains', blockedDomains: 'Blocked Domains', ipWhitelist: 'IP Whitelist', ssoEnabled: 'SSO Enabled', ssoProvider: 'SSO Provider', auditLogRetention: 'Audit Log Retention', dataExport: 'Data Export', deleteOrganization: 'Delete Organization', deleteOrganizationWarning: 'This will permanently delete the organization and all its data', deleteOrganizationConfirm: 'Delete Organization', organizationDeleted: 'Organization deleted successfully', settingsUpdated: 'Settings updated successfully', }, billing: { title: 'Billing', plan: 'Plan', currentPlan: 'Current Plan', usage: 'Usage', billing: 'Billing', invoices: 'Invoices', paymentMethod: 'Payment Method', subscription: 'Subscription', seats: 'Seats', usedSeats: 'Used Seats', availableSeats: 'Available Seats', addSeats: 'Add Seats', removeSeats: 'Remove Seats', monthlyBilling: 'Monthly Billing', yearlyBilling: 'Yearly Billing', upgrade: 'Upgrade', downgrade: 'Downgrade', cancel: 'Cancel', pauseSubscription: 'Pause Subscription', resumeSubscription: 'Resume Subscription', billingHistory: 'Billing History', downloadInvoice: 'Download', updatePaymentMethod: 'Update Payment Method', paymentMethodUpdated: 'Payment method updated', subscriptionUpdated: 'Subscription updated', subscriptionCancelled: 'Subscription cancelled', subscriptionPaused: 'Subscription paused', subscriptionResumed: 'Subscription resumed', trialExpired: 'Trial expired', trialDaysLeft: '{days} days left in trial', upgradeNow: 'Upgrade Now', }, invitations: { title: 'Invitations', youreInvited: "You're invited!", invitedBy: 'Invited by', invitedTo: 'Invited to join', roleOffered: 'Role offered', acceptInvitation: 'Accept Invitation', declineInvitation: 'Decline', invitationAccepted: 'Invitation accepted', invitationDeclined: 'Invitation declined', invitationExpired: 'Invitation expired', invitationInvalid: 'Invalid invitation', alreadyMember: 'Already a member', pendingInvitations: 'Pending Invitations', sentInvitations: 'Sent', receivedInvitations: 'Received', invitationDetails: 'Invitation Details', expiresAt: 'Expires', customMessage: 'Message', }, }, validation: { required: '{field} is required', email: 'Please enter a valid email address', phone: 'Please enter a valid phone number', url: 'Please enter a valid URL', minLength: '{field} must be at least {min} characters', maxLength: '{field} must be no more than {max} characters', min: '{field} must be at least {min}', max: '{field} must be no more than {max}', pattern: '{field} format is invalid', passwordMismatch: 'Passwords do not match', invalidFormat: 'Invalid format', invalid: '{field} is invalid', tooShort: 'Too short', tooLong: 'Too long', tooSmall: 'Too small', tooLarge: 'Too large', notFound: 'Not found', alreadyExists: 'Already exists', expired: 'Expired', weak: 'Weak', strong: 'Strong', medium: 'Medium', passwordStrength: { veryWeak: 'Very weak', weak: 'Weak', fair: 'Fair', good: 'Good', strong: 'Strong', }, passwordRequirements: { minLength: 'At least {min} characters', uppercase: 'At least one uppercase letter', lowercase: 'At least one lowercase letter', number: 'At least one number', symbol: 'At least one special character', }, }, errors: { generic: { unknown: 'An unknown error occurred', network: 'Network error occurred', timeout: 'Request timed out', serverError: 'Server error occurred', notFound: 'Resource not found', unauthorized: 'Unauthorized access', forbidden: 'Access forbidden', badRequest: 'Bad request', conflict: 'Conflict occurred', tooManyRequests: 'Too many requests', maintenance: 'System under maintenance', offline: 'You are offline', }, auth: { invalidCredentials: 'Invalid email or password', accountLocked: 'Account is locked', accountDisabled: 'Account is disabled', accountNotVerified: 'Account is not verified', sessionExpired: 'Session has expired', invalidToken: 'Invalid token', mfaRequired: 'Two-factor authentication required', invalidMfaCode: 'Invalid verification code', passkeyNotSupported: 'Passkeys not supported', passkeyFailed: 'Passkey authentication failed', oauthFailed: 'OAuth authentication failed', oauthCancelled: 'OAuth authentication cancelled', magicLinkExpired: 'Magic link has expired', magicLinkInvalid: 'Invalid magic link', passwordTooWeak: 'Password is too weak', passwordReused: 'Password was recently used', emailNotVerified: 'Email is not verified', phoneNotVerified: 'Phone is not verified', invitationExpired: 'Invitation has expired', invitationInvalid: 'Invalid invitation', invitationAlreadyAccepted: 'Invitation already accepted', }, organization: { notFound: 'Organization not found', accessDenied: 'Access denied', memberLimitReached: 'Member limit reached', ownerRequired: 'Owner role required', cannotRemoveOwner: 'Cannot remove organization owner', cannotRemoveSelf: 'Cannot remove yourself', alreadyMember: 'Already a member', notMember: 'Not a member', invalidRole: 'Invalid role', roleNotFound: 'Role not found', domainTaken: 'Domain is already taken', domainInvalid: 'Invalid domain', seatLimitReached: 'Seat limit reached', subscriptionRequired: 'Subscription required', paymentFailed: 'Payment failed', }, validation: { invalidEmail: 'Invalid email address', invalidPhone: 'Invalid phone number', invalidUrl: 'Invalid URL', fieldRequired: 'This field is required', fieldTooShort: 'This field is too short', fieldTooLong: 'This field is too long', fieldInvalid: 'This field is invalid', passwordsDoNotMatch: 'Passwords do not match', emailTaken: 'Email is already taken', usernameTaken: 'Username is already taken', phoneNumberTaken: 'Phone number is already taken', domainTaken: 'Domain is already taken', }, }, success: { generic: { saved: 'Saved successfully', updated: 'Updated successfully', created: 'Created successfully', deleted: 'Deleted successfully', sent: 'Sent successfully', completed: 'Completed successfully', copied: 'Copied to clipboard', uploaded: 'Uploaded successfully', downloaded: 'Downloaded successfully', imported: 'Imported successfully', exported: 'Exported successfully', }, auth: { signedIn: 'Successfully signed in', signedUp: 'Account created successfully', signedOut: 'Successfully signed out', passwordChanged: 'Password changed successfully', passwordReset: 'Password reset successfully', emailVerified: 'Email verified successfully', phoneVerified: 'Phone verified successfully', mfaEnabled: 'Two-factor authentication enabled', mfaDisabled: 'Two-factor authentication disabled', passkeyAdded: 'Passkey added successfully', passkeyRemoved: 'Passkey removed successfully', accountConnected: 'Account connected successfully', accountDisconnected: 'Account disconnected successfully', }, organization: { created: 'Organization created successfully', updated: 'Organization updated successfully', deleted: 'Organization deleted successfully', memberInvited: 'Member invited successfully', memberRemoved: 'Member removed successfully', roleChanged: 'Role changed successfully', ownershipTransferred: 'Ownership transferred successfully', settingsUpdated: 'Settings updated successfully', domainVerified: 'Domain verified successfully', subscriptionUpdated: 'Subscription updated successfully', paymentMethodUpdated: 'Payment method updated successfully', }, }, components: { loading: { generic: 'Loading...', signIn: 'Signing in...', signUp: 'Creating account...', profile: 'Loading profile...', organization: 'Loading organization...', members: 'Loading members...', settings: 'Loading settings...', verification: 'Verifying...', mfa: 'Verifying code...', passkey: 'Authenticating...', oauth: 'Connecting...', }, empty: { generic: 'No data available', members: 'No members found', invitations: 'No invitations', sessions: 'No active sessions', devices: 'No trusted devices', notifications: 'No notifications', history: 'No history', logs: 'No logs', search: 'No search results', filter: 'No results match your filter', }, confirm: { delete: 'Are you sure you want to delete this?', remove: 'Are you sure you want to remove this?', cancel: 'Are you sure you want to cancel?', logout: 'Are you sure you want to sign out?', transfer: 'Are you sure you want to transfer ownership?', disable: 'Are you sure you want to disable this?', enable: 'Are you sure you want to enable this?', reset: 'Are you sure you want to reset this?', clear: 'Are you sure you want to clear this?', proceed: 'Do you want to proceed?', areYouSure: 'Are you sure?', cannotUndo: 'This action cannot be undone.', permanentAction: 'This is a permanent action.', }, help: { password: 'Choose a strong password with at least 8 characters, including uppercase, lowercase, numbers, and symbols.', mfa: 'Two-factor authentication adds an extra layer of security to your account.', passkey: 'Passkeys use your device biometrics or PIN to sign in securely without passwords.', backup: 'Backup codes can be used if you lose access to your authenticator app.', domain: 'Custom domains allow your users to access your app from your own domain.', webhook: 'Webhooks notify your application when events occur in your organization.', apiKey: 'API keys allow your applications to authenticate with the Frank Auth API.', role: 'Roles define what actions members can perform in your organization.', permission: 'Permissions grant specific access to features and resources.', billing: 'Manage your subscription, payment method, and billing history.', usage: 'Monitor your organization usage and limits.', }, }, };