@authowl/react 0.14.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -274,894 +274,17 @@ function useAuthOwlContext() {
274
274
 
275
275
  // src/i18n/index.tsx
276
276
  import * as React2 from "react";
277
-
278
- // src/i18n/en.ts
279
- var en = {
280
- "common.emailLabel": "Email",
281
- "common.usernameLabel": "Username",
282
- "common.passwordLabel": "Password",
283
- "common.orDivider": "or",
284
- "common.sending": "Sending\u2026",
285
- "common.verifying": "Verifying\u2026",
286
- "common.working": "Working\u2026",
287
- "common.loading": "Loading\u2026",
288
- "common.continue": "Continue",
289
- "common.error.passwordTooShort": "Password must be at least {min} characters.",
290
- "signIn.title": "Sign in",
291
- "signIn.forgotTitle": "Reset your password",
292
- "signIn.submit": "Sign in",
293
- "signIn.submitPending": "Signing in\u2026",
294
- "signIn.forgotLink": "Forgot password?",
295
- "signIn.useUsername": "Sign in with username",
296
- "signIn.useEmail": "Sign in with email",
297
- "signIn.error.failed": "Sign in failed",
298
- "signIn.empty.unsupported": "This app uses a sign-in method that needs a newer version of the SDK.",
299
- "signIn.empty.none": "No sign-in methods are enabled for this app.",
300
- "signUp.title": "Create account",
301
- "signUp.submit": "Create account",
302
- "signUp.submitPending": "Creating\u2026",
303
- "signUp.nameLabel": "Name",
304
- "signUp.firstNameLabel": "First name",
305
- "signUp.lastNameLabel": "Last name",
306
- "signUp.passwordlessSubmit": "Continue with an email code",
307
- "signUp.passkeyTitle": "Create a passkey",
308
- "signUp.passkeyDescription": "Use your fingerprint, face, or device lock for secure passwordless sign-in.",
309
- "signUp.passkeySubmit": "Create passkey",
310
- "signUp.passkeySkip": "Skip for now",
311
- "signUp.consentLabel": "I agree to the {links}.",
312
- "signUp.error.failed": "Sign up failed",
313
- "signUp.error.consentRequired": "Please accept the terms to continue.",
314
- "signUp.error.passkeyFailed": "Could not create the passkey. Try again or skip for now.",
315
- "signUp.empty.unsupported": "This app uses a sign-up method that needs a newer version of the SDK.",
316
- "signUp.empty.none": "No sign-up methods are enabled for this app.",
317
- "waitlist.title": "Join the waitlist",
318
- "waitlist.description": "Enter your email and we will let you know when access is available.",
319
- "waitlist.submit": "Join waitlist",
320
- "waitlist.submitPending": "Joining\u2026",
321
- "waitlist.acceptedTitle": "You are on the waitlist",
322
- "waitlist.acceptedDescription": "Your request was received. We will contact you when access is available.",
323
- "waitlist.error.failed": "Could not join the waitlist. Try again.",
324
- "social.continueWith": "Continue with {provider}",
325
- "social.redirecting": "Redirecting\u2026",
326
- "social.error.startFailed": "Could not start sign-in.",
327
- "sso.continueWith": "Continue with SSO",
328
- "sso.redirecting": "Redirecting\u2026",
329
- "sso.error.startFailed": "Could not start SSO sign-in.",
330
- "sso.error.notFound": "No SSO connection is set up for this email domain.",
331
- "magicLink.sent": "Check your email for a sign-in link.",
332
- "magicLink.submit": "Email me a sign-in link",
333
- "magicLink.error.sendFailed": "Could not send the link.",
334
- "emailOtp.codeLabel": "Enter the code sent to {email}",
335
- "emailOtp.verifySubmit": "Verify code",
336
- "emailOtp.requestSubmit": "Email me a code",
337
- "emailOtp.changeEmail": "Use a different email",
338
- "emailOtp.error.invalidCode": "That code is invalid or expired.",
339
- "emailOtp.error.sendFailed": "Could not send the code.",
340
- "phoneOtp.title": "Sign in with your phone",
341
- "phoneOtp.phoneLabel": "Egyptian mobile number",
342
- "phoneOtp.codeLabel": "Enter the code sent to",
343
- "phoneOtp.sendSubmit": "Text me a code",
344
- "phoneOtp.verifySubmit": "Verify code",
345
- "phoneOtp.changePhone": "Use a different phone number",
346
- "phoneOtp.backToSignIn": "Back to other sign-in options",
347
- "phoneOtp.usePhone": "Continue with phone",
348
- "phoneOtp.error.sendFailed": "Could not send the code.",
349
- "phoneOtp.error.invalidCode": "That code is invalid or expired.",
350
- "phoneOtp.error.humanCheck": "Complete the human verification to continue.",
351
- "authChallenge.checking": "Checking that you are human\u2026",
352
- "authChallenge.error.failed": "Human verification failed. Try again.",
353
- "passkey.signInButton": "Sign in with a passkey",
354
- "passkey.waiting": "Waiting for passkey\u2026",
355
- "passkey.error.signInFailed": "Passkey sign-in failed.",
356
- "forgotPassword.sent": "If an account exists for {email}, we've sent a link to reset your password.",
357
- "forgotPassword.backToSignIn": "Back to sign in",
358
- "forgotPassword.submit": "Email me a reset link",
359
- "forgotPassword.error.sendFailed": "Could not send the reset link.",
360
- "resetPassword.invalidLink": "This password reset link is invalid or has expired. Request a new one.",
361
- "resetPassword.done": "Your password has been reset. You can now sign in.",
362
- "resetPassword.newPasswordLabel": "New password",
363
- "resetPassword.confirmPasswordLabel": "Confirm password",
364
- "resetPassword.submit": "Reset password",
365
- "resetPassword.submitPending": "Resetting\u2026",
366
- "resetPassword.error.mismatch": "Passwords do not match.",
367
- "resetPassword.error.failed": "Could not reset your password. The link may have expired.",
368
- "verifyEmail.success": "Your email is verified. You can now sign in.",
369
- "verifyEmail.invalidLink": "This verification link is invalid or has expired.",
370
- "verifyEmail.resent": "If an account exists for {email}, a new link is on its way.",
371
- "verifyEmail.resendSubmit": "Send a new link",
372
- "verifyEmail.error.resendFailed": "Could not send a new link.",
373
- "verifyPending.body": "We sent a verification link to {email}. Click it to finish setting up your account, then sign in.",
374
- "verifyPending.codeBody": "Enter the verification code we sent to {email}.",
375
- "verifyPending.codeLabel": "Verification code",
376
- "verifyPending.resendCode": "Send a new code",
377
- "verifyPending.codeError": "That verification code is invalid or expired.",
378
- "verifyPending.resent": "Sent again - check your inbox (and spam).",
379
- "verifyPending.resendButton": "Resend verification email",
380
- "verifyPending.error.resendFailed": "Could not resend the verification email.",
381
- "mfa.enroll.title": "Set up two-factor authentication",
382
- "mfa.enroll.doneTitle": "Two-factor authentication is on",
383
- "mfa.enroll.doneBody": "Your account now asks for a code from your authenticator app at sign-in. Keep your backup codes somewhere safe - each works once if you lose your device.",
384
- "mfa.enroll.activeTitle": "Two-factor authentication is on",
385
- "mfa.enroll.activeBody": "Your account is protected by an authenticator app. To switch devices, turn two-factor off first, then set it up again.",
386
- "mfa.enroll.passwordHint": "Confirm your password to begin.",
387
- "mfa.enroll.startPending": "Starting\u2026",
388
- "mfa.enroll.scanQrTitle": "Scan the QR code",
389
- "mfa.enroll.scanQrHint": "Scan this with your authenticator app, or enter the key manually.",
390
- "mfa.enroll.manualKey": "Manual key: {secret}",
391
- "mfa.enroll.backupCodesWarningStrong": "Save your backup codes.",
392
- "mfa.enroll.backupCodesWarningRest": "Each works once if you lose your device - they will not be shown again.",
393
- "mfa.enroll.codeLabel": "Enter the 6-digit code to finish",
394
- "mfa.enroll.activateSubmit": "Activate two-factor",
395
- "mfa.enroll.error.startFailed": "Could not start two-factor setup.",
396
- "mfa.enroll.error.invalidCode": "That code is not valid. Check your app and try again.",
397
- "mfaGate.title": "Two-factor setup required",
398
- "mfaGate.body": "This app requires two-factor authentication. Set it up to continue.",
399
- "mfa.challenge.title": "Two-factor verification",
400
- "mfa.challenge.totpHint": "Enter the 6-digit code from your authenticator app.",
401
- "mfa.challenge.backupHint": "Enter one of your saved backup codes.",
402
- "mfa.challenge.totpLabel": "Authentication code",
403
- "mfa.challenge.backupLabel": "Backup code",
404
- "mfa.challenge.trustDevice": "Trust this device for {days} days",
405
- "mfa.challenge.submit": "Verify",
406
- "mfa.challenge.useBackup": "Use a backup code instead",
407
- "mfa.challenge.useTotp": "Use your authenticator app instead",
408
- "mfa.challenge.useEmailOtp": "Email me a code instead",
409
- "mfa.challenge.otpHint": "Enter the code we emailed you. It expires in 3 minutes.",
410
- "mfa.challenge.otpLabel": "Emailed code",
411
- "mfa.challenge.resendOtp": "Resend code",
412
- "mfa.challenge.error.invalidOtp": "That code is not valid or has expired.",
413
- "mfa.challenge.error.otpSendFailed": "Could not send the code.",
414
- "backupCodes.title": "Backup codes",
415
- "backupCodes.hint": "Generate a fresh set of single-use backup codes. Your current codes stop working immediately.",
416
- "backupCodes.submit": "Generate new codes",
417
- "backupCodes.pending": "Generating\u2026",
418
- "backupCodes.error.failed": "Could not generate new backup codes.",
419
- "mfa.challenge.error.invalidTotp": "That code is not valid.",
420
- "mfa.challenge.error.invalidBackup": "That backup code is not valid.",
421
- "passkeys.title": "Passkeys",
422
- "passkeys.signedOut": "Sign in to manage your passkeys.",
423
- "passkeys.empty": "No passkeys yet.",
424
- "passkeys.unnamed": "Passkey",
425
- "passkeys.rename": "Rename",
426
- "passkeys.remove": "Remove",
427
- "passkeys.removeConfirm": "Remove {name} from this account?",
428
- "passkeys.add": "Add a passkey",
429
- "passkeys.renamePrompt": "Passkey name",
430
- "passkeys.error.loadFailed": "Could not load passkeys.",
431
- "passkeys.error.renameFailed": "Could not rename the passkey.",
432
- "passkeys.error.removeFailed": "Could not remove the passkey.",
433
- "passkeys.error.addFailed": "Could not add a passkey.",
434
- "consent.gateTitle": "Our terms have been updated",
435
- "consent.gateBody": "Please review and accept our {links} to continue.",
436
- "consent.termsOfService": "Terms of Service",
437
- "consent.privacyPolicy": "Privacy Policy",
438
- "consent.docJoiner": " and ",
439
- "consent.acceptPending": "Saving\u2026",
440
- "consent.acceptSubmit": "I agree",
441
- "consent.error.acceptFailed": "Could not record your acceptance. Please try again.",
442
- "userProfile.title": "Manage account",
443
- "userProfile.description": "Update your profile and account security.",
444
- "userProfile.close": "Close account settings",
445
- "userProfile.signedOut": "Sign in to manage your account.",
446
- "userProfile.save": "Save changes",
447
- "userProfile.retry": "Try again",
448
- "userProfile.cancel": "Cancel",
449
- "userProfile.nav.aria": "Account settings",
450
- "userProfile.nav.profile": "Profile",
451
- "userProfile.nav.email": "Email",
452
- "userProfile.nav.password": "Password",
453
- "userProfile.nav.social": "Connected accounts",
454
- "userProfile.nav.sessions": "Sessions",
455
- "userProfile.nav.passkeys": "Passkeys",
456
- "userProfile.nav.mfa": "Two-factor",
457
- "userProfile.nav.recovery": "Recovery",
458
- "userProfile.nav.danger": "Delete account",
459
- "userProfile.profile.title": "Profile",
460
- "userProfile.profile.description": "Choose how your name and avatar appear.",
461
- "userProfile.profile.imageLabel": "Avatar image URL",
462
- "userProfile.profile.saved": "Your profile has been updated.",
463
- "userProfile.profile.error": "Could not update your profile.",
464
- "userProfile.email.title": "Email address",
465
- "userProfile.email.description": "Your new address must be verified before it replaces the current one.",
466
- "userProfile.email.current": "Current email",
467
- "userProfile.email.newLabel": "New email address",
468
- "userProfile.email.submit": "Change email",
469
- "userProfile.email.sent": "Check your email to approve and verify this change.",
470
- "userProfile.email.unavailable": "This account does not use an email address.",
471
- "userProfile.email.error": "Could not start the email change.",
472
- "userProfile.email.changeDisabled": "This app does not allow users to change their email address.",
473
- "userProfile.password.title": "Password",
474
- "userProfile.password.description": "Changing your password signs out your other sessions.",
475
- "userProfile.password.currentLabel": "Current password",
476
- "userProfile.password.submit": "Change password",
477
- "userProfile.password.saved": "Your password has been changed.",
478
- "userProfile.password.error": "Could not change your password.",
479
- "userProfile.social.title": "Connected accounts",
480
- "userProfile.social.description": "Manage the social accounts you can use to sign in.",
481
- "userProfile.social.connected": "Connected",
482
- "userProfile.social.disconnect": "Disconnect",
483
- "userProfile.social.confirmDisconnect": "Disconnect {provider} from this account?",
484
- "userProfile.social.lastMethod": "Add another sign-in method before disconnecting",
485
- "userProfile.social.empty": "No social accounts are connected.",
486
- "userProfile.social.add": "Add another account",
487
- "userProfile.social.connectProvider": "Connect {provider}",
488
- "userProfile.social.loadError": "Could not load connected accounts.",
489
- "userProfile.social.linkError": "Could not connect that account.",
490
- "userProfile.social.unlinkError": "Could not disconnect that account.",
491
- "userProfile.sessions.title": "Active sessions",
492
- "userProfile.sessions.description": "Review the devices that are signed in to your account.",
493
- "userProfile.sessions.current": "Current device \xB7 ",
494
- "userProfile.sessions.unknownDevice": "Unknown device",
495
- "userProfile.sessions.revoke": "Revoke",
496
- "userProfile.sessions.revokeOthers": "Revoke all other sessions",
497
- "userProfile.sessions.empty": "No active sessions were found.",
498
- "userProfile.sessions.confirm": "Revoke the session on {device}?",
499
- "userProfile.sessions.confirmOthers": "Revoke every session except this device?",
500
- "userProfile.sessions.loadError": "Could not load active sessions.",
501
- "userProfile.sessions.revokeError": "Could not revoke the session.",
502
- "userProfile.passkeys.title": "Passkeys",
503
- "userProfile.passkeys.description": "Use device-bound credentials for fast, phishing-resistant sign-in.",
504
- "userProfile.mfa.title": "Two-factor authentication",
505
- "userProfile.mfa.description": "Add an authenticator app as a second check when you sign in.",
506
- "userProfile.mfa.requiredDescription": "This app requires an authenticator app before you can continue.",
507
- "userProfile.mfa.active": "Your account asks for an authenticator code at sign-in.",
508
- "userProfile.mfa.requiredActive": "This app requires two-factor authentication on your account.",
509
- "userProfile.mfa.enabled": "Two-factor is on",
510
- "userProfile.mfa.authenticator": "Authenticator app",
511
- "userProfile.mfa.disable": "Turn off two-factor",
512
- "userProfile.mfa.replace": "Replace authenticator",
513
- "userProfile.mfa.disableWarning": "Turning this off removes your authenticator and invalidates its recovery codes.",
514
- "userProfile.mfa.replaceWarning": "Your app requires two-factor. Removing this authenticator will immediately ask you to set up a replacement.",
515
- "userProfile.mfa.disableConfirm": "Turn off two-factor",
516
- "userProfile.mfa.replaceConfirm": "Remove and replace",
517
- "userProfile.mfa.disableError": "Could not update two-factor authentication.",
518
- "userProfile.recovery.title": "Account recovery",
519
- "userProfile.recovery.description": "Prepare safe ways to complete two-factor sign-in if you lose your authenticator.",
520
- "userProfile.recovery.emailTitle": "Email recovery",
521
- "userProfile.recovery.emailDescription": "From the two-factor sign-in screen, you can request a short-lived recovery code at:",
522
- "userProfile.recovery.emailUnavailable": "Add and verify an email address to use email recovery.",
523
- "userProfile.delete.title": "Delete account",
524
- "userProfile.delete.description": "Permanently remove your identity, sessions, and connected sign-in methods from this app.",
525
- "userProfile.delete.warning": "This cannot be undone. The account {identifier} will be permanently deleted.",
526
- "userProfile.delete.confirmLabel": "Type this account identifier to confirm:",
527
- "userProfile.delete.submit": "Permanently delete account",
528
- "userProfile.delete.error": "Could not delete your account.",
529
- "organization.loading": "Loading organizations",
530
- "organization.signedOut": "Sign in to manage organizations.",
531
- "organization.retry": "Try again",
532
- "organization.close": "Close organization settings",
533
- "organization.personal": "Personal account",
534
- "organization.error.load": "Could not load organizations.",
535
- "organization.role.owner": "Owner",
536
- "organization.role.admin": "Admin",
537
- "organization.role.member": "Member",
538
- "organization.switcher.label": "Switch organization",
539
- "organization.switcher.manage": "Manage organization",
540
- "organization.switcher.create": "Create organization",
541
- "organization.switcher.error": "Could not switch organizations.",
542
- "organization.create.title": "Create organization",
543
- "organization.create.description": "Create a workspace for your team and choose its public slug.",
544
- "organization.create.name": "Organization name",
545
- "organization.create.slug": "Organization slug",
546
- "organization.create.logo": "Logo URL",
547
- "organization.create.submit": "Create organization",
548
- "organization.create.error": "Could not create the organization.",
549
- "organization.list.title": "Organizations",
550
- "organization.list.description": "Switch workspaces, review invitations, or manage a team.",
551
- "organization.list.empty": "You do not belong to an organization yet.",
552
- "organization.list.active": "Active",
553
- "organization.list.switch": "Switch",
554
- "organization.list.manage": "Manage",
555
- "organization.list.invitationsTitle": "Your invitations",
556
- "organization.list.invitationsDescription": "Accept or decline invitations sent to your verified email.",
557
- "organization.list.noInvitations": "No pending invitations.",
558
- "organization.list.invitationsError": "Could not load organization invitations.",
559
- "organization.list.accept": "Accept",
560
- "organization.list.reject": "Decline",
561
- "organization.list.acceptError": "Could not accept the invitation.",
562
- "organization.list.rejectError": "Could not decline the invitation.",
563
- "organization.profile.title": "Organization settings",
564
- "organization.profile.loadError": "Could not load the organization.",
565
- "organization.profile.noActive": "Choose an organization to manage.",
566
- "organization.profile.notMember": "You are no longer a member of this organization.",
567
- "organization.profile.nav.label": "Organization settings",
568
- "organization.profile.nav.general": "General",
569
- "organization.profile.nav.members": "Members",
570
- "organization.profile.nav.invitations": "Invitations",
571
- "organization.profile.nav.danger": "Leave or delete",
572
- "organization.profile.general.title": "Organization details",
573
- "organization.profile.general.description": "Update the name, slug, and logo shown to members.",
574
- "organization.profile.general.readOnly": "Only organization owners and admins can change these details.",
575
- "organization.profile.general.save": "Save organization",
576
- "organization.profile.general.error": "Could not update the organization.",
577
- "organization.profile.members.title": "Members",
578
- "organization.profile.members.description": "Review access, promote another owner, or remove a member.",
579
- "organization.profile.members.you": "(you)",
580
- "organization.profile.members.role": "Role",
581
- "organization.profile.members.roleConfirm": "Change {name} to {role}?",
582
- "organization.profile.members.roleError": "Could not update the member role.",
583
- "organization.profile.members.remove": "Remove",
584
- "organization.profile.members.removeConfirm": "Remove {name} from this organization?",
585
- "organization.profile.members.removeError": "Could not remove the member.",
586
- "organization.profile.invitations.title": "Invitations",
587
- "organization.profile.invitations.description": "Invite teammates and manage invitations that have not been accepted.",
588
- "organization.profile.invitations.email": "Email address",
589
- "organization.profile.invitations.invite": "Send invitation",
590
- "organization.profile.invitations.inviteError": "Could not send the invitation.",
591
- "organization.profile.invitations.empty": "No pending invitations.",
592
- "organization.profile.invitations.cancel": "Cancel",
593
- "organization.profile.invitations.cancelConfirm": "Cancel the invitation for {email}?",
594
- "organization.profile.invitations.cancelError": "Could not cancel the invitation.",
595
- "organization.profile.danger.title": "Leave or delete",
596
- "organization.profile.danger.description": "These changes affect access for you or the entire team.",
597
- "organization.profile.danger.leaveTitle": "Leave organization",
598
- "organization.profile.danger.leaveHint": "You will lose access to this organization.",
599
- "organization.profile.danger.ownerLeaveHint": "Promote another member to owner before leaving the organization.",
600
- "organization.profile.danger.leave": "Leave organization",
601
- "organization.profile.danger.leaveConfirm": "Leave {name}?",
602
- "organization.profile.danger.leaveError": "Could not leave the organization.",
603
- "organization.profile.danger.deleteTitle": "Delete organization",
604
- "organization.profile.danger.deleteHint": "Permanently delete the organization, its memberships, and pending invitations.",
605
- "organization.profile.danger.deleteConfirm": "Type this slug to confirm:",
606
- "organization.profile.danger.delete": "Permanently delete organization",
607
- "organization.profile.danger.deleteError": "Could not delete the organization.",
608
- "userButton.manageAccount": "Manage account",
609
- "userButton.signOut": "Sign out",
610
- "userButton.openMenuAria": "Account menu",
611
- "signOut.button": "Sign out",
612
- "badge.securedBy": "Secured by {brand}",
613
- "qr.ariaLabel": "QR code",
614
- "serverError.INVALID_EMAIL_OR_PASSWORD": "Incorrect email or password.",
615
- "serverError.USER_ALREADY_EXISTS": "An account with this email already exists.",
616
- // Older compatibility servers emit this longer variant; both stay mapped.
617
- "serverError.USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL": "An account with this email already exists.",
618
- "serverError.EMAIL_NOT_VERIFIED": "Verify your email address before signing in.",
619
- "serverError.TWO_FACTOR_REQUIRED": "This account uses two-factor authentication - sign in with your password instead.",
620
- "serverError.CONSENT_REQUIRED": "You must accept the terms to create an account.",
621
- "serverError.MAU_LIMIT_REACHED": "This app is not accepting new sign-ups right now.",
622
- "serverError.MAU_BUDGET_REACHED": "Sign-ups are temporarily paused for this application. Please try again later.",
623
- "serverError.EMAIL_PASSWORD_DISABLED": "Password sign-in is disabled for this app.",
624
- // Verbatim reuse of the server's haveIBeenPwned wording so the two sources stay identical.
625
- "serverError.PASSWORD_COMPROMISED": "This password has appeared in a known data breach. Please choose a different one.",
626
- "serverError.PASSWORD_TOO_SHORT": "Your password is too short. Choose a longer one.",
627
- "serverError.PASSWORD_TOO_LONG": "Your password is too long. Choose a shorter one.",
628
- "serverError.INVALID_EMAIL": "Enter a valid email address.",
629
- "serverError.BANNED_USER": "This account has been suspended. Contact the application owner.",
630
- "serverError.PASSWORD_RESET_REQUIRED": "Reset your password to continue signing in.",
631
- "serverError.PASSWORD_SIGNUP_REQUIRED": "This application requires two-factor authentication. Create your account with email and password to continue.",
632
- "serverError.SSO_EMAIL_DOMAIN_MISMATCH": "This identity provider is not authorized for that email domain.",
633
- "serverError.MFA_ENROLLMENT_REQUIRED": "Finish setting up two-factor authentication to continue.",
634
- "serverError.TOO_MANY_ATTEMPTS": "Too many attempts. Try again shortly.",
635
- "serverError.ACCOUNT_TEMPORARILY_LOCKED": "Your account is temporarily locked. Try again shortly.",
636
- // Duration-aware variants: {duration} is rendered via Intl.NumberFormat unit style.
637
- "serverError.RATE_LIMITED.retryIn": "Too many attempts. Try again in {duration}.",
638
- "serverError.TOO_MANY_ATTEMPTS.retryIn": "Too many attempts. Try again in {duration}.",
639
- "serverError.ACCOUNT_TEMPORARILY_LOCKED.retryIn": "Your account is temporarily locked. Try again in {duration}.",
640
- "serverError.RATE_LIMITED": "Too many attempts. Try again shortly.",
641
- "serverError.INVALID_PHONE_NUMBER": "Enter a valid Egyptian mobile number.",
642
- "serverError.INVALID_PHONE_OTP": "That code is invalid or expired.",
643
- "serverError.TURNSTILE_FAILED": "Human verification failed. Try again.",
644
- "serverError.BOT_CHALLENGE_FAILED": "Human verification failed. Try again.",
645
- "serverError.SMS_LIMIT_REACHED": "SMS sign-in is temporarily unavailable for this app.",
646
- "serverError.SMS_UNAVAILABLE": "SMS is temporarily unavailable. Try another sign-in method.",
647
- "serverError.PHONE_OTP_DISABLED": "Phone sign-in is not available for this app.",
648
- "serverError.PHONE_OTP_PAUSED": "Phone sign-in is temporarily paused for this app.",
649
- "serverError.PHONE_OTP_UNAVAILABLE": "Phone verification is temporarily unavailable.",
650
- "serverError.SESSION_NOT_FRESH": "Sign in again before making this security change.",
651
- "serverError.PASSKEY_PAGE_NOT_FOCUSED": "Keep this page open and focused while completing the passkey prompt.",
652
- "serverError.ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED": "This device already has a passkey for this account. Use it to sign in, or remove it from device settings before trying again.",
653
- "serverError.ORGANIZATION_LAST_OWNER": "Transfer organization ownership before continuing.",
654
- // P1-2: terse two-factor / OTP engine codes. Without these the resolver's
655
- // English server-message fallback ("Invalid code", "Invalid OTP", ...) fires
656
- // and shadows the components' own localized copy, so Arabic users saw English
657
- // on wrong-TOTP / expired-OTP / backup-code failures. Mapping restores the
658
- // localized string in every locale and the nicer English wording too.
659
- "serverError.INVALID_CODE": "That code is not valid. Check the code and try again.",
660
- "serverError.INVALID_BACKUP_CODE": "That backup code is not valid.",
661
- "serverError.INVALID_OTP": "That code is invalid or expired.",
662
- "serverError.OTP_EXPIRED": "That code has expired. Request a new one.",
663
- "serverError.OTP_HAS_EXPIRED": "That code has expired. Request a new one.",
664
- "serverError.TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE": "Too many attempts. Request a new code and try again.",
665
- "serverError.INVALID_TWO_FACTOR_COOKIE": "Your verification session expired. Sign in again to continue.",
666
- // P1-2: high-traffic organization codes surfaced by the org components
667
- // (create / switch / member / invitation flows). Same shadowing problem.
668
- "serverError.ORGANIZATION_SLUG_ALREADY_TAKEN": "That organization slug is already taken. Choose another.",
669
- "serverError.ORGANIZATION_ALREADY_EXISTS": "An organization with these details already exists.",
670
- "serverError.YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS": "You have reached the maximum number of organizations.",
671
- "serverError.ORGANIZATION_NOT_FOUND": "That organization could not be found.",
672
- "serverError.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION": "You are no longer a member of this organization.",
673
- "serverError.NO_ACTIVE_ORGANIZATION": "Select an organization to continue.",
674
- "serverError.ORGANIZATION_MEMBERSHIP_LIMIT_REACHED": "This organization has reached its member limit.",
675
- "serverError.MEMBER_NOT_FOUND": "That member could not be found.",
676
- "serverError.INVITATION_NOT_FOUND": "That invitation could not be found. It may have been revoked or already used.",
677
- "serverError.YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION": "This invitation was sent to a different email address.",
678
- "serverError.EMAIL_VERIFICATION_REQUIRED_FOR_INVITATION": "Verify your email address to view your invitations.",
679
- "serverError.EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION": "Verify your email address before responding to this invitation.",
680
- "serverError.USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION": "That person is already a member of this organization.",
681
- "serverError.USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION": "That person has already been invited to this organization.",
682
- "serverError.YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION": "You do not have permission to invite members to this organization.",
683
- "serverError.YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE": "You do not have permission to invite a member with that role.",
684
- "serverError.YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER": "Promote another member to owner before leaving the organization.",
685
- "serverError.YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER": "Promote another member to owner before leaving the organization.",
686
- "serverError.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION": "You do not have permission to change this organization.",
687
- "serverError.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION": "You do not have permission to delete this organization.",
688
- "serverError.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER": "You do not have permission to remove this member.",
689
- "serverError.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER": "You do not have permission to change this member.",
690
- "serverError.YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION": "You do not have permission to cancel this invitation."
691
- };
692
-
693
- // src/i18n/ar.ts
694
- var ar = {
695
- "common.emailLabel": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
696
- "common.usernameLabel": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
697
- "common.passwordLabel": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
698
- "common.orDivider": "\u0623\u0648",
699
- "common.sending": "\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0631\u0633\u0627\u0644\u2026",
700
- "common.verifying": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642\u2026",
701
- "common.working": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u0646\u0641\u064A\u0630\u2026",
702
- "common.loading": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0645\u064A\u0644\u2026",
703
- "common.continue": "\u0645\u062A\u0627\u0628\u0639\u0629",
704
- "common.error.passwordTooShort": "\u064A\u062C\u0628 \u0623\u0644\u0627 \u062A\u0642\u0644 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0639\u0646 {min} \u0623\u062D\u0631\u0641.",
705
- "signIn.title": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
706
- "signIn.forgotTitle": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
707
- "signIn.submit": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
708
- "signIn.submitPending": "\u062C\u0627\u0631\u064D \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644\u2026",
709
- "signIn.forgotLink": "\u0647\u0644 \u0646\u0633\u064A\u062A \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631\u061F",
710
- "signIn.useUsername": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062A\u062E\u062F\u0645",
711
- "signIn.useEmail": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
712
- "signIn.error.failed": "\u062A\u0639\u0630\u0631 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
713
- "signIn.empty.unsupported": "\u064A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0637\u0631\u064A\u0642\u0629 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u062A\u062A\u0637\u0644\u0628 \u0625\u0635\u062F\u0627\u0631\u064B\u0627 \u0623\u062D\u062F\u062B \u0645\u0646 \u062D\u0632\u0645\u0629 \u0627\u0644\u062A\u0637\u0648\u064A\u0631.",
714
- "signIn.empty.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0637\u0631\u0642 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u0645\u0641\u0639\u0651\u0644\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
715
- "signUp.title": "\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628",
716
- "signUp.submit": "\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628",
717
- "signUp.submitPending": "\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0646\u0634\u0627\u0621\u2026",
718
- "signUp.nameLabel": "\u0627\u0644\u0627\u0633\u0645",
719
- "signUp.firstNameLabel": "\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644",
720
- "signUp.lastNameLabel": "\u0627\u0633\u0645 \u0627\u0644\u0639\u0627\u0626\u0644\u0629",
721
- "signUp.passwordlessSubmit": "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0631\u0645\u0632 \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
722
- "signUp.passkeyTitle": "\u0625\u0646\u0634\u0627\u0621 \u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631",
723
- "signUp.passkeyDescription": "\u0627\u0633\u062A\u062E\u062F\u0645 \u0628\u0635\u0645\u0629 \u0627\u0644\u0625\u0635\u0628\u0639 \u0623\u0648 \u0627\u0644\u0648\u062C\u0647 \u0623\u0648 \u0642\u0641\u0644 \u0627\u0644\u062C\u0647\u0627\u0632 \u0644\u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u0622\u0645\u0646 \u0628\u062F\u0648\u0646 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631.",
724
- "signUp.passkeySubmit": "\u0625\u0646\u0634\u0627\u0621 \u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631",
725
- "signUp.passkeySkip": "\u0627\u0644\u062A\u062E\u0637\u064A \u0627\u0644\u0622\u0646",
726
- "signUp.consentLabel": "\u0623\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 {links}.",
727
- "signUp.error.failed": "\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u062D\u0633\u0627\u0628",
728
- "signUp.error.consentRequired": "\u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0631\u0648\u0637 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
729
- "signUp.error.passkeyFailed": "\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0623\u0648 \u062A\u062E\u0637 \u0647\u0630\u0647 \u0627\u0644\u062E\u0637\u0648\u0629 \u0627\u0644\u0622\u0646.",
730
- "signUp.empty.unsupported": "\u064A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0637\u0631\u064A\u0642\u0629 \u062A\u0633\u062C\u064A\u0644 \u062A\u062A\u0637\u0644\u0628 \u0625\u0635\u062F\u0627\u0631\u064B\u0627 \u0623\u062D\u062F\u062B \u0645\u0646 \u062D\u0632\u0645\u0629 \u0627\u0644\u062A\u0637\u0648\u064A\u0631.",
731
- "signUp.empty.none": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0637\u0631\u0642 \u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628 \u0645\u0641\u0639\u0651\u0644\u0629 \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
732
- "waitlist.title": "\u0627\u0646\u0636\u0645 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631",
733
- "waitlist.description": "\u0623\u062F\u062E\u0644 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0648\u0633\u0646\u062E\u0628\u0631\u0643 \u0639\u0646\u062F\u0645\u0627 \u064A\u0635\u0628\u062D \u0627\u0644\u0648\u0635\u0648\u0644 \u0645\u062A\u0627\u062D\u064B\u0627.",
734
- "waitlist.submit": "\u0627\u0644\u0627\u0646\u0636\u0645\u0627\u0645 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631",
735
- "waitlist.submitPending": "\u062C\u0627\u0631\u064D \u0627\u0644\u0627\u0646\u0636\u0645\u0627\u0645\u2026",
736
- "waitlist.acceptedTitle": "\u0623\u0646\u062A \u0639\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631",
737
- "waitlist.acceptedDescription": "\u062A\u0645 \u0627\u0633\u062A\u0644\u0627\u0645 \u0637\u0644\u0628\u0643. \u0633\u0646\u062A\u0648\u0627\u0635\u0644 \u0645\u0639\u0643 \u0639\u0646\u062F\u0645\u0627 \u064A\u0635\u0628\u062D \u0627\u0644\u0648\u0635\u0648\u0644 \u0645\u062A\u0627\u062D\u064B\u0627.",
738
- "waitlist.error.failed": "\u062A\u0639\u0630\u0631 \u0627\u0644\u0627\u0646\u0636\u0645\u0627\u0645 \u0625\u0644\u0649 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u0646\u062A\u0638\u0627\u0631. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
739
- "social.continueWith": "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0639\u0628\u0631 {provider}",
740
- "social.redirecting": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0648\u064A\u0644\u2026",
741
- "social.error.startFailed": "\u062A\u0639\u0630\u0631 \u0628\u062F\u0621 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
742
- "sso.continueWith": "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0639\u0628\u0631 \u0627\u0644\u062F\u062E\u0648\u0644 \u0627\u0644\u0645\u0648\u062D\u0651\u062F",
743
- "sso.redirecting": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0648\u064A\u0644\u2026",
744
- "sso.error.startFailed": "\u062A\u0639\u0630\u0651\u0631 \u0628\u062F\u0621 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0639\u0628\u0631 \u0627\u0644\u062F\u062E\u0648\u0644 \u0627\u0644\u0645\u0648\u062D\u0651\u062F.",
745
- "sso.error.notFound": "\u0644\u0627 \u064A\u0648\u062C\u062F \u0627\u062A\u0635\u0627\u0644 \u062F\u062E\u0648\u0644 \u0645\u0648\u062D\u0651\u062F \u0645\u064F\u0639\u062F\u0651 \u0644\u0646\u0637\u0627\u0642 \u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A.",
746
- "magicLink.sent": "\u062A\u062D\u0642\u0642 \u0645\u0646 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0644\u0644\u062D\u0635\u0648\u0644 \u0639\u0644\u0649 \u0631\u0627\u0628\u0637 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
747
- "magicLink.submit": "\u0623\u0631\u0633\u0644 \u0644\u064A \u0631\u0627\u0628\u0637 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
748
- "magicLink.error.sendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0627\u0628\u0637.",
749
- "emailOtp.codeLabel": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0631\u0633\u0644 \u0625\u0644\u0649 {email}",
750
- "emailOtp.verifySubmit": "\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0631\u0645\u0632",
751
- "emailOtp.requestSubmit": "\u0623\u0631\u0633\u0644 \u0644\u064A \u0631\u0645\u0632\u064B\u0627",
752
- "emailOtp.changeEmail": "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0622\u062E\u0631",
753
- "emailOtp.error.invalidCode": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
754
- "emailOtp.error.sendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0645\u0632.",
755
- "phoneOtp.title": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062A\u0641",
756
- "phoneOtp.phoneLabel": "\u0631\u0642\u0645 \u0627\u0644\u0645\u0648\u0628\u0627\u064A\u0644 \u0627\u0644\u0645\u0635\u0631\u064A",
757
- "phoneOtp.codeLabel": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0631\u0633\u0644 \u0625\u0644\u0649",
758
- "phoneOtp.sendSubmit": "\u0623\u0631\u0633\u0644 \u0644\u064A \u0631\u0645\u0632\u064B\u0627",
759
- "phoneOtp.verifySubmit": "\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0631\u0645\u0632",
760
- "phoneOtp.changePhone": "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0622\u062E\u0631",
761
- "phoneOtp.backToSignIn": "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u0637\u0631\u0642 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0627\u0644\u0623\u062E\u0631\u0649",
762
- "phoneOtp.usePhone": "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0631\u0642\u0645 \u0627\u0644\u0647\u0627\u062A\u0641",
763
- "phoneOtp.error.sendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0645\u0632.",
764
- "phoneOtp.error.invalidCode": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
765
- "phoneOtp.error.humanCheck": "\u0623\u0643\u0645\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u0628\u0634\u0631\u064A \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
766
- "authChallenge.checking": "\u062C\u0627\u0631\u064D \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0623\u0646\u0643 \u0634\u062E\u0635 \u062D\u0642\u064A\u0642\u064A\u2026",
767
- "authChallenge.error.failed": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u0628\u0634\u0631\u064A. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
768
- "passkey.signInButton": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631",
769
- "passkey.waiting": "\u0641\u064A \u0627\u0646\u062A\u0638\u0627\u0631 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631\u2026",
770
- "passkey.error.signInFailed": "\u062A\u0639\u0630\u0631 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
771
- "forgotPassword.sent": "\u0625\u0630\u0627 \u0643\u0627\u0646 \u0647\u0646\u0627\u0643 \u062D\u0633\u0627\u0628 \u0645\u0633\u062C\u0644 \u0628\u0627\u0644\u0628\u0631\u064A\u062F {email}\u060C \u0641\u0642\u062F \u0623\u0631\u0633\u0644\u0646\u0627 \u0631\u0627\u0628\u0637\u064B\u0627 \u0644\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.",
772
- "forgotPassword.backToSignIn": "\u0627\u0644\u0639\u0648\u062F\u0629 \u0625\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
773
- "forgotPassword.submit": "\u0623\u0631\u0633\u0644 \u0644\u064A \u0631\u0627\u0628\u0637 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0639\u064A\u064A\u0646",
774
- "forgotPassword.error.sendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0631\u0627\u0628\u0637 \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0639\u064A\u064A\u0646.",
775
- "resetPassword.invalidLink": "\u0631\u0627\u0628\u0637 \u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629. \u0627\u0637\u0644\u0628 \u0631\u0627\u0628\u0637\u064B\u0627 \u062C\u062F\u064A\u062F\u064B\u0627.",
776
- "resetPassword.done": "\u062A\u0645\u062A \u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0622\u0646 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
777
- "resetPassword.newPasswordLabel": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062C\u062F\u064A\u062F\u0629",
778
- "resetPassword.confirmPasswordLabel": "\u062A\u0623\u0643\u064A\u062F \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
779
- "resetPassword.submit": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
780
- "resetPassword.submitPending": "\u062C\u0627\u0631\u064D \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0639\u064A\u064A\u0646\u2026",
781
- "resetPassword.error.mismatch": "\u0643\u0644\u0645\u062A\u0627 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0645\u062A\u0637\u0627\u0628\u0642\u062A\u064A\u0646.",
782
- "resetPassword.error.failed": "\u062A\u0639\u0630\u0631 \u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631. \u0631\u0628\u0645\u0627 \u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0631\u0627\u0628\u0637.",
783
- "verifyEmail.success": "\u062A\u0645 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A. \u064A\u0645\u0643\u0646\u0643 \u0627\u0644\u0622\u0646 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
784
- "verifyEmail.invalidLink": "\u0631\u0627\u0628\u0637 \u0627\u0644\u062A\u062D\u0642\u0642 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
785
- "verifyEmail.resent": "\u0625\u0630\u0627 \u0643\u0627\u0646 \u0647\u0646\u0627\u0643 \u062D\u0633\u0627\u0628 \u0645\u0633\u062C\u0644 \u0628\u0627\u0644\u0628\u0631\u064A\u062F {email}\u060C \u0641\u0633\u064A\u0635\u0644\u0643 \u0631\u0627\u0628\u0637 \u062C\u062F\u064A\u062F \u0642\u0631\u064A\u0628\u064B\u0627.",
786
- "verifyEmail.resendSubmit": "\u0625\u0631\u0633\u0627\u0644 \u0631\u0627\u0628\u0637 \u062C\u062F\u064A\u062F",
787
- "verifyEmail.error.resendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0631\u0627\u0628\u0637 \u062C\u062F\u064A\u062F.",
788
- "verifyPending.body": "\u0623\u0631\u0633\u0644\u0646\u0627 \u0631\u0627\u0628\u0637 \u062A\u062D\u0642\u0642 \u0625\u0644\u0649 {email}. \u0627\u0636\u063A\u0637 \u0639\u0644\u064A\u0647 \u0644\u0625\u0643\u0645\u0627\u0644 \u0625\u0639\u062F\u0627\u062F \u062D\u0633\u0627\u0628\u0643\u060C \u062B\u0645 \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
789
- "verifyPending.codeBody": "\u0623\u062F\u062E\u0644 \u0631\u0645\u0632 \u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u0630\u064A \u0623\u0631\u0633\u0644\u0646\u0627\u0647 \u0625\u0644\u0649 {email}.",
790
- "verifyPending.codeLabel": "\u0631\u0645\u0632 \u0627\u0644\u062A\u062D\u0642\u0642",
791
- "verifyPending.resendCode": "\u0625\u0631\u0633\u0627\u0644 \u0631\u0645\u0632 \u062C\u062F\u064A\u062F",
792
- "verifyPending.codeError": "\u0631\u0645\u0632 \u0627\u0644\u062A\u062D\u0642\u0642 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
793
- "verifyPending.resent": "\u062A\u0645 \u0627\u0644\u0625\u0631\u0633\u0627\u0644 \u0645\u062C\u062F\u062F\u064B\u0627 - \u062A\u062D\u0642\u0642 \u0645\u0646 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0648\u0627\u0631\u062F (\u0648\u0645\u062C\u0644\u062F \u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u063A\u064A\u0631 \u0627\u0644\u0645\u0631\u063A\u0648\u0628 \u0641\u064A\u0647\u0627).",
794
- "verifyPending.resendButton": "\u0625\u0639\u0627\u062F\u0629 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u062A\u062D\u0642\u0642",
795
- "verifyPending.error.resendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0639\u0627\u062F\u0629 \u0625\u0631\u0633\u0627\u0644 \u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u062A\u062D\u0642\u0642.",
796
- "mfa.enroll.title": "\u0625\u0639\u062F\u0627\u062F \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
797
- "mfa.enroll.doneTitle": "\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0645\u0641\u0639\u0651\u0644\u0629",
798
- "mfa.enroll.doneBody": "\u0633\u064A\u0637\u0644\u0628 \u062D\u0633\u0627\u0628\u0643 \u0627\u0644\u0622\u0646 \u0631\u0645\u0632\u064B\u0627 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0639\u0646\u062F \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644. \u0627\u062D\u062A\u0641\u0638 \u0628\u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637 \u0641\u064A \u0645\u0643\u0627\u0646 \u0622\u0645\u0646 - \u064A\u0639\u0645\u0644 \u0643\u0644 \u0631\u0645\u0632 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0625\u0630\u0627 \u0641\u0642\u062F\u062A \u062C\u0647\u0627\u0632\u0643.",
799
- "mfa.enroll.activeTitle": "\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0645\u0641\u0639\u0651\u0644\u0629",
800
- "mfa.enroll.activeBody": "\u062D\u0633\u0627\u0628\u0643 \u0645\u062D\u0645\u064A \u0628\u062A\u0637\u0628\u064A\u0642 \u0645\u0635\u0627\u062F\u0642\u0629. \u0644\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0623\u062C\u0647\u0632\u0629\u060C \u0623\u0648\u0642\u0641 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0623\u0648\u0644\u064B\u0627 \u062B\u0645 \u0623\u0639\u062F \u0625\u0639\u062F\u0627\u062F\u0647\u0627.",
801
- "mfa.enroll.passwordHint": "\u0623\u0643\u0651\u062F \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0644\u0628\u062F\u0621.",
802
- "mfa.enroll.startPending": "\u062C\u0627\u0631\u064D \u0627\u0644\u0628\u062F\u0621\u2026",
803
- "mfa.enroll.scanQrTitle": "\u0627\u0645\u0633\u062D \u0631\u0645\u0632 QR",
804
- "mfa.enroll.scanQrHint": "\u0627\u0645\u0633\u062D \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u0628\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629\u060C \u0623\u0648 \u0623\u062F\u062E\u0644 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u064A\u062F\u0648\u064A\u064B\u0627.",
805
- "mfa.enroll.manualKey": "\u0627\u0644\u0645\u0641\u062A\u0627\u062D \u0627\u0644\u064A\u062F\u0648\u064A: {secret}",
806
- "mfa.enroll.backupCodesWarningStrong": "\u0627\u062D\u0641\u0638 \u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637.",
807
- "mfa.enroll.backupCodesWarningRest": "\u064A\u0639\u0645\u0644 \u0643\u0644 \u0631\u0645\u0632 \u0645\u0631\u0629 \u0648\u0627\u062D\u062F\u0629 \u0625\u0630\u0627 \u0641\u0642\u062F\u062A \u062C\u0647\u0627\u0632\u0643 - \u0648\u0644\u0646 \u062A\u0638\u0647\u0631 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
808
- "mfa.enroll.codeLabel": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0651\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0644\u0644\u0625\u0646\u0647\u0627\u0621",
809
- "mfa.enroll.activateSubmit": "\u062A\u0641\u0639\u064A\u0644 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
810
- "mfa.enroll.error.startFailed": "\u062A\u0639\u0630\u0631 \u0628\u062F\u0621 \u0625\u0639\u062F\u0627\u062F \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629.",
811
- "mfa.enroll.error.invalidCode": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0648\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
812
- "mfaGate.title": "\u0625\u0639\u062F\u0627\u062F \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0645\u0637\u0644\u0648\u0628",
813
- "mfaGate.body": "\u064A\u062A\u0637\u0644\u0628 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629. \u0642\u0645 \u0628\u0625\u0639\u062F\u0627\u062F\u0647\u0627 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
814
- "mfa.challenge.title": "\u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u062B\u0646\u0627\u0626\u064A",
815
- "mfa.challenge.totpHint": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0643\u0648\u0651\u0646 \u0645\u0646 6 \u0623\u0631\u0642\u0627\u0645 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629.",
816
- "mfa.challenge.backupHint": "\u0623\u062F\u062E\u0644 \u0623\u062D\u062F \u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637 \u0627\u0644\u0645\u062D\u0641\u0648\u0638\u0629 \u0644\u062F\u064A\u0643.",
817
- "mfa.challenge.totpLabel": "\u0631\u0645\u0632 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629",
818
- "mfa.challenge.backupLabel": "\u0631\u0645\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637",
819
- "mfa.challenge.trustDevice": "\u0627\u0644\u0648\u062B\u0648\u0642 \u0628\u0647\u0630\u0627 \u0627\u0644\u062C\u0647\u0627\u0632 \u0644\u0645\u062F\u0629 {days} \u064A\u0648\u0645\u064B\u0627",
820
- "mfa.challenge.submit": "\u062A\u062D\u0642\u0642",
821
- "mfa.challenge.useBackup": "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0631\u0645\u0632 \u0627\u062D\u062A\u064A\u0627\u0637 \u0628\u062F\u0644\u064B\u0627 \u0645\u0646 \u0630\u0644\u0643",
822
- "mfa.challenge.useTotp": "\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0628\u062F\u0644\u064B\u0627 \u0645\u0646 \u0630\u0644\u0643",
823
- "mfa.challenge.useEmailOtp": "\u0623\u0631\u0633\u0644 \u0644\u064A \u0631\u0645\u0632\u064B\u0627 \u0628\u0627\u0644\u0628\u0631\u064A\u062F \u0628\u062F\u0644\u064B\u0627 \u0645\u0646 \u0630\u0644\u0643",
824
- "mfa.challenge.otpHint": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0630\u064A \u0623\u0631\u0633\u0644\u0646\u0627\u0647 \u0625\u0644\u0649 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A. \u062A\u0646\u062A\u0647\u064A \u0635\u0644\u0627\u062D\u064A\u062A\u0647 \u062E\u0644\u0627\u0644 3 \u062F\u0642\u0627\u0626\u0642.",
825
- "mfa.challenge.otpLabel": "\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0645\u0631\u0633\u0644 \u0628\u0627\u0644\u0628\u0631\u064A\u062F",
826
- "mfa.challenge.resendOtp": "\u0625\u0639\u0627\u062F\u0629 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0645\u0632",
827
- "mfa.challenge.error.invalidOtp": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
828
- "mfa.challenge.error.otpSendFailed": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u0631\u0645\u0632.",
829
- "backupCodes.title": "\u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637",
830
- "backupCodes.hint": "\u0623\u0646\u0634\u0626 \u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u062F\u064A\u062F\u0629 \u0645\u0646 \u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637 \u0623\u062D\u0627\u062F\u064A\u0629 \u0627\u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645. \u062A\u062A\u0648\u0642\u0641 \u0631\u0645\u0648\u0632\u0643 \u0627\u0644\u062D\u0627\u0644\u064A\u0629 \u0639\u0646 \u0627\u0644\u0639\u0645\u0644 \u0641\u0648\u0631\u064B\u0627.",
831
- "backupCodes.submit": "\u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0648\u0632 \u062C\u062F\u064A\u062F\u0629",
832
- "backupCodes.pending": "\u062C\u0627\u0631\u064D \u0627\u0644\u0625\u0646\u0634\u0627\u0621\u2026",
833
- "backupCodes.error.failed": "\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0631\u0645\u0648\u0632 \u0627\u062D\u062A\u064A\u0627\u0637 \u062C\u062F\u064A\u062F\u0629.",
834
- "mfa.challenge.error.invalidTotp": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D.",
835
- "mfa.challenge.error.invalidBackup": "\u0631\u0645\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D.",
836
- "passkeys.title": "\u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0645\u0631\u0648\u0631",
837
- "passkeys.signedOut": "\u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0625\u062F\u0627\u0631\u0629 \u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
838
- "passkeys.empty": "\u0644\u0627 \u062A\u0648\u062C\u062F \u0645\u0641\u0627\u062A\u064A\u062D \u0645\u0631\u0648\u0631 \u0628\u0639\u062F.",
839
- "passkeys.unnamed": "\u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631",
840
- "passkeys.rename": "\u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629",
841
- "passkeys.remove": "\u0625\u0632\u0627\u0644\u0629",
842
- "passkeys.removeConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0632\u0627\u0644\u0629 {name} \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628\u061F",
843
- "passkeys.add": "\u0625\u0636\u0627\u0641\u0629 \u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631",
844
- "passkeys.renamePrompt": "\u0627\u0633\u0645 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631",
845
- "passkeys.error.loadFailed": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
846
- "passkeys.error.renameFailed": "\u062A\u0639\u0630\u0631 \u0625\u0639\u0627\u062F\u0629 \u062A\u0633\u0645\u064A\u0629 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
847
- "passkeys.error.removeFailed": "\u062A\u0639\u0630\u0631 \u0625\u0632\u0627\u0644\u0629 \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
848
- "passkeys.error.addFailed": "\u062A\u0639\u0630\u0631 \u0625\u0636\u0627\u0641\u0629 \u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631.",
849
- "consent.gateTitle": "\u062A\u0645 \u062A\u062D\u062F\u064A\u062B \u0634\u0631\u0648\u0637\u0646\u0627",
850
- "consent.gateBody": "\u064A\u0631\u062C\u0649 \u0645\u0631\u0627\u062C\u0639\u0629 {links} \u0648\u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u064A\u0647\u0627 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
851
- "consent.termsOfService": "\u0634\u0631\u0648\u0637 \u0627\u0644\u062E\u062F\u0645\u0629",
852
- "consent.privacyPolicy": "\u0633\u064A\u0627\u0633\u0629 \u0627\u0644\u062E\u0635\u0648\u0635\u064A\u0629",
853
- "consent.docJoiner": " \u0648",
854
- "consent.acceptPending": "\u062C\u0627\u0631\u064D \u0627\u0644\u062D\u0641\u0638\u2026",
855
- "consent.acceptSubmit": "\u0623\u0648\u0627\u0641\u0642",
856
- "consent.error.acceptFailed": "\u062A\u0639\u0630\u0631 \u062A\u0633\u062C\u064A\u0644 \u0645\u0648\u0627\u0641\u0642\u062A\u0643. \u064A\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
857
- "userProfile.title": "\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062D\u0633\u0627\u0628",
858
- "userProfile.description": "\u062D\u062F\u0651\u062B \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062E\u0635\u064A \u0648\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0623\u0645\u0627\u0646 \u0627\u0644\u062D\u0633\u0627\u0628.",
859
- "userProfile.close": "\u0625\u063A\u0644\u0627\u0642 \u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u062D\u0633\u0627\u0628",
860
- "userProfile.signedOut": "\u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0625\u062F\u0627\u0631\u0629 \u062D\u0633\u0627\u0628\u0643.",
861
- "userProfile.save": "\u062D\u0641\u0638 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A",
862
- "userProfile.retry": "\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649",
863
- "userProfile.cancel": "\u0625\u0644\u063A\u0627\u0621",
864
- "userProfile.nav.aria": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u062D\u0633\u0627\u0628",
865
- "userProfile.nav.profile": "\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062E\u0635\u064A",
866
- "userProfile.nav.email": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
867
- "userProfile.nav.password": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
868
- "userProfile.nav.social": "\u0627\u0644\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0645\u0631\u062A\u0628\u0637\u0629",
869
- "userProfile.nav.sessions": "\u0627\u0644\u062C\u0644\u0633\u0627\u062A",
870
- "userProfile.nav.passkeys": "\u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0645\u0631\u0648\u0631",
871
- "userProfile.nav.mfa": "\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
872
- "userProfile.nav.recovery": "\u0627\u0644\u0627\u0633\u062A\u0631\u062F\u0627\u062F",
873
- "userProfile.nav.danger": "\u062D\u0630\u0641 \u0627\u0644\u062D\u0633\u0627\u0628",
874
- "userProfile.profile.title": "\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0634\u062E\u0635\u064A",
875
- "userProfile.profile.description": "\u0627\u062E\u062A\u0631 \u0637\u0631\u064A\u0642\u0629 \u0638\u0647\u0648\u0631 \u0627\u0633\u0645\u0643 \u0648\u0635\u0648\u0631\u062A\u0643.",
876
- "userProfile.profile.imageLabel": "\u0631\u0627\u0628\u0637 \u0635\u0648\u0631\u0629 \u0627\u0644\u062D\u0633\u0627\u0628",
877
- "userProfile.profile.saved": "\u062A\u0645 \u062A\u062D\u062F\u064A\u062B \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062E\u0635\u064A.",
878
- "userProfile.profile.error": "\u062A\u0639\u0630\u0631 \u062A\u062D\u062F\u064A\u062B \u0645\u0644\u0641\u0643 \u0627\u0644\u0634\u062E\u0635\u064A.",
879
- "userProfile.email.title": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
880
- "userProfile.email.description": "\u064A\u062C\u0628 \u0627\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062C\u062F\u064A\u062F \u0642\u0628\u0644 \u0623\u0646 \u064A\u062D\u0644 \u0645\u062D\u0644 \u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u062D\u0627\u0644\u064A.",
881
- "userProfile.email.current": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u062D\u0627\u0644\u064A",
882
- "userProfile.email.newLabel": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0627\u0644\u062C\u062F\u064A\u062F",
883
- "userProfile.email.submit": "\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
884
- "userProfile.email.sent": "\u062A\u062D\u0642\u0642 \u0645\u0646 \u0628\u0631\u064A\u062F\u0643 \u0644\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062A\u063A\u064A\u064A\u0631 \u0648\u062A\u0623\u0643\u064A\u062F\u0647.",
885
- "userProfile.email.unavailable": "\u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628 \u0644\u0627 \u064A\u0633\u062A\u062E\u062F\u0645 \u0628\u0631\u064A\u062F\u064B\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u064B\u0627.",
886
- "userProfile.email.error": "\u062A\u0639\u0630\u0631 \u0628\u062F\u0621 \u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A.",
887
- "userProfile.email.changeDisabled": "\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0627 \u064A\u0633\u0645\u062D \u0644\u0644\u0645\u0633\u062A\u062E\u062F\u0645\u064A\u0646 \u0628\u062A\u063A\u064A\u064A\u0631 \u0628\u0631\u064A\u062F\u0647\u0645 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A.",
888
- "userProfile.password.title": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
889
- "userProfile.password.description": "\u0633\u064A\u0624\u062F\u064A \u062A\u063A\u064A\u064A\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0625\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u062E\u0631\u0648\u062C \u0627\u0644\u062C\u0644\u0633\u0627\u062A \u0627\u0644\u0623\u062E\u0631\u0649.",
890
- "userProfile.password.currentLabel": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062D\u0627\u0644\u064A\u0629",
891
- "userProfile.password.submit": "\u062A\u063A\u064A\u064A\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631",
892
- "userProfile.password.saved": "\u062A\u0645 \u062A\u063A\u064A\u064A\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.",
893
- "userProfile.password.error": "\u062A\u0639\u0630\u0631 \u062A\u063A\u064A\u064A\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631.",
894
- "userProfile.social.title": "\u0627\u0644\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0645\u0631\u062A\u0628\u0637\u0629",
895
- "userProfile.social.description": "\u0623\u062F\u0631 \u0627\u0644\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0627\u062C\u062A\u0645\u0627\u0639\u064A\u0629 \u0627\u0644\u062A\u064A \u064A\u0645\u0643\u0646\u0643 \u0627\u0633\u062A\u062E\u062F\u0627\u0645\u0647\u0627 \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
896
- "userProfile.social.connected": "\u0645\u0631\u062A\u0628\u0637",
897
- "userProfile.social.disconnect": "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0628\u0637",
898
- "userProfile.social.confirmDisconnect": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0644\u063A\u0627\u0621 \u0631\u0628\u0637 {provider} \u0628\u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628\u061F",
899
- "userProfile.social.lastMethod": "\u0623\u0636\u0641 \u0637\u0631\u064A\u0642\u0629 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u0623\u062E\u0631\u0649 \u0642\u0628\u0644 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u0631\u0628\u0637",
900
- "userProfile.social.empty": "\u0644\u0627 \u062A\u0648\u062C\u062F \u062D\u0633\u0627\u0628\u0627\u062A \u0627\u062C\u062A\u0645\u0627\u0639\u064A\u0629 \u0645\u0631\u062A\u0628\u0637\u0629.",
901
- "userProfile.social.add": "\u0625\u0636\u0627\u0641\u0629 \u062D\u0633\u0627\u0628 \u0622\u062E\u0631",
902
- "userProfile.social.connectProvider": "\u0631\u0628\u0637 {provider}",
903
- "userProfile.social.loadError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u0645\u0631\u062A\u0628\u0637\u0629.",
904
- "userProfile.social.linkError": "\u062A\u0639\u0630\u0631 \u0631\u0628\u0637 \u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628.",
905
- "userProfile.social.unlinkError": "\u062A\u0639\u0630\u0631 \u0625\u0644\u063A\u0627\u0621 \u0631\u0628\u0637 \u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628.",
906
- "userProfile.sessions.title": "\u0627\u0644\u062C\u0644\u0633\u0627\u062A \u0627\u0644\u0646\u0634\u0637\u0629",
907
- "userProfile.sessions.description": "\u0631\u0627\u062C\u0639 \u0627\u0644\u0623\u062C\u0647\u0632\u0629 \u0627\u0644\u0645\u0633\u062C\u0651\u0644 \u062F\u062E\u0648\u0644\u0647\u0627 \u0625\u0644\u0649 \u062D\u0633\u0627\u0628\u0643.",
908
- "userProfile.sessions.current": "\u0627\u0644\u062C\u0647\u0627\u0632 \u0627\u0644\u062D\u0627\u0644\u064A \xB7 ",
909
- "userProfile.sessions.unknownDevice": "\u062C\u0647\u0627\u0632 \u063A\u064A\u0631 \u0645\u0639\u0631\u0648\u0641",
910
- "userProfile.sessions.revoke": "\u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062C\u0644\u0633\u0629",
911
- "userProfile.sessions.revokeOthers": "\u0625\u0644\u063A\u0627\u0621 \u0643\u0644 \u0627\u0644\u062C\u0644\u0633\u0627\u062A \u0627\u0644\u0623\u062E\u0631\u0649",
912
- "userProfile.sessions.empty": "\u0644\u0645 \u064A\u062A\u0645 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u062C\u0644\u0633\u0627\u062A \u0646\u0634\u0637\u0629.",
913
- "userProfile.sessions.confirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062C\u0644\u0633\u0629 \u0639\u0644\u0649 {device}\u061F",
914
- "userProfile.sessions.confirmOthers": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0644\u063A\u0627\u0621 \u0643\u0644 \u0627\u0644\u062C\u0644\u0633\u0627\u062A \u0628\u0627\u0633\u062A\u062B\u0646\u0627\u0621 \u0647\u0630\u0627 \u0627\u0644\u062C\u0647\u0627\u0632\u061F",
915
- "userProfile.sessions.loadError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u062C\u0644\u0633\u0627\u062A \u0627\u0644\u0646\u0634\u0637\u0629.",
916
- "userProfile.sessions.revokeError": "\u062A\u0639\u0630\u0631 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062C\u0644\u0633\u0629.",
917
- "userProfile.passkeys.title": "\u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0645\u0631\u0648\u0631",
918
- "userProfile.passkeys.description": "\u0627\u0633\u062A\u062E\u062F\u0645 \u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0639\u062A\u0645\u0627\u062F \u0645\u0631\u062A\u0628\u0637\u0629 \u0628\u062C\u0647\u0627\u0632\u0643 \u0644\u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u0633\u0631\u064A\u0639 \u0648\u0645\u0642\u0627\u0648\u0645 \u0644\u0644\u062A\u0635\u064A\u062F.",
919
- "userProfile.mfa.title": "\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
920
- "userProfile.mfa.description": "\u0623\u0636\u0641 \u062A\u0637\u0628\u064A\u0642 \u0645\u0635\u0627\u062F\u0642\u0629 \u0643\u062E\u0637\u0648\u0629 \u062A\u062D\u0642\u0642 \u062B\u0627\u0646\u064A\u0629 \u0639\u0646\u062F \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
921
- "userProfile.mfa.requiredDescription": "\u064A\u062A\u0637\u0644\u0628 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0625\u0639\u062F\u0627\u062F \u062A\u0637\u0628\u064A\u0642 \u0645\u0635\u0627\u062F\u0642\u0629 \u0642\u0628\u0644 \u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
922
- "userProfile.mfa.active": "\u064A\u0637\u0644\u0628 \u062D\u0633\u0627\u0628\u0643 \u0631\u0645\u0632\u064B\u0627 \u0645\u0646 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0639\u0646\u062F \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
923
- "userProfile.mfa.requiredActive": "\u064A\u0641\u0631\u0636 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0639\u0644\u0649 \u062D\u0633\u0627\u0628\u0643.",
924
- "userProfile.mfa.enabled": "\u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0645\u0641\u0639\u0644\u0629",
925
- "userProfile.mfa.authenticator": "\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629",
926
- "userProfile.mfa.disable": "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
927
- "userProfile.mfa.replace": "\u0627\u0633\u062A\u0628\u062F\u0627\u0644 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629",
928
- "userProfile.mfa.disableWarning": "\u064A\u0624\u062F\u064A \u0627\u0644\u0625\u064A\u0642\u0627\u0641 \u0625\u0644\u0649 \u0625\u0632\u0627\u0644\u0629 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0648\u0625\u0628\u0637\u0627\u0644 \u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u0633\u062A\u0631\u062F\u0627\u062F \u0627\u0644\u062D\u0627\u0644\u064A\u0629.",
929
- "userProfile.mfa.replaceWarning": "\u064A\u0641\u0631\u0636 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629. \u0633\u062A\u062A\u0645 \u0645\u0637\u0627\u0644\u0628\u062A\u0643 \u0628\u0625\u0639\u062F\u0627\u062F \u0628\u062F\u064A\u0644 \u0641\u0648\u0631 \u0625\u0632\u0627\u0644\u0629 \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062D\u0627\u0644\u064A.",
930
- "userProfile.mfa.disableConfirm": "\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629",
931
- "userProfile.mfa.replaceConfirm": "\u0625\u0632\u0627\u0644\u0629 \u0648\u0627\u0633\u062A\u0628\u062F\u0627\u0644",
932
- "userProfile.mfa.disableError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u062F\u064A\u062B \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629.",
933
- "userProfile.recovery.title": "\u0627\u0633\u062A\u0631\u062F\u0627\u062F \u0627\u0644\u062D\u0633\u0627\u0628",
934
- "userProfile.recovery.description": "\u062C\u0647\u0651\u0632 \u0637\u0631\u0642\u064B\u0627 \u0622\u0645\u0646\u0629 \u0644\u0625\u0643\u0645\u0627\u0644 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0625\u0630\u0627 \u0641\u0642\u062F\u062A \u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629.",
935
- "userProfile.recovery.emailTitle": "\u0627\u0644\u0627\u0633\u062A\u0631\u062F\u0627\u062F \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064A\u062F",
936
- "userProfile.recovery.emailDescription": "\u0645\u0646 \u0634\u0627\u0634\u0629 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0639\u0646\u062F \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644\u060C \u064A\u0645\u0643\u0646\u0643 \u0637\u0644\u0628 \u0631\u0645\u0632 \u0627\u0633\u062A\u0631\u062F\u0627\u062F \u0642\u0635\u064A\u0631 \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629 \u0639\u0644\u0649:",
937
- "userProfile.recovery.emailUnavailable": "\u0623\u0636\u0641 \u0628\u0631\u064A\u062F\u064B\u0627 \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\u064B\u0627 \u0648\u0641\u0639\u0651\u0644\u0647 \u0644\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0627\u0644\u0627\u0633\u062A\u0631\u062F\u0627\u062F \u0639\u0628\u0631 \u0627\u0644\u0628\u0631\u064A\u062F.",
938
- "userProfile.delete.title": "\u062D\u0630\u0641 \u0627\u0644\u062D\u0633\u0627\u0628",
939
- "userProfile.delete.description": "\u0623\u0632\u0644 \u0647\u0648\u064A\u062A\u0643 \u0648\u062C\u0644\u0633\u0627\u062A\u0643 \u0648\u0637\u0631\u0642 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0627\u0644\u0645\u0631\u062A\u0628\u0637\u0629 \u0646\u0647\u0627\u0626\u064A\u064B\u0627 \u0645\u0646 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
940
- "userProfile.delete.warning": "\u0644\u0627 \u064A\u0645\u0643\u0646 \u0627\u0644\u062A\u0631\u0627\u062C\u0639 \u0639\u0646 \u0647\u0630\u0627 \u0627\u0644\u0625\u062C\u0631\u0627\u0621. \u0633\u064A\u064F\u062D\u0630\u0641 \u0627\u0644\u062D\u0633\u0627\u0628 {identifier} \u0646\u0647\u0627\u0626\u064A\u064B\u0627.",
941
- "userProfile.delete.confirmLabel": "\u0627\u0643\u062A\u0628 \u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u062D\u0633\u0627\u0628 \u0647\u0630\u0627 \u0644\u0644\u062A\u0623\u0643\u064A\u062F:",
942
- "userProfile.delete.submit": "\u062D\u0630\u0641 \u0627\u0644\u062D\u0633\u0627\u0628 \u0646\u0647\u0627\u0626\u064A\u064B\u0627",
943
- "userProfile.delete.error": "\u062A\u0639\u0630\u0631 \u062D\u0630\u0641 \u062D\u0633\u0627\u0628\u0643.",
944
- "organization.loading": "\u062C\u0627\u0631\u064D \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A",
945
- "organization.signedOut": "\u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0644\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A.",
946
- "organization.retry": "\u0623\u0639\u062F \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629",
947
- "organization.close": "\u0625\u063A\u0644\u0627\u0642 \u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
948
- "organization.personal": "\u0627\u0644\u062D\u0633\u0627\u0628 \u0627\u0644\u0634\u062E\u0635\u064A",
949
- "organization.error.load": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A.",
950
- "organization.role.owner": "\u0645\u0627\u0644\u0643",
951
- "organization.role.admin": "\u0645\u0634\u0631\u0641",
952
- "organization.role.member": "\u0639\u0636\u0648",
953
- "organization.switcher.label": "\u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
954
- "organization.switcher.manage": "\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
955
- "organization.switcher.create": "\u0625\u0646\u0634\u0627\u0621 \u0645\u0624\u0633\u0633\u0629",
956
- "organization.switcher.error": "\u062A\u0639\u0630\u0631 \u062A\u0628\u062F\u064A\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
957
- "organization.create.title": "\u0625\u0646\u0634\u0627\u0621 \u0645\u0624\u0633\u0633\u0629",
958
- "organization.create.description": "\u0623\u0646\u0634\u0626 \u0645\u0633\u0627\u062D\u0629 \u0639\u0645\u0644 \u0644\u0641\u0631\u064A\u0642\u0643 \u0648\u0627\u062E\u062A\u0631 \u0627\u0644\u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0639\u0627\u0645 \u0644\u0647\u0627.",
959
- "organization.create.name": "\u0627\u0633\u0645 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
960
- "organization.create.slug": "\u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
961
- "organization.create.logo": "\u0631\u0627\u0628\u0637 \u0627\u0644\u0634\u0639\u0627\u0631",
962
- "organization.create.submit": "\u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
963
- "organization.create.error": "\u062A\u0639\u0630\u0631 \u0625\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
964
- "organization.list.title": "\u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A",
965
- "organization.list.description": "\u0628\u062F\u0651\u0644 \u0645\u0633\u0627\u062D\u0627\u062A \u0627\u0644\u0639\u0645\u0644 \u0623\u0648 \u0631\u0627\u062C\u0639 \u0627\u0644\u062F\u0639\u0648\u0627\u062A \u0623\u0648 \u0623\u062F\u0631 \u0641\u0631\u064A\u0642\u064B\u0627.",
966
- "organization.list.empty": "\u0644\u0633\u062A \u0639\u0636\u0648\u064B\u0627 \u0641\u064A \u0623\u064A \u0645\u0624\u0633\u0633\u0629 \u0628\u0639\u062F.",
967
- "organization.list.active": "\u0646\u0634\u0637\u0629",
968
- "organization.list.switch": "\u062A\u0628\u062F\u064A\u0644",
969
- "organization.list.manage": "\u0625\u062F\u0627\u0631\u0629",
970
- "organization.list.invitationsTitle": "\u062F\u0639\u0648\u0627\u062A\u0643",
971
- "organization.list.invitationsDescription": "\u0627\u0642\u0628\u0644 \u0623\u0648 \u0627\u0631\u0641\u0636 \u0627\u0644\u062F\u0639\u0648\u0627\u062A \u0627\u0644\u0645\u0631\u0633\u0644\u0629 \u0625\u0644\u0649 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0645\u0641\u0639\u0651\u0644.",
972
- "organization.list.noInvitations": "\u0644\u0627 \u062A\u0648\u062C\u062F \u062F\u0639\u0648\u0627\u062A \u0645\u0639\u0644\u0642\u0629.",
973
- "organization.list.invitationsError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u062F\u0639\u0648\u0627\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A.",
974
- "organization.list.accept": "\u0642\u0628\u0648\u0644",
975
- "organization.list.reject": "\u0631\u0641\u0636",
976
- "organization.list.acceptError": "\u062A\u0639\u0630\u0631 \u0642\u0628\u0648\u0644 \u0627\u0644\u062F\u0639\u0648\u0629.",
977
- "organization.list.rejectError": "\u062A\u0639\u0630\u0631 \u0631\u0641\u0636 \u0627\u0644\u062F\u0639\u0648\u0629.",
978
- "organization.profile.title": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
979
- "organization.profile.loadError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u0645\u064A\u0644 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
980
- "organization.profile.noActive": "\u0627\u062E\u062A\u0631 \u0645\u0624\u0633\u0633\u0629 \u0644\u0625\u062F\u0627\u0631\u062A\u0647\u0627.",
981
- "organization.profile.notMember": "\u0644\u0645 \u062A\u0639\u062F \u0639\u0636\u0648\u064B\u0627 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
982
- "organization.profile.nav.label": "\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
983
- "organization.profile.nav.general": "\u0639\u0627\u0645",
984
- "organization.profile.nav.members": "\u0627\u0644\u0623\u0639\u0636\u0627\u0621",
985
- "organization.profile.nav.invitations": "\u0627\u0644\u062F\u0639\u0648\u0627\u062A",
986
- "organization.profile.nav.danger": "\u0627\u0644\u0645\u063A\u0627\u062F\u0631\u0629 \u0623\u0648 \u0627\u0644\u062D\u0630\u0641",
987
- "organization.profile.general.title": "\u0628\u064A\u0627\u0646\u0627\u062A \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
988
- "organization.profile.general.description": "\u062D\u062F\u0651\u062B \u0627\u0644\u0627\u0633\u0645 \u0648\u0627\u0644\u0645\u0639\u0631\u0651\u0641 \u0648\u0627\u0644\u0634\u0639\u0627\u0631 \u0627\u0644\u0638\u0627\u0647\u0631 \u0644\u0644\u0623\u0639\u0636\u0627\u0621.",
989
- "organization.profile.general.readOnly": "\u064A\u0645\u0643\u0646 \u0644\u0644\u0645\u0627\u0644\u0643\u064A\u0646 \u0648\u0627\u0644\u0645\u0634\u0631\u0641\u064A\u0646 \u0641\u0642\u0637 \u062A\u0639\u062F\u064A\u0644 \u0647\u0630\u0647 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A.",
990
- "organization.profile.general.save": "\u062D\u0641\u0638 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
991
- "organization.profile.general.error": "\u062A\u0639\u0630\u0631 \u062A\u062D\u062F\u064A\u062B \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
992
- "organization.profile.members.title": "\u0627\u0644\u0623\u0639\u0636\u0627\u0621",
993
- "organization.profile.members.description": "\u0631\u0627\u062C\u0639 \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0627\u062A \u0623\u0648 \u0631\u0642\u0651 \u0645\u0627\u0644\u0643\u064B\u0627 \u0622\u062E\u0631 \u0623\u0648 \u0623\u0632\u0644 \u0639\u0636\u0648\u064B\u0627.",
994
- "organization.profile.members.you": "(\u0623\u0646\u062A)",
995
- "organization.profile.members.role": "\u0627\u0644\u062F\u0648\u0631",
996
- "organization.profile.members.roleConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u062A\u063A\u064A\u064A\u0631 \u062F\u0648\u0631 {name} \u0625\u0644\u0649 {role}\u061F",
997
- "organization.profile.members.roleError": "\u062A\u0639\u0630\u0631 \u062A\u062D\u062F\u064A\u062B \u062F\u0648\u0631 \u0627\u0644\u0639\u0636\u0648.",
998
- "organization.profile.members.remove": "\u0625\u0632\u0627\u0644\u0629",
999
- "organization.profile.members.removeConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0632\u0627\u0644\u0629 {name} \u0645\u0646 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629\u061F",
1000
- "organization.profile.members.removeError": "\u062A\u0639\u0630\u0631 \u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u0639\u0636\u0648.",
1001
- "organization.profile.invitations.title": "\u0627\u0644\u062F\u0639\u0648\u0627\u062A",
1002
- "organization.profile.invitations.description": "\u0627\u062F\u0639\u064F \u0632\u0645\u0644\u0627\u0621\u0643 \u0648\u0623\u062F\u0631 \u0627\u0644\u062F\u0639\u0648\u0627\u062A \u0627\u0644\u062A\u064A \u0644\u0645 \u062A\u064F\u0642\u0628\u0644 \u0628\u0639\u062F.",
1003
- "organization.profile.invitations.email": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",
1004
- "organization.profile.invitations.invite": "\u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u062F\u0639\u0648\u0629",
1005
- "organization.profile.invitations.inviteError": "\u062A\u0639\u0630\u0631 \u0625\u0631\u0633\u0627\u0644 \u0627\u0644\u062F\u0639\u0648\u0629.",
1006
- "organization.profile.invitations.empty": "\u0644\u0627 \u062A\u0648\u062C\u062F \u062F\u0639\u0648\u0627\u062A \u0645\u0639\u0644\u0642\u0629.",
1007
- "organization.profile.invitations.cancel": "\u0625\u0644\u063A\u0627\u0621",
1008
- "organization.profile.invitations.cancelConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0625\u0644\u063A\u0627\u0621 \u062F\u0639\u0648\u0629 {email}\u061F",
1009
- "organization.profile.invitations.cancelError": "\u062A\u0639\u0630\u0631 \u0625\u0644\u063A\u0627\u0621 \u0627\u0644\u062F\u0639\u0648\u0629.",
1010
- "organization.profile.danger.title": "\u0627\u0644\u0645\u063A\u0627\u062F\u0631\u0629 \u0623\u0648 \u0627\u0644\u062D\u0630\u0641",
1011
- "organization.profile.danger.description": "\u062A\u0624\u062B\u0631 \u0647\u0630\u0647 \u0627\u0644\u062A\u063A\u064A\u064A\u0631\u0627\u062A \u0641\u064A \u0648\u0635\u0648\u0644\u0643 \u0623\u0648 \u0641\u064A \u0627\u0644\u0641\u0631\u064A\u0642 \u0628\u0623\u0643\u0645\u0644\u0647.",
1012
- "organization.profile.danger.leaveTitle": "\u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
1013
- "organization.profile.danger.leaveHint": "\u0633\u062A\u0641\u0642\u062F \u0635\u0644\u0627\u062D\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1014
- "organization.profile.danger.ownerLeaveHint": "\u0631\u0642\u0651 \u0639\u0636\u0648\u064B\u0627 \u0622\u062E\u0631 \u0625\u0644\u0649 \u0645\u0627\u0644\u0643 \u0642\u0628\u0644 \u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1015
- "organization.profile.danger.leave": "\u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
1016
- "organization.profile.danger.leaveConfirm": "\u0647\u0644 \u062A\u0631\u064A\u062F \u0645\u063A\u0627\u062F\u0631\u0629 {name}\u061F",
1017
- "organization.profile.danger.leaveError": "\u062A\u0639\u0630\u0631 \u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1018
- "organization.profile.danger.deleteTitle": "\u062D\u0630\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629",
1019
- "organization.profile.danger.deleteHint": "\u0627\u062D\u0630\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0648\u0639\u0636\u0648\u064A\u0627\u062A\u0647\u0627 \u0648\u062F\u0639\u0648\u0627\u062A\u0647\u0627 \u0627\u0644\u0645\u0639\u0644\u0642\u0629 \u0646\u0647\u0627\u0626\u064A\u064B\u0627.",
1020
- "organization.profile.danger.deleteConfirm": "\u0627\u0643\u062A\u0628 \u0647\u0630\u0627 \u0627\u0644\u0645\u0639\u0631\u0651\u0641 \u0644\u0644\u062A\u0623\u0643\u064A\u062F:",
1021
- "organization.profile.danger.delete": "\u062D\u0630\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0646\u0647\u0627\u0626\u064A\u064B\u0627",
1022
- "organization.profile.danger.deleteError": "\u062A\u0639\u0630\u0631 \u062D\u0630\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1023
- "userButton.manageAccount": "\u0625\u062F\u0627\u0631\u0629 \u0627\u0644\u062D\u0633\u0627\u0628",
1024
- "userButton.signOut": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C",
1025
- "userButton.openMenuAria": "\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062D\u0633\u0627\u0628",
1026
- "signOut.button": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062E\u0631\u0648\u062C",
1027
- "badge.securedBy": "\u0645\u062D\u0645\u064A \u0628\u0648\u0627\u0633\u0637\u0629 {brand}",
1028
- "qr.ariaLabel": "\u0631\u0645\u0632 QR",
1029
- "serverError.INVALID_EMAIL_OR_PASSWORD": "\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0623\u0648 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u063A\u064A\u0631 \u0635\u062D\u064A\u062D\u0629.",
1030
- "serverError.USER_ALREADY_EXISTS": "\u064A\u0648\u062C\u062F \u062D\u0633\u0627\u0628 \u0645\u0633\u062C\u0644 \u0628\u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0628\u0627\u0644\u0641\u0639\u0644.",
1031
- "serverError.USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL": "\u064A\u0648\u062C\u062F \u062D\u0633\u0627\u0628 \u0645\u0633\u062C\u0644 \u0628\u0647\u0630\u0627 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0628\u0627\u0644\u0641\u0639\u0644.",
1032
- "serverError.EMAIL_NOT_VERIFIED": "\u062A\u062D\u0642\u0642 \u0645\u0646 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0642\u0628\u0644 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
1033
- "serverError.TWO_FACTOR_REQUIRED": "\u064A\u0633\u062A\u062E\u062F\u0645 \u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 - \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0628\u062F\u0644\u064B\u0627 \u0645\u0646 \u0630\u0644\u0643.",
1034
- "serverError.CONSENT_REQUIRED": "\u064A\u062C\u0628 \u0627\u0644\u0645\u0648\u0627\u0641\u0642\u0629 \u0639\u0644\u0649 \u0627\u0644\u0634\u0631\u0648\u0637 \u0644\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628.",
1035
- "serverError.MAU_LIMIT_REACHED": "\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0644\u0627 \u064A\u0642\u0628\u0644 \u062A\u0633\u062C\u064A\u0644\u0627\u062A \u062C\u062F\u064A\u062F\u0629 \u062D\u0627\u0644\u064A\u064B\u0627.",
1036
- "serverError.MAU_BUDGET_REACHED": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062D\u0633\u0627\u0628\u0627\u062A \u0627\u0644\u062C\u062F\u064A\u062F\u0629 \u0645\u062A\u0648\u0642\u0641 \u0645\u0624\u0642\u062A\u064B\u0627 \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642. \u064A\u064F\u0631\u062C\u0649 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0627\u062D\u0642\u064B\u0627.",
1037
- "serverError.EMAIL_PASSWORD_DISABLED": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0645\u0639\u0637\u0651\u0644 \u0641\u064A \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
1038
- "serverError.PASSWORD_COMPROMISED": "\u0638\u0647\u0631\u062A \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0647\u0630\u0647 \u0641\u064A \u062A\u0633\u0631\u064A\u0628 \u0628\u064A\u0627\u0646\u0627\u062A \u0645\u0639\u0631\u0648\u0641. \u064A\u064F\u0631\u062C\u0649 \u0627\u062E\u062A\u064A\u0627\u0631 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0645\u062E\u062A\u0644\u0641\u0629.",
1039
- "serverError.PASSWORD_TOO_SHORT": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0642\u0635\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u0627\u062E\u062A\u0631 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0623\u0637\u0648\u0644.",
1040
- "serverError.PASSWORD_TOO_LONG": "\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0637\u0648\u064A\u0644\u0629 \u062C\u062F\u064B\u0627. \u0627\u062E\u062A\u0631 \u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0623\u0642\u0635\u0631.",
1041
- "serverError.INVALID_EMAIL": "\u0623\u062F\u062E\u0644 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0635\u0627\u0644\u062D\u064B\u0627.",
1042
- "serverError.BANNED_USER": "\u062A\u0645 \u062A\u0639\u0644\u064A\u0642 \u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628. \u062A\u0648\u0627\u0635\u0644 \u0645\u0639 \u0645\u0627\u0644\u0643 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
1043
- "serverError.PASSWORD_RESET_REQUIRED": "\u0623\u0639\u062F \u062A\u0639\u064A\u064A\u0646 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
1044
- "serverError.PASSWORD_SIGNUP_REQUIRED": "\u064A\u062A\u0637\u0644\u0628 \u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629. \u0623\u0646\u0634\u0626 \u062D\u0633\u0627\u0628\u0643 \u0628\u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0648\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
1045
- "serverError.SSO_EMAIL_DOMAIN_MISMATCH": "\u0645\u0632\u0648\u0651\u062F \u0627\u0644\u0647\u0648\u064A\u0629 \u0647\u0630\u0627 \u063A\u064A\u0631 \u0645\u0635\u0631\u0651\u062D \u0644\u0647 \u0628\u0646\u0637\u0627\u0642 \u0627\u0644\u0628\u0631\u064A\u062F \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0647\u0630\u0627.",
1046
- "serverError.MFA_ENROLLMENT_REQUIRED": "\u0623\u0643\u0645\u0644 \u0625\u0639\u062F\u0627\u062F \u0627\u0644\u0645\u0635\u0627\u062F\u0642\u0629 \u0627\u0644\u062B\u0646\u0627\u0626\u064A\u0629 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
1047
- "serverError.TOO_MANY_ATTEMPTS": "\u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F \u0642\u0644\u064A\u0644.",
1048
- "serverError.ACCOUNT_TEMPORARILY_LOCKED": "\u062D\u0633\u0627\u0628\u0643 \u0645\u0642\u0641\u0644 \u0645\u0624\u0642\u062A\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F \u0642\u0644\u064A\u0644.",
1049
- "serverError.RATE_LIMITED.retryIn": "\u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F {duration}.",
1050
- "serverError.TOO_MANY_ATTEMPTS.retryIn": "\u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F {duration}.",
1051
- "serverError.ACCOUNT_TEMPORARILY_LOCKED.retryIn": "\u062D\u0633\u0627\u0628\u0643 \u0645\u0642\u0641\u0644 \u0645\u0624\u0642\u062A\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F {duration}.",
1052
- "serverError.RATE_LIMITED": "\u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0628\u0639\u062F \u0642\u0644\u064A\u0644.",
1053
- "serverError.INVALID_PHONE_NUMBER": "\u0623\u062F\u062E\u0644 \u0631\u0642\u0645 \u0645\u0648\u0628\u0627\u064A\u0644 \u0645\u0635\u0631\u064A\u064B\u0627 \u0635\u0627\u0644\u062D\u064B\u0627.",
1054
- "serverError.INVALID_PHONE_OTP": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
1055
- "serverError.TURNSTILE_FAILED": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u0628\u0634\u0631\u064A. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
1056
- "serverError.BOT_CHALLENGE_FAILED": "\u0641\u0634\u0644 \u0627\u0644\u062A\u062D\u0642\u0642 \u0627\u0644\u0628\u0634\u0631\u064A. \u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
1057
- "serverError.SMS_LIMIT_REACHED": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0645\u0624\u0642\u062A\u064B\u0627 \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
1058
- "serverError.SMS_UNAVAILABLE": "\u0627\u0644\u0631\u0633\u0627\u0626\u0644 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D\u0629 \u0645\u0624\u0642\u062A\u064B\u0627. \u0627\u0633\u062A\u062E\u062F\u0645 \u0637\u0631\u064A\u0642\u0629 \u062A\u0633\u062C\u064A\u0644 \u062F\u062E\u0648\u0644 \u0623\u062E\u0631\u0649.",
1059
- "serverError.PHONE_OTP_DISABLED": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0644\u0647\u0627\u062A\u0641 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
1060
- "serverError.PHONE_OTP_PAUSED": "\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0644\u0647\u0627\u062A\u0641 \u0645\u062A\u0648\u0642\u0641 \u0645\u0624\u0642\u062A\u064B\u0627 \u0644\u0647\u0630\u0627 \u0627\u0644\u062A\u0637\u0628\u064A\u0642.",
1061
- "serverError.PHONE_OTP_UNAVAILABLE": "\u0627\u0644\u062A\u062D\u0642\u0642 \u0639\u0628\u0631 \u0627\u0644\u0647\u0627\u062A\u0641 \u063A\u064A\u0631 \u0645\u062A\u0627\u062D \u0645\u0624\u0642\u062A\u064B\u0627.",
1062
- "serverError.SESSION_NOT_FRESH": "\u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0642\u0628\u0644 \u0625\u062C\u0631\u0627\u0621 \u0647\u0630\u0627 \u0627\u0644\u062A\u063A\u064A\u064A\u0631 \u0627\u0644\u0623\u0645\u0646\u064A.",
1063
- "serverError.PASSKEY_PAGE_NOT_FOCUSED": "\u0623\u0628\u0642\u0650 \u0647\u0630\u0647 \u0627\u0644\u0635\u0641\u062D\u0629 \u0645\u0641\u062A\u0648\u062D\u0629 \u0648\u0641\u064A \u0627\u0644\u0645\u0642\u062F\u0645\u0629 \u0623\u062B\u0646\u0627\u0621 \u0625\u0643\u0645\u0627\u0644 \u0625\u0639\u062F\u0627\u062F \u0645\u0641\u062A\u0627\u062D \u0627\u0644\u0645\u0631\u0648\u0631.",
1064
- "serverError.ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED": "\u064A\u0648\u062C\u062F \u0645\u0641\u062A\u0627\u062D \u0645\u0631\u0648\u0631 \u0644\u0647\u0630\u0627 \u0627\u0644\u062D\u0633\u0627\u0628 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u062C\u0647\u0627\u0632 \u0628\u0627\u0644\u0641\u0639\u0644. \u0627\u0633\u062A\u062E\u062F\u0645\u0647 \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0623\u0648 \u0627\u062D\u0630\u0641\u0647 \u0645\u0646 \u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0627\u0644\u062C\u0647\u0627\u0632 \u0642\u0628\u0644 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
1065
- "serverError.ORGANIZATION_LAST_OWNER": "\u0627\u0646\u0642\u0644 \u0645\u0644\u0643\u064A\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0642\u0628\u0644 \u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
1066
- // P1-2 (drafted MSA - PENDING native-speaker review, per B.3 gate). These
1067
- // localize the terse two-factor / OTP codes that previously surfaced English
1068
- // via the server-message fallback.
1069
- "serverError.INVALID_CODE": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D. \u062A\u062D\u0642\u0642 \u0645\u0646 \u0627\u0644\u0631\u0645\u0632 \u0648\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
1070
- "serverError.INVALID_BACKUP_CODE": "\u0631\u0645\u0632 \u0627\u0644\u0627\u062D\u062A\u064A\u0627\u0637 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D.",
1071
- "serverError.INVALID_OTP": "\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063A\u064A\u0631 \u0635\u0627\u0644\u062D \u0623\u0648 \u0645\u0646\u062A\u0647\u064A \u0627\u0644\u0635\u0644\u0627\u062D\u064A\u0629.",
1072
- "serverError.OTP_EXPIRED": "\u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632. \u0627\u0637\u0644\u0628 \u0631\u0645\u0632\u064B\u0627 \u062C\u062F\u064A\u062F\u064B\u0627.",
1073
- "serverError.OTP_HAS_EXPIRED": "\u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632. \u0627\u0637\u0644\u0628 \u0631\u0645\u0632\u064B\u0627 \u062C\u062F\u064A\u062F\u064B\u0627.",
1074
- "serverError.TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE": "\u0645\u062D\u0627\u0648\u0644\u0627\u062A \u0643\u062B\u064A\u0631\u0629 \u062C\u062F\u064B\u0627. \u0627\u0637\u0644\u0628 \u0631\u0645\u0632\u064B\u0627 \u062C\u062F\u064A\u062F\u064B\u0627 \u0648\u062D\u0627\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649.",
1075
- "serverError.INVALID_TWO_FACTOR_COOKIE": "\u0627\u0646\u062A\u0647\u062A \u0635\u0644\u0627\u062D\u064A\u0629 \u062C\u0644\u0633\u0629 \u0627\u0644\u062A\u062D\u0642\u0642. \u0633\u062C\u0651\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0645\u0631\u0629 \u0623\u062E\u0631\u0649 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
1076
- // P1-2 organization codes (drafted MSA - PENDING native-speaker review).
1077
- "serverError.ORGANIZATION_SLUG_ALREADY_TAKEN": "\u0645\u0639\u0631\u0651\u0641 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0647\u0630\u0627 \u0645\u0633\u062A\u062E\u062F\u0645 \u0628\u0627\u0644\u0641\u0639\u0644. \u0627\u062E\u062A\u0631 \u0645\u0639\u0631\u0651\u0641\u064B\u0627 \u0622\u062E\u0631.",
1078
- "serverError.ORGANIZATION_ALREADY_EXISTS": "\u062A\u0648\u062C\u062F \u0645\u0624\u0633\u0633\u0629 \u0628\u0647\u0630\u0647 \u0627\u0644\u0628\u064A\u0627\u0646\u0627\u062A \u0628\u0627\u0644\u0641\u0639\u0644.",
1079
- "serverError.YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS": "\u0644\u0642\u062F \u0648\u0635\u0644\u062A \u0625\u0644\u0649 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062F\u062F \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062A.",
1080
- "serverError.ORGANIZATION_NOT_FOUND": "\u062A\u0639\u0630\u0631 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1081
- "serverError.USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION": "\u0644\u0645 \u062A\u0639\u062F \u0639\u0636\u0648\u064B\u0627 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1082
- "serverError.NO_ACTIVE_ORGANIZATION": "\u0627\u062E\u062A\u0631 \u0645\u0624\u0633\u0633\u0629 \u0644\u0644\u0645\u062A\u0627\u0628\u0639\u0629.",
1083
- "serverError.ORGANIZATION_MEMBERSHIP_LIMIT_REACHED": "\u0648\u0635\u0644\u062A \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0625\u0644\u0649 \u0627\u0644\u062D\u062F \u0627\u0644\u0623\u0642\u0635\u0649 \u0644\u0639\u062F\u062F \u0627\u0644\u0623\u0639\u0636\u0627\u0621.",
1084
- "serverError.MEMBER_NOT_FOUND": "\u062A\u0639\u0630\u0631 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0639\u0636\u0648.",
1085
- "serverError.INVITATION_NOT_FOUND": "\u062A\u0639\u0630\u0631 \u0627\u0644\u0639\u062B\u0648\u0631 \u0639\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u062F\u0639\u0648\u0629. \u0631\u0628\u0645\u0627 \u062A\u0645 \u0625\u0644\u063A\u0627\u0624\u0647\u0627 \u0623\u0648 \u0627\u0633\u062A\u064F\u062E\u062F\u0645\u062A \u0628\u0627\u0644\u0641\u0639\u0644.",
1086
- "serverError.YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION": "\u0623\u064F\u0631\u0633\u0644\u062A \u0647\u0630\u0647 \u0627\u0644\u062F\u0639\u0648\u0629 \u0625\u0644\u0649 \u0639\u0646\u0648\u0627\u0646 \u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0645\u062E\u062A\u0644\u0641.",
1087
- "serverError.EMAIL_VERIFICATION_REQUIRED_FOR_INVITATION": "\u0641\u0639\u0651\u0644 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0644\u0639\u0631\u0636 \u062F\u0639\u0648\u0627\u062A\u0643.",
1088
- "serverError.EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION": "\u0641\u0639\u0651\u0644 \u0628\u0631\u064A\u062F\u0643 \u0627\u0644\u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A \u0642\u0628\u0644 \u0627\u0644\u0631\u062F \u0639\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u062F\u0639\u0648\u0629.",
1089
- "serverError.USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION": "\u0647\u0630\u0627 \u0627\u0644\u0634\u062E\u0635 \u0639\u0636\u0648 \u0641\u064A \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0628\u0627\u0644\u0641\u0639\u0644.",
1090
- "serverError.USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION": "\u062A\u0645\u062A \u062F\u0639\u0648\u0629 \u0647\u0630\u0627 \u0627\u0644\u0634\u062E\u0635 \u0625\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629 \u0628\u0627\u0644\u0641\u0639\u0644.",
1091
- "serverError.YOU_ARE_NOT_ALLOWED_TO_INVITE_USERS_TO_THIS_ORGANIZATION": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062F\u0639\u0648\u0629 \u0623\u0639\u0636\u0627\u0621 \u0625\u0644\u0649 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1092
- "serverError.YOU_ARE_NOT_ALLOWED_TO_INVITE_USER_WITH_THIS_ROLE": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062F\u0639\u0648\u0629 \u0639\u0636\u0648 \u0628\u0647\u0630\u0627 \u0627\u0644\u062F\u0648\u0631.",
1093
- "serverError.YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER": "\u0631\u0642\u0651 \u0639\u0636\u0648\u064B\u0627 \u0622\u062E\u0631 \u0625\u0644\u0649 \u0645\u0627\u0644\u0643 \u0642\u0628\u0644 \u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1094
- "serverError.YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER": "\u0631\u0642\u0651 \u0639\u0636\u0648\u064B\u0627 \u0622\u062E\u0631 \u0625\u0644\u0649 \u0645\u0627\u0644\u0643 \u0642\u0628\u0644 \u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1095
- "serverError.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_ORGANIZATION": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062A\u0639\u062F\u064A\u0644 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1096
- "serverError.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_ORGANIZATION": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062D\u0630\u0641 \u0647\u0630\u0647 \u0627\u0644\u0645\u0624\u0633\u0633\u0629.",
1097
- "serverError.YOU_ARE_NOT_ALLOWED_TO_DELETE_THIS_MEMBER": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u0625\u0632\u0627\u0644\u0629 \u0647\u0630\u0627 \u0627\u0644\u0639\u0636\u0648.",
1098
- "serverError.YOU_ARE_NOT_ALLOWED_TO_UPDATE_THIS_MEMBER": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u062A\u0639\u062F\u064A\u0644 \u0647\u0630\u0627 \u0627\u0644\u0639\u0636\u0648.",
1099
- "serverError.YOU_ARE_NOT_ALLOWED_TO_CANCEL_THIS_INVITATION": "\u0644\u064A\u0633 \u0644\u062F\u064A\u0643 \u0635\u0644\u0627\u062D\u064A\u0629 \u0625\u0644\u063A\u0627\u0621 \u0647\u0630\u0647 \u0627\u0644\u062F\u0639\u0648\u0629."
1100
- };
1101
-
1102
- // src/i18n/catalog.ts
1103
- var catalogs = { en, ar };
1104
- function formatMessage(locale, key, params) {
1105
- const message = catalogs[locale][key];
1106
- if (!params) return message;
1107
- return message.replace(
1108
- /\{(\w+)\}/g,
1109
- (token, name) => name in params ? String(params[name]) : token
1110
- );
1111
- }
1112
- function serverErrorMessage(locale, code) {
1113
- if (!code) return null;
1114
- const key = `serverError.${code}`;
1115
- return key in catalogs[locale] ? catalogs[locale][key] : null;
1116
- }
1117
- var RETRY_FAMILY = /* @__PURE__ */ new Set(["RATE_LIMITED", "TOO_MANY_ATTEMPTS", "ACCOUNT_TEMPORARILY_LOCKED"]);
1118
- var ENUMERATION_DENYLIST = /* @__PURE__ */ new Set([
1119
- "USER_NOT_FOUND",
1120
- "USER_EMAIL_NOT_FOUND",
1121
- "ACCOUNT_NOT_FOUND",
1122
- "CREDENTIAL_ACCOUNT_NOT_FOUND"
1123
- ]);
1124
- var MAX_SERVER_MESSAGE_LENGTH = 200;
1125
- function formatRetryDuration(locale, seconds) {
1126
- const safe = Math.max(1, Math.trunc(seconds));
1127
- const useMinutes = safe >= 90;
1128
- const value = useMinutes ? Math.ceil(safe / 60) : safe;
1129
- return new Intl.NumberFormat(locale, {
1130
- style: "unit",
1131
- unit: useMinutes ? "minute" : "second",
1132
- unitDisplay: "long"
1133
- }).format(value);
1134
- }
1135
- function resolveServerError(locale, error, fallback) {
1136
- if (!error) return fallback;
1137
- const code = error.code ?? (error.status === 429 ? "RATE_LIMITED" : void 0);
1138
- if (code && RETRY_FAMILY.has(code) && isRetryAfter(error.retryAfterSeconds)) {
1139
- const retryKey = `serverError.${code}.retryIn`;
1140
- if (retryKey in catalogs[locale]) {
1141
- return formatMessage(locale, retryKey, {
1142
- duration: formatRetryDuration(locale, error.retryAfterSeconds)
1143
- });
1144
- }
1145
- }
1146
- const mapped = serverErrorMessage(locale, code);
1147
- if (mapped !== null) return mapped;
1148
- if (canSurfaceServerMessage(error, code)) return error.message.trim();
1149
- return fallback;
1150
- }
1151
- function isRetryAfter(value) {
1152
- return typeof value === "number" && Number.isFinite(value) && value > 0;
1153
- }
1154
- function canSurfaceServerMessage(error, code) {
1155
- if (code && ENUMERATION_DENYLIST.has(code)) return false;
1156
- const status = error.status;
1157
- if (typeof status !== "number" || status < 400 || status > 499) return false;
1158
- const message = error.message?.trim();
1159
- if (!message || message.length > MAX_SERVER_MESSAGE_LENGTH) return false;
1160
- if (message === error.statusText?.trim() || message === "Request failed") return false;
1161
- return true;
1162
- }
1163
-
1164
- // src/i18n/index.tsx
277
+ import {
278
+ formatMessage,
279
+ resolveServerError
280
+ } from "@authowl/core/i18n";
281
+ import {
282
+ formatMessage as formatMessage2,
283
+ serverErrorMessage,
284
+ resolveServerError as resolveServerError2,
285
+ formatRetryDuration,
286
+ catalogs
287
+ } from "@authowl/core/i18n";
1165
288
  import { jsx as jsx2 } from "react/jsx-runtime";
1166
289
  function useLocale() {
1167
290
  return useAuthOwlContext().locale;
@@ -1404,38 +527,9 @@ function useSignOut() {
1404
527
  }
1405
528
 
1406
529
  // src/project-capabilities.ts
1407
- function resolveProjectCapabilities(config) {
1408
- const methods = config?.enabledMethods ?? ["password"];
1409
- const legacyPassword = methods.includes("password");
1410
- const legacyPasskey = methods.includes("passkey");
1411
- const authentication = config?.authentication;
1412
- const mfa = config?.mfa;
1413
- return {
1414
- emailSignUp: authentication?.email.signUp ?? methods.some((method) => method === "password" || method === "magic_link" || method === "email_otp"),
1415
- passwordSignUp: authentication?.password.signUp ?? legacyPassword,
1416
- phoneSignUp: authentication?.phone.signUp ?? methods.includes("phone_otp"),
1417
- passwordSignIn: authentication?.email.signIn.includes("password") ?? legacyPassword,
1418
- passwordMinLength: authentication?.password.minLength ?? 8,
1419
- passwordMaxLength: authentication?.password.maxLength ?? 128,
1420
- magicLinkSignIn: authentication?.email.signIn.includes("magic_link") ?? methods.includes("magic_link"),
1421
- emailOtpSignIn: authentication?.email.signIn.includes("email_otp") ?? methods.includes("email_otp"),
1422
- phoneSignIn: authentication?.phone.signIn ?? methods.includes("phone_otp"),
1423
- usernameSignIn: authentication?.username.signIn ?? false,
1424
- collectUsername: authentication?.username.collectOnSignUp ?? false,
1425
- passkeySignIn: authentication?.passkey.signIn ?? legacyPasskey,
1426
- passkeyAdd: authentication?.passkey.add ?? legacyPasskey,
1427
- firstLastName: config?.userModel?.firstLastName ?? false,
1428
- // Existing servers predate the switch but allowed email changes by default.
1429
- emailChange: config === null ? false : config.userModel?.emailChange ?? true,
1430
- accountDeletion: config?.userModel?.accountDeletion ?? config?.accountDeletion ?? false,
1431
- emailVerificationRequired: config?.emailVerification?.required ?? config?.requireEmailVerification ?? false,
1432
- emailVerificationMethod: config?.emailVerification?.method ?? "link",
1433
- totp: mfa?.totp ?? config?.twoFactor ?? false,
1434
- mfaRequired: mfa?.required ?? config?.mfaRequired ?? false,
1435
- backupCodes: mfa?.backupCodes ?? config?.twoFactor ?? false,
1436
- legacyNameField: config?.authentication === void 0
1437
- };
1438
- }
530
+ import {
531
+ resolveProjectCapabilities
532
+ } from "@authowl/core";
1439
533
 
1440
534
  // src/signin-methods.ts
1441
535
  var KNOWN_METHODS = [
@@ -1457,7 +551,7 @@ function resolveSignInMethods(config) {
1457
551
  const password = capabilities.passwordSignIn;
1458
552
  const username = capabilities.usernameSignIn;
1459
553
  const magicLink = capabilities.magicLinkSignIn;
1460
- const emailOtp = capabilities.emailOtpSignIn;
554
+ const emailOtp = capabilities.emailOtpSignIn && !capabilities.totp && !capabilities.mfaRequired;
1461
555
  const phoneOtp = capabilities.phoneSignIn;
1462
556
  const passkey = capabilities.passkeySignIn;
1463
557
  const sso = has("sso");
@@ -1488,7 +582,7 @@ function resolveSignInMethods(config) {
1488
582
  }
1489
583
 
1490
584
  // src/components/SignIn.tsx
1491
- import * as React12 from "react";
585
+ import * as React13 from "react";
1492
586
 
1493
587
  // src/components/redirect.ts
1494
588
  function isSafeRedirect(redirectTo, origin) {
@@ -2142,8 +1236,11 @@ function MFAChallenge({ onVerified, allowTrustDevice = true }) {
2142
1236
  }
2143
1237
  )
2144
1238
  ] }),
2145
- mode !== "backup" && allowTrustDevice && /* @__PURE__ */ jsxs8("label", { className: "ba-consent", children: [
2146
- /* @__PURE__ */ jsx12("input", { type: "checkbox", checked: trustDevice, onChange: (e) => setTrustDevice(e.target.checked) }),
1239
+ mode !== "backup" && allowTrustDevice && /* @__PURE__ */ jsxs8("label", { className: "ba-consent ba-consent-centered", children: [
1240
+ /* @__PURE__ */ jsxs8("span", { className: "ba-checkbox-control", children: [
1241
+ /* @__PURE__ */ jsx12("input", { className: "ba-checkbox", type: "checkbox", checked: trustDevice, onChange: (e) => setTrustDevice(e.target.checked) }),
1242
+ /* @__PURE__ */ jsx12("span", { className: "ba-checkbox-visual", "aria-hidden": "true", children: /* @__PURE__ */ jsx12("span", { className: "ba-checkbox-check" }) })
1243
+ ] }),
2147
1244
  /* @__PURE__ */ jsx12("span", { children: t("mfa.challenge.trustDevice", { days: 30 }) })
2148
1245
  ] }),
2149
1246
  /* @__PURE__ */ jsx12(FormError, { children: error }),
@@ -2215,14 +1312,18 @@ function LegalConsentCheckbox({
2215
1312
  const t = useT();
2216
1313
  if (!legal.required) return null;
2217
1314
  return /* @__PURE__ */ jsxs11("label", { className: "ba-consent", "data-testid": testId, children: [
2218
- /* @__PURE__ */ jsx15(
2219
- "input",
2220
- {
2221
- type: "checkbox",
2222
- checked: accepted,
2223
- onChange: (event) => onAcceptedChange(event.target.checked)
2224
- }
2225
- ),
1315
+ /* @__PURE__ */ jsxs11("span", { className: "ba-checkbox-control", children: [
1316
+ /* @__PURE__ */ jsx15(
1317
+ "input",
1318
+ {
1319
+ className: "ba-checkbox",
1320
+ type: "checkbox",
1321
+ checked: accepted,
1322
+ onChange: (event) => onAcceptedChange(event.target.checked)
1323
+ }
1324
+ ),
1325
+ /* @__PURE__ */ jsx15("span", { className: "ba-checkbox-visual", "aria-hidden": "true", children: /* @__PURE__ */ jsx15("span", { className: "ba-checkbox-check" }) })
1326
+ ] }),
2226
1327
  /* @__PURE__ */ jsx15("span", { children: richMessage(t("signUp.consentLabel"), {
2227
1328
  links: /* @__PURE__ */ jsx15(ConsentDocLinks, { termsUrl: legal.termsUrl, privacyUrl: legal.privacyUrl })
2228
1329
  }) })
@@ -2409,9 +1510,65 @@ function PhoneOTP({ redirectTo, onSignedIn, onBack }) {
2409
1510
  );
2410
1511
  }
2411
1512
 
1513
+ // src/components/AuthOwlBranding.tsx
1514
+ import * as React12 from "react";
1515
+ import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
1516
+ function AuthOwlBranding({ href, showEnvironment = true } = {}) {
1517
+ const t = useT();
1518
+ const { config } = usePublicConfig();
1519
+ const logoUrl = config?.branding?.logoUrl;
1520
+ const appName = config?.branding?.appName?.trim() ?? "";
1521
+ const showAppName = config?.branding?.showAppName !== false && appName.length > 0;
1522
+ const alignment = config?.branding?.alignment ?? "left";
1523
+ const [logoFailed, setLogoFailed] = React12.useState(false);
1524
+ React12.useEffect(() => setLogoFailed(false), [logoUrl]);
1525
+ if (!config) return null;
1526
+ if (!logoUrl && !showAppName && (!showEnvironment || !config.environmentType)) return null;
1527
+ const identity = /* @__PURE__ */ jsxs13("div", { className: "ba-branding-identity", children: [
1528
+ logoUrl && !logoFailed ? /* @__PURE__ */ jsx17(
1529
+ "img",
1530
+ {
1531
+ className: "ba-branding-logo",
1532
+ src: logoUrl,
1533
+ alt: showAppName ? `${appName} logo` : "Application logo",
1534
+ referrerPolicy: "no-referrer",
1535
+ onError: () => setLogoFailed(true)
1536
+ }
1537
+ ) : showAppName ? /* @__PURE__ */ jsx17("span", { className: "ba-branding-fallback", "aria-hidden": "true", children: appName.charAt(0).toLocaleUpperCase() }) : null,
1538
+ showAppName ? /* @__PURE__ */ jsx17("span", { className: "ba-branding-name", children: appName }) : null
1539
+ ] });
1540
+ return /* @__PURE__ */ jsxs13(
1541
+ "header",
1542
+ {
1543
+ className: `ba-branding ba-branding-align-${alignment}`,
1544
+ "data-testid": "authowl-branding",
1545
+ children: [
1546
+ href ? /* @__PURE__ */ jsx17("a", { className: "ba-branding-link", href, children: identity }) : identity,
1547
+ showEnvironment && config.environmentType ? /* @__PURE__ */ jsxs13(
1548
+ "span",
1549
+ {
1550
+ className: `ba-environment ba-environment-${config.environmentType}`,
1551
+ "data-testid": "authowl-environment",
1552
+ children: [
1553
+ /* @__PURE__ */ jsx17("span", { className: "ba-environment-dot", "aria-hidden": "true" }),
1554
+ t(`branding.environment.${config.environmentType}`)
1555
+ ]
1556
+ }
1557
+ ) : null
1558
+ ]
1559
+ }
1560
+ );
1561
+ }
1562
+
2412
1563
  // src/components/SignIn.tsx
2413
- import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
2414
- function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
1564
+ import { Fragment as Fragment5, jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
1565
+ function SignIn({
1566
+ redirectTo,
1567
+ onSignedIn,
1568
+ resetPasswordUrl,
1569
+ showBadge,
1570
+ showBranding = true
1571
+ } = {}) {
2415
1572
  const t = useT();
2416
1573
  const { sessionStore } = useAuthClient();
2417
1574
  const {
@@ -2425,47 +1582,51 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2425
1582
  const { config, isLoading, isError } = usePublicConfig();
2426
1583
  const { pending, error, setError, run } = useSubmitAction();
2427
1584
  const authChallenge = useAuthChallenge();
2428
- const [email, setEmail] = React12.useState("");
2429
- const [username, setUsername] = React12.useState("");
2430
- const [password, setPassword] = React12.useState("");
2431
- const [credentialMode, setCredentialMode] = React12.useState("email");
2432
- const [otp, setOtp] = React12.useState("");
2433
- const [view, setView] = React12.useState(
1585
+ const [email, setEmail] = React13.useState("");
1586
+ const [username, setUsername] = React13.useState("");
1587
+ const [password, setPassword] = React13.useState("");
1588
+ const [credentialMode, setCredentialMode] = React13.useState("email");
1589
+ const [otp, setOtp] = React13.useState("");
1590
+ const [view, setView] = React13.useState(
2434
1591
  "sign-in"
2435
1592
  );
2436
- const [inFlight, setInFlight] = React12.useState(null);
2437
- const [challenge, setChallenge] = React12.useState(false);
2438
- const emailRef = React12.useRef(null);
1593
+ const [inFlight, setInFlight] = React13.useState(null);
1594
+ const [challenge, setChallenge] = React13.useState(false);
1595
+ const emailRef = React13.useRef(null);
2439
1596
  const plan = resolveSignInMethods(config);
2440
1597
  usePasskeyAutofill({
2441
1598
  enabled: credentialMode === "email" && plan.autofillHost !== null,
2442
1599
  redirectTo,
2443
1600
  onSignedIn
2444
1601
  });
2445
- const badge = /* @__PURE__ */ jsx17(AuthOwlBadge, { force: showBadge });
1602
+ const badge = /* @__PURE__ */ jsx18(AuthOwlBadge, { force: showBadge });
1603
+ const branding = showBranding ? /* @__PURE__ */ jsx18(AuthOwlBranding, {}) : null;
2446
1604
  if (isLoading) {
2447
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-loading", "aria-busy": "true", children: [
2448
- /* @__PURE__ */ jsx17("div", { className: "ba-skeleton" }),
2449
- /* @__PURE__ */ jsx17("div", { className: "ba-skeleton" })
1605
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-loading", "aria-busy": "true", children: [
1606
+ /* @__PURE__ */ jsx18("div", { className: "ba-skeleton" }),
1607
+ /* @__PURE__ */ jsx18("div", { className: "ba-skeleton" })
2450
1608
  ] });
2451
1609
  }
2452
1610
  if (challenge) {
2453
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-mfa", children: [
2454
- /* @__PURE__ */ jsx17(MFAChallenge, { onVerified: () => finishSignIn({ sessionStore, redirectTo, onSignedIn }) }),
1611
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-mfa", children: [
1612
+ branding,
1613
+ /* @__PURE__ */ jsx18(MFAChallenge, { onVerified: () => finishSignIn({ sessionStore, redirectTo, onSignedIn }) }),
2455
1614
  badge
2456
1615
  ] });
2457
1616
  }
2458
1617
  if (view === "forgot" && resetPasswordUrl) {
2459
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-forgot", children: [
2460
- /* @__PURE__ */ jsx17("h2", { className: "ba-title", children: t("signIn.forgotTitle") }),
2461
- /* @__PURE__ */ jsx17(ForgotPassword, { resetPasswordUrl, onBack: () => setView("sign-in") }),
1618
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-forgot", children: [
1619
+ branding,
1620
+ /* @__PURE__ */ jsx18("h2", { className: "ba-title", children: t("signIn.forgotTitle") }),
1621
+ /* @__PURE__ */ jsx18(ForgotPassword, { resetPasswordUrl, onBack: () => setView("sign-in") }),
2462
1622
  badge
2463
1623
  ] });
2464
1624
  }
2465
1625
  if (view === "otp-code") {
2466
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-otp-code", children: [
2467
- /* @__PURE__ */ jsx17("h2", { className: "ba-title", children: t("signIn.title") }),
2468
- /* @__PURE__ */ jsx17(
1626
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-otp-code", children: [
1627
+ branding,
1628
+ /* @__PURE__ */ jsx18("h2", { className: "ba-title", children: t("signIn.title") }),
1629
+ /* @__PURE__ */ jsx18(
2469
1630
  OtpCodeForm,
2470
1631
  {
2471
1632
  email,
@@ -2491,16 +1652,18 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2491
1652
  ] });
2492
1653
  }
2493
1654
  if (view === "magic-sent") {
2494
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-magic-sent", children: [
2495
- /* @__PURE__ */ jsx17("h2", { className: "ba-title", children: t("signIn.title") }),
2496
- /* @__PURE__ */ jsx17("p", { className: "ba-muted", children: t("magicLink.sent") }),
2497
- /* @__PURE__ */ jsx17("button", { type: "button", className: "ba-link-button", onClick: () => setView("sign-in"), children: t("forgotPassword.backToSignIn") }),
1655
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-magic-sent", children: [
1656
+ branding,
1657
+ /* @__PURE__ */ jsx18("h2", { className: "ba-title", children: t("signIn.title") }),
1658
+ /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: t("magicLink.sent") }),
1659
+ /* @__PURE__ */ jsx18("button", { type: "button", className: "ba-link-button", onClick: () => setView("sign-in"), children: t("forgotPassword.backToSignIn") }),
2498
1660
  badge
2499
1661
  ] });
2500
1662
  }
2501
1663
  if (view === "phone") {
2502
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-phone", children: [
2503
- /* @__PURE__ */ jsx17(
1664
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-phone", children: [
1665
+ branding,
1666
+ /* @__PURE__ */ jsx18(
2504
1667
  PhoneOTP,
2505
1668
  {
2506
1669
  redirectTo,
@@ -2572,12 +1735,13 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2572
1735
  { key: "otp", enabled: plan.emailOtp, action: doRequestOtp, label: t("emailOtp.requestSubmit"), pendingLabel: t("common.sending") },
2573
1736
  { key: "sso", enabled: plan.sso, action: doSso, label: t("sso.continueWith"), pendingLabel: t("sso.redirecting") }
2574
1737
  ];
2575
- return /* @__PURE__ */ jsxs13("div", { className: "ba-form", "data-testid": "signin-form", children: [
2576
- /* @__PURE__ */ jsx17("h2", { className: "ba-title", children: t("signIn.title") }),
2577
- process.env.NODE_ENV !== "production" && isError && /* @__PURE__ */ jsx17("p", { className: "ba-muted", "data-testid": "signin-dev-config-notice", children: "AuthOwl (dev): couldn't load this project's config, so this is a password-only fallback that may not match the project's enabled sign-in methods. Check apiUrl / publishableKey; see the console for details." }),
2578
- /* @__PURE__ */ jsx17(SocialButtons, { providers: plan.social, callbackURL: redirectTo }),
2579
- showDivider && /* @__PURE__ */ jsx17("div", { className: "ba-divider", children: t("common.orDivider") }),
2580
- hasCredentialForm && /* @__PURE__ */ jsxs13(
1738
+ return /* @__PURE__ */ jsxs14("div", { className: "ba-form", "data-testid": "signin-form", children: [
1739
+ branding,
1740
+ /* @__PURE__ */ jsx18("h2", { className: "ba-title", children: t("signIn.title") }),
1741
+ process.env.NODE_ENV !== "production" && isError && /* @__PURE__ */ jsx18("p", { className: "ba-muted", "data-testid": "signin-dev-config-notice", children: "AuthOwl (dev): couldn't load this project's config, so this is a password-only fallback that may not match the project's enabled sign-in methods. Check apiUrl / publishableKey; see the console for details." }),
1742
+ /* @__PURE__ */ jsx18(SocialButtons, { providers: plan.social, callbackURL: redirectTo }),
1743
+ showDivider && /* @__PURE__ */ jsx18("div", { className: "ba-divider", children: t("common.orDivider") }),
1744
+ hasCredentialForm && /* @__PURE__ */ jsxs14(
2581
1745
  "form",
2582
1746
  {
2583
1747
  method: "post",
@@ -2588,9 +1752,9 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2588
1752
  else if (plan.primary) PRIMARY_ACTION[plan.primary]();
2589
1753
  },
2590
1754
  children: [
2591
- credentialMode === "email" ? /* @__PURE__ */ jsxs13("label", { className: "ba-label", children: [
1755
+ credentialMode === "email" ? /* @__PURE__ */ jsxs14("label", { className: "ba-label", children: [
2592
1756
  t("common.emailLabel"),
2593
- /* @__PURE__ */ jsx17(
1757
+ /* @__PURE__ */ jsx18(
2594
1758
  "input",
2595
1759
  {
2596
1760
  ref: emailRef,
@@ -2605,9 +1769,9 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2605
1769
  required: true
2606
1770
  }
2607
1771
  )
2608
- ] }) : /* @__PURE__ */ jsxs13("label", { className: "ba-label", children: [
1772
+ ] }) : /* @__PURE__ */ jsxs14("label", { className: "ba-label", children: [
2609
1773
  t("common.usernameLabel"),
2610
- /* @__PURE__ */ jsx17(
1774
+ /* @__PURE__ */ jsx18(
2611
1775
  "input",
2612
1776
  {
2613
1777
  className: "ba-input",
@@ -2622,9 +1786,9 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2622
1786
  }
2623
1787
  )
2624
1788
  ] }),
2625
- plan.password && /* @__PURE__ */ jsxs13("label", { className: "ba-label", children: [
1789
+ plan.password && /* @__PURE__ */ jsxs14("label", { className: "ba-label", children: [
2626
1790
  t("common.passwordLabel"),
2627
- /* @__PURE__ */ jsx17(
1791
+ /* @__PURE__ */ jsx18(
2628
1792
  "input",
2629
1793
  {
2630
1794
  className: "ba-input",
@@ -2640,19 +1804,19 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2640
1804
  )
2641
1805
  ] }),
2642
1806
  authChallenge.control,
2643
- /* @__PURE__ */ jsx17(FormError, { children: error }),
2644
- plan.password && /* @__PURE__ */ jsxs13(Fragment5, { children: [
2645
- /* @__PURE__ */ jsx17(
1807
+ /* @__PURE__ */ jsx18(FormError, { children: error }),
1808
+ plan.password && /* @__PURE__ */ jsxs14(Fragment5, { children: [
1809
+ /* @__PURE__ */ jsx18(
2646
1810
  "button",
2647
1811
  {
2648
1812
  className: "ba-button",
2649
1813
  type: "submit",
2650
1814
  disabled: pending || authChallenge.configPending,
2651
1815
  "aria-busy": pending && inFlight === "password" || void 0,
2652
- children: /* @__PURE__ */ jsx17(Busy, { busy: pending && inFlight === "password", label: t("signIn.submitPending"), children: t("signIn.submit") })
1816
+ children: /* @__PURE__ */ jsx18(Busy, { busy: pending && inFlight === "password", label: t("signIn.submitPending"), children: t("signIn.submit") })
2653
1817
  }
2654
1818
  ),
2655
- resetPasswordUrl && /* @__PURE__ */ jsx17(
1819
+ resetPasswordUrl && /* @__PURE__ */ jsx18(
2656
1820
  "button",
2657
1821
  {
2658
1822
  type: "button",
@@ -2664,7 +1828,7 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2664
1828
  ] }),
2665
1829
  credentialMode === "email" && alternates.filter((a) => a.enabled).map(({ key, action, label: label2, pendingLabel }) => {
2666
1830
  const isPrimary = plan.primary === key;
2667
- return /* @__PURE__ */ jsx17(
1831
+ return /* @__PURE__ */ jsx18(
2668
1832
  "button",
2669
1833
  {
2670
1834
  type: isPrimary ? "submit" : "button",
@@ -2672,12 +1836,12 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2672
1836
  disabled: pending || authChallenge.configPending,
2673
1837
  "aria-busy": pending && inFlight === key || void 0,
2674
1838
  onClick: isPrimary ? void 0 : withEmail(action),
2675
- children: /* @__PURE__ */ jsx17(Busy, { busy: pending && inFlight === key, label: pendingLabel, children: label2 })
1839
+ children: /* @__PURE__ */ jsx18(Busy, { busy: pending && inFlight === key, label: pendingLabel, children: label2 })
2676
1840
  },
2677
1841
  key
2678
1842
  );
2679
1843
  }),
2680
- plan.username && /* @__PURE__ */ jsx17(
1844
+ plan.username && /* @__PURE__ */ jsx18(
2681
1845
  "button",
2682
1846
  {
2683
1847
  type: "button",
@@ -2693,8 +1857,8 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2693
1857
  ]
2694
1858
  }
2695
1859
  ),
2696
- plan.passkey && /* @__PURE__ */ jsx17(PasskeyButton, { redirectTo, onSignedIn }),
2697
- plan.phoneOtp && /* @__PURE__ */ jsx17(
1860
+ plan.passkey && /* @__PURE__ */ jsx18(PasskeyButton, { redirectTo, onSignedIn }),
1861
+ plan.phoneOtp && /* @__PURE__ */ jsx18(
2698
1862
  "button",
2699
1863
  {
2700
1864
  type: "button",
@@ -2703,17 +1867,17 @@ function SignIn({ redirectTo, onSignedIn, resetPasswordUrl, showBadge } = {}) {
2703
1867
  children: t("phoneOtp.usePhone")
2704
1868
  }
2705
1869
  ),
2706
- !plan.renderable && /* @__PURE__ */ jsx17("p", { className: "ba-muted", children: plan.emptyReason === "unsupported" ? t("signIn.empty.unsupported") : t("signIn.empty.none") }),
1870
+ !plan.renderable && /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: plan.emptyReason === "unsupported" ? t("signIn.empty.unsupported") : t("signIn.empty.none") }),
2707
1871
  badge
2708
1872
  ] });
2709
1873
  }
2710
1874
 
2711
1875
  // src/components/SignUp.tsx
2712
- import * as React16 from "react";
1876
+ import * as React17 from "react";
2713
1877
 
2714
1878
  // src/components/VerificationPending.tsx
2715
- import * as React13 from "react";
2716
- import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
1879
+ import * as React14 from "react";
1880
+ import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
2717
1881
  function VerificationPending({
2718
1882
  email,
2719
1883
  callbackURL,
@@ -2727,14 +1891,14 @@ function VerificationPending({
2727
1891
  } = useEmailVerification();
2728
1892
  const { pending, error, run } = useSubmitAction();
2729
1893
  const authChallenge = useAuthChallenge();
2730
- const [resent, setResent] = React13.useState(false);
2731
- const [code, setCode] = React13.useState("");
2732
- const [verified, setVerified] = React13.useState(false);
1894
+ const [resent, setResent] = React14.useState(false);
1895
+ const [code, setCode] = React14.useState("");
1896
+ const [verified, setVerified] = React14.useState(false);
2733
1897
  if (verified) {
2734
- return /* @__PURE__ */ jsx18("p", { className: "ba-success", role: "status", "data-testid": "verify-code-success", children: t("verifyEmail.success") });
1898
+ return /* @__PURE__ */ jsx19("p", { className: "ba-success", role: "status", "data-testid": "verify-code-success", children: t("verifyEmail.success") });
2735
1899
  }
2736
1900
  if (method === "code") {
2737
- return /* @__PURE__ */ jsxs14(
1901
+ return /* @__PURE__ */ jsxs15(
2738
1902
  "form",
2739
1903
  {
2740
1904
  method: "post",
@@ -2751,12 +1915,12 @@ function VerificationPending({
2751
1915
  );
2752
1916
  },
2753
1917
  children: [
2754
- /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: richMessage(t("verifyPending.codeBody"), {
2755
- email: /* @__PURE__ */ jsx18("strong", { children: /* @__PURE__ */ jsx18(Bidi, { children: email }) })
1918
+ /* @__PURE__ */ jsx19("p", { className: "ba-muted", children: richMessage(t("verifyPending.codeBody"), {
1919
+ email: /* @__PURE__ */ jsx19("strong", { children: /* @__PURE__ */ jsx19(Bidi, { children: email }) })
2756
1920
  }) }),
2757
- /* @__PURE__ */ jsxs14("label", { className: "ba-label", children: [
1921
+ /* @__PURE__ */ jsxs15("label", { className: "ba-label", children: [
2758
1922
  t("verifyPending.codeLabel"),
2759
- /* @__PURE__ */ jsx18(
1923
+ /* @__PURE__ */ jsx19(
2760
1924
  "input",
2761
1925
  {
2762
1926
  className: "ba-input",
@@ -2768,20 +1932,20 @@ function VerificationPending({
2768
1932
  }
2769
1933
  )
2770
1934
  ] }),
2771
- resent && /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: t("verifyPending.resent") }),
1935
+ resent && /* @__PURE__ */ jsx19("p", { className: "ba-muted", children: t("verifyPending.resent") }),
2772
1936
  authChallenge.control,
2773
- /* @__PURE__ */ jsx18(FormError, { children: error }),
2774
- /* @__PURE__ */ jsx18(
1937
+ /* @__PURE__ */ jsx19(FormError, { children: error }),
1938
+ /* @__PURE__ */ jsx19(
2775
1939
  "button",
2776
1940
  {
2777
1941
  className: "ba-button",
2778
1942
  type: "submit",
2779
1943
  disabled: pending || !code,
2780
1944
  "aria-busy": pending || void 0,
2781
- children: /* @__PURE__ */ jsx18(Busy, { busy: pending, label: t("common.verifying"), children: t("emailOtp.verifySubmit") })
1945
+ children: /* @__PURE__ */ jsx19(Busy, { busy: pending, label: t("common.verifying"), children: t("emailOtp.verifySubmit") })
2782
1946
  }
2783
1947
  ),
2784
- /* @__PURE__ */ jsx18(
1948
+ /* @__PURE__ */ jsx19(
2785
1949
  "button",
2786
1950
  {
2787
1951
  type: "button",
@@ -2807,14 +1971,14 @@ function VerificationPending({
2807
1971
  }
2808
1972
  );
2809
1973
  }
2810
- return /* @__PURE__ */ jsxs14("div", { className: "ba-fields", "data-testid": "verify-pending", children: [
2811
- /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: richMessage(t("verifyPending.body"), {
2812
- email: /* @__PURE__ */ jsx18("strong", { children: /* @__PURE__ */ jsx18(Bidi, { children: email }) })
1974
+ return /* @__PURE__ */ jsxs15("div", { className: "ba-fields", "data-testid": "verify-pending", children: [
1975
+ /* @__PURE__ */ jsx19("p", { className: "ba-muted", children: richMessage(t("verifyPending.body"), {
1976
+ email: /* @__PURE__ */ jsx19("strong", { children: /* @__PURE__ */ jsx19(Bidi, { children: email }) })
2813
1977
  }) }),
2814
- resent && /* @__PURE__ */ jsx18("p", { className: "ba-muted", children: t("verifyPending.resent") }),
1978
+ resent && /* @__PURE__ */ jsx19("p", { className: "ba-muted", children: t("verifyPending.resent") }),
2815
1979
  authChallenge.control,
2816
- /* @__PURE__ */ jsx18(FormError, { children: error }),
2817
- /* @__PURE__ */ jsx18(
1980
+ /* @__PURE__ */ jsx19(FormError, { children: error }),
1981
+ /* @__PURE__ */ jsx19(
2818
1982
  "button",
2819
1983
  {
2820
1984
  type: "button",
@@ -2825,25 +1989,25 @@ function VerificationPending({
2825
1989
  failure: t("verifyPending.error.resendFailed"),
2826
1990
  onSuccess: () => setResent(true)
2827
1991
  }),
2828
- children: /* @__PURE__ */ jsx18(Busy, { busy: pending, label: t("common.sending"), children: t("verifyPending.resendButton") })
1992
+ children: /* @__PURE__ */ jsx19(Busy, { busy: pending, label: t("common.sending"), children: t("verifyPending.resendButton") })
2829
1993
  }
2830
1994
  )
2831
1995
  ] });
2832
1996
  }
2833
1997
 
2834
1998
  // src/components/PasswordlessSignUp.tsx
2835
- import * as React14 from "react";
2836
- import { jsx as jsx19, jsxs as jsxs15 } from "react/jsx-runtime";
1999
+ import * as React15 from "react";
2000
+ import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
2837
2001
  function PasswordlessSignUp({ onAuthenticated }) {
2838
2002
  const t = useT();
2839
2003
  const { sendEmailOtp, signInEmailOtp } = useSignIn();
2840
2004
  const { pending, error, setError, run } = useSubmitAction();
2841
2005
  const authChallenge = useAuthChallenge();
2842
- const [email, setEmail] = React14.useState("");
2843
- const [code, setCode] = React14.useState("");
2844
- const [codeSent, setCodeSent] = React14.useState(false);
2006
+ const [email, setEmail] = React15.useState("");
2007
+ const [code, setCode] = React15.useState("");
2008
+ const [codeSent, setCodeSent] = React15.useState(false);
2845
2009
  if (codeSent) {
2846
- return /* @__PURE__ */ jsx19("div", { className: "ba-fields", "data-testid": "signup-emailotp-code", children: /* @__PURE__ */ jsx19(
2010
+ return /* @__PURE__ */ jsx20("div", { className: "ba-fields", "data-testid": "signup-emailotp-code", children: /* @__PURE__ */ jsx20(
2847
2011
  OtpCodeForm,
2848
2012
  {
2849
2013
  email,
@@ -2863,7 +2027,7 @@ function PasswordlessSignUp({ onAuthenticated }) {
2863
2027
  }
2864
2028
  ) });
2865
2029
  }
2866
- return /* @__PURE__ */ jsxs15(
2030
+ return /* @__PURE__ */ jsxs16(
2867
2031
  "form",
2868
2032
  {
2869
2033
  method: "post",
@@ -2877,9 +2041,9 @@ function PasswordlessSignUp({ onAuthenticated }) {
2877
2041
  });
2878
2042
  },
2879
2043
  children: [
2880
- /* @__PURE__ */ jsxs15("label", { className: "ba-label", children: [
2044
+ /* @__PURE__ */ jsxs16("label", { className: "ba-label", children: [
2881
2045
  t("common.emailLabel"),
2882
- /* @__PURE__ */ jsx19(
2046
+ /* @__PURE__ */ jsx20(
2883
2047
  "input",
2884
2048
  {
2885
2049
  className: "ba-input",
@@ -2892,15 +2056,15 @@ function PasswordlessSignUp({ onAuthenticated }) {
2892
2056
  )
2893
2057
  ] }),
2894
2058
  authChallenge.control,
2895
- /* @__PURE__ */ jsx19(FormError, { children: error }),
2896
- /* @__PURE__ */ jsx19(
2059
+ /* @__PURE__ */ jsx20(FormError, { children: error }),
2060
+ /* @__PURE__ */ jsx20(
2897
2061
  "button",
2898
2062
  {
2899
2063
  className: "ba-button ba-button-secondary",
2900
2064
  type: "submit",
2901
2065
  disabled: pending || authChallenge.configPending,
2902
2066
  "aria-busy": pending || void 0,
2903
- children: /* @__PURE__ */ jsx19(Busy, { busy: pending, label: t("common.sending"), children: t("signUp.passwordlessSubmit") })
2067
+ children: /* @__PURE__ */ jsx20(Busy, { busy: pending, label: t("common.sending"), children: t("signUp.passwordlessSubmit") })
2904
2068
  }
2905
2069
  )
2906
2070
  ]
@@ -2909,16 +2073,16 @@ function PasswordlessSignUp({ onAuthenticated }) {
2909
2073
  }
2910
2074
 
2911
2075
  // src/components/PasskeySignUpCompletion.tsx
2912
- import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
2076
+ import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2913
2077
  function PasskeySignUpCompletion({ onComplete }) {
2914
2078
  const t = useT();
2915
2079
  const { addPasskey } = usePasskeys();
2916
2080
  const { pending, error, run } = useSubmitAction();
2917
- return /* @__PURE__ */ jsxs16("div", { className: "ba-fields", "data-testid": "signup-passkey-completion", children: [
2918
- /* @__PURE__ */ jsx20("h3", { className: "ba-title", children: t("signUp.passkeyTitle") }),
2919
- /* @__PURE__ */ jsx20("p", { className: "ba-muted", children: t("signUp.passkeyDescription") }),
2920
- /* @__PURE__ */ jsx20(FormError, { children: error }),
2921
- /* @__PURE__ */ jsx20(
2081
+ return /* @__PURE__ */ jsxs17("div", { className: "ba-fields", "data-testid": "signup-passkey-completion", children: [
2082
+ /* @__PURE__ */ jsx21("h3", { className: "ba-title", children: t("signUp.passkeyTitle") }),
2083
+ /* @__PURE__ */ jsx21("p", { className: "ba-muted", children: t("signUp.passkeyDescription") }),
2084
+ /* @__PURE__ */ jsx21(FormError, { children: error }),
2085
+ /* @__PURE__ */ jsx21(
2922
2086
  "button",
2923
2087
  {
2924
2088
  className: "ba-button",
@@ -2929,34 +2093,36 @@ function PasskeySignUpCompletion({ onComplete }) {
2929
2093
  failure: t("signUp.error.passkeyFailed"),
2930
2094
  onSuccess: onComplete
2931
2095
  }),
2932
- children: /* @__PURE__ */ jsx20(Busy, { busy: pending, label: t("passkey.waiting"), children: t("signUp.passkeySubmit") })
2096
+ children: /* @__PURE__ */ jsx21(Busy, { busy: pending, label: t("passkey.waiting"), children: t("signUp.passkeySubmit") })
2933
2097
  }
2934
2098
  ),
2935
- /* @__PURE__ */ jsx20("button", { className: "ba-link-button", type: "button", disabled: pending, onClick: onComplete, children: t("signUp.passkeySkip") })
2099
+ /* @__PURE__ */ jsx21("button", { className: "ba-link-button", type: "button", disabled: pending, onClick: onComplete, children: t("signUp.passkeySkip") })
2936
2100
  ] });
2937
2101
  }
2938
2102
 
2939
2103
  // src/components/Waitlist.tsx
2940
- import * as React15 from "react";
2941
- import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2942
- function Waitlist({ onJoined, showBadge } = {}) {
2104
+ import * as React16 from "react";
2105
+ import { jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
2106
+ function Waitlist({ onJoined, showBadge, showBranding = true } = {}) {
2943
2107
  const t = useT();
2944
2108
  const { join } = useWaitlist();
2945
2109
  const { pending, error, run } = useSubmitAction();
2946
2110
  const authChallenge = useAuthChallenge();
2947
- const [email, setEmail] = React15.useState("");
2948
- const [joined, setJoined] = React15.useState(false);
2111
+ const [email, setEmail] = React16.useState("");
2112
+ const [joined, setJoined] = React16.useState(false);
2949
2113
  if (joined) {
2950
- return /* @__PURE__ */ jsxs17("div", { className: "ba-form", "data-testid": "waitlist-accepted", children: [
2951
- /* @__PURE__ */ jsx21("h2", { className: "ba-title", children: t("waitlist.acceptedTitle") }),
2952
- /* @__PURE__ */ jsx21("p", { className: "ba-muted", children: t("waitlist.acceptedDescription") }),
2953
- /* @__PURE__ */ jsx21(AuthOwlBadge, { force: showBadge })
2114
+ return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "waitlist-accepted", children: [
2115
+ showBranding ? /* @__PURE__ */ jsx22(AuthOwlBranding, {}) : null,
2116
+ /* @__PURE__ */ jsx22("h2", { className: "ba-title", children: t("waitlist.acceptedTitle") }),
2117
+ /* @__PURE__ */ jsx22("p", { className: "ba-muted", children: t("waitlist.acceptedDescription") }),
2118
+ /* @__PURE__ */ jsx22(AuthOwlBadge, { force: showBadge })
2954
2119
  ] });
2955
2120
  }
2956
- return /* @__PURE__ */ jsxs17("div", { className: "ba-form", "data-testid": "waitlist-form", children: [
2957
- /* @__PURE__ */ jsx21("h2", { className: "ba-title", children: t("waitlist.title") }),
2958
- /* @__PURE__ */ jsx21("p", { className: "ba-muted", children: t("waitlist.description") }),
2959
- /* @__PURE__ */ jsxs17(
2121
+ return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "waitlist-form", children: [
2122
+ showBranding ? /* @__PURE__ */ jsx22(AuthOwlBranding, {}) : null,
2123
+ /* @__PURE__ */ jsx22("h2", { className: "ba-title", children: t("waitlist.title") }),
2124
+ /* @__PURE__ */ jsx22("p", { className: "ba-muted", children: t("waitlist.description") }),
2125
+ /* @__PURE__ */ jsxs18(
2960
2126
  "form",
2961
2127
  {
2962
2128
  method: "post",
@@ -2978,9 +2144,9 @@ function Waitlist({ onJoined, showBadge } = {}) {
2978
2144
  );
2979
2145
  },
2980
2146
  children: [
2981
- /* @__PURE__ */ jsxs17("label", { className: "ba-label", children: [
2147
+ /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2982
2148
  t("common.emailLabel"),
2983
- /* @__PURE__ */ jsx21(
2149
+ /* @__PURE__ */ jsx22(
2984
2150
  "input",
2985
2151
  {
2986
2152
  className: "ba-input",
@@ -2994,47 +2160,48 @@ function Waitlist({ onJoined, showBadge } = {}) {
2994
2160
  )
2995
2161
  ] }),
2996
2162
  authChallenge.control,
2997
- /* @__PURE__ */ jsx21(FormError, { children: error }),
2998
- /* @__PURE__ */ jsx21(
2163
+ /* @__PURE__ */ jsx22(FormError, { children: error }),
2164
+ /* @__PURE__ */ jsx22(
2999
2165
  "button",
3000
2166
  {
3001
2167
  className: "ba-button",
3002
2168
  type: "submit",
3003
2169
  disabled: pending || authChallenge.configPending,
3004
2170
  "aria-busy": pending || void 0,
3005
- children: /* @__PURE__ */ jsx21(Busy, { busy: pending, label: t("waitlist.submitPending"), children: t("waitlist.submit") })
2171
+ children: /* @__PURE__ */ jsx22(Busy, { busy: pending, label: t("waitlist.submitPending"), children: t("waitlist.submit") })
3006
2172
  }
3007
2173
  )
3008
2174
  ]
3009
2175
  }
3010
2176
  ),
3011
- /* @__PURE__ */ jsx21(AuthOwlBadge, { force: showBadge })
2177
+ /* @__PURE__ */ jsx22(AuthOwlBadge, { force: showBadge })
3012
2178
  ] });
3013
2179
  }
3014
2180
 
3015
2181
  // src/components/SignUp.tsx
3016
- import { Fragment as Fragment6, jsx as jsx22, jsxs as jsxs18 } from "react/jsx-runtime";
2182
+ import { Fragment as Fragment6, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
3017
2183
  function SignUp({
3018
2184
  redirectTo,
3019
2185
  onSignedUp,
3020
2186
  verifyEmailUrl,
3021
2187
  showBadge,
3022
- onWaitlisted
2188
+ onWaitlisted,
2189
+ showBranding = true
3023
2190
  } = {}) {
3024
2191
  const t = useT();
3025
2192
  const toServerError = useServerError();
3026
2193
  const { signUp } = useSignUp();
3027
2194
  const { config, isLoading } = usePublicConfig();
3028
2195
  const authChallenge = useAuthChallenge();
3029
- const [email, setEmail] = React16.useState("");
3030
- const [password, setPassword] = React16.useState("");
3031
- const [name, setName] = React16.useState("");
3032
- const [firstName, setFirstName] = React16.useState("");
3033
- const [lastName, setLastName] = React16.useState("");
3034
- const [username, setUsername] = React16.useState("");
3035
- const [error, setError] = React16.useState(null);
3036
- const [submitting, setSubmitting] = React16.useState(false);
3037
- const [accepted, setAccepted] = React16.useState(false);
2196
+ const [email, setEmail] = React17.useState("");
2197
+ const [password, setPassword] = React17.useState("");
2198
+ const [name, setName] = React17.useState("");
2199
+ const [firstName, setFirstName] = React17.useState("");
2200
+ const [lastName, setLastName] = React17.useState("");
2201
+ const [username, setUsername] = React17.useState("");
2202
+ const [error, setError] = React17.useState(null);
2203
+ const [submitting, setSubmitting] = React17.useState(false);
2204
+ const [accepted, setAccepted] = React17.useState(false);
3038
2205
  const legal = config?.legal;
3039
2206
  const consentRequired = Boolean(legal?.required);
3040
2207
  const consentBlocked = consentRequired && !accepted;
@@ -3042,8 +2209,8 @@ function SignUp({
3042
2209
  const passwordMinLength = capabilities.passwordMinLength;
3043
2210
  const passwordMaxLength = capabilities.passwordMaxLength;
3044
2211
  const passkeysEnabled = capabilities.passkeyAdd;
3045
- const [pendingEmail, setPendingEmail] = React16.useState(null);
3046
- const [completeWithPasskey, setCompleteWithPasskey] = React16.useState(false);
2212
+ const [pendingEmail, setPendingEmail] = React17.useState(null);
2213
+ const [completeWithPasskey, setCompleteWithPasskey] = React17.useState(false);
3047
2214
  function finishSignUp() {
3048
2215
  onSignedUp?.();
3049
2216
  if (redirectTo) window.location.assign(redirectTo);
@@ -3096,17 +2263,18 @@ function SignUp({
3096
2263
  }
3097
2264
  }
3098
2265
  if (isLoading) {
3099
- return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "signup-loading", "aria-busy": "true", children: [
3100
- /* @__PURE__ */ jsx22("div", { className: "ba-skeleton" }),
3101
- /* @__PURE__ */ jsx22("div", { className: "ba-skeleton" })
2266
+ return /* @__PURE__ */ jsxs19("div", { className: "ba-form", "data-testid": "signup-loading", "aria-busy": "true", children: [
2267
+ /* @__PURE__ */ jsx23("div", { className: "ba-skeleton" }),
2268
+ /* @__PURE__ */ jsx23("div", { className: "ba-skeleton" })
3102
2269
  ] });
3103
2270
  }
3104
2271
  if (config?.signUp?.mode === "waitlist") {
3105
- return /* @__PURE__ */ jsx22(Waitlist, { onJoined: onWaitlisted, showBadge });
2272
+ return /* @__PURE__ */ jsx23(Waitlist, { onJoined: onWaitlisted, showBadge, showBranding });
3106
2273
  }
3107
2274
  if (pendingEmail) {
3108
- return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "signup-verify-pending", children: [
3109
- /* @__PURE__ */ jsx22(
2275
+ return /* @__PURE__ */ jsxs19("div", { className: "ba-form", "data-testid": "signup-verify-pending", children: [
2276
+ showBranding ? /* @__PURE__ */ jsx23(AuthOwlBranding, {}) : null,
2277
+ /* @__PURE__ */ jsx23(
3110
2278
  VerificationPending,
3111
2279
  {
3112
2280
  email: pendingEmail,
@@ -3114,7 +2282,7 @@ function SignUp({
3114
2282
  method: capabilities.emailVerificationMethod
3115
2283
  }
3116
2284
  ),
3117
- /* @__PURE__ */ jsx22(AuthOwlBadge, { force: showBadge })
2285
+ /* @__PURE__ */ jsx23(AuthOwlBadge, { force: showBadge })
3118
2286
  ] });
3119
2287
  }
3120
2288
  const methods = config?.enabledMethods ?? ["password"];
@@ -3124,28 +2292,21 @@ function SignUp({
3124
2292
  const showPasswordless = publicSignupAllowed && capabilities.emailOtpSignIn && capabilities.emailSignUp && !consentRequired && !capabilities.mfaRequired;
3125
2293
  const renderable = showPassword || showPasswordless || social.length > 0;
3126
2294
  if (completeWithPasskey) {
3127
- return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "signup-passkey-step", children: [
3128
- /* @__PURE__ */ jsx22(PasskeySignUpCompletion, { onComplete: finishSignUp }),
3129
- /* @__PURE__ */ jsx22(AuthOwlBadge, { force: showBadge })
2295
+ return /* @__PURE__ */ jsxs19("div", { className: "ba-form", "data-testid": "signup-passkey-step", children: [
2296
+ showBranding ? /* @__PURE__ */ jsx23(AuthOwlBranding, {}) : null,
2297
+ /* @__PURE__ */ jsx23(PasskeySignUpCompletion, { onComplete: finishSignUp }),
2298
+ /* @__PURE__ */ jsx23(AuthOwlBadge, { force: showBadge })
3130
2299
  ] });
3131
2300
  }
3132
- return /* @__PURE__ */ jsxs18("div", { className: "ba-form", "data-testid": "signup-form", children: [
3133
- /* @__PURE__ */ jsx22("h2", { className: "ba-title", children: t("signUp.title") }),
3134
- legal && /* @__PURE__ */ jsx22(
3135
- LegalConsentCheckbox,
3136
- {
3137
- legal,
3138
- accepted,
3139
- onAcceptedChange: setAccepted,
3140
- testId: "signup-consent"
3141
- }
3142
- ),
3143
- /* @__PURE__ */ jsx22(SocialButtons, { providers: social, callbackURL: redirectTo }),
3144
- showPassword && social.length > 0 && /* @__PURE__ */ jsx22("div", { className: "ba-divider", children: t("common.orDivider") }),
3145
- showPassword && /* @__PURE__ */ jsxs18("form", { method: "post", onSubmit, className: "ba-fields", children: [
3146
- capabilities.legacyNameField && /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2301
+ return /* @__PURE__ */ jsxs19("div", { className: "ba-form", "data-testid": "signup-form", children: [
2302
+ showBranding ? /* @__PURE__ */ jsx23(AuthOwlBranding, {}) : null,
2303
+ /* @__PURE__ */ jsx23("h2", { className: "ba-title", children: t("signUp.title") }),
2304
+ /* @__PURE__ */ jsx23(SocialButtons, { providers: social, callbackURL: redirectTo }),
2305
+ showPassword && social.length > 0 && /* @__PURE__ */ jsx23("div", { className: "ba-divider", children: t("common.orDivider") }),
2306
+ showPassword && /* @__PURE__ */ jsxs19("form", { method: "post", onSubmit, className: "ba-fields", children: [
2307
+ capabilities.legacyNameField && /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3147
2308
  t("signUp.nameLabel"),
3148
- /* @__PURE__ */ jsx22(
2309
+ /* @__PURE__ */ jsx23(
3149
2310
  "input",
3150
2311
  {
3151
2312
  className: "ba-input",
@@ -3159,10 +2320,10 @@ function SignUp({
3159
2320
  }
3160
2321
  )
3161
2322
  ] }),
3162
- capabilities.firstLastName && /* @__PURE__ */ jsxs18(Fragment6, { children: [
3163
- /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2323
+ capabilities.firstLastName && /* @__PURE__ */ jsxs19(Fragment6, { children: [
2324
+ /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3164
2325
  t("signUp.firstNameLabel"),
3165
- /* @__PURE__ */ jsx22(
2326
+ /* @__PURE__ */ jsx23(
3166
2327
  "input",
3167
2328
  {
3168
2329
  className: "ba-input",
@@ -3175,9 +2336,9 @@ function SignUp({
3175
2336
  }
3176
2337
  )
3177
2338
  ] }),
3178
- /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2339
+ /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3179
2340
  t("signUp.lastNameLabel"),
3180
- /* @__PURE__ */ jsx22(
2341
+ /* @__PURE__ */ jsx23(
3181
2342
  "input",
3182
2343
  {
3183
2344
  className: "ba-input",
@@ -3191,9 +2352,9 @@ function SignUp({
3191
2352
  )
3192
2353
  ] })
3193
2354
  ] }),
3194
- capabilities.collectUsername && /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2355
+ capabilities.collectUsername && /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3195
2356
  t("common.usernameLabel"),
3196
- /* @__PURE__ */ jsx22(
2357
+ /* @__PURE__ */ jsx23(
3197
2358
  "input",
3198
2359
  {
3199
2360
  className: "ba-input",
@@ -3207,9 +2368,9 @@ function SignUp({
3207
2368
  }
3208
2369
  )
3209
2370
  ] }),
3210
- /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2371
+ /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3211
2372
  t("common.emailLabel"),
3212
- /* @__PURE__ */ jsx22(
2373
+ /* @__PURE__ */ jsx23(
3213
2374
  "input",
3214
2375
  {
3215
2376
  className: "ba-input",
@@ -3224,9 +2385,9 @@ function SignUp({
3224
2385
  }
3225
2386
  )
3226
2387
  ] }),
3227
- /* @__PURE__ */ jsxs18("label", { className: "ba-label", children: [
2388
+ /* @__PURE__ */ jsxs19("label", { className: "ba-label", children: [
3228
2389
  t("common.passwordLabel"),
3229
- /* @__PURE__ */ jsx22(
2390
+ /* @__PURE__ */ jsx23(
3230
2391
  "input",
3231
2392
  {
3232
2393
  className: "ba-input",
@@ -3244,20 +2405,29 @@ function SignUp({
3244
2405
  )
3245
2406
  ] }),
3246
2407
  authChallenge.control,
3247
- /* @__PURE__ */ jsx22(FormError, { children: error }),
3248
- /* @__PURE__ */ jsx22(
2408
+ legal && /* @__PURE__ */ jsx23(
2409
+ LegalConsentCheckbox,
2410
+ {
2411
+ legal,
2412
+ accepted,
2413
+ onAcceptedChange: setAccepted,
2414
+ testId: "signup-consent"
2415
+ }
2416
+ ),
2417
+ /* @__PURE__ */ jsx23(FormError, { children: error }),
2418
+ /* @__PURE__ */ jsx23(
3249
2419
  "button",
3250
2420
  {
3251
2421
  className: "ba-button",
3252
2422
  type: "submit",
3253
2423
  disabled: submitting || consentBlocked || authChallenge.configPending,
3254
2424
  "aria-busy": submitting || void 0,
3255
- children: /* @__PURE__ */ jsx22(Busy, { busy: submitting, label: t("signUp.submitPending"), children: t("signUp.submit") })
2425
+ children: /* @__PURE__ */ jsx23(Busy, { busy: submitting, label: t("signUp.submitPending"), children: t("signUp.submit") })
3256
2426
  }
3257
2427
  )
3258
2428
  ] }),
3259
- showPasswordless && (showPassword || social.length > 0) && /* @__PURE__ */ jsx22("div", { className: "ba-divider", children: t("common.orDivider") }),
3260
- showPasswordless && /* @__PURE__ */ jsx22(
2429
+ showPasswordless && (showPassword || social.length > 0) && /* @__PURE__ */ jsx23("div", { className: "ba-divider", children: t("common.orDivider") }),
2430
+ showPasswordless && /* @__PURE__ */ jsx23(
3261
2431
  PasswordlessSignUp,
3262
2432
  {
3263
2433
  onAuthenticated: () => {
@@ -3266,25 +2436,25 @@ function SignUp({
3266
2436
  }
3267
2437
  }
3268
2438
  ),
3269
- !renderable && /* @__PURE__ */ jsx22("p", { className: "ba-muted", children: publicSignupAllowed && methods.length > 0 ? t("signUp.empty.unsupported") : t("signUp.empty.none") }),
3270
- /* @__PURE__ */ jsx22(AuthOwlBadge, { force: showBadge })
2439
+ !renderable && /* @__PURE__ */ jsx23("p", { className: "ba-muted", children: publicSignupAllowed && methods.length > 0 ? t("signUp.empty.unsupported") : t("signUp.empty.none") }),
2440
+ /* @__PURE__ */ jsx23(AuthOwlBadge, { force: showBadge })
3271
2441
  ] });
3272
2442
  }
3273
2443
 
3274
2444
  // src/components/ConsentGate.tsx
3275
- import { Fragment as Fragment7, jsx as jsx23, jsxs as jsxs19 } from "react/jsx-runtime";
2445
+ import { Fragment as Fragment7, jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
3276
2446
  function ConsentGate({ children, title }) {
3277
2447
  const t = useT();
3278
2448
  const { needsConsent, status, accept } = useConsent();
3279
2449
  const { pending, error, run } = useSubmitAction();
3280
- if (!needsConsent) return /* @__PURE__ */ jsx23(Fragment7, { children });
3281
- return /* @__PURE__ */ jsxs19("div", { className: "ba-form", "data-testid": "consent-gate", children: [
3282
- /* @__PURE__ */ jsx23("h2", { className: "ba-title", children: title ?? t("consent.gateTitle") }),
3283
- /* @__PURE__ */ jsx23("p", { className: "ba-muted", children: richMessage(t("consent.gateBody"), {
3284
- links: /* @__PURE__ */ jsx23(ConsentDocLinks, { termsUrl: status?.termsUrl, privacyUrl: status?.privacyUrl })
2450
+ if (!needsConsent) return /* @__PURE__ */ jsx24(Fragment7, { children });
2451
+ return /* @__PURE__ */ jsxs20("div", { className: "ba-form", "data-testid": "consent-gate", children: [
2452
+ /* @__PURE__ */ jsx24("h2", { className: "ba-title", children: title ?? t("consent.gateTitle") }),
2453
+ /* @__PURE__ */ jsx24("p", { className: "ba-muted", children: richMessage(t("consent.gateBody"), {
2454
+ links: /* @__PURE__ */ jsx24(ConsentDocLinks, { termsUrl: status?.termsUrl, privacyUrl: status?.privacyUrl })
3285
2455
  }) }),
3286
- /* @__PURE__ */ jsx23(FormError, { children: error }),
3287
- /* @__PURE__ */ jsx23(
2456
+ /* @__PURE__ */ jsx24(FormError, { children: error }),
2457
+ /* @__PURE__ */ jsx24(
3288
2458
  "button",
3289
2459
  {
3290
2460
  className: "ba-button",
@@ -3298,18 +2468,18 @@ function ConsentGate({ children, title }) {
3298
2468
  },
3299
2469
  { failure: t("consent.error.acceptFailed") }
3300
2470
  ),
3301
- children: /* @__PURE__ */ jsx23(Busy, { busy: pending, label: t("consent.acceptPending"), children: t("consent.acceptSubmit") })
2471
+ children: /* @__PURE__ */ jsx24(Busy, { busy: pending, label: t("consent.acceptPending"), children: t("consent.acceptSubmit") })
3302
2472
  }
3303
2473
  ),
3304
- /* @__PURE__ */ jsx23(AuthOwlBadge, {})
2474
+ /* @__PURE__ */ jsx24(AuthOwlBadge, {})
3305
2475
  ] });
3306
2476
  }
3307
2477
 
3308
2478
  // src/components/MFARequiredGate.tsx
3309
- import * as React19 from "react";
2479
+ import * as React20 from "react";
3310
2480
 
3311
2481
  // src/components/MFAEnrollment.tsx
3312
- import * as React18 from "react";
2482
+ import * as React19 from "react";
3313
2483
 
3314
2484
  // src/components/mfa-enrollment.ts
3315
2485
  function shouldDiscardSetup(args) {
@@ -3318,7 +2488,7 @@ function shouldDiscardSetup(args) {
3318
2488
  }
3319
2489
 
3320
2490
  // src/components/QrCode.tsx
3321
- import * as React17 from "react";
2491
+ import * as React18 from "react";
3322
2492
 
3323
2493
  // ../../node_modules/.pnpm/qrcode-generator@2.0.4/node_modules/qrcode-generator/dist/qrcode.mjs
3324
2494
  var qrcode = function(typeNumber, errorCorrectionLevel) {
@@ -4975,14 +4145,14 @@ function qrPath(value) {
4975
4145
  }
4976
4146
 
4977
4147
  // src/components/QrCode.tsx
4978
- import { jsx as jsx24, jsxs as jsxs20 } from "react/jsx-runtime";
4148
+ import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
4979
4149
  function QrCode({ value, size = 200 }) {
4980
4150
  const t = useT();
4981
- const path = React17.useMemo(() => qrPath(value), [value]);
4151
+ const path = React18.useMemo(() => qrPath(value), [value]);
4982
4152
  if (!path) return null;
4983
4153
  const margin = 4;
4984
4154
  const dim = path.count + margin * 2;
4985
- return /* @__PURE__ */ jsxs20(
4155
+ return /* @__PURE__ */ jsxs21(
4986
4156
  "svg",
4987
4157
  {
4988
4158
  width: size,
@@ -4993,15 +4163,15 @@ function QrCode({ value, size = 200 }) {
4993
4163
  shapeRendering: "crispEdges",
4994
4164
  className: "ba-qr",
4995
4165
  children: [
4996
- /* @__PURE__ */ jsx24("rect", { width: dim, height: dim, fill: "#ffffff" }),
4997
- /* @__PURE__ */ jsx24("g", { transform: `translate(${margin} ${margin})`, children: /* @__PURE__ */ jsx24("path", { d: path.d, fill: "#000000" }) })
4166
+ /* @__PURE__ */ jsx25("rect", { width: dim, height: dim, fill: "#ffffff" }),
4167
+ /* @__PURE__ */ jsx25("g", { transform: `translate(${margin} ${margin})`, children: /* @__PURE__ */ jsx25("path", { d: path.d, fill: "#000000" }) })
4998
4168
  ]
4999
4169
  }
5000
4170
  );
5001
4171
  }
5002
4172
 
5003
4173
  // src/components/MFAEnrollment.tsx
5004
- import { jsx as jsx25, jsxs as jsxs21 } from "react/jsx-runtime";
4174
+ import { jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
5005
4175
  function secretFromUri(uri) {
5006
4176
  try {
5007
4177
  return new URL(uri).searchParams.get("secret");
@@ -5014,11 +4184,11 @@ function MFAEnrollment({ onEnrolled, title }) {
5014
4184
  const { enable, verifyTotp } = useMFA();
5015
4185
  const { user, isLoaded } = useUser();
5016
4186
  const { pending, error, run } = useSubmitAction();
5017
- const [password, setPassword] = React18.useState("");
5018
- const [setup, setSetup] = React18.useState(null);
5019
- const [code, setCode] = React18.useState("");
5020
- const [done, setDone] = React18.useState(false);
5021
- const setupOwnerId = React18.useRef(null);
4187
+ const [password, setPassword] = React19.useState("");
4188
+ const [setup, setSetup] = React19.useState(null);
4189
+ const [code, setCode] = React19.useState("");
4190
+ const [done, setDone] = React19.useState(false);
4191
+ const setupOwnerId = React19.useRef(null);
5022
4192
  const userId = user?.id ?? null;
5023
4193
  const stale = shouldDiscardSetup({
5024
4194
  isLoaded,
@@ -5027,7 +4197,7 @@ function MFAEnrollment({ onEnrolled, title }) {
5027
4197
  currentUserId: userId
5028
4198
  });
5029
4199
  const activeSetup = stale ? null : setup;
5030
- React18.useEffect(() => {
4200
+ React19.useEffect(() => {
5031
4201
  if (stale) {
5032
4202
  setSetup(null);
5033
4203
  setPassword("");
@@ -5035,22 +4205,22 @@ function MFAEnrollment({ onEnrolled, title }) {
5035
4205
  }
5036
4206
  }, [stale]);
5037
4207
  if (done) {
5038
- return /* @__PURE__ */ jsxs21("div", { className: "ba-fields", "data-testid": "mfa-enroll-done", children: [
5039
- /* @__PURE__ */ jsx25("h2", { className: "ba-title", children: t("mfa.enroll.doneTitle") }),
5040
- /* @__PURE__ */ jsx25("p", { className: "ba-muted", children: t("mfa.enroll.doneBody") })
4208
+ return /* @__PURE__ */ jsxs22("div", { className: "ba-fields", "data-testid": "mfa-enroll-done", children: [
4209
+ /* @__PURE__ */ jsx26("h2", { className: "ba-title", children: t("mfa.enroll.doneTitle") }),
4210
+ /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: t("mfa.enroll.doneBody") })
5041
4211
  ] });
5042
4212
  }
5043
4213
  if (!activeSetup) {
5044
4214
  if (!isLoaded) {
5045
- return /* @__PURE__ */ jsx25("div", { className: "ba-fields", "data-testid": "mfa-enroll-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx25("div", { className: "ba-skeleton" }) });
4215
+ return /* @__PURE__ */ jsx26("div", { className: "ba-fields", "data-testid": "mfa-enroll-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx26("div", { className: "ba-skeleton" }) });
5046
4216
  }
5047
4217
  if (user?.twoFactorEnabled) {
5048
- return /* @__PURE__ */ jsxs21("div", { className: "ba-fields", "data-testid": "mfa-enroll-active", children: [
5049
- /* @__PURE__ */ jsx25("h2", { className: "ba-title", children: t("mfa.enroll.activeTitle") }),
5050
- /* @__PURE__ */ jsx25("p", { className: "ba-muted", children: t("mfa.enroll.activeBody") })
4218
+ return /* @__PURE__ */ jsxs22("div", { className: "ba-fields", "data-testid": "mfa-enroll-active", children: [
4219
+ /* @__PURE__ */ jsx26("h2", { className: "ba-title", children: t("mfa.enroll.activeTitle") }),
4220
+ /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: t("mfa.enroll.activeBody") })
5051
4221
  ] });
5052
4222
  }
5053
- return /* @__PURE__ */ jsxs21(
4223
+ return /* @__PURE__ */ jsxs22(
5054
4224
  "form",
5055
4225
  {
5056
4226
  method: "post",
@@ -5067,11 +4237,11 @@ function MFAEnrollment({ onEnrolled, title }) {
5067
4237
  });
5068
4238
  },
5069
4239
  children: [
5070
- title !== null && /* @__PURE__ */ jsx25("h2", { className: "ba-title", children: title ?? t("mfa.enroll.title") }),
5071
- /* @__PURE__ */ jsx25("p", { className: "ba-muted", children: t("mfa.enroll.passwordHint") }),
5072
- /* @__PURE__ */ jsxs21("label", { className: "ba-label", children: [
4240
+ title !== null && /* @__PURE__ */ jsx26("h2", { className: "ba-title", children: title ?? t("mfa.enroll.title") }),
4241
+ /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: t("mfa.enroll.passwordHint") }),
4242
+ /* @__PURE__ */ jsxs22("label", { className: "ba-label", children: [
5073
4243
  t("common.passwordLabel"),
5074
- /* @__PURE__ */ jsx25(
4244
+ /* @__PURE__ */ jsx26(
5075
4245
  "input",
5076
4246
  {
5077
4247
  className: "ba-input",
@@ -5083,29 +4253,29 @@ function MFAEnrollment({ onEnrolled, title }) {
5083
4253
  }
5084
4254
  )
5085
4255
  ] }),
5086
- /* @__PURE__ */ jsx25(FormError, { children: error }),
5087
- /* @__PURE__ */ jsx25("button", { className: "ba-button", type: "submit", disabled: pending || !password, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx25(Busy, { busy: pending, label: t("mfa.enroll.startPending"), children: t("common.continue") }) })
4256
+ /* @__PURE__ */ jsx26(FormError, { children: error }),
4257
+ /* @__PURE__ */ jsx26("button", { className: "ba-button", type: "submit", disabled: pending || !password, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx26(Busy, { busy: pending, label: t("mfa.enroll.startPending"), children: t("common.continue") }) })
5088
4258
  ]
5089
4259
  }
5090
4260
  );
5091
4261
  }
5092
4262
  const secret = secretFromUri(activeSetup.totpURI);
5093
- return /* @__PURE__ */ jsxs21("div", { className: "ba-fields", "data-testid": "mfa-enroll-verify", children: [
5094
- /* @__PURE__ */ jsx25("h2", { className: "ba-title", children: t("mfa.enroll.scanQrTitle") }),
5095
- /* @__PURE__ */ jsx25("p", { className: "ba-muted", children: t("mfa.enroll.scanQrHint") }),
5096
- /* @__PURE__ */ jsx25(QrCode, { value: activeSetup.totpURI }),
5097
- secret && /* @__PURE__ */ jsx25("p", { className: "ba-muted", children: richMessage(t("mfa.enroll.manualKey"), {
5098
- secret: /* @__PURE__ */ jsx25("code", { className: "ba-code", children: /* @__PURE__ */ jsx25(Bidi, { children: secret }) })
4263
+ return /* @__PURE__ */ jsxs22("div", { className: "ba-fields", "data-testid": "mfa-enroll-verify", children: [
4264
+ /* @__PURE__ */ jsx26("h2", { className: "ba-title", children: t("mfa.enroll.scanQrTitle") }),
4265
+ /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: t("mfa.enroll.scanQrHint") }),
4266
+ /* @__PURE__ */ jsx26(QrCode, { value: activeSetup.totpURI }),
4267
+ secret && /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: richMessage(t("mfa.enroll.manualKey"), {
4268
+ secret: /* @__PURE__ */ jsx26("code", { className: "ba-code", children: /* @__PURE__ */ jsx26(Bidi, { children: secret }) })
5099
4269
  }) }),
5100
- /* @__PURE__ */ jsxs21("div", { children: [
5101
- /* @__PURE__ */ jsxs21("p", { className: "ba-muted", children: [
5102
- /* @__PURE__ */ jsx25("strong", { children: t("mfa.enroll.backupCodesWarningStrong") }),
4270
+ /* @__PURE__ */ jsxs22("div", { children: [
4271
+ /* @__PURE__ */ jsxs22("p", { className: "ba-muted", children: [
4272
+ /* @__PURE__ */ jsx26("strong", { children: t("mfa.enroll.backupCodesWarningStrong") }),
5103
4273
  " ",
5104
4274
  t("mfa.enroll.backupCodesWarningRest")
5105
4275
  ] }),
5106
- /* @__PURE__ */ jsx25("ul", { className: "ba-backup-codes", "data-testid": "mfa-backup-codes", children: activeSetup.backupCodes.map((c) => /* @__PURE__ */ jsx25("li", { children: /* @__PURE__ */ jsx25("code", { className: "ba-code", children: c }) }, c)) })
4276
+ /* @__PURE__ */ jsx26("ul", { className: "ba-backup-codes", "data-testid": "mfa-backup-codes", children: activeSetup.backupCodes.map((c) => /* @__PURE__ */ jsx26("li", { children: /* @__PURE__ */ jsx26("code", { className: "ba-code", children: c }) }, c)) })
5107
4277
  ] }),
5108
- /* @__PURE__ */ jsxs21(
4278
+ /* @__PURE__ */ jsxs22(
5109
4279
  "form",
5110
4280
  {
5111
4281
  method: "post",
@@ -5123,9 +4293,9 @@ function MFAEnrollment({ onEnrolled, title }) {
5123
4293
  });
5124
4294
  },
5125
4295
  children: [
5126
- /* @__PURE__ */ jsxs21("label", { className: "ba-label", children: [
4296
+ /* @__PURE__ */ jsxs22("label", { className: "ba-label", children: [
5127
4297
  t("mfa.enroll.codeLabel"),
5128
- /* @__PURE__ */ jsx25(
4298
+ /* @__PURE__ */ jsx26(
5129
4299
  "input",
5130
4300
  {
5131
4301
  className: "ba-input",
@@ -5137,8 +4307,8 @@ function MFAEnrollment({ onEnrolled, title }) {
5137
4307
  }
5138
4308
  )
5139
4309
  ] }),
5140
- /* @__PURE__ */ jsx25(FormError, { children: error }),
5141
- /* @__PURE__ */ jsx25("button", { className: "ba-button", type: "submit", disabled: pending || !code, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx25(Busy, { busy: pending, label: t("common.verifying"), children: t("mfa.enroll.activateSubmit") }) })
4310
+ /* @__PURE__ */ jsx26(FormError, { children: error }),
4311
+ /* @__PURE__ */ jsx26("button", { className: "ba-button", type: "submit", disabled: pending || !code, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx26(Busy, { busy: pending, label: t("common.verifying"), children: t("mfa.enroll.activateSubmit") }) })
5142
4312
  ]
5143
4313
  }
5144
4314
  )
@@ -5146,14 +4316,14 @@ function MFAEnrollment({ onEnrolled, title }) {
5146
4316
  }
5147
4317
 
5148
4318
  // src/components/MFARequiredGate.tsx
5149
- import { Fragment as Fragment8, jsx as jsx26, jsxs as jsxs22 } from "react/jsx-runtime";
4319
+ import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
5150
4320
  function MFARequiredGate({ children, title }) {
5151
4321
  const t = useT();
5152
4322
  const client = useAuthClient();
5153
4323
  const { needsMfaEnrollment } = useUser();
5154
4324
  const { refetch } = useSession();
5155
- const [confirmedPending, setConfirmedPending] = React19.useState(null);
5156
- React19.useEffect(() => {
4325
+ const [confirmedPending, setConfirmedPending] = React20.useState(null);
4326
+ React20.useEffect(() => {
5157
4327
  if (!needsMfaEnrollment) {
5158
4328
  setConfirmedPending(null);
5159
4329
  return;
@@ -5171,26 +4341,26 @@ function MFARequiredGate({ children, title }) {
5171
4341
  active = false;
5172
4342
  };
5173
4343
  }, [client, needsMfaEnrollment, refetch]);
5174
- if (!needsMfaEnrollment) return /* @__PURE__ */ jsx26(Fragment8, { children });
4344
+ if (!needsMfaEnrollment) return /* @__PURE__ */ jsx27(Fragment8, { children });
5175
4345
  if (confirmedPending !== true) return null;
5176
- return /* @__PURE__ */ jsxs22("div", { className: "ba-form", "data-testid": "mfa-required-gate", children: [
5177
- /* @__PURE__ */ jsx26("h2", { className: "ba-title", children: title ?? t("mfaGate.title") }),
5178
- /* @__PURE__ */ jsx26("p", { className: "ba-muted", children: t("mfaGate.body") }),
5179
- /* @__PURE__ */ jsx26(MFAEnrollment, { onEnrolled: () => refetch({ query: { disableCookieCache: true } }) }),
5180
- /* @__PURE__ */ jsx26(AuthOwlBadge, {})
4346
+ return /* @__PURE__ */ jsxs23("div", { className: "ba-form", "data-testid": "mfa-required-gate", children: [
4347
+ /* @__PURE__ */ jsx27("h2", { className: "ba-title", children: title ?? t("mfaGate.title") }),
4348
+ /* @__PURE__ */ jsx27("p", { className: "ba-muted", children: t("mfaGate.body") }),
4349
+ /* @__PURE__ */ jsx27(MFAEnrollment, { onEnrolled: () => refetch({ query: { disableCookieCache: true } }) }),
4350
+ /* @__PURE__ */ jsx27(AuthOwlBadge, {})
5181
4351
  ] });
5182
4352
  }
5183
4353
 
5184
4354
  // src/components/BackupCodesManager.tsx
5185
- import * as React20 from "react";
5186
- import { Fragment as Fragment9, jsx as jsx27, jsxs as jsxs23 } from "react/jsx-runtime";
4355
+ import * as React21 from "react";
4356
+ import { Fragment as Fragment9, jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
5187
4357
  function BackupCodesManager({ title }) {
5188
4358
  const t = useT();
5189
4359
  const { user } = useUser();
5190
4360
  const { regenerateBackupCodes } = useMFA();
5191
4361
  const { pending, error, run } = useSubmitAction();
5192
- const [password, setPassword] = React20.useState("");
5193
- const [codes, setCodes] = React20.useState(null);
4362
+ const [password, setPassword] = React21.useState("");
4363
+ const [codes, setCodes] = React21.useState(null);
5194
4364
  if (!user?.twoFactorEnabled) return null;
5195
4365
  const submit = (e) => {
5196
4366
  e.preventDefault();
@@ -5202,20 +4372,20 @@ function BackupCodesManager({ title }) {
5202
4372
  }
5203
4373
  });
5204
4374
  };
5205
- return /* @__PURE__ */ jsxs23("div", { className: "ba-form", "data-testid": "backup-codes-manager", children: [
5206
- title !== null && /* @__PURE__ */ jsx27("h2", { className: "ba-title", children: title ?? t("backupCodes.title") }),
5207
- /* @__PURE__ */ jsx27("p", { className: "ba-muted", children: t("backupCodes.hint") }),
5208
- codes ? /* @__PURE__ */ jsxs23(Fragment9, { children: [
5209
- /* @__PURE__ */ jsxs23("p", { className: "ba-muted", children: [
5210
- /* @__PURE__ */ jsx27("strong", { children: t("mfa.enroll.backupCodesWarningStrong") }),
4375
+ return /* @__PURE__ */ jsxs24("div", { className: "ba-form", "data-testid": "backup-codes-manager", children: [
4376
+ title !== null && /* @__PURE__ */ jsx28("h2", { className: "ba-title", children: title ?? t("backupCodes.title") }),
4377
+ /* @__PURE__ */ jsx28("p", { className: "ba-muted", children: t("backupCodes.hint") }),
4378
+ codes ? /* @__PURE__ */ jsxs24(Fragment9, { children: [
4379
+ /* @__PURE__ */ jsxs24("p", { className: "ba-muted", children: [
4380
+ /* @__PURE__ */ jsx28("strong", { children: t("mfa.enroll.backupCodesWarningStrong") }),
5211
4381
  " ",
5212
4382
  t("mfa.enroll.backupCodesWarningRest")
5213
4383
  ] }),
5214
- /* @__PURE__ */ jsx27("ul", { className: "ba-passkey-list", "data-testid": "backup-codes-list", children: codes.map((c) => /* @__PURE__ */ jsx27("li", { className: "ba-passkey-item", children: /* @__PURE__ */ jsx27("code", { children: /* @__PURE__ */ jsx27("bdi", { children: c }) }) }, c)) })
5215
- ] }) : /* @__PURE__ */ jsxs23("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5216
- /* @__PURE__ */ jsxs23("label", { className: "ba-label", children: [
4384
+ /* @__PURE__ */ jsx28("ul", { className: "ba-passkey-list", "data-testid": "backup-codes-list", children: codes.map((c) => /* @__PURE__ */ jsx28("li", { className: "ba-passkey-item", children: /* @__PURE__ */ jsx28("code", { children: /* @__PURE__ */ jsx28("bdi", { children: c }) }) }, c)) })
4385
+ ] }) : /* @__PURE__ */ jsxs24("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
4386
+ /* @__PURE__ */ jsxs24("label", { className: "ba-label", children: [
5217
4387
  t("common.passwordLabel"),
5218
- /* @__PURE__ */ jsx27(
4388
+ /* @__PURE__ */ jsx28(
5219
4389
  "input",
5220
4390
  {
5221
4391
  className: "ba-input",
@@ -5227,26 +4397,26 @@ function BackupCodesManager({ title }) {
5227
4397
  }
5228
4398
  )
5229
4399
  ] }),
5230
- /* @__PURE__ */ jsx27(FormError, { children: error }),
5231
- /* @__PURE__ */ jsx27("button", { className: "ba-button", type: "submit", disabled: pending || !password, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx27(Busy, { busy: pending, label: t("backupCodes.pending"), children: t("backupCodes.submit") }) })
4400
+ /* @__PURE__ */ jsx28(FormError, { children: error }),
4401
+ /* @__PURE__ */ jsx28("button", { className: "ba-button", type: "submit", disabled: pending || !password, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx28(Busy, { busy: pending, label: t("backupCodes.pending"), children: t("backupCodes.submit") }) })
5232
4402
  ] })
5233
4403
  ] });
5234
4404
  }
5235
4405
 
5236
4406
  // src/components/MagicLinkForm.tsx
5237
- import * as React21 from "react";
5238
- import { jsx as jsx28, jsxs as jsxs24 } from "react/jsx-runtime";
4407
+ import * as React22 from "react";
4408
+ import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
5239
4409
  function MagicLinkForm({ callbackURL, webauthnAutofill }) {
5240
4410
  const t = useT();
5241
4411
  const { signInMagicLink } = useSignIn();
5242
4412
  const { pending, error, run } = useSubmitAction();
5243
4413
  const authChallenge = useAuthChallenge();
5244
- const [email, setEmail] = React21.useState("");
5245
- const [sent, setSent] = React21.useState(false);
4414
+ const [email, setEmail] = React22.useState("");
4415
+ const [sent, setSent] = React22.useState(false);
5246
4416
  if (sent) {
5247
- return /* @__PURE__ */ jsx28("p", { className: "ba-muted", "data-testid": "magiclink-sent", children: t("magicLink.sent") });
4417
+ return /* @__PURE__ */ jsx29("p", { className: "ba-muted", "data-testid": "magiclink-sent", children: t("magicLink.sent") });
5248
4418
  }
5249
- return /* @__PURE__ */ jsxs24(
4419
+ return /* @__PURE__ */ jsxs25(
5250
4420
  "form",
5251
4421
  {
5252
4422
  method: "post",
@@ -5260,9 +4430,9 @@ function MagicLinkForm({ callbackURL, webauthnAutofill }) {
5260
4430
  className: "ba-fields",
5261
4431
  "data-testid": "magiclink-form",
5262
4432
  children: [
5263
- /* @__PURE__ */ jsxs24("label", { className: "ba-label", children: [
4433
+ /* @__PURE__ */ jsxs25("label", { className: "ba-label", children: [
5264
4434
  t("common.emailLabel"),
5265
- /* @__PURE__ */ jsx28(
4435
+ /* @__PURE__ */ jsx29(
5266
4436
  "input",
5267
4437
  {
5268
4438
  className: "ba-input",
@@ -5275,15 +4445,15 @@ function MagicLinkForm({ callbackURL, webauthnAutofill }) {
5275
4445
  )
5276
4446
  ] }),
5277
4447
  authChallenge.control,
5278
- /* @__PURE__ */ jsx28(FormError, { children: error }),
5279
- /* @__PURE__ */ jsx28(
4448
+ /* @__PURE__ */ jsx29(FormError, { children: error }),
4449
+ /* @__PURE__ */ jsx29(
5280
4450
  "button",
5281
4451
  {
5282
4452
  className: "ba-button",
5283
4453
  type: "submit",
5284
4454
  disabled: pending || authChallenge.configPending,
5285
4455
  "aria-busy": pending || void 0,
5286
- children: /* @__PURE__ */ jsx28(Busy, { busy: pending, label: t("common.sending"), children: t("magicLink.submit") })
4456
+ children: /* @__PURE__ */ jsx29(Busy, { busy: pending, label: t("common.sending"), children: t("magicLink.submit") })
5287
4457
  }
5288
4458
  )
5289
4459
  ]
@@ -5292,19 +4462,19 @@ function MagicLinkForm({ callbackURL, webauthnAutofill }) {
5292
4462
  }
5293
4463
 
5294
4464
  // src/components/EmailOtpForm.tsx
5295
- import * as React22 from "react";
5296
- import { jsx as jsx29, jsxs as jsxs25 } from "react/jsx-runtime";
4465
+ import * as React23 from "react";
4466
+ import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
5297
4467
  function EmailOtpForm({ redirectTo, onSignedIn, webauthnAutofill }) {
5298
4468
  const t = useT();
5299
4469
  const { sessionStore } = useAuthClient();
5300
4470
  const { sendEmailOtp, signInEmailOtp } = useSignIn();
5301
4471
  const { pending, error, setError, run } = useSubmitAction();
5302
4472
  const authChallenge = useAuthChallenge();
5303
- const [email, setEmail] = React22.useState("");
5304
- const [otp, setOtp] = React22.useState("");
5305
- const [stage, setStage] = React22.useState("email");
4473
+ const [email, setEmail] = React23.useState("");
4474
+ const [otp, setOtp] = React23.useState("");
4475
+ const [stage, setStage] = React23.useState("email");
5306
4476
  if (stage === "code") {
5307
- return /* @__PURE__ */ jsx29(
4477
+ return /* @__PURE__ */ jsx30(
5308
4478
  OtpCodeForm,
5309
4479
  {
5310
4480
  email,
@@ -5327,7 +4497,7 @@ function EmailOtpForm({ redirectTo, onSignedIn, webauthnAutofill }) {
5327
4497
  }
5328
4498
  );
5329
4499
  }
5330
- return /* @__PURE__ */ jsxs25(
4500
+ return /* @__PURE__ */ jsxs26(
5331
4501
  "form",
5332
4502
  {
5333
4503
  method: "post",
@@ -5341,9 +4511,9 @@ function EmailOtpForm({ redirectTo, onSignedIn, webauthnAutofill }) {
5341
4511
  className: "ba-fields",
5342
4512
  "data-testid": "emailotp-email",
5343
4513
  children: [
5344
- /* @__PURE__ */ jsxs25("label", { className: "ba-label", children: [
4514
+ /* @__PURE__ */ jsxs26("label", { className: "ba-label", children: [
5345
4515
  t("common.emailLabel"),
5346
- /* @__PURE__ */ jsx29(
4516
+ /* @__PURE__ */ jsx30(
5347
4517
  "input",
5348
4518
  {
5349
4519
  className: "ba-input",
@@ -5359,15 +4529,15 @@ function EmailOtpForm({ redirectTo, onSignedIn, webauthnAutofill }) {
5359
4529
  )
5360
4530
  ] }),
5361
4531
  authChallenge.control,
5362
- /* @__PURE__ */ jsx29(FormError, { children: error }),
5363
- /* @__PURE__ */ jsx29(
4532
+ /* @__PURE__ */ jsx30(FormError, { children: error }),
4533
+ /* @__PURE__ */ jsx30(
5364
4534
  "button",
5365
4535
  {
5366
4536
  className: "ba-button",
5367
4537
  type: "submit",
5368
4538
  disabled: pending || authChallenge.configPending,
5369
4539
  "aria-busy": pending || void 0,
5370
- children: /* @__PURE__ */ jsx29(Busy, { busy: pending, label: t("common.sending"), children: t("emailOtp.requestSubmit") })
4540
+ children: /* @__PURE__ */ jsx30(Busy, { busy: pending, label: t("common.sending"), children: t("emailOtp.requestSubmit") })
5371
4541
  }
5372
4542
  )
5373
4543
  ]
@@ -5376,8 +4546,8 @@ function EmailOtpForm({ redirectTo, onSignedIn, webauthnAutofill }) {
5376
4546
  }
5377
4547
 
5378
4548
  // src/components/ResetPassword.tsx
5379
- import * as React23 from "react";
5380
- import { jsx as jsx30, jsxs as jsxs26 } from "react/jsx-runtime";
4549
+ import * as React24 from "react";
4550
+ import { jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
5381
4551
  function ResetPassword({ token: tokenProp, redirectTo, onReset }) {
5382
4552
  const t = useT();
5383
4553
  const { resetPassword } = usePasswordReset();
@@ -5385,27 +4555,27 @@ function ResetPassword({ token: tokenProp, redirectTo, onReset }) {
5385
4555
  const capabilities = resolveProjectCapabilities(config);
5386
4556
  const { passwordMinLength, passwordMaxLength } = capabilities;
5387
4557
  const { pending, error, setError, run } = useSubmitAction();
5388
- const [token, setToken] = React23.useState(tokenProp ?? null);
5389
- const [ready, setReady] = React23.useState(tokenProp != null);
5390
- const [password, setPassword] = React23.useState("");
5391
- const [confirm, setConfirm] = React23.useState("");
5392
- const [done, setDone] = React23.useState(false);
5393
- React23.useEffect(() => {
4558
+ const [token, setToken] = React24.useState(tokenProp ?? null);
4559
+ const [ready, setReady] = React24.useState(tokenProp != null);
4560
+ const [password, setPassword] = React24.useState("");
4561
+ const [confirm, setConfirm] = React24.useState("");
4562
+ const [done, setDone] = React24.useState(false);
4563
+ React24.useEffect(() => {
5394
4564
  if (tokenProp != null) return;
5395
4565
  const params = new URLSearchParams(window.location.search);
5396
4566
  setToken(params.get("token"));
5397
4567
  setReady(true);
5398
4568
  }, [tokenProp]);
5399
4569
  if (!ready) {
5400
- return /* @__PURE__ */ jsx30("div", { className: "ba-form", "aria-busy": "true", children: /* @__PURE__ */ jsx30("div", { className: "ba-skeleton" }) });
4570
+ return /* @__PURE__ */ jsx31("div", { className: "ba-form", "aria-busy": "true", children: /* @__PURE__ */ jsx31("div", { className: "ba-skeleton" }) });
5401
4571
  }
5402
4572
  if (!token) {
5403
- return /* @__PURE__ */ jsx30(FormError, { "data-testid": "reset-invalid", children: t("resetPassword.invalidLink") });
4573
+ return /* @__PURE__ */ jsx31(FormError, { "data-testid": "reset-invalid", children: t("resetPassword.invalidLink") });
5404
4574
  }
5405
4575
  if (done) {
5406
- return /* @__PURE__ */ jsx30("p", { className: "ba-muted", "data-testid": "reset-done", children: t("resetPassword.done") });
4576
+ return /* @__PURE__ */ jsx31("p", { className: "ba-muted", "data-testid": "reset-done", children: t("resetPassword.done") });
5407
4577
  }
5408
- return /* @__PURE__ */ jsxs26(
4578
+ return /* @__PURE__ */ jsxs27(
5409
4579
  "form",
5410
4580
  {
5411
4581
  method: "post",
@@ -5431,9 +4601,9 @@ function ResetPassword({ token: tokenProp, redirectTo, onReset }) {
5431
4601
  });
5432
4602
  },
5433
4603
  children: [
5434
- /* @__PURE__ */ jsxs26("label", { className: "ba-label", children: [
4604
+ /* @__PURE__ */ jsxs27("label", { className: "ba-label", children: [
5435
4605
  t("resetPassword.newPasswordLabel"),
5436
- /* @__PURE__ */ jsx30(
4606
+ /* @__PURE__ */ jsx31(
5437
4607
  "input",
5438
4608
  {
5439
4609
  className: "ba-input",
@@ -5450,9 +4620,9 @@ function ResetPassword({ token: tokenProp, redirectTo, onReset }) {
5450
4620
  }
5451
4621
  )
5452
4622
  ] }),
5453
- /* @__PURE__ */ jsxs26("label", { className: "ba-label", children: [
4623
+ /* @__PURE__ */ jsxs27("label", { className: "ba-label", children: [
5454
4624
  t("resetPassword.confirmPasswordLabel"),
5455
- /* @__PURE__ */ jsx30(
4625
+ /* @__PURE__ */ jsx31(
5456
4626
  "input",
5457
4627
  {
5458
4628
  className: "ba-input",
@@ -5469,26 +4639,26 @@ function ResetPassword({ token: tokenProp, redirectTo, onReset }) {
5469
4639
  }
5470
4640
  )
5471
4641
  ] }),
5472
- /* @__PURE__ */ jsx30(FormError, { children: error }),
5473
- /* @__PURE__ */ jsx30("button", { className: "ba-button", type: "submit", disabled: pending, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx30(Busy, { busy: pending, label: t("resetPassword.submitPending"), children: t("resetPassword.submit") }) })
4642
+ /* @__PURE__ */ jsx31(FormError, { children: error }),
4643
+ /* @__PURE__ */ jsx31("button", { className: "ba-button", type: "submit", disabled: pending, "aria-busy": pending || void 0, children: /* @__PURE__ */ jsx31(Busy, { busy: pending, label: t("resetPassword.submitPending"), children: t("resetPassword.submit") }) })
5474
4644
  ]
5475
4645
  }
5476
4646
  );
5477
4647
  }
5478
4648
 
5479
4649
  // src/components/VerifyEmail.tsx
5480
- import * as React24 from "react";
5481
- import { Fragment as Fragment10, jsx as jsx31, jsxs as jsxs27 } from "react/jsx-runtime";
4650
+ import * as React25 from "react";
4651
+ import { Fragment as Fragment10, jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
5482
4652
  function VerifyEmail({ redirectTo, onVerified, callbackURL }) {
5483
4653
  const t = useT();
5484
4654
  const { sendVerificationEmail } = useEmailVerification();
5485
4655
  const { pending, error, run } = useSubmitAction();
5486
4656
  const authChallenge = useAuthChallenge();
5487
- const [ready, setReady] = React24.useState(false);
5488
- const [failed, setFailed] = React24.useState(false);
5489
- const [email, setEmail] = React24.useState("");
5490
- const [resent, setResent] = React24.useState(false);
5491
- React24.useEffect(() => {
4657
+ const [ready, setReady] = React25.useState(false);
4658
+ const [failed, setFailed] = React25.useState(false);
4659
+ const [email, setEmail] = React25.useState("");
4660
+ const [resent, setResent] = React25.useState(false);
4661
+ React25.useEffect(() => {
5492
4662
  const didFail = new URLSearchParams(window.location.search).has("error");
5493
4663
  setFailed(didFail);
5494
4664
  setReady(true);
@@ -5498,12 +4668,12 @@ function VerifyEmail({ redirectTo, onVerified, callbackURL }) {
5498
4668
  }
5499
4669
  }, [onVerified, redirectTo]);
5500
4670
  if (!ready) {
5501
- return /* @__PURE__ */ jsx31("div", { className: "ba-form", "aria-busy": "true", children: /* @__PURE__ */ jsx31("div", { className: "ba-skeleton" }) });
4671
+ return /* @__PURE__ */ jsx32("div", { className: "ba-form", "aria-busy": "true", children: /* @__PURE__ */ jsx32("div", { className: "ba-skeleton" }) });
5502
4672
  }
5503
4673
  if (!failed) {
5504
- return /* @__PURE__ */ jsx31("p", { className: "ba-muted", "data-testid": "verify-success", children: t("verifyEmail.success") });
4674
+ return /* @__PURE__ */ jsx32("p", { className: "ba-muted", "data-testid": "verify-success", children: t("verifyEmail.success") });
5505
4675
  }
5506
- return /* @__PURE__ */ jsxs27(
4676
+ return /* @__PURE__ */ jsxs28(
5507
4677
  "form",
5508
4678
  {
5509
4679
  method: "post",
@@ -5518,11 +4688,11 @@ function VerifyEmail({ redirectTo, onVerified, callbackURL }) {
5518
4688
  });
5519
4689
  },
5520
4690
  children: [
5521
- /* @__PURE__ */ jsx31(FormError, { children: t("verifyEmail.invalidLink") }),
5522
- resent ? /* @__PURE__ */ jsx31("p", { className: "ba-muted", children: richMessage(t("verifyEmail.resent"), { email: /* @__PURE__ */ jsx31(Bidi, { children: email }) }) }) : /* @__PURE__ */ jsxs27(Fragment10, { children: [
5523
- /* @__PURE__ */ jsxs27("label", { className: "ba-label", children: [
4691
+ /* @__PURE__ */ jsx32(FormError, { children: t("verifyEmail.invalidLink") }),
4692
+ resent ? /* @__PURE__ */ jsx32("p", { className: "ba-muted", children: richMessage(t("verifyEmail.resent"), { email: /* @__PURE__ */ jsx32(Bidi, { children: email }) }) }) : /* @__PURE__ */ jsxs28(Fragment10, { children: [
4693
+ /* @__PURE__ */ jsxs28("label", { className: "ba-label", children: [
5524
4694
  t("common.emailLabel"),
5525
- /* @__PURE__ */ jsx31(
4695
+ /* @__PURE__ */ jsx32(
5526
4696
  "input",
5527
4697
  {
5528
4698
  className: "ba-input",
@@ -5535,15 +4705,15 @@ function VerifyEmail({ redirectTo, onVerified, callbackURL }) {
5535
4705
  )
5536
4706
  ] }),
5537
4707
  authChallenge.control,
5538
- /* @__PURE__ */ jsx31(FormError, { children: error }),
5539
- /* @__PURE__ */ jsx31(
4708
+ /* @__PURE__ */ jsx32(FormError, { children: error }),
4709
+ /* @__PURE__ */ jsx32(
5540
4710
  "button",
5541
4711
  {
5542
4712
  className: "ba-button",
5543
4713
  type: "submit",
5544
4714
  disabled: pending || authChallenge.configPending,
5545
4715
  "aria-busy": pending || void 0,
5546
- children: /* @__PURE__ */ jsx31(Busy, { busy: pending, label: t("common.sending"), children: t("verifyEmail.resendSubmit") })
4716
+ children: /* @__PURE__ */ jsx32(Busy, { busy: pending, label: t("common.sending"), children: t("verifyEmail.resendSubmit") })
5547
4717
  }
5548
4718
  )
5549
4719
  ] })
@@ -5553,18 +4723,18 @@ function VerifyEmail({ redirectTo, onVerified, callbackURL }) {
5553
4723
  }
5554
4724
 
5555
4725
  // src/components/PasskeyManager.tsx
5556
- import * as React25 from "react";
5557
- import { jsx as jsx32, jsxs as jsxs28 } from "react/jsx-runtime";
4726
+ import * as React26 from "react";
4727
+ import { jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
5558
4728
  function PasskeyManager({ title, allowAdd = true } = {}) {
5559
4729
  const t = useT();
5560
4730
  const { user, isLoaded, isSignedIn } = useUser();
5561
4731
  if (!isLoaded) {
5562
- return /* @__PURE__ */ jsx32("div", { className: "ba-form", "data-testid": "passkey-manager-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx32("div", { className: "ba-skeleton" }) });
4732
+ return /* @__PURE__ */ jsx33("div", { className: "ba-form", "data-testid": "passkey-manager-loading", "aria-busy": "true", children: /* @__PURE__ */ jsx33("div", { className: "ba-skeleton" }) });
5563
4733
  }
5564
4734
  if (!isSignedIn || !user) {
5565
- return /* @__PURE__ */ jsx32("p", { className: "ba-muted", children: t("passkeys.signedOut") });
4735
+ return /* @__PURE__ */ jsx33("p", { className: "ba-muted", children: t("passkeys.signedOut") });
5566
4736
  }
5567
- return /* @__PURE__ */ jsx32(PasskeyManagerBody, { title, allowAdd }, user.id);
4737
+ return /* @__PURE__ */ jsx33(PasskeyManagerBody, { title, allowAdd }, user.id);
5568
4738
  }
5569
4739
  function PasskeyManagerBody({
5570
4740
  title,
@@ -5573,12 +4743,12 @@ function PasskeyManagerBody({
5573
4743
  const t = useT();
5574
4744
  const toServerError = useServerError();
5575
4745
  const api = usePasskeys();
5576
- const apiRef = React25.useRef(api);
4746
+ const apiRef = React26.useRef(api);
5577
4747
  apiRef.current = api;
5578
4748
  const { pending, error, setError, run } = useSubmitAction();
5579
- const [passkeys, setPasskeys] = React25.useState(null);
5580
- const loadTokenRef = React25.useRef(0);
5581
- const load = React25.useCallback(async () => {
4749
+ const [passkeys, setPasskeys] = React26.useState(null);
4750
+ const loadTokenRef = React26.useRef(0);
4751
+ const load = React26.useCallback(async () => {
5582
4752
  const token = ++loadTokenRef.current;
5583
4753
  try {
5584
4754
  const res = await apiRef.current.listPasskeys();
@@ -5594,7 +4764,7 @@ function PasskeyManagerBody({
5594
4764
  setError(t("passkeys.error.loadFailed"));
5595
4765
  }
5596
4766
  }, [setError, toServerError, t]);
5597
- React25.useEffect(() => {
4767
+ React26.useEffect(() => {
5598
4768
  void load();
5599
4769
  }, [load]);
5600
4770
  function onRename(id, current) {
@@ -5613,13 +4783,13 @@ function PasskeyManagerBody({
5613
4783
  onSuccess: load
5614
4784
  });
5615
4785
  }
5616
- return /* @__PURE__ */ jsxs28("div", { className: "ba-form", "data-testid": "passkey-manager", children: [
5617
- title !== null && /* @__PURE__ */ jsx32("h2", { className: "ba-title", children: title ?? t("passkeys.title") }),
5618
- passkeys === null ? error ? null : /* @__PURE__ */ jsx32("div", { className: "ba-skeleton" }) : /* @__PURE__ */ jsxs28("ul", { className: "ba-passkey-list", children: [
5619
- (passkeys ?? []).map((pk) => /* @__PURE__ */ jsxs28("li", { className: "ba-passkey-item", children: [
5620
- /* @__PURE__ */ jsx32("span", { className: "ba-passkey-name", children: pk.name?.trim() || t("passkeys.unnamed") }),
5621
- /* @__PURE__ */ jsxs28("span", { className: "ba-passkey-actions", children: [
5622
- /* @__PURE__ */ jsx32(
4786
+ return /* @__PURE__ */ jsxs29("div", { className: "ba-form", "data-testid": "passkey-manager", children: [
4787
+ title !== null && /* @__PURE__ */ jsx33("h2", { className: "ba-title", children: title ?? t("passkeys.title") }),
4788
+ passkeys === null ? error ? null : /* @__PURE__ */ jsx33("div", { className: "ba-skeleton" }) : /* @__PURE__ */ jsxs29("ul", { className: "ba-passkey-list", children: [
4789
+ (passkeys ?? []).map((pk) => /* @__PURE__ */ jsxs29("li", { className: "ba-passkey-item", children: [
4790
+ /* @__PURE__ */ jsx33("span", { className: "ba-passkey-name", children: pk.name?.trim() || t("passkeys.unnamed") }),
4791
+ /* @__PURE__ */ jsxs29("span", { className: "ba-passkey-actions", children: [
4792
+ /* @__PURE__ */ jsx33(
5623
4793
  "button",
5624
4794
  {
5625
4795
  type: "button",
@@ -5629,7 +4799,7 @@ function PasskeyManagerBody({
5629
4799
  children: t("passkeys.rename")
5630
4800
  }
5631
4801
  ),
5632
- /* @__PURE__ */ jsx32(
4802
+ /* @__PURE__ */ jsx33(
5633
4803
  "button",
5634
4804
  {
5635
4805
  type: "button",
@@ -5641,13 +4811,13 @@ function PasskeyManagerBody({
5641
4811
  )
5642
4812
  ] })
5643
4813
  ] }, pk.id)),
5644
- passkeys !== null && passkeys.length === 0 && /* @__PURE__ */ jsx32("li", { className: "ba-muted", children: t("passkeys.empty") })
4814
+ passkeys !== null && passkeys.length === 0 && /* @__PURE__ */ jsx33("li", { className: "ba-muted", children: t("passkeys.empty") })
5645
4815
  ] }),
5646
- error && /* @__PURE__ */ jsxs28("div", { className: "ba-inline-error", children: [
5647
- /* @__PURE__ */ jsx32(FormError, { children: error }),
5648
- passkeys === null && /* @__PURE__ */ jsx32("button", { className: "ba-link-button", type: "button", onClick: () => void load(), children: t("userProfile.retry") })
4816
+ error && /* @__PURE__ */ jsxs29("div", { className: "ba-inline-error", children: [
4817
+ /* @__PURE__ */ jsx33(FormError, { children: error }),
4818
+ passkeys === null && /* @__PURE__ */ jsx33("button", { className: "ba-link-button", type: "button", onClick: () => void load(), children: t("userProfile.retry") })
5649
4819
  ] }),
5650
- passkeys !== null && allowAdd && /* @__PURE__ */ jsx32(
4820
+ passkeys !== null && allowAdd && /* @__PURE__ */ jsx33(
5651
4821
  "button",
5652
4822
  {
5653
4823
  className: "ba-button",
@@ -5658,7 +4828,7 @@ function PasskeyManagerBody({
5658
4828
  failure: t("passkeys.error.addFailed"),
5659
4829
  onSuccess: load
5660
4830
  }),
5661
- children: /* @__PURE__ */ jsx32(Busy, { busy: pending, label: t("common.working"), children: t("passkeys.add") })
4831
+ children: /* @__PURE__ */ jsx33(Busy, { busy: pending, label: t("common.working"), children: t("passkeys.add") })
5662
4832
  }
5663
4833
  )
5664
4834
  ] });
@@ -5666,14 +4836,14 @@ function PasskeyManagerBody({
5666
4836
 
5667
4837
  // src/components/control.tsx
5668
4838
  import { membershipHas } from "@authowl/core";
5669
- import { Fragment as Fragment11, jsx as jsx33, jsxs as jsxs29 } from "react/jsx-runtime";
4839
+ import { Fragment as Fragment11, jsx as jsx34, jsxs as jsxs30 } from "react/jsx-runtime";
5670
4840
  function SignedIn({ children }) {
5671
4841
  const { isLoaded, isSignedIn } = useUser();
5672
- return isLoaded && isSignedIn ? /* @__PURE__ */ jsx33(Fragment11, { children }) : null;
4842
+ return isLoaded && isSignedIn ? /* @__PURE__ */ jsx34(Fragment11, { children }) : null;
5673
4843
  }
5674
4844
  function SignedOut({ children }) {
5675
4845
  const { isLoaded, isSignedIn } = useUser();
5676
- return isLoaded && !isSignedIn ? /* @__PURE__ */ jsx33(Fragment11, { children }) : null;
4846
+ return isLoaded && !isSignedIn ? /* @__PURE__ */ jsx34(Fragment11, { children }) : null;
5677
4847
  }
5678
4848
  function Protect({
5679
4849
  children,
@@ -5686,36 +4856,36 @@ function Protect({
5686
4856
  const { user, isLoaded, isSignedIn } = useUser();
5687
4857
  const membership = useSession().data?.session?.membership ?? null;
5688
4858
  if (!isLoaded) return null;
5689
- if (!isSignedIn || !user) return /* @__PURE__ */ jsx33(Fragment11, { children: fallback });
4859
+ if (!isSignedIn || !user) return /* @__PURE__ */ jsx34(Fragment11, { children: fallback });
5690
4860
  if ((role !== void 0 || permission !== void 0 || teamId !== void 0) && !membershipHas(membership, { role, permission, teamId })) {
5691
- return /* @__PURE__ */ jsx33(Fragment11, { children: fallback });
4861
+ return /* @__PURE__ */ jsx34(Fragment11, { children: fallback });
5692
4862
  }
5693
- if (condition && !condition(user)) return /* @__PURE__ */ jsx33(Fragment11, { children: fallback });
5694
- return /* @__PURE__ */ jsx33(Fragment11, { children });
4863
+ if (condition && !condition(user)) return /* @__PURE__ */ jsx34(Fragment11, { children: fallback });
4864
+ return /* @__PURE__ */ jsx34(Fragment11, { children });
5695
4865
  }
5696
4866
  function AuthLoading({ children }) {
5697
4867
  const t = useT();
5698
4868
  const { isLoaded } = useUser();
5699
4869
  if (isLoaded) return null;
5700
- if (children !== void 0) return /* @__PURE__ */ jsx33(Fragment11, { children });
5701
- return /* @__PURE__ */ jsxs29("div", { className: "ba-auth-loading", role: "status", "aria-busy": "true", "data-testid": "auth-loading", children: [
5702
- /* @__PURE__ */ jsx33(Spinner, {}),
5703
- /* @__PURE__ */ jsx33("span", { className: "ba-sr-only", children: t("common.loading") })
4870
+ if (children !== void 0) return /* @__PURE__ */ jsx34(Fragment11, { children });
4871
+ return /* @__PURE__ */ jsxs30("div", { className: "ba-auth-loading", role: "status", "aria-busy": "true", "data-testid": "auth-loading", children: [
4872
+ /* @__PURE__ */ jsx34(Spinner, {}),
4873
+ /* @__PURE__ */ jsx34("span", { className: "ba-sr-only", children: t("common.loading") })
5704
4874
  ] });
5705
4875
  }
5706
4876
  function AuthLoaded({ children }) {
5707
- return useUser().isLoaded ? /* @__PURE__ */ jsx33(Fragment11, { children }) : null;
4877
+ return useUser().isLoaded ? /* @__PURE__ */ jsx34(Fragment11, { children }) : null;
5708
4878
  }
5709
4879
 
5710
4880
  // src/components/SignOutButton.tsx
5711
- import * as React26 from "react";
5712
- import { jsx as jsx34 } from "react/jsx-runtime";
4881
+ import * as React27 from "react";
4882
+ import { jsx as jsx35 } from "react/jsx-runtime";
5713
4883
  function SignOutButton({ children, redirectTo, onSignedOut, className }) {
5714
4884
  const t = useT();
5715
4885
  const { signOut } = useSignOut();
5716
- const [pending, setPending] = React26.useState(false);
4886
+ const [pending, setPending] = React27.useState(false);
5717
4887
  const content = children ?? t("signOut.button");
5718
- return /* @__PURE__ */ jsx34(
4888
+ return /* @__PURE__ */ jsx35(
5719
4889
  "button",
5720
4890
  {
5721
4891
  type: "button",
@@ -5733,32 +4903,32 @@ function SignOutButton({ children, redirectTo, onSignedOut, className }) {
5733
4903
  setPending(false);
5734
4904
  }
5735
4905
  },
5736
- children: /* @__PURE__ */ jsx34(Busy, { busy: pending, label: content, children: content })
4906
+ children: /* @__PURE__ */ jsx35(Busy, { busy: pending, label: content, children: content })
5737
4907
  }
5738
4908
  );
5739
4909
  }
5740
4910
 
5741
4911
  // src/components/UserButton.tsx
5742
- import * as React40 from "react";
4912
+ import * as React41 from "react";
5743
4913
 
5744
4914
  // src/components/UserProfile.tsx
5745
- import * as React39 from "react";
4915
+ import * as React40 from "react";
5746
4916
 
5747
4917
  // src/components/user-profile/EmailSection.tsx
5748
- import * as React27 from "react";
5749
- import { jsx as jsx35, jsxs as jsxs30 } from "react/jsx-runtime";
4918
+ import * as React28 from "react";
4919
+ import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
5750
4920
  function EmailSection({ allowChange }) {
5751
4921
  const t = useT();
5752
4922
  const account = useAccount();
5753
4923
  const { user } = useUser();
5754
4924
  const { pending, error, run } = useSubmitAction();
5755
- const [newEmail, setNewEmail] = React27.useState("");
5756
- const [sent, setSent] = React27.useState(false);
5757
- const titleId = React27.useId();
4925
+ const [newEmail, setNewEmail] = React28.useState("");
4926
+ const [sent, setSent] = React28.useState(false);
4927
+ const titleId = React28.useId();
5758
4928
  if (!user?.email) {
5759
- return /* @__PURE__ */ jsxs30("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5760
- /* @__PURE__ */ jsx35("h2", { id: titleId, className: "ba-title", children: t("userProfile.email.title") }),
5761
- /* @__PURE__ */ jsx35("p", { className: "ba-muted", children: t("userProfile.email.unavailable") })
4929
+ return /* @__PURE__ */ jsxs31("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
4930
+ /* @__PURE__ */ jsx36("h2", { id: titleId, className: "ba-title", children: t("userProfile.email.title") }),
4931
+ /* @__PURE__ */ jsx36("p", { className: "ba-muted", children: t("userProfile.email.unavailable") })
5762
4932
  ] });
5763
4933
  }
5764
4934
  const submit = (event) => {
@@ -5778,19 +4948,19 @@ function EmailSection({ allowChange }) {
5778
4948
  }
5779
4949
  );
5780
4950
  };
5781
- return /* @__PURE__ */ jsxs30("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5782
- /* @__PURE__ */ jsxs30("header", { className: "ba-profile-section-header", children: [
5783
- /* @__PURE__ */ jsx35("h2", { id: titleId, className: "ba-title", children: t("userProfile.email.title") }),
5784
- /* @__PURE__ */ jsx35("p", { className: "ba-muted", children: t("userProfile.email.description") })
4951
+ return /* @__PURE__ */ jsxs31("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
4952
+ /* @__PURE__ */ jsxs31("header", { className: "ba-profile-section-header", children: [
4953
+ /* @__PURE__ */ jsx36("h2", { id: titleId, className: "ba-title", children: t("userProfile.email.title") }),
4954
+ /* @__PURE__ */ jsx36("p", { className: "ba-muted", children: t("userProfile.email.description") })
5785
4955
  ] }),
5786
- /* @__PURE__ */ jsxs30("p", { className: "ba-profile-current", children: [
5787
- /* @__PURE__ */ jsx35("span", { children: t("userProfile.email.current") }),
5788
- /* @__PURE__ */ jsx35("strong", { children: /* @__PURE__ */ jsx35(Bidi, { children: user.email }) })
4956
+ /* @__PURE__ */ jsxs31("p", { className: "ba-profile-current", children: [
4957
+ /* @__PURE__ */ jsx36("span", { children: t("userProfile.email.current") }),
4958
+ /* @__PURE__ */ jsx36("strong", { children: /* @__PURE__ */ jsx36(Bidi, { children: user.email }) })
5789
4959
  ] }),
5790
- !allowChange ? /* @__PURE__ */ jsx35("p", { className: "ba-muted", "data-testid": "email-change-disabled", children: t("userProfile.email.changeDisabled") }) : /* @__PURE__ */ jsxs30("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5791
- /* @__PURE__ */ jsxs30("label", { className: "ba-label", children: [
4960
+ !allowChange ? /* @__PURE__ */ jsx36("p", { className: "ba-muted", "data-testid": "email-change-disabled", children: t("userProfile.email.changeDisabled") }) : /* @__PURE__ */ jsxs31("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
4961
+ /* @__PURE__ */ jsxs31("label", { className: "ba-label", children: [
5792
4962
  t("userProfile.email.newLabel"),
5793
- /* @__PURE__ */ jsx35(
4963
+ /* @__PURE__ */ jsx36(
5794
4964
  "input",
5795
4965
  {
5796
4966
  className: "ba-input",
@@ -5802,16 +4972,16 @@ function EmailSection({ allowChange }) {
5802
4972
  }
5803
4973
  )
5804
4974
  ] }),
5805
- /* @__PURE__ */ jsx35(FormError, { children: error }),
5806
- sent && /* @__PURE__ */ jsx35("p", { className: "ba-success", role: "status", children: t("userProfile.email.sent") }),
5807
- /* @__PURE__ */ jsx35(
4975
+ /* @__PURE__ */ jsx36(FormError, { children: error }),
4976
+ sent && /* @__PURE__ */ jsx36("p", { className: "ba-success", role: "status", children: t("userProfile.email.sent") }),
4977
+ /* @__PURE__ */ jsx36(
5808
4978
  "button",
5809
4979
  {
5810
4980
  className: "ba-button ba-profile-submit",
5811
4981
  type: "submit",
5812
4982
  disabled: pending || !newEmail.trim(),
5813
4983
  "aria-busy": pending || void 0,
5814
- children: /* @__PURE__ */ jsx35(Busy, { busy: pending, label: t("common.sending"), children: t("userProfile.email.submit") })
4984
+ children: /* @__PURE__ */ jsx36(Busy, { busy: pending, label: t("common.sending"), children: t("userProfile.email.submit") })
5815
4985
  }
5816
4986
  )
5817
4987
  ] })
@@ -5819,16 +4989,16 @@ function EmailSection({ allowChange }) {
5819
4989
  }
5820
4990
 
5821
4991
  // src/components/user-profile/DeleteAccountSection.tsx
5822
- import * as React28 from "react";
5823
- import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
4992
+ import * as React29 from "react";
4993
+ import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
5824
4994
  function DeleteAccountSection({ onDeleted }) {
5825
4995
  const t = useT();
5826
4996
  const account = useAccount();
5827
4997
  const session = useSession();
5828
4998
  const { user } = useUser();
5829
4999
  const { pending, error, run } = useSubmitAction();
5830
- const [confirmation, setConfirmation] = React28.useState("");
5831
- const titleId = React28.useId();
5000
+ const [confirmation, setConfirmation] = React29.useState("");
5001
+ const titleId = React29.useId();
5832
5002
  const identifier = user?.email ?? user?.phoneNumber ?? user?.id ?? "";
5833
5003
  const confirmed = identifier.length > 0 && confirmation.trim().toLowerCase() === identifier.toLowerCase();
5834
5004
  const submit = (event) => {
@@ -5845,18 +5015,18 @@ function DeleteAccountSection({ onDeleted }) {
5845
5015
  }
5846
5016
  );
5847
5017
  };
5848
- return /* @__PURE__ */ jsxs31("section", { className: "ba-profile-section ba-profile-danger-zone", "aria-labelledby": titleId, children: [
5849
- /* @__PURE__ */ jsxs31("header", { className: "ba-profile-section-header", children: [
5850
- /* @__PURE__ */ jsx36("h2", { id: titleId, className: "ba-title", children: t("userProfile.delete.title") }),
5851
- /* @__PURE__ */ jsx36("p", { className: "ba-muted", children: t("userProfile.delete.description") })
5018
+ return /* @__PURE__ */ jsxs32("section", { className: "ba-profile-section ba-profile-danger-zone", "aria-labelledby": titleId, children: [
5019
+ /* @__PURE__ */ jsxs32("header", { className: "ba-profile-section-header", children: [
5020
+ /* @__PURE__ */ jsx37("h2", { id: titleId, className: "ba-title", children: t("userProfile.delete.title") }),
5021
+ /* @__PURE__ */ jsx37("p", { className: "ba-muted", children: t("userProfile.delete.description") })
5852
5022
  ] }),
5853
- /* @__PURE__ */ jsxs31("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5854
- /* @__PURE__ */ jsx36("p", { className: "ba-profile-delete-warning", children: t("userProfile.delete.warning", { identifier }) }),
5855
- /* @__PURE__ */ jsxs31("label", { className: "ba-label", children: [
5023
+ /* @__PURE__ */ jsxs32("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5024
+ /* @__PURE__ */ jsx37("p", { className: "ba-profile-delete-warning", children: t("userProfile.delete.warning", { identifier }) }),
5025
+ /* @__PURE__ */ jsxs32("label", { className: "ba-label", children: [
5856
5026
  t("userProfile.delete.confirmLabel"),
5857
5027
  " ",
5858
- /* @__PURE__ */ jsx36(Bidi, { children: identifier }),
5859
- /* @__PURE__ */ jsx36(
5028
+ /* @__PURE__ */ jsx37(Bidi, { children: identifier }),
5029
+ /* @__PURE__ */ jsx37(
5860
5030
  "input",
5861
5031
  {
5862
5032
  className: "ba-input",
@@ -5870,15 +5040,15 @@ function DeleteAccountSection({ onDeleted }) {
5870
5040
  }
5871
5041
  )
5872
5042
  ] }),
5873
- /* @__PURE__ */ jsx36(FormError, { children: error }),
5874
- /* @__PURE__ */ jsx36(
5043
+ /* @__PURE__ */ jsx37(FormError, { children: error }),
5044
+ /* @__PURE__ */ jsx37(
5875
5045
  "button",
5876
5046
  {
5877
5047
  className: "ba-button ba-danger-button ba-profile-submit",
5878
5048
  type: "submit",
5879
5049
  disabled: pending || !confirmed,
5880
5050
  "aria-busy": pending || void 0,
5881
- children: /* @__PURE__ */ jsx36(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.delete.submit") })
5051
+ children: /* @__PURE__ */ jsx37(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.delete.submit") })
5882
5052
  }
5883
5053
  )
5884
5054
  ] })
@@ -5886,8 +5056,8 @@ function DeleteAccountSection({ onDeleted }) {
5886
5056
  }
5887
5057
 
5888
5058
  // src/components/user-profile/MfaSection.tsx
5889
- import * as React29 from "react";
5890
- import { jsx as jsx37, jsxs as jsxs32 } from "react/jsx-runtime";
5059
+ import * as React30 from "react";
5060
+ import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
5891
5061
  function MfaSection() {
5892
5062
  const t = useT();
5893
5063
  const { user } = useUser();
@@ -5895,17 +5065,17 @@ function MfaSection() {
5895
5065
  const { config } = usePublicConfig();
5896
5066
  const { disable } = useMFA();
5897
5067
  const { pending, error, run } = useSubmitAction();
5898
- const [password, setPassword] = React29.useState("");
5899
- const [showDisable, setShowDisable] = React29.useState(false);
5900
- const titleId = React29.useId();
5068
+ const [password, setPassword] = React30.useState("");
5069
+ const [showDisable, setShowDisable] = React30.useState(false);
5070
+ const titleId = React30.useId();
5901
5071
  const required = resolveProjectCapabilities(config).mfaRequired;
5902
5072
  if (!user?.twoFactorEnabled) {
5903
- return /* @__PURE__ */ jsxs32("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5904
- /* @__PURE__ */ jsxs32("header", { className: "ba-profile-section-header", children: [
5905
- /* @__PURE__ */ jsx37("h2", { id: titleId, className: "ba-title", children: t("userProfile.mfa.title") }),
5906
- /* @__PURE__ */ jsx37("p", { className: "ba-muted", children: required ? t("userProfile.mfa.requiredDescription") : t("userProfile.mfa.description") })
5073
+ return /* @__PURE__ */ jsxs33("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5074
+ /* @__PURE__ */ jsxs33("header", { className: "ba-profile-section-header", children: [
5075
+ /* @__PURE__ */ jsx38("h2", { id: titleId, className: "ba-title", children: t("userProfile.mfa.title") }),
5076
+ /* @__PURE__ */ jsx38("p", { className: "ba-muted", children: required ? t("userProfile.mfa.requiredDescription") : t("userProfile.mfa.description") })
5907
5077
  ] }),
5908
- /* @__PURE__ */ jsx37(
5078
+ /* @__PURE__ */ jsx38(
5909
5079
  MFAEnrollment,
5910
5080
  {
5911
5081
  title: null,
@@ -5928,16 +5098,16 @@ function MfaSection() {
5928
5098
  }
5929
5099
  );
5930
5100
  };
5931
- return /* @__PURE__ */ jsxs32("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5932
- /* @__PURE__ */ jsxs32("header", { className: "ba-profile-section-header", children: [
5933
- /* @__PURE__ */ jsx37("h2", { id: titleId, className: "ba-title", children: t("userProfile.mfa.title") }),
5934
- /* @__PURE__ */ jsx37("p", { className: "ba-muted", children: required ? t("userProfile.mfa.requiredActive") : t("userProfile.mfa.active") })
5101
+ return /* @__PURE__ */ jsxs33("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5102
+ /* @__PURE__ */ jsxs33("header", { className: "ba-profile-section-header", children: [
5103
+ /* @__PURE__ */ jsx38("h2", { id: titleId, className: "ba-title", children: t("userProfile.mfa.title") }),
5104
+ /* @__PURE__ */ jsx38("p", { className: "ba-muted", children: required ? t("userProfile.mfa.requiredActive") : t("userProfile.mfa.active") })
5935
5105
  ] }),
5936
- /* @__PURE__ */ jsxs32("div", { className: "ba-profile-status", role: "status", children: [
5937
- /* @__PURE__ */ jsx37("strong", { children: t("userProfile.mfa.enabled") }),
5938
- /* @__PURE__ */ jsx37("span", { children: t("userProfile.mfa.authenticator") })
5106
+ /* @__PURE__ */ jsxs33("div", { className: "ba-profile-status", role: "status", children: [
5107
+ /* @__PURE__ */ jsx38("strong", { children: t("userProfile.mfa.enabled") }),
5108
+ /* @__PURE__ */ jsx38("span", { children: t("userProfile.mfa.authenticator") })
5939
5109
  ] }),
5940
- !showDisable ? /* @__PURE__ */ jsx37(
5110
+ !showDisable ? /* @__PURE__ */ jsx38(
5941
5111
  "button",
5942
5112
  {
5943
5113
  className: "ba-button ba-button-secondary ba-profile-submit",
@@ -5945,11 +5115,11 @@ function MfaSection() {
5945
5115
  onClick: () => setShowDisable(true),
5946
5116
  children: required ? t("userProfile.mfa.replace") : t("userProfile.mfa.disable")
5947
5117
  }
5948
- ) : /* @__PURE__ */ jsxs32("form", { method: "post", className: "ba-fields ba-profile-security-form", onSubmit: submitDisable, children: [
5949
- /* @__PURE__ */ jsx37("p", { className: "ba-muted", children: required ? t("userProfile.mfa.replaceWarning") : t("userProfile.mfa.disableWarning") }),
5950
- /* @__PURE__ */ jsxs32("label", { className: "ba-label", children: [
5118
+ ) : /* @__PURE__ */ jsxs33("form", { method: "post", className: "ba-fields ba-profile-security-form", onSubmit: submitDisable, children: [
5119
+ /* @__PURE__ */ jsx38("p", { className: "ba-muted", children: required ? t("userProfile.mfa.replaceWarning") : t("userProfile.mfa.disableWarning") }),
5120
+ /* @__PURE__ */ jsxs33("label", { className: "ba-label", children: [
5951
5121
  t("common.passwordLabel"),
5952
- /* @__PURE__ */ jsx37(
5122
+ /* @__PURE__ */ jsx38(
5953
5123
  "input",
5954
5124
  {
5955
5125
  className: "ba-input",
@@ -5961,19 +5131,19 @@ function MfaSection() {
5961
5131
  }
5962
5132
  )
5963
5133
  ] }),
5964
- /* @__PURE__ */ jsx37(FormError, { children: error }),
5965
- /* @__PURE__ */ jsxs32("span", { className: "ba-profile-action-row", children: [
5966
- /* @__PURE__ */ jsx37(
5134
+ /* @__PURE__ */ jsx38(FormError, { children: error }),
5135
+ /* @__PURE__ */ jsxs33("span", { className: "ba-profile-action-row", children: [
5136
+ /* @__PURE__ */ jsx38(
5967
5137
  "button",
5968
5138
  {
5969
5139
  className: "ba-button ba-danger-button",
5970
5140
  type: "submit",
5971
5141
  disabled: pending || !password,
5972
5142
  "aria-busy": pending || void 0,
5973
- children: /* @__PURE__ */ jsx37(Busy, { busy: pending, label: t("common.working"), children: required ? t("userProfile.mfa.replaceConfirm") : t("userProfile.mfa.disableConfirm") })
5143
+ children: /* @__PURE__ */ jsx38(Busy, { busy: pending, label: t("common.working"), children: required ? t("userProfile.mfa.replaceConfirm") : t("userProfile.mfa.disableConfirm") })
5974
5144
  }
5975
5145
  ),
5976
- /* @__PURE__ */ jsx37(
5146
+ /* @__PURE__ */ jsx38(
5977
5147
  "button",
5978
5148
  {
5979
5149
  className: "ba-button ba-button-secondary",
@@ -5992,19 +5162,19 @@ function MfaSection() {
5992
5162
  }
5993
5163
 
5994
5164
  // src/components/user-profile/PasswordSection.tsx
5995
- import * as React30 from "react";
5996
- import { jsx as jsx38, jsxs as jsxs33 } from "react/jsx-runtime";
5165
+ import * as React31 from "react";
5166
+ import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
5997
5167
  function PasswordSection() {
5998
5168
  const t = useT();
5999
5169
  const account = useAccount();
6000
5170
  const { config } = usePublicConfig();
6001
5171
  const { passwordMinLength, passwordMaxLength } = resolveProjectCapabilities(config);
6002
5172
  const { pending, error, setError, run } = useSubmitAction();
6003
- const [currentPassword, setCurrentPassword] = React30.useState("");
6004
- const [newPassword, setNewPassword] = React30.useState("");
6005
- const [confirmPassword, setConfirmPassword] = React30.useState("");
6006
- const [saved, setSaved] = React30.useState(false);
6007
- const titleId = React30.useId();
5173
+ const [currentPassword, setCurrentPassword] = React31.useState("");
5174
+ const [newPassword, setNewPassword] = React31.useState("");
5175
+ const [confirmPassword, setConfirmPassword] = React31.useState("");
5176
+ const [saved, setSaved] = React31.useState(false);
5177
+ const titleId = React31.useId();
6008
5178
  const submit = (event) => {
6009
5179
  event.preventDefault();
6010
5180
  setSaved(false);
@@ -6029,43 +5199,43 @@ function PasswordSection() {
6029
5199
  }
6030
5200
  );
6031
5201
  };
6032
- return /* @__PURE__ */ jsxs33("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6033
- /* @__PURE__ */ jsxs33("header", { className: "ba-profile-section-header", children: [
6034
- /* @__PURE__ */ jsx38("h2", { id: titleId, className: "ba-title", children: t("userProfile.password.title") }),
6035
- /* @__PURE__ */ jsx38("p", { className: "ba-muted", children: t("userProfile.password.description") })
5202
+ return /* @__PURE__ */ jsxs34("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5203
+ /* @__PURE__ */ jsxs34("header", { className: "ba-profile-section-header", children: [
5204
+ /* @__PURE__ */ jsx39("h2", { id: titleId, className: "ba-title", children: t("userProfile.password.title") }),
5205
+ /* @__PURE__ */ jsx39("p", { className: "ba-muted", children: t("userProfile.password.description") })
6036
5206
  ] }),
6037
- /* @__PURE__ */ jsxs33("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
6038
- /* @__PURE__ */ jsxs33("label", { className: "ba-label", children: [
5207
+ /* @__PURE__ */ jsxs34("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5208
+ /* @__PURE__ */ jsxs34("label", { className: "ba-label", children: [
6039
5209
  t("userProfile.password.currentLabel"),
6040
- /* @__PURE__ */ jsx38("input", { className: "ba-input", type: "password", autoComplete: "current-password", value: currentPassword, onChange: (event) => {
5210
+ /* @__PURE__ */ jsx39("input", { className: "ba-input", type: "password", autoComplete: "current-password", value: currentPassword, onChange: (event) => {
6041
5211
  setCurrentPassword(event.target.value);
6042
5212
  setError(null);
6043
5213
  }, required: true })
6044
5214
  ] }),
6045
- /* @__PURE__ */ jsxs33("label", { className: "ba-label", children: [
5215
+ /* @__PURE__ */ jsxs34("label", { className: "ba-label", children: [
6046
5216
  t("resetPassword.newPasswordLabel"),
6047
- /* @__PURE__ */ jsx38("input", { className: "ba-input", type: "password", autoComplete: "new-password", value: newPassword, onChange: (event) => {
5217
+ /* @__PURE__ */ jsx39("input", { className: "ba-input", type: "password", autoComplete: "new-password", value: newPassword, onChange: (event) => {
6048
5218
  setNewPassword(event.target.value);
6049
5219
  setError(null);
6050
5220
  }, minLength: passwordMinLength, maxLength: passwordMaxLength, required: true })
6051
5221
  ] }),
6052
- /* @__PURE__ */ jsxs33("label", { className: "ba-label", children: [
5222
+ /* @__PURE__ */ jsxs34("label", { className: "ba-label", children: [
6053
5223
  t("resetPassword.confirmPasswordLabel"),
6054
- /* @__PURE__ */ jsx38("input", { className: "ba-input", type: "password", autoComplete: "new-password", value: confirmPassword, onChange: (event) => {
5224
+ /* @__PURE__ */ jsx39("input", { className: "ba-input", type: "password", autoComplete: "new-password", value: confirmPassword, onChange: (event) => {
6055
5225
  setConfirmPassword(event.target.value);
6056
5226
  setError(null);
6057
5227
  }, minLength: passwordMinLength, maxLength: passwordMaxLength, required: true })
6058
5228
  ] }),
6059
- /* @__PURE__ */ jsx38(FormError, { children: error }),
6060
- saved && /* @__PURE__ */ jsx38("p", { className: "ba-success", role: "status", children: t("userProfile.password.saved") }),
6061
- /* @__PURE__ */ jsx38(
5229
+ /* @__PURE__ */ jsx39(FormError, { children: error }),
5230
+ saved && /* @__PURE__ */ jsx39("p", { className: "ba-success", role: "status", children: t("userProfile.password.saved") }),
5231
+ /* @__PURE__ */ jsx39(
6062
5232
  "button",
6063
5233
  {
6064
5234
  className: "ba-button ba-profile-submit",
6065
5235
  type: "submit",
6066
5236
  disabled: pending || !currentPassword || !newPassword || !confirmPassword,
6067
5237
  "aria-busy": pending || void 0,
6068
- children: /* @__PURE__ */ jsx38(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.password.submit") })
5238
+ children: /* @__PURE__ */ jsx39(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.password.submit") })
6069
5239
  }
6070
5240
  )
6071
5241
  ] })
@@ -6073,23 +5243,23 @@ function PasswordSection() {
6073
5243
  }
6074
5244
 
6075
5245
  // src/components/user-profile/PasskeysSection.tsx
6076
- import * as React31 from "react";
6077
- import { jsx as jsx39, jsxs as jsxs34 } from "react/jsx-runtime";
5246
+ import * as React32 from "react";
5247
+ import { jsx as jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
6078
5248
  function PasskeysSection({ allowAdd }) {
6079
5249
  const t = useT();
6080
- const titleId = React31.useId();
6081
- return /* @__PURE__ */ jsxs34("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6082
- /* @__PURE__ */ jsxs34("header", { className: "ba-profile-section-header", children: [
6083
- /* @__PURE__ */ jsx39("h2", { id: titleId, className: "ba-title", children: t("userProfile.passkeys.title") }),
6084
- /* @__PURE__ */ jsx39("p", { className: "ba-muted", children: t("userProfile.passkeys.description") })
5250
+ const titleId = React32.useId();
5251
+ return /* @__PURE__ */ jsxs35("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5252
+ /* @__PURE__ */ jsxs35("header", { className: "ba-profile-section-header", children: [
5253
+ /* @__PURE__ */ jsx40("h2", { id: titleId, className: "ba-title", children: t("userProfile.passkeys.title") }),
5254
+ /* @__PURE__ */ jsx40("p", { className: "ba-muted", children: t("userProfile.passkeys.description") })
6085
5255
  ] }),
6086
- /* @__PURE__ */ jsx39(PasskeyManager, { title: null, allowAdd })
5256
+ /* @__PURE__ */ jsx40(PasskeyManager, { title: null, allowAdd })
6087
5257
  ] });
6088
5258
  }
6089
5259
 
6090
5260
  // src/components/user-profile/ProfileSection.tsx
6091
- import * as React32 from "react";
6092
- import { Fragment as Fragment12, jsx as jsx40, jsxs as jsxs35 } from "react/jsx-runtime";
5261
+ import * as React33 from "react";
5262
+ import { Fragment as Fragment12, jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
6093
5263
  function ProfileSection({
6094
5264
  firstLastName,
6095
5265
  usernameEnabled,
@@ -6100,15 +5270,15 @@ function ProfileSection({
6100
5270
  const { user } = useUser();
6101
5271
  const session = useSession();
6102
5272
  const { pending, error, run } = useSubmitAction();
6103
- const [name, setName] = React32.useState(user?.name ?? "");
6104
- const [firstName, setFirstName] = React32.useState(user?.firstName ?? "");
6105
- const [lastName, setLastName] = React32.useState(user?.lastName ?? "");
6106
- const [username, setUsername] = React32.useState(
5273
+ const [name, setName] = React33.useState(user?.name ?? "");
5274
+ const [firstName, setFirstName] = React33.useState(user?.firstName ?? "");
5275
+ const [lastName, setLastName] = React33.useState(user?.lastName ?? "");
5276
+ const [username, setUsername] = React33.useState(
6107
5277
  user?.displayUsername ?? user?.username ?? ""
6108
5278
  );
6109
- const [image, setImage] = React32.useState(user?.image ?? "");
6110
- const [saved, setSaved] = React32.useState(false);
6111
- const titleId = React32.useId();
5279
+ const [image, setImage] = React33.useState(user?.image ?? "");
5280
+ const [saved, setSaved] = React33.useState(false);
5281
+ const titleId = React33.useId();
6112
5282
  const submit = (event) => {
6113
5283
  event.preventDefault();
6114
5284
  setSaved(false);
@@ -6131,15 +5301,15 @@ function ProfileSection({
6131
5301
  }
6132
5302
  );
6133
5303
  };
6134
- return /* @__PURE__ */ jsxs35("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6135
- /* @__PURE__ */ jsxs35("header", { className: "ba-profile-section-header", children: [
6136
- /* @__PURE__ */ jsx40("h2", { id: titleId, className: "ba-title", children: t("userProfile.profile.title") }),
6137
- /* @__PURE__ */ jsx40("p", { className: "ba-muted", children: t("userProfile.profile.description") })
5304
+ return /* @__PURE__ */ jsxs36("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5305
+ /* @__PURE__ */ jsxs36("header", { className: "ba-profile-section-header", children: [
5306
+ /* @__PURE__ */ jsx41("h2", { id: titleId, className: "ba-title", children: t("userProfile.profile.title") }),
5307
+ /* @__PURE__ */ jsx41("p", { className: "ba-muted", children: t("userProfile.profile.description") })
6138
5308
  ] }),
6139
- /* @__PURE__ */ jsxs35("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
6140
- legacyNameField && /* @__PURE__ */ jsxs35("label", { className: "ba-label", children: [
5309
+ /* @__PURE__ */ jsxs36("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
5310
+ legacyNameField && /* @__PURE__ */ jsxs36("label", { className: "ba-label", children: [
6141
5311
  t("signUp.nameLabel"),
6142
- /* @__PURE__ */ jsx40(
5312
+ /* @__PURE__ */ jsx41(
6143
5313
  "input",
6144
5314
  {
6145
5315
  className: "ba-input",
@@ -6150,10 +5320,10 @@ function ProfileSection({
6150
5320
  }
6151
5321
  )
6152
5322
  ] }),
6153
- firstLastName && /* @__PURE__ */ jsxs35(Fragment12, { children: [
6154
- /* @__PURE__ */ jsxs35("label", { className: "ba-label", children: [
5323
+ firstLastName && /* @__PURE__ */ jsxs36(Fragment12, { children: [
5324
+ /* @__PURE__ */ jsxs36("label", { className: "ba-label", children: [
6155
5325
  t("signUp.firstNameLabel"),
6156
- /* @__PURE__ */ jsx40(
5326
+ /* @__PURE__ */ jsx41(
6157
5327
  "input",
6158
5328
  {
6159
5329
  className: "ba-input",
@@ -6163,9 +5333,9 @@ function ProfileSection({
6163
5333
  }
6164
5334
  )
6165
5335
  ] }),
6166
- /* @__PURE__ */ jsxs35("label", { className: "ba-label", children: [
5336
+ /* @__PURE__ */ jsxs36("label", { className: "ba-label", children: [
6167
5337
  t("signUp.lastNameLabel"),
6168
- /* @__PURE__ */ jsx40(
5338
+ /* @__PURE__ */ jsx41(
6169
5339
  "input",
6170
5340
  {
6171
5341
  className: "ba-input",
@@ -6176,9 +5346,9 @@ function ProfileSection({
6176
5346
  )
6177
5347
  ] })
6178
5348
  ] }),
6179
- usernameEnabled && /* @__PURE__ */ jsxs35("label", { className: "ba-label", children: [
5349
+ usernameEnabled && /* @__PURE__ */ jsxs36("label", { className: "ba-label", children: [
6180
5350
  t("common.usernameLabel"),
6181
- /* @__PURE__ */ jsx40(
5351
+ /* @__PURE__ */ jsx41(
6182
5352
  "input",
6183
5353
  {
6184
5354
  className: "ba-input",
@@ -6188,9 +5358,9 @@ function ProfileSection({
6188
5358
  }
6189
5359
  )
6190
5360
  ] }),
6191
- /* @__PURE__ */ jsxs35("label", { className: "ba-label", children: [
5361
+ /* @__PURE__ */ jsxs36("label", { className: "ba-label", children: [
6192
5362
  t("userProfile.profile.imageLabel"),
6193
- /* @__PURE__ */ jsx40(
5363
+ /* @__PURE__ */ jsx41(
6194
5364
  "input",
6195
5365
  {
6196
5366
  className: "ba-input",
@@ -6201,16 +5371,16 @@ function ProfileSection({
6201
5371
  }
6202
5372
  )
6203
5373
  ] }),
6204
- /* @__PURE__ */ jsx40(FormError, { children: error }),
6205
- saved && /* @__PURE__ */ jsx40("p", { className: "ba-success", role: "status", children: t("userProfile.profile.saved") }),
6206
- /* @__PURE__ */ jsx40(
5374
+ /* @__PURE__ */ jsx41(FormError, { children: error }),
5375
+ saved && /* @__PURE__ */ jsx41("p", { className: "ba-success", role: "status", children: t("userProfile.profile.saved") }),
5376
+ /* @__PURE__ */ jsx41(
6207
5377
  "button",
6208
5378
  {
6209
5379
  className: "ba-button ba-profile-submit",
6210
5380
  type: "submit",
6211
5381
  disabled: pending || legacyNameField && !name.trim(),
6212
5382
  "aria-busy": pending || void 0,
6213
- children: /* @__PURE__ */ jsx40(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.save") })
5383
+ children: /* @__PURE__ */ jsx41(Busy, { busy: pending, label: t("common.working"), children: t("userProfile.save") })
6214
5384
  }
6215
5385
  )
6216
5386
  ] })
@@ -6218,30 +5388,30 @@ function ProfileSection({
6218
5388
  }
6219
5389
 
6220
5390
  // src/components/user-profile/RecoverySection.tsx
6221
- import * as React33 from "react";
6222
- import { Fragment as Fragment13, jsx as jsx41, jsxs as jsxs36 } from "react/jsx-runtime";
5391
+ import * as React34 from "react";
5392
+ import { Fragment as Fragment13, jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
6223
5393
  function RecoverySection() {
6224
5394
  const t = useT();
6225
5395
  const { user } = useUser();
6226
- const titleId = React33.useId();
6227
- return /* @__PURE__ */ jsxs36("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6228
- /* @__PURE__ */ jsxs36("header", { className: "ba-profile-section-header", children: [
6229
- /* @__PURE__ */ jsx41("h2", { id: titleId, className: "ba-title", children: t("userProfile.recovery.title") }),
6230
- /* @__PURE__ */ jsx41("p", { className: "ba-muted", children: t("userProfile.recovery.description") })
5396
+ const titleId = React34.useId();
5397
+ return /* @__PURE__ */ jsxs37("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5398
+ /* @__PURE__ */ jsxs37("header", { className: "ba-profile-section-header", children: [
5399
+ /* @__PURE__ */ jsx42("h2", { id: titleId, className: "ba-title", children: t("userProfile.recovery.title") }),
5400
+ /* @__PURE__ */ jsx42("p", { className: "ba-muted", children: t("userProfile.recovery.description") })
6231
5401
  ] }),
6232
- /* @__PURE__ */ jsxs36("div", { className: "ba-profile-recovery-card", children: [
6233
- /* @__PURE__ */ jsx41("strong", { children: t("userProfile.recovery.emailTitle") }),
6234
- user?.email && user.emailVerified ? /* @__PURE__ */ jsxs36(Fragment13, { children: [
6235
- /* @__PURE__ */ jsx41("p", { children: t("userProfile.recovery.emailDescription") }),
6236
- /* @__PURE__ */ jsx41(Bidi, { children: user.email })
6237
- ] }) : /* @__PURE__ */ jsx41("p", { children: t("userProfile.recovery.emailUnavailable") })
5402
+ /* @__PURE__ */ jsxs37("div", { className: "ba-profile-recovery-card", children: [
5403
+ /* @__PURE__ */ jsx42("strong", { children: t("userProfile.recovery.emailTitle") }),
5404
+ user?.email && user.emailVerified ? /* @__PURE__ */ jsxs37(Fragment13, { children: [
5405
+ /* @__PURE__ */ jsx42("p", { children: t("userProfile.recovery.emailDescription") }),
5406
+ /* @__PURE__ */ jsx42(Bidi, { children: user.email })
5407
+ ] }) : /* @__PURE__ */ jsx42("p", { children: t("userProfile.recovery.emailUnavailable") })
6238
5408
  ] }),
6239
- /* @__PURE__ */ jsx41(BackupCodesManager, { title: null })
5409
+ /* @__PURE__ */ jsx42(BackupCodesManager, { title: null })
6240
5410
  ] });
6241
5411
  }
6242
5412
 
6243
5413
  // src/components/user-profile/SessionsSection.tsx
6244
- import * as React35 from "react";
5414
+ import * as React36 from "react";
6245
5415
 
6246
5416
  // src/components/user-profile/model.ts
6247
5417
  var USER_PROFILE_SECTIONS = [
@@ -6288,18 +5458,18 @@ function formatSessionTime(date, locale) {
6288
5458
  }
6289
5459
 
6290
5460
  // src/components/user-profile/use-account-resource.ts
6291
- import * as React34 from "react";
5461
+ import * as React35 from "react";
6292
5462
  function useAccountResource(loader2, failure) {
6293
- const loaderRef = React34.useRef(loader2);
5463
+ const loaderRef = React35.useRef(loader2);
6294
5464
  loaderRef.current = loader2;
6295
- const failureRef = React34.useRef(failure);
5465
+ const failureRef = React35.useRef(failure);
6296
5466
  failureRef.current = failure;
6297
5467
  const toServerError = useServerError();
6298
- const [data, setData] = React34.useState(null);
6299
- const [error, setError] = React34.useState(null);
6300
- const [loading, setLoading] = React34.useState(true);
6301
- const requestRef = React34.useRef(0);
6302
- const load = React34.useCallback(async () => {
5468
+ const [data, setData] = React35.useState(null);
5469
+ const [error, setError] = React35.useState(null);
5470
+ const [loading, setLoading] = React35.useState(true);
5471
+ const requestRef = React35.useRef(0);
5472
+ const load = React35.useCallback(async () => {
6303
5473
  const request = ++requestRef.current;
6304
5474
  setLoading(true);
6305
5475
  try {
@@ -6318,7 +5488,7 @@ function useAccountResource(loader2, failure) {
6318
5488
  if (request === requestRef.current) setLoading(false);
6319
5489
  }
6320
5490
  }, [toServerError]);
6321
- React34.useEffect(() => {
5491
+ React35.useEffect(() => {
6322
5492
  void load();
6323
5493
  return () => {
6324
5494
  requestRef.current += 1;
@@ -6328,14 +5498,14 @@ function useAccountResource(loader2, failure) {
6328
5498
  }
6329
5499
 
6330
5500
  // src/components/user-profile/SessionsSection.tsx
6331
- import { jsx as jsx42, jsxs as jsxs37 } from "react/jsx-runtime";
5501
+ import { jsx as jsx43, jsxs as jsxs38 } from "react/jsx-runtime";
6332
5502
  function SessionsSection() {
6333
5503
  const t = useT();
6334
5504
  const locale = useLocale();
6335
5505
  const account = useAccount();
6336
5506
  const sessionState = useSession();
6337
5507
  const mutation = useSubmitAction();
6338
- const titleId = React35.useId();
5508
+ const titleId = React36.useId();
6339
5509
  const resource = useAccountResource(
6340
5510
  () => account.listSessions(),
6341
5511
  t("userProfile.sessions.loadError")
@@ -6357,31 +5527,31 @@ function SessionsSection() {
6357
5527
  }
6358
5528
  );
6359
5529
  };
6360
- return /* @__PURE__ */ jsxs37("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6361
- /* @__PURE__ */ jsxs37("header", { className: "ba-profile-section-header", children: [
6362
- /* @__PURE__ */ jsx42("h2", { id: titleId, className: "ba-title", children: t("userProfile.sessions.title") }),
6363
- /* @__PURE__ */ jsx42("p", { className: "ba-muted", children: t("userProfile.sessions.description") })
5530
+ return /* @__PURE__ */ jsxs38("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5531
+ /* @__PURE__ */ jsxs38("header", { className: "ba-profile-section-header", children: [
5532
+ /* @__PURE__ */ jsx43("h2", { id: titleId, className: "ba-title", children: t("userProfile.sessions.title") }),
5533
+ /* @__PURE__ */ jsx43("p", { className: "ba-muted", children: t("userProfile.sessions.description") })
6364
5534
  ] }),
6365
- resource.data === null ? resource.loading ? /* @__PURE__ */ jsxs37("div", { className: "ba-profile-list-skeleton", "aria-busy": "true", children: [
6366
- /* @__PURE__ */ jsx42("div", { className: "ba-skeleton" }),
6367
- /* @__PURE__ */ jsx42("div", { className: "ba-skeleton" })
6368
- ] }) : null : /* @__PURE__ */ jsxs37("ul", { className: "ba-profile-list", children: [
5535
+ resource.data === null ? resource.loading ? /* @__PURE__ */ jsxs38("div", { className: "ba-profile-list-skeleton", "aria-busy": "true", children: [
5536
+ /* @__PURE__ */ jsx43("div", { className: "ba-skeleton" }),
5537
+ /* @__PURE__ */ jsx43("div", { className: "ba-skeleton" })
5538
+ ] }) : null : /* @__PURE__ */ jsxs38("ul", { className: "ba-profile-list", children: [
6369
5539
  sessions.map((session) => {
6370
5540
  const label2 = session.userAgent?.trim() || t("userProfile.sessions.unknownDevice");
6371
- return /* @__PURE__ */ jsxs37("li", { className: "ba-profile-list-item", children: [
6372
- /* @__PURE__ */ jsxs37("span", { children: [
6373
- /* @__PURE__ */ jsx42("strong", { children: label2 }),
6374
- /* @__PURE__ */ jsxs37("small", { children: [
6375
- session.id === currentId && /* @__PURE__ */ jsx42("em", { children: t("userProfile.sessions.current") }),
5541
+ return /* @__PURE__ */ jsxs38("li", { className: "ba-profile-list-item", children: [
5542
+ /* @__PURE__ */ jsxs38("span", { children: [
5543
+ /* @__PURE__ */ jsx43("strong", { children: label2 }),
5544
+ /* @__PURE__ */ jsxs38("small", { children: [
5545
+ session.id === currentId && /* @__PURE__ */ jsx43("em", { children: t("userProfile.sessions.current") }),
6376
5546
  formatSessionTime(session.updatedAt, locale)
6377
5547
  ] })
6378
5548
  ] }),
6379
- /* @__PURE__ */ jsx42("button", { className: "ba-link-button ba-danger", type: "button", disabled: mutation.pending, onClick: () => revoke(session.id, label2), children: t("userProfile.sessions.revoke") })
5549
+ /* @__PURE__ */ jsx43("button", { className: "ba-link-button ba-danger", type: "button", disabled: mutation.pending, onClick: () => revoke(session.id, label2), children: t("userProfile.sessions.revoke") })
6380
5550
  ] }, session.id);
6381
5551
  }),
6382
- sessions.length === 0 && /* @__PURE__ */ jsx42("li", { className: "ba-muted", children: t("userProfile.sessions.empty") })
5552
+ sessions.length === 0 && /* @__PURE__ */ jsx43("li", { className: "ba-muted", children: t("userProfile.sessions.empty") })
6383
5553
  ] }),
6384
- sessions.some((session) => session.id !== currentId) && /* @__PURE__ */ jsx42(
5554
+ sessions.some((session) => session.id !== currentId) && /* @__PURE__ */ jsx43(
6385
5555
  "button",
6386
5556
  {
6387
5557
  className: "ba-button ba-button-secondary ba-profile-submit",
@@ -6397,17 +5567,17 @@ function SessionsSection() {
6397
5567
  children: t("userProfile.sessions.revokeOthers")
6398
5568
  }
6399
5569
  ),
6400
- resource.error && /* @__PURE__ */ jsxs37("div", { className: "ba-profile-inline-error", children: [
6401
- /* @__PURE__ */ jsx42(FormError, { children: resource.error }),
6402
- /* @__PURE__ */ jsx42("button", { className: "ba-link-button", type: "button", onClick: () => void resource.load(), children: t("userProfile.retry") })
5570
+ resource.error && /* @__PURE__ */ jsxs38("div", { className: "ba-profile-inline-error", children: [
5571
+ /* @__PURE__ */ jsx43(FormError, { children: resource.error }),
5572
+ /* @__PURE__ */ jsx43("button", { className: "ba-link-button", type: "button", onClick: () => void resource.load(), children: t("userProfile.retry") })
6403
5573
  ] }),
6404
- /* @__PURE__ */ jsx42(FormError, { children: mutation.error })
5574
+ /* @__PURE__ */ jsx43(FormError, { children: mutation.error })
6405
5575
  ] });
6406
5576
  }
6407
5577
 
6408
5578
  // src/components/user-profile/SocialSection.tsx
6409
- import * as React36 from "react";
6410
- import { jsx as jsx43, jsxs as jsxs38 } from "react/jsx-runtime";
5579
+ import * as React37 from "react";
5580
+ import { jsx as jsx44, jsxs as jsxs39 } from "react/jsx-runtime";
6411
5581
  function providerLabel(provider) {
6412
5582
  return provider.charAt(0).toUpperCase() + provider.slice(1);
6413
5583
  }
@@ -6416,7 +5586,7 @@ function SocialSection() {
6416
5586
  const account = useAccount();
6417
5587
  const { config } = usePublicConfig();
6418
5588
  const mutation = useSubmitAction();
6419
- const titleId = React36.useId();
5589
+ const titleId = React37.useId();
6420
5590
  const resource = useAccountResource(
6421
5591
  () => account.listSocialAccounts(),
6422
5592
  t("userProfile.social.loadError")
@@ -6447,18 +5617,18 @@ function SocialSection() {
6447
5617
  { failure: t("userProfile.social.unlinkError"), onSuccess: resource.load }
6448
5618
  );
6449
5619
  };
6450
- return /* @__PURE__ */ jsxs38("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
6451
- /* @__PURE__ */ jsxs38("header", { className: "ba-profile-section-header", children: [
6452
- /* @__PURE__ */ jsx43("h2", { id: titleId, className: "ba-title", children: t("userProfile.social.title") }),
6453
- /* @__PURE__ */ jsx43("p", { className: "ba-muted", children: t("userProfile.social.description") })
5620
+ return /* @__PURE__ */ jsxs39("section", { className: "ba-profile-section", "aria-labelledby": titleId, children: [
5621
+ /* @__PURE__ */ jsxs39("header", { className: "ba-profile-section-header", children: [
5622
+ /* @__PURE__ */ jsx44("h2", { id: titleId, className: "ba-title", children: t("userProfile.social.title") }),
5623
+ /* @__PURE__ */ jsx44("p", { className: "ba-muted", children: t("userProfile.social.description") })
6454
5624
  ] }),
6455
- resource.data === null ? resource.loading ? /* @__PURE__ */ jsx43("div", { className: "ba-profile-list-skeleton", "aria-busy": "true", children: /* @__PURE__ */ jsx43("div", { className: "ba-skeleton" }) }) : null : /* @__PURE__ */ jsxs38("ul", { className: "ba-profile-list", children: [
6456
- linked.map((item) => /* @__PURE__ */ jsxs38("li", { className: "ba-profile-list-item", children: [
6457
- /* @__PURE__ */ jsxs38("span", { children: [
6458
- /* @__PURE__ */ jsx43("strong", { children: providerLabel(item.providerId) }),
6459
- /* @__PURE__ */ jsx43("small", { children: item.canUnlink ? t("userProfile.social.connected") : t("userProfile.social.lastMethod") })
5625
+ resource.data === null ? resource.loading ? /* @__PURE__ */ jsx44("div", { className: "ba-profile-list-skeleton", "aria-busy": "true", children: /* @__PURE__ */ jsx44("div", { className: "ba-skeleton" }) }) : null : /* @__PURE__ */ jsxs39("ul", { className: "ba-profile-list", children: [
5626
+ linked.map((item) => /* @__PURE__ */ jsxs39("li", { className: "ba-profile-list-item", children: [
5627
+ /* @__PURE__ */ jsxs39("span", { children: [
5628
+ /* @__PURE__ */ jsx44("strong", { children: providerLabel(item.providerId) }),
5629
+ /* @__PURE__ */ jsx44("small", { children: item.canUnlink ? t("userProfile.social.connected") : t("userProfile.social.lastMethod") })
6460
5630
  ] }),
6461
- /* @__PURE__ */ jsx43(
5631
+ /* @__PURE__ */ jsx44(
6462
5632
  "button",
6463
5633
  {
6464
5634
  className: "ba-link-button ba-danger",
@@ -6473,26 +5643,26 @@ function SocialSection() {
6473
5643
  }
6474
5644
  )
6475
5645
  ] }, item.id)),
6476
- linked.length === 0 && /* @__PURE__ */ jsx43("li", { className: "ba-muted", children: t("userProfile.social.empty") })
5646
+ linked.length === 0 && /* @__PURE__ */ jsx44("li", { className: "ba-muted", children: t("userProfile.social.empty") })
6477
5647
  ] }),
6478
- available.length > 0 && /* @__PURE__ */ jsxs38("div", { className: "ba-profile-provider-actions", children: [
6479
- /* @__PURE__ */ jsx43("p", { className: "ba-profile-subtitle", children: t("userProfile.social.add") }),
6480
- available.map((provider) => /* @__PURE__ */ jsx43("button", { type: "button", className: "ba-button ba-button-secondary", disabled: mutation.pending, onClick: () => link(provider), children: t("userProfile.social.connectProvider", { provider: providerLabel(provider) }) }, provider))
5648
+ available.length > 0 && /* @__PURE__ */ jsxs39("div", { className: "ba-profile-provider-actions", children: [
5649
+ /* @__PURE__ */ jsx44("p", { className: "ba-profile-subtitle", children: t("userProfile.social.add") }),
5650
+ available.map((provider) => /* @__PURE__ */ jsx44("button", { type: "button", className: "ba-button ba-button-secondary", disabled: mutation.pending, onClick: () => link(provider), children: t("userProfile.social.connectProvider", { provider: providerLabel(provider) }) }, provider))
6481
5651
  ] }),
6482
- resource.error && /* @__PURE__ */ jsxs38("div", { className: "ba-profile-inline-error", children: [
6483
- /* @__PURE__ */ jsx43(FormError, { children: resource.error }),
6484
- /* @__PURE__ */ jsx43("button", { className: "ba-link-button", type: "button", onClick: () => void resource.load(), children: t("userProfile.retry") })
5652
+ resource.error && /* @__PURE__ */ jsxs39("div", { className: "ba-profile-inline-error", children: [
5653
+ /* @__PURE__ */ jsx44(FormError, { children: resource.error }),
5654
+ /* @__PURE__ */ jsx44("button", { className: "ba-link-button", type: "button", onClick: () => void resource.load(), children: t("userProfile.retry") })
6485
5655
  ] }),
6486
- /* @__PURE__ */ jsx43(FormError, { children: mutation.error })
5656
+ /* @__PURE__ */ jsx44(FormError, { children: mutation.error })
6487
5657
  ] });
6488
5658
  }
6489
5659
 
6490
5660
  // src/components/user-profile/UserProfileModal.tsx
6491
- import * as React38 from "react";
5661
+ import * as React39 from "react";
6492
5662
 
6493
5663
  // src/components/ModalSurface.tsx
6494
- import * as React37 from "react";
6495
- import { jsx as jsx44 } from "react/jsx-runtime";
5664
+ import * as React38 from "react";
5665
+ import { jsx as jsx45 } from "react/jsx-runtime";
6496
5666
  function ModalSurface({
6497
5667
  overlayClassName,
6498
5668
  panelClassName,
@@ -6502,12 +5672,12 @@ function ModalSurface({
6502
5672
  onClose,
6503
5673
  children
6504
5674
  }) {
6505
- const panelRef = React37.useRef(null);
6506
- const onCloseRef = React37.useRef(onClose);
6507
- const returnFocusRefRef = React37.useRef(returnFocusRef);
5675
+ const panelRef = React38.useRef(null);
5676
+ const onCloseRef = React38.useRef(onClose);
5677
+ const returnFocusRefRef = React38.useRef(returnFocusRef);
6508
5678
  onCloseRef.current = onClose;
6509
5679
  returnFocusRefRef.current = returnFocusRef;
6510
- React37.useEffect(() => {
5680
+ React38.useEffect(() => {
6511
5681
  const previousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
6512
5682
  const previousOverflow = document.body.style.overflow;
6513
5683
  document.body.style.overflow = "hidden";
@@ -6540,9 +5710,9 @@ function ModalSurface({
6540
5710
  window.setTimeout(() => returnTarget?.focus(), 0);
6541
5711
  };
6542
5712
  }, []);
6543
- return /* @__PURE__ */ jsx44("div", { className: overlayClassName, role: "presentation", onMouseDown: (event) => {
5713
+ return /* @__PURE__ */ jsx45("div", { className: overlayClassName, role: "presentation", onMouseDown: (event) => {
6544
5714
  if (event.target === event.currentTarget) onClose();
6545
- }, children: /* @__PURE__ */ jsx44(
5715
+ }, children: /* @__PURE__ */ jsx45(
6546
5716
  "div",
6547
5717
  {
6548
5718
  ref: panelRef,
@@ -6557,14 +5727,15 @@ function ModalSurface({
6557
5727
  }
6558
5728
 
6559
5729
  // src/components/user-profile/UserProfileModal.tsx
6560
- import { jsx as jsx45, jsxs as jsxs39 } from "react/jsx-runtime";
5730
+ import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
6561
5731
  function UserProfileModal({
6562
5732
  children,
6563
- onClose
5733
+ onClose,
5734
+ branding
6564
5735
  }) {
6565
5736
  const t = useT();
6566
- const titleId = React38.useId();
6567
- return /* @__PURE__ */ jsxs39(
5737
+ const titleId = React39.useId();
5738
+ return /* @__PURE__ */ jsxs40(
6568
5739
  ModalSurface,
6569
5740
  {
6570
5741
  overlayClassName: "ba-profile-overlay",
@@ -6573,12 +5744,13 @@ function UserProfileModal({
6573
5744
  testId: "user-profile-modal",
6574
5745
  onClose,
6575
5746
  children: [
6576
- /* @__PURE__ */ jsxs39("header", { className: "ba-profile-modal-header", children: [
6577
- /* @__PURE__ */ jsxs39("span", { children: [
6578
- /* @__PURE__ */ jsx45("h1", { id: titleId, children: t("userProfile.title") }),
6579
- /* @__PURE__ */ jsx45("p", { children: t("userProfile.description") })
5747
+ /* @__PURE__ */ jsxs40("header", { className: "ba-profile-modal-header", children: [
5748
+ /* @__PURE__ */ jsxs40("span", { children: [
5749
+ branding,
5750
+ /* @__PURE__ */ jsx46("h1", { id: titleId, children: t("userProfile.title") }),
5751
+ /* @__PURE__ */ jsx46("p", { children: t("userProfile.description") })
6580
5752
  ] }),
6581
- /* @__PURE__ */ jsx45(
5753
+ /* @__PURE__ */ jsx46(
6582
5754
  "button",
6583
5755
  {
6584
5756
  type: "button",
@@ -6586,7 +5758,7 @@ function UserProfileModal({
6586
5758
  "aria-label": t("userProfile.close"),
6587
5759
  onClick: onClose,
6588
5760
  autoFocus: true,
6589
- children: /* @__PURE__ */ jsx45("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx45(
5761
+ children: /* @__PURE__ */ jsx46("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", focusable: "false", children: /* @__PURE__ */ jsx46(
6590
5762
  "path",
6591
5763
  {
6592
5764
  d: "M6 6l12 12M18 6L6 18",
@@ -6599,14 +5771,14 @@ function UserProfileModal({
6599
5771
  )
6600
5772
  ] }),
6601
5773
  children,
6602
- /* @__PURE__ */ jsx45("footer", { className: "ba-profile-modal-footer", children: /* @__PURE__ */ jsx45(AuthOwlBadge, {}) })
5774
+ /* @__PURE__ */ jsx46("footer", { className: "ba-profile-modal-footer", children: /* @__PURE__ */ jsx46(AuthOwlBadge, {}) })
6603
5775
  ]
6604
5776
  }
6605
5777
  );
6606
5778
  }
6607
5779
 
6608
5780
  // src/components/UserProfile.tsx
6609
- import { jsx as jsx46, jsxs as jsxs40 } from "react/jsx-runtime";
5781
+ import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
6610
5782
  var SECTION_KEYS = {
6611
5783
  profile: "userProfile.nav.profile",
6612
5784
  email: "userProfile.nav.email",
@@ -6628,13 +5800,14 @@ function UserProfile(props = {}) {
6628
5800
  section,
6629
5801
  defaultSection,
6630
5802
  onSectionChange,
6631
- onDeleted
5803
+ onDeleted,
5804
+ showBranding = true
6632
5805
  } = props;
6633
5806
  const mode = props.mode ?? "page";
6634
5807
  const t = useT();
6635
5808
  const { user, isLoaded, isSignedIn } = useUser();
6636
5809
  const { config } = usePublicConfig();
6637
- const [internalSection, setInternalSection] = React39.useState(() => initialSection(defaultSection));
5810
+ const [internalSection, setInternalSection] = React40.useState(() => initialSection(defaultSection));
6638
5811
  const active = section ?? internalSection;
6639
5812
  const capabilities = resolveProjectCapabilities(config);
6640
5813
  const passwordEnabled = config !== null && capabilities.passwordSignIn;
@@ -6643,7 +5816,7 @@ function UserProfile(props = {}) {
6643
5816
  const recoveryEnabled = capabilities.backupCodes && user?.twoFactorEnabled === true;
6644
5817
  const deletionEnabled = capabilities.accountDeletion;
6645
5818
  const socialEnabled = (config?.socialProviders?.length ?? 0) > 0;
6646
- const sections = React39.useMemo(
5819
+ const sections = React40.useMemo(
6647
5820
  () => userProfileSectionsFor({
6648
5821
  password: passwordEnabled,
6649
5822
  passkeys: passkeysEnabled,
@@ -6654,7 +5827,7 @@ function UserProfile(props = {}) {
6654
5827
  }),
6655
5828
  [deletionEnabled, mfaEnabled, passkeysEnabled, passwordEnabled, recoveryEnabled, socialEnabled]
6656
5829
  );
6657
- React39.useEffect(() => {
5830
+ React40.useEffect(() => {
6658
5831
  if (section || mode !== "page") return;
6659
5832
  const onHashChange = () => {
6660
5833
  const next = userProfileSectionFromHash(window.location.hash);
@@ -6671,11 +5844,11 @@ function UserProfile(props = {}) {
6671
5844
  window.history.replaceState(null, "", userProfileSectionHash(next));
6672
5845
  }
6673
5846
  };
6674
- const content = !isLoaded ? /* @__PURE__ */ jsxs40("div", { className: "ba-profile-loading", "aria-busy": "true", children: [
6675
- /* @__PURE__ */ jsx46("div", { className: "ba-skeleton" }),
6676
- /* @__PURE__ */ jsx46("div", { className: "ba-skeleton" }),
6677
- /* @__PURE__ */ jsx46("div", { className: "ba-skeleton" })
6678
- ] }) : !isSignedIn || !user ? /* @__PURE__ */ jsx46("p", { className: "ba-muted", children: t("userProfile.signedOut") }) : /* @__PURE__ */ jsx46(
5847
+ const content = !isLoaded ? /* @__PURE__ */ jsxs41("div", { className: "ba-profile-loading", "aria-busy": "true", children: [
5848
+ /* @__PURE__ */ jsx47("div", { className: "ba-skeleton" }),
5849
+ /* @__PURE__ */ jsx47("div", { className: "ba-skeleton" }),
5850
+ /* @__PURE__ */ jsx47("div", { className: "ba-skeleton" })
5851
+ ] }) : !isSignedIn || !user ? /* @__PURE__ */ jsx47("p", { className: "ba-muted", children: t("userProfile.signedOut") }) : /* @__PURE__ */ jsx47(
6679
5852
  UserProfileBody,
6680
5853
  {
6681
5854
  active: visibleActive,
@@ -6687,15 +5860,23 @@ function UserProfile(props = {}) {
6687
5860
  user.id
6688
5861
  );
6689
5862
  if (props.mode === "modal") {
6690
- return /* @__PURE__ */ jsx46(UserProfileModal, { onClose: props.onClose, children: content });
5863
+ return /* @__PURE__ */ jsx47(
5864
+ UserProfileModal,
5865
+ {
5866
+ onClose: props.onClose,
5867
+ branding: showBranding ? /* @__PURE__ */ jsx47(AuthOwlBranding, {}) : null,
5868
+ children: content
5869
+ }
5870
+ );
6691
5871
  }
6692
- return /* @__PURE__ */ jsxs40("article", { className: "ba-profile ba-profile-page", "data-testid": "user-profile", children: [
6693
- /* @__PURE__ */ jsxs40("header", { className: "ba-profile-heading", children: [
6694
- /* @__PURE__ */ jsx46("h1", { children: t("userProfile.title") }),
6695
- /* @__PURE__ */ jsx46("p", { children: t("userProfile.description") })
5872
+ return /* @__PURE__ */ jsxs41("article", { className: "ba-profile ba-profile-page", "data-testid": "user-profile", children: [
5873
+ /* @__PURE__ */ jsxs41("header", { className: "ba-profile-heading", children: [
5874
+ showBranding ? /* @__PURE__ */ jsx47(AuthOwlBranding, {}) : null,
5875
+ /* @__PURE__ */ jsx47("h1", { children: t("userProfile.title") }),
5876
+ /* @__PURE__ */ jsx47("p", { children: t("userProfile.description") })
6696
5877
  ] }),
6697
5878
  content,
6698
- /* @__PURE__ */ jsx46("footer", { className: "ba-profile-modal-footer", children: /* @__PURE__ */ jsx46(AuthOwlBadge, {}) })
5879
+ /* @__PURE__ */ jsx47("footer", { className: "ba-profile-modal-footer", children: /* @__PURE__ */ jsx47(AuthOwlBadge, {}) })
6699
5880
  ] });
6700
5881
  }
6701
5882
  function UserProfileBody({
@@ -6706,8 +5887,8 @@ function UserProfileBody({
6706
5887
  capabilities
6707
5888
  }) {
6708
5889
  const t = useT();
6709
- return /* @__PURE__ */ jsxs40("div", { className: "ba-profile-layout", children: [
6710
- /* @__PURE__ */ jsx46("nav", { className: "ba-profile-nav", "aria-label": t("userProfile.nav.aria"), children: sections.map((item) => /* @__PURE__ */ jsx46(
5890
+ return /* @__PURE__ */ jsxs41("div", { className: "ba-profile-layout", children: [
5891
+ /* @__PURE__ */ jsx47("nav", { className: "ba-profile-nav", "aria-label": t("userProfile.nav.aria"), children: sections.map((item) => /* @__PURE__ */ jsx47(
6711
5892
  "button",
6712
5893
  {
6713
5894
  type: "button",
@@ -6718,8 +5899,8 @@ function UserProfileBody({
6718
5899
  },
6719
5900
  item
6720
5901
  )) }),
6721
- /* @__PURE__ */ jsxs40("div", { className: "ba-profile-content", "data-section": active, children: [
6722
- active === "profile" && /* @__PURE__ */ jsx46(
5902
+ /* @__PURE__ */ jsxs41("div", { className: "ba-profile-content", "data-section": active, children: [
5903
+ active === "profile" && /* @__PURE__ */ jsx47(
6723
5904
  ProfileSection,
6724
5905
  {
6725
5906
  firstLastName: capabilities.firstLastName,
@@ -6727,43 +5908,43 @@ function UserProfileBody({
6727
5908
  legacyNameField: capabilities.legacyNameField
6728
5909
  }
6729
5910
  ),
6730
- active === "email" && /* @__PURE__ */ jsx46(EmailSection, { allowChange: capabilities.emailChange }),
6731
- active === "password" && /* @__PURE__ */ jsx46(PasswordSection, {}),
6732
- active === "social" && /* @__PURE__ */ jsx46(SocialSection, {}),
6733
- active === "sessions" && /* @__PURE__ */ jsx46(SessionsSection, {}),
6734
- active === "passkeys" && /* @__PURE__ */ jsx46(PasskeysSection, { allowAdd: capabilities.passkeyAdd }),
6735
- active === "mfa" && /* @__PURE__ */ jsx46(MfaSection, {}),
6736
- active === "recovery" && /* @__PURE__ */ jsx46(RecoverySection, {}),
6737
- active === "danger" && /* @__PURE__ */ jsx46(DeleteAccountSection, { onDeleted })
5911
+ active === "email" && /* @__PURE__ */ jsx47(EmailSection, { allowChange: capabilities.emailChange }),
5912
+ active === "password" && /* @__PURE__ */ jsx47(PasswordSection, {}),
5913
+ active === "social" && /* @__PURE__ */ jsx47(SocialSection, {}),
5914
+ active === "sessions" && /* @__PURE__ */ jsx47(SessionsSection, {}),
5915
+ active === "passkeys" && /* @__PURE__ */ jsx47(PasskeysSection, { allowAdd: capabilities.passkeyAdd }),
5916
+ active === "mfa" && /* @__PURE__ */ jsx47(MfaSection, {}),
5917
+ active === "recovery" && /* @__PURE__ */ jsx47(RecoverySection, {}),
5918
+ active === "danger" && /* @__PURE__ */ jsx47(DeleteAccountSection, { onDeleted })
6738
5919
  ] })
6739
5920
  ] });
6740
5921
  }
6741
5922
 
6742
5923
  // src/components/UserButton.tsx
6743
- import { jsx as jsx47, jsxs as jsxs41 } from "react/jsx-runtime";
5924
+ import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
6744
5925
  function UserButton() {
6745
5926
  const t = useT();
6746
5927
  const { user, isLoaded } = useUser();
6747
5928
  const { signOut } = useSignOut();
6748
- const [open, setOpen] = React40.useState(false);
6749
- const [profileOpen, setProfileOpen] = React40.useState(false);
6750
- const triggerRef = React40.useRef(null);
5929
+ const [open, setOpen] = React41.useState(false);
5930
+ const [profileOpen, setProfileOpen] = React41.useState(false);
5931
+ const triggerRef = React41.useRef(null);
6751
5932
  if (!isLoaded || !user) return null;
6752
5933
  const identity = user.email ?? user.phoneNumber ?? user.name ?? "?";
6753
- return /* @__PURE__ */ jsxs41("div", { className: "ba-user-button", "data-testid": "user-button", children: [
6754
- /* @__PURE__ */ jsx47(
5934
+ return /* @__PURE__ */ jsxs42("div", { className: "ba-user-button", "data-testid": "user-button", children: [
5935
+ /* @__PURE__ */ jsx48(
6755
5936
  "button",
6756
5937
  {
6757
5938
  ref: triggerRef,
6758
5939
  className: "ba-user-button-trigger",
6759
5940
  "aria-label": t("userButton.openMenuAria"),
6760
5941
  onClick: () => setOpen((v) => !v),
6761
- children: user.image ? /* @__PURE__ */ jsx47("img", { className: "ba-avatar", src: user.image, alt: "" }) : /* @__PURE__ */ jsx47("span", { className: "ba-avatar ba-avatar-fallback", children: identity[0]?.toUpperCase() })
5942
+ children: user.image ? /* @__PURE__ */ jsx48("img", { className: "ba-avatar", src: user.image, alt: "" }) : /* @__PURE__ */ jsx48("span", { className: "ba-avatar ba-avatar-fallback", children: identity[0]?.toUpperCase() })
6762
5943
  }
6763
5944
  ),
6764
- open && /* @__PURE__ */ jsxs41("div", { className: "ba-menu", children: [
6765
- /* @__PURE__ */ jsx47("p", { className: "ba-menu-label", children: identity }),
6766
- /* @__PURE__ */ jsx47(
5945
+ open && /* @__PURE__ */ jsxs42("div", { className: "ba-menu", children: [
5946
+ /* @__PURE__ */ jsx48("p", { className: "ba-menu-label", children: identity }),
5947
+ /* @__PURE__ */ jsx48(
6767
5948
  "button",
6768
5949
  {
6769
5950
  className: "ba-menu-item",
@@ -6774,10 +5955,10 @@ function UserButton() {
6774
5955
  children: t("userButton.manageAccount")
6775
5956
  }
6776
5957
  ),
6777
- /* @__PURE__ */ jsx47("button", { className: "ba-menu-item", onClick: () => signOut(), children: t("userButton.signOut") }),
6778
- /* @__PURE__ */ jsx47("div", { className: "ba-menu-badge", children: /* @__PURE__ */ jsx47(AuthOwlBadge, {}) })
5958
+ /* @__PURE__ */ jsx48("button", { className: "ba-menu-item", onClick: () => signOut(), children: t("userButton.signOut") }),
5959
+ /* @__PURE__ */ jsx48("div", { className: "ba-menu-badge", children: /* @__PURE__ */ jsx48(AuthOwlBadge, {}) })
6779
5960
  ] }),
6780
- profileOpen && /* @__PURE__ */ jsx47(
5961
+ profileOpen && /* @__PURE__ */ jsx48(
6781
5962
  UserProfile,
6782
5963
  {
6783
5964
  mode: "modal",
@@ -6793,10 +5974,10 @@ function UserButton() {
6793
5974
  }
6794
5975
 
6795
5976
  // src/components/OrganizationSwitcher.tsx
6796
- import * as React49 from "react";
5977
+ import * as React50 from "react";
6797
5978
 
6798
5979
  // src/components/CreateOrganization.tsx
6799
- import * as React41 from "react";
5980
+ import * as React42 from "react";
6800
5981
 
6801
5982
  // src/components/organization/model.ts
6802
5983
  function organizationSlugFromName(name) {
@@ -6813,22 +5994,22 @@ function canManageOrganization(member) {
6813
5994
  }
6814
5995
 
6815
5996
  // src/components/CreateOrganization.tsx
6816
- import { jsx as jsx48, jsxs as jsxs42 } from "react/jsx-runtime";
5997
+ import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
6817
5998
  function CreateOrganization({ onCreated, title } = {}) {
6818
5999
  const t = useT();
6819
6000
  const { config, isLoading: configLoading } = usePublicConfig();
6820
6001
  const { isLoaded, isSignedIn } = useUser();
6821
6002
  const api = useAuthClient().organization;
6822
6003
  const { pending, error, run } = useSubmitAction();
6823
- const [name, setName] = React41.useState("");
6824
- const [slug, setSlug] = React41.useState("");
6825
- const [logo, setLogo] = React41.useState("");
6826
- const [slugTouched, setSlugTouched] = React41.useState(false);
6004
+ const [name, setName] = React42.useState("");
6005
+ const [slug, setSlug] = React42.useState("");
6006
+ const [logo, setLogo] = React42.useState("");
6007
+ const [slugTouched, setSlugTouched] = React42.useState(false);
6827
6008
  if (configLoading || !isLoaded) {
6828
- return /* @__PURE__ */ jsx48("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
6009
+ return /* @__PURE__ */ jsx49("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
6829
6010
  }
6830
6011
  if (config?.organizations !== true) return null;
6831
- if (!isSignedIn) return /* @__PURE__ */ jsx48("p", { className: "ba-muted", children: t("organization.signedOut") });
6012
+ if (!isSignedIn) return /* @__PURE__ */ jsx49("p", { className: "ba-muted", children: t("organization.signedOut") });
6832
6013
  const submit = (event) => {
6833
6014
  event.preventDefault();
6834
6015
  const normalizedName = name.trim();
@@ -6853,15 +6034,15 @@ function CreateOrganization({ onCreated, title } = {}) {
6853
6034
  }
6854
6035
  );
6855
6036
  };
6856
- return /* @__PURE__ */ jsxs42("section", { className: "ba-organization-create", children: [
6857
- title !== null && /* @__PURE__ */ jsxs42("header", { className: "ba-organization-section-header", children: [
6858
- /* @__PURE__ */ jsx48("h2", { className: "ba-title", children: title ?? t("organization.create.title") }),
6859
- /* @__PURE__ */ jsx48("p", { className: "ba-muted", children: t("organization.create.description") })
6037
+ return /* @__PURE__ */ jsxs43("section", { className: "ba-organization-create", children: [
6038
+ title !== null && /* @__PURE__ */ jsxs43("header", { className: "ba-organization-section-header", children: [
6039
+ /* @__PURE__ */ jsx49("h2", { className: "ba-title", children: title ?? t("organization.create.title") }),
6040
+ /* @__PURE__ */ jsx49("p", { className: "ba-muted", children: t("organization.create.description") })
6860
6041
  ] }),
6861
- /* @__PURE__ */ jsxs42("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
6862
- /* @__PURE__ */ jsxs42("label", { className: "ba-label", children: [
6042
+ /* @__PURE__ */ jsxs43("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
6043
+ /* @__PURE__ */ jsxs43("label", { className: "ba-label", children: [
6863
6044
  t("organization.create.name"),
6864
- /* @__PURE__ */ jsx48(
6045
+ /* @__PURE__ */ jsx49(
6865
6046
  "input",
6866
6047
  {
6867
6048
  className: "ba-input",
@@ -6876,9 +6057,9 @@ function CreateOrganization({ onCreated, title } = {}) {
6876
6057
  }
6877
6058
  )
6878
6059
  ] }),
6879
- /* @__PURE__ */ jsxs42("label", { className: "ba-label", children: [
6060
+ /* @__PURE__ */ jsxs43("label", { className: "ba-label", children: [
6880
6061
  t("organization.create.slug"),
6881
- /* @__PURE__ */ jsx48(
6062
+ /* @__PURE__ */ jsx49(
6882
6063
  "input",
6883
6064
  {
6884
6065
  className: "ba-input",
@@ -6893,9 +6074,9 @@ function CreateOrganization({ onCreated, title } = {}) {
6893
6074
  }
6894
6075
  )
6895
6076
  ] }),
6896
- /* @__PURE__ */ jsxs42("label", { className: "ba-label", children: [
6077
+ /* @__PURE__ */ jsxs43("label", { className: "ba-label", children: [
6897
6078
  t("organization.create.logo"),
6898
- /* @__PURE__ */ jsx48(
6079
+ /* @__PURE__ */ jsx49(
6899
6080
  "input",
6900
6081
  {
6901
6082
  className: "ba-input",
@@ -6907,15 +6088,15 @@ function CreateOrganization({ onCreated, title } = {}) {
6907
6088
  }
6908
6089
  )
6909
6090
  ] }),
6910
- /* @__PURE__ */ jsx48(FormError, { children: error }),
6911
- /* @__PURE__ */ jsx48(
6091
+ /* @__PURE__ */ jsx49(FormError, { children: error }),
6092
+ /* @__PURE__ */ jsx49(
6912
6093
  "button",
6913
6094
  {
6914
6095
  className: "ba-button ba-profile-submit",
6915
6096
  type: "submit",
6916
6097
  disabled: pending || !name.trim() || !slug.trim(),
6917
6098
  "aria-busy": pending || void 0,
6918
- children: /* @__PURE__ */ jsx48(Busy, { busy: pending, label: t("common.working"), children: t("organization.create.submit") })
6099
+ children: /* @__PURE__ */ jsx49(Busy, { busy: pending, label: t("common.working"), children: t("organization.create.submit") })
6919
6100
  }
6920
6101
  )
6921
6102
  ] })
@@ -6923,8 +6104,8 @@ function CreateOrganization({ onCreated, title } = {}) {
6923
6104
  }
6924
6105
 
6925
6106
  // src/components/organization/OrganizationModal.tsx
6926
- import * as React42 from "react";
6927
- import { jsx as jsx49, jsxs as jsxs43 } from "react/jsx-runtime";
6107
+ import * as React43 from "react";
6108
+ import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
6928
6109
  function OrganizationModal({
6929
6110
  title,
6930
6111
  onClose,
@@ -6932,8 +6113,8 @@ function OrganizationModal({
6932
6113
  children
6933
6114
  }) {
6934
6115
  const t = useT();
6935
- const titleId = React42.useId();
6936
- return /* @__PURE__ */ jsxs43(
6116
+ const titleId = React43.useId();
6117
+ return /* @__PURE__ */ jsxs44(
6937
6118
  ModalSurface,
6938
6119
  {
6939
6120
  overlayClassName: "ba-organization-overlay",
@@ -6942,9 +6123,9 @@ function OrganizationModal({
6942
6123
  returnFocusRef,
6943
6124
  onClose,
6944
6125
  children: [
6945
- /* @__PURE__ */ jsxs43("header", { className: "ba-organization-modal-header", children: [
6946
- /* @__PURE__ */ jsx49("h2", { id: titleId, className: "ba-title", children: title }),
6947
- /* @__PURE__ */ jsx49(
6126
+ /* @__PURE__ */ jsxs44("header", { className: "ba-organization-modal-header", children: [
6127
+ /* @__PURE__ */ jsx50("h2", { id: titleId, className: "ba-title", children: title }),
6128
+ /* @__PURE__ */ jsx50(
6948
6129
  "button",
6949
6130
  {
6950
6131
  className: "ba-profile-close",
@@ -6956,26 +6137,26 @@ function OrganizationModal({
6956
6137
  }
6957
6138
  )
6958
6139
  ] }),
6959
- /* @__PURE__ */ jsx49("div", { className: "ba-organization-modal-body", children })
6140
+ /* @__PURE__ */ jsx50("div", { className: "ba-organization-modal-body", children })
6960
6141
  ]
6961
6142
  }
6962
6143
  );
6963
6144
  }
6964
6145
 
6965
6146
  // src/components/organization/use-organizations-resource.ts
6966
- import * as React43 from "react";
6147
+ import * as React44 from "react";
6967
6148
  function useOrganizationsResource(enabled = true) {
6968
6149
  const api = useAuthClient().organization;
6969
- const apiRef = React43.useRef(api);
6150
+ const apiRef = React44.useRef(api);
6970
6151
  apiRef.current = api;
6971
6152
  const { user, isLoaded, isSignedIn } = useUser();
6972
6153
  const t = useT();
6973
6154
  const toServerError = useServerError();
6974
- const [organizations, setOrganizations] = React43.useState(null);
6975
- const [error, setError] = React43.useState(null);
6976
- const requestRef = React43.useRef(0);
6155
+ const [organizations, setOrganizations] = React44.useState(null);
6156
+ const [error, setError] = React44.useState(null);
6157
+ const requestRef = React44.useRef(0);
6977
6158
  const identity = user?.id ?? null;
6978
- const refresh = React43.useCallback(async () => {
6159
+ const refresh = React44.useCallback(async () => {
6979
6160
  const token = ++requestRef.current;
6980
6161
  if (!enabled || !identity || !isSignedIn) {
6981
6162
  setOrganizations([]);
@@ -6995,7 +6176,7 @@ function useOrganizationsResource(enabled = true) {
6995
6176
  if (token === requestRef.current) setError(t("organization.error.load"));
6996
6177
  }
6997
6178
  }, [enabled, identity, isSignedIn, t, toServerError]);
6998
- React43.useEffect(() => {
6179
+ React44.useEffect(() => {
6999
6180
  setOrganizations(null);
7000
6181
  setError(null);
7001
6182
  if (!isLoaded) return;
@@ -7013,11 +6194,11 @@ function useOrganizationsResource(enabled = true) {
7013
6194
  }
7014
6195
 
7015
6196
  // src/components/OrganizationProfile.tsx
7016
- import * as React48 from "react";
6197
+ import * as React49 from "react";
7017
6198
 
7018
6199
  // src/components/organization/DangerSection.tsx
7019
- import * as React44 from "react";
7020
- import { jsx as jsx50, jsxs as jsxs44 } from "react/jsx-runtime";
6200
+ import * as React45 from "react";
6201
+ import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
7021
6202
  function DangerSection({
7022
6203
  organization,
7023
6204
  membership,
@@ -7028,7 +6209,7 @@ function DangerSection({
7028
6209
  const api = useAuthClient().organization;
7029
6210
  const session = useSession();
7030
6211
  const { pending, error, run } = useSubmitAction();
7031
- const [confirmation, setConfirmation] = React44.useState("");
6212
+ const [confirmation, setConfirmation] = React45.useState("");
7032
6213
  const isOwner = hasOrganizationRole(membership, "owner");
7033
6214
  const confirmed = confirmation.trim().toLowerCase() === organization.slug.toLowerCase();
7034
6215
  const leave = () => {
@@ -7058,43 +6239,43 @@ function DangerSection({
7058
6239
  }
7059
6240
  );
7060
6241
  };
7061
- return /* @__PURE__ */ jsxs44("section", { className: "ba-organization-section ba-organization-danger", children: [
7062
- /* @__PURE__ */ jsxs44("header", { className: "ba-organization-section-header", children: [
7063
- /* @__PURE__ */ jsx50("h3", { className: "ba-title", children: t("organization.profile.danger.title") }),
7064
- /* @__PURE__ */ jsx50("p", { className: "ba-muted", children: t("organization.profile.danger.description") })
6242
+ return /* @__PURE__ */ jsxs45("section", { className: "ba-organization-section ba-organization-danger", children: [
6243
+ /* @__PURE__ */ jsxs45("header", { className: "ba-organization-section-header", children: [
6244
+ /* @__PURE__ */ jsx51("h3", { className: "ba-title", children: t("organization.profile.danger.title") }),
6245
+ /* @__PURE__ */ jsx51("p", { className: "ba-muted", children: t("organization.profile.danger.description") })
7065
6246
  ] }),
7066
- /* @__PURE__ */ jsxs44("div", { className: "ba-organization-danger-action", children: [
7067
- /* @__PURE__ */ jsx50("strong", { children: t("organization.profile.danger.leaveTitle") }),
7068
- /* @__PURE__ */ jsx50("p", { className: "ba-muted", children: isOwner ? t("organization.profile.danger.ownerLeaveHint") : t("organization.profile.danger.leaveHint") }),
7069
- /* @__PURE__ */ jsx50("button", { className: "ba-button ba-button-secondary", type: "button", disabled: pending, onClick: leave, children: t("organization.profile.danger.leave") })
6247
+ /* @__PURE__ */ jsxs45("div", { className: "ba-organization-danger-action", children: [
6248
+ /* @__PURE__ */ jsx51("strong", { children: t("organization.profile.danger.leaveTitle") }),
6249
+ /* @__PURE__ */ jsx51("p", { className: "ba-muted", children: isOwner ? t("organization.profile.danger.ownerLeaveHint") : t("organization.profile.danger.leaveHint") }),
6250
+ /* @__PURE__ */ jsx51("button", { className: "ba-button ba-button-secondary", type: "button", disabled: pending, onClick: leave, children: t("organization.profile.danger.leave") })
7070
6251
  ] }),
7071
- isOwner && /* @__PURE__ */ jsxs44("form", { method: "post", className: "ba-organization-danger-action ba-organization-delete", onSubmit: remove, children: [
7072
- /* @__PURE__ */ jsx50("strong", { children: t("organization.profile.danger.deleteTitle") }),
7073
- /* @__PURE__ */ jsx50("p", { className: "ba-muted", children: t("organization.profile.danger.deleteHint") }),
7074
- /* @__PURE__ */ jsxs44("label", { className: "ba-label", children: [
6252
+ isOwner && /* @__PURE__ */ jsxs45("form", { method: "post", className: "ba-organization-danger-action ba-organization-delete", onSubmit: remove, children: [
6253
+ /* @__PURE__ */ jsx51("strong", { children: t("organization.profile.danger.deleteTitle") }),
6254
+ /* @__PURE__ */ jsx51("p", { className: "ba-muted", children: t("organization.profile.danger.deleteHint") }),
6255
+ /* @__PURE__ */ jsxs45("label", { className: "ba-label", children: [
7075
6256
  t("organization.profile.danger.deleteConfirm"),
7076
6257
  " ",
7077
- /* @__PURE__ */ jsx50(Bidi, { children: organization.slug }),
7078
- /* @__PURE__ */ jsx50("input", { className: "ba-input", dir: "ltr", value: confirmation, onChange: (event) => setConfirmation(event.target.value), autoComplete: "off", required: true })
6258
+ /* @__PURE__ */ jsx51(Bidi, { children: organization.slug }),
6259
+ /* @__PURE__ */ jsx51("input", { className: "ba-input", dir: "ltr", value: confirmation, onChange: (event) => setConfirmation(event.target.value), autoComplete: "off", required: true })
7079
6260
  ] }),
7080
- /* @__PURE__ */ jsx50(
6261
+ /* @__PURE__ */ jsx51(
7081
6262
  "button",
7082
6263
  {
7083
6264
  className: "ba-button ba-danger-button",
7084
6265
  type: "submit",
7085
6266
  disabled: pending || !confirmed,
7086
6267
  "aria-busy": pending || void 0,
7087
- children: /* @__PURE__ */ jsx50(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.danger.delete") })
6268
+ children: /* @__PURE__ */ jsx51(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.danger.delete") })
7088
6269
  }
7089
6270
  )
7090
6271
  ] }),
7091
- /* @__PURE__ */ jsx50(FormError, { children: error })
6272
+ /* @__PURE__ */ jsx51(FormError, { children: error })
7092
6273
  ] });
7093
6274
  }
7094
6275
 
7095
6276
  // src/components/organization/GeneralSection.tsx
7096
- import * as React45 from "react";
7097
- import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
6277
+ import * as React46 from "react";
6278
+ import { jsx as jsx52, jsxs as jsxs46 } from "react/jsx-runtime";
7098
6279
  function GeneralSection({
7099
6280
  organization,
7100
6281
  canManage,
@@ -7103,25 +6284,25 @@ function GeneralSection({
7103
6284
  const t = useT();
7104
6285
  const api = useAuthClient().organization;
7105
6286
  const { pending, error, run } = useSubmitAction();
7106
- const [name, setName] = React45.useState(organization.name);
7107
- const [slug, setSlug] = React45.useState(organization.slug);
7108
- const [logo, setLogo] = React45.useState(organization.logo ?? "");
7109
- React45.useEffect(() => {
6287
+ const [name, setName] = React46.useState(organization.name);
6288
+ const [slug, setSlug] = React46.useState(organization.slug);
6289
+ const [logo, setLogo] = React46.useState(organization.logo ?? "");
6290
+ React46.useEffect(() => {
7110
6291
  setName(organization.name);
7111
6292
  setSlug(organization.slug);
7112
6293
  setLogo(organization.logo ?? "");
7113
6294
  }, [organization.id, organization.logo, organization.name, organization.slug]);
7114
6295
  if (!canManage) {
7115
- return /* @__PURE__ */ jsxs45("section", { className: "ba-organization-section", children: [
7116
- /* @__PURE__ */ jsx51("p", { className: "ba-muted", children: t("organization.profile.general.readOnly") }),
7117
- /* @__PURE__ */ jsxs45("dl", { className: "ba-organization-facts", children: [
7118
- /* @__PURE__ */ jsxs45("div", { children: [
7119
- /* @__PURE__ */ jsx51("dt", { children: t("organization.create.name") }),
7120
- /* @__PURE__ */ jsx51("dd", { children: organization.name })
6296
+ return /* @__PURE__ */ jsxs46("section", { className: "ba-organization-section", children: [
6297
+ /* @__PURE__ */ jsx52("p", { className: "ba-muted", children: t("organization.profile.general.readOnly") }),
6298
+ /* @__PURE__ */ jsxs46("dl", { className: "ba-organization-facts", children: [
6299
+ /* @__PURE__ */ jsxs46("div", { children: [
6300
+ /* @__PURE__ */ jsx52("dt", { children: t("organization.create.name") }),
6301
+ /* @__PURE__ */ jsx52("dd", { children: organization.name })
7121
6302
  ] }),
7122
- /* @__PURE__ */ jsxs45("div", { children: [
7123
- /* @__PURE__ */ jsx51("dt", { children: t("organization.create.slug") }),
7124
- /* @__PURE__ */ jsx51("dd", { children: /* @__PURE__ */ jsx51(Bidi, { children: organization.slug }) })
6303
+ /* @__PURE__ */ jsxs46("div", { children: [
6304
+ /* @__PURE__ */ jsx52("dt", { children: t("organization.create.slug") }),
6305
+ /* @__PURE__ */ jsx52("dd", { children: /* @__PURE__ */ jsx52(Bidi, { children: organization.slug }) })
7125
6306
  ] })
7126
6307
  ] })
7127
6308
  ] });
@@ -7139,19 +6320,19 @@ function GeneralSection({
7139
6320
  }
7140
6321
  );
7141
6322
  };
7142
- return /* @__PURE__ */ jsxs45("section", { className: "ba-organization-section", children: [
7143
- /* @__PURE__ */ jsxs45("header", { className: "ba-organization-section-header", children: [
7144
- /* @__PURE__ */ jsx51("h3", { className: "ba-title", children: t("organization.profile.general.title") }),
7145
- /* @__PURE__ */ jsx51("p", { className: "ba-muted", children: t("organization.profile.general.description") })
6323
+ return /* @__PURE__ */ jsxs46("section", { className: "ba-organization-section", children: [
6324
+ /* @__PURE__ */ jsxs46("header", { className: "ba-organization-section-header", children: [
6325
+ /* @__PURE__ */ jsx52("h3", { className: "ba-title", children: t("organization.profile.general.title") }),
6326
+ /* @__PURE__ */ jsx52("p", { className: "ba-muted", children: t("organization.profile.general.description") })
7146
6327
  ] }),
7147
- /* @__PURE__ */ jsxs45("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
7148
- /* @__PURE__ */ jsxs45("label", { className: "ba-label", children: [
6328
+ /* @__PURE__ */ jsxs46("form", { method: "post", className: "ba-fields", onSubmit: submit, children: [
6329
+ /* @__PURE__ */ jsxs46("label", { className: "ba-label", children: [
7149
6330
  t("organization.create.name"),
7150
- /* @__PURE__ */ jsx51("input", { className: "ba-input", value: name, onChange: (event) => setName(event.target.value), required: true })
6331
+ /* @__PURE__ */ jsx52("input", { className: "ba-input", value: name, onChange: (event) => setName(event.target.value), required: true })
7151
6332
  ] }),
7152
- /* @__PURE__ */ jsxs45("label", { className: "ba-label", children: [
6333
+ /* @__PURE__ */ jsxs46("label", { className: "ba-label", children: [
7153
6334
  t("organization.create.slug"),
7154
- /* @__PURE__ */ jsx51(
6335
+ /* @__PURE__ */ jsx52(
7155
6336
  "input",
7156
6337
  {
7157
6338
  className: "ba-input",
@@ -7163,19 +6344,19 @@ function GeneralSection({
7163
6344
  }
7164
6345
  )
7165
6346
  ] }),
7166
- /* @__PURE__ */ jsxs45("label", { className: "ba-label", children: [
6347
+ /* @__PURE__ */ jsxs46("label", { className: "ba-label", children: [
7167
6348
  t("organization.create.logo"),
7168
- /* @__PURE__ */ jsx51("input", { className: "ba-input", type: "url", dir: "ltr", value: logo, onChange: (event) => setLogo(event.target.value), placeholder: "https://" })
6349
+ /* @__PURE__ */ jsx52("input", { className: "ba-input", type: "url", dir: "ltr", value: logo, onChange: (event) => setLogo(event.target.value), placeholder: "https://" })
7169
6350
  ] }),
7170
- /* @__PURE__ */ jsx51(FormError, { children: error }),
7171
- /* @__PURE__ */ jsx51(
6351
+ /* @__PURE__ */ jsx52(FormError, { children: error }),
6352
+ /* @__PURE__ */ jsx52(
7172
6353
  "button",
7173
6354
  {
7174
6355
  className: "ba-button ba-profile-submit",
7175
6356
  type: "submit",
7176
6357
  disabled: pending || !name.trim() || !slug.trim(),
7177
6358
  "aria-busy": pending || void 0,
7178
- children: /* @__PURE__ */ jsx51(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.general.save") })
6359
+ children: /* @__PURE__ */ jsx52(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.general.save") })
7179
6360
  }
7180
6361
  )
7181
6362
  ] })
@@ -7183,7 +6364,7 @@ function GeneralSection({
7183
6364
  }
7184
6365
 
7185
6366
  // src/components/organization/InvitationsSection.tsx
7186
- import * as React47 from "react";
6367
+ import * as React48 from "react";
7187
6368
 
7188
6369
  // src/components/organization/role-label.ts
7189
6370
  function organizationRoleLabel(role, t) {
@@ -7195,15 +6376,15 @@ function organizationRoleLabel(role, t) {
7195
6376
  }
7196
6377
 
7197
6378
  // src/components/organization/use-organization-roles.ts
7198
- import * as React46 from "react";
6379
+ import * as React47 from "react";
7199
6380
  var BUILTIN_ROLES = ["owner", "admin", "member"];
7200
6381
  function useOrganizationRoles(organizationId) {
7201
6382
  const api = useAuthClient().organization;
7202
- const apiRef = React46.useRef(api);
6383
+ const apiRef = React47.useRef(api);
7203
6384
  apiRef.current = api;
7204
- const [dynamic, setDynamic] = React46.useState([]);
7205
- const requestRef = React46.useRef(0);
7206
- React46.useEffect(() => {
6385
+ const [dynamic, setDynamic] = React47.useState([]);
6386
+ const requestRef = React47.useRef(0);
6387
+ React47.useEffect(() => {
7207
6388
  const token = ++requestRef.current;
7208
6389
  setDynamic([]);
7209
6390
  if (!organizationId) return;
@@ -7219,7 +6400,7 @@ function useOrganizationRoles(organizationId) {
7219
6400
  requestRef.current += 1;
7220
6401
  };
7221
6402
  }, [organizationId]);
7222
- const roles = React46.useMemo(() => {
6403
+ const roles = React47.useMemo(() => {
7223
6404
  const seen = /* @__PURE__ */ new Set();
7224
6405
  const out = [];
7225
6406
  for (const candidate of [...BUILTIN_ROLES, ...dynamic]) {
@@ -7234,7 +6415,7 @@ function useOrganizationRoles(organizationId) {
7234
6415
  }
7235
6416
 
7236
6417
  // src/components/organization/InvitationsSection.tsx
7237
- import { jsx as jsx52, jsxs as jsxs46 } from "react/jsx-runtime";
6418
+ import { jsx as jsx53, jsxs as jsxs47 } from "react/jsx-runtime";
7238
6419
  function InvitationsSection({
7239
6420
  organization,
7240
6421
  onChanged
@@ -7243,8 +6424,8 @@ function InvitationsSection({
7243
6424
  const api = useAuthClient().organization;
7244
6425
  const { pending, error, run } = useSubmitAction();
7245
6426
  const { roles } = useOrganizationRoles(organization.id);
7246
- const [email, setEmail] = React47.useState("");
7247
- const [role, setRole] = React47.useState("member");
6427
+ const [email, setEmail] = React48.useState("");
6428
+ const [role, setRole] = React48.useState("member");
7248
6429
  const invitations = organization.invitations.filter((invitation) => invitation.status === "pending");
7249
6430
  const invite = (event) => {
7250
6431
  event.preventDefault();
@@ -7266,44 +6447,44 @@ function InvitationsSection({
7266
6447
  { failure: t("organization.profile.invitations.cancelError"), onSuccess: onChanged }
7267
6448
  );
7268
6449
  };
7269
- return /* @__PURE__ */ jsxs46("section", { className: "ba-organization-section", children: [
7270
- /* @__PURE__ */ jsxs46("header", { className: "ba-organization-section-header", children: [
7271
- /* @__PURE__ */ jsx52("h3", { className: "ba-title", children: t("organization.profile.invitations.title") }),
7272
- /* @__PURE__ */ jsx52("p", { className: "ba-muted", children: t("organization.profile.invitations.description") })
6450
+ return /* @__PURE__ */ jsxs47("section", { className: "ba-organization-section", children: [
6451
+ /* @__PURE__ */ jsxs47("header", { className: "ba-organization-section-header", children: [
6452
+ /* @__PURE__ */ jsx53("h3", { className: "ba-title", children: t("organization.profile.invitations.title") }),
6453
+ /* @__PURE__ */ jsx53("p", { className: "ba-muted", children: t("organization.profile.invitations.description") })
7273
6454
  ] }),
7274
- /* @__PURE__ */ jsxs46("form", { method: "post", className: "ba-organization-invite-form", onSubmit: invite, children: [
7275
- /* @__PURE__ */ jsxs46("label", { className: "ba-label", children: [
6455
+ /* @__PURE__ */ jsxs47("form", { method: "post", className: "ba-organization-invite-form", onSubmit: invite, children: [
6456
+ /* @__PURE__ */ jsxs47("label", { className: "ba-label", children: [
7276
6457
  t("organization.profile.invitations.email"),
7277
- /* @__PURE__ */ jsx52("input", { className: "ba-input", type: "email", dir: "ltr", value: email, onChange: (event) => setEmail(event.target.value), required: true })
6458
+ /* @__PURE__ */ jsx53("input", { className: "ba-input", type: "email", dir: "ltr", value: email, onChange: (event) => setEmail(event.target.value), required: true })
7278
6459
  ] }),
7279
- /* @__PURE__ */ jsxs46("label", { className: "ba-label", children: [
6460
+ /* @__PURE__ */ jsxs47("label", { className: "ba-label", children: [
7280
6461
  t("organization.profile.members.role"),
7281
- /* @__PURE__ */ jsx52("select", { className: "ba-input", value: role, onChange: (event) => setRole(event.target.value), children: roles.map((option) => /* @__PURE__ */ jsx52("option", { value: option, children: organizationRoleLabel(option, t) }, option)) })
6462
+ /* @__PURE__ */ jsx53("select", { className: "ba-input", value: role, onChange: (event) => setRole(event.target.value), children: roles.map((option) => /* @__PURE__ */ jsx53("option", { value: option, children: organizationRoleLabel(option, t) }, option)) })
7282
6463
  ] }),
7283
- /* @__PURE__ */ jsx52(
6464
+ /* @__PURE__ */ jsx53(
7284
6465
  "button",
7285
6466
  {
7286
6467
  className: "ba-button",
7287
6468
  type: "submit",
7288
6469
  disabled: pending || !email.trim(),
7289
6470
  "aria-busy": pending || void 0,
7290
- children: /* @__PURE__ */ jsx52(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.invitations.invite") })
6471
+ children: /* @__PURE__ */ jsx53(Busy, { busy: pending, label: t("common.working"), children: t("organization.profile.invitations.invite") })
7291
6472
  }
7292
6473
  )
7293
6474
  ] }),
7294
- /* @__PURE__ */ jsx52(FormError, { children: error }),
7295
- invitations.length === 0 ? /* @__PURE__ */ jsx52("p", { className: "ba-muted", children: t("organization.profile.invitations.empty") }) : /* @__PURE__ */ jsx52("ul", { className: "ba-organization-list", children: invitations.map((invitation) => /* @__PURE__ */ jsxs46("li", { className: "ba-organization-invitation", children: [
7296
- /* @__PURE__ */ jsxs46("span", { children: [
7297
- /* @__PURE__ */ jsx52("strong", { children: /* @__PURE__ */ jsx52(Bidi, { children: invitation.email }) }),
7298
- /* @__PURE__ */ jsx52("small", { children: organizationRoleLabel(invitation.role, t) })
6475
+ /* @__PURE__ */ jsx53(FormError, { children: error }),
6476
+ invitations.length === 0 ? /* @__PURE__ */ jsx53("p", { className: "ba-muted", children: t("organization.profile.invitations.empty") }) : /* @__PURE__ */ jsx53("ul", { className: "ba-organization-list", children: invitations.map((invitation) => /* @__PURE__ */ jsxs47("li", { className: "ba-organization-invitation", children: [
6477
+ /* @__PURE__ */ jsxs47("span", { children: [
6478
+ /* @__PURE__ */ jsx53("strong", { children: /* @__PURE__ */ jsx53(Bidi, { children: invitation.email }) }),
6479
+ /* @__PURE__ */ jsx53("small", { children: organizationRoleLabel(invitation.role, t) })
7299
6480
  ] }),
7300
- /* @__PURE__ */ jsx52("button", { className: "ba-link-button ba-danger", type: "button", disabled: pending, onClick: () => cancel(invitation), children: t("organization.profile.invitations.cancel") })
6481
+ /* @__PURE__ */ jsx53("button", { className: "ba-link-button ba-danger", type: "button", disabled: pending, onClick: () => cancel(invitation), children: t("organization.profile.invitations.cancel") })
7301
6482
  ] }, invitation.id)) })
7302
6483
  ] });
7303
6484
  }
7304
6485
 
7305
6486
  // src/components/organization/MembersSection.tsx
7306
- import { jsx as jsx53, jsxs as jsxs47 } from "react/jsx-runtime";
6487
+ import { jsx as jsx54, jsxs as jsxs48 } from "react/jsx-runtime";
7307
6488
  function MembersSection({
7308
6489
  organization,
7309
6490
  userId,
@@ -7330,27 +6511,27 @@ function MembersSection({
7330
6511
  { failure: t("organization.profile.members.removeError"), onSuccess: onChanged }
7331
6512
  );
7332
6513
  };
7333
- return /* @__PURE__ */ jsxs47("section", { className: "ba-organization-section", children: [
7334
- /* @__PURE__ */ jsxs47("header", { className: "ba-organization-section-header", children: [
7335
- /* @__PURE__ */ jsx53("h3", { className: "ba-title", children: t("organization.profile.members.title") }),
7336
- /* @__PURE__ */ jsx53("p", { className: "ba-muted", children: t("organization.profile.members.description") })
6514
+ return /* @__PURE__ */ jsxs48("section", { className: "ba-organization-section", children: [
6515
+ /* @__PURE__ */ jsxs48("header", { className: "ba-organization-section-header", children: [
6516
+ /* @__PURE__ */ jsx54("h3", { className: "ba-title", children: t("organization.profile.members.title") }),
6517
+ /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: t("organization.profile.members.description") })
7337
6518
  ] }),
7338
- /* @__PURE__ */ jsx53(FormError, { children: error }),
7339
- /* @__PURE__ */ jsx53("ul", { className: "ba-organization-list", children: organization.members.map((member) => {
6519
+ /* @__PURE__ */ jsx54(FormError, { children: error }),
6520
+ /* @__PURE__ */ jsx54("ul", { className: "ba-organization-list", children: organization.members.map((member) => {
7340
6521
  const primaryRole = organizationRoles(member.role)[0] ?? member.role;
7341
6522
  const isCurrent = member.userId === userId;
7342
- return /* @__PURE__ */ jsxs47("li", { className: "ba-organization-member", children: [
7343
- /* @__PURE__ */ jsx53("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: member.user.name.trim().charAt(0).toUpperCase() || "?" }),
7344
- /* @__PURE__ */ jsxs47("span", { className: "ba-organization-member-copy", children: [
7345
- /* @__PURE__ */ jsxs47("strong", { children: [
6523
+ return /* @__PURE__ */ jsxs48("li", { className: "ba-organization-member", children: [
6524
+ /* @__PURE__ */ jsx54("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: member.user.name.trim().charAt(0).toUpperCase() || "?" }),
6525
+ /* @__PURE__ */ jsxs48("span", { className: "ba-organization-member-copy", children: [
6526
+ /* @__PURE__ */ jsxs48("strong", { children: [
7346
6527
  member.user.name,
7347
6528
  isCurrent ? ` ${t("organization.profile.members.you")}` : ""
7348
6529
  ] }),
7349
- /* @__PURE__ */ jsx53("small", { children: /* @__PURE__ */ jsx53(Bidi, { children: member.user.email }) })
6530
+ /* @__PURE__ */ jsx54("small", { children: /* @__PURE__ */ jsx54(Bidi, { children: member.user.email }) })
7350
6531
  ] }),
7351
- canManage && !isCurrent ? /* @__PURE__ */ jsxs47("span", { className: "ba-organization-member-actions", children: [
7352
- /* @__PURE__ */ jsx53("label", { className: "ba-sr-only", htmlFor: `organization-role-${member.id}`, children: t("organization.profile.members.role") }),
7353
- /* @__PURE__ */ jsx53(
6532
+ canManage && !isCurrent ? /* @__PURE__ */ jsxs48("span", { className: "ba-organization-member-actions", children: [
6533
+ /* @__PURE__ */ jsx54("label", { className: "ba-sr-only", htmlFor: `organization-role-${member.id}`, children: t("organization.profile.members.role") }),
6534
+ /* @__PURE__ */ jsx54(
7354
6535
  "select",
7355
6536
  {
7356
6537
  id: `organization-role-${member.id}`,
@@ -7358,18 +6539,18 @@ function MembersSection({
7358
6539
  value: primaryRole,
7359
6540
  disabled: pending,
7360
6541
  onChange: (event) => updateRole(member, event.target.value),
7361
- children: (roles.includes(primaryRole) ? roles : [primaryRole, ...roles]).map((role) => /* @__PURE__ */ jsx53("option", { value: role, children: organizationRoleLabel(role, t) }, role))
6542
+ children: (roles.includes(primaryRole) ? roles : [primaryRole, ...roles]).map((role) => /* @__PURE__ */ jsx54("option", { value: role, children: organizationRoleLabel(role, t) }, role))
7362
6543
  }
7363
6544
  ),
7364
- /* @__PURE__ */ jsx53("button", { className: "ba-link-button ba-danger", type: "button", disabled: pending, onClick: () => remove(member), children: t("organization.profile.members.remove") })
7365
- ] }) : /* @__PURE__ */ jsx53("span", { className: "ba-organization-role-label", children: organizationRoleLabel(primaryRole, t) })
6545
+ /* @__PURE__ */ jsx54("button", { className: "ba-link-button ba-danger", type: "button", disabled: pending, onClick: () => remove(member), children: t("organization.profile.members.remove") })
6546
+ ] }) : /* @__PURE__ */ jsx54("span", { className: "ba-organization-role-label", children: organizationRoleLabel(primaryRole, t) })
7366
6547
  ] }, member.id);
7367
6548
  }) })
7368
6549
  ] });
7369
6550
  }
7370
6551
 
7371
6552
  // src/components/OrganizationProfile.tsx
7372
- import { jsx as jsx54, jsxs as jsxs48 } from "react/jsx-runtime";
6553
+ import { jsx as jsx55, jsxs as jsxs49 } from "react/jsx-runtime";
7373
6554
  var SECTION_KEYS2 = {
7374
6555
  general: "organization.profile.nav.general",
7375
6556
  members: "organization.profile.nav.members",
@@ -7383,17 +6564,17 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7383
6564
  const { user, isLoaded, isSignedIn } = useUser();
7384
6565
  const session = useSession();
7385
6566
  const api = useAuthClient().organization;
7386
- const apiRef = React48.useRef(api);
6567
+ const apiRef = React49.useRef(api);
7387
6568
  apiRef.current = api;
7388
6569
  const activeOrganizationId = session.data?.session.activeOrganizationId ?? null;
7389
6570
  const requestedId = organizationId ?? activeOrganizationId;
7390
6571
  const enabled = config?.organizations === true && isSignedIn;
7391
- const [organization, setOrganization] = React48.useState(null);
7392
- const [error, setError] = React48.useState(null);
7393
- const [wasRemoved, setWasRemoved] = React48.useState(false);
7394
- const [section, setSection] = React48.useState(defaultSection);
7395
- const requestRef = React48.useRef(0);
7396
- const load = React48.useCallback(async () => {
6572
+ const [organization, setOrganization] = React49.useState(null);
6573
+ const [error, setError] = React49.useState(null);
6574
+ const [wasRemoved, setWasRemoved] = React49.useState(false);
6575
+ const [section, setSection] = React49.useState(defaultSection);
6576
+ const requestRef = React49.useRef(0);
6577
+ const load = React49.useCallback(async () => {
7397
6578
  const token = ++requestRef.current;
7398
6579
  if (!enabled || !requestedId) {
7399
6580
  setOrganization(null);
@@ -7413,7 +6594,7 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7413
6594
  if (token === requestRef.current) setError(t("organization.profile.loadError"));
7414
6595
  }
7415
6596
  }, [enabled, requestedId, t, toServerError]);
7416
- React48.useEffect(() => {
6597
+ React49.useEffect(() => {
7417
6598
  setOrganization(null);
7418
6599
  setError(null);
7419
6600
  setWasRemoved(false);
@@ -7422,20 +6603,20 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7422
6603
  requestRef.current += 1;
7423
6604
  };
7424
6605
  }, [load]);
7425
- if (configLoading || !isLoaded) return /* @__PURE__ */ jsx54("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
6606
+ if (configLoading || !isLoaded) return /* @__PURE__ */ jsx55("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
7426
6607
  if (config?.organizations !== true) return null;
7427
- if (!isSignedIn || !user) return /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: t("organization.signedOut") });
7428
- if (wasRemoved) return /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: t("organization.profile.noActive") });
7429
- if (!requestedId) return /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: t("organization.profile.noActive") });
6608
+ if (!isSignedIn || !user) return /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: t("organization.signedOut") });
6609
+ if (wasRemoved) return /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: t("organization.profile.noActive") });
6610
+ if (!requestedId) return /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: t("organization.profile.noActive") });
7430
6611
  if (error) {
7431
- return /* @__PURE__ */ jsxs48("div", { className: "ba-inline-error", children: [
7432
- /* @__PURE__ */ jsx54(FormError, { children: error }),
7433
- /* @__PURE__ */ jsx54("button", { className: "ba-link-button", type: "button", onClick: () => void load(), children: t("organization.retry") })
6612
+ return /* @__PURE__ */ jsxs49("div", { className: "ba-inline-error", children: [
6613
+ /* @__PURE__ */ jsx55(FormError, { children: error }),
6614
+ /* @__PURE__ */ jsx55("button", { className: "ba-link-button", type: "button", onClick: () => void load(), children: t("organization.retry") })
7434
6615
  ] });
7435
6616
  }
7436
- if (!organization) return /* @__PURE__ */ jsx54("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
6617
+ if (!organization) return /* @__PURE__ */ jsx55("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
7437
6618
  const membership = organization.members.find((member) => member.userId === user.id);
7438
- if (!membership) return /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: t("organization.profile.notMember") });
6619
+ if (!membership) return /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: t("organization.profile.notMember") });
7439
6620
  const canManage = canManageOrganization(membership);
7440
6621
  const visibleSections = canManage ? ["general", "members", "invitations", "danger"] : ["general", "members", "danger"];
7441
6622
  const activeSection = visibleSections.includes(section) ? section : "general";
@@ -7444,16 +6625,16 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7444
6625
  setOrganization(null);
7445
6626
  callback?.(removedOrganization);
7446
6627
  };
7447
- return /* @__PURE__ */ jsxs48("article", { className: "ba-organization-profile", children: [
7448
- /* @__PURE__ */ jsxs48("header", { className: "ba-organization-profile-heading", children: [
7449
- /* @__PURE__ */ jsx54("span", { className: "ba-organization-avatar ba-organization-avatar-large", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
7450
- /* @__PURE__ */ jsxs48("span", { children: [
7451
- /* @__PURE__ */ jsx54("h2", { className: "ba-title", children: organization.name }),
7452
- /* @__PURE__ */ jsx54("p", { className: "ba-muted", children: organization.slug })
6628
+ return /* @__PURE__ */ jsxs49("article", { className: "ba-organization-profile", children: [
6629
+ /* @__PURE__ */ jsxs49("header", { className: "ba-organization-profile-heading", children: [
6630
+ /* @__PURE__ */ jsx55("span", { className: "ba-organization-avatar ba-organization-avatar-large", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
6631
+ /* @__PURE__ */ jsxs49("span", { children: [
6632
+ /* @__PURE__ */ jsx55("h2", { className: "ba-title", children: organization.name }),
6633
+ /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: organization.slug })
7453
6634
  ] })
7454
6635
  ] }),
7455
- /* @__PURE__ */ jsxs48("div", { className: "ba-organization-profile-layout", children: [
7456
- /* @__PURE__ */ jsx54("nav", { className: "ba-organization-profile-nav", "aria-label": t("organization.profile.nav.label"), children: visibleSections.map((item) => /* @__PURE__ */ jsx54(
6636
+ /* @__PURE__ */ jsxs49("div", { className: "ba-organization-profile-layout", children: [
6637
+ /* @__PURE__ */ jsx55("nav", { className: "ba-organization-profile-nav", "aria-label": t("organization.profile.nav.label"), children: visibleSections.map((item) => /* @__PURE__ */ jsx55(
7457
6638
  "button",
7458
6639
  {
7459
6640
  className: "ba-profile-nav-item",
@@ -7464,11 +6645,11 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7464
6645
  },
7465
6646
  item
7466
6647
  )) }),
7467
- /* @__PURE__ */ jsxs48("div", { className: "ba-organization-profile-content", children: [
7468
- activeSection === "general" && /* @__PURE__ */ jsx54(GeneralSection, { organization, canManage, onChanged: load }),
7469
- activeSection === "members" && /* @__PURE__ */ jsx54(MembersSection, { organization, userId: user.id, canManage, onChanged: load }),
7470
- activeSection === "invitations" && /* @__PURE__ */ jsx54(InvitationsSection, { organization, onChanged: load }),
7471
- activeSection === "danger" && /* @__PURE__ */ jsx54(
6648
+ /* @__PURE__ */ jsxs49("div", { className: "ba-organization-profile-content", children: [
6649
+ activeSection === "general" && /* @__PURE__ */ jsx55(GeneralSection, { organization, canManage, onChanged: load }),
6650
+ activeSection === "members" && /* @__PURE__ */ jsx55(MembersSection, { organization, userId: user.id, canManage, onChanged: load }),
6651
+ activeSection === "invitations" && /* @__PURE__ */ jsx55(InvitationsSection, { organization, onChanged: load }),
6652
+ activeSection === "danger" && /* @__PURE__ */ jsx55(
7472
6653
  DangerSection,
7473
6654
  {
7474
6655
  organization,
@@ -7483,7 +6664,7 @@ function OrganizationProfile({ organizationId, defaultSection = "general", onDel
7483
6664
  }
7484
6665
 
7485
6666
  // src/components/OrganizationSwitcher.tsx
7486
- import { Fragment as Fragment14, jsx as jsx55, jsxs as jsxs49 } from "react/jsx-runtime";
6667
+ import { Fragment as Fragment14, jsx as jsx56, jsxs as jsxs50 } from "react/jsx-runtime";
7487
6668
  function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChange } = {}) {
7488
6669
  const t = useT();
7489
6670
  const { config, isLoading: configLoading } = usePublicConfig();
@@ -7493,15 +6674,15 @@ function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChan
7493
6674
  const enabled = config?.organizations === true && isSignedIn;
7494
6675
  const { organizations, isLoading, error: loadError, refresh } = useOrganizationsResource(enabled);
7495
6676
  const { pending, error, run } = useSubmitAction();
7496
- const [open, setOpen] = React49.useState(false);
7497
- const [dialog, setDialog] = React49.useState(null);
7498
- const rootRef = React49.useRef(null);
7499
- const triggerRef = React49.useRef(null);
7500
- const menuRef = React49.useRef(null);
7501
- const menuId = React49.useId();
6677
+ const [open, setOpen] = React50.useState(false);
6678
+ const [dialog, setDialog] = React50.useState(null);
6679
+ const rootRef = React50.useRef(null);
6680
+ const triggerRef = React50.useRef(null);
6681
+ const menuRef = React50.useRef(null);
6682
+ const menuId = React50.useId();
7502
6683
  const activeId = session.data?.session.activeOrganizationId ?? null;
7503
6684
  const active = organizations?.find((organization) => organization.id === activeId) ?? null;
7504
- React49.useEffect(() => {
6685
+ React50.useEffect(() => {
7505
6686
  if (!open) return;
7506
6687
  const onPointerDown = (event) => {
7507
6688
  if (!rootRef.current?.contains(event.target)) setOpen(false);
@@ -7516,9 +6697,9 @@ function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChan
7516
6697
  document.removeEventListener("keydown", onKeyDown);
7517
6698
  };
7518
6699
  }, [open]);
7519
- if (configLoading || !isLoaded) return /* @__PURE__ */ jsx55("div", { className: "ba-skeleton ba-organization-switcher-skeleton", "aria-label": t("organization.loading") });
6700
+ if (configLoading || !isLoaded) return /* @__PURE__ */ jsx56("div", { className: "ba-skeleton ba-organization-switcher-skeleton", "aria-label": t("organization.loading") });
7520
6701
  if (config?.organizations !== true) return null;
7521
- if (!isSignedIn) return /* @__PURE__ */ jsx55("p", { className: "ba-muted", children: t("organization.signedOut") });
6702
+ if (!isSignedIn) return /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.signedOut") });
7522
6703
  const select = (organization) => {
7523
6704
  void run(
7524
6705
  () => api.setActive({ organizationId: organization?.id ?? null }),
@@ -7561,9 +6742,9 @@ function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChan
7561
6742
  else if (event.key === "ArrowDown") items[(current + 1 + items.length) % items.length]?.focus();
7562
6743
  else items[(current - 1 + items.length) % items.length]?.focus();
7563
6744
  };
7564
- return /* @__PURE__ */ jsxs49(Fragment14, { children: [
7565
- /* @__PURE__ */ jsxs49("div", { ref: rootRef, className: "ba-organization-switcher", children: [
7566
- /* @__PURE__ */ jsxs49(
6745
+ return /* @__PURE__ */ jsxs50(Fragment14, { children: [
6746
+ /* @__PURE__ */ jsxs50("div", { ref: rootRef, className: "ba-organization-switcher", children: [
6747
+ /* @__PURE__ */ jsxs50(
7567
6748
  "button",
7568
6749
  {
7569
6750
  ref: triggerRef,
@@ -7580,43 +6761,43 @@ function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChan
7580
6761
  focusMenuItem(event.key === "ArrowDown" ? "first" : "last");
7581
6762
  },
7582
6763
  children: [
7583
- /* @__PURE__ */ jsx55("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: active?.name.trim().charAt(0).toUpperCase() || "P" }),
7584
- /* @__PURE__ */ jsx55("span", { children: active?.name ?? t("organization.personal") }),
7585
- /* @__PURE__ */ jsx55("span", { "aria-hidden": "true", children: "\u2304" })
6764
+ /* @__PURE__ */ jsx56("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: active?.name.trim().charAt(0).toUpperCase() || "P" }),
6765
+ /* @__PURE__ */ jsx56("span", { children: active?.name ?? t("organization.personal") }),
6766
+ /* @__PURE__ */ jsx56("span", { "aria-hidden": "true", children: "\u2304" })
7586
6767
  ]
7587
6768
  }
7588
6769
  ),
7589
- open && /* @__PURE__ */ jsxs49("div", { ref: menuRef, id: menuId, className: "ba-organization-menu", role: "menu", "aria-label": t("organization.switcher.label"), onKeyDown: onMenuKeyDown, children: [
7590
- isLoading ? /* @__PURE__ */ jsx55("div", { className: "ba-skeleton" }) : /* @__PURE__ */ jsxs49(Fragment14, { children: [
7591
- showPersonalWorkspace && /* @__PURE__ */ jsxs49("button", { className: "ba-organization-menu-item", type: "button", role: "menuitem", "aria-current": activeId === null ? "true" : void 0, disabled: pending, onClick: () => select(null), children: [
7592
- /* @__PURE__ */ jsx55("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: "P" }),
7593
- /* @__PURE__ */ jsx55("span", { children: t("organization.personal") })
6770
+ open && /* @__PURE__ */ jsxs50("div", { ref: menuRef, id: menuId, className: "ba-organization-menu", role: "menu", "aria-label": t("organization.switcher.label"), onKeyDown: onMenuKeyDown, children: [
6771
+ isLoading ? /* @__PURE__ */ jsx56("div", { className: "ba-skeleton" }) : /* @__PURE__ */ jsxs50(Fragment14, { children: [
6772
+ showPersonalWorkspace && /* @__PURE__ */ jsxs50("button", { className: "ba-organization-menu-item", type: "button", role: "menuitem", "aria-current": activeId === null ? "true" : void 0, disabled: pending, onClick: () => select(null), children: [
6773
+ /* @__PURE__ */ jsx56("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: "P" }),
6774
+ /* @__PURE__ */ jsx56("span", { children: t("organization.personal") })
7594
6775
  ] }),
7595
- organizations?.map((organization) => /* @__PURE__ */ jsxs49("button", { className: "ba-organization-menu-item", type: "button", role: "menuitem", "aria-current": activeId === organization.id ? "true" : void 0, disabled: pending, onClick: () => select(organization), children: [
7596
- /* @__PURE__ */ jsx55("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
7597
- /* @__PURE__ */ jsxs49("span", { children: [
6776
+ organizations?.map((organization) => /* @__PURE__ */ jsxs50("button", { className: "ba-organization-menu-item", type: "button", role: "menuitem", "aria-current": activeId === organization.id ? "true" : void 0, disabled: pending, onClick: () => select(organization), children: [
6777
+ /* @__PURE__ */ jsx56("span", { className: "ba-organization-avatar", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
6778
+ /* @__PURE__ */ jsxs50("span", { children: [
7598
6779
  organization.name,
7599
- /* @__PURE__ */ jsx55("small", { children: organization.slug })
6780
+ /* @__PURE__ */ jsx56("small", { children: organization.slug })
7600
6781
  ] })
7601
6782
  ] }, organization.id))
7602
6783
  ] }),
7603
- (loadError || error) && /* @__PURE__ */ jsxs49("div", { className: "ba-inline-error", children: [
7604
- /* @__PURE__ */ jsx55(FormError, { children: loadError ?? error }),
7605
- loadError && /* @__PURE__ */ jsx55("button", { className: "ba-link-button", type: "button", onClick: () => void refresh(), children: t("organization.retry") })
6784
+ (loadError || error) && /* @__PURE__ */ jsxs50("div", { className: "ba-inline-error", children: [
6785
+ /* @__PURE__ */ jsx56(FormError, { children: loadError ?? error }),
6786
+ loadError && /* @__PURE__ */ jsx56("button", { className: "ba-link-button", type: "button", onClick: () => void refresh(), children: t("organization.retry") })
7606
6787
  ] }),
7607
- /* @__PURE__ */ jsxs49("div", { className: "ba-organization-menu-actions", children: [
7608
- active && /* @__PURE__ */ jsx55("button", { className: "ba-menu-item", type: "button", role: "menuitem", onClick: () => {
6788
+ /* @__PURE__ */ jsxs50("div", { className: "ba-organization-menu-actions", children: [
6789
+ active && /* @__PURE__ */ jsx56("button", { className: "ba-menu-item", type: "button", role: "menuitem", onClick: () => {
7609
6790
  setOpen(false);
7610
6791
  setDialog("profile");
7611
6792
  }, children: t("organization.switcher.manage") }),
7612
- /* @__PURE__ */ jsx55("button", { className: "ba-menu-item", type: "button", role: "menuitem", onClick: () => {
6793
+ /* @__PURE__ */ jsx56("button", { className: "ba-menu-item", type: "button", role: "menuitem", onClick: () => {
7613
6794
  setOpen(false);
7614
6795
  setDialog("create");
7615
6796
  }, children: t("organization.switcher.create") })
7616
6797
  ] })
7617
6798
  ] })
7618
6799
  ] }),
7619
- dialog === "create" && /* @__PURE__ */ jsx55(OrganizationModal, { title: t("organization.create.title"), returnFocusRef: triggerRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx55(
6800
+ dialog === "create" && /* @__PURE__ */ jsx56(OrganizationModal, { title: t("organization.create.title"), returnFocusRef: triggerRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx56(
7620
6801
  CreateOrganization,
7621
6802
  {
7622
6803
  title: null,
@@ -7630,13 +6811,13 @@ function OrganizationSwitcher({ showPersonalWorkspace = true, onOrganizationChan
7630
6811
  }
7631
6812
  }
7632
6813
  ) }),
7633
- dialog === "profile" && active && /* @__PURE__ */ jsx55(OrganizationModal, { title: t("organization.profile.title"), returnFocusRef: triggerRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx55(OrganizationProfile, { organizationId: active.id, onDeleted: () => void afterProfileRemoval(), onLeft: () => void afterProfileRemoval() }) })
6814
+ dialog === "profile" && active && /* @__PURE__ */ jsx56(OrganizationModal, { title: t("organization.profile.title"), returnFocusRef: triggerRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx56(OrganizationProfile, { organizationId: active.id, onDeleted: () => void afterProfileRemoval(), onLeft: () => void afterProfileRemoval() }) })
7634
6815
  ] });
7635
6816
  }
7636
6817
 
7637
6818
  // src/components/OrganizationList.tsx
7638
- import * as React50 from "react";
7639
- import { Fragment as Fragment15, jsx as jsx56, jsxs as jsxs50 } from "react/jsx-runtime";
6819
+ import * as React51 from "react";
6820
+ import { Fragment as Fragment15, jsx as jsx57, jsxs as jsxs51 } from "react/jsx-runtime";
7640
6821
  function OrganizationList({ onOrganizationChange } = {}) {
7641
6822
  const t = useT();
7642
6823
  const toServerError = useServerError();
@@ -7644,19 +6825,19 @@ function OrganizationList({ onOrganizationChange } = {}) {
7644
6825
  const { user, isLoaded, isSignedIn } = useUser();
7645
6826
  const session = useSession();
7646
6827
  const api = useAuthClient().organization;
7647
- const apiRef = React50.useRef(api);
6828
+ const apiRef = React51.useRef(api);
7648
6829
  apiRef.current = api;
7649
6830
  const enabled = config?.organizations === true && isSignedIn;
7650
6831
  const { organizations, isLoading, error: organizationError, refresh } = useOrganizationsResource(enabled);
7651
6832
  const { pending, error, run } = useSubmitAction();
7652
- const [invitations, setInvitations] = React50.useState(null);
7653
- const [invitationError, setInvitationError] = React50.useState(null);
7654
- const [dialog, setDialog] = React50.useState(null);
7655
- const [profileId, setProfileId] = React50.useState(null);
7656
- const dialogReturnFocusRef = React50.useRef(null);
7657
- const invitationRequestRef = React50.useRef(0);
6833
+ const [invitations, setInvitations] = React51.useState(null);
6834
+ const [invitationError, setInvitationError] = React51.useState(null);
6835
+ const [dialog, setDialog] = React51.useState(null);
6836
+ const [profileId, setProfileId] = React51.useState(null);
6837
+ const dialogReturnFocusRef = React51.useRef(null);
6838
+ const invitationRequestRef = React51.useRef(0);
7658
6839
  const activeId = session.data?.session.activeOrganizationId ?? null;
7659
- const loadInvitations = React50.useCallback(async () => {
6840
+ const loadInvitations = React51.useCallback(async () => {
7660
6841
  const token = ++invitationRequestRef.current;
7661
6842
  if (!enabled) {
7662
6843
  setInvitations([]);
@@ -7676,7 +6857,7 @@ function OrganizationList({ onOrganizationChange } = {}) {
7676
6857
  if (token === invitationRequestRef.current) setInvitationError(t("organization.list.invitationsError"));
7677
6858
  }
7678
6859
  }, [enabled, t, toServerError]);
7679
- React50.useEffect(() => {
6860
+ React51.useEffect(() => {
7680
6861
  setInvitations(null);
7681
6862
  setInvitationError(null);
7682
6863
  if (!isLoaded) return;
@@ -7685,9 +6866,9 @@ function OrganizationList({ onOrganizationChange } = {}) {
7685
6866
  invitationRequestRef.current += 1;
7686
6867
  };
7687
6868
  }, [isLoaded, loadInvitations, user?.id]);
7688
- if (configLoading || !isLoaded) return /* @__PURE__ */ jsx56("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
6869
+ if (configLoading || !isLoaded) return /* @__PURE__ */ jsx57("div", { className: "ba-skeleton", "aria-label": t("organization.loading") });
7689
6870
  if (config?.organizations !== true) return null;
7690
- if (!isSignedIn) return /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.signedOut") });
6871
+ if (!isSignedIn) return /* @__PURE__ */ jsx57("p", { className: "ba-muted", children: t("organization.signedOut") });
7691
6872
  const setActive = (organization) => {
7692
6873
  void run(
7693
6874
  () => api.setActive({ organizationId: organization.id }),
@@ -7728,71 +6909,71 @@ function OrganizationList({ onOrganizationChange } = {}) {
7728
6909
  setDialog(null);
7729
6910
  setProfileId(null);
7730
6911
  };
7731
- return /* @__PURE__ */ jsxs50(Fragment15, { children: [
7732
- /* @__PURE__ */ jsxs50("section", { className: "ba-organization-directory", children: [
7733
- /* @__PURE__ */ jsxs50("header", { className: "ba-organization-directory-header", children: [
7734
- /* @__PURE__ */ jsxs50("span", { children: [
7735
- /* @__PURE__ */ jsx56("h2", { className: "ba-title", children: t("organization.list.title") }),
7736
- /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.list.description") })
6912
+ return /* @__PURE__ */ jsxs51(Fragment15, { children: [
6913
+ /* @__PURE__ */ jsxs51("section", { className: "ba-organization-directory", children: [
6914
+ /* @__PURE__ */ jsxs51("header", { className: "ba-organization-directory-header", children: [
6915
+ /* @__PURE__ */ jsxs51("span", { children: [
6916
+ /* @__PURE__ */ jsx57("h2", { className: "ba-title", children: t("organization.list.title") }),
6917
+ /* @__PURE__ */ jsx57("p", { className: "ba-muted", children: t("organization.list.description") })
7737
6918
  ] }),
7738
- /* @__PURE__ */ jsx56("button", { className: "ba-button", type: "button", onClick: (event) => {
6919
+ /* @__PURE__ */ jsx57("button", { className: "ba-button", type: "button", onClick: (event) => {
7739
6920
  dialogReturnFocusRef.current = event.currentTarget;
7740
6921
  setDialog("create");
7741
6922
  }, children: t("organization.switcher.create") })
7742
6923
  ] }),
7743
- (organizationError || error) && /* @__PURE__ */ jsxs50("div", { className: "ba-inline-error", children: [
7744
- /* @__PURE__ */ jsx56(FormError, { children: organizationError ?? error }),
7745
- organizationError && /* @__PURE__ */ jsx56("button", { className: "ba-link-button", type: "button", onClick: () => void refresh(), children: t("organization.retry") })
6924
+ (organizationError || error) && /* @__PURE__ */ jsxs51("div", { className: "ba-inline-error", children: [
6925
+ /* @__PURE__ */ jsx57(FormError, { children: organizationError ?? error }),
6926
+ organizationError && /* @__PURE__ */ jsx57("button", { className: "ba-link-button", type: "button", onClick: () => void refresh(), children: t("organization.retry") })
7746
6927
  ] }),
7747
- isLoading ? /* @__PURE__ */ jsxs50("div", { className: "ba-organization-card-grid", children: [
7748
- /* @__PURE__ */ jsx56("div", { className: "ba-skeleton" }),
7749
- /* @__PURE__ */ jsx56("div", { className: "ba-skeleton" })
7750
- ] }) : organizations?.length ? /* @__PURE__ */ jsx56("ul", { className: "ba-organization-card-grid", children: organizations.map((organization) => /* @__PURE__ */ jsxs50("li", { className: "ba-organization-card", children: [
7751
- /* @__PURE__ */ jsx56("span", { className: "ba-organization-avatar ba-organization-avatar-large", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
7752
- /* @__PURE__ */ jsxs50("span", { className: "ba-organization-card-copy", children: [
7753
- /* @__PURE__ */ jsx56("strong", { children: organization.name }),
7754
- /* @__PURE__ */ jsx56("small", { children: /* @__PURE__ */ jsx56(Bidi, { children: organization.slug }) })
6928
+ isLoading ? /* @__PURE__ */ jsxs51("div", { className: "ba-organization-card-grid", children: [
6929
+ /* @__PURE__ */ jsx57("div", { className: "ba-skeleton" }),
6930
+ /* @__PURE__ */ jsx57("div", { className: "ba-skeleton" })
6931
+ ] }) : organizations?.length ? /* @__PURE__ */ jsx57("ul", { className: "ba-organization-card-grid", children: organizations.map((organization) => /* @__PURE__ */ jsxs51("li", { className: "ba-organization-card", children: [
6932
+ /* @__PURE__ */ jsx57("span", { className: "ba-organization-avatar ba-organization-avatar-large", "aria-hidden": "true", children: organization.name.trim().charAt(0).toUpperCase() || "?" }),
6933
+ /* @__PURE__ */ jsxs51("span", { className: "ba-organization-card-copy", children: [
6934
+ /* @__PURE__ */ jsx57("strong", { children: organization.name }),
6935
+ /* @__PURE__ */ jsx57("small", { children: /* @__PURE__ */ jsx57(Bidi, { children: organization.slug }) })
7755
6936
  ] }),
7756
- activeId === organization.id && /* @__PURE__ */ jsx56("span", { className: "ba-organization-active", children: t("organization.list.active") }),
7757
- /* @__PURE__ */ jsxs50("span", { className: "ba-organization-card-actions", children: [
7758
- activeId !== organization.id && /* @__PURE__ */ jsx56("button", { className: "ba-button ba-button-secondary", type: "button", disabled: pending, onClick: () => setActive(organization), children: t("organization.list.switch") }),
7759
- /* @__PURE__ */ jsx56("button", { className: "ba-link-button", type: "button", onClick: (event) => openProfile(organization, event.currentTarget), children: t("organization.list.manage") })
6937
+ activeId === organization.id && /* @__PURE__ */ jsx57("span", { className: "ba-organization-active", children: t("organization.list.active") }),
6938
+ /* @__PURE__ */ jsxs51("span", { className: "ba-organization-card-actions", children: [
6939
+ activeId !== organization.id && /* @__PURE__ */ jsx57("button", { className: "ba-button ba-button-secondary", type: "button", disabled: pending, onClick: () => setActive(organization), children: t("organization.list.switch") }),
6940
+ /* @__PURE__ */ jsx57("button", { className: "ba-link-button", type: "button", onClick: (event) => openProfile(organization, event.currentTarget), children: t("organization.list.manage") })
7760
6941
  ] })
7761
- ] }, organization.id)) }) : /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.list.empty") }),
7762
- /* @__PURE__ */ jsxs50("section", { className: "ba-organization-user-invitations", children: [
7763
- /* @__PURE__ */ jsxs50("header", { className: "ba-organization-section-header", children: [
7764
- /* @__PURE__ */ jsx56("h3", { className: "ba-title", children: t("organization.list.invitationsTitle") }),
7765
- /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.list.invitationsDescription") })
6942
+ ] }, organization.id)) }) : /* @__PURE__ */ jsx57("p", { className: "ba-muted", children: t("organization.list.empty") }),
6943
+ /* @__PURE__ */ jsxs51("section", { className: "ba-organization-user-invitations", children: [
6944
+ /* @__PURE__ */ jsxs51("header", { className: "ba-organization-section-header", children: [
6945
+ /* @__PURE__ */ jsx57("h3", { className: "ba-title", children: t("organization.list.invitationsTitle") }),
6946
+ /* @__PURE__ */ jsx57("p", { className: "ba-muted", children: t("organization.list.invitationsDescription") })
7766
6947
  ] }),
7767
- invitationError && /* @__PURE__ */ jsxs50("div", { className: "ba-inline-error", children: [
7768
- /* @__PURE__ */ jsx56(FormError, { children: invitationError }),
7769
- /* @__PURE__ */ jsx56("button", { className: "ba-link-button", type: "button", onClick: () => void loadInvitations(), children: t("organization.retry") })
6948
+ invitationError && /* @__PURE__ */ jsxs51("div", { className: "ba-inline-error", children: [
6949
+ /* @__PURE__ */ jsx57(FormError, { children: invitationError }),
6950
+ /* @__PURE__ */ jsx57("button", { className: "ba-link-button", type: "button", onClick: () => void loadInvitations(), children: t("organization.retry") })
7770
6951
  ] }),
7771
- invitations === null && !invitationError ? /* @__PURE__ */ jsx56("div", { className: "ba-skeleton" }) : invitations?.length ? /* @__PURE__ */ jsx56("ul", { className: "ba-organization-list", children: invitations.map((invitation) => /* @__PURE__ */ jsxs50("li", { className: "ba-organization-invitation", children: [
7772
- /* @__PURE__ */ jsxs50("span", { children: [
7773
- /* @__PURE__ */ jsx56("strong", { children: invitation.organizationName }),
7774
- /* @__PURE__ */ jsx56("small", { children: organizationRoleLabel(invitation.role, t) })
6952
+ invitations === null && !invitationError ? /* @__PURE__ */ jsx57("div", { className: "ba-skeleton" }) : invitations?.length ? /* @__PURE__ */ jsx57("ul", { className: "ba-organization-list", children: invitations.map((invitation) => /* @__PURE__ */ jsxs51("li", { className: "ba-organization-invitation", children: [
6953
+ /* @__PURE__ */ jsxs51("span", { children: [
6954
+ /* @__PURE__ */ jsx57("strong", { children: invitation.organizationName }),
6955
+ /* @__PURE__ */ jsx57("small", { children: organizationRoleLabel(invitation.role, t) })
7775
6956
  ] }),
7776
- /* @__PURE__ */ jsxs50("span", { className: "ba-organization-card-actions", children: [
7777
- /* @__PURE__ */ jsx56("button", { className: "ba-button", type: "button", disabled: pending, onClick: () => invitationAction(invitation, "accept"), children: t("organization.list.accept") }),
7778
- /* @__PURE__ */ jsx56("button", { className: "ba-link-button", type: "button", disabled: pending, onClick: () => invitationAction(invitation, "reject"), children: t("organization.list.reject") })
6957
+ /* @__PURE__ */ jsxs51("span", { className: "ba-organization-card-actions", children: [
6958
+ /* @__PURE__ */ jsx57("button", { className: "ba-button", type: "button", disabled: pending, onClick: () => invitationAction(invitation, "accept"), children: t("organization.list.accept") }),
6959
+ /* @__PURE__ */ jsx57("button", { className: "ba-link-button", type: "button", disabled: pending, onClick: () => invitationAction(invitation, "reject"), children: t("organization.list.reject") })
7779
6960
  ] })
7780
- ] }, invitation.id)) }) : /* @__PURE__ */ jsx56("p", { className: "ba-muted", children: t("organization.list.noInvitations") })
6961
+ ] }, invitation.id)) }) : /* @__PURE__ */ jsx57("p", { className: "ba-muted", children: t("organization.list.noInvitations") })
7781
6962
  ] })
7782
6963
  ] }),
7783
- dialog === "create" && /* @__PURE__ */ jsx56(OrganizationModal, { title: t("organization.create.title"), returnFocusRef: dialogReturnFocusRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx56(CreateOrganization, { title: null, onCreated: () => {
6964
+ dialog === "create" && /* @__PURE__ */ jsx57(OrganizationModal, { title: t("organization.create.title"), returnFocusRef: dialogReturnFocusRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx57(CreateOrganization, { title: null, onCreated: () => {
7784
6965
  void (async () => {
7785
6966
  await refresh();
7786
6967
  await session.refetch({ query: { disableCookieCache: true } });
7787
6968
  setDialog(null);
7788
6969
  })();
7789
6970
  } }) }),
7790
- dialog === "profile" && profileId && /* @__PURE__ */ jsx56(OrganizationModal, { title: t("organization.profile.title"), returnFocusRef: dialogReturnFocusRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx56(OrganizationProfile, { organizationId: profileId, onDeleted: () => void afterProfileRemoval(), onLeft: () => void afterProfileRemoval() }) })
6971
+ dialog === "profile" && profileId && /* @__PURE__ */ jsx57(OrganizationModal, { title: t("organization.profile.title"), returnFocusRef: dialogReturnFocusRef, onClose: () => setDialog(null), children: /* @__PURE__ */ jsx57(OrganizationProfile, { organizationId: profileId, onDeleted: () => void afterProfileRemoval(), onLeft: () => void afterProfileRemoval() }) })
7791
6972
  ] });
7792
6973
  }
7793
6974
 
7794
6975
  // src/components/GoogleOneTap.tsx
7795
- import * as React51 from "react";
6976
+ import * as React52 from "react";
7796
6977
 
7797
6978
  // src/components/google-one-tap.ts
7798
6979
  var GOOGLE_IDENTITY_SCRIPT = "https://accounts.google.com/gsi/client";
@@ -7960,11 +7141,11 @@ function GoogleOneTap({
7960
7141
  const { config, isLoading: configLoading, isError: configError } = usePublicConfig();
7961
7142
  const { user, isLoaded: sessionLoaded } = useUser();
7962
7143
  const { signInSocial } = useSignIn();
7963
- const callbacks = React51.useRef({ onSignedIn, onSkipped, onDismissed, onError });
7144
+ const callbacks = React52.useRef({ onSignedIn, onSkipped, onDismissed, onError });
7964
7145
  callbacks.current = { onSignedIn, onSkipped, onDismissed, onError };
7965
7146
  const googleEnabled = config?.socialProviders.includes("google") === true;
7966
7147
  const clientId = config?.socialProviderClientIds?.google;
7967
- React51.useEffect(() => {
7148
+ React52.useEffect(() => {
7968
7149
  if (configLoading || !sessionLoaded) return;
7969
7150
  if (disabled) {
7970
7151
  callbacks.current.onSkipped?.("disabled");
@@ -8086,6 +7267,7 @@ export {
8086
7267
  AuthLoaded,
8087
7268
  AuthLoading,
8088
7269
  AuthOwlBadge,
7270
+ AuthOwlBranding,
8089
7271
  AuthOwlError,
8090
7272
  AuthOwlProvider,
8091
7273
  BackupCodesManager,