@frank-auth/react
Version:
Flexible and customizable React UI components for Frank Authentication
806 lines (769 loc) • 32.1 kB
text/typescript
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.',
},
},
};