@tinyrack/issuary-server 0.20.0
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/emails/components/email-layout.d.ts +8 -0
- package/dist/emails/components/email-layout.d.ts.map +1 -0
- package/dist/emails/components/email-layout.js +6 -0
- package/dist/emails/components/email-layout.js.map +1 -0
- package/dist/emails/i18n/en.json +26 -0
- package/dist/emails/i18n/index.d.ts +3 -0
- package/dist/emails/i18n/index.d.ts.map +1 -0
- package/dist/emails/i18n/index.js +12 -0
- package/dist/emails/i18n/index.js.map +1 -0
- package/dist/emails/i18n/ja.json +26 -0
- package/dist/emails/i18n/ko.json +26 -0
- package/dist/emails/render.d.ts +12 -0
- package/dist/emails/render.d.ts.map +1 -0
- package/dist/emails/render.js +22 -0
- package/dist/emails/render.js.map +1 -0
- package/dist/emails/templates/password-reset.d.ts +10 -0
- package/dist/emails/templates/password-reset.d.ts.map +1 -0
- package/dist/emails/templates/password-reset.js +10 -0
- package/dist/emails/templates/password-reset.js.map +1 -0
- package/dist/emails/templates/verification.d.ts +10 -0
- package/dist/emails/templates/verification.d.ts.map +1 -0
- package/dist/emails/templates/verification.js +10 -0
- package/dist/emails/templates/verification.js.map +1 -0
- package/dist/entities/background-job.entity.d.ts +111 -0
- package/dist/entities/background-job.entity.d.ts.map +1 -0
- package/dist/entities/background-job.entity.js +53 -0
- package/dist/entities/background-job.entity.js.map +1 -0
- package/dist/entities/base.entity.d.ts +23 -0
- package/dist/entities/base.entity.d.ts.map +1 -0
- package/dist/entities/base.entity.js +17 -0
- package/dist/entities/base.entity.js.map +1 -0
- package/dist/entities/bootstrap-state.entity.d.ts +40 -0
- package/dist/entities/bootstrap-state.entity.d.ts.map +1 -0
- package/dist/entities/bootstrap-state.entity.js +13 -0
- package/dist/entities/bootstrap-state.entity.js.map +1 -0
- package/dist/entities/email-verification.entity.d.ts +96 -0
- package/dist/entities/email-verification.entity.d.ts.map +1 -0
- package/dist/entities/email-verification.entity.js +42 -0
- package/dist/entities/email-verification.entity.js.map +1 -0
- package/dist/entities/jwt-key.entity.d.ts +256 -0
- package/dist/entities/jwt-key.entity.d.ts.map +1 -0
- package/dist/entities/jwt-key.entity.js +125 -0
- package/dist/entities/jwt-key.entity.js.map +1 -0
- package/dist/entities/oauth-client.entity.d.ts +1778 -0
- package/dist/entities/oauth-client.entity.d.ts.map +1 -0
- package/dist/entities/oauth-client.entity.js +82 -0
- package/dist/entities/oauth-client.entity.js.map +1 -0
- package/dist/entities/oauth-code.entity.d.ts +1799 -0
- package/dist/entities/oauth-code.entity.d.ts.map +1 -0
- package/dist/entities/oauth-code.entity.js +79 -0
- package/dist/entities/oauth-code.entity.js.map +1 -0
- package/dist/entities/oauth-device-code.entity.d.ts +1779 -0
- package/dist/entities/oauth-device-code.entity.d.ts.map +1 -0
- package/dist/entities/oauth-device-code.entity.js +73 -0
- package/dist/entities/oauth-device-code.entity.js.map +1 -0
- package/dist/entities/password-reset.entity.d.ts +96 -0
- package/dist/entities/password-reset.entity.d.ts.map +1 -0
- package/dist/entities/password-reset.entity.js +39 -0
- package/dist/entities/password-reset.entity.js.map +1 -0
- package/dist/entities/pending-oauth-registration.entity.d.ts +116 -0
- package/dist/entities/pending-oauth-registration.entity.d.ts.map +1 -0
- package/dist/entities/pending-oauth-registration.entity.js +67 -0
- package/dist/entities/pending-oauth-registration.entity.js.map +1 -0
- package/dist/entities/revoked-token.entity.d.ts +1796 -0
- package/dist/entities/revoked-token.entity.d.ts.map +1 -0
- package/dist/entities/revoked-token.entity.js +69 -0
- package/dist/entities/revoked-token.entity.js.map +1 -0
- package/dist/entities/scheduler-job.entity.d.ts +134 -0
- package/dist/entities/scheduler-job.entity.d.ts.map +1 -0
- package/dist/entities/scheduler-job.entity.js +56 -0
- package/dist/entities/scheduler-job.entity.js.map +1 -0
- package/dist/entities/terms-content.entity.d.ts +834 -0
- package/dist/entities/terms-content.entity.d.ts.map +1 -0
- package/dist/entities/terms-content.entity.js +46 -0
- package/dist/entities/terms-content.entity.js.map +1 -0
- package/dist/entities/terms.entity.d.ts +827 -0
- package/dist/entities/terms.entity.d.ts.map +1 -0
- package/dist/entities/terms.entity.js +42 -0
- package/dist/entities/terms.entity.js.map +1 -0
- package/dist/entities/user-consent.entity.d.ts +1792 -0
- package/dist/entities/user-consent.entity.d.ts.map +1 -0
- package/dist/entities/user-consent.entity.js +66 -0
- package/dist/entities/user-consent.entity.js.map +1 -0
- package/dist/entities/user-oauth.entity.d.ts +81 -0
- package/dist/entities/user-oauth.entity.d.ts.map +1 -0
- package/dist/entities/user-oauth.entity.js +46 -0
- package/dist/entities/user-oauth.entity.js.map +1 -0
- package/dist/entities/user-passkey.entity.d.ts +151 -0
- package/dist/entities/user-passkey.entity.d.ts.map +1 -0
- package/dist/entities/user-passkey.entity.js +64 -0
- package/dist/entities/user-passkey.entity.js.map +1 -0
- package/dist/entities/user-terms-consent.entity.d.ts +834 -0
- package/dist/entities/user-terms-consent.entity.d.ts.map +1 -0
- package/dist/entities/user-terms-consent.entity.js +62 -0
- package/dist/entities/user-terms-consent.entity.js.map +1 -0
- package/dist/entities/user-totp-recovery-code.entity.d.ts +545 -0
- package/dist/entities/user-totp-recovery-code.entity.d.ts.map +1 -0
- package/dist/entities/user-totp-recovery-code.entity.js +34 -0
- package/dist/entities/user-totp-recovery-code.entity.js.map +1 -0
- package/dist/entities/user-totp.entity.d.ts +545 -0
- package/dist/entities/user-totp.entity.d.ts.map +1 -0
- package/dist/entities/user-totp.entity.js +38 -0
- package/dist/entities/user-totp.entity.js.map +1 -0
- package/dist/entities/user.entity.d.ts +551 -0
- package/dist/entities/user.entity.d.ts.map +1 -0
- package/dist/entities/user.entity.js +70 -0
- package/dist/entities/user.entity.js.map +1 -0
- package/dist/entrypoints/app.d.ts +1802 -0
- package/dist/entrypoints/app.d.ts.map +1 -0
- package/dist/entrypoints/app.js +164 -0
- package/dist/entrypoints/app.js.map +1 -0
- package/dist/entrypoints/config/index.d.ts +2 -0
- package/dist/entrypoints/config/index.d.ts.map +1 -0
- package/dist/entrypoints/config/index.js +2 -0
- package/dist/entrypoints/config/index.js.map +1 -0
- package/dist/entrypoints/database/postgres/cli.d.ts +4 -0
- package/dist/entrypoints/database/postgres/cli.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/cli.js +20 -0
- package/dist/entrypoints/database/postgres/cli.js.map +1 -0
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts +865 -0
- package/dist/entrypoints/database/postgres/compiled-functions.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/compiled-functions.js +10817 -0
- package/dist/entrypoints/database/postgres/compiled-functions.js.map +1 -0
- package/dist/entrypoints/database/postgres/postgres.d.ts +14 -0
- package/dist/entrypoints/database/postgres/postgres.d.ts.map +1 -0
- package/dist/entrypoints/database/postgres/postgres.js +36 -0
- package/dist/entrypoints/database/postgres/postgres.js.map +1 -0
- package/dist/entrypoints/database/sqlite/cli.d.ts +4 -0
- package/dist/entrypoints/database/sqlite/cli.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/cli.js +14 -0
- package/dist/entrypoints/database/sqlite/cli.js.map +1 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts +865 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.js +10817 -0
- package/dist/entrypoints/database/sqlite/compiled-functions.js.map +1 -0
- package/dist/entrypoints/database/sqlite/sqlite.d.ts +10 -0
- package/dist/entrypoints/database/sqlite/sqlite.d.ts.map +1 -0
- package/dist/entrypoints/database/sqlite/sqlite.js +36 -0
- package/dist/entrypoints/database/sqlite/sqlite.js.map +1 -0
- package/dist/entrypoints/frontend/index.d.ts +4 -0
- package/dist/entrypoints/frontend/index.d.ts.map +1 -0
- package/dist/entrypoints/frontend/index.js +2 -0
- package/dist/entrypoints/frontend/index.js.map +1 -0
- package/dist/entrypoints/frontend/proxy.d.ts +2 -0
- package/dist/entrypoints/frontend/proxy.d.ts.map +1 -0
- package/dist/entrypoints/frontend/proxy.js +2 -0
- package/dist/entrypoints/frontend/proxy.js.map +1 -0
- package/dist/entrypoints/frontend/static.d.ts +2 -0
- package/dist/entrypoints/frontend/static.d.ts.map +1 -0
- package/dist/entrypoints/frontend/static.js +2 -0
- package/dist/entrypoints/frontend/static.js.map +1 -0
- package/dist/entrypoints/identity-providers/apple.d.ts +15 -0
- package/dist/entrypoints/identity-providers/apple.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/apple.js +24 -0
- package/dist/entrypoints/identity-providers/apple.js.map +1 -0
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts +27 -0
- package/dist/entrypoints/identity-providers/generic-oauth.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/generic-oauth.js +22 -0
- package/dist/entrypoints/identity-providers/generic-oauth.js.map +1 -0
- package/dist/entrypoints/identity-providers/github.d.ts +13 -0
- package/dist/entrypoints/identity-providers/github.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/github.js +24 -0
- package/dist/entrypoints/identity-providers/github.js.map +1 -0
- package/dist/entrypoints/identity-providers/google.d.ts +13 -0
- package/dist/entrypoints/identity-providers/google.d.ts.map +1 -0
- package/dist/entrypoints/identity-providers/google.js +24 -0
- package/dist/entrypoints/identity-providers/google.js.map +1 -0
- package/dist/entrypoints/index.d.ts +3 -0
- package/dist/entrypoints/index.d.ts.map +1 -0
- package/dist/entrypoints/index.js +3 -0
- package/dist/entrypoints/index.js.map +1 -0
- package/dist/entrypoints/mail/nodemailer.d.ts +11 -0
- package/dist/entrypoints/mail/nodemailer.d.ts.map +1 -0
- package/dist/entrypoints/mail/nodemailer.js +30 -0
- package/dist/entrypoints/mail/nodemailer.js.map +1 -0
- package/dist/entrypoints/scheduler/cron.d.ts +3 -0
- package/dist/entrypoints/scheduler/cron.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/cron.js +34 -0
- package/dist/entrypoints/scheduler/cron.js.map +1 -0
- package/dist/entrypoints/scheduler/croner.d.ts +6 -0
- package/dist/entrypoints/scheduler/croner.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/croner.js +42 -0
- package/dist/entrypoints/scheduler/croner.js.map +1 -0
- package/dist/entrypoints/scheduler/database.d.ts +38 -0
- package/dist/entrypoints/scheduler/database.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/database.js +444 -0
- package/dist/entrypoints/scheduler/database.js.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts +134 -0
- package/dist/entrypoints/scheduler/distributed-runner.d.ts.map +1 -0
- package/dist/entrypoints/scheduler/distributed-runner.js +327 -0
- package/dist/entrypoints/scheduler/distributed-runner.js.map +1 -0
- package/dist/entrypoints/services.d.ts +3 -0
- package/dist/entrypoints/services.d.ts.map +1 -0
- package/dist/entrypoints/services.js +2 -0
- package/dist/entrypoints/services.js.map +1 -0
- package/dist/lib/app-env.d.ts +17 -0
- package/dist/lib/app-env.d.ts.map +1 -0
- package/dist/lib/app-env.js +2 -0
- package/dist/lib/app-env.js.map +1 -0
- package/dist/lib/base64url.d.ts +33 -0
- package/dist/lib/base64url.d.ts.map +1 -0
- package/dist/lib/base64url.js +93 -0
- package/dist/lib/base64url.js.map +1 -0
- package/dist/lib/config/account-deletion.d.ts +11 -0
- package/dist/lib/config/account-deletion.d.ts.map +1 -0
- package/dist/lib/config/account-deletion.js +16 -0
- package/dist/lib/config/account-deletion.js.map +1 -0
- package/dist/lib/config/admin.d.ts +9 -0
- package/dist/lib/config/admin.d.ts.map +1 -0
- package/dist/lib/config/admin.js +13 -0
- package/dist/lib/config/admin.js.map +1 -0
- package/dist/lib/config/auth.d.ts +194 -0
- package/dist/lib/config/auth.d.ts.map +1 -0
- package/dist/lib/config/auth.js +216 -0
- package/dist/lib/config/auth.js.map +1 -0
- package/dist/lib/config/branding.d.ts +14 -0
- package/dist/lib/config/branding.d.ts.map +1 -0
- package/dist/lib/config/branding.js +37 -0
- package/dist/lib/config/branding.js.map +1 -0
- package/dist/lib/config/cleanup.d.ts +59 -0
- package/dist/lib/config/cleanup.d.ts.map +1 -0
- package/dist/lib/config/cleanup.js +119 -0
- package/dist/lib/config/cleanup.js.map +1 -0
- package/dist/lib/config/client.d.ts +74 -0
- package/dist/lib/config/client.d.ts.map +1 -0
- package/dist/lib/config/client.js +195 -0
- package/dist/lib/config/client.js.map +1 -0
- package/dist/lib/config/database.d.ts +8 -0
- package/dist/lib/config/database.d.ts.map +1 -0
- package/dist/lib/config/database.js +8 -0
- package/dist/lib/config/database.js.map +1 -0
- package/dist/lib/config/email.d.ts +17 -0
- package/dist/lib/config/email.d.ts.map +1 -0
- package/dist/lib/config/email.js +7 -0
- package/dist/lib/config/email.js.map +1 -0
- package/dist/lib/config/frontend.d.ts +12 -0
- package/dist/lib/config/frontend.d.ts.map +1 -0
- package/dist/lib/config/frontend.js +7 -0
- package/dist/lib/config/frontend.js.map +1 -0
- package/dist/lib/config/i18n.d.ts +31 -0
- package/dist/lib/config/i18n.d.ts.map +1 -0
- package/dist/lib/config/i18n.js +23 -0
- package/dist/lib/config/i18n.js.map +1 -0
- package/dist/lib/config/identity-providers.d.ts +70 -0
- package/dist/lib/config/identity-providers.d.ts.map +1 -0
- package/dist/lib/config/identity-providers.js +88 -0
- package/dist/lib/config/identity-providers.js.map +1 -0
- package/dist/lib/config/index.d.ts +43 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +22 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/logging.d.ts +52 -0
- package/dist/lib/config/logging.d.ts.map +1 -0
- package/dist/lib/config/logging.js +41 -0
- package/dist/lib/config/logging.js.map +1 -0
- package/dist/lib/config/openapi.d.ts +15 -0
- package/dist/lib/config/openapi.d.ts.map +1 -0
- package/dist/lib/config/openapi.js +28 -0
- package/dist/lib/config/openapi.js.map +1 -0
- package/dist/lib/config/registration.d.ts +15 -0
- package/dist/lib/config/registration.d.ts.map +1 -0
- package/dist/lib/config/registration.js +24 -0
- package/dist/lib/config/registration.js.map +1 -0
- package/dist/lib/config/resolved.d.ts +249 -0
- package/dist/lib/config/resolved.d.ts.map +1 -0
- package/dist/lib/config/resolved.js +47 -0
- package/dist/lib/config/resolved.js.map +1 -0
- package/dist/lib/config/scheduler.d.ts +52 -0
- package/dist/lib/config/scheduler.d.ts.map +1 -0
- package/dist/lib/config/scheduler.js +20 -0
- package/dist/lib/config/scheduler.js.map +1 -0
- package/dist/lib/config/security.d.ts +11 -0
- package/dist/lib/config/security.d.ts.map +1 -0
- package/dist/lib/config/security.js +65 -0
- package/dist/lib/config/security.js.map +1 -0
- package/dist/lib/config/server.d.ts +13 -0
- package/dist/lib/config/server.d.ts.map +1 -0
- package/dist/lib/config/server.js +57 -0
- package/dist/lib/config/server.js.map +1 -0
- package/dist/lib/config/terms.d.ts +47 -0
- package/dist/lib/config/terms.d.ts.map +1 -0
- package/dist/lib/config/terms.js +71 -0
- package/dist/lib/config/terms.js.map +1 -0
- package/dist/lib/config/tokens.d.ts +32 -0
- package/dist/lib/config/tokens.d.ts.map +1 -0
- package/dist/lib/config/tokens.js +47 -0
- package/dist/lib/config/tokens.js.map +1 -0
- package/dist/lib/config/url-policy.d.ts +4 -0
- package/dist/lib/config/url-policy.d.ts.map +1 -0
- package/dist/lib/config/url-policy.js +38 -0
- package/dist/lib/config/url-policy.js.map +1 -0
- package/dist/lib/config/user.d.ts +22 -0
- package/dist/lib/config/user.d.ts.map +1 -0
- package/dist/lib/config/user.js +22 -0
- package/dist/lib/config/user.js.map +1 -0
- package/dist/lib/crypto.d.ts +106 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +263 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/database/entities.d.ts +10 -0
- package/dist/lib/database/entities.d.ts.map +1 -0
- package/dist/lib/database/entities.js +51 -0
- package/dist/lib/database/entities.js.map +1 -0
- package/dist/lib/duration.d.ts +44 -0
- package/dist/lib/duration.d.ts.map +1 -0
- package/dist/lib/duration.js +103 -0
- package/dist/lib/duration.js.map +1 -0
- package/dist/lib/email-pattern.d.ts +16 -0
- package/dist/lib/email-pattern.d.ts.map +1 -0
- package/dist/lib/email-pattern.js +41 -0
- package/dist/lib/email-pattern.js.map +1 -0
- package/dist/lib/escape-html.d.ts +7 -0
- package/dist/lib/escape-html.d.ts.map +1 -0
- package/dist/lib/escape-html.js +14 -0
- package/dist/lib/escape-html.js.map +1 -0
- package/dist/lib/frontend/proxy.d.ts +24 -0
- package/dist/lib/frontend/proxy.d.ts.map +1 -0
- package/dist/lib/frontend/proxy.js +38 -0
- package/dist/lib/frontend/proxy.js.map +1 -0
- package/dist/lib/frontend/static.d.ts +21 -0
- package/dist/lib/frontend/static.d.ts.map +1 -0
- package/dist/lib/frontend/static.js +108 -0
- package/dist/lib/frontend/static.js.map +1 -0
- package/dist/lib/interpolate-html.d.ts +34 -0
- package/dist/lib/interpolate-html.d.ts.map +1 -0
- package/dist/lib/interpolate-html.js +61 -0
- package/dist/lib/interpolate-html.js.map +1 -0
- package/dist/lib/ip-utils.d.ts +61 -0
- package/dist/lib/ip-utils.d.ts.map +1 -0
- package/dist/lib/ip-utils.js +213 -0
- package/dist/lib/ip-utils.js.map +1 -0
- package/dist/lib/locale.d.ts +57 -0
- package/dist/lib/locale.d.ts.map +1 -0
- package/dist/lib/locale.js +25 -0
- package/dist/lib/locale.js.map +1 -0
- package/dist/lib/logger.d.ts +14 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +41 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/openapi.d.ts +35 -0
- package/dist/lib/openapi.d.ts.map +1 -0
- package/dist/lib/openapi.js +33 -0
- package/dist/lib/openapi.js.map +1 -0
- package/dist/lib/password-policy.d.ts +39 -0
- package/dist/lib/password-policy.d.ts.map +1 -0
- package/dist/lib/password-policy.js +51 -0
- package/dist/lib/password-policy.js.map +1 -0
- package/dist/lib/pkce.d.ts +26 -0
- package/dist/lib/pkce.d.ts.map +1 -0
- package/dist/lib/pkce.js +59 -0
- package/dist/lib/pkce.js.map +1 -0
- package/dist/lib/scopes.d.ts +10 -0
- package/dist/lib/scopes.d.ts.map +1 -0
- package/dist/lib/scopes.js +38 -0
- package/dist/lib/scopes.js.map +1 -0
- package/dist/lib/swagger-tags.d.ts +16 -0
- package/dist/lib/swagger-tags.d.ts.map +1 -0
- package/dist/lib/swagger-tags.js +16 -0
- package/dist/lib/swagger-tags.js.map +1 -0
- package/dist/middleware/auth.d.ts +67 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +149 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/csrf.d.ts +2 -0
- package/dist/middleware/csrf.d.ts.map +1 -0
- package/dist/middleware/csrf.js +51 -0
- package/dist/middleware/csrf.js.map +1 -0
- package/dist/middleware/logger.d.ts +18 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +38 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/mikro-orm.d.ts +3 -0
- package/dist/middleware/mikro-orm.d.ts.map +1 -0
- package/dist/middleware/mikro-orm.js +11 -0
- package/dist/middleware/mikro-orm.js.map +1 -0
- package/dist/middleware/services.d.ts +8 -0
- package/dist/middleware/services.d.ts.map +1 -0
- package/dist/middleware/services.js +8 -0
- package/dist/middleware/services.js.map +1 -0
- package/dist/middleware/session.d.ts +107 -0
- package/dist/middleware/session.d.ts.map +1 -0
- package/dist/middleware/session.js +185 -0
- package/dist/middleware/session.js.map +1 -0
- package/dist/middleware/trusted-proxy-guard.d.ts +7 -0
- package/dist/middleware/trusted-proxy-guard.d.ts.map +1 -0
- package/dist/middleware/trusted-proxy-guard.js +34 -0
- package/dist/middleware/trusted-proxy-guard.js.map +1 -0
- package/dist/migrations/postgres/Migration20260509171036_initial.d.ts +5 -0
- package/dist/migrations/postgres/Migration20260509171036_initial.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260509171036_initial.js +246 -0
- package/dist/migrations/postgres/Migration20260509171036_initial.js.map +1 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js +15 -0
- package/dist/migrations/postgres/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/postgres/Migration20260619075007.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260619075007.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260619075007.js +86 -0
- package/dist/migrations/postgres/Migration20260619075007.js.map +1 -0
- package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.js +12 -0
- package/dist/migrations/postgres/Migration20260619191600_unique_oauth_client_client_id.js.map +1 -0
- package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.js +11 -0
- package/dist/migrations/postgres/Migration20260620025358_add_oauth_client_skip_consent.js.map +1 -0
- package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.js +11 -0
- package/dist/migrations/postgres/Migration20260624190500_add_oauth_device_denied_at.js.map +1 -0
- package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.js +14 -0
- package/dist/migrations/postgres/Migration20260624223000_add_oauth_device_poll_state.js.map +1 -0
- package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts +6 -0
- package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -0
- package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.js +10 -0
- package/dist/migrations/postgres/Migration20260626103000_allow_revoked_token_without_user.js.map +1 -0
- package/dist/migrations/postgres/index.d.ts +3 -0
- package/dist/migrations/postgres/index.d.ts.map +1 -0
- package/dist/migrations/postgres/index.js +19 -0
- package/dist/migrations/postgres/index.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts +5 -0
- package/dist/migrations/sqlite/Migration20260509171226_initial.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260509171226_initial.js +62 -0
- package/dist/migrations/sqlite/Migration20260509171226_initial.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts +5 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js +13 -0
- package/dist/migrations/sqlite/Migration20260512120000_add_scheduler_jobs.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260619075330.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260619075330.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260619075330.js +57 -0
- package/dist/migrations/sqlite/Migration20260619075330.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.js +12 -0
- package/dist/migrations/sqlite/Migration20260619191600_unique_oauth_client_client_id.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.js +10 -0
- package/dist/migrations/sqlite/Migration20260620025358_add_oauth_client_skip_consent.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.js +10 -0
- package/dist/migrations/sqlite/Migration20260624190500_add_oauth_device_denied_at.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.js +12 -0
- package/dist/migrations/sqlite/Migration20260624223000_add_oauth_device_poll_state.js.map +1 -0
- package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts +6 -0
- package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.d.ts.map +1 -0
- package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.js +28 -0
- package/dist/migrations/sqlite/Migration20260626103000_allow_revoked_token_without_user.js.map +1 -0
- package/dist/migrations/sqlite/index.d.ts +3 -0
- package/dist/migrations/sqlite/index.d.ts.map +1 -0
- package/dist/migrations/sqlite/index.js +19 -0
- package/dist/migrations/sqlite/index.js.map +1 -0
- package/dist/repositories/background-job.repository.d.ts +5 -0
- package/dist/repositories/background-job.repository.d.ts.map +1 -0
- package/dist/repositories/background-job.repository.js +4 -0
- package/dist/repositories/background-job.repository.js.map +1 -0
- package/dist/repositories/email-verification.repository.d.ts +18 -0
- package/dist/repositories/email-verification.repository.d.ts.map +1 -0
- package/dist/repositories/email-verification.repository.js +47 -0
- package/dist/repositories/email-verification.repository.js.map +1 -0
- package/dist/repositories/jwt-key.repository.d.ts +49 -0
- package/dist/repositories/jwt-key.repository.d.ts.map +1 -0
- package/dist/repositories/jwt-key.repository.js +72 -0
- package/dist/repositories/jwt-key.repository.js.map +1 -0
- package/dist/repositories/oauth-client.repository.d.ts +5 -0
- package/dist/repositories/oauth-client.repository.d.ts.map +1 -0
- package/dist/repositories/oauth-client.repository.js +4 -0
- package/dist/repositories/oauth-client.repository.js.map +1 -0
- package/dist/repositories/oauth-code.repository.d.ts +24 -0
- package/dist/repositories/oauth-code.repository.d.ts.map +1 -0
- package/dist/repositories/oauth-code.repository.js +47 -0
- package/dist/repositories/oauth-code.repository.js.map +1 -0
- package/dist/repositories/oauth-device-code.repository.d.ts +29 -0
- package/dist/repositories/oauth-device-code.repository.d.ts.map +1 -0
- package/dist/repositories/oauth-device-code.repository.js +110 -0
- package/dist/repositories/oauth-device-code.repository.js.map +1 -0
- package/dist/repositories/password-reset.repository.d.ts +19 -0
- package/dist/repositories/password-reset.repository.d.ts.map +1 -0
- package/dist/repositories/password-reset.repository.js +53 -0
- package/dist/repositories/password-reset.repository.js.map +1 -0
- package/dist/repositories/pending-oauth-registration.repository.d.ts +38 -0
- package/dist/repositories/pending-oauth-registration.repository.d.ts.map +1 -0
- package/dist/repositories/pending-oauth-registration.repository.js +50 -0
- package/dist/repositories/pending-oauth-registration.repository.js.map +1 -0
- package/dist/repositories/revoked-token.repository.d.ts +52 -0
- package/dist/repositories/revoked-token.repository.d.ts.map +1 -0
- package/dist/repositories/revoked-token.repository.js +86 -0
- package/dist/repositories/revoked-token.repository.js.map +1 -0
- package/dist/repositories/scheduler-job.repository.d.ts +5 -0
- package/dist/repositories/scheduler-job.repository.d.ts.map +1 -0
- package/dist/repositories/scheduler-job.repository.js +4 -0
- package/dist/repositories/scheduler-job.repository.js.map +1 -0
- package/dist/repositories/terms-content.repository.d.ts +5 -0
- package/dist/repositories/terms-content.repository.d.ts.map +1 -0
- package/dist/repositories/terms-content.repository.js +4 -0
- package/dist/repositories/terms-content.repository.js.map +1 -0
- package/dist/repositories/terms.repository.d.ts +9 -0
- package/dist/repositories/terms.repository.d.ts.map +1 -0
- package/dist/repositories/terms.repository.js +12 -0
- package/dist/repositories/terms.repository.js.map +1 -0
- package/dist/repositories/user-consent.repository.d.ts +22 -0
- package/dist/repositories/user-consent.repository.d.ts.map +1 -0
- package/dist/repositories/user-consent.repository.js +51 -0
- package/dist/repositories/user-consent.repository.js.map +1 -0
- package/dist/repositories/user-oauth.repository.d.ts +68 -0
- package/dist/repositories/user-oauth.repository.d.ts.map +1 -0
- package/dist/repositories/user-oauth.repository.js +94 -0
- package/dist/repositories/user-oauth.repository.js.map +1 -0
- package/dist/repositories/user-passkey.repository.d.ts +193 -0
- package/dist/repositories/user-passkey.repository.d.ts.map +1 -0
- package/dist/repositories/user-passkey.repository.js +61 -0
- package/dist/repositories/user-passkey.repository.js.map +1 -0
- package/dist/repositories/user-terms-consent.repository.d.ts +38 -0
- package/dist/repositories/user-terms-consent.repository.d.ts.map +1 -0
- package/dist/repositories/user-terms-consent.repository.js +71 -0
- package/dist/repositories/user-terms-consent.repository.js.map +1 -0
- package/dist/repositories/user-totp-recovery-code.repository.d.ts +388 -0
- package/dist/repositories/user-totp-recovery-code.repository.d.ts.map +1 -0
- package/dist/repositories/user-totp-recovery-code.repository.js +41 -0
- package/dist/repositories/user-totp-recovery-code.repository.js.map +1 -0
- package/dist/repositories/user-totp.repository.d.ts +582 -0
- package/dist/repositories/user-totp.repository.d.ts.map +1 -0
- package/dist/repositories/user-totp.repository.js +56 -0
- package/dist/repositories/user-totp.repository.js.map +1 -0
- package/dist/repositories/user.repository.d.ts +34 -0
- package/dist/repositories/user.repository.d.ts.map +1 -0
- package/dist/repositories/user.repository.js +74 -0
- package/dist/repositories/user.repository.js.map +1 -0
- package/dist/routes/.well-known/index.d.ts +39 -0
- package/dist/routes/.well-known/index.d.ts.map +1 -0
- package/dist/routes/.well-known/index.js +4 -0
- package/dist/routes/.well-known/index.js.map +1 -0
- package/dist/routes/.well-known/openid-configuration/get.d.ts +46 -0
- package/dist/routes/.well-known/openid-configuration/get.d.ts.map +1 -0
- package/dist/routes/.well-known/openid-configuration/get.js +19 -0
- package/dist/routes/.well-known/openid-configuration/get.js.map +1 -0
- package/dist/routes/api/admin/index.d.ts +185 -0
- package/dist/routes/api/admin/index.d.ts.map +1 -0
- package/dist/routes/api/admin/index.js +13 -0
- package/dist/routes/api/admin/index.js.map +1 -0
- package/dist/routes/api/admin/me/get.d.ts +26 -0
- package/dist/routes/api/admin/me/get.d.ts.map +1 -0
- package/dist/routes/api/admin/me/get.js +29 -0
- package/dist/routes/api/admin/me/get.js.map +1 -0
- package/dist/routes/api/admin/users/index.d.ts +162 -0
- package/dist/routes/api/admin/users/index.d.ts.map +1 -0
- package/dist/routes/api/admin/users/index.js +166 -0
- package/dist/routes/api/admin/users/index.js.map +1 -0
- package/dist/routes/api/auth/2fa/methods/get.d.ts +14 -0
- package/dist/routes/api/auth/2fa/methods/get.d.ts.map +1 -0
- package/dist/routes/api/auth/2fa/methods/get.js +50 -0
- package/dist/routes/api/auth/2fa/methods/get.js.map +1 -0
- package/dist/routes/api/auth/accounts/get.d.ts +28 -0
- package/dist/routes/api/auth/accounts/get.d.ts.map +1 -0
- package/dist/routes/api/auth/accounts/get.js +49 -0
- package/dist/routes/api/auth/accounts/get.js.map +1 -0
- package/dist/routes/api/auth/accounts/remove.post.d.ts +30 -0
- package/dist/routes/api/auth/accounts/remove.post.d.ts.map +1 -0
- package/dist/routes/api/auth/accounts/remove.post.js +32 -0
- package/dist/routes/api/auth/accounts/remove.post.js.map +1 -0
- package/dist/routes/api/auth/accounts/select.post.d.ts +31 -0
- package/dist/routes/api/auth/accounts/select.post.d.ts.map +1 -0
- package/dist/routes/api/auth/accounts/select.post.js +26 -0
- package/dist/routes/api/auth/accounts/select.post.js.map +1 -0
- package/dist/routes/api/auth/email/resend/post.d.ts +22 -0
- package/dist/routes/api/auth/email/resend/post.d.ts.map +1 -0
- package/dist/routes/api/auth/email/resend/post.js +64 -0
- package/dist/routes/api/auth/email/resend/post.js.map +1 -0
- package/dist/routes/api/auth/email/verify/post.d.ts +30 -0
- package/dist/routes/api/auth/email/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/email/verify/post.js +55 -0
- package/dist/routes/api/auth/email/verify/post.js.map +1 -0
- package/dist/routes/api/auth/index.d.ts +372 -0
- package/dist/routes/api/auth/index.d.ts.map +1 -0
- package/dist/routes/api/auth/index.js +33 -0
- package/dist/routes/api/auth/index.js.map +1 -0
- package/dist/routes/api/auth/login/post.d.ts +31 -0
- package/dist/routes/api/auth/login/post.d.ts.map +1 -0
- package/dist/routes/api/auth/login/post.js +75 -0
- package/dist/routes/api/auth/login/post.js.map +1 -0
- package/dist/routes/api/auth/logout/post.d.ts +14 -0
- package/dist/routes/api/auth/logout/post.d.ts.map +1 -0
- package/dist/routes/api/auth/logout/post.js +21 -0
- package/dist/routes/api/auth/logout/post.js.map +1 -0
- package/dist/routes/api/auth/passkey/options/post.d.ts +31 -0
- package/dist/routes/api/auth/passkey/options/post.d.ts.map +1 -0
- package/dist/routes/api/auth/passkey/options/post.js +43 -0
- package/dist/routes/api/auth/passkey/options/post.js.map +1 -0
- package/dist/routes/api/auth/passkey/verify/post.d.ts +42 -0
- package/dist/routes/api/auth/passkey/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/passkey/verify/post.js +75 -0
- package/dist/routes/api/auth/passkey/verify/post.js.map +1 -0
- package/dist/routes/api/auth/password/forgot/post.d.ts +22 -0
- package/dist/routes/api/auth/password/forgot/post.d.ts.map +1 -0
- package/dist/routes/api/auth/password/forgot/post.js +72 -0
- package/dist/routes/api/auth/password/forgot/post.js.map +1 -0
- package/dist/routes/api/auth/password/reset/post.d.ts +19 -0
- package/dist/routes/api/auth/password/reset/post.d.ts.map +1 -0
- package/dist/routes/api/auth/password/reset/post.js +62 -0
- package/dist/routes/api/auth/password/reset/post.js.map +1 -0
- package/dist/routes/api/auth/register/post.d.ts +40 -0
- package/dist/routes/api/auth/register/post.d.ts.map +1 -0
- package/dist/routes/api/auth/register/post.js +95 -0
- package/dist/routes/api/auth/register/post.js.map +1 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.d.ts +37 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.js +68 -0
- package/dist/routes/api/auth/totp/recovery/verify/post.js.map +1 -0
- package/dist/routes/api/auth/totp/verify/post.d.ts +30 -0
- package/dist/routes/api/auth/totp/verify/post.d.ts.map +1 -0
- package/dist/routes/api/auth/totp/verify/post.js +59 -0
- package/dist/routes/api/auth/totp/verify/post.js.map +1 -0
- package/dist/routes/api/config/get.d.ts +76 -0
- package/dist/routes/api/config/get.d.ts.map +1 -0
- package/dist/routes/api/config/get.js +84 -0
- package/dist/routes/api/config/get.js.map +1 -0
- package/dist/routes/api/config/index.d.ts +76 -0
- package/dist/routes/api/config/index.d.ts.map +1 -0
- package/dist/routes/api/config/index.js +4 -0
- package/dist/routes/api/config/index.js.map +1 -0
- package/dist/routes/api/consent/get.d.ts +37 -0
- package/dist/routes/api/consent/get.d.ts.map +1 -0
- package/dist/routes/api/consent/get.js +73 -0
- package/dist/routes/api/consent/get.js.map +1 -0
- package/dist/routes/api/consent/index.d.ts +65 -0
- package/dist/routes/api/consent/index.d.ts.map +1 -0
- package/dist/routes/api/consent/index.js +7 -0
- package/dist/routes/api/consent/index.js.map +1 -0
- package/dist/routes/api/consent/post.d.ts +44 -0
- package/dist/routes/api/consent/post.d.ts.map +1 -0
- package/dist/routes/api/consent/post.js +286 -0
- package/dist/routes/api/consent/post.js.map +1 -0
- package/dist/routes/api/docs/get.d.ts +17 -0
- package/dist/routes/api/docs/get.d.ts.map +1 -0
- package/dist/routes/api/docs/get.js +19 -0
- package/dist/routes/api/docs/get.js.map +1 -0
- package/dist/routes/api/docs/index.d.ts +12 -0
- package/dist/routes/api/docs/index.d.ts.map +1 -0
- package/dist/routes/api/docs/index.js +4 -0
- package/dist/routes/api/docs/index.js.map +1 -0
- package/dist/routes/api/health/get.d.ts +36 -0
- package/dist/routes/api/health/get.d.ts.map +1 -0
- package/dist/routes/api/health/get.js +64 -0
- package/dist/routes/api/health/get.js.map +1 -0
- package/dist/routes/api/health/index.d.ts +66 -0
- package/dist/routes/api/health/index.d.ts.map +1 -0
- package/dist/routes/api/health/index.js +9 -0
- package/dist/routes/api/health/index.js.map +1 -0
- package/dist/routes/api/health/live/get.d.ts +20 -0
- package/dist/routes/api/health/live/get.d.ts.map +1 -0
- package/dist/routes/api/health/live/get.js +28 -0
- package/dist/routes/api/health/live/get.js.map +1 -0
- package/dist/routes/api/health/ready/get.d.ts +35 -0
- package/dist/routes/api/health/ready/get.d.ts.map +1 -0
- package/dist/routes/api/health/ready/get.js +60 -0
- package/dist/routes/api/health/ready/get.js.map +1 -0
- package/dist/routes/api/index.d.ts +1286 -0
- package/dist/routes/api/index.d.ts.map +1 -0
- package/dist/routes/api/index.js +21 -0
- package/dist/routes/api/index.js.map +1 -0
- package/dist/routes/api/oauth/_provider/authorize/get.d.ts +21 -0
- package/dist/routes/api/oauth/_provider/authorize/get.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/authorize/get.js +72 -0
- package/dist/routes/api/oauth/_provider/authorize/get.js.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/get.d.ts +42 -0
- package/dist/routes/api/oauth/_provider/callback/get.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/get.js +146 -0
- package/dist/routes/api/oauth/_provider/callback/get.js.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/post.d.ts +42 -0
- package/dist/routes/api/oauth/_provider/callback/post.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/callback/post.js +178 -0
- package/dist/routes/api/oauth/_provider/callback/post.js.map +1 -0
- package/dist/routes/api/oauth/_provider/delete.d.ts +18 -0
- package/dist/routes/api/oauth/_provider/delete.d.ts.map +1 -0
- package/dist/routes/api/oauth/_provider/delete.js +62 -0
- package/dist/routes/api/oauth/_provider/delete.js.map +1 -0
- package/dist/routes/api/oauth/authorization-context/get.d.ts +38 -0
- package/dist/routes/api/oauth/authorization-context/get.d.ts.map +1 -0
- package/dist/routes/api/oauth/authorization-context/get.js +70 -0
- package/dist/routes/api/oauth/authorization-context/get.js.map +1 -0
- package/dist/routes/api/oauth/index.d.ts +142 -0
- package/dist/routes/api/oauth/index.d.ts.map +1 -0
- package/dist/routes/api/oauth/index.js +13 -0
- package/dist/routes/api/oauth/index.js.map +1 -0
- package/dist/routes/api/terms/consent/post.d.ts +29 -0
- package/dist/routes/api/terms/consent/post.d.ts.map +1 -0
- package/dist/routes/api/terms/consent/post.js +111 -0
- package/dist/routes/api/terms/consent/post.js.map +1 -0
- package/dist/routes/api/terms/get.d.ts +40 -0
- package/dist/routes/api/terms/get.d.ts.map +1 -0
- package/dist/routes/api/terms/get.js +53 -0
- package/dist/routes/api/terms/get.js.map +1 -0
- package/dist/routes/api/terms/index.d.ts +55 -0
- package/dist/routes/api/terms/index.d.ts.map +1 -0
- package/dist/routes/api/terms/index.js +7 -0
- package/dist/routes/api/terms/index.js.map +1 -0
- package/dist/routes/api/user/delete.d.ts +21 -0
- package/dist/routes/api/user/delete.d.ts.map +1 -0
- package/dist/routes/api/user/delete.js +89 -0
- package/dist/routes/api/user/delete.js.map +1 -0
- package/dist/routes/api/user/index.d.ts +337 -0
- package/dist/routes/api/user/index.d.ts.map +1 -0
- package/dist/routes/api/user/index.js +35 -0
- package/dist/routes/api/user/index.js.map +1 -0
- package/dist/routes/api/user/oauth-accounts/get.d.ts +23 -0
- package/dist/routes/api/user/oauth-accounts/get.d.ts.map +1 -0
- package/dist/routes/api/user/oauth-accounts/get.js +58 -0
- package/dist/routes/api/user/oauth-accounts/get.js.map +1 -0
- package/dist/routes/api/user/passkeys/_id/delete.d.ts +18 -0
- package/dist/routes/api/user/passkeys/_id/delete.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/_id/delete.js +87 -0
- package/dist/routes/api/user/passkeys/_id/delete.js.map +1 -0
- package/dist/routes/api/user/passkeys/_id/patch.d.ts +22 -0
- package/dist/routes/api/user/passkeys/_id/patch.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/_id/patch.js +64 -0
- package/dist/routes/api/user/passkeys/_id/patch.js.map +1 -0
- package/dist/routes/api/user/passkeys/get.d.ts +21 -0
- package/dist/routes/api/user/passkeys/get.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/get.js +52 -0
- package/dist/routes/api/user/passkeys/get.js.map +1 -0
- package/dist/routes/api/user/passkeys/register/options/post.d.ts +55 -0
- package/dist/routes/api/user/passkeys/register/options/post.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/register/options/post.js +74 -0
- package/dist/routes/api/user/passkeys/register/options/post.js.map +1 -0
- package/dist/routes/api/user/passkeys/register/verify/post.d.ts +51 -0
- package/dist/routes/api/user/passkeys/register/verify/post.d.ts.map +1 -0
- package/dist/routes/api/user/passkeys/register/verify/post.js +95 -0
- package/dist/routes/api/user/passkeys/register/verify/post.js.map +1 -0
- package/dist/routes/api/user/password/delete.d.ts +23 -0
- package/dist/routes/api/user/password/delete.d.ts.map +1 -0
- package/dist/routes/api/user/password/delete.js +78 -0
- package/dist/routes/api/user/password/delete.js.map +1 -0
- package/dist/routes/api/user/password/post.d.ts +23 -0
- package/dist/routes/api/user/password/post.d.ts.map +1 -0
- package/dist/routes/api/user/password/post.js +81 -0
- package/dist/routes/api/user/password/post.js.map +1 -0
- package/dist/routes/api/user/password/put.d.ts +24 -0
- package/dist/routes/api/user/password/put.d.ts.map +1 -0
- package/dist/routes/api/user/password/put.js +74 -0
- package/dist/routes/api/user/password/put.js.map +1 -0
- package/dist/routes/api/user/session/get.d.ts +33 -0
- package/dist/routes/api/user/session/get.d.ts.map +1 -0
- package/dist/routes/api/user/session/get.js +36 -0
- package/dist/routes/api/user/session/get.js.map +1 -0
- package/dist/routes/api/user/totp/confirm/post.d.ts +33 -0
- package/dist/routes/api/user/totp/confirm/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/confirm/post.js +73 -0
- package/dist/routes/api/user/totp/confirm/post.js.map +1 -0
- package/dist/routes/api/user/totp/delete.d.ts +23 -0
- package/dist/routes/api/user/totp/delete.d.ts.map +1 -0
- package/dist/routes/api/user/totp/delete.js +74 -0
- package/dist/routes/api/user/totp/delete.js.map +1 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts +18 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.js +54 -0
- package/dist/routes/api/user/totp/recovery/regenerate/post.js.map +1 -0
- package/dist/routes/api/user/totp/setup/post.d.ts +22 -0
- package/dist/routes/api/user/totp/setup/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/setup/post.js +82 -0
- package/dist/routes/api/user/totp/setup/post.js.map +1 -0
- package/dist/routes/api/user/totp/verify/post.d.ts +23 -0
- package/dist/routes/api/user/totp/verify/post.d.ts.map +1 -0
- package/dist/routes/api/user/totp/verify/post.js +71 -0
- package/dist/routes/api/user/totp/verify/post.js.map +1 -0
- package/dist/routes/index.d.ts +1591 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +9 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/oauth/.well-known/jwks/get.d.ts +24 -0
- package/dist/routes/oauth/.well-known/jwks/get.d.ts.map +1 -0
- package/dist/routes/oauth/.well-known/jwks/get.js +41 -0
- package/dist/routes/oauth/.well-known/jwks/get.js.map +1 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts +68 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.d.ts.map +1 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.js +193 -0
- package/dist/routes/oauth/.well-known/openid-configuration/get.js.map +1 -0
- package/dist/routes/oauth/authorize/get.d.ts +34 -0
- package/dist/routes/oauth/authorize/get.d.ts.map +1 -0
- package/dist/routes/oauth/authorize/get.js +179 -0
- package/dist/routes/oauth/authorize/get.js.map +1 -0
- package/dist/routes/oauth/client-auth.d.ts +10 -0
- package/dist/routes/oauth/client-auth.d.ts.map +1 -0
- package/dist/routes/oauth/client-auth.js +57 -0
- package/dist/routes/oauth/client-auth.js.map +1 -0
- package/dist/routes/oauth/cors.d.ts +9 -0
- package/dist/routes/oauth/cors.d.ts.map +1 -0
- package/dist/routes/oauth/cors.js +55 -0
- package/dist/routes/oauth/cors.js.map +1 -0
- package/dist/routes/oauth/device/get-post.d.ts +29 -0
- package/dist/routes/oauth/device/get-post.d.ts.map +1 -0
- package/dist/routes/oauth/device/get-post.js +73 -0
- package/dist/routes/oauth/device/get-post.js.map +1 -0
- package/dist/routes/oauth/device-authorization/post.d.ts +25 -0
- package/dist/routes/oauth/device-authorization/post.d.ts.map +1 -0
- package/dist/routes/oauth/device-authorization/post.js +89 -0
- package/dist/routes/oauth/device-authorization/post.js.map +1 -0
- package/dist/routes/oauth/end-session/get.d.ts +34 -0
- package/dist/routes/oauth/end-session/get.d.ts.map +1 -0
- package/dist/routes/oauth/end-session/get.js +83 -0
- package/dist/routes/oauth/end-session/get.js.map +1 -0
- package/dist/routes/oauth/index.d.ts +272 -0
- package/dist/routes/oauth/index.d.ts.map +1 -0
- package/dist/routes/oauth/index.js +25 -0
- package/dist/routes/oauth/index.js.map +1 -0
- package/dist/routes/oauth/introspect/post.d.ts +29 -0
- package/dist/routes/oauth/introspect/post.d.ts.map +1 -0
- package/dist/routes/oauth/introspect/post.js +104 -0
- package/dist/routes/oauth/introspect/post.js.map +1 -0
- package/dist/routes/oauth/revoke/post.d.ts +22 -0
- package/dist/routes/oauth/revoke/post.d.ts.map +1 -0
- package/dist/routes/oauth/revoke/post.js +104 -0
- package/dist/routes/oauth/revoke/post.js.map +1 -0
- package/dist/routes/oauth/token/post.d.ts +31 -0
- package/dist/routes/oauth/token/post.d.ts.map +1 -0
- package/dist/routes/oauth/token/post.js +171 -0
- package/dist/routes/oauth/token/post.js.map +1 -0
- package/dist/routes/oauth/userinfo/get.d.ts +35 -0
- package/dist/routes/oauth/userinfo/get.d.ts.map +1 -0
- package/dist/routes/oauth/userinfo/get.js +94 -0
- package/dist/routes/oauth/userinfo/get.js.map +1 -0
- package/dist/schemas/error.d.ts +2354 -0
- package/dist/schemas/error.d.ts.map +1 -0
- package/dist/schemas/error.js +174 -0
- package/dist/schemas/error.js.map +1 -0
- package/dist/schemas/field.d.ts +92 -0
- package/dist/schemas/field.d.ts.map +1 -0
- package/dist/schemas/field.js +183 -0
- package/dist/schemas/field.js.map +1 -0
- package/dist/schemas/header.d.ts +7 -0
- package/dist/schemas/header.d.ts.map +1 -0
- package/dist/schemas/header.js +11 -0
- package/dist/schemas/header.js.map +1 -0
- package/dist/schemas/oauth.d.ts +26 -0
- package/dist/schemas/oauth.d.ts.map +1 -0
- package/dist/schemas/oauth.js +51 -0
- package/dist/schemas/oauth.js.map +1 -0
- package/dist/schemas/provider.d.ts +7 -0
- package/dist/schemas/provider.d.ts.map +1 -0
- package/dist/schemas/provider.js +31 -0
- package/dist/schemas/provider.js.map +1 -0
- package/dist/schemas/response.d.ts +678 -0
- package/dist/schemas/response.d.ts.map +1 -0
- package/dist/schemas/response.js +642 -0
- package/dist/schemas/response.js.map +1 -0
- package/dist/schemas/terms.d.ts +93 -0
- package/dist/schemas/terms.d.ts.map +1 -0
- package/dist/schemas/terms.js +109 -0
- package/dist/schemas/terms.js.map +1 -0
- package/dist/seeders/config.seeder.d.ts +23 -0
- package/dist/seeders/config.seeder.d.ts.map +1 -0
- package/dist/seeders/config.seeder.js +258 -0
- package/dist/seeders/config.seeder.js.map +1 -0
- package/dist/services/account-selection.service.d.ts +52 -0
- package/dist/services/account-selection.service.d.ts.map +1 -0
- package/dist/services/account-selection.service.js +120 -0
- package/dist/services/account-selection.service.js.map +1 -0
- package/dist/services/cleanup.service.d.ts +166 -0
- package/dist/services/cleanup.service.d.ts.map +1 -0
- package/dist/services/cleanup.service.js +605 -0
- package/dist/services/cleanup.service.js.map +1 -0
- package/dist/services/container.d.ts +229 -0
- package/dist/services/container.d.ts.map +1 -0
- package/dist/services/container.js +82 -0
- package/dist/services/container.js.map +1 -0
- package/dist/services/email.service.d.ts +69 -0
- package/dist/services/email.service.d.ts.map +1 -0
- package/dist/services/email.service.js +164 -0
- package/dist/services/email.service.js.map +1 -0
- package/dist/services/jwt.service.d.ts +331 -0
- package/dist/services/jwt.service.d.ts.map +1 -0
- package/dist/services/jwt.service.js +571 -0
- package/dist/services/jwt.service.js.map +1 -0
- package/dist/services/mikro.service.d.ts +49 -0
- package/dist/services/mikro.service.d.ts.map +1 -0
- package/dist/services/mikro.service.js +77 -0
- package/dist/services/mikro.service.js.map +1 -0
- package/dist/services/oauth-authorize.service.d.ts +144 -0
- package/dist/services/oauth-authorize.service.d.ts.map +1 -0
- package/dist/services/oauth-authorize.service.js +808 -0
- package/dist/services/oauth-authorize.service.js.map +1 -0
- package/dist/services/oauth-client.service.d.ts +44 -0
- package/dist/services/oauth-client.service.d.ts.map +1 -0
- package/dist/services/oauth-client.service.js +128 -0
- package/dist/services/oauth-client.service.js.map +1 -0
- package/dist/services/oauth-connect.service.d.ts +180 -0
- package/dist/services/oauth-connect.service.d.ts.map +1 -0
- package/dist/services/oauth-connect.service.js +730 -0
- package/dist/services/oauth-connect.service.js.map +1 -0
- package/dist/services/oauth-token.service.d.ts +180 -0
- package/dist/services/oauth-token.service.d.ts.map +1 -0
- package/dist/services/oauth-token.service.js +565 -0
- package/dist/services/oauth-token.service.js.map +1 -0
- package/dist/services/passkey.service.d.ts +73 -0
- package/dist/services/passkey.service.d.ts.map +1 -0
- package/dist/services/passkey.service.js +207 -0
- package/dist/services/passkey.service.js.map +1 -0
- package/dist/services/password-auth.service.d.ts +24 -0
- package/dist/services/password-auth.service.d.ts.map +1 -0
- package/dist/services/password-auth.service.js +87 -0
- package/dist/services/password-auth.service.js.map +1 -0
- package/dist/services/password-reset.service.d.ts +31 -0
- package/dist/services/password-reset.service.d.ts.map +1 -0
- package/dist/services/password-reset.service.js +54 -0
- package/dist/services/password-reset.service.js.map +1 -0
- package/dist/services/scheduler.service.d.ts +20 -0
- package/dist/services/scheduler.service.d.ts.map +1 -0
- package/dist/services/scheduler.service.js +85 -0
- package/dist/services/scheduler.service.js.map +1 -0
- package/dist/services/security.service.d.ts +17 -0
- package/dist/services/security.service.d.ts.map +1 -0
- package/dist/services/security.service.js +84 -0
- package/dist/services/security.service.js.map +1 -0
- package/dist/services/terms.service.d.ts +131 -0
- package/dist/services/terms.service.d.ts.map +1 -0
- package/dist/services/terms.service.js +210 -0
- package/dist/services/terms.service.js.map +1 -0
- package/dist/services/totp.service.d.ts +86 -0
- package/dist/services/totp.service.d.ts.map +1 -0
- package/dist/services/totp.service.js +244 -0
- package/dist/services/totp.service.js.map +1 -0
- package/dist/services/user-consent.service.d.ts +35 -0
- package/dist/services/user-consent.service.d.ts.map +1 -0
- package/dist/services/user-consent.service.js +45 -0
- package/dist/services/user-consent.service.js.map +1 -0
- package/dist/services/user.service.d.ts +87 -0
- package/dist/services/user.service.d.ts.map +1 -0
- package/dist/services/user.service.js +280 -0
- package/dist/services/user.service.js.map +1 -0
- package/package.json +249 -0
- package/public/assets/2fa-B5vLgDXQ.js +2 -0
- package/public/assets/2fa-B5vLgDXQ.js.map +1 -0
- package/public/assets/2fa-BqsM_D-X.js +2 -0
- package/public/assets/2fa-BqsM_D-X.js.map +1 -0
- package/public/assets/2fa-C5vUVgr_.js +2 -0
- package/public/assets/2fa-C5vUVgr_.js.map +1 -0
- package/public/assets/2fa-CCOTIHDZ.js +2 -0
- package/public/assets/2fa-CCOTIHDZ.js.map +1 -0
- package/public/assets/DialogHandle-BmtK2pRn.js +2 -0
- package/public/assets/DialogHandle-BmtK2pRn.js.map +1 -0
- package/public/assets/FieldItemContext-BeNfhOsU.js +2 -0
- package/public/assets/FieldItemContext-BeNfhOsU.js.map +1 -0
- package/public/assets/admin-BPijkLw-.js +2 -0
- package/public/assets/admin-BPijkLw-.js.map +1 -0
- package/public/assets/admin-users-DvPbw1Vq.js +2 -0
- package/public/assets/admin-users-DvPbw1Vq.js.map +1 -0
- package/public/assets/alert-leqyvHOp.js +2 -0
- package/public/assets/alert-leqyvHOp.js.map +1 -0
- package/public/assets/auth-choice-row-BCGjuedo.js +2 -0
- package/public/assets/auth-choice-row-BCGjuedo.js.map +1 -0
- package/public/assets/auth-field-DD8kvl--.js +2 -0
- package/public/assets/auth-field-DD8kvl--.js.map +1 -0
- package/public/assets/auth-footer-Cz5ivsDc.js +2 -0
- package/public/assets/auth-footer-Cz5ivsDc.js.map +1 -0
- package/public/assets/auth-layout-VtpryDof.js +2 -0
- package/public/assets/auth-layout-VtpryDof.js.map +1 -0
- package/public/assets/auth-page-header-CIn2E4zI.js +2 -0
- package/public/assets/auth-page-header-CIn2E4zI.js.map +1 -0
- package/public/assets/authorization-context-banner-SOuBHWIb.js +2 -0
- package/public/assets/authorization-context-banner-SOuBHWIb.js.map +1 -0
- package/public/assets/avatar-BEQjf2x6.js +2 -0
- package/public/assets/avatar-BEQjf2x6.js.map +1 -0
- package/public/assets/badge-CsOfUji0.js +2 -0
- package/public/assets/badge-CsOfUji0.js.map +1 -0
- package/public/assets/checkbox-gdHnSFQ-.js +2 -0
- package/public/assets/checkbox-gdHnSFQ-.js.map +1 -0
- package/public/assets/chevron-right-CN0jUyV0.js +2 -0
- package/public/assets/chevron-right-CN0jUyV0.js.map +1 -0
- package/public/assets/circle-check-6QTLhwM_.js +2 -0
- package/public/assets/circle-check-6QTLhwM_.js.map +1 -0
- package/public/assets/config-DTQCUlfZ.js +2 -0
- package/public/assets/config-DTQCUlfZ.js.map +1 -0
- package/public/assets/consent-BqqFDdsr.js +2 -0
- package/public/assets/consent-BqqFDdsr.js.map +1 -0
- package/public/assets/consent-CfRbz2R7.js +2 -0
- package/public/assets/consent-CfRbz2R7.js.map +1 -0
- package/public/assets/createLucideIcon-BPpAIXR_.js +2 -0
- package/public/assets/createLucideIcon-BPpAIXR_.js.map +1 -0
- package/public/assets/email-C5vUVgr_.js +2 -0
- package/public/assets/email-C5vUVgr_.js.map +1 -0
- package/public/assets/email-CKKakxPJ.js +2 -0
- package/public/assets/email-CKKakxPJ.js.map +1 -0
- package/public/assets/error-BMXxpgfR.js +2 -0
- package/public/assets/error-BMXxpgfR.js.map +1 -0
- package/public/assets/field-Cn4H1CUj.js +3 -0
- package/public/assets/field-Cn4H1CUj.js.map +1 -0
- package/public/assets/fingerprint-pattern-DP62Vk8x.js +2 -0
- package/public/assets/fingerprint-pattern-DP62Vk8x.js.map +1 -0
- package/public/assets/forgot-C5vUVgr_.js +2 -0
- package/public/assets/forgot-C5vUVgr_.js.map +1 -0
- package/public/assets/forgot-rO9sByfV.js +2 -0
- package/public/assets/forgot-rO9sByfV.js.map +1 -0
- package/public/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
- package/public/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
- package/public/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
- package/public/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
- package/public/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
- package/public/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
- package/public/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
- package/public/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
- package/public/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
- package/public/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
- package/public/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
- package/public/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
- package/public/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-10-400-normal-BLMYXIZq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-10-400-normal-DJrewyrW.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-10-600-normal-B5S02aip.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-10-600-normal-DP69BzJV.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-10-700-normal-9JfFFKCo.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-10-700-normal-Blnt0RhT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-100-400-normal-4_aXP0Hy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-100-400-normal-DsMZ2scz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-100-600-normal-Bolb9iqL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-100-600-normal-nIl-leH5.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-100-700-normal-Bkd0xED8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-100-700-normal-CvaNbDMd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-101-400-normal-DoWmZlZj.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-101-400-normal-y2nxydha.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-101-600-normal-BKchJvlk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-101-600-normal-BrpHYkNm.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-101-700-normal-CVueR0Vp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-101-700-normal-DJ1MIwHY.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-102-400-normal-BQfFShQ1.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-102-400-normal-Ca0txE7W.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-102-600-normal-B1Puw4D2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-102-600-normal-CUZjz5v8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-102-700-normal-BkK1TRsE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-102-700-normal-ZVcO00Fl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-103-400-normal-DHwmA74W.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-103-400-normal-DNs9Omj-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-103-600-normal-BW8Frffd.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-103-600-normal-tN_-CKym.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-103-700-normal-CXAkQppa.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-103-700-normal-DNgJaILb.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-104-400-normal-BmhZQdzl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-104-400-normal-CuKiid_t.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-104-600-normal-2KjU-YTd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-104-600-normal-Duw986jf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-104-700-normal-CYzW5SnO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-104-700-normal-Vn6i4czv.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-105-400-normal-BBf-_m9N.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-105-400-normal-CHWaGU9J.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-105-600-normal-CmUdXGK4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-105-600-normal-Eel3dN7e.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-105-700-normal-Cv9j40LU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-105-700-normal-DWwtLgxy.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-106-400-normal-CGlLvzZs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-106-400-normal-foxE5hHG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-106-600-normal-B1bzLzbH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-106-600-normal-tHp1RYGF.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-106-700-normal-BtC5W1lQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-106-700-normal-DuUOTgvs.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-107-400-normal-2yW6cSNP.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-107-400-normal-Dh4QR9Sa.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-107-600-normal-3L-o-gNc.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-107-600-normal-JAonwJOj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-107-700-normal-BPH5rI6C.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-107-700-normal-Cr7-iFW7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-108-400-normal-BKXuaz7L.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-108-400-normal-CMeK7Yoj.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-108-600-normal-9ormcCnp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-108-600-normal-CIZc2z7F.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-108-700-normal-BQqq_N37.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-108-700-normal-DKrl9gDv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-109-400-normal-BYkYsUMr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-109-400-normal-DLZ5N3wZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-109-600-normal-DgvmKVfh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-109-600-normal-J_8d2uPX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-109-700-normal-BKzoJI_l.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-109-700-normal-CgGmrF-h.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-11-400-normal-C0WskPfy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-11-400-normal-D4F8GONb.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-11-600-normal-HVxl9urI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-11-600-normal-U3d7dgox.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-11-700-normal-B_TMqNrG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-11-700-normal-DUhgBhd7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-110-400-normal-BiGMHdAV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-110-400-normal-CWciHSky.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-110-600-normal-BXI508QN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-110-600-normal-C3nYbUvy.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-110-700-normal-A9EL87rF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-110-700-normal-DjakDWxK.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-111-400-normal-36IKJEvJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-111-400-normal-DwkaZ2wL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-111-600-normal-B0FD3VdV.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-111-600-normal-DjZCOVOv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-111-700-normal-B2j03kCB.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-111-700-normal-Dv5sal4h.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-112-400-normal-DD55zx92.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-112-400-normal-DpWOC24h.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-112-600-normal-BkM4GSUi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-112-600-normal-C2q6NvAJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-112-700-normal-Ci_Zf1oH.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-112-700-normal-Fyn9YqrR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-113-400-normal-C-SwPUxy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-113-400-normal-ngLrg9Ph.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-113-600-normal-FVXa1K7W.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-113-600-normal-pSsmDa5a.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-113-700-normal-CmNR_-6d.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-113-700-normal-kzCap4I7.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-114-400-normal-D64L80iO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-114-400-normal-DkNQ39Bm.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-114-600-normal-CfAYQkvR.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-114-600-normal-DradD0b_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-114-700-normal-CXZm0WJV.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-114-700-normal-DSXuAVj8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-115-400-normal-BA3oFlL7.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-115-400-normal-DGp_yQCO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-115-600-normal-5l6N5_Bf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-115-600-normal-Bf5qTwLg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-115-700-normal-CCrS9Tpv.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-115-700-normal-DhiQdU1x.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-116-400-normal-BidJdmrW.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-116-400-normal-DcXtXIIt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-116-600-normal-Bwb7m1tn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-116-600-normal-DShPLUNp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-116-700-normal-C1DXoU6t.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-116-700-normal-C2BwbuD6.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-117-400-normal-Bq_d-uLr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-117-400-normal-hyG31T85.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-117-600-normal-CEeS0kan.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-117-600-normal-DJWr9iDJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-117-700-normal-C1ei5J70.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-117-700-normal-zPjtn9S1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-118-400-normal-DFkHFeXA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-118-400-normal-TSsLEGdp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-118-600-normal-Cvx3jb5D.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-118-600-normal-o_AOMkHJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-118-700-normal-BRNin0K2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-118-700-normal-DGkqcNAf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-119-400-normal-BUYaH2_l.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-119-400-normal-aBgyJQOx.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-119-600-normal-55p1b1wa.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-119-600-normal-BTu0jZJ-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-119-700-normal-3JOc_eI7.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-119-700-normal-BjmfPyZf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-12-400-normal-BmG4MYox.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-12-400-normal-quRUVnCJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-12-600-normal-B-m8VoGm.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-12-600-normal-CxDfRaaH.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-12-700-normal-C3oRnDW6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-12-700-normal-Dv1Y6qdB.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-13-400-normal-DBDHqw4h.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-13-400-normal-QmPj_vZd.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-13-600-normal-CedQxG0H.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-13-600-normal-CgJUuraA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-13-700-normal-DNIRDidW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-13-700-normal-DolJGsV8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-14-400-normal-CP-jldkl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-14-400-normal-DPGCrf4O.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-14-600-normal-36G4flWw.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-14-600-normal-aLRf_2tU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-14-700-normal-CzLCWhzW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-14-700-normal-IrHxc9AN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-15-400-normal-D_ILNbWZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-15-400-normal-DhL4usAp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-15-600-normal-CCiDkvZ0.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-15-600-normal-Cm8uzUfS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-15-700-normal-CH_tD5KV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-15-700-normal-qiD6EjpF.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-16-400-normal-CPpcNs7A.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-16-400-normal-DJJG1Tuz.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-16-600-normal-DN27F9tO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-16-600-normal-DZNod9fx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-16-700-normal-5x97iT4C.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-16-700-normal-Cjf1zCyl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-17-400-normal-Cz201O_t.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-17-400-normal-Xd0EQnSI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-17-600-normal-Dlo-tSr-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-17-600-normal-GFEV0OtD.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-17-700-normal-CxMAaJ8J.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-17-700-normal-pN8BDQje.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-18-400-normal-BiRcNUnW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-18-400-normal-DcRwXlcA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-18-600-normal-DjoWpWpr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-18-600-normal-ZWO03fli.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-18-700-normal-BRP-puz3.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-18-700-normal-C9acO00v.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-19-400-normal-BGI-mgYq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-19-400-normal-CAilAALt.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-19-600-normal-DjYSyktj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-19-600-normal-ce3oirTN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-19-700-normal-D-Zw0iJQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-19-700-normal-DDYMc675.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-20-400-normal-2E5UN6VC.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-20-400-normal-BQfFM2B0.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-20-600-normal-CYRAtz-I.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-20-600-normal-DwptQupD.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-20-700-normal-80GIv_X2.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-20-700-normal-Ca_HRr3E.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-21-400-normal-BFnRtDEF.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-21-400-normal-Zr4ScQUF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-21-600-normal-BA-omFPG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-21-600-normal-CVckMbS4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-21-700-normal-BPImLHVa.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-21-700-normal-CytBm2Nt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-22-400-normal-IznGQDkP.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-22-400-normal-qTFopCxn.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-22-600-normal-BWt9cZAr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-22-600-normal-DuqSwCFh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-22-700-normal--3UpG_YA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-22-700-normal-DnloFB68.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-23-400-normal-Bdkhc9Iw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-23-400-normal-BtixcB0-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-23-600-normal-Dq8e8WbN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-23-600-normal-O2srJ8a2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-23-700-normal-C-Wvz07b.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-23-700-normal-QWySKNit.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-24-400-normal-B3OOo0lL.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-24-400-normal-McxyvMnV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-24-600-normal-A46asPGd.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-24-600-normal-CTyo1FsZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-24-700-normal-Ira2Rc5z.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-24-700-normal-dhK6LPCU.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-25-400-normal-BFxbWz5n.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-25-400-normal-DFuJhyl7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-25-600-normal-B2RU3Dvp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-25-600-normal-DJ9_bhYp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-25-700-normal-6YS9BiKL.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-25-700-normal-CpbQwqpL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-26-400-normal-DNzE_dbG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-26-400-normal-D_cpF5EA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-26-600-normal-ByYIbTSk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-26-600-normal-Dblu0l-8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-26-700-normal-B-a8fp43.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-26-700-normal-oM62RKsO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-27-400-normal-CG_CPqz1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-27-400-normal-c2jdwsOE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-27-600-normal-3axrvVxa.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-27-600-normal-CffTHcnn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-27-700-normal-CFbifBY3.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-27-700-normal-MrPgyLwW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-28-400-normal-C5RxoJ3V.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-28-400-normal-DXIBRRx0.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-28-600-normal-BHA5xHG-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-28-600-normal-t8w8Pigz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-28-700-normal-CfJC1veY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-28-700-normal-DuTXC6M7.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-29-400-normal-4EOJmPpr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-29-400-normal-DPDbHGRJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-29-600-normal-Ca71NnU-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-29-600-normal-jeFY9Hf_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-29-700-normal-C11KYH68.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-29-700-normal-CzNKW3WB.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-3-400-normal-BpFIRrIG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-3-400-normal-CSnRHPqi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-3-600-normal-C7pAJQf3.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-3-600-normal-SFbjSSXG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-3-700-normal-57H5kXpk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-3-700-normal-BrLJmDFd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-30-400-normal-CE7Y9E5I.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-30-400-normal-CkxUuY_J.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-30-600-normal-B2Z1u9V0.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-30-600-normal-BNiX9WYe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-30-700-normal-BEFP-jPj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-30-700-normal-BarKnue-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-31-400-normal-CaOERqUu.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-31-400-normal-DQ8k7O-z.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-31-600-normal-ChsH3Xz1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-31-600-normal-DfrgvMVe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-31-700-normal-9QmoGV7n.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-31-700-normal-uPx24aJ3.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-32-400-normal-DCgv6PbD.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-32-400-normal-oBOpBx6K.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-32-600-normal-BVvFPwh-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-32-600-normal-C6iWVt4P.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-32-700-normal-BrzljjIv.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-32-700-normal-Ck00YIbi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-33-400-normal-7syfOPuJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-33-400-normal-CRgD0sTN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-33-600-normal-6C8BpThh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-33-600-normal-Di883cZY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-33-700-normal-BocR-vpi.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-33-700-normal-CQH8I4uz.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-34-400-normal-CW90qVjA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-34-400-normal-DteAo9_1.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-34-600-normal-BBai0ku9.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-34-600-normal-BUBreiOx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-34-700-normal-BQMQzFvO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-34-700-normal-BYKYx0HK.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-35-400-normal-_GHhCQ5l.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-35-400-normal-oyHCgG2o.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-35-600-normal-B3Re-brg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-35-600-normal-DSSj8dPk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-35-700-normal-BoDC0KzR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-35-700-normal-CvQah7db.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-36-400-normal-BizbVEtQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-36-400-normal-D7gQSpeq.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-36-600-normal-BiBUOoTN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-36-600-normal-CVgRkKvZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-36-700-normal-Cx600hZn.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-36-700-normal-Dxydenfw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-37-400-normal-B-iV2FCz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-37-400-normal-CrxhJitf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-37-600-normal-56davMJK.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-37-600-normal-BMpyr2ZA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-37-700-normal-Cr4qQ6-_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-37-700-normal-D6fQD8s2.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-38-400-normal-D1Vp2bgS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-38-400-normal-DH9qOlQO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-38-600-normal-BtzFMeyM.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-38-600-normal-DgBl-sfZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-38-700-normal-BnkgwyNC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-38-700-normal-DrLlCQdP.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-39-400-normal-D5wsbWuV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-39-400-normal-Dk7rkHeG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-39-600-normal-CGMVkPUQ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-39-600-normal-D_kp1-X0.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-39-700-normal-ADsZ937l.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-39-700-normal-tkFC4Fme.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-4-400-normal-mGIBpTDA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-4-600-normal-ItZEXAoj.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-4-700-normal-B2Sn8ODt.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-40-400-normal-DRF-ZkFr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-40-400-normal-Dye9yGvg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-40-600-normal-DD0bpqGF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-40-600-normal-DSxToWDI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-40-700-normal-D9qdrR16.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-40-700-normal-DJ9uBiDw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-41-400-normal-BqAaxgfH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-41-400-normal-CsmxKILz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-41-600-normal-BQOZ4bZi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-41-600-normal-Jx8Bp44x.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-41-700-normal-BGJMzr3_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-41-700-normal-UuW3VIUX.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-42-400-normal-Bwv1VfH1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-42-400-normal-Dl6WfOX3.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-42-600-normal-Bpb5tt9_.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-42-600-normal-DIFsJkow.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-42-700-normal-BSSeJztI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-42-700-normal-DSVZ1AdV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-43-400-normal-BWVo0zWK.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-43-400-normal-d-ngL4VK.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-43-600-normal-BQhDNXpW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-43-600-normal-BcvVxmDS.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-43-700-normal-BzUW0Dn4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-43-700-normal-DKxEyxqG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-44-400-normal-C6WuUhoa.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-44-400-normal-Dpw9oVkY.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-44-600-normal-BAOsDDVH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-44-600-normal-Bt-5iAy-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-44-700-normal-CKy2WdQj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-44-700-normal-DWwfiF2R.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-45-400-normal-B9Y_v3iL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-45-400-normal-Cw08yPg4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-45-600-normal-C3VBxVTw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-45-600-normal-CPG32_M5.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-45-700-normal-B2EBYgsw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-45-700-normal-CBBnYnrG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-46-400-normal-Bo2fKdUV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-46-400-normal-Dya4Xg3C.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-46-600-normal-BZxPnU9z.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-46-600-normal-BwyRFFoW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-46-700-normal-BWHZA6Va.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-46-700-normal-DGQdaffJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-47-400-normal-BaRCXue3.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-47-400-normal-DWeXBY63.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-47-600-normal-BJMJyZ3V.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-47-600-normal-CyutRTf1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-47-700-normal-N6twIXlf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-47-700-normal-_dAzPdKJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-48-400-normal-JS-IrZBF.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-48-400-normal-ezIou-vd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-48-600-normal-BKUm06v8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-48-600-normal-SLeRHHzg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-48-700-normal-B5gMlKVs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-48-700-normal-DQ5H61GM.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-49-400-normal-BGMyUOoF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-49-400-normal-CpOmgEj1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-49-600-normal-DASryXO5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-49-600-normal-DyDLcZM_.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-49-700-normal-C2pGRKdb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-49-700-normal-dsyop0xt.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-5-400-normal-CUIc6NHY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-5-400-normal-D2dVMMqj.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-5-600-normal-7tGyeWfE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-5-600-normal-LSwIbfT4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-5-700-normal-4pOvaKVD.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-5-700-normal-BdZNxX81.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-50-400-normal-DDJncqjC.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-50-400-normal-DU9yuSzL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-50-600-normal-KlXN5ii8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-50-600-normal-bZ0wMfTu.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-50-700-normal-C3Bon6kP.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-50-700-normal-CKBR3dTc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-52-400-normal-B6ntzhez.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-52-400-normal-DxvfHPiZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-52-600-normal-CxAqcrGJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-52-600-normal-ofakrDYw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-52-700-normal-Bfs6gmfs.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-52-700-normal-D9sJhzsn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-53-400-normal-BNzLW3gK.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-53-400-normal-arm4ZLbG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-53-600-normal-BYo95wdR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-53-600-normal-CTWAZiwT.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-53-700-normal-7icOh9fn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-53-700-normal-CXC3RG0Y.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-55-400-normal-CXMVQbir.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-55-400-normal-CgSa9olG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-55-600-normal-5IjjJd2s.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-55-600-normal-Dp8k-UQr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-55-700-normal-eDLHHM6r.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-55-700-normal-ecLDx596.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-56-400-normal-BImwtP9C.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-56-400-normal-BikO35BJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-56-600-normal-DsSHHMYs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-56-600-normal-fFxOmumy.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-56-700-normal-Dg77fDuG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-56-700-normal-DiUSRVIQ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-58-400-normal-Iyqdz6U_.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-58-400-normal-jeWDsIkS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-58-600-normal-Bma8ReWy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-58-600-normal-D3LkCFqf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-58-700-normal-BgsgXhin.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-58-700-normal-DQNvf_Pi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-59-400-normal-CkeNzekL.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-59-400-normal-D7J9HacT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-59-600-normal-B0Hs_yqp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-59-600-normal-y8o2u47q.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-59-700-normal-BEPxXZmH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-59-700-normal-CqOqqrqQ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-6-400-normal-CK1rBi2w.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-6-400-normal-DQz22aVW.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-6-600-normal-Bgp388lR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-6-600-normal-DZtAE4NN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-6-700-normal-BFaRWvXD.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-6-700-normal-UVZzLgo1.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-60-400-normal-Bc0pWfYQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-60-400-normal-DU4X4cgu.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-60-600-normal-D22FGjEf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-60-600-normal-DGaJXlcP.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-60-700-normal-B4sph3s0.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-60-700-normal-DBfqpTpp.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-61-400-normal-BTqxO8KS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-61-400-normal-BZ_Lvmfb.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-61-600-normal-BkIPCguy.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-61-600-normal-D_Q2U_HY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-61-700-normal-BkfJ-_O-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-61-700-normal-CwN3DFq1.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-62-400-normal-CRZQtL4e.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-62-400-normal-DSLFRuBi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-62-600-normal-CAFV2WS-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-62-600-normal-DRBwH2wC.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-62-700-normal-D9oj9FbO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-62-700-normal-gTii6YIK.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-63-400-normal-BCOcqFvH.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-63-400-normal-NWeXooWt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-63-600-normal-Dwsde-Vo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-63-600-normal-rFqEK_Cq.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-63-700-normal-B4li38vl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-63-700-normal-DYsI6Aeh.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-64-400-normal-DjS9hHaA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-64-400-normal-DplHNRWf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-64-600-normal-8FGNeBVO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-64-600-normal-BE-tQzc4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-64-700-normal-X_3qL3eD.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-64-700-normal-_sOvmSPU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-65-400-normal-BIWHDE_t.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-65-400-normal-DNiOFlC5.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-65-600-normal-8ErTTni6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-65-600-normal-Ckksq6Um.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-65-700-normal-9c1B3ugf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-65-700-normal-C2SAUond.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-66-400-normal-BfKrnenI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-66-400-normal-CNxVmlv6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-66-600-normal-hyHZDzzP.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-66-600-normal-nq1zdTbH.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-66-700-normal-Ctdcjw58.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-66-700-normal-D_FuIz1A.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-67-400-normal-D3j6dBx3.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-67-400-normal-lzlrdx0G.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-67-600-normal-6KKBCWxa.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-67-600-normal-DgWoOUUg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-67-700-normal-B3QY7F5h.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-67-700-normal-Bk31nBaz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-68-400-normal-BpRgjvkz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-68-400-normal-CfTKk1Ti.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-68-600-normal-BlYm4TE_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-68-600-normal-DiY9dfka.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-68-700-normal-C6ZrhK66.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-68-700-normal-Cb_onqwe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-69-400-normal-ClpMq853.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-69-400-normal-DIRwnaAC.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-69-600-normal-Bsq_ALiN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-69-600-normal-D5M2jRxh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-69-700-normal-D25giLXx.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-69-700-normal-DJ24ly1p.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-7-400-normal-BlNTLUxk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-7-400-normal-Ce6XQT-X.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-7-600-normal-BIimYJ8p.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-7-600-normal-u7RE7Vcl.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-7-700-normal-BxRQ3DPg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-7-700-normal-DK5zmmDo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-70-400-normal-BQZWkZap.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-70-400-normal-BvYVJLC-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-70-600-normal-COjhVT5P.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-70-600-normal-D_nkzVDi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-70-700-normal-BJsNk892.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-70-700-normal-D0rsZ7c1.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-71-400-normal-BF8CoFgI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-71-400-normal-HbsCI6VV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-71-600-normal-CfPjA3xh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-71-600-normal-ChBeHVSC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-71-700-normal-B88Gnili.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-71-700-normal-D9HVw03N.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-72-400-normal-BKinYB31.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-72-400-normal-D3NTG_Qr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-72-600-normal-BpU6wBwH.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-72-600-normal-rfJ4c39Q.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-72-700-normal-DClz9Dhe.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-72-700-normal-DnfTuI4o.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-73-400-normal-B9cHSeQ5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-73-400-normal-HVPdCDZ0.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-73-600-normal-BL0EAwDJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-73-600-normal-CoMSI1sj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-73-700-normal-5BseSrpV.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-73-700-normal-DW-mflD2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-74-400-normal-BM6YwLsn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-74-400-normal-BTWjvuog.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-74-600-normal-CxFvTzoC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-74-600-normal-D51sy90d.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-74-700-normal-Bp0aGueO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-74-700-normal-CQdRArtb.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-75-400-normal-DX0jfUHx.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-75-400-normal-DrNdqo4y.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-75-600-normal-DvAVPJPm.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-75-600-normal-DzUkgy6d.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-75-700-normal-BUGpoCPv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-75-700-normal-CbVTJJOJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-76-400-normal-BtXAriso.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-76-400-normal-DvZrEIB3.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-76-600-normal-Bkns-GmL.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-76-600-normal-XH04BMqX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-76-700-normal-BfaxMcpg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-76-700-normal-DC5DjlVx.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-77-400-normal-C8x5jxqc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-77-400-normal-DIwXWqjG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-77-600-normal-Dst0n_2I.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-77-600-normal-TveJi30r.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-77-700-normal-BXcw4A5K.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-77-700-normal-C5mt5pwb.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-78-400-normal-DUw4O9kJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-78-400-normal-DdAHar7U.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-78-600-normal-CdDbCMo5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-78-600-normal-WSGX5G5j.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-78-700-normal-BX4TFa2_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-78-700-normal-DQFNc6DE.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-79-400-normal-CHV4cTl6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-79-400-normal-DKXEv0-8.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-79-600-normal-BwemUgt7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-79-600-normal-jqoE6MSf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-79-700-normal-C7dv3Yp1.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-79-700-normal-Dc8--5xr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-8-400-normal-SmEnIkYa.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-8-400-normal-tFiGs3IA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-8-600-normal-BXRUM-0I.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-8-600-normal-G3AQr80e.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-8-700-normal-BJ-eyJFM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-8-700-normal-D8XNQCXr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-80-400-normal-B1EBYabM.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-80-400-normal-boMeGYwE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-80-600-normal-5_89urOt.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-80-600-normal-Cn0IXtFE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-80-700-normal-BOd0bDGO.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-80-700-normal-C26YuVxL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-81-400-normal-BRtTCfUk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-81-400-normal-D32P0Vtu.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-81-600-normal-BrNo5bPi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-81-600-normal-ic2OowiW.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-81-700-normal-CVYiHbL6.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-81-700-normal-u-vEkTpG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-82-400-normal-BQWp4BEz.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-82-400-normal-DDpDjsGx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-82-600-normal-DajH-4xp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-82-600-normal-icuQ__PU.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-82-700-normal-ClV-zSDt.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-82-700-normal-CnyrRvpH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-83-400-normal-Bw_rXMEi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-83-400-normal-yc2U6i4H.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-83-600-normal-C2uell5V.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-83-600-normal-DsLbRz3E.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-83-700-normal-2GacE3N5.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-83-700-normal-EpYP79Ha.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-84-400-normal-C14BeeRx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-84-400-normal-C_JCm1wG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-84-600-normal-CCq3cWfr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-84-600-normal-CNKfBGzf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-84-700-normal-DvPwdAi9.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-84-700-normal-bReT13VI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-85-400-normal-CxNRCaXC.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-85-400-normal-DIfXns4-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-85-600-normal-8jj6aRvF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-85-600-normal-DlyOX1Qf.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-85-700-normal-D8sN10Nm.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-85-700-normal-og8bjehs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-86-400-normal-Bb5ShdOk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-86-400-normal-Dwyie3Iv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-86-600-normal-CdiZE1rm.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-86-600-normal-sZuKvaH0.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-86-700-normal-BTXGcZ1f.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-86-700-normal-BfB1Adps.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-87-400-normal-9iA5aW6B.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-87-400-normal-BlQLoLxo.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-87-600-normal-CuP_sqvk.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-87-600-normal-DJDdt009.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-87-700-normal-T5FoFJ7Z.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-87-700-normal-ZAIr8xfv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-88-400-normal-47Y8c3gi.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-88-400-normal-Ce6Hc4-O.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-88-600-normal-C0xzysV4.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-88-600-normal-R7ba6CXY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-88-700-normal-BhgGw4mN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-88-700-normal-DqgQgYzO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-89-400-normal-BQ1quosg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-89-400-normal-DWWwgYkQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-89-600-normal-C2tA-5LU.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-89-600-normal-DhA0Dlsd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-89-700-normal-BhPAGixe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-89-700-normal-Q4Ct26U-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-9-400-normal--2P0gMaE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-9-400-normal-DOuCM5BV.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-9-600-normal-BWVUGdkT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-9-600-normal-DKQ7A1j0.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-9-700-normal-CeF5ynVi.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-9-700-normal-U3Fi3Xkr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-90-400-normal-CfqeE6EG.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-90-400-normal-D_k1n-D_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-90-600-normal-Bwsph-Eg.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-90-600-normal-DhhMI-5X.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-90-700-normal-B0dGlL2-.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-90-700-normal-C8Hbz-dX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-91-400-normal-Ciy4dQcd.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-91-400-normal-Dqn0gBBY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-91-600-normal-CMZZHiYs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-91-600-normal-D3h_qbuq.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-91-700-normal-B1DETJv2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-91-700-normal-M5nVKp2A.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-92-400-normal-BfkGgwSg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-92-400-normal-DoNv6QKI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-92-600-normal-9-dsEf5V.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-92-600-normal-cJ6s0u50.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-92-700-normal-ByHPz9kn.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-92-700-normal-D6FBL1WO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-93-400-normal-B6WlHkvJ.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-93-400-normal-CXc_m19k.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-93-600-normal-BSK1xVrb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-93-600-normal-OQ8utWzT.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-93-700-normal-B6i_9_xV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-93-700-normal-C0PiAt94.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-94-400-normal-B4bajS3c.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-94-400-normal-FBGzvyjM.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-94-600-normal-Cl_ZMZu8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-94-600-normal-pqZtpQem.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-94-700-normal-BhojjqGx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-94-700-normal-DWNWPMXr.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-95-400-normal-BaY9CSq2.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-95-400-normal-DPH1GVj3.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-95-600-normal-BcydLyYe.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-95-600-normal-DqzXikSS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-95-700-normal-0cKlfajM.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-95-700-normal-BNFDc8MW.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-96-400-normal-CXuQ_R0S.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-96-400-normal-OCME7gOK.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-96-600-normal-BgkVLddD.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-96-600-normal-GzZNxGhs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-96-700-normal-Qh65nqz2.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-96-700-normal-a40eS-gV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-97-400-normal-4k_rP24C.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-97-400-normal-CP6Nx25U.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-97-600-normal-CIqUzk_a.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-97-600-normal-DCSYk_Yh.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-97-700-normal-DnbCIk-O.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-97-700-normal-zgPUJYJw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-98-400-normal-B515X6p6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-98-400-normal-Cf7sm02w.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-98-600-normal-DugMp3FI.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-98-600-normal-pBxafNws.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-98-700-normal-7KdM18gu.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-98-700-normal-CMi4ZY-h.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-99-400-normal-BcrT9Fgn.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-99-400-normal-DmQyl23y.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-99-600-normal-CeMMRcA6.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-99-600-normal-DnK7T1fc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-99-700-normal-CINNKEoN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-99-700-normal-sDTGjBrk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-400-normal-B9g1Ctqd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-400-normal-DJG00D-p.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-600-normal-B4enfOPB.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-600-normal-DCQl7zAm.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-700-normal-CqLTajqw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-cyrillic-700-normal-hKVirjqK.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-400-normal-CDdMl-oX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-400-normal-D5LEXcjN.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-600-normal-DmCaZeJ-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-600-normal-Ds_Fb90o.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-700-normal-8D2N3nxA.woff +0 -0
- package/public/assets/ibm-plex-sans-jp-latin-700-normal-BTYOjzj6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-0-400-normal-COdVePwF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-0-400-normal-DEF_oZFa.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-0-600-normal-DLXpb0hq.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-0-600-normal-DuzcAQdo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-0-700-normal-BKXIEbM-.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-0-700-normal-C-cy4WQL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-10-400-normal-BOnpTeYv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-10-400-normal-CRn7_mZz.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-10-600-normal-BAjKvcG-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-10-600-normal-DIq7Gv9V.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-10-700-normal-CO8B564V.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-10-700-normal-CYiGY1Yb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-100-400-normal-3DeNbFry.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-100-400-normal-BQdwTqgb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-100-600-normal-CcI0wmDd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-100-600-normal-ZYmKSXu1.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-100-700-normal-BzrrxQTg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-100-700-normal-CMsSAe0_.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-101-400-normal-CwhtzdGH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-101-400-normal-DQN8MKOE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-101-600-normal-Cf7HWvBM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-101-600-normal-DOUVV8ig.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-101-700-normal-CByVAW_A.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-101-700-normal-VIPXB5Il.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-102-400-normal-BC0mCFX2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-102-400-normal-DHfan8x-.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-102-600-normal-BIIL4Btv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-102-600-normal-CN8RaHGd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-102-700-normal-BMMLfFhV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-102-700-normal-DmfLM_GL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-103-400-normal-BQNnzD7b.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-103-400-normal-CYHfi_5o.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-103-600-normal-8oNp3a_g.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-103-600-normal-BKXxr4Vf.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-103-700-normal-BcdoKDVA.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-103-700-normal-Dxy_7wWe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-104-400-normal-BrHR60F5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-104-400-normal-kn3L8mkz.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-104-600-normal-DHHBh9NH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-104-600-normal-DbfrFOKo.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-104-700-normal-BBQprcoA.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-104-700-normal-DIYBHFGo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-105-400-normal-BY6JiZG_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-105-400-normal-D20hKn8x.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-105-600-normal-Bdo6QjXy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-105-600-normal-DU6215sy.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-105-700-normal-CNeD7cKc.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-105-700-normal-D4WgQZhf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-106-400-normal-CKM4EqLH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-106-400-normal-DRimGseV.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-106-600-normal-CIkK4pwL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-106-600-normal-o84Tuavw.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-106-700-normal-DKK03KYp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-106-700-normal-Sq9FhKgR.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-107-400-normal-9_m442uC.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-107-400-normal-DFBsPAhk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-107-600-normal-Bj6Oga3u.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-107-600-normal-IB6GFZTf.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-107-700-normal-BPp3kOId.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-107-700-normal-CXE0S75n.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-108-400-normal-D7nsD7Wm.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-108-400-normal-DbmD_Owd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-108-600-normal-C5FnASlc.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-108-600-normal-Cz9v4gjx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-108-700-normal-BeBTa0LV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-108-700-normal-DblVcY4a.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-109-400-normal-Ch-uxywT.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-109-400-normal-ChZ2CLi-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-109-600-normal-BkGpNJKI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-109-600-normal-CG9-PeCF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-109-700-normal-CZW29fAQ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-109-700-normal-CkMuXuOj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-11-400-normal-CN_UQa3U.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-11-400-normal-DY57wkwV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-11-600-normal-BUarw7E5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-11-600-normal-Ds-mjTNk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-11-700-normal-BntN_kys.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-11-700-normal-DoPFrHSK.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-110-400-normal-D259vsJ_.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-110-400-normal-DvUF8GMi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-110-600-normal-CisRgCMg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-110-600-normal-ReaqIn5m.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-110-700-normal-BIiZFSUQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-110-700-normal-BylngM58.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-111-400-normal-BqppHOeA.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-111-400-normal-DaCXFUcH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-111-600-normal-2DkYfPPb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-111-600-normal-DN6cN55_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-111-700-normal-DjiLTpOV.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-111-700-normal-zUtSBhiX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-112-400-normal-B8TcbMdb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-112-400-normal-BJLUyYDo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-112-600-normal-lS3UdozO.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-112-600-normal-nFX-cMXi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-112-700-normal-DYzxzB3U.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-112-700-normal-NT-G-2lC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-113-400-normal-CEDRAc_f.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-113-400-normal-DlThbTsi.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-113-600-normal-C_RUWM8I.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-113-600-normal-Dhfyy0ky.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-113-700-normal-CdI89zbS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-113-700-normal-DRor3NKv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-114-400-normal-5bMSGSar.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-114-400-normal-Bpqw4_PX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-114-600-normal-BKj6RBZ7.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-114-600-normal-CjRp-Iz4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-114-700-normal-BXC27J9C.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-114-700-normal-JtZooioR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-115-400-normal-6-qa9Uj4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-115-400-normal-CM7tVCiU.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-115-600-normal-CokKDsRY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-115-600-normal-c6nUiZEv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-115-700-normal-BCRYVYbj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-115-700-normal-C4o110v7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-116-400-normal-BCjvaIwI.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-116-400-normal-CPQAppG5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-116-600-normal-2NuQXMn5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-116-600-normal-pwYieqoq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-116-700-normal-DTiOP-RD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-116-700-normal-J2K8ygE7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-117-400-normal-Bqi1rgUh.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-117-400-normal-CAkrqKEd.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-117-600-normal-BUVowAmE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-117-600-normal-CVV1AoIy.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-117-700-normal-B_WqVFu8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-117-700-normal-C-GRhBDF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-118-400-normal-BvkVX0xm.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-118-400-normal-CPvF_U24.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-118-600-normal-BKNr8HaE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-118-600-normal-SYUuQfwq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-118-700-normal-6t-D5P6M.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-118-700-normal-Cwb_HiV8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-119-400-normal-BVAYXEqw.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-119-400-normal-CF0EWuft.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-119-600-normal-CSej5QVJ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-119-600-normal-CWNURXbv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-119-700-normal-DqmD0X2I.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-119-700-normal-DvZpuW9q.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-12-400-normal-AF35YmmH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-12-400-normal-J5xWG5gS.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-12-600-normal-Ba8rnT7_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-12-600-normal-Cdi7mG90.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-12-700-normal-4ZbirUQU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-12-700-normal-Coj3Y2Vv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-13-400-normal-CpXdOOTc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-13-400-normal-eM8eMXyQ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-13-600-normal-DXBEl0OU.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-13-600-normal-ON8tPSnT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-13-700-normal-Bbz7lyAG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-13-700-normal-DfbGPVVb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-14-400-normal-C-oyfrUa.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-14-400-normal-DPe2AXol.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-14-600-normal-BEKBLOkr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-14-600-normal-BZRywIXe.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-14-700-normal-DChZSEXi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-14-700-normal-JLAmA7_6.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-15-400-normal-CBiEIaz5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-15-400-normal-D-mZ9inR.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-15-600-normal-CAapLUyl.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-15-600-normal-Dl-orC8M.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-15-700-normal-JEDfv4vZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-15-700-normal-xL2psWlD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-16-400-normal-CKSk9toV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-16-400-normal-DNGmaJIL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-16-600-normal-DDZagcz1.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-16-600-normal-DloGa7SL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-16-700-normal-Bv7EAOP1.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-16-700-normal-CCA2fInu.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-17-400-normal-BDhrvRnL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-17-400-normal-BOjgDpon.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-17-600-normal-BeTmwP_K.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-17-600-normal-uD_8VqjX.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-17-700-normal-C-NBohiT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-17-700-normal-sVUIRMKd.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-18-400-normal-BTtbRNyU.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-18-400-normal-Bs1zlN0G.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-18-600-normal-3CkcYQgr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-18-600-normal-C0tjZHt0.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-18-700-normal-DjrHhANL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-18-700-normal-UPAurMge.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-19-400-normal-CCVU2G9b.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-19-400-normal-dcW_ilWW.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-19-600-normal-DcS6irVl.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-19-600-normal-w0hsbhoe.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-19-700-normal-CazBSycC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-19-700-normal-CvRuq6Vw.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-2-400-normal-CnxhIj-f.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-2-400-normal-ZCEqhetZ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-2-600-normal-BBWiOGe2.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-2-600-normal-i3phtpOA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-2-700-normal-DO0ByKpJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-2-700-normal-Dei1Gj2q.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-20-400-normal-2BRpmgCV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-20-400-normal-B2cWSh78.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-20-600-normal-CKeHRgKb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-20-600-normal-CXFU6tjk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-20-700-normal-CTtpPuSd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-20-700-normal-N5V03xjS.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-21-400-normal-Cv3FeIij.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-21-400-normal-Dml5TFym.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-21-600-normal-CJHvMuEH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-21-600-normal-ChXV0eBj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-21-700-normal-BR1fDv7I.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-21-700-normal-kWux5vbT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-22-400-normal-3CnvMMD7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-22-400-normal-TNl1bUeL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-22-600-normal-B4PQFGba.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-22-600-normal-bBSJai_o.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-22-700-normal-BAbSphgc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-22-700-normal-HHyMEHBJ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-23-400-normal-CUhld-kf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-23-400-normal-DTBYTMn7.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-23-600-normal-CR-CWSvQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-23-600-normal-Cq5mpPr_.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-23-700-normal-D-oyN10X.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-23-700-normal-DQNF9HpE.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-24-400-normal-BCEQWDh5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-24-400-normal-DDVUYQLq.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-24-600-normal-DL0LF1av.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-24-600-normal-DyaIQrhK.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-24-700-normal-B0AxqRZO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-24-700-normal-Inz-d5-8.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-25-400-normal-C5hUXC4y.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-25-400-normal-CSCHltyB.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-25-600-normal-ClJ2q6nT.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-25-600-normal-CpgWTSx7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-25-700-normal-BSArHqh9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-25-700-normal-BVRIUm2S.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-26-400-normal-BDNWBg-b.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-26-400-normal-BnV7FV79.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-26-600-normal-BQpAkNz5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-26-600-normal-bxA4bluv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-26-700-normal-95lB4fwA.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-26-700-normal-VgtqRBM7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-27-400-normal-B5ZhKYLO.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-27-400-normal-Dy5-YEOY.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-27-600-normal-C07c5If1.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-27-600-normal-C6bVD75P.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-27-700-normal-_7qWVHie.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-27-700-normal-h3oxUHXv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-28-400-normal-Bwghrgjh.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-28-400-normal-DNnelfuN.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-28-600-normal-BBQsSgWd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-28-600-normal-BeDPvyp8.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-28-700-normal-Cjg_wNSB.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-28-700-normal-DY_bvrHQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-29-400-normal-Dj7VksMf.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-29-400-normal-gP3qcvie.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-29-600-normal-B0Nsm10J.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-29-600-normal-Dn9kzegM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-29-700-normal-BaagHPlF.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-29-700-normal-sM5sErEE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-3-400-normal-01r-uCGK.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-3-400-normal-MpgNCYqt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-3-600-normal-CuyoBBEp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-3-600-normal-OOnXi3dj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-3-700-normal-GjYjPFRF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-3-700-normal-Vr7CPe4d.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-30-400-normal-4H84KBjL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-30-400-normal-D9W6fT0U.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-30-600-normal-CHYuKtvD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-30-600-normal-DAX8ENIb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-30-700-normal-DvDs5GHe.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-30-700-normal-kGpxnFlG.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-31-400-normal-BnpH2dyr.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-31-400-normal-DhPplA2S.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-31-600-normal-BDIwmQD2.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-31-600-normal-DWFfqfVJ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-31-700-normal-BEM3LLr5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-31-700-normal-BH_9UzMR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-32-400-normal-BkNndOiq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-32-400-normal-GRBsq_TQ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-32-600-normal-Dc31ixSD.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-32-600-normal-qBGKeeZh.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-32-700-normal-CKh4-8lS.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-32-700-normal-SEF2IUu4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-33-400-normal-BEJcB5Pj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-33-400-normal-DOnua0XC.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-33-600-normal-Dk43PWfK.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-33-600-normal-_9rnVtrt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-33-700-normal-BkaB_Reu.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-33-700-normal-DbnutdYp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-34-400-normal-BFI-kcuc.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-34-400-normal-b_F-aCuz.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-34-600-normal-BwgNjnnm.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-34-600-normal-Dkhx4lxu.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-34-700-normal-UpohLQJI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-34-700-normal-Yul5WPNb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-35-400-normal-CHpiv9C7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-35-400-normal-D8XpW-jV.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-35-600-normal-CD4ArYzM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-35-600-normal-M066d6gr.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-35-700-normal-DV4atPPn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-35-700-normal-hjVn7kub.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-36-400-normal-BT6SwwtR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-36-400-normal-Cd-eoA5H.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-36-600-normal-DsGroCqE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-36-600-normal-kFFPHZH9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-36-700-normal-CO6mIiJi.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-36-700-normal-DfKrXTUN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-37-400-normal-BiWBJPQ7.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-37-400-normal-Bj7jp-Iz.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-37-600-normal-CnPg-4RZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-37-600-normal-Cvgtdz7H.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-37-700-normal-BtF0jwlF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-37-700-normal-C4IDZ9L-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-38-400-normal-B4UIE9Zj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-38-400-normal-CLr3K58D.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-38-600-normal-Dln3mVPi.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-38-600-normal-Uy8tuoQH.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-38-700-normal-DClAUGO7.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-38-700-normal-DHBmduQt.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-39-400-normal-BzR2eDWi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-39-400-normal-WTG9_11D.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-39-600-normal-DHmemGdc.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-39-600-normal-DxNgVy70.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-39-700-normal-B7V6NyLX.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-39-700-normal-CijZ21_m.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-4-400-normal-1GfpLFeR.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-4-400-normal-BSOJFi3M.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-4-600-normal-BGAcZoa5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-4-600-normal-DP-OzMv8.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-4-700-normal-BTl2LovL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-4-700-normal-PLU2uOG6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-40-400-normal-BJCaISym.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-40-400-normal-DxlOKNb6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-40-600-normal-D79iYZbh.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-40-600-normal-DyMFY3yG.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-40-700-normal-BOSqPgLZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-40-700-normal-Bs7eQneK.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-41-400-normal-Ce6_8B6O.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-41-400-normal-THO3jy3s.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-41-600-normal-Ck2K5Ulf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-41-600-normal-Df3Wep6L.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-41-700-normal-B-9pR0B0.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-41-700-normal-vrmrQol7.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-42-400-normal-Cgyyi6Mk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-42-400-normal-mWRC9cE4.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-42-600-normal-BIw3yp_o.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-42-600-normal-CgHlrSUg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-42-700-normal-CE4g_Vnr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-42-700-normal-OHitFFYG.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-43-400-normal-DofKP3XM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-43-400-normal-rklqUmDh.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-43-600-normal-BPJjrS1c.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-43-600-normal-Dl6BB-Lj.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-43-700-normal-B4zrRhmq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-43-700-normal-Vq2Xt21W.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-44-400-normal-BPQ_BGOm.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-44-400-normal-BvoXxhh-.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-44-600-normal-B1scqjS5.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-44-600-normal-B1vhjtxY.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-44-700-normal-CdiYya7N.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-44-700-normal-CizxTCTp.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-45-400-normal-BN1x-JCl.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-45-400-normal-DMKz6H_F.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-45-600-normal-D74kcLg1.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-45-600-normal-DNXvxDIf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-45-700-normal-BdAAndOM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-45-700-normal-DeYHlTSC.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-46-400-normal-K8yMYku4.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-46-400-normal-Z0YZvJMA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-46-600-normal-CfEBl86K.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-46-600-normal-Yu7W5Ur_.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-46-700-normal-C2i6qX8o.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-46-700-normal-Ck28wpb6.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-47-400-normal-BHD-6hCF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-47-400-normal-DapCxPvn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-47-600-normal-CxMB4f1K.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-47-600-normal-tmv6xC_z.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-47-700-normal-ByTiuiZy.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-47-700-normal-C_LnNwcx.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-48-400-normal-5VJWa5C8.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-48-400-normal-CBCdCJJN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-48-600-normal-DAbbVYEi.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-48-600-normal-QEQJ2vNg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-48-700-normal-D9NnIF6F.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-48-700-normal-gCAr-9Ui.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-49-400-normal-BENNdZwd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-49-400-normal-DrUErJVA.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-49-600-normal-B9kwAyIi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-49-600-normal-DHvPm2NF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-49-700-normal-C7LprN_f.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-49-700-normal-C80RxHso.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-5-400-normal-B1Nb7Dqt.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-5-400-normal-BBWPbJ8R.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-5-600-normal-BV1Q-ya9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-5-600-normal-vSSmYEgt.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-5-700-normal-88k3u19j.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-5-700-normal-Bm4AIB4W.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-50-400-normal-DSyr09Pi.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-50-400-normal-wVEmJJbn.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-50-600-normal-CNwgbPME.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-50-600-normal-DwlyYo3O.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-50-700-normal-BpuC-Ja2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-50-700-normal-DJ4qrNjm.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-51-400-normal-CI8zKOiq.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-51-400-normal-Nb_ATV55.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-51-600-normal-D1q9iZG9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-51-600-normal-DCKOx3do.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-51-700-normal-CDxcnlps.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-51-700-normal-CrbVhrAy.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-52-400-normal-DgbfUacv.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-52-400-normal-Dqrwgacb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-52-600-normal-DpEHO2lx.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-52-600-normal-HtoGXJPD.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-52-700-normal-6UeGb2y_.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-52-700-normal-Cj2MbqkN.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-53-400-normal-BPlmQmyN.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-53-400-normal-uFBOSatZ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-53-600-normal-3e73VLox.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-53-600-normal-CHFWjDbo.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-53-700-normal-BtF7lJZ6.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-53-700-normal-D1_BFs6r.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-54-400-normal-B_JBM8HP.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-54-400-normal-DShvO3nx.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-54-600-normal-CIir-_6C.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-54-600-normal-HSAnxCQg.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-54-700-normal-DOcpS_k9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-54-700-normal-DR_NIHG9.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-55-400-normal-BIBVbLNo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-55-400-normal-DACpgdpL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-55-600-normal-ByArDHHI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-55-600-normal-CNKcN-Ig.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-55-700-normal-9BGvVFJG.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-55-700-normal-DCUUt7cX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-56-400-normal-D6a133Nk.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-56-400-normal-E_0UP4jm.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-56-600-normal-DScuu4Uu.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-56-600-normal-hzikha37.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-56-700-normal-BCQXFjgs.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-56-700-normal-CfjdYZM4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-57-400-normal-CBQftTJt.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-57-400-normal-F8LL-J5_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-57-600-normal-BR6Du0PQ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-57-600-normal-CQ1redVd.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-57-700-normal-DQEJ1-LS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-57-700-normal-FH-ttKed.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-58-400-normal-DqIzdKrV.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-58-400-normal-i71EDyfV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-58-600-normal-Bpgq8MX2.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-58-600-normal-Bqgrv0lo.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-58-700-normal-Bj2HnGEw.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-58-700-normal-DYsLBu1T.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-59-400-normal-B-8F2Uet.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-59-400-normal-BHAiqXEM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-59-600-normal-B-CGe3sL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-59-600-normal-BuQf4YmM.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-59-700-normal-BZ9z_FHx.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-59-700-normal-CWSgjf9c.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-6-400-normal-AY_mybA2.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-6-400-normal-CTPxjOYB.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-6-600-normal-CdfPYwdk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-6-600-normal-oGadQOpD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-6-700-normal-DLe2ZT_Q.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-6-700-normal-bXRUCZKE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-60-400-normal-CEDE9rS0.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-60-400-normal-z5dDoQx9.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-60-600-normal-Bl94dFYa.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-60-600-normal-OLqttnKu.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-60-700-normal-CYME5EXY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-60-700-normal-I1XysYDt.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-61-400-normal-Ci1tC2DE.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-61-400-normal-DnyFjM_B.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-61-600-normal-BZxjTCO5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-61-600-normal-ChG7s6jj.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-61-700-normal-Bi5bgOa-.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-61-700-normal-CCHPFSSV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-62-400-normal-BIF8JT4K.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-62-400-normal-BMQQOADr.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-62-600-normal-BwPZY4No.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-62-600-normal-CCy9m1Yi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-62-700-normal-CUKZrRn4.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-62-700-normal-PUE26tsV.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-63-400-normal-Bi-DePsy.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-63-400-normal-DbEg4X6i.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-63-600-normal-B_hznMYb.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-63-600-normal-DXp5U46T.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-63-700-normal-CdRKaRR8.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-63-700-normal-d_p4qgBI.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-64-400-normal-BoOvEFVR.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-64-400-normal-DhttFBeF.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-64-600-normal-DdDi5wpQ.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-64-600-normal-DnHS-nmP.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-64-700-normal-DvcYr3Tg.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-64-700-normal-Z-oKOpcu.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-65-600-normal-CuB_ApqX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-65-700-normal-OQGIHpUr.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-7-400-normal-CDkAi-IU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-7-400-normal-VZ_YUdPy.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-7-600-normal-CeGVp1rD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-7-600-normal-Dh7JSXz4.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-7-700-normal-C-GGubNS.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-7-700-normal-DkDnzNv2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-8-400-normal-BmMhoS32.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-8-400-normal-Ci0W5IWz.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-8-600-normal-B0rxBWNc.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-8-600-normal-BJjl00Le.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-8-700-normal-5jYiHHRz.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-8-700-normal-BEKQdV0c.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-9-400-normal-CeBwsqAD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-9-400-normal-DJinq116.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-9-600-normal-DWoOSbq5.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-9-600-normal-DraA-1Zl.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-9-700-normal-BkZ1vv2G.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-9-700-normal-CymJjnAS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-93-400-normal-5J6UR9CM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-93-400-normal-Cdi-IBra.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-93-600-normal-4KzAAJzD.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-93-600-normal-C3ObUrek.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-93-700-normal-BEo_xrjH.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-93-700-normal-DYlKYBEL.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-94-400-normal-CLS33fqM.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-94-400-normal-CsJn1kPf.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-94-600-normal-BqkCATJS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-94-600-normal-DGs8D_d9.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-94-700-normal-BcAowvjY.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-94-700-normal-Rande0GP.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-96-400-normal-DqxPcneT.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-96-400-normal-m9r3xH18.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-96-600-normal-E6j9XpvP.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-96-600-normal-qnNrW3Df.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-96-700-normal-D_kcIWRN.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-96-700-normal-DafuQoH3.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-97-400-normal-DOlHHts_.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-97-400-normal-TWLDWHgL.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-97-600-normal-CHxkMEAU.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-97-600-normal-CXVo40nf.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-97-700-normal-BdFpzIjS.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-97-700-normal-C5vPlSUB.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-98-400-normal-CyxDRXqs.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-98-400-normal-D-_zohjb.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-98-600-normal-CizO16Ew.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-98-600-normal-D-SBD5Hk.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-98-700-normal-BArUuixv.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-98-700-normal-O_rp84MR.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-99-400-normal-COuj214s.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-99-600-normal-j_ccRvHi.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-99-700-normal-BGCe6SPX.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-400-normal-7kwLL-e3.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-400-normal-Bc7vhvxM.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-600-normal-n-2PV5Ut.woff2 +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-600-normal-yks4z4wu.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-700-normal-Bj41MRxQ.woff +0 -0
- package/public/assets/ibm-plex-sans-kr-latin-700-normal-CIbXnLaA.woff2 +0 -0
- package/public/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
- package/public/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
- package/public/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
- package/public/assets/index-CS23Ozt6.js +11 -0
- package/public/assets/index-CS23Ozt6.js.map +1 -0
- package/public/assets/index-DZyHRhbQ.css +2 -0
- package/public/assets/initial-avatar-CtuDUz_W.js +2 -0
- package/public/assets/initial-avatar-CtuDUz_W.js.map +1 -0
- package/public/assets/input-CzQki7k6.js +2 -0
- package/public/assets/input-CzQki7k6.js.map +1 -0
- package/public/assets/key-round-CdvHb8vT.js +2 -0
- package/public/assets/key-round-CdvHb8vT.js.map +1 -0
- package/public/assets/labeled-separator-CV7nb0XW.js +2 -0
- package/public/assets/labeled-separator-CV7nb0XW.js.map +1 -0
- package/public/assets/link-C-WdTj3F.js +2 -0
- package/public/assets/link-C-WdTj3F.js.map +1 -0
- package/public/assets/lock-7NRyvXBS.js +2 -0
- package/public/assets/lock-7NRyvXBS.js.map +1 -0
- package/public/assets/login-C5vUVgr_.js +2 -0
- package/public/assets/login-C5vUVgr_.js.map +1 -0
- package/public/assets/login-nukebli4.js +2 -0
- package/public/assets/login-nukebli4.js.map +1 -0
- package/public/assets/logout-B5T52P8u.js +2 -0
- package/public/assets/logout-B5T52P8u.js.map +1 -0
- package/public/assets/mail-D0B_1Dzd.js +2 -0
- package/public/assets/mail-D0B_1Dzd.js.map +1 -0
- package/public/assets/modal-BDQFucjz.js +2 -0
- package/public/assets/modal-BDQFucjz.js.map +1 -0
- package/public/assets/mutationOptions-DyYFUbyn.js +2 -0
- package/public/assets/mutationOptions-DyYFUbyn.js.map +1 -0
- package/public/assets/passkey-BE9JvJOP.js +2 -0
- package/public/assets/passkey-BE9JvJOP.js.map +1 -0
- package/public/assets/passkey-C5vUVgr_.js +2 -0
- package/public/assets/passkey-C5vUVgr_.js.map +1 -0
- package/public/assets/passkey-CynCz1Dt.js +2 -0
- package/public/assets/passkey-CynCz1Dt.js.map +1 -0
- package/public/assets/passkey-J1qnYp9A.js +2 -0
- package/public/assets/passkey-J1qnYp9A.js.map +1 -0
- package/public/assets/passkey-error-ZqqPQUta.js +2 -0
- package/public/assets/passkey-error-ZqqPQUta.js.map +1 -0
- package/public/assets/password-C5vUVgr_.js +2 -0
- package/public/assets/password-C5vUVgr_.js.map +1 -0
- package/public/assets/password-RkUttbhD.js +2 -0
- package/public/assets/password-RkUttbhD.js.map +1 -0
- package/public/assets/password-reset-sU5KkBKi.js +2 -0
- package/public/assets/password-reset-sU5KkBKi.js.map +1 -0
- package/public/assets/password-strength-BeSOu_Ga.js +2 -0
- package/public/assets/password-strength-BeSOu_Ga.js.map +1 -0
- package/public/assets/pin-input-Cc-VkrQ3.js +2 -0
- package/public/assets/pin-input-Cc-VkrQ3.js.map +1 -0
- package/public/assets/plus-DSBBSrgj.js +2 -0
- package/public/assets/plus-DSBBSrgj.js.map +1 -0
- package/public/assets/profile-B5NaJfeS.js +2 -0
- package/public/assets/profile-B5NaJfeS.js.map +1 -0
- package/public/assets/profile-BcjsVYOx.js +2 -0
- package/public/assets/profile-BcjsVYOx.js.map +1 -0
- package/public/assets/promise-OpBtq8tG.js +2 -0
- package/public/assets/promise-OpBtq8tG.js.map +1 -0
- package/public/assets/provider-logos-u1YURWQr.js +2 -0
- package/public/assets/provider-logos-u1YURWQr.js.map +1 -0
- package/public/assets/recovery-PnUATiUi.js +2 -0
- package/public/assets/recovery-PnUATiUi.js.map +1 -0
- package/public/assets/register-C5vUVgr_.js +2 -0
- package/public/assets/register-C5vUVgr_.js.map +1 -0
- package/public/assets/register-DQXhru0_.js +2 -0
- package/public/assets/register-DQXhru0_.js.map +1 -0
- package/public/assets/reset-C5vUVgr_.js +2 -0
- package/public/assets/reset-C5vUVgr_.js.map +1 -0
- package/public/assets/reset-CQgIa3yf.js +2 -0
- package/public/assets/reset-CQgIa3yf.js.map +1 -0
- package/public/assets/routes-CAIeH5mq.js +2 -0
- package/public/assets/routes-CAIeH5mq.js.map +1 -0
- package/public/assets/select-C5vUVgr_.js +2 -0
- package/public/assets/select-C5vUVgr_.js.map +1 -0
- package/public/assets/select-DqZynXSt.js +2 -0
- package/public/assets/select-DqZynXSt.js.map +1 -0
- package/public/assets/separator-B0Bvh1he.js +2 -0
- package/public/assets/separator-B0Bvh1he.js.map +1 -0
- package/public/assets/shell-header-bar-CjG5qvPg.js +2 -0
- package/public/assets/shell-header-bar-CjG5qvPg.js.map +1 -0
- package/public/assets/shield-check-D_p8H0ni.js +2 -0
- package/public/assets/shield-check-D_p8H0ni.js.map +1 -0
- package/public/assets/standard-schema-e8gtSzGE.js +2 -0
- package/public/assets/standard-schema-e8gtSzGE.js.map +1 -0
- package/public/assets/terms-B5NaJfeS.js +2 -0
- package/public/assets/terms-B5NaJfeS.js.map +1 -0
- package/public/assets/terms-BHDAgn-H.js +2 -0
- package/public/assets/terms-BHDAgn-H.js.map +1 -0
- package/public/assets/terms-checkbox-list-6jteUTIZ.js +2 -0
- package/public/assets/terms-checkbox-list-6jteUTIZ.js.map +1 -0
- package/public/assets/totp-BNZ904Zm.js +2 -0
- package/public/assets/totp-BNZ904Zm.js.map +1 -0
- package/public/assets/totp-CJtfVNEq.js +2 -0
- package/public/assets/totp-CJtfVNEq.js.map +1 -0
- package/public/assets/totp-ECvOUcFx.js +2 -0
- package/public/assets/totp-ECvOUcFx.js.map +1 -0
- package/public/assets/trash-2-DZdKBLvC.js +2 -0
- package/public/assets/trash-2-DZdKBLvC.js.map +1 -0
- package/public/assets/triangle-alert-CqNn0kPs.js +2 -0
- package/public/assets/triangle-alert-CqNn0kPs.js.map +1 -0
- package/public/assets/use-totp-setup-BbS3XcZA.js +3 -0
- package/public/assets/use-totp-setup-BbS3XcZA.js.map +1 -0
- package/public/assets/useAriaLabelledBy-ByuMi3Ry.js +2 -0
- package/public/assets/useAriaLabelledBy-ByuMi3Ry.js.map +1 -0
- package/public/assets/useMutation-BWZ0G4Td.js +2 -0
- package/public/assets/useMutation-BWZ0G4Td.js.map +1 -0
- package/public/assets/useQuery-Ckxjmvtl.js +2 -0
- package/public/assets/useQuery-Ckxjmvtl.js.map +1 -0
- package/public/assets/users-CmFxrCQT.js +2 -0
- package/public/assets/users-CmFxrCQT.js.map +1 -0
- package/public/assets/valueToPercent-LgbY_prH.js +2 -0
- package/public/assets/valueToPercent-LgbY_prH.js.map +1 -0
- package/public/assets/zod-C87S6Tec.js +66 -0
- package/public/assets/zod-C87S6Tec.js.map +1 -0
- package/public/index.html +31 -0
- package/public/vite.svg +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-header-bar-CjG5qvPg.js","names":["REASONS.none","ownerWindow","REASONS.focusOut","platform.engine.webkit","REASONS.triggerPress","outsidePress","REASONS.triggerPress","escapeKey","REASONS.escapeKey","platform.engine.webkit","getComputedStyle","REASONS.outsidePress","_formatErrorMessage","REASONS.imperativeAction","useId","REASONS.triggerHover","REASONS.none","platform.os.mac","platform.engine.webkit","REASONS.triggerFocus","isClickLikeOpenEvent","isClickLikeOpenEventShared","REASONS.triggerHover","isInsideEnabledTrigger","isClickLikeOpenEvent","isClickLikeOpenEventShared","REASONS.triggerHover","isInsideEnabledTrigger","platform.engine.webkit","ARROW_LEFT","ARROW_RIGHT","ARROW_DOWN","ARROW_UP","REASONS.listNavigation","REASONS.focusOut","__iconNode","__iconNode","__iconNode","_formatErrorMessage","selectors","REASONS.triggerPress","disabled","REASONS.disabled","REASONS.imperativeAction","useId","_formatErrorMessage","REASONS.triggerHover","_formatErrorMessage","_formatErrorMessage","getComputedStyle","ownerWindow","createTooltipHandle","Tooltip.Arrow","Tooltip.createHandle","Tooltip.Popup","Tooltip.Portal","Tooltip.Positioner","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Viewport","_formatErrorMessage","_formatErrorMessage","platform.os.ios","REASONS.none","ownerWindow","platform.env.jsdom","stateAttributesMapping","REASONS.none","REASONS.cancelOpen","stateAttributesMapping","stateAttributesMapping","_formatErrorMessage","ownerWindow","platform.engine.webkit","platform.os.ios","REASONS.none","_formatErrorMessage","ownerWindow","platform.engine.webkit","REASONS.windowResize","floatingPlatform","_formatErrorMessage","REASONS.itemPress","_formatErrorMessage","Select.Arrow","Select.Backdrop","Select.Group","Select.GroupLabel","Select.Icon","Select.Item","Select.ItemIndicator","Select.ItemText","Select.Label","Select.List","Select.Popup","Select.Portal","Select.Positioner","Select.Root","Select.ScrollDownArrow","Select.ScrollUpArrow","Select.Separator","Select.Trigger","Select.Value"],"sources":["../../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.7/node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../../../node_modules/.pnpm/@tanstack+react-query@5.101.2_react@19.2.7/node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/utils/nodes.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverShared.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/components/FloatingDelayGroup.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/utils/enqueueFocus.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/utils/markOthers.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/components/FloatingFocusManager.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useClick.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useClientPoint.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useDismiss.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/popups/popupHandle.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useSyncedFloatingRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/useTransitionStatus.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/popups/popupStoreUtils.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/utils/getEmptyRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/popups/store.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/popups/usePopupHandleStore.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useFocus.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverInteractionSharedState.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverFloatingInteraction.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useHoverReferenceInteraction.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useListNavigation.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/hooks/useTypeahead.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/floating-ui-react/safePolygon.mjs","../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/check.mjs","../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/moon.mjs","../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/sun.mjs","../../../../node_modules/.pnpm/lucide-react@1.25.0_react@19.2.7/node_modules/lucide-react/dist/esm/icons/x.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/icon-button/icon-button.js","../../../frontend/src/features/layout/use-branding.ts","../../../frontend/src/components/ui/toaster.tsx","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/root/TooltipRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/NullStore.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/store/TooltipStore.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/root/TooltipRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/useBaseUiId.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/provider/TooltipProviderContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/trigger/TooltipTrigger.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/portal/TooltipPortalContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/portal/TooltipPortal.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/positioner/TooltipPositionerContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/positioner/TooltipPositioner.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/popup/TooltipPopup.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/arrow/TooltipArrow.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/provider/TooltipProvider.mjs","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/usePreviousValue.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/getCssDimensions.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/usePopupAutoResize.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/adaptiveOriginMiddleware.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/usePopupViewport.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/viewport/TooltipViewport.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/tooltip/store/TooltipHandle.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-arrow.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-handle.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-description-context.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-popup.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-portal.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-positioner.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-provider.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-trigger.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/tooltip-viewport.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/tooltip/index.js","../../../frontend/src/components/ui/theme-toggle.tsx","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/useOnFirstRender.mjs","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/isElementDisabled.mjs","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/useControlled.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/root/SelectRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/field-constants/constants.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/field-root-context/FieldRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/field-register-control/useRegisterFieldControl.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/labelable-provider/LabelableContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/labelable-provider/useLabelableId.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/itemEquality.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/serializeValue.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/resolveValueLabel.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/store.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/form-context/FormContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/areArraysEqual.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/useValueChanged.mjs","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/useEnhancedClickHandler.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/useOpenInteractionType.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/scrollEdges.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/root/SelectRoot.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/useRegisteredLabelId.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/labelable-provider/useLabel.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/resolveAriaLabelledBy.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/label/SelectLabel.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/getPseudoElementBounds.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/trigger/SelectTrigger.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/value/SelectValue.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/icon/SelectIcon.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/portal/SelectPortal.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/backdrop/SelectBackdrop.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/composite/list/CompositeListContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/composite/list/CompositeList.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/positioner/SelectPositionerContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/InternalBackdrop.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/popup/utils.mjs","../../../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/utils/useScrollLock.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/useAnchoredPopupScrollLock.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/positioner/SelectPositioner.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/styles.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/toolbar/root/ToolbarRootContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/composite/composite.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/csp-context/CSPContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/popup/SelectPopup.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/list/SelectList.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/internals/composite/list/useCompositeListItem.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/item/SelectItemContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/item/SelectItem.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/item-indicator/SelectItemIndicator.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/item-text/SelectItemText.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/arrow/SelectArrow.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/scroll-arrow/SelectScrollArrow.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/scroll-down-arrow/SelectScrollDownArrow.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/scroll-up-arrow/SelectScrollUpArrow.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/group/SelectGroupContext.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/group/SelectGroup.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/group-label/SelectGroupLabel.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/utils/listbox-separator/ListboxSeparator.mjs","../../../../node_modules/.pnpm/@base-ui+react@1.7.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7/node_modules/@base-ui/react/select/separator/SelectSeparator.mjs","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-arrow.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-backdrop.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-group.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-group-label.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-icon.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-item.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-item-indicator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-item-text.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-label.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-list.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-popup.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-portal.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-positioner.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-root.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-scroll-down-arrow.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-scroll-up-arrow.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-separator.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-trigger.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/select-value.js","../../../../node_modules/.pnpm/@tinyrack+ui@0.25.0_@types+react@19.2.17_react-dom@19.2.7_react@19.2.7__react@19.2.7_shiki@4.3.1_tailwindcss@4.3.2/node_modules/@tinyrack/ui/dist/components/select/index.js","../../../frontend/src/hooks/use-language.ts","../../../frontend/src/features/layout/language-selector.tsx","../../../frontend/src/features/layout/shell-header-bar.tsx"],"sourcesContent":["\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n const subscribed = options.subscribed !== false;\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && subscribed;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useSuspenseQuery.ts\nimport { QueryObserver, skipToken } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nimport { defaultThrowOnError } from \"./suspense.js\";\nfunction useSuspenseQuery(options, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (options.queryFn === skipToken) {\n console.error(\"skipToken is not allowed for useSuspenseQuery\");\n }\n }\n return useBaseQuery(\n {\n ...options,\n enabled: true,\n suspense: true,\n throwOnError: defaultThrowOnError,\n placeholderData: void 0\n },\n QueryObserver,\n queryClient\n );\n}\nexport {\n useSuspenseQuery\n};\n//# sourceMappingURL=useSuspenseQuery.js.map","/* eslint-disable @typescript-eslint/no-loop-func */\n\nexport function getNodeChildren(nodes, id, onlyOpenChildren = true) {\n const directChildren = nodes.filter(node => node.parentId === id);\n return directChildren.flatMap(child => [...(!onlyOpenChildren || child.context?.open ? [child] : []), ...getNodeChildren(nodes, child.id, onlyOpenChildren)]);\n}\nexport function getDeepestNode(nodes, id) {\n let deepestNodeId;\n let maxDepth = -1;\n function findDeepest(nodeId, depth) {\n if (depth > maxDepth) {\n deepestNodeId = nodeId;\n maxDepth = depth;\n }\n const children = getNodeChildren(nodes, nodeId);\n children.forEach(child => {\n findDeepest(child.id, depth + 1);\n });\n }\n findDeepest(id, 0);\n return nodes.find(node => node.id === deepestNodeId);\n}\nexport function getNodeAncestors(nodes, id) {\n let allAncestors = [];\n let currentParentId = nodes.find(node => node.id === id)?.parentId;\n while (currentParentId) {\n const currentNode = nodes.find(node => node.id === currentParentId);\n currentParentId = currentNode?.parentId;\n if (currentNode) {\n allAncestors = allAncestors.concat(currentNode);\n }\n }\n return allAncestors;\n}","import { isMouseLikePointerType } from \"../utils/event.mjs\";\nexport { isTargetInsideEnabledTrigger as isInsideEnabledTrigger } from \"../utils/element.mjs\";\nfunction resolveValue(value, pointerType) {\n if (pointerType != null && !isMouseLikePointerType(pointerType)) {\n return 0;\n }\n if (typeof value === 'function') {\n return value();\n }\n return value;\n}\nexport function getDelay(value, prop, pointerType) {\n const result = resolveValue(value, pointerType);\n if (typeof result === 'number') {\n return result;\n }\n return result?.[prop];\n}\nexport function getRestMs(value) {\n if (typeof value === 'function') {\n return value();\n }\n return value;\n}\nexport function isClickLikeOpenEvent(openEventType, interactedInside) {\n return interactedInside || openEventType === 'click' || openEventType === 'mousedown';\n}\nexport function isHoverOpenEvent(openEventType) {\n return openEventType?.includes('mouse') && openEventType !== 'mousedown';\n}","'use client';\n\nimport * as React from 'react';\nimport { useTimeout, Timeout } from '@base-ui/utils/useTimeout';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { getDelay } from \"../hooks/useHoverShared.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst FloatingDelayGroupContext = /*#__PURE__*/React.createContext({\n hasProvider: false,\n timeoutMs: 0,\n delayRef: {\n current: 0\n },\n initialDelayRef: {\n current: 0\n },\n timeout: new Timeout(),\n currentIdRef: {\n current: null\n },\n currentContextRef: {\n current: null\n }\n});\nif (process.env.NODE_ENV !== \"production\") FloatingDelayGroupContext.displayName = \"FloatingDelayGroupContext\";\nfunction resetDelayRef(delayRef, initialDelayRef) {\n delayRef.current = initialDelayRef.current;\n}\n/**\n * Experimental next version of `FloatingDelayGroup` to become the default\n * in the future. This component is not yet stable.\n * Provides context for a group of floating elements that should share a\n * `delay`. Unlike `FloatingDelayGroup`, `useDelayGroup` with this\n * component does not cause a re-render of unrelated consumers of the\n * context when the delay changes.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n * @internal\n */\nexport function FloatingDelayGroup(props) {\n const {\n children,\n delay,\n timeoutMs = 0\n } = props;\n const delayRef = React.useRef(delay);\n const initialDelayRef = React.useRef(delay);\n const currentIdRef = React.useRef(null);\n const currentContextRef = React.useRef(null);\n const timeout = useTimeout();\n useIsoLayoutEffect(() => {\n initialDelayRef.current = delay;\n if (!currentIdRef.current) {\n delayRef.current = delay;\n return;\n }\n delayRef.current = {\n open: getDelay(delayRef.current, 'open'),\n close: getDelay(delay, 'close')\n };\n }, [delay, currentIdRef, delayRef, initialDelayRef]);\n return /*#__PURE__*/_jsx(FloatingDelayGroupContext.Provider, {\n value: React.useMemo(() => ({\n hasProvider: true,\n delayRef,\n initialDelayRef,\n currentIdRef,\n timeoutMs,\n currentContextRef,\n timeout\n }), [timeoutMs, timeout]),\n children: children\n });\n}\n/**\n * Enables grouping when called inside a component that's a child of a\n * `FloatingDelayGroup`.\n * @see https://floating-ui.com/docs/FloatingDelayGroup\n * @internal\n */\nexport function useDelayGroup(context, options = {\n open: false\n}) {\n const {\n open\n } = options;\n const store = 'rootStore' in context ? context.rootStore : context;\n const floatingId = store.useState('floatingId');\n const groupContext = React.useContext(FloatingDelayGroupContext);\n const {\n currentIdRef,\n delayRef,\n timeoutMs,\n initialDelayRef,\n currentContextRef,\n hasProvider,\n timeout\n } = groupContext;\n const [isInstantPhase, setIsInstantPhase] = React.useState(false);\n const openRef = React.useRef(open);\n useIsoLayoutEffect(() => {\n openRef.current = open;\n }, [open]);\n useIsoLayoutEffect(() => {\n function unset() {\n currentContextRef.current?.setIsInstantPhase(false);\n currentIdRef.current = null;\n currentContextRef.current = null;\n delayRef.current = initialDelayRef.current;\n timeout.clear();\n }\n if (!currentIdRef.current) {\n return undefined;\n }\n if (!open && currentIdRef.current === floatingId) {\n setIsInstantPhase(false);\n if (timeoutMs) {\n const closingId = floatingId;\n timeout.start(timeoutMs, () => {\n // If another tooltip has taken over the group, skip resetting.\n if (store.select('open') || currentIdRef.current && currentIdRef.current !== closingId) {\n return;\n }\n unset();\n });\n return () => {\n if (openRef.current || currentIdRef.current !== closingId) {\n timeout.clear();\n }\n };\n }\n unset();\n }\n return undefined;\n }, [open, floatingId, currentIdRef, delayRef, timeoutMs, initialDelayRef, currentContextRef, timeout, store]);\n useIsoLayoutEffect(() => {\n if (!open) {\n return;\n }\n const prevContext = currentContextRef.current;\n const prevId = currentIdRef.current;\n\n // A new tooltip is opening, so cancel any pending timeout that would reset\n // the group's delay back to the initial value.\n timeout.clear();\n currentContextRef.current = {\n onOpenChange: store.setOpen,\n setIsInstantPhase\n };\n currentIdRef.current = floatingId;\n delayRef.current = {\n open: 0,\n close: getDelay(initialDelayRef.current, 'close')\n };\n if (prevId !== null && prevId !== floatingId) {\n setIsInstantPhase(true);\n prevContext?.setIsInstantPhase(true);\n prevContext?.onOpenChange(false, createChangeEventDetails(REASONS.none));\n } else {\n setIsInstantPhase(false);\n prevContext?.setIsInstantPhase(false);\n }\n }, [open, floatingId, store, currentIdRef, delayRef, initialDelayRef, currentContextRef, timeout]);\n useIsoLayoutEffect(() => {\n return () => {\n if (currentIdRef.current === floatingId) {\n currentContextRef.current = null;\n if (!openRef.current) {\n return;\n }\n currentIdRef.current = null;\n resetDelayRef(delayRef, initialDelayRef);\n timeout.clear();\n }\n };\n }, [currentContextRef, currentIdRef, delayRef, floatingId, initialDelayRef, timeout]);\n return React.useMemo(() => ({\n hasProvider,\n delayRef,\n isInstantPhase\n }), [hasProvider, delayRef, isInstantPhase]);\n}","import { NOOP } from '@base-ui/utils/empty';\nlet rafId = 0;\nexport function enqueueFocus(el, options = {}) {\n const {\n preventScroll = false,\n sync = false,\n shouldFocus\n } = options;\n cancelAnimationFrame(rafId);\n function exec() {\n if (shouldFocus && !shouldFocus()) {\n return;\n }\n el?.focus({\n preventScroll\n });\n }\n if (sync) {\n exec();\n return NOOP;\n }\n const currentRafId = requestAnimationFrame(exec);\n rafId = currentRafId;\n return () => {\n if (rafId === currentRafId) {\n cancelAnimationFrame(currentRafId);\n rafId = 0;\n }\n };\n}","// Modified to add conditional `aria-hidden` support:\n// https://github.com/theKashey/aria-hidden/blob/9220c8f4a4fd35f63bee5510a9f41a37264382d4/src/index.ts\nimport { getNodeName, isShadowRoot } from '@floating-ui/utils/dom';\nimport { ownerDocument } from '@base-ui/utils/owner';\nconst counters = {\n inert: new WeakMap(),\n 'aria-hidden': new WeakMap()\n};\nconst markerName = 'data-base-ui-inert';\nconst uncontrolledElementsSets = {\n inert: new WeakSet(),\n 'aria-hidden': new WeakSet()\n};\nlet markerCounterMap = new WeakMap();\nlet lockCount = 0;\nfunction getUncontrolledElementsSet(controlAttribute) {\n return uncontrolledElementsSets[controlAttribute];\n}\nfunction unwrapHost(node) {\n if (!node) {\n return null;\n }\n return isShadowRoot(node) ? node.host : unwrapHost(node.parentNode);\n}\nconst correctElements = (parent, targets) => targets.map(target => {\n if (parent.contains(target)) {\n return target;\n }\n const correctedTarget = unwrapHost(target);\n if (parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n return null;\n}).filter(x => x != null);\nconst buildKeepSet = targets => {\n const keep = new Set();\n targets.forEach(target => {\n let node = target;\n while (node && !keep.has(node)) {\n keep.add(node);\n node = node.parentNode;\n }\n });\n return keep;\n};\nconst collectOutsideElements = (root, keepElements, stopElements) => {\n const outside = [];\n const walk = parent => {\n if (!parent || stopElements.has(parent)) {\n return;\n }\n Array.from(parent.children).forEach(node => {\n if (getNodeName(node) === 'script') {\n return;\n }\n if (keepElements.has(node)) {\n walk(node);\n } else {\n outside.push(node);\n }\n });\n };\n walk(root);\n return outside;\n};\nfunction applyAttributeToOthers(uncorrectedAvoidElements, body, ariaHidden, inert, {\n mark = true\n}) {\n let controlAttribute = null;\n if (inert) {\n controlAttribute = 'inert';\n } else if (ariaHidden) {\n controlAttribute = 'aria-hidden';\n }\n let counterMap = null;\n let uncontrolledElementsSet = null;\n const avoidElements = correctElements(body, uncorrectedAvoidElements);\n const markerTargets = mark ? collectOutsideElements(body, buildKeepSet(avoidElements), new Set(avoidElements)) : [];\n const hiddenElements = [];\n const markedElements = [];\n if (controlAttribute) {\n const map = counters[controlAttribute];\n const currentUncontrolledElementsSet = getUncontrolledElementsSet(controlAttribute);\n uncontrolledElementsSet = currentUncontrolledElementsSet;\n counterMap = map;\n const ariaLiveElements = correctElements(body, Array.from(body.querySelectorAll('[aria-live]')));\n const controlElements = avoidElements.concat(ariaLiveElements);\n const controlTargets = collectOutsideElements(body, buildKeepSet(controlElements), new Set(controlElements));\n controlTargets.forEach(node => {\n const attr = node.getAttribute(controlAttribute);\n const alreadyHidden = attr !== null && attr !== 'false';\n const counterValue = (map.get(node) || 0) + 1;\n map.set(node, counterValue);\n hiddenElements.push(node);\n if (counterValue === 1 && alreadyHidden) {\n currentUncontrolledElementsSet.add(node);\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, controlAttribute === 'inert' ? '' : 'true');\n }\n });\n }\n if (mark) {\n markerTargets.forEach(node => {\n const markerValue = (markerCounterMap.get(node) || 0) + 1;\n markerCounterMap.set(node, markerValue);\n markedElements.push(node);\n if (markerValue === 1) {\n node.setAttribute(markerName, '');\n }\n });\n }\n lockCount += 1;\n return () => {\n if (counterMap) {\n hiddenElements.forEach(element => {\n const currentCounterValue = counterMap.get(element) || 0;\n const counterValue = currentCounterValue - 1;\n counterMap.set(element, counterValue);\n if (!counterValue) {\n if (!uncontrolledElementsSet?.has(element) && controlAttribute) {\n element.removeAttribute(controlAttribute);\n }\n uncontrolledElementsSet?.delete(element);\n }\n });\n }\n if (mark) {\n markedElements.forEach(element => {\n const markerValue = (markerCounterMap.get(element) || 0) - 1;\n markerCounterMap.set(element, markerValue);\n if (!markerValue) {\n element.removeAttribute(markerName);\n }\n });\n }\n lockCount -= 1;\n if (!lockCount) {\n counters.inert = new WeakMap();\n counters['aria-hidden'] = new WeakMap();\n uncontrolledElementsSets.inert = new WeakSet();\n uncontrolledElementsSets['aria-hidden'] = new WeakSet();\n markerCounterMap = new WeakMap();\n }\n };\n}\nexport function markOthers(avoidElements, options = {}) {\n const {\n ariaHidden = false,\n inert = false,\n mark = true\n } = options;\n const body = ownerDocument(avoidElements[0]).body;\n return applyAttributeToOthers(avoidElements, body, ariaHidden, inert, {\n mark\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { getNodeName, isHTMLElement } from '@floating-ui/utils/dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { platform } from '@base-ui/utils/platform';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { FocusGuard } from \"../../utils/FocusGuard.mjs\";\nimport { activeElement, contains, getTarget, isTypeableCombobox, getFloatingFocusElement, isTypeableElement } from \"../utils/element.mjs\";\nimport { isVirtualClick, isVirtualPointerEvent, stopEvent } from \"../utils/event.mjs\";\nimport { tabbable, focusable, isOutsideEvent, isTabbable, getNextTabbable, getPreviousTabbable } from \"../utils/tabbable.mjs\";\nimport { getNodeAncestors, getNodeChildren } from \"../utils/nodes.mjs\";\nimport { isElementVisible } from \"../utils/composite.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { createAttribute } from \"../utils/createAttribute.mjs\";\nimport { enqueueFocus } from \"../utils/enqueueFocus.mjs\";\nimport { markOthers } from \"../utils/markOthers.mjs\";\nimport { usePortalContext } from \"./FloatingPortal.mjs\";\nimport { useFloatingTree } from \"./FloatingTree.mjs\";\nimport { CLICK_TRIGGER_IDENTIFIER } from \"../../internals/constants.mjs\";\nimport { resolveRef } from \"../../utils/resolveRef.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getEventType(event, lastInteractionType) {\n const win = ownerWindow(getTarget(event));\n if (event instanceof win.KeyboardEvent) {\n return 'keyboard';\n }\n if (event instanceof win.FocusEvent) {\n // Focus events can be caused by a preceding pointer interaction (e.g., focusout on outside press).\n // Prefer the last known pointer type if provided, else treat as keyboard.\n return lastInteractionType || 'keyboard';\n }\n if ('pointerType' in event) {\n return event.pointerType || 'keyboard';\n }\n if ('touches' in event) {\n return 'touch';\n }\n if (event instanceof win.MouseEvent) {\n // onClick events may not contain pointer events, and will fall through to here\n return lastInteractionType || (event.detail === 0 ? 'keyboard' : 'mouse');\n }\n return '';\n}\nconst LIST_LIMIT = 20;\nlet previouslyFocusedElements = [];\nfunction clearDisconnectedPreviouslyFocusedElements() {\n previouslyFocusedElements = previouslyFocusedElements.filter(entry => {\n return entry.deref()?.isConnected;\n });\n}\nfunction addPreviouslyFocusedElement(element) {\n clearDisconnectedPreviouslyFocusedElements();\n if (element && getNodeName(element) !== 'body') {\n previouslyFocusedElements.push(new WeakRef(element));\n if (previouslyFocusedElements.length > LIST_LIMIT) {\n previouslyFocusedElements = previouslyFocusedElements.slice(-LIST_LIMIT);\n }\n }\n}\nfunction getPreviouslyFocusedElement() {\n clearDisconnectedPreviouslyFocusedElements();\n return previouslyFocusedElements[previouslyFocusedElements.length - 1]?.deref();\n}\nfunction getFirstTabbableElement(container) {\n if (!container) {\n return null;\n }\n if (isTabbable(container)) {\n return container;\n }\n return tabbable(container)[0] || container;\n}\nfunction handleTabIndex(floatingFocusElement) {\n if (floatingFocusElement.hasAttribute('tabindex') && !floatingFocusElement.hasAttribute('data-tabindex')) {\n return;\n }\n if (!floatingFocusElement.getAttribute('role')?.includes('dialog')) {\n return;\n }\n const focusableElements = focusable(floatingFocusElement);\n const tabbableContent = focusableElements.filter(element => {\n const dataTabIndex = element.getAttribute('data-tabindex') || '';\n return isTabbable(element) || element.hasAttribute('data-tabindex') && !dataTabIndex.startsWith('-');\n });\n const tabIndex = floatingFocusElement.getAttribute('tabindex');\n if (tabbableContent.length === 0) {\n if (tabIndex !== '0') {\n floatingFocusElement.setAttribute('tabindex', '0');\n // Mark our own write so the externally-managed early-return above doesn't\n // mistake it for a user-authored `tabindex` and freeze management.\n floatingFocusElement.setAttribute('data-tabindex', '0');\n }\n } else if (tabIndex !== '-1' || floatingFocusElement.hasAttribute('data-tabindex') && floatingFocusElement.getAttribute('data-tabindex') !== '-1') {\n floatingFocusElement.setAttribute('tabindex', '-1');\n floatingFocusElement.setAttribute('data-tabindex', '-1');\n }\n}\n/**\n * Provides focus management for the floating element.\n * @see https://floating-ui.com/docs/FloatingFocusManager\n * @internal\n */\nexport function FloatingFocusManager(props) {\n const {\n context,\n children,\n disabled = false,\n initialFocus = true,\n returnFocus = true,\n restoreFocus = false,\n modal = true,\n closeOnFocusOut = true,\n openInteractionType = '',\n nextFocusableElement,\n previousFocusableElement,\n beforeContentFocusGuardRef,\n externalTree,\n getInsideElements\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const domReference = store.useState('domReferenceElement');\n const floating = store.useState('floatingElement');\n const {\n events,\n dataRef\n } = store.context;\n const getNodeId = useStableCallback(() => dataRef.current.floatingContext?.nodeId);\n const ignoreInitialFocus = initialFocus === false;\n // A typeable combobox reference (e.g. input/textarea) with `initialFocus={false}`\n // has different focus semantics: focus is not trapped inside the floating element,\n // so in the modal case the guards are not rendered, but `aria-hidden` is still\n // applied to the outside nodes.\n const isUntrappedTypeableCombobox = isTypeableCombobox(domReference) && ignoreInitialFocus;\n const initialFocusRef = useValueAsRef(initialFocus);\n const returnFocusRef = useValueAsRef(returnFocus);\n const openInteractionTypeRef = useValueAsRef(openInteractionType);\n const openRef = useValueAsRef(open);\n const tree = useFloatingTree(externalTree);\n const portalContext = usePortalContext();\n const preventReturnFocusRef = React.useRef(false);\n const isPointerDownRef = React.useRef(false);\n const pointerDownOutsideRef = React.useRef(false);\n const lastFocusedTabbableRef = React.useRef(null);\n const closeTypeRef = React.useRef('');\n const lastInteractionTypeRef = React.useRef('');\n const beforeGuardRef = React.useRef(null);\n const afterGuardRef = React.useRef(null);\n const mergedBeforeGuardRef = useMergedRefs(beforeGuardRef, beforeContentFocusGuardRef, portalContext?.beforeInsideRef);\n const mergedAfterGuardRef = useMergedRefs(afterGuardRef, portalContext?.afterInsideRef);\n const blurTimeout = useTimeout();\n const pointerDownTimeout = useTimeout();\n const restoreFocusFrame = useAnimationFrame();\n const isInsidePortal = portalContext != null;\n const floatingFocusElement = getFloatingFocusElement(floating);\n const getTabbableContent = useStableCallback((container = floatingFocusElement) => {\n return container ? tabbable(container) : [];\n });\n const getResolvedInsideElements = useStableCallback(() => getInsideElements?.().filter(element => element != null) ?? []);\n\n // Prevent Tab from escaping the modal when there are no tabbable elements.\n React.useEffect(() => {\n if (disabled || !modal) {\n return undefined;\n }\n function onKeyDown(event) {\n if (event.key === 'Tab') {\n // The focus guards have nothing to focus, so we need to stop the event.\n if (contains(floatingFocusElement, activeElement(ownerDocument(floatingFocusElement))) && getTabbableContent().length === 0 && !isUntrappedTypeableCombobox) {\n stopEvent(event);\n }\n }\n }\n const doc = ownerDocument(floatingFocusElement);\n return addEventListener(doc, 'keydown', onKeyDown);\n }, [disabled, floatingFocusElement, modal, isUntrappedTypeableCombobox, getTabbableContent]);\n\n // Track pointer/keyboard interactions to disambiguate focus and outside presses.\n React.useEffect(() => {\n if (disabled || !open) {\n return undefined;\n }\n const doc = ownerDocument(floatingFocusElement);\n function clearPointerDownOutside() {\n pointerDownOutsideRef.current = false;\n }\n function onPointerDown(event) {\n const target = getTarget(event);\n const insideElements = getResolvedInsideElements();\n const pointerTargetInside = contains(floating, target) || contains(domReference, target) || contains(portalContext?.portalNode, target) || insideElements.some(element => element === target || contains(element, target));\n pointerDownOutsideRef.current = !pointerTargetInside;\n lastInteractionTypeRef.current = event.pointerType || 'keyboard';\n if (target?.closest(`[${CLICK_TRIGGER_IDENTIFIER}]`)) {\n isPointerDownRef.current = true;\n // Reset on the next tick so a single click on a click-trigger doesn't\n // permanently suppress focus-out closing for the lifetime of the instance.\n pointerDownTimeout.start(0, () => {\n isPointerDownRef.current = false;\n });\n }\n }\n function onKeyDown() {\n lastInteractionTypeRef.current = 'keyboard';\n }\n return mergeCleanups(addEventListener(doc, 'pointerdown', onPointerDown, true), addEventListener(doc, 'pointerup', clearPointerDownOutside, true), addEventListener(doc, 'pointercancel', clearPointerDownOutside, true), addEventListener(doc, 'keydown', onKeyDown, true),\n // Avoid a stale `true` leaking into the next open (e.g. keep-mounted popups)\n // if the popup dismissed between pointerdown and pointerup.\n clearPointerDownOutside);\n }, [disabled, floating, domReference, floatingFocusElement, open, portalContext, pointerDownTimeout, getResolvedInsideElements]);\n\n // Close on focus out and restore focus within the floating tree when needed.\n React.useEffect(() => {\n if (disabled || !closeOnFocusOut) {\n return undefined;\n }\n const doc = ownerDocument(floatingFocusElement);\n\n // In Safari, buttons lose focus when pressing them.\n function handlePointerDown() {\n isPointerDownRef.current = true;\n pointerDownTimeout.start(0, () => {\n isPointerDownRef.current = false;\n });\n }\n function handleFocusIn(event) {\n const target = getTarget(event);\n if (isTabbable(target)) {\n lastFocusedTabbableRef.current = target;\n }\n }\n function handleFocusOutside(event) {\n const relatedTarget = event.relatedTarget;\n const currentTarget = event.currentTarget;\n const target = getTarget(event);\n\n // When focus is lost to the body (e.g. on a backdrop press), record the element that\n // had focus so a confirmation dialog opened while the body is focused can return focus\n // to it. Scoped to `modal` to avoid non-modal popups polluting the shared stack.\n if (modal && relatedTarget == null && target != null && contains(floating, target)) {\n addPreviouslyFocusedElement(target);\n }\n queueMicrotask(() => {\n const nodeId = getNodeId();\n const triggers = store.context.triggerElements;\n const insideElements = getResolvedInsideElements();\n const isRelatedFocusGuard = relatedTarget?.hasAttribute(createAttribute('focus-guard')) && [beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeInsideRef.current, portalContext?.afterInsideRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement)].includes(relatedTarget);\n const movedToUnrelatedNode = !(contains(domReference, relatedTarget) || contains(floating, relatedTarget) || contains(relatedTarget, floating) || contains(portalContext?.portalNode, relatedTarget) || insideElements.some(element => element === relatedTarget || contains(element, relatedTarget)) || triggers.hasMatchingElement(trigger => contains(trigger, relatedTarget)) || isRelatedFocusGuard || tree && (getNodeChildren(tree.nodesRef.current, nodeId).find(node => contains(node.context?.elements.floating, relatedTarget) || contains(node.context?.elements.domReference, relatedTarget)) || getNodeAncestors(tree.nodesRef.current, nodeId).find(node => [node.context?.elements.floating, getFloatingFocusElement(node.context?.elements.floating)].includes(relatedTarget) || node.context?.elements.domReference === relatedTarget)));\n if (currentTarget === domReference && floatingFocusElement) {\n handleTabIndex(floatingFocusElement);\n }\n\n // Restore focus to the previously focused tabbable element to prevent\n // focus from being lost outside the floating tree.\n if (restoreFocus && currentTarget !== domReference && !isElementVisible(target) && activeElement(doc) === doc.body) {\n // Let `FloatingPortal` effect knows that focus is still inside the\n // floating tree.\n if (isHTMLElement(floatingFocusElement)) {\n floatingFocusElement.focus();\n // If explicitly requested to restore focus to the popup container, do not search\n // for the next/previous tabbable element.\n if (restoreFocus === 'popup') {\n // If the focused element is removed on pointerdown, the browser\n // tries to move focus to it right after the `.focus()` call above,\n // but because it's removed in the same tick, focus is lost instead.\n // Re-focusing asynchronously (next frame) wins that race.\n restoreFocusFrame.request(() => {\n floatingFocusElement.focus();\n });\n return;\n }\n }\n const tabbableContent = getTabbableContent();\n const prevTabbable = lastFocusedTabbableRef.current;\n const nodeToFocus = (prevTabbable && tabbableContent.includes(prevTabbable) ? prevTabbable : null) || tabbableContent[tabbableContent.length - 1] || floatingFocusElement;\n if (isHTMLElement(nodeToFocus)) {\n nodeToFocus.focus();\n }\n }\n\n // https://github.com/floating-ui/floating-ui/issues/3060\n if (dataRef.current.insideReactTree) {\n dataRef.current.insideReactTree = false;\n return;\n }\n\n // Focus did not move inside the floating tree, and there are no tabbable\n // portal guards to handle closing.\n if ((isUntrappedTypeableCombobox ? true : !modal) && relatedTarget && movedToUnrelatedNode && !isPointerDownRef.current && (\n // Fix React 18 Strict Mode returnFocus due to double rendering.\n // For an \"untrapped\" typeable combobox (input role=combobox with\n // initialFocus=false), re-opening the popup and tabbing out should still close it even\n // when the previously focused element (e.g. the next tabbable outside the popup) is\n // focused again. Otherwise, the popup remains open on the second Tab sequence:\n // click input -> Tab (closes) -> click input -> Tab.\n // Allow closing when `isUntrappedTypeableCombobox` regardless of the previously focused element.\n isUntrappedTypeableCombobox || relatedTarget !== getPreviouslyFocusedElement())) {\n preventReturnFocusRef.current = true;\n store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event));\n }\n });\n }\n function markInsideReactTree() {\n if (pointerDownOutsideRef.current) {\n return;\n }\n dataRef.current.insideReactTree = true;\n blurTimeout.start(0, () => {\n dataRef.current.insideReactTree = false;\n });\n }\n const domReferenceElement = isHTMLElement(domReference) ? domReference : null;\n if (!floating && !domReferenceElement) {\n return undefined;\n }\n return mergeCleanups(domReferenceElement && addEventListener(domReferenceElement, 'focusout', handleFocusOutside), domReferenceElement && addEventListener(domReferenceElement, 'pointerdown', handlePointerDown), floating && addEventListener(floating, 'focusin', handleFocusIn), floating && addEventListener(floating, 'focusout', handleFocusOutside), floating && portalContext && addEventListener(floating, 'focusout', markInsideReactTree, true));\n }, [disabled, domReference, floating, floatingFocusElement, modal, tree, portalContext, store, closeOnFocusOut, restoreFocus, getTabbableContent, isUntrappedTypeableCombobox, getNodeId, dataRef, blurTimeout, pointerDownTimeout, restoreFocusFrame, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);\n\n // Hide everything outside the floating tree from assistive tech while open.\n React.useEffect(() => {\n if (disabled || !floating || !open) {\n return undefined;\n }\n\n // Don't hide portals nested within the parent portal.\n const portalNodes = Array.from(portalContext?.portalNode?.querySelectorAll(`[${createAttribute('portal')}]`) || []);\n const ancestors = tree ? getNodeAncestors(tree.nodesRef.current, getNodeId()) : [];\n const rootAncestorComboboxDomReference = ancestors.find(node => isTypeableCombobox(node.context?.elements.domReference || null))?.context?.elements.domReference;\n const controlInsideElements = [floating, ...portalNodes, beforeGuardRef.current, afterGuardRef.current, portalContext?.beforeOutsideRef.current, portalContext?.afterOutsideRef.current, ...getResolvedInsideElements()];\n const insideElements = [...controlInsideElements, rootAncestorComboboxDomReference, resolveRef(previousFocusableElement), resolveRef(nextFocusableElement), isUntrappedTypeableCombobox ? domReference : null].filter(x => x != null);\n const ariaHiddenCleanup = markOthers(insideElements, {\n ariaHidden: modal || isUntrappedTypeableCombobox,\n mark: false\n });\n const markerInsideElements = [floating, ...portalNodes].filter(x => x != null);\n const markerCleanup = markOthers(markerInsideElements);\n return () => {\n markerCleanup();\n ariaHiddenCleanup();\n };\n }, [open, disabled, domReference, floating, modal, portalContext, isUntrappedTypeableCombobox, tree, getNodeId, nextFocusableElement, previousFocusableElement, getResolvedInsideElements]);\n\n // Focus the initial element when the floating element opens.\n useIsoLayoutEffect(() => {\n if (!open || disabled || !isHTMLElement(floatingFocusElement)) {\n return;\n }\n closeTypeRef.current = '';\n lastInteractionTypeRef.current = '';\n const doc = ownerDocument(floatingFocusElement);\n const previouslyFocusedElement = activeElement(doc);\n\n // Wait for any layout effect state setters to execute to set `tabIndex`.\n queueMicrotask(() => {\n const initialFocusValueOrFn = initialFocusRef.current;\n const resolvedInitialFocus = typeof initialFocusValueOrFn === 'function' ? initialFocusValueOrFn(openInteractionTypeRef.current || '') : initialFocusValueOrFn;\n\n // `null` should fallback to default behavior in case of an empty ref.\n if (resolvedInitialFocus === undefined || resolvedInitialFocus === false) {\n return;\n }\n const focusAlreadyInsideFloatingEl = contains(floatingFocusElement, previouslyFocusedElement);\n if (focusAlreadyInsideFloatingEl) {\n return;\n }\n let focusableElements = null;\n const getDefaultFocusElement = () => {\n if (focusableElements == null) {\n focusableElements = getTabbableContent(floatingFocusElement);\n }\n return focusableElements[0] || floatingFocusElement;\n };\n let elToFocus;\n if (resolvedInitialFocus === true || resolvedInitialFocus === null) {\n elToFocus = getDefaultFocusElement();\n } else {\n elToFocus = resolveRef(resolvedInitialFocus);\n }\n elToFocus = elToFocus || getDefaultFocusElement();\n const hadFocusInside = contains(floatingFocusElement, activeElement(doc));\n\n // enqueueFocus returns a rAF-cancel function; we intentionally don't cancel this focus.\n void enqueueFocus(elToFocus, {\n preventScroll: elToFocus === floatingFocusElement,\n shouldFocus() {\n // This focus is queued on the next animation frame. If the floating element has closed\n // before it runs — e.g. tabbing out of a kept-mounted popup — don't pull focus back\n // onto the initial element after it has legitimately moved elsewhere.\n if (!openRef.current) {\n return false;\n }\n if (hadFocusInside) {\n return true;\n }\n const currentActiveElement = activeElement(doc);\n const focusMovedInside = currentActiveElement !== elToFocus && contains(floatingFocusElement, currentActiveElement);\n return !focusMovedInside;\n }\n });\n });\n }, [disabled, open, floatingFocusElement, getTabbableContent, initialFocusRef, openInteractionTypeRef, openRef]);\n\n // Track return focus targets and restore focus on unmount/close.\n useIsoLayoutEffect(() => {\n if (disabled || !floatingFocusElement) {\n return undefined;\n }\n const doc = ownerDocument(floatingFocusElement);\n const elementFocusedBeforeOpen = activeElement(doc);\n // Only an explicit `null` interaction type represents a programmatic open.\n // `undefined` is normalized to `''` by the prop default, so it never reaches\n // here as nullish and is intentionally not treated as programmatic.\n const preferPreviousFocus = openInteractionTypeRef.current == null;\n addPreviouslyFocusedElement(elementFocusedBeforeOpen);\n function onOpenChangeLocal(details) {\n if (!details.open) {\n closeTypeRef.current = getEventType(details.nativeEvent, lastInteractionTypeRef.current);\n }\n if (details.reason === REASONS.triggerHover && details.nativeEvent.type === 'mouseleave') {\n preventReturnFocusRef.current = true;\n }\n if (details.reason !== REASONS.outsidePress) {\n return;\n }\n if (details.nested) {\n preventReturnFocusRef.current = false;\n } else if (isVirtualClick(details.nativeEvent) || isVirtualPointerEvent(details.nativeEvent)) {\n preventReturnFocusRef.current = false;\n } else {\n // On outside press, only return focus to the reference when the browser supports the\n // `focus({ preventScroll })` option; without it, restoring focus scrolls the page.\n // Chrome on Android and Samsung Internet still don't support `preventScroll`\n // (https://issues.chromium.org/issues/41453122), so the runtime check keeps return\n // focus disabled there to avoid the scroll jump.\n let isPreventScrollSupported = false;\n ownerDocument(floatingFocusElement).createElement('div').focus({\n get preventScroll() {\n isPreventScrollSupported = true;\n return false;\n }\n });\n if (isPreventScrollSupported) {\n preventReturnFocusRef.current = false;\n } else {\n preventReturnFocusRef.current = true;\n }\n }\n }\n events.on('openchange', onOpenChangeLocal);\n function getReturnElement(closeType) {\n const returnFocusValueOrFn = returnFocusRef.current;\n let resolvedReturnFocusValue = typeof returnFocusValueOrFn === 'function' ? returnFocusValueOrFn(closeType) : returnFocusValueOrFn;\n\n // `null` should fallback to default behavior in case of an empty ref.\n if (resolvedReturnFocusValue === undefined || resolvedReturnFocusValue === false) {\n return null;\n }\n if (resolvedReturnFocusValue === null) {\n resolvedReturnFocusValue = true;\n }\n const referenceReturnElement = domReference?.isConnected ? domReference : null;\n const previousReturnElement = elementFocusedBeforeOpen?.isConnected && getNodeName(elementFocusedBeforeOpen) !== 'body' ? elementFocusedBeforeOpen : null;\n let defaultReturnElement = preferPreviousFocus ? previousReturnElement || referenceReturnElement : referenceReturnElement || previousReturnElement;\n if (!defaultReturnElement) {\n defaultReturnElement = getPreviouslyFocusedElement() || null;\n }\n if (typeof resolvedReturnFocusValue === 'boolean') {\n return defaultReturnElement;\n }\n return resolveRef(resolvedReturnFocusValue) || defaultReturnElement || null;\n }\n return () => {\n events.off('openchange', onOpenChangeLocal);\n const activeEl = activeElement(doc);\n const insideElements = getResolvedInsideElements();\n const isFocusInsideFloatingTree = contains(floating, activeEl) || insideElements.some(element => element === activeEl || contains(element, activeEl)) || tree && getNodeChildren(tree.nodesRef.current, getNodeId(), false).some(node => contains(node.context?.elements.floating, activeEl));\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const returnFocusValueOrFn = returnFocusRef.current;\n const closeType = closeTypeRef.current;\n const returnElement = getReturnElement(closeType);\n queueMicrotask(() => {\n // `returnElement` if it is tabbable, otherwise its first tabbable child,\n // otherwise `returnElement` itself (which may not be tabbable at all).\n const tabbableReturnElement = getFirstTabbableElement(returnElement);\n const hasExplicitReturnFocus = typeof returnFocusValueOrFn !== 'boolean';\n if (returnFocusValueOrFn && !preventReturnFocusRef.current && isHTMLElement(tabbableReturnElement) && (\n // If the focus moved somewhere else after mount, avoid returning focus\n // since it likely entered a different element which should be\n // respected: https://github.com/floating-ui/floating-ui/issues/2607\n !hasExplicitReturnFocus && tabbableReturnElement !== activeEl && activeEl !== doc.body ? isFocusInsideFloatingTree : true)) {\n const focusOptions = {\n preventScroll: true\n };\n if (closeType === 'keyboard') {\n focusOptions.focusVisible = true;\n }\n tabbableReturnElement.focus(focusOptions);\n }\n preventReturnFocusRef.current = false;\n });\n };\n }, [disabled, floating, floatingFocusElement, returnFocusRef, openInteractionTypeRef, events, tree, domReference, getNodeId, getResolvedInsideElements]);\n\n // Safari may randomly scroll to the bottom of the page if an input inside a popup has focus\n // when the popup unmounts from the DOM.\n // By blurring it before the popup unmounts, we can prevent this behavior.\n useIsoLayoutEffect(() => {\n if (!platform.engine.webkit || open || !floating) {\n return;\n }\n const activeEl = activeElement(ownerDocument(floating));\n if (!isHTMLElement(activeEl) || !isTypeableElement(activeEl)) {\n return;\n }\n if (contains(floating, activeEl)) {\n activeEl.blur();\n }\n }, [open, floating]);\n\n // Synchronize the focus manager state (modal, closeOnFocusOut, open, etc.) to the\n // FloatingPortal context, which uses it to decide whether to render its own guards.\n useIsoLayoutEffect(() => {\n if (disabled || !portalContext) {\n return undefined;\n }\n portalContext.setFocusManagerState({\n modal,\n closeOnFocusOut,\n open,\n onOpenChange: store.setOpen,\n domReference\n });\n return () => {\n portalContext.setFocusManagerState(null);\n };\n }, [disabled, portalContext, modal, open, store, closeOnFocusOut, domReference]);\n\n // Keep the floating element tabIndex in sync and clear stale focus records.\n useIsoLayoutEffect(() => {\n if (disabled || !floatingFocusElement) {\n return undefined;\n }\n handleTabIndex(floatingFocusElement);\n return () => {\n queueMicrotask(clearDisconnectedPreviouslyFocusedElements);\n };\n }, [disabled, floatingFocusElement]);\n const shouldRenderGuards = !disabled && (modal ? !isUntrappedTypeableCombobox : true) && (isInsidePortal || modal);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [shouldRenderGuards && /*#__PURE__*/_jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedBeforeGuardRef,\n onFocus: event => {\n if (modal) {\n const els = getTabbableContent();\n // enqueueFocus returns a rAF-cancel function we don't need here.\n void enqueueFocus(els[els.length - 1]);\n } else if (portalContext?.portalNode) {\n preventReturnFocusRef.current = false;\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const nextTabbable = getNextTabbable(domReference);\n nextTabbable?.focus();\n } else {\n resolveRef(previousFocusableElement ?? portalContext.beforeOutsideRef)?.focus();\n }\n }\n }\n }), children, shouldRenderGuards && /*#__PURE__*/_jsx(FocusGuard, {\n \"data-type\": \"inside\",\n ref: mergedAfterGuardRef,\n onFocus: event => {\n if (modal) {\n // enqueueFocus returns a rAF-cancel function we don't need here.\n void enqueueFocus(getTabbableContent()[0]);\n } else if (portalContext?.portalNode) {\n if (closeOnFocusOut) {\n preventReturnFocusRef.current = true;\n }\n if (isOutsideEvent(event, portalContext.portalNode)) {\n const prevTabbable = getPreviousTabbable(domReference);\n prevTabbable?.focus();\n } else {\n resolveRef(nextFocusableElement ?? portalContext.afterOutsideRef)?.focus();\n }\n }\n }\n })]\n });\n}","'use client';\n\nimport * as React from 'react';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { getTarget, isTypeableElement } from \"../utils/element.mjs\";\nimport { isMouseLikePointerType, isVirtualPointerEvent } from \"../utils/event.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\n/**\n * Opens or closes the floating element when clicking the reference element.\n * @see https://floating-ui.com/docs/useClick\n */\nexport function useClick(context, props = {}) {\n const {\n enabled = true,\n event: eventOption = 'click',\n toggle = true,\n ignoreMouse = false,\n stickIfOpen = true,\n touchOpenDelay = 0,\n reason = REASONS.triggerPress\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const dataRef = store.context.dataRef;\n const pointerTypeRef = React.useRef(undefined);\n const frame = useAnimationFrame();\n const touchOpenTimeout = useTimeout();\n const reference = React.useMemo(() => {\n function setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType) {\n const details = createChangeEventDetails(reason, nativeEvent, target);\n if (nextOpen && pointerType === 'touch' && touchOpenDelay > 0) {\n touchOpenTimeout.start(touchOpenDelay, () => {\n store.setOpen(true, details);\n });\n } else {\n store.setOpen(nextOpen, details);\n }\n }\n function getNextOpen(open, currentTarget, isClickLikeOpenEvent) {\n const openEvent = dataRef.current.openEvent;\n const hasClickedOnInactiveTrigger = store.select('domReferenceElement') !== currentTarget;\n if (open && hasClickedOnInactiveTrigger) {\n // Moving between triggers should always open the newly active one.\n return true;\n }\n if (!open) {\n // A closed popup should open on the next press.\n return true;\n }\n if (!toggle) {\n // Non-toggle mode never closes on a repeated trigger press.\n return true;\n }\n if (openEvent && stickIfOpen) {\n // Preserve hover/focus-opened popups until the matching click-like event closes them.\n return !isClickLikeOpenEvent(openEvent.type);\n }\n\n // Otherwise, a repeated click toggles the popup closed.\n return false;\n }\n return {\n onPointerDown(event) {\n // Screen reader activations (Android TalkBack, desktop screen readers) report a\n // mouse-like `pointerType`, but `ignoreMouse` must not drop them: hover logic cannot\n // open for a virtual press since there is no real pointer movement to wait for.\n // Virtual `touch` presses (iOS VoiceOver) keep their type so `touchOpenDelay` applies.\n pointerTypeRef.current = isMouseLikePointerType(event.pointerType, true) && isVirtualPointerEvent(event.nativeEvent) ? 'virtual' : event.pointerType;\n },\n onMouseDown(event) {\n const pointerType = pointerTypeRef.current;\n const nativeEvent = event.nativeEvent;\n const open = store.select('open');\n\n // Ignore all buttons except for the \"main\" button.\n // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button\n if (event.button !== 0 || eventOption === 'click' || isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const nextOpen = getNextOpen(open, event.currentTarget, openEventType => openEventType === 'click' || openEventType === 'mousedown');\n\n // Animations sometimes won't run on a typeable element if using a rAF.\n // Focus is always set on these elements. For touch, we may delay opening.\n const target = getTarget(nativeEvent);\n if (isTypeableElement(target)) {\n setOpenWithTouchDelay(nextOpen, nativeEvent, target, pointerType);\n return;\n }\n\n // Capture the currentTarget before the rAF.\n // as React sets it to null after the event handler completes.\n const eventCurrentTarget = event.currentTarget;\n\n // Wait until focus is set on the element. This is an alternative to\n // `event.preventDefault()` to avoid :focus-visible from appearing when using a pointer.\n frame.request(() => {\n setOpenWithTouchDelay(nextOpen, nativeEvent, eventCurrentTarget, pointerType);\n });\n },\n onClick(event) {\n if (eventOption === 'mousedown-only') {\n return;\n }\n const pointerType = pointerTypeRef.current;\n if (eventOption === 'mousedown' && pointerType) {\n pointerTypeRef.current = undefined;\n return;\n }\n if (isMouseLikePointerType(pointerType, true) && ignoreMouse) {\n return;\n }\n const open = store.select('open');\n const nextOpen = getNextOpen(open, event.currentTarget, openEventType => openEventType === 'click' || openEventType === 'mousedown' || openEventType === 'keydown' || openEventType === 'keyup');\n setOpenWithTouchDelay(nextOpen, event.nativeEvent, event.currentTarget, pointerType);\n },\n onKeyDown() {\n pointerTypeRef.current = undefined;\n }\n };\n }, [dataRef, eventOption, ignoreMouse, reason, store, stickIfOpen, toggle, frame, touchOpenTimeout, touchOpenDelay]);\n return React.useMemo(() => enabled ? {\n reference\n } : EMPTY_OBJECT, [enabled, reference]);\n}","'use client';\n\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getWindow } from '@floating-ui/utils/dom';\nimport { contains, getTarget } from \"../utils/element.mjs\";\nimport { isMouseLikePointerType } from \"../utils/event.mjs\";\nfunction createVirtualElement(domElement, data) {\n let offsetX = null;\n let offsetY = null;\n let isAutoUpdateEvent = false;\n return {\n contextElement: domElement || undefined,\n getBoundingClientRect() {\n const domRect = domElement?.getBoundingClientRect() || {\n width: 0,\n height: 0,\n x: 0,\n y: 0\n };\n const isXAxis = data.axis === 'x' || data.axis === 'both';\n const isYAxis = data.axis === 'y' || data.axis === 'both';\n const canTrackCursorOnAutoUpdate = ['mouseenter', 'mousemove'].includes(data.dataRef.current.openEvent?.type || '') && data.pointerType !== 'touch';\n let width = domRect.width;\n let height = domRect.height;\n let x = domRect.x;\n let y = domRect.y;\n if (offsetX == null && data.x && isXAxis) {\n offsetX = domRect.x - data.x;\n }\n if (offsetY == null && data.y && isYAxis) {\n offsetY = domRect.y - data.y;\n }\n x -= offsetX || 0;\n y -= offsetY || 0;\n width = 0;\n height = 0;\n if (!isAutoUpdateEvent || canTrackCursorOnAutoUpdate) {\n width = data.axis === 'y' ? domRect.width : 0;\n height = data.axis === 'x' ? domRect.height : 0;\n x = isXAxis && data.x != null ? data.x : x;\n y = isYAxis && data.y != null ? data.y : y;\n } else if (isAutoUpdateEvent && !canTrackCursorOnAutoUpdate) {\n height = data.axis === 'x' ? domRect.height : height;\n width = data.axis === 'y' ? domRect.width : width;\n }\n isAutoUpdateEvent = true;\n return {\n width,\n height,\n x,\n y,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n }\n };\n}\nfunction isMouseBasedEvent(event) {\n return event != null && event.clientX != null;\n}\n/**\n * Positions the floating element relative to a client point (in the viewport),\n * such as the mouse position. By default, it follows the mouse cursor.\n * @see https://floating-ui.com/docs/useClientPoint\n */\nexport function useClientPoint(context, props = {}) {\n const {\n enabled = true,\n axis = 'both'\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floating = store.useState('floatingElement');\n const domReference = store.useState('domReferenceElement');\n const dataRef = store.context.dataRef;\n const initialRef = React.useRef(false);\n const cleanupListenerRef = React.useRef(null);\n const [pointerType, setPointerType] = React.useState();\n const [reactive, setReactive] = React.useState([]);\n const resetReference = useStableCallback(reference => {\n store.set('positionReference', reference);\n });\n const setReference = useStableCallback((newX, newY, referenceElement) => {\n if (initialRef.current) {\n return;\n }\n\n // Prevent setting if the open event was not a mouse-like one\n // (e.g. focus to open, then hover over the reference element).\n // Only apply if the event exists.\n if (dataRef.current.openEvent && !isMouseBasedEvent(dataRef.current.openEvent)) {\n return;\n }\n store.set('positionReference', createVirtualElement(referenceElement ?? domReference, {\n x: newX,\n y: newY,\n axis,\n dataRef,\n pointerType\n }));\n });\n const handleReferenceEnterOrMove = useStableCallback(event => {\n if (!open) {\n setReference(event.clientX, event.clientY, event.currentTarget);\n } else if (!cleanupListenerRef.current) {\n // If there's no cleanup, there's no listener, but we want to ensure\n // we add the listener if the cursor landed on the floating element and\n // then back on the reference (i.e. it's interactive).\n setReference(event.clientX, event.clientY, event.currentTarget);\n setReactive([]);\n }\n });\n\n // If the pointer is a mouse-like pointer, we want to continue following the\n // mouse even if the floating element is transitioning out. On touch\n // devices, this is undesirable because the floating element will move to\n // the dismissal touch point.\n const openCheck = isMouseLikePointerType(pointerType) ? floating : open;\n React.useEffect(() => {\n if (!enabled) {\n resetReference(domReference);\n return undefined;\n }\n if (!openCheck) {\n return undefined;\n }\n function cleanupListener() {\n cleanupListenerRef.current?.();\n cleanupListenerRef.current = null;\n }\n const win = getWindow(floating);\n function handleMouseMove(event) {\n const target = getTarget(event);\n if (!contains(floating, target)) {\n setReference(event.clientX, event.clientY);\n } else {\n cleanupListener();\n }\n }\n if (!dataRef.current.openEvent || isMouseBasedEvent(dataRef.current.openEvent)) {\n cleanupListenerRef.current = addEventListener(win, 'mousemove', handleMouseMove);\n } else {\n resetReference(domReference);\n }\n return cleanupListener;\n }, [openCheck, enabled, floating, dataRef, domReference, store, setReference, resetReference, reactive]);\n\n // Clear virtual cursor references when the hook unmounts. Enabled flips are handled above.\n React.useEffect(() => () => {\n store.set('positionReference', null);\n }, [store]);\n React.useEffect(() => {\n if (enabled && !floating) {\n initialRef.current = false;\n }\n }, [enabled, floating]);\n React.useEffect(() => {\n if (!enabled && open) {\n initialRef.current = true;\n }\n }, [enabled, open]);\n const reference = React.useMemo(() => {\n function setPointerTypeRef(event) {\n setPointerType(event.pointerType);\n }\n return {\n onPointerDown: setPointerTypeRef,\n onPointerEnter: setPointerTypeRef,\n onMouseMove: handleReferenceEnterOrMove,\n onMouseEnter: handleReferenceEnterOrMove\n };\n }, [handleReferenceEnterOrMove]);\n return React.useMemo(() => enabled ? {\n reference,\n trigger: reference\n } : {}, [enabled, reference]);\n}","'use client';\n\n/* eslint-disable no-underscore-dangle */\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { Timeout, useTimeout } from '@base-ui/utils/useTimeout';\nimport { getComputedStyle, getParentNode, isElement, isHTMLElement, isLastTraversableNode, isShadowRoot } from '@floating-ui/utils/dom';\nimport { platform } from '@base-ui/utils/platform';\nimport { useFloatingTree } from \"../components/FloatingTree.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { createAttribute } from \"../utils/createAttribute.mjs\";\nimport { contains, getTarget, isEventTargetWithin, isRootElement } from \"../utils/element.mjs\";\nimport { isReactEvent } from \"../utils/event.mjs\";\nimport { getNodeChildren } from \"../utils/nodes.mjs\";\nfunction alwaysFalse() {\n return false;\n}\nexport function normalizeProp(normalizable) {\n return {\n escapeKey: typeof normalizable === 'boolean' ? normalizable : normalizable?.escapeKey ?? false,\n outsidePress: typeof normalizable === 'boolean' ? normalizable : normalizable?.outsidePress ?? true\n };\n}\n/**\n * Closes the floating element when a dismissal is requested — by default, when\n * the user presses the `escape` key or outside of the floating element.\n * @see https://floating-ui.com/docs/useDismiss\n */\nexport function useDismiss(context, props = {}) {\n const {\n enabled = true,\n escapeKey = true,\n outsidePress: outsidePressProp = true,\n outsidePressEvent = 'sloppy',\n referencePress = alwaysFalse,\n bubbles,\n externalTree\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const {\n dataRef\n } = store.context;\n const tree = useFloatingTree(externalTree);\n const outsidePressFn = useStableCallback(typeof outsidePressProp === 'function' ? outsidePressProp : () => false);\n const outsidePress = typeof outsidePressProp === 'function' ? outsidePressFn : outsidePressProp;\n const outsidePressEnabled = outsidePress !== false;\n const getOutsidePressEventProp = useStableCallback(() => outsidePressEvent);\n const {\n escapeKey: escapeKeyBubbles,\n outsidePress: outsidePressBubbles\n } = normalizeProp(bubbles);\n const pressStartedInsideRef = React.useRef(false);\n const pressStartPreventedRef = React.useRef(false);\n // Ignore only the very next outside click after dragging from inside to outside.\n const suppressNextOutsideClickRef = React.useRef(false);\n const isComposingRef = React.useRef(false);\n const currentPointerTypeRef = React.useRef('');\n const touchStateRef = React.useRef(null);\n const cancelDismissOnEndTimeout = useTimeout();\n const clearInsideReactTreeTimeout = useTimeout();\n const clearInsideReactTree = useStableCallback(() => {\n clearInsideReactTreeTimeout.clear();\n dataRef.current.insideReactTree = false;\n });\n const hasBlockingChild = useStableCallback(bubbleKey => {\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const children = tree ? getNodeChildren(tree.nodesRef.current, nodeId) : [];\n return children.some(child => child.context?.open && !child.context.dataRef.current[bubbleKey]);\n });\n const isEventWithinOwnElements = useStableCallback(event => {\n return isEventTargetWithin(event, store.select('floatingElement')) || isEventTargetWithin(event, store.select('domReferenceElement'));\n });\n const closeOnReferencePress = useStableCallback(event => {\n if (!referencePress()) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerPress, event.nativeEvent));\n });\n const closeOnEscapeKeyDown = useStableCallback(event => {\n if (!open || !enabled || !escapeKey || event.key !== 'Escape') {\n return;\n }\n\n // Wait until IME is settled. Pressing `Escape` while composing should\n // close the compose menu, but not the floating element.\n if (isComposingRef.current) {\n return;\n }\n if (!escapeKeyBubbles && hasBlockingChild('__escapeKeyBubbles')) {\n return;\n }\n const native = isReactEvent(event) ? event.nativeEvent : event;\n const eventDetails = createChangeEventDetails(REASONS.escapeKey, native);\n store.setOpen(false, eventDetails);\n if (!eventDetails.isCanceled) {\n event.preventDefault();\n }\n if (!escapeKeyBubbles && !eventDetails.isPropagationAllowed) {\n event.stopPropagation();\n }\n });\n const markInsideReactTree = useStableCallback(() => {\n dataRef.current.insideReactTree = true;\n clearInsideReactTreeTimeout.start(0, clearInsideReactTree);\n });\n const markPressStartedInsideReactTree = useStableCallback(event => {\n if (!open || !enabled || event.button !== 0) {\n return;\n }\n const target = getTarget(event.nativeEvent);\n\n // Only treat presses that start within the floating DOM subtree as inside.\n // This avoids suppressing parent dismissal when interacting with nested portals.\n if (!contains(store.select('floatingElement'), target)) {\n return;\n }\n if (!pressStartedInsideRef.current) {\n pressStartedInsideRef.current = true;\n pressStartPreventedRef.current = false;\n }\n });\n const markInsidePressStartPrevented = useStableCallback(event => {\n if (!open || !enabled) {\n return;\n }\n if (!(event.defaultPrevented || event.nativeEvent.defaultPrevented)) {\n return;\n }\n if (pressStartedInsideRef.current) {\n pressStartPreventedRef.current = true;\n }\n });\n React.useEffect(() => {\n if (!open || !enabled) {\n return clearInsideReactTree;\n }\n dataRef.current.__escapeKeyBubbles = escapeKeyBubbles;\n dataRef.current.__outsidePressBubbles = outsidePressBubbles;\n const compositionTimeout = new Timeout();\n const preventedPressSuppressionTimeout = new Timeout();\n function handleCompositionStart() {\n compositionTimeout.clear();\n isComposingRef.current = true;\n }\n function handleCompositionEnd() {\n // Safari fires `compositionend` before `keydown`, so we need to wait\n // until the next tick to set `isComposing` to `false`.\n // https://bugs.webkit.org/show_bug.cgi?id=165004\n compositionTimeout.start(\n // 0ms or 1ms don't work in Safari. 5ms appears to consistently work.\n // Only apply to WebKit for the test to remain 0ms.\n platform.engine.webkit ? 5 : 0, () => {\n isComposingRef.current = false;\n });\n }\n function suppressImmediateOutsideClickAfterPreventedStart() {\n suppressNextOutsideClickRef.current = true;\n // Firefox can emit the synthetic outside click in a later task after\n // pointer lock exit, so microtask clearing is too early here.\n preventedPressSuppressionTimeout.start(0, () => {\n suppressNextOutsideClickRef.current = false;\n });\n }\n function resetPressStartState() {\n pressStartedInsideRef.current = false;\n pressStartPreventedRef.current = false;\n }\n function getOutsidePressEvent() {\n const type = currentPointerTypeRef.current;\n const computedType = type === 'pen' || !type ? 'mouse' : type;\n const outsidePressEventValue = getOutsidePressEventProp();\n const resolved = typeof outsidePressEventValue === 'function' ? outsidePressEventValue() : outsidePressEventValue;\n if (typeof resolved === 'string') {\n return resolved;\n }\n return resolved[computedType];\n }\n function shouldIgnoreEvent(event) {\n const computedOutsidePressEvent = getOutsidePressEvent();\n return computedOutsidePressEvent === 'intentional' && event.type !== 'click' || computedOutsidePressEvent === 'sloppy' && event.type === 'click';\n }\n function isEventWithinFloatingTree(event) {\n const nodeId = dataRef.current.floatingContext?.nodeId;\n const targetIsInsideChildren = tree && getNodeChildren(tree.nodesRef.current, nodeId).some(node => isEventTargetWithin(event, node.context?.elements.floating));\n return isEventWithinOwnElements(event) || targetIsInsideChildren;\n }\n function closeOnPressOutside(event) {\n if (shouldIgnoreEvent(event)) {\n // A new press began outside the floating element and its trigger. Clear any\n // leftover drag-out suppression so this press's eventual click can dismiss.\n if (event.type !== 'click' && !isEventWithinOwnElements(event)) {\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = false;\n }\n clearInsideReactTree();\n return;\n }\n if (dataRef.current.insideReactTree) {\n clearInsideReactTree();\n return;\n }\n const target = getTarget(event);\n const inertSelector = `[${createAttribute('inert')}]`;\n const targetRoot = isElement(target) ? target.getRootNode() : null;\n const markers = Array.from((isShadowRoot(targetRoot) ? targetRoot : ownerDocument(store.select('floatingElement'))).querySelectorAll(inertSelector));\n const triggers = store.context.triggerElements;\n\n // If another trigger is clicked, don't close the floating element.\n if (target && (triggers.hasElement(target) || triggers.hasMatchingElement(trigger => contains(trigger, target)))) {\n return;\n }\n let targetRootAncestor = isElement(target) ? target : null;\n while (targetRootAncestor && !isLastTraversableNode(targetRootAncestor)) {\n const nextParent = getParentNode(targetRootAncestor);\n if (isLastTraversableNode(nextParent) || !isElement(nextParent)) {\n break;\n }\n targetRootAncestor = nextParent;\n }\n\n // Check if the click occurred on a third-party element injected after the\n // floating element rendered.\n if (markers.length && isElement(target) && !isRootElement(target) &&\n // Clicked on a direct ancestor (e.g. FloatingOverlay).\n !contains(target, store.select('floatingElement')) &&\n // If the target root element contains none of the markers, then the\n // element was injected after the floating element rendered.\n markers.every(marker => !contains(targetRootAncestor, marker))) {\n return;\n }\n\n // Check if the click occurred on the scrollbar\n // Skip for touch events: scrollbars don't receive touch events on most platforms\n if (isHTMLElement(target) && !('touches' in event)) {\n const lastTraversableNode = isLastTraversableNode(target);\n const style = getComputedStyle(target);\n const scrollRe = /auto|scroll/;\n const isScrollableX = lastTraversableNode || scrollRe.test(style.overflowX);\n const isScrollableY = lastTraversableNode || scrollRe.test(style.overflowY);\n const canScrollX = isScrollableX && target.clientWidth > 0 && target.scrollWidth > target.clientWidth;\n const canScrollY = isScrollableY && target.clientHeight > 0 && target.scrollHeight > target.clientHeight;\n const isRTL = style.direction === 'rtl';\n\n // Check click position relative to scrollbar.\n // In some browsers it is possible to change the <body> (or window)\n // scrollbar to the left side, but is very rare and is difficult to\n // check for. Plus, for modal dialogs with backdrops, it is more\n // important that the backdrop is checked but not so much the window.\n const pressedVerticalScrollbar = canScrollY && (isRTL ? event.offsetX <= target.offsetWidth - target.clientWidth : event.offsetX > target.clientWidth);\n const pressedHorizontalScrollbar = canScrollX && event.offsetY > target.clientHeight;\n if (pressedVerticalScrollbar || pressedHorizontalScrollbar) {\n return;\n }\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // In intentional mode, a press that starts inside and ends outside gets\n // one suppressed outside click. Run this after inside-target checks so\n // inside clicks don't consume the one-shot suppression.\n if (getOutsidePressEvent() === 'intentional' && suppressNextOutsideClickRef.current) {\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = false;\n return;\n }\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n if (hasBlockingChild('__outsidePressBubbles')) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.outsidePress, event));\n clearInsideReactTree();\n }\n function handlePointerDown(event) {\n if (getOutsidePressEvent() !== 'sloppy' || event.pointerType === 'touch' || !store.select('open') || !enabled || isEventWithinOwnElements(event)) {\n return;\n }\n closeOnPressOutside(event);\n }\n function handleTouchStart(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !store.select('open') || !enabled || isEventWithinOwnElements(event)) {\n return;\n }\n const touch = event.touches[0];\n if (touch) {\n touchStateRef.current = {\n startTime: Date.now(),\n startX: touch.clientX,\n startY: touch.clientY,\n dismissOnTouchEnd: false,\n dismissOnMouseDown: true\n };\n cancelDismissOnEndTimeout.start(1000, () => {\n if (touchStateRef.current) {\n touchStateRef.current.dismissOnTouchEnd = false;\n touchStateRef.current.dismissOnMouseDown = false;\n }\n });\n }\n }\n function addTargetEventListenerOnce(event, listener) {\n const target = getTarget(event);\n if (!target) {\n return;\n }\n const unsubscribe = addEventListener(target, event.type, () => {\n listener(event);\n unsubscribe();\n });\n }\n function handleTouchStartCapture(event) {\n currentPointerTypeRef.current = 'touch';\n addTargetEventListenerOnce(event, handleTouchStart);\n }\n function closeOnPressOutsideCapture(event) {\n cancelDismissOnEndTimeout.clear();\n if (event.type === 'pointerdown') {\n currentPointerTypeRef.current = event.pointerType;\n }\n if (event.type === 'mousedown' && touchStateRef.current && !touchStateRef.current.dismissOnMouseDown) {\n return;\n }\n addTargetEventListenerOnce(event, targetEvent => {\n if (targetEvent.type === 'pointerdown') {\n handlePointerDown(targetEvent);\n } else {\n closeOnPressOutside(targetEvent);\n }\n });\n }\n function handlePressEndCapture(event) {\n if (!pressStartedInsideRef.current) {\n return;\n }\n const pressStartedInsideDefaultPrevented = pressStartPreventedRef.current;\n resetPressStartState();\n if (getOutsidePressEvent() !== 'intentional') {\n return;\n }\n if (event.type === 'pointercancel') {\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n }\n return;\n }\n if (isEventWithinFloatingTree(event)) {\n return;\n }\n\n // If pointerdown was prevented, no click may be generated for that\n // interaction. However, Firefox may still emit an immediate click after\n // pointerup (e.g. NumberField scrub with pointer lock), so suppress for\n // one tick to absorb that synthetic click only.\n if (pressStartedInsideDefaultPrevented) {\n suppressImmediateOutsideClickAfterPreventedStart();\n return;\n }\n\n // Avoid suppressing when outsidePress explicitly ignores this target.\n if (typeof outsidePress === 'function' && !outsidePress(event)) {\n return;\n }\n preventedPressSuppressionTimeout.clear();\n suppressNextOutsideClickRef.current = true;\n clearInsideReactTree();\n }\n function handleTouchMove(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventWithinOwnElements(event)) {\n return;\n }\n const touch = event.touches[0];\n if (!touch) {\n return;\n }\n const deltaX = Math.abs(touch.clientX - touchStateRef.current.startX);\n const deltaY = Math.abs(touch.clientY - touchStateRef.current.startY);\n const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (distance > 5) {\n touchStateRef.current.dismissOnTouchEnd = true;\n }\n if (distance > 10) {\n closeOnPressOutside(event);\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n }\n function handleTouchMoveCapture(event) {\n addTargetEventListenerOnce(event, handleTouchMove);\n }\n function handleTouchEnd(event) {\n if (getOutsidePressEvent() !== 'sloppy' || !touchStateRef.current || isEventWithinOwnElements(event)) {\n return;\n }\n if (touchStateRef.current.dismissOnTouchEnd) {\n closeOnPressOutside(event);\n }\n cancelDismissOnEndTimeout.clear();\n touchStateRef.current = null;\n }\n function handleTouchEndCapture(event) {\n addTargetEventListenerOnce(event, handleTouchEnd);\n }\n const doc = ownerDocument(floatingElement);\n const unsubscribe = mergeCleanups(escapeKey && mergeCleanups(addEventListener(doc, 'keydown', closeOnEscapeKeyDown), addEventListener(doc, 'compositionstart', handleCompositionStart), addEventListener(doc, 'compositionend', handleCompositionEnd)), outsidePressEnabled && mergeCleanups(addEventListener(doc, 'click', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerdown', closeOnPressOutsideCapture, true), addEventListener(doc, 'pointerup', handlePressEndCapture, true), addEventListener(doc, 'pointercancel', handlePressEndCapture, true), addEventListener(doc, 'mousedown', closeOnPressOutsideCapture, true), addEventListener(doc, 'mouseup', handlePressEndCapture, true), addEventListener(doc, 'touchstart', handleTouchStartCapture, true), addEventListener(doc, 'touchmove', handleTouchMoveCapture, true), addEventListener(doc, 'touchend', handleTouchEndCapture, true)));\n return () => {\n unsubscribe();\n compositionTimeout.clear();\n preventedPressSuppressionTimeout.clear();\n resetPressStartState();\n suppressNextOutsideClickRef.current = false;\n clearInsideReactTree();\n };\n }, [dataRef, floatingElement, escapeKey, outsidePressEnabled, outsidePress, open, enabled, escapeKeyBubbles, outsidePressBubbles, closeOnEscapeKeyDown, clearInsideReactTree, getOutsidePressEventProp, hasBlockingChild, isEventWithinOwnElements, tree, store, cancelDismissOnEndTimeout]);\n const reference = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n onPointerDown: closeOnReferencePress,\n onClick: closeOnReferencePress\n }), [closeOnEscapeKeyDown, closeOnReferencePress]);\n const floating = React.useMemo(() => ({\n onKeyDown: closeOnEscapeKeyDown,\n // `onMouseDown` may be blocked if `event.preventDefault()` is called in\n // `onPointerDown`, such as with <NumberField.ScrubArea>.\n // See https://github.com/mui/base-ui/pull/3379\n onPointerDown: markInsidePressStartPrevented,\n onMouseDown: markInsidePressStartPrevented,\n onClickCapture: markInsideReactTree,\n onMouseDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onPointerDownCapture(event) {\n markInsideReactTree();\n markPressStartedInsideReactTree(event);\n },\n onMouseUpCapture: markInsideReactTree,\n onTouchEndCapture: markInsideReactTree,\n onTouchMoveCapture: markInsideReactTree\n }), [closeOnEscapeKeyDown, markInsideReactTree, markPressStartedInsideReactTree, markInsidePressStartPrevented]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n trigger: reference\n } : {}, [enabled, reference, floating]);\n}","import _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport { AnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\n\n/**\n * Minimal store contract exposed by popup handles to detached triggers.\n *\n * Detached triggers read `store` during render and subscribe to be notified when the handle switches\n * between its fallback store and a root's live store.\n *\n * @template HandleStore Store shape exposed to detached triggers.\n */\n\n/**\n * Store shape holding a trigger registry, required by `BasePopupHandle.openByTrigger` to resolve a\n * trigger element by id on both the attached root's store and the fallback store.\n */\n\n/**\n * Store shape required by `BasePopupHandle.openByTrigger`/`closePopup` to drive open/close state.\n * Only the root-owned `Store` needs this — the `HandleStore` view exposed to detached triggers may\n * omit `setOpen` entirely (as Dialog and PreviewCard's do) since it is never called while detached.\n */\n\n/**\n * Shared implementation for popup handles that coordinate detached triggers with a mounted root.\n *\n * Subclasses provide the component-specific imperative methods, while this base class owns the\n * fallback store, root store attachment stack, subscriber notifications, and development warning for\n * overlapping roots.\n *\n * @template HandleStore Store shape exposed to detached triggers.\n * @template Store Root-owned store attached by the component root.\n */\nexport class BasePopupHandle {\n /**\n * Stores of every root currently using this handle, in attach order. A handle is meant to be used\n * by a single mounted root, but roots can transiently overlap (e.g. during an animated route\n * transition), so this stack lets `attachStore`'s cleanup restore the previous root instead of\n * leaving a still-mounted root uncontrollable when a newer overlapping root detaches first.\n */\n attachedStores = [];\n\n /**\n * Store of the root that currently controls the handle: the most recently attached one still\n * mounted, or `null` when no root is attached. Imperative methods are no-ops while this is `null`.\n */\n attachedStoreValue = null;\n\n /**\n * Listeners notified when `attachedStore` changes, so detached triggers can follow the store pointer.\n */\n storeListeners = new Set();\n\n /**\n * Creates a handle backed by the store used while no root is attached.\n *\n * @param fallbackStore Inert, closed store handed to detached triggers while no root is attached,\n * so they can render and register without a mounted root. Triggers register into whichever store\n * `store` currently resolves to, so while detached they live in this store's trigger map and\n * migrate themselves to the root's store (and back) as it attaches/detaches.\n * @param componentName Component name used to prefix dev warnings, e.g. `'Menu'` produces\n * `MenuHandle.open()` in warning text.\n * @param throwOnMissingTrigger Whether `open(triggerId)` throws when no trigger with that id is\n * registered. Anchored popups (Menu, Popover, Tooltip, PreviewCard) need a trigger to anchor to,\n * so they throw; Dialog is not anchored and instead opens unassociated with a dev warning.\n */\n constructor(fallbackStore, componentName, throwOnMissingTrigger = true) {\n this.fallbackStore = fallbackStore;\n this.componentName = componentName;\n this.throwOnMissingTrigger = throwOnMissingTrigger;\n }\n get attachedStore() {\n return this.attachedStoreValue;\n }\n\n /**\n * Store that detached triggers read from: the attached root's store, or an inert fallback store\n * used while no root is attached.\n * @internal\n */\n get store() {\n return this.attachedStoreValue ?? this.fallbackStore;\n }\n\n /**\n * Stable fallback store used for server rendering and hydration. Root stores cannot be recorded on\n * the handle during render because a handle can be shared by concurrent server-rendered requests.\n * @internal\n */\n get serverStore() {\n return this.fallbackStore;\n }\n\n /**\n * Subscribes to changes of the attached store pointer so detached triggers re-render and re-bind\n * when a root attaches or detaches. Returns a function that removes the listener.\n * @internal\n */\n subscribeStore(listener) {\n this.storeListeners.add(listener);\n return () => {\n this.storeListeners.delete(listener);\n };\n }\n\n /**\n * Points the handle at a root's store and notifies subscribers so detached triggers re-render and\n * re-register into it (their registration ref re-fires on the store-pointer change). Returns a\n * cleanup function that detaches the store again.\n * @internal\n */\n attachStore(newStore) {\n this.attachedStores.push(newStore);\n this.setActiveStore(newStore);\n if (process.env.NODE_ENV !== 'production') {\n if (this.attachedStores.length > 1) {\n // More than one root is attached at once. This is usually a transient overlap during an\n // animated route transition, where the outgoing root unmounts shortly after the incoming\n // one mounts. Defer the check by a frame and only warn if the overlap is still present once\n // the transition has settled (more than one root stayed mounted), so a clean handoff doesn't\n // warn regardless of the exact unmount timing.\n // The warning frame only exists in development; it is created lazily so it never appears on\n // instances in production (like `controlledValues` in `ReactStore`).\n const dev = this;\n (dev.overlapWarningFrame ??= AnimationFrame.create()).request(() => {\n if (this.attachedStores.length > 1) {\n console.warn('Base UI: A handle is attached to more than one mounted root at the same time. ' + 'The most recently mounted root takes over and the previous one stops being controlled by the handle. ' + 'A handle should be used by a single root that stays mounted for the lifetime of the handle.');\n }\n });\n }\n }\n return () => {\n const index = this.attachedStores.lastIndexOf(newStore);\n if (index !== -1) {\n this.attachedStores.splice(index, 1);\n }\n // Restore control to the most recently attached root that is still mounted (or detach fully if\n // none remain). Clearing unconditionally would leave a still-mounted older root uncontrollable\n // when a newer overlapping root detaches first (e.g. a canceled route transition).\n this.setActiveStore(this.attachedStores[this.attachedStores.length - 1] ?? null);\n };\n }\n\n /**\n * Sets the store that currently controls the handle and notifies subscribers when it changes, so\n * detached triggers re-render and migrate their registration to the new store.\n */\n setActiveStore(store) {\n if (this.attachedStoreValue !== store) {\n this.attachedStoreValue = store;\n this.storeListeners.forEach(listener => {\n listener();\n });\n }\n }\n\n /**\n * Opens the attached root's store and associates it with the trigger with the given id, or a\n * no-op (with a dev warning) while no root is attached. Shared by every concrete handle's public\n * `open()` method, which only narrows the parameter type.\n *\n * When a trigger id is given but no matching trigger is registered, anchored popups throw (see\n * `throwOnMissingTrigger`); Dialog opens unassociated with a dev warning instead.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param triggerId ID of the trigger to associate with the popup, or `null`/`undefined` to open\n * without associating any trigger.\n */\n openByTrigger(triggerId) {\n const attachedStore = this.attachedStore;\n if (attachedStore === null) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Base UI: ${this.componentName}Handle.open() was called while no root using this handle is mounted. ` + 'The call was ignored; mount a root with this handle before opening it imperatively.');\n }\n return;\n }\n\n // Registered triggers normally live in the active root's store. During the commit in which a\n // root attaches, a still-mounted detached trigger has not re-registered into that store yet (it\n // migrates on its next render): it is still registered wherever it lived before — the fallback\n // store when this is the first root to attach, or a previously attached root's store during a\n // transient overlap (e.g. an animated route transition). Search the whole attachment stack\n // (newest first) and the fallback map so an imperative open-by-id called in that commit (e.g.\n // from a layout effect) still resolves the trigger instead of treating it as missing.\n let triggerElement;\n if (triggerId) {\n for (let i = this.attachedStores.length - 1; i >= 0 && !triggerElement; i -= 1) {\n triggerElement = this.attachedStores[i].context.triggerElements.getById(triggerId);\n }\n triggerElement ??= this.fallbackStore.context.triggerElements.getById(triggerId);\n }\n if (triggerId && !triggerElement) {\n if (this.throwOnMissingTrigger) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `Base UI: ${this.componentName}Handle.open() was called with the trigger id \"${triggerId}\", ` + 'but no matching trigger is registered with this handle. ' + 'An anchored popup cannot open without a trigger to anchor to. ' + `Pass the id of a mounted ${this.componentName}.Trigger that has this handle set on its \"handle\" prop.` : _formatErrorMessage(99, this.componentName, triggerId, this.componentName));\n }\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Base UI: ${this.componentName}Handle.open: No trigger found with id \"${triggerId}\". ` + 'The popup will open, but the trigger will not be associated with it.');\n }\n }\n attachedStore.setOpen(true, createChangeEventDetails(REASONS.imperativeAction, undefined, triggerElement));\n }\n\n /**\n * Closes the popup by setting the attached root's store to closed, or a no-op (with a dev warning)\n * while no root is attached. Shared by every concrete handle's public `close()` method.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n */\n closePopup() {\n const attachedStore = this.attachedStore;\n if (attachedStore === null) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(`Base UI: ${this.componentName}Handle.close() was called while no root using this handle is mounted. ` + 'The call was ignored.');\n }\n return;\n }\n attachedStore.setOpen(false, createChangeEventDetails(REASONS.imperativeAction));\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { FloatingRootStore } from \"../components/FloatingRootStore.mjs\";\n/**\n * Keeps a FloatingRootStore in sync with the provided PopupStore.\n * Uses the provided FloatingRootStore when one exists, otherwise creates one once and updates it on every render.\n */\nexport function useSyncedFloatingRootContext(options) {\n const {\n popupStore,\n treatPopupAsFloatingElement = false,\n floatingRootContext: floatingRootContextProp,\n floatingId,\n nested,\n onOpenChange\n } = options;\n const open = popupStore.useState('open');\n const referenceElement = popupStore.useState('activeTriggerElement');\n const floatingElement = popupStore.useState(treatPopupAsFloatingElement ? 'popupElement' : 'positionerElement');\n const triggerElements = popupStore.context.triggerElements;\n const handleOpenChange = onOpenChange;\n const internalStoreRef = React.useRef(null);\n if (floatingRootContextProp === undefined && internalStoreRef.current === null) {\n internalStoreRef.current = new FloatingRootStore({\n open,\n transitionStatus: undefined,\n referenceElement,\n floatingElement,\n triggerElements,\n onOpenChange: handleOpenChange,\n floatingId,\n syncOnly: true,\n nested\n });\n }\n const store = floatingRootContextProp ?? internalStoreRef.current;\n popupStore.useSyncedValue('floatingId', floatingId);\n useIsoLayoutEffect(() => {\n const valuesToSync = {\n open,\n floatingId,\n referenceElement,\n floatingElement\n };\n if (isElement(referenceElement)) {\n valuesToSync.domReferenceElement = referenceElement;\n }\n if (store.state.positionReference === store.state.referenceElement) {\n valuesToSync.positionReference = referenceElement;\n }\n store.update(valuesToSync);\n }, [open, floatingId, referenceElement, floatingElement, store]);\n\n // Keep non-reactive context values fresh for interactions that call `store.setOpen`.\n store.context.onOpenChange = handleOpenChange;\n store.context.nested = nested;\n return store;\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { AnimationFrame } from '@base-ui/utils/useAnimationFrame';\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(open, enableIdleState = false, deferEndingState = false) {\n const [transitionStatus, setTransitionStatus] = React.useState(open && enableIdleState ? 'idle' : undefined);\n const [mounted, setMounted] = React.useState(open);\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus('starting');\n }\n if (!open && mounted && transitionStatus !== 'ending' && !deferEndingState) {\n setTransitionStatus('ending');\n }\n if (!open && !mounted && transitionStatus === 'ending') {\n setTransitionStatus(undefined);\n }\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== 'ending' && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('ending');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n const frame = AnimationFrame.request(() => {\n // Avoid `flushSync` here due to Firefox.\n // See https://github.com/mui/base-ui/pull/3424\n setTransitionStatus(undefined);\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n if (open && mounted && transitionStatus !== 'idle') {\n setTransitionStatus('starting');\n }\n const frame = AnimationFrame.request(() => {\n setTransitionStatus('idle');\n });\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, transitionStatus]);\n return {\n mounted,\n setMounted,\n transitionStatus\n };\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useId } from '@base-ui/utils/useId';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { FOCUSABLE_ATTRIBUTE } from \"../../floating-ui-react/utils/constants.mjs\";\nimport { useFloatingParentNodeId } from \"../../floating-ui-react/components/FloatingTree.mjs\";\nimport { useSyncedFloatingRootContext } from \"../../floating-ui-react/hooks/useSyncedFloatingRootContext.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nexport const FOCUSABLE_POPUP_PROPS = {\n tabIndex: -1,\n [FOCUSABLE_ATTRIBUTE]: ''\n};\n\n/**\n * Returns the default `initialFocus` resolver for a popup. When opened by touch it focuses the\n * popup element itself to prevent the virtual keyboard from opening (required for Android\n * specifically; iOS handles this automatically). Otherwise it falls back to the default behavior.\n */\nexport function createDefaultInitialFocus(popupRef) {\n return interactionType => interactionType === 'touch' ? popupRef.current : true;\n}\n\n/**\n * The subset of a popup handle that a Root needs to bind its store to. Both the real handle classes\n * and any test double satisfy it.\n */\n\n/**\n * Creates and owns a popup store on behalf of a Root part. The store is created exactly once, with\n * controlled props and root state synced separately after creation. Sets up the synced floating\n * root context and returns the store.\n *\n * @param createStore Factory that builds the store. Called exactly once, receiving the floating id\n * and whether the popup is nested inside another floating element, both resolved on the first render.\n * @param treatPopupAsFloatingElement Whether the popup element is passed to Floating UI as the\n * floating element instead of the default positioner.\n */\nexport function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) {\n const floatingId = useId();\n const nested = useFloatingParentNodeId() != null;\n const store = useRefWithInit(() => createStore(floatingId, nested)).current;\n useSyncedFloatingRootContext({\n popupStore: store,\n treatPopupAsFloatingElement,\n floatingRootContext: store.state.floatingRootContext,\n floatingId,\n nested,\n onOpenChange: store.setOpen\n });\n return store;\n}\n\n/**\n * Attaches a Root's store to a handle for this component's committed lifetime. Popup Roots render\n * it before their interactions and user children so its layout effect runs before descendant layout\n * effects. This lets descendants call the handle during the Root's initial commit without attaching\n * during render, which would leak suspended or abandoned stores. Store subscribers are notified by\n * `attachStore` in this ordinary layout phase, where React permits synchronous updates.\n *\n * Popup Roots must render this component only when a handle is present so handle-less Roots avoid\n * mounting an extra fiber and layout effect.\n */\nexport function PopupHandleAttachment({\n handle,\n store\n}) {\n useIsoLayoutEffect(() => {\n return handle.attachStore(store);\n }, [handle, store]);\n return null;\n}\n\n/**\n * Returns a callback ref that registers/unregisters the trigger element in the store.\n *\n * @param store The Store instance where the trigger should be registered.\n */\nexport function useTriggerRegistration(id, store) {\n // Keep track of the currently registered element to unregister it on unmount or id change.\n const registeredElementIdRef = React.useRef(null);\n const registeredElementRef = React.useRef(null);\n return React.useCallback(element => {\n if (id === undefined) {\n return;\n }\n let shouldSyncTriggerCount = false;\n if (registeredElementIdRef.current !== null) {\n const registeredId = registeredElementIdRef.current;\n const registeredElement = registeredElementRef.current;\n const currentElement = store.context.triggerElements.getById(registeredId);\n if (registeredElement && currentElement === registeredElement) {\n store.context.triggerElements.delete(registeredId);\n shouldSyncTriggerCount = true;\n }\n registeredElementIdRef.current = null;\n registeredElementRef.current = null;\n }\n if (element !== null) {\n registeredElementIdRef.current = id;\n registeredElementRef.current = element;\n store.context.triggerElements.add(id, element);\n shouldSyncTriggerCount = true;\n }\n if (shouldSyncTriggerCount) {\n const triggerCount = store.context.triggerElements.size;\n if (store.select('open') && store.state.triggerCount !== triggerCount) {\n store.set('triggerCount', triggerCount);\n }\n }\n }, [store, id]);\n}\nexport function setPopupOpenState(state, open, trigger, preventUnmountOnClose = false) {\n if (open) {\n // Opening starts a new close cycle, so clear any previous request to keep the popup mounted.\n state.preventUnmountingOnClose = false;\n } else if (preventUnmountOnClose) {\n state.preventUnmountingOnClose = true;\n }\n const triggerId = trigger?.id ?? null;\n\n // If a popup is closing, the `trigger` may be undefined.\n // We want to keep the previous value so that exit animations are played and focus is returned correctly.\n if (triggerId || open) {\n state.activeTriggerId = triggerId;\n state.activeTriggerElement = trigger ?? null;\n }\n}\nexport function attachPreventUnmountOnClose(eventDetails) {\n let preventUnmountOnClose = false;\n eventDetails.preventUnmountOnClose = () => {\n preventUnmountOnClose = true;\n };\n return () => preventUnmountOnClose;\n}\n\n/**\n * Runs the shared open-change sequence for a popup store: notifies `onOpenChange`,\n * honors cancellation, dispatches the floating root change, maps the reason to an\n * `instantType`, and commits the state update (synchronously for hover so\n * `getAnimations()` observes it). Stores supply their own differences via\n * `extraState` (e.g. the last change reason) and `onBeforeDispatch` (e.g. updating\n * inline-rect coordinates).\n */\nexport function applyPopupOpenChange(store, nextOpen, eventDetails, options = {}) {\n const reason = eventDetails.reason;\n const isHover = reason === REASONS.triggerHover;\n const isFocusOpen = nextOpen && reason === REASONS.triggerFocus;\n const isDismissClose = !nextOpen && (reason === REASONS.triggerPress || reason === REASONS.escapeKey);\n const shouldPreventUnmountOnClose = attachPreventUnmountOnClose(eventDetails);\n store.context.onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n options.onBeforeDispatch?.();\n store.state.floatingRootContext.dispatchOpenChange(nextOpen, eventDetails);\n const changeState = () => {\n // Spread `extraState` first so `open` always reflects `nextOpen`, keeping it in\n // sync with the value already passed to `dispatchOpenChange`/`setPopupOpenState`.\n const updatedState = {\n ...options.extraState,\n open: nextOpen\n };\n if (isFocusOpen) {\n updatedState.instantType = 'focus';\n } else if (isDismissClose) {\n updatedState.instantType = 'dismiss';\n } else if (isHover) {\n updatedState.instantType = undefined;\n }\n setPopupOpenState(updatedState, nextOpen, eventDetails.trigger, shouldPreventUnmountOnClose());\n store.update(updatedState);\n };\n if (isHover) {\n // Flush synchronously for hover so `node.getAnimations()` sees the new state.\n ReactDOM.flushSync(changeState);\n } else {\n changeState();\n }\n}\n\n/**\n * Sets up trigger data forwarding to the store.\n *\n * @param triggerId Id of the trigger.\n * @param triggerElementRef Ref for the trigger DOM element.\n * @param store The Store instance managing the popup state.\n * @param stateUpdates An object with state updates to apply when the trigger is active.\n */\nexport function useTriggerDataForwarding(triggerId, triggerElementRef, store, stateUpdates) {\n const isMountedByThisTrigger = store.useState('isMountedByTrigger', triggerId);\n const baseRegisterTrigger = useTriggerRegistration(triggerId, store);\n\n // Applies trigger-owned state (active-trigger ownership and payload) when the trigger registers.\n // Stable so payload/`stateUpdates` changes do not change the ref identity (which would needlessly\n // churn registration); it reads the latest closure values when invoked.\n const applyTriggerData = useStableCallback(element => {\n const open = store.select('open');\n const activeTriggerId = store.select('activeTriggerId');\n if (activeTriggerId === triggerId) {\n store.update({\n activeTriggerElement: element,\n ...(open ? stateUpdates : null)\n });\n return;\n }\n if (activeTriggerId == null && open) {\n // If a popup is already open, a detached trigger can mount before any active trigger\n // has been established. Claim the first registered trigger so trigger-owned focus\n // management and ARIA relationships work.\n store.update({\n activeTriggerId: triggerId,\n activeTriggerElement: element,\n ...stateUpdates\n });\n }\n });\n\n // Intentionally NOT stable. Its identity is derived from `baseRegisterTrigger`, which is keyed on\n // `[store, id]`, so when a handle-backed trigger's store pointer swaps the merged ref re-fires —\n // unregistering from the previous store and registering into the new one. This lets a detached\n // trigger follow its handle's currently-attached store across attach/detach/remount. (A stable\n // callback would keep its identity and never re-fire on a store swap.)\n const registerTrigger = React.useCallback(element => {\n baseRegisterTrigger(element);\n if (element) {\n applyTriggerData(element);\n }\n }, [baseRegisterTrigger, applyTriggerData]);\n useIsoLayoutEffect(() => {\n if (isMountedByThisTrigger) {\n store.update({\n activeTriggerElement: triggerElementRef.current,\n ...stateUpdates\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isMountedByThisTrigger, store, triggerElementRef, ...Object.values(stateUpdates)]);\n return {\n registerTrigger,\n isMountedByThisTrigger\n };\n}\n/**\n * Keeps trigger registration state synchronized while the popup is open.\n *\n * When a popup opens without an explicit trigger id and exactly one trigger is registered, that\n * trigger is claimed as the active trigger. When the active trigger id is still registered but its\n * element changed, the active element is refreshed. When the active trigger id is missing from the\n * registry but the same element is still registered under a different id (e.g. the rendered trigger\n * carries its own DOM `id` that differs from Base UI's internal trigger id), the active id is\n * reassociated to the registered id instead of being treated as lost. When the active trigger\n * unregisters, the default path preserves existing ownership so non-closing popup families do not\n * silently claim a different trigger while staying open.\n *\n * If `closeOnActiveTriggerUnmount` is enabled, unregistering a previously resolved active trigger\n * requests a close after a microtask so a same-tick replacement trigger with the same id can\n * register first. An active trigger id that has not matched a registered trigger yet is treated as\n * pending and does not request a close.\n *\n * This should be called on the Root part.\n *\n * @param store The Store instance managing the popup state.\n * @param options Options for active trigger unmount behavior.\n */\nexport function useImplicitActiveTrigger(store, options = {}) {\n const {\n closeOnActiveTriggerUnmount = false\n } = options;\n // Distinguishes a trigger that unmounted from a new active trigger that has not hydrated yet.\n const resolvedActiveTriggerIdRef = React.useRef(null);\n const open = store.useState('open');\n const reactiveTriggerCount = store.useState('triggerCount');\n // Subscribe to the active trigger id so the reconciliation below reruns when ownership moves to\n // another trigger while the popup stays open (e.g. a focus/hover handoff between triggers).\n const activeTriggerId = store.useState('activeTriggerId');\n // Subscribe to the active trigger element so the reconciliation reruns when a pending active\n // trigger registers in a commit where the trigger count nets out unchanged (registration\n // forwards the element to the store when the registering trigger matches the active id).\n // Without this, the id would never be marked resolved and a later genuine unmount would be\n // misclassified as pending, disabling `closeOnActiveTriggerUnmount`.\n const reactiveActiveTriggerElement = store.useState('activeTriggerElement');\n useIsoLayoutEffect(() => {\n if (!open) {\n resolvedActiveTriggerIdRef.current = null;\n if (store.state.triggerCount !== 0) {\n store.set('triggerCount', 0);\n }\n return;\n }\n const triggerCount = store.context.triggerElements.size;\n const stateUpdates = {};\n if (store.state.triggerCount !== triggerCount) {\n stateUpdates.triggerCount = triggerCount;\n }\n const currentActiveTriggerId = store.select('activeTriggerId');\n let lostActiveTriggerId = null;\n if (currentActiveTriggerId) {\n const activeTriggerElement = store.context.triggerElements.getById(currentActiveTriggerId);\n if (!activeTriggerElement) {\n for (const [triggerId, triggerElement] of store.context.triggerElements.entries()) {\n if (triggerElement === store.state.activeTriggerElement) {\n stateUpdates.activeTriggerId = triggerId;\n stateUpdates.activeTriggerElement = triggerElement;\n resolvedActiveTriggerIdRef.current = triggerId;\n break;\n }\n }\n if (stateUpdates.activeTriggerId === undefined) {\n if (resolvedActiveTriggerIdRef.current === currentActiveTriggerId) {\n lostActiveTriggerId = currentActiveTriggerId;\n } else {\n resolvedActiveTriggerIdRef.current = null;\n }\n }\n } else {\n resolvedActiveTriggerIdRef.current = currentActiveTriggerId;\n if (activeTriggerElement !== store.state.activeTriggerElement) {\n stateUpdates.activeTriggerElement = activeTriggerElement;\n }\n }\n } else {\n resolvedActiveTriggerIdRef.current = null;\n }\n if (!lostActiveTriggerId && !currentActiveTriggerId && triggerCount === 1) {\n const iteratorResult = store.context.triggerElements.entries().next();\n if (!iteratorResult.done) {\n const [implicitTriggerId, implicitTriggerElement] = iteratorResult.value;\n stateUpdates.activeTriggerId = implicitTriggerId;\n stateUpdates.activeTriggerElement = implicitTriggerElement;\n resolvedActiveTriggerIdRef.current = implicitTriggerId;\n }\n }\n if (stateUpdates.triggerCount !== undefined || stateUpdates.activeTriggerId !== undefined || stateUpdates.activeTriggerElement !== undefined) {\n store.update(stateUpdates);\n }\n if (lostActiveTriggerId) {\n if (closeOnActiveTriggerUnmount) {\n // Defer so a same-tick replacement trigger with the same id can register first.\n queueMicrotask(() => {\n if (store.select('open') && store.select('activeTriggerId') === lostActiveTriggerId && !store.context.triggerElements.getById(lostActiveTriggerId)) {\n const eventDetails = createChangeEventDetails(REASONS.none);\n store.setOpen(false, eventDetails);\n // If closing is canceled, keep the previous active trigger ownership for the\n // still-open popup instead of claiming another trigger implicitly.\n if (!eventDetails.isCanceled) {\n store.update({\n activeTriggerId: null,\n activeTriggerElement: null\n });\n }\n }\n });\n }\n }\n }, [open, store, reactiveTriggerCount, activeTriggerId, reactiveActiveTriggerElement, closeOnActiveTriggerUnmount]);\n}\n\n/**\n * Manages the mounted state of the popup.\n * Sets up the transition status listeners and handles unmounting when needed.\n * Updates the `mounted`, `transitionStatus`, and `preventUnmountingOnClose` states in the store.\n *\n * @param open Whether the popup is open.\n * @param store The Store instance managing the popup state.\n * @param onUnmount Optional callback to be called when the popup is unmounted.\n *\n * @returns A function to forcibly unmount the popup.\n */\nexport function useOpenStateTransitions(open, store, onUnmount) {\n const {\n mounted,\n setMounted,\n transitionStatus\n } = useTransitionStatus(open);\n const preventUnmountingOnClose = store.useState('preventUnmountingOnClose');\n // Opening starts a new close cycle. Clear during render so the close-completion hook below\n // reads the synchronized value on the same pass.\n const syncedPreventUnmountingOnClose = open ? false : preventUnmountingOnClose;\n store.useSyncedValues({\n mounted,\n transitionStatus,\n preventUnmountingOnClose: syncedPreventUnmountingOnClose\n });\n const forceUnmount = useStableCallback(() => {\n setMounted(false);\n store.update({\n activeTriggerId: null,\n activeTriggerElement: null,\n mounted: false,\n preventUnmountingOnClose: false\n });\n onUnmount?.();\n store.context.onOpenChangeComplete?.(false);\n });\n useOpenChangeComplete({\n enabled: mounted && !open && !syncedPreventUnmountingOnClose,\n open,\n ref: store.context.popupRef,\n onComplete() {\n if (!open) {\n forceUnmount();\n }\n }\n });\n return {\n forceUnmount,\n transitionStatus\n };\n}\nexport function usePopupInteractionProps(store, statePart) {\n store.useSyncedValues(statePart);\n useIsoLayoutEffect(() => () => {\n store.update({\n activeTriggerProps: EMPTY_OBJECT,\n inactiveTriggerProps: EMPTY_OBJECT,\n popupProps: EMPTY_OBJECT\n });\n }, [store]);\n}\nexport function usePopupRootSync(store, open) {\n useIsoLayoutEffect(() => {\n if (!open && store.state.openMethod !== null) {\n store.set('openMethod', null);\n }\n }, [open, store]);\n useIsoLayoutEffect(() => () => {\n if (store.state.openMethod !== null) {\n store.set('openMethod', null);\n }\n }, [store]);\n}","import { PopupTriggerMap } from \"../../utils/popups/index.mjs\";\nimport { FloatingRootStore } from \"../components/FloatingRootStore.mjs\";\nexport function getEmptyRootContext() {\n return new FloatingRootStore({\n open: false,\n transitionStatus: undefined,\n floatingElement: null,\n referenceElement: null,\n triggerElements: new PopupTriggerMap(),\n floatingId: undefined,\n syncOnly: false,\n nested: false,\n onOpenChange: undefined\n });\n}","import { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { FloatingRootStore } from \"../../floating-ui-react/components/FloatingRootStore.mjs\";\nimport { getEmptyRootContext } from \"../../floating-ui-react/utils/getEmptyRootContext.mjs\";\n\n/**\n * State common to all popup stores.\n */\n\nexport function createInitialPopupStoreState() {\n return {\n open: false,\n openProp: undefined,\n mounted: false,\n transitionStatus: undefined,\n floatingRootContext: getEmptyRootContext(),\n floatingId: undefined,\n triggerCount: 0,\n preventUnmountingOnClose: false,\n payload: undefined,\n activeTriggerId: null,\n activeTriggerElement: null,\n triggerIdProp: undefined,\n popupElement: null,\n positionerElement: null,\n activeTriggerProps: EMPTY_OBJECT,\n inactiveTriggerProps: EMPTY_OBJECT,\n popupProps: EMPTY_OBJECT\n };\n}\nexport function createPopupFloatingRootContext(triggerElements, floatingId, nested = false) {\n return new FloatingRootStore({\n open: false,\n transitionStatus: undefined,\n floatingElement: null,\n referenceElement: null,\n triggerElements,\n floatingId,\n syncOnly: true,\n nested,\n onOpenChange: undefined\n });\n}\nconst activeTriggerIdSelector = state => state.triggerIdProp ?? state.activeTriggerId;\nconst openSelector = state => state.openProp ?? state.open;\nconst popupIdSelector = state => {\n const popupId = state.popupElement?.id ?? state.floatingId;\n return popupId || undefined;\n};\nfunction triggerOwnsOpenPopup(state, triggerId) {\n return triggerId !== undefined && openSelector(state) && activeTriggerIdSelector(state) === triggerId;\n}\nfunction triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) {\n if (triggerOwnsOpenPopup(state, triggerId)) {\n return true;\n }\n return triggerId !== undefined && openSelector(state) && activeTriggerIdSelector(state) == null && state.triggerCount === 1;\n}\nexport const popupStoreSelectors = {\n open: openSelector,\n mounted: state => state.mounted,\n transitionStatus: state => state.transitionStatus,\n floatingRootContext: state => state.floatingRootContext,\n triggerCount: state => state.triggerCount,\n preventUnmountingOnClose: state => state.preventUnmountingOnClose,\n payload: state => state.payload,\n activeTriggerId: activeTriggerIdSelector,\n activeTriggerElement: state => state.mounted ? state.activeTriggerElement : null,\n popupId: popupIdSelector,\n /**\n * Whether the trigger with the given ID was used to open the popup.\n */\n isTriggerActive: (state, triggerId) => triggerId !== undefined && activeTriggerIdSelector(state) === triggerId,\n /**\n * Whether the popup is open and was activated by a trigger with the given ID.\n */\n isOpenedByTrigger: (state, triggerId) => triggerOwnsOpenPopup(state, triggerId),\n /**\n * Whether the popup is mounted and was activated by a trigger with the given ID.\n */\n isMountedByTrigger: (state, triggerId) => triggerId !== undefined && activeTriggerIdSelector(state) === triggerId && state.mounted,\n triggerProps: (state, isActive) => isActive ? state.activeTriggerProps : state.inactiveTriggerProps,\n /**\n * Popup id for the trigger that currently owns the open popup.\n */\n triggerPopupId: (state, triggerId) => triggerOwnsOpenPopupOrIsOnlyTrigger(state, triggerId) ? popupIdSelector(state) : undefined,\n popupProps: state => state.popupProps,\n popupElement: state => state.popupElement,\n positionerElement: state => state.positionerElement\n};\n\n/**\n * Store members a detached handle-backed trigger reads or invokes for trigger registration and data\n * forwarding. `set`/`update` are included only for trigger-count and trigger-data bookkeeping; on a\n * detached (inert) store they are intentionally no-ops, so a write through them is not guaranteed to\n * be durable. Component handle-store views Pick these from their concrete store (preserving its\n * context and selectors) and add any component-specific trigger-invoked members such as `setOpen`.\n */\n\n/**\n * The subset of a popup store that trigger registration and data forwarding rely on. Narrow enough\n * that an inert store can be passed while detached.\n */","'use client';\n\nimport * as React from 'react';\nimport { useSyncExternalStore } from 'use-sync-external-store/shim';\nimport { NOOP } from '@base-ui/utils/empty';\n/**\n * Reads the store currently exposed by a popup handle and subscribes to store-pointer changes.\n * Detached triggers use this to follow a handle as a root attaches or detaches: while no root is\n * attached, the handle exposes its fallback store; once a root attaches, subscribers re-render and\n * read from the live root store.\n *\n * Returns `undefined` when no handle is provided so callers can fall back to their root context.\n *\n * @param handle The popup handle to read from, or `undefined` when the trigger is not handle-bound.\n */\nexport function usePopupHandleStore(handle) {\n const subscribe = React.useCallback(listener => {\n if (handle === undefined) {\n return NOOP;\n }\n return handle.subscribeStore(listener);\n }, [handle]);\n const getSnapshot = React.useCallback(() => {\n return handle === undefined ? undefined : handle.store;\n }, [handle]);\n return useSyncExternalStore(subscribe, getSnapshot, () => handle?.serverStore);\n}","'use client';\n\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { platform } from '@base-ui/utils/platform';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { getWindow, isElement, isHTMLElement } from '@floating-ui/utils/dom';\nimport { createAttribute } from \"../utils/createAttribute.mjs\";\nimport { activeElement, contains, getTarget, isTargetInsideEnabledTrigger, isTypeableElement, matchesFocusVisible } from \"../utils/element.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nconst isMacSafari = platform.os.mac && platform.engine.webkit;\n/**\n * Opens the floating element while the reference element has focus, like CSS\n * `:focus`.\n * @see https://floating-ui.com/docs/useFocus\n */\nexport function useFocus(context, props = {}) {\n const {\n enabled = true,\n delay\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const {\n events,\n dataRef\n } = store.context;\n const blockFocusRef = React.useRef(false);\n // Track which reference should be blocked from re-opening after Escape/press dismissal.\n const blockedReferenceRef = React.useRef(null);\n const keyboardModalityRef = React.useRef(true);\n const timeout = useTimeout();\n React.useEffect(() => {\n const domReference = store.select('domReferenceElement');\n if (!enabled) {\n return undefined;\n }\n const win = getWindow(domReference);\n\n // If the reference was focused and the user left the tab/window, and the\n // floating element was not open, the focus should be blocked when they\n // return to the tab/window.\n function onBlur() {\n const currentDomReference = store.select('domReferenceElement');\n if (!store.select('open') && isHTMLElement(currentDomReference) && currentDomReference === activeElement(ownerDocument(currentDomReference))) {\n blockFocusRef.current = true;\n }\n }\n function onKeyDown() {\n keyboardModalityRef.current = true;\n }\n function onPointerDown() {\n keyboardModalityRef.current = false;\n }\n return mergeCleanups(addEventListener(win, 'blur', onBlur), isMacSafari && addEventListener(win, 'keydown', onKeyDown, true), isMacSafari && addEventListener(win, 'pointerdown', onPointerDown, true));\n }, [store, enabled]);\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n function onOpenChangeLocal(details) {\n if (details.reason === REASONS.triggerPress || details.reason === REASONS.escapeKey) {\n const referenceElement = store.select('domReferenceElement');\n if (isElement(referenceElement)) {\n blockedReferenceRef.current = referenceElement;\n blockFocusRef.current = true;\n }\n }\n }\n events.on('openchange', onOpenChangeLocal);\n return () => {\n events.off('openchange', onOpenChangeLocal);\n };\n }, [events, enabled, store]);\n const reference = React.useMemo(() => {\n function resetBlockedFocus() {\n blockFocusRef.current = false;\n blockedReferenceRef.current = null;\n }\n return {\n onMouseLeave() {\n resetBlockedFocus();\n },\n onFocus(event) {\n const focusTarget = event.currentTarget;\n if (blockFocusRef.current) {\n if (blockedReferenceRef.current === focusTarget) {\n return;\n }\n resetBlockedFocus();\n }\n const target = getTarget(event.nativeEvent);\n if (isElement(target)) {\n // Safari fails to match `:focus-visible` if focus was initially\n // outside the document.\n if (isMacSafari && !event.relatedTarget) {\n if (!keyboardModalityRef.current && !isTypeableElement(target)) {\n return;\n }\n } else if (!matchesFocusVisible(target)) {\n return;\n }\n }\n const movedFromOtherEnabledTrigger = isTargetInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements);\n const {\n nativeEvent,\n currentTarget\n } = event;\n const delayValue = typeof delay === 'function' ? delay() : delay;\n if (store.select('open') && movedFromOtherEnabledTrigger || delayValue === 0 || delayValue === undefined) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerFocus, nativeEvent, currentTarget));\n return;\n }\n timeout.start(delayValue, () => {\n if (blockFocusRef.current) {\n return;\n }\n store.setOpen(true, createChangeEventDetails(REASONS.triggerFocus, nativeEvent, currentTarget));\n });\n },\n onBlur(event) {\n resetBlockedFocus();\n const relatedTarget = event.relatedTarget;\n const nativeEvent = event.nativeEvent;\n\n // Hit the non-modal focus management portal guard. Focus will be\n // moved into the floating element immediately after.\n const movedToFocusGuard = isElement(relatedTarget) && relatedTarget.hasAttribute(createAttribute('focus-guard')) && relatedTarget.getAttribute('data-type') === 'outside';\n\n // Wait for the window blur listener to fire.\n timeout.start(0, () => {\n const domReference = store.select('domReferenceElement');\n const activeEl = activeElement(ownerDocument(domReference));\n\n // Focus left the page, keep it open.\n if (!relatedTarget && activeEl === domReference) {\n return;\n }\n\n // When focusing the reference element (e.g. regular click), then\n // clicking into the floating element, prevent it from hiding.\n // Note: it must be focusable, e.g. `tabindex=\"-1\"`.\n // We can not rely on relatedTarget to point to the correct element\n // as it will only point to the shadow host of the newly focused element\n // and not the element that actually has received focus if it is located\n // inside a shadow root.\n if (contains(dataRef.current.floatingContext?.refs.floating.current, activeEl) || contains(domReference, activeEl) || movedToFocusGuard) {\n return;\n }\n\n // If the next focused element is one of the triggers, do not close\n // the floating element. The focus handler of that trigger will\n // handle the open state.\n const nextFocusedElement = relatedTarget ?? activeEl;\n if (isTargetInsideEnabledTrigger(nextFocusedElement, store.context.triggerElements)) {\n return;\n }\n store.setOpen(false, createChangeEventDetails(REASONS.triggerFocus, nativeEvent));\n });\n }\n };\n }, [dataRef, delay, store, timeout]);\n return React.useMemo(() => enabled ? {\n reference,\n trigger: reference\n } : {}, [enabled, reference]);\n}","'use client';\n\nimport { useOnMount } from '@base-ui/utils/useOnMount';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { Timeout } from '@base-ui/utils/useTimeout';\nimport { isInteractiveElement } from \"../utils.mjs\";\nexport { isInteractiveElement };\nexport class HoverInteraction {\n constructor() {\n this.pointerType = undefined;\n this.interactedInside = false;\n this.handler = undefined;\n this.blockMouseMove = true;\n this.performedPointerEventsMutation = false;\n this.pointerEventsScopeElement = null;\n this.pointerEventsReferenceElement = null;\n this.pointerEventsFloatingElement = null;\n this.restTimeoutPending = false;\n this.openChangeTimeout = new Timeout();\n this.restTimeout = new Timeout();\n this.handleCloseOptions = undefined;\n }\n static create() {\n return new HoverInteraction();\n }\n dispose = () => {\n this.openChangeTimeout.clear();\n this.restTimeout.clear();\n };\n disposeEffect = () => {\n return this.dispose;\n };\n}\nconst pointerEventsMutationOwnerByScopeElement = new WeakMap();\nexport function clearSafePolygonPointerEventsMutation(instance) {\n if (!instance.performedPointerEventsMutation) {\n return;\n }\n const scopeElement = instance.pointerEventsScopeElement;\n if (scopeElement && pointerEventsMutationOwnerByScopeElement.get(scopeElement) === instance) {\n instance.pointerEventsScopeElement?.style.removeProperty('pointer-events');\n instance.pointerEventsReferenceElement?.style.removeProperty('pointer-events');\n instance.pointerEventsFloatingElement?.style.removeProperty('pointer-events');\n pointerEventsMutationOwnerByScopeElement.delete(scopeElement);\n }\n instance.performedPointerEventsMutation = false;\n instance.pointerEventsScopeElement = null;\n instance.pointerEventsReferenceElement = null;\n instance.pointerEventsFloatingElement = null;\n}\nexport function applySafePolygonPointerEventsMutation(instance, options) {\n const {\n scopeElement,\n referenceElement,\n floatingElement\n } = options;\n const existingOwner = pointerEventsMutationOwnerByScopeElement.get(scopeElement);\n if (existingOwner && existingOwner !== instance) {\n clearSafePolygonPointerEventsMutation(existingOwner);\n }\n clearSafePolygonPointerEventsMutation(instance);\n instance.performedPointerEventsMutation = true;\n instance.pointerEventsScopeElement = scopeElement;\n instance.pointerEventsReferenceElement = referenceElement;\n instance.pointerEventsFloatingElement = floatingElement;\n pointerEventsMutationOwnerByScopeElement.set(scopeElement, instance);\n scopeElement.style.pointerEvents = 'none';\n referenceElement.style.pointerEvents = 'auto';\n floatingElement.style.pointerEvents = 'auto';\n}\nexport function useHoverInteractionSharedState(store) {\n const data = store.context.dataRef.current;\n const instance = useRefWithInit(() => data.hoverInteractionState ?? HoverInteraction.create()).current;\n if (!data.hoverInteractionState) {\n data.hoverInteractionState = instance;\n }\n useOnMount(data.hoverInteractionState.disposeEffect);\n return data.hoverInteractionState;\n}","'use client';\n\nimport * as React from 'react';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useFloatingParentNodeId, useFloatingTree } from \"../components/FloatingTree.mjs\";\nimport { contains, getTarget } from \"../utils/element.mjs\";\nimport { getNodeChildren } from \"../utils/nodes.mjs\";\nimport { applySafePolygonPointerEventsMutation, clearSafePolygonPointerEventsMutation, isInteractiveElement, useHoverInteractionSharedState } from \"./useHoverInteractionSharedState.mjs\";\nimport { getDelay, isClickLikeOpenEvent as isClickLikeOpenEventShared, isHoverOpenEvent, isInsideEnabledTrigger } from \"./useHoverShared.mjs\";\n/**\n * Provides hover interactions that should be attached to the floating element.\n */\nexport function useHoverFloatingInteraction(context, parameters = {}) {\n const {\n enabled = true,\n closeDelay: closeDelayProp = 0,\n nodeId: nodeIdProp\n } = parameters;\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const domReferenceElement = store.useState('domReferenceElement');\n const {\n dataRef\n } = store.context;\n const tree = useFloatingTree();\n const parentId = useFloatingParentNodeId();\n const instance = useHoverInteractionSharedState(store);\n const childClosedTimeout = useTimeout();\n const isClickLikeOpenEvent = useStableCallback(() => {\n return isClickLikeOpenEventShared(dataRef.current.openEvent?.type, instance.interactedInside);\n });\n const isHoverOpen = useStableCallback(() => {\n return isHoverOpenEvent(dataRef.current.openEvent?.type);\n });\n const clearPointerEvents = useStableCallback(() => {\n clearSafePolygonPointerEventsMutation(instance);\n });\n useIsoLayoutEffect(() => {\n if (!open) {\n instance.pointerType = undefined;\n instance.restTimeoutPending = false;\n instance.interactedInside = false;\n clearPointerEvents();\n }\n }, [open, instance, clearPointerEvents]);\n React.useEffect(() => {\n return clearPointerEvents;\n }, [clearPointerEvents]);\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return undefined;\n }\n if (open && instance.handleCloseOptions?.blockPointerEvents && isHoverOpen() && isElement(domReferenceElement) && floatingElement) {\n const ref = domReferenceElement;\n const floatingEl = floatingElement;\n const doc = ownerDocument(floatingElement);\n const parentFloating = tree?.nodesRef.current.find(node => node.id === parentId)?.context?.elements.floating;\n if (parentFloating) {\n parentFloating.style.pointerEvents = '';\n }\n\n // A keep-mounted submenu can appear in the tree before it opens, so a\n // cached scope or parent lookup may resolve to the submenu itself. That\n // would not shield sibling items in the parent menu.\n const cachedScopeElement = instance.pointerEventsScopeElement !== floatingEl ? instance.pointerEventsScopeElement : null;\n const parentScopeElement = parentFloating !== floatingEl ? parentFloating : null;\n const scopeElement = instance.handleCloseOptions?.getScope?.() ?? cachedScopeElement ?? parentScopeElement ?? ref.closest('[data-rootownerid]') ?? doc.body;\n applySafePolygonPointerEventsMutation(instance, {\n scopeElement,\n referenceElement: ref,\n floatingElement: floatingEl\n });\n return () => {\n clearPointerEvents();\n };\n }\n return undefined;\n }, [enabled, open, domReferenceElement, floatingElement, instance, isHoverOpen, tree, parentId, clearPointerEvents]);\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n function hasParentChildren() {\n return !!(tree && parentId && getNodeChildren(tree.nodesRef.current, parentId).length > 0);\n }\n function closeWithDelay(event) {\n const closeDelay = getDelay(closeDelayProp, 'close', instance.pointerType);\n const close = () => {\n store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));\n tree?.events.emit('floating.closed', event);\n };\n if (closeDelay) {\n instance.openChangeTimeout.start(closeDelay, close);\n } else {\n instance.openChangeTimeout.clear();\n close();\n }\n }\n function handleInteractInside(event) {\n const target = getTarget(event);\n if (!isInteractiveElement(target)) {\n instance.interactedInside = false;\n return;\n }\n instance.interactedInside = target?.closest('[aria-haspopup]') != null;\n }\n function onFloatingMouseEnter() {\n instance.openChangeTimeout.clear();\n childClosedTimeout.clear();\n tree?.events.off('floating.closed', onNodeClosed);\n clearPointerEvents();\n }\n function onFloatingMouseLeave(event) {\n if (hasParentChildren() && tree) {\n tree.events.on('floating.closed', onNodeClosed);\n return;\n }\n if (isInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) {\n // If the mouse is leaving the reference element to another trigger, don't explicitly close the popup\n // as it will be moved.\n return;\n }\n const currentNodeId = dataRef.current.floatingContext?.nodeId ?? nodeIdProp;\n const relatedTarget = event.relatedTarget;\n const isMovingIntoDescendantFloating = tree && currentNodeId && isElement(relatedTarget) && getNodeChildren(tree.nodesRef.current, currentNodeId, false).some(node => contains(node.context?.elements.floating, relatedTarget));\n if (isMovingIntoDescendantFloating) {\n return;\n }\n\n // If the safePolygon handler is active, let it handle the close logic.\n if (instance.handler) {\n instance.handler(event);\n return;\n }\n clearPointerEvents();\n if (isHoverOpen() && !isClickLikeOpenEvent()) {\n closeWithDelay(event);\n }\n }\n function onNodeClosed(event) {\n if (!tree || !parentId || hasParentChildren()) {\n return;\n }\n // Allow the mouseenter event to fire in case child was closed because mouse moved into parent.\n childClosedTimeout.start(0, () => {\n tree.events.off('floating.closed', onNodeClosed);\n store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));\n tree.events.emit('floating.closed', event);\n });\n }\n const floating = floatingElement;\n return mergeCleanups(floating && addEventListener(floating, 'mouseenter', onFloatingMouseEnter), floating && addEventListener(floating, 'mouseleave', onFloatingMouseLeave), floating && addEventListener(floating, 'pointerdown', handleInteractInside, true), () => {\n tree?.events.off('floating.closed', onNodeClosed);\n });\n }, [enabled, floatingElement, store, dataRef, closeDelayProp, nodeIdProp, isHoverOpen, isClickLikeOpenEvent, clearPointerEvents, instance, tree, parentId, childClosedTimeout]);\n}","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { mergeCleanups } from '@base-ui/utils/mergeCleanups';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useFloatingTree } from \"../components/FloatingTree.mjs\";\nimport { contains, getTarget } from \"../utils/element.mjs\";\nimport { isMouseLikePointerType } from \"../utils/event.mjs\";\nimport { applySafePolygonPointerEventsMutation, clearSafePolygonPointerEventsMutation, useHoverInteractionSharedState } from \"./useHoverInteractionSharedState.mjs\";\nimport { getDelay, getRestMs, isClickLikeOpenEvent as isClickLikeOpenEventShared, isInsideEnabledTrigger } from \"./useHoverShared.mjs\";\nconst EMPTY_REF = {\n current: null\n};\n\n/**\n * Provides hover interactions that should be attached to reference or trigger\n * elements.\n */\nexport function useHoverReferenceInteraction(context, props = {}) {\n const {\n enabled = true,\n delay = 0,\n handleClose = null,\n mouseOnly = false,\n restMs = 0,\n move = true,\n triggerElementRef = EMPTY_REF,\n externalTree,\n isActiveTrigger = true,\n getHandleCloseContext,\n isClosing,\n shouldOpen: shouldOpenProp,\n guardStaleOpen = false\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const {\n dataRef,\n events\n } = store.context;\n const tree = useFloatingTree(externalTree);\n const instance = useHoverInteractionSharedState(store);\n const isHoverCloseActiveRef = React.useRef(false);\n const handleCloseRef = useValueAsRef(handleClose);\n const delayRef = useValueAsRef(delay);\n const restMsRef = useValueAsRef(restMs);\n const enabledRef = useValueAsRef(enabled);\n const shouldOpenRef = useValueAsRef(shouldOpenProp);\n const isClosingRef = useValueAsRef(isClosing);\n const isClickLikeOpenEvent = useStableCallback(() => {\n return isClickLikeOpenEventShared(dataRef.current.openEvent?.type, instance.interactedInside);\n });\n const checkShouldOpen = useStableCallback(() => {\n return shouldOpenRef.current?.() !== false;\n });\n const isOverInactiveTrigger = useStableCallback((currentDomReference, currentTarget, target) => {\n const allTriggers = store.context.triggerElements;\n\n // Fast path for normal usage where handlers are attached directly to triggers.\n if (allTriggers.hasElement(currentTarget)) {\n return !currentDomReference || !contains(currentDomReference, currentTarget);\n }\n\n // Fallback for delegated/wrapper usage where currentTarget may be outside the trigger map.\n if (!isElement(target)) {\n return false;\n }\n const targetElement = target;\n return allTriggers.hasMatchingElement(trigger => contains(trigger, targetElement)) && (!currentDomReference || !contains(currentDomReference, targetElement));\n });\n const cleanupMouseMoveHandler = useStableCallback(() => {\n if (!instance.handler) {\n return;\n }\n const doc = ownerDocument(store.select('domReferenceElement'));\n doc.removeEventListener('mousemove', instance.handler);\n instance.handler = undefined;\n });\n const clearPointerEvents = useStableCallback(() => {\n clearSafePolygonPointerEventsMutation(instance);\n });\n if (isActiveTrigger) {\n // eslint-disable-next-line no-underscore-dangle\n instance.handleCloseOptions = handleCloseRef.current?.__options;\n }\n React.useEffect(() => cleanupMouseMoveHandler, [cleanupMouseMoveHandler]);\n\n // When closing before opening, clear the delay timeouts to cancel it\n // from showing.\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n function onOpenChangeLocal(details) {\n if (!details.open) {\n isHoverCloseActiveRef.current = details.reason === REASONS.triggerHover;\n cleanupMouseMoveHandler();\n instance.openChangeTimeout.clear();\n instance.restTimeout.clear();\n instance.blockMouseMove = true;\n instance.restTimeoutPending = false;\n } else {\n isHoverCloseActiveRef.current = false;\n }\n }\n events.on('openchange', onOpenChangeLocal);\n return () => {\n events.off('openchange', onOpenChangeLocal);\n };\n }, [enabled, events, instance, cleanupMouseMoveHandler]);\n React.useEffect(() => {\n if (!enabled) {\n return undefined;\n }\n function closeWithDelay(event, runElseBranch = true) {\n const closeDelay = getDelay(delayRef.current, 'close', instance.pointerType);\n if (closeDelay) {\n instance.openChangeTimeout.start(closeDelay, () => {\n store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));\n tree?.events.emit('floating.closed', event);\n });\n } else if (runElseBranch) {\n instance.openChangeTimeout.clear();\n store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));\n tree?.events.emit('floating.closed', event);\n }\n }\n const trigger = triggerElementRef.current ?? (isActiveTrigger ? store.select('domReferenceElement') : null);\n if (!isElement(trigger)) {\n return undefined;\n }\n function onMouseEnter(event) {\n instance.openChangeTimeout.clear();\n instance.blockMouseMove = false;\n if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {\n return;\n }\n\n // Only rest delay is set; there's no fallback delay.\n // This will be handled by `onMouseMove`.\n const restMsValue = getRestMs(restMsRef.current);\n const openDelay = getDelay(delayRef.current, 'open', instance.pointerType);\n const eventTarget = getTarget(event);\n const currentTarget = event.currentTarget ?? null;\n const currentDomReference = store.select('domReferenceElement');\n let triggerNode = currentTarget;\n\n // Wrapper/delegated mode: resolve the actual trigger from the event target.\n if (isElement(eventTarget) && !store.context.triggerElements.hasElement(eventTarget)) {\n for (const triggerElement of store.context.triggerElements.elements()) {\n if (contains(triggerElement, eventTarget)) {\n triggerNode = triggerElement;\n break;\n }\n }\n }\n\n // Wrapper/delegated mode fallback: if the wrapper contains the active trigger,\n // treat this as re-entering that active trigger.\n if (isElement(currentTarget) && isElement(currentDomReference) && !store.context.triggerElements.hasElement(currentTarget) && contains(currentTarget, currentDomReference)) {\n triggerNode = currentDomReference;\n }\n const isOverInactive = triggerNode == null ? false : isOverInactiveTrigger(currentDomReference, triggerNode, eventTarget);\n const isOpen = store.select('open');\n const isInClosingTransition = isClosingRef.current?.() ?? store.select('transitionStatus') === 'ending';\n const isHoverCloseTransition = !isOpen && isInClosingTransition && isHoverCloseActiveRef.current;\n const isReenteringSameTriggerDuringCloseTransition = !isOverInactive && isElement(triggerNode) && isElement(currentDomReference) && contains(currentDomReference, triggerNode) && isHoverCloseTransition;\n const isRestOnlyDelay = restMsValue > 0 && !openDelay;\n const shouldOpenImmediately = isOverInactive && (isOpen || isHoverCloseTransition) || isReenteringSameTriggerDuringCloseTransition;\n const shouldOpen = !isOpen || isOverInactive;\n\n // Open immediately when moving between triggers while open, or during\n // a hover-driven close transition (including same-trigger re-entry).\n if (shouldOpenImmediately) {\n if (checkShouldOpen()) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerHover, event, triggerNode));\n }\n return;\n }\n if (isRestOnlyDelay) {\n return;\n }\n if (openDelay) {\n instance.openChangeTimeout.start(openDelay, () => {\n if (shouldOpen && checkShouldOpen()) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerHover, event, triggerNode));\n }\n });\n } else if (shouldOpen) {\n if (checkShouldOpen()) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerHover, event, triggerNode));\n }\n }\n }\n function onMouseLeave(event) {\n if (isClickLikeOpenEvent()) {\n clearPointerEvents();\n return;\n }\n cleanupMouseMoveHandler();\n const domReferenceElement = store.select('domReferenceElement');\n const doc = ownerDocument(domReferenceElement);\n instance.restTimeout.clear();\n instance.restTimeoutPending = false;\n const handleCloseContextBase = dataRef.current.floatingContext ?? getHandleCloseContext?.();\n if (isInsideEnabledTrigger(event.relatedTarget, store.context.triggerElements)) {\n return;\n }\n if (handleCloseRef.current && handleCloseContextBase) {\n if (!store.select('open')) {\n instance.openChangeTimeout.clear();\n }\n const currentTrigger = triggerElementRef.current;\n instance.handler = handleCloseRef.current({\n ...handleCloseContextBase,\n tree,\n x: event.clientX,\n y: event.clientY,\n onClose() {\n clearPointerEvents();\n cleanupMouseMoveHandler();\n if (enabledRef.current && !isClickLikeOpenEvent() && currentTrigger === store.select('domReferenceElement')) {\n closeWithDelay(event, true);\n }\n }\n });\n doc.addEventListener('mousemove', instance.handler);\n instance.handler(event);\n return;\n }\n const shouldClose = instance.pointerType === 'touch' ? !contains(store.select('floatingElement'), event.relatedTarget) : true;\n if (shouldClose) {\n closeWithDelay(event);\n }\n }\n\n // Backup cancellation for Chrome's dropped `mouseleave` — see `guardStaleOpen`.\n function onMouseOut(event) {\n if (contains(trigger, event.relatedTarget)) {\n return; // moved within the trigger's own subtree\n }\n instance.openChangeTimeout.clear();\n instance.restTimeout.clear();\n instance.restTimeoutPending = false;\n }\n const staleOpenGuard = guardStaleOpen ? addEventListener(trigger, 'mouseout', onMouseOut) : undefined;\n if (move) {\n return mergeCleanups(addEventListener(trigger, 'mousemove', onMouseEnter, {\n once: true\n }), addEventListener(trigger, 'mouseenter', onMouseEnter), addEventListener(trigger, 'mouseleave', onMouseLeave), staleOpenGuard);\n }\n return mergeCleanups(addEventListener(trigger, 'mouseenter', onMouseEnter), addEventListener(trigger, 'mouseleave', onMouseLeave), staleOpenGuard);\n }, [cleanupMouseMoveHandler, clearPointerEvents, dataRef, delayRef, store, enabled, handleCloseRef, instance, isActiveTrigger, isOverInactiveTrigger, isClickLikeOpenEvent, mouseOnly, move, restMsRef, triggerElementRef, tree, enabledRef, getHandleCloseContext, isClosingRef, checkShouldOpen, guardStaleOpen]);\n return React.useMemo(() => {\n if (!enabled) {\n return undefined;\n }\n function setPointerRef(event) {\n instance.pointerType = event.pointerType;\n }\n return {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n onMouseMove(event) {\n const {\n nativeEvent\n } = event;\n const trigger = event.currentTarget;\n const currentDomReference = store.select('domReferenceElement');\n const currentOpen = store.select('open');\n const isOverInactive = isOverInactiveTrigger(currentDomReference, trigger, event.target);\n if (mouseOnly && !isMouseLikePointerType(instance.pointerType)) {\n return;\n }\n if (currentOpen && isOverInactive && instance.handleCloseOptions?.blockPointerEvents) {\n const floatingElement = store.select('floatingElement');\n if (floatingElement) {\n const scopeElement = instance.handleCloseOptions?.getScope?.() ?? trigger.ownerDocument.body;\n applySafePolygonPointerEventsMutation(instance, {\n scopeElement,\n referenceElement: trigger,\n floatingElement\n });\n }\n }\n const restMsValue = getRestMs(restMsRef.current);\n if (currentOpen && !isOverInactive || restMsValue === 0) {\n return;\n }\n if (!isOverInactive && instance.restTimeoutPending && event.movementX ** 2 + event.movementY ** 2 < 2) {\n return;\n }\n instance.restTimeout.clear();\n function handleMouseMove() {\n instance.restTimeoutPending = false;\n\n // A delayed hover open should not override a click-like open that happened\n // while the hover delay was pending.\n if (isClickLikeOpenEvent()) {\n return;\n }\n const latestOpen = store.select('open');\n if (!instance.blockMouseMove && (!latestOpen || isOverInactive) && checkShouldOpen()) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerHover, nativeEvent, trigger));\n }\n }\n if (instance.pointerType === 'touch') {\n ReactDOM.flushSync(() => {\n handleMouseMove();\n });\n } else if (isOverInactive && currentOpen) {\n handleMouseMove();\n } else {\n instance.restTimeoutPending = true;\n instance.restTimeout.start(restMsValue, handleMouseMove);\n }\n }\n };\n }, [enabled, instance, isClickLikeOpenEvent, isOverInactiveTrigger, mouseOnly, store, restMsRef, checkShouldOpen]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { platform } from '@base-ui/utils/platform';\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useFloatingParentNodeId, useFloatingTree } from \"../components/FloatingTree.mjs\";\nimport { findNonDisabledListIndex, getMaxListIndex, getMinListIndex, isIndexOutOfListBounds } from \"../utils/composite.mjs\";\nimport { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from \"../utils/constants.mjs\";\nimport { activeElement, contains, getFloatingFocusElement, getTarget, isTypeableCombobox } from \"../utils/element.mjs\";\nimport { enqueueFocus } from \"../utils/enqueueFocus.mjs\";\nimport { isVirtualClick, isVirtualPointerEvent, stopEvent } from \"../utils/event.mjs\";\nexport const ESCAPE = 'Escape';\n\n// WebKit fires zero-delta `mousemove`/`pointermove` events when the list scrolls\n// beneath a stationary pointer, moving the highlight during keyboard navigation.\n// https://github.com/mui/base-ui/issues/4002\nfunction isStationaryWebKitPointer(event) {\n return platform.engine.webkit && event.movementX === 0 && event.movementY === 0;\n}\nfunction doSwitch(orientation, vertical, horizontal) {\n switch (orientation) {\n case 'vertical':\n return vertical;\n case 'horizontal':\n return horizontal;\n default:\n return vertical || horizontal;\n }\n}\nfunction isMainOrientationKey(key, orientation) {\n const vertical = key === ARROW_UP || key === ARROW_DOWN;\n const horizontal = key === ARROW_LEFT || key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isMainOrientationToEndKey(key, orientation, rtl) {\n const vertical = key === ARROW_DOWN;\n const horizontal = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n return doSwitch(orientation, vertical, horizontal) || key === 'Enter' || key === ' ' || key === '';\n}\nfunction isCrossOrientationOpenKey(key, orientation, rtl) {\n const vertical = rtl ? key === ARROW_LEFT : key === ARROW_RIGHT;\n const horizontal = key === ARROW_DOWN;\n return doSwitch(orientation, vertical, horizontal);\n}\nfunction isCrossOrientationCloseKey(key, orientation, rtl, grid) {\n const vertical = rtl ? key === ARROW_RIGHT : key === ARROW_LEFT;\n const horizontal = key === ARROW_UP;\n if (orientation === 'both' || orientation === 'horizontal' && grid) {\n return key === ESCAPE;\n }\n return doSwitch(orientation, vertical, horizontal);\n}\n/**\n * Adds arrow key-based navigation of a list of items, either using real DOM\n * focus or virtual focus.\n * @see https://floating-ui.com/docs/useListNavigation\n */\nexport function useListNavigation(context, props) {\n const {\n listRef,\n activeIndex,\n onNavigate: onNavigateProp = () => {},\n enabled = true,\n selectedIndex = null,\n allowEscape = false,\n loopFocus = false,\n nested = false,\n rtl = false,\n virtual = false,\n focusItemOnOpen = 'auto',\n focusItemOnHover = true,\n openOnArrowKeyDown = true,\n disabledIndices = undefined,\n orientation = 'vertical',\n parentOrientation,\n id,\n resetOnPointerLeave = true,\n externalTree,\n grid: navigateGrid\n } = props;\n const isGrid = navigateGrid != null;\n if (process.env.NODE_ENV !== 'production') {\n if (allowEscape) {\n if (!loopFocus) {\n console.warn('`useListNavigation` looping must be enabled to allow escaping.');\n }\n if (!virtual) {\n console.warn('`useListNavigation` must be virtual to allow escaping.');\n }\n }\n if (orientation === 'vertical' && isGrid) {\n console.warn('In grid list navigation mode, the `orientation` should', 'be either \"horizontal\" or \"both\".');\n }\n }\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const floatingElement = store.useState('floatingElement');\n const domReferenceElement = store.useState('domReferenceElement');\n const dataRef = store.context.dataRef;\n const floatingFocusElement = getFloatingFocusElement(floatingElement);\n const typeableComboboxReference = isTypeableCombobox(domReferenceElement);\n const floatingFocusElementRef = useValueAsRef(floatingFocusElement);\n const parentId = useFloatingParentNodeId();\n const tree = useFloatingTree(externalTree);\n const focusItemOnOpenRef = React.useRef(focusItemOnOpen);\n const indexRef = React.useRef(selectedIndex ?? -1);\n const keyRef = React.useRef(null);\n const isPointerModalityRef = React.useRef(true);\n const onNavigate = useStableCallback(event => {\n onNavigateProp(indexRef.current === -1 ? null : indexRef.current, event);\n });\n const previousMountedRef = React.useRef(!!floatingElement);\n const previousOpenRef = React.useRef(open);\n const forceSyncFocusRef = React.useRef(false);\n const forceScrollIntoViewRef = React.useRef(false);\n const cancelQueuedFocusRef = React.useRef(null);\n const disabledIndicesRef = useValueAsRef(disabledIndices);\n const latestOpenRef = useValueAsRef(open);\n const selectedIndexRef = useValueAsRef(selectedIndex);\n const resetOnPointerLeaveRef = useValueAsRef(resetOnPointerLeave);\n const focusFrame = useAnimationFrame();\n const waitForListPopulatedFrame = useAnimationFrame();\n const focusItem = useStableCallback(() => {\n function runFocus(item) {\n if (virtual) {\n tree?.events.emit('virtualfocus', item);\n } else {\n cancelQueuedFocusRef.current = enqueueFocus(item, {\n sync: forceSyncFocusRef.current,\n preventScroll: true\n });\n }\n }\n const initialItem = listRef.current[indexRef.current];\n const forceScrollIntoView = forceScrollIntoViewRef.current;\n if (initialItem) {\n runFocus(initialItem);\n }\n const scheduler = forceSyncFocusRef.current ? callback => callback() : callback => focusFrame.request(callback);\n scheduler(() => {\n const waitedItem = listRef.current[indexRef.current] || initialItem;\n if (!waitedItem) {\n return;\n }\n if (!initialItem) {\n runFocus(waitedItem);\n }\n const shouldScrollIntoView =\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n item && (forceScrollIntoView || !isPointerModalityRef.current);\n if (shouldScrollIntoView) {\n // JSDOM doesn't support `.scrollIntoView()` but it's widely supported\n // by all browsers.\n waitedItem.scrollIntoView?.({\n block: 'nearest',\n inline: 'nearest'\n });\n }\n });\n });\n useIsoLayoutEffect(() => {\n dataRef.current.orientation = orientation;\n }, [dataRef, orientation]);\n\n // Sync `selectedIndex` to be the `activeIndex` upon opening the floating\n // element. Also, reset `activeIndex` upon closing the floating element.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (open && floatingElement) {\n indexRef.current = selectedIndex ?? -1;\n if (focusItemOnOpenRef.current && selectedIndex != null) {\n // Regardless of the pointer modality, we want to ensure the selected\n // item comes into view when the floating element is opened.\n forceScrollIntoViewRef.current = true;\n onNavigate();\n }\n } else if (previousMountedRef.current) {\n // Reset the active index when the list is no longer open and mounted (closing or\n // unmounting). `onNavigate` is a stable callback that always forwards to the latest\n // `onNavigate` prop.\n indexRef.current = -1;\n onNavigate();\n }\n }, [enabled, open, floatingElement, selectedIndex, onNavigate]);\n\n // Sync `activeIndex` to be the focused item while the floating element is\n // open.\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return;\n }\n if (!open) {\n forceSyncFocusRef.current = false;\n return;\n }\n if (!floatingElement) {\n return;\n }\n if (activeIndex == null) {\n forceSyncFocusRef.current = false;\n if (selectedIndexRef.current != null) {\n return;\n }\n\n // Reset while the floating element was open (e.g. the list changed).\n if (previousMountedRef.current) {\n indexRef.current = -1;\n focusItem();\n }\n\n // Initial sync.\n if ((!previousOpenRef.current || !previousMountedRef.current) && focusItemOnOpenRef.current && (keyRef.current != null || focusItemOnOpenRef.current === true && keyRef.current == null)) {\n let runs = 0;\n const waitForListPopulated = () => {\n if (listRef.current[0] == null) {\n // Avoid letting the browser paint if possible on the first try,\n // otherwise use rAF. Don't try more than twice, since something\n // is wrong otherwise.\n if (runs < 2) {\n const scheduler = runs ? callback => waitForListPopulatedFrame.request(callback) : queueMicrotask;\n scheduler(waitForListPopulated);\n }\n runs += 1;\n } else {\n // Initially focus the first non-disabled item. `disabledIndices` is deliberately\n // omitted here so attribute-disabled items (`disabled`/`aria-disabled`) are skipped\n // on open even when the consumer passes an empty `disabledIndices` array. Passing it\n // would regress that behavior (see mui/base-ui#2604).\n indexRef.current = keyRef.current == null || isMainOrientationToEndKey(keyRef.current, orientation, rtl) || nested ? getMinListIndex(listRef) : getMaxListIndex(listRef);\n keyRef.current = null;\n onNavigate();\n }\n };\n waitForListPopulated();\n }\n } else if (!isIndexOutOfListBounds(listRef.current, activeIndex)) {\n indexRef.current = activeIndex;\n focusItem();\n forceScrollIntoViewRef.current = false;\n }\n }, [enabled, open, floatingElement, activeIndex, selectedIndexRef, nested, listRef, orientation, rtl, onNavigate, focusItem, waitForListPopulatedFrame]);\n\n // Ensure the parent floating element has focus when a nested child closes\n // to allow arrow key navigation to work after the pointer leaves the child.\n useIsoLayoutEffect(() => {\n if (!enabled || floatingElement || !tree || virtual || !previousMountedRef.current) {\n return;\n }\n const nodes = tree.nodesRef.current;\n const parent = nodes.find(node => node.id === parentId)?.context?.elements.floating;\n // `floatingElement` is null here (see the guard above), so resolve the owner document from an\n // in-DOM element for realm-safety (shadow DOM/iframes): the reference element, falling back to\n // the parent floating element when the reference is virtual (`domReferenceElement` is null).\n const activeEl = activeElement(ownerDocument(domReferenceElement ?? parent ?? null));\n const treeContainsActiveEl = nodes.some(node => node.context && contains(node.context.elements.floating, activeEl));\n if (parent && !treeContainsActiveEl && isPointerModalityRef.current) {\n parent.focus({\n preventScroll: true\n });\n }\n }, [enabled, floatingElement, domReferenceElement, tree, parentId, virtual]);\n useIsoLayoutEffect(() => {\n previousOpenRef.current = open;\n previousMountedRef.current = !!floatingElement;\n });\n useIsoLayoutEffect(() => {\n if (!open) {\n keyRef.current = null;\n focusItemOnOpenRef.current = focusItemOnOpen;\n }\n }, [open, focusItemOnOpen]);\n const hasActiveIndex = activeIndex != null;\n const syncCurrentTarget = useStableCallback(event => {\n if (!latestOpenRef.current) {\n return;\n }\n const index = listRef.current.indexOf(event.currentTarget);\n if (index !== -1 && (indexRef.current !== index || activeIndex !== index)) {\n indexRef.current = index;\n onNavigate(event);\n }\n });\n const getParentOrientation = useStableCallback(() => {\n return parentOrientation ?? tree?.nodesRef.current.find(node => node.id === parentId)?.context?.dataRef?.current.orientation;\n });\n const getMinEnabledIndex = useStableCallback(() => {\n return getMinListIndex(listRef, disabledIndicesRef.current);\n });\n const commonOnKeyDown = useStableCallback(event => {\n isPointerModalityRef.current = false;\n forceSyncFocusRef.current = true;\n\n // When composing a character, Chrome fires ArrowDown twice. Firefox/Safari\n // don't appear to suffer from this. `event.isComposing` is avoided due to\n // Safari not supporting it properly (although it's not needed in the first\n // place for Safari, just avoiding any possible issues).\n if (event.which === 229) {\n return;\n }\n\n // If the floating element is animating out, ignore navigation. Otherwise,\n // the `activeIndex` gets set to 0 despite not being open so the next time\n // the user ArrowDowns, the first item won't be focused.\n if (!latestOpenRef.current && event.currentTarget === floatingFocusElementRef.current) {\n return;\n }\n if (nested && isCrossOrientationCloseKey(event.key, orientation, rtl, isGrid)) {\n // If the nested list's close key is also the parent navigation key,\n // let the parent navigate. Otherwise, stop propagating the event.\n if (!isMainOrientationKey(event.key, getParentOrientation())) {\n stopEvent(event);\n }\n store.setOpen(false, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n if (virtual) {\n tree?.events.emit('virtualfocus', domReferenceElement);\n } else {\n domReferenceElement.focus();\n }\n }\n return;\n }\n const currentIndex = indexRef.current;\n const minIndex = getMinListIndex(listRef, disabledIndices);\n const maxIndex = getMaxListIndex(listRef, disabledIndices);\n if (!typeableComboboxReference) {\n if (event.key === 'Home') {\n stopEvent(event);\n indexRef.current = minIndex;\n onNavigate(event);\n }\n if (event.key === 'End') {\n stopEvent(event);\n indexRef.current = maxIndex;\n onNavigate(event);\n }\n }\n\n // Grid navigation is injected by grid-capable consumers so non-grid\n // consumers (menu, select) tree-shake the grid helpers out.\n if (navigateGrid != null) {\n const index = navigateGrid(event, indexRef.current, listRef, orientation, loopFocus, rtl, disabledIndices, minIndex, maxIndex);\n if (index != null) {\n indexRef.current = index;\n onNavigate(event);\n }\n if (orientation === 'both') {\n return;\n }\n }\n if (isMainOrientationKey(event.key, orientation)) {\n stopEvent(event);\n\n // Reset the index if no item is focused.\n if (open && !virtual && activeElement(event.currentTarget.ownerDocument) === event.currentTarget) {\n indexRef.current = isMainOrientationToEndKey(event.key, orientation, rtl) ? minIndex : maxIndex;\n onNavigate(event);\n return;\n }\n if (isMainOrientationToEndKey(event.key, orientation, rtl)) {\n if (loopFocus) {\n if (currentIndex >= maxIndex) {\n if (allowEscape && currentIndex !== listRef.current.length) {\n indexRef.current = -1;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = minIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.min(maxIndex, findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n disabledIndices\n }));\n }\n } else if (loopFocus) {\n if (currentIndex <= minIndex) {\n if (allowEscape && currentIndex !== -1) {\n indexRef.current = listRef.current.length;\n } else {\n // Give time for virtualizers to update the listRef.\n forceSyncFocusRef.current = false;\n indexRef.current = maxIndex;\n }\n } else {\n indexRef.current = findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n });\n }\n } else {\n indexRef.current = Math.max(minIndex, findNonDisabledListIndex(listRef.current, {\n startingIndex: currentIndex,\n decrement: true,\n disabledIndices\n }));\n }\n if (isIndexOutOfListBounds(listRef.current, indexRef.current)) {\n indexRef.current = -1;\n }\n onNavigate(event);\n }\n });\n const item = React.useMemo(() => {\n const itemProps = {\n onFocus(event) {\n forceSyncFocusRef.current = true;\n syncCurrentTarget(event);\n },\n onClick: ({\n currentTarget\n }) => currentTarget.focus({\n preventScroll: true\n }),\n // Safari\n onMouseMove(event) {\n if (isStationaryWebKitPointer(event)) {\n return;\n }\n forceSyncFocusRef.current = true;\n forceScrollIntoViewRef.current = false;\n if (focusItemOnHover) {\n syncCurrentTarget(event);\n }\n },\n onPointerLeave(event) {\n if (!latestOpenRef.current || !isPointerModalityRef.current || event.pointerType === 'touch') {\n return;\n }\n forceSyncFocusRef.current = true;\n const relatedTarget = event.relatedTarget;\n if (!focusItemOnHover || listRef.current.includes(relatedTarget)) {\n return;\n }\n if (!resetOnPointerLeaveRef.current) {\n return;\n }\n cancelQueuedFocusRef.current?.();\n cancelQueuedFocusRef.current = null;\n indexRef.current = -1;\n onNavigate(event);\n if (!virtual) {\n const floatingFocusEl = floatingFocusElementRef.current;\n const activeEl = activeElement(ownerDocument(floatingFocusEl));\n if (floatingFocusEl && contains(floatingFocusEl, activeEl)) {\n floatingFocusEl.focus({\n preventScroll: true\n });\n }\n }\n }\n };\n return itemProps;\n }, [syncCurrentTarget, latestOpenRef, floatingFocusElementRef, focusItemOnHover, listRef, onNavigate, resetOnPointerLeaveRef, virtual]);\n const ariaActiveDescendantProp = React.useMemo(() => {\n return virtual && open && hasActiveIndex && {\n 'aria-activedescendant': `${id}-${activeIndex}`\n };\n }, [virtual, open, hasActiveIndex, id, activeIndex]);\n const floating = React.useMemo(() => {\n return {\n 'aria-orientation': orientation === 'both' ? undefined : orientation,\n ...(!typeableComboboxReference ? ariaActiveDescendantProp : {}),\n onKeyDown(event) {\n // Close submenu on Shift+Tab\n if (event.key === 'Tab' && event.shiftKey && open && !virtual) {\n // If the event originated from within a nested element (e.g., a Dialog opened from\n // within the menu), don't close the menu. The nested element has its own focus\n // management and should handle the Tab key.\n const target = getTarget(event.nativeEvent);\n if (target && !contains(floatingFocusElementRef.current, target)) {\n return;\n }\n stopEvent(event);\n store.setOpen(false, createChangeEventDetails(REASONS.focusOut, event.nativeEvent));\n if (isHTMLElement(domReferenceElement)) {\n domReferenceElement.focus();\n }\n return;\n }\n commonOnKeyDown(event);\n },\n onPointerMove(event) {\n if (isStationaryWebKitPointer(event)) {\n return;\n }\n isPointerModalityRef.current = true;\n }\n };\n }, [ariaActiveDescendantProp, commonOnKeyDown, floatingFocusElementRef, orientation, typeableComboboxReference, store, open, virtual, domReferenceElement]);\n const trigger = React.useMemo(() => {\n function openOnNavigationKeyDown(event) {\n store.setOpen(true, createChangeEventDetails(REASONS.listNavigation, event.nativeEvent, event.currentTarget));\n }\n function checkVirtualMouse(event) {\n if (focusItemOnOpen === 'auto' && isVirtualClick(event.nativeEvent)) {\n focusItemOnOpenRef.current = !virtual;\n }\n }\n function checkVirtualPointer(event) {\n // `pointerdown` fires first, reset the state then perform the checks.\n focusItemOnOpenRef.current = focusItemOnOpen;\n if (focusItemOnOpen === 'auto' && isVirtualPointerEvent(event.nativeEvent)) {\n focusItemOnOpenRef.current = true;\n }\n }\n return {\n onKeyDown(event) {\n // non-reactive open state (to prevent re-creation of the handler)\n const currentOpen = store.select('open');\n isPointerModalityRef.current = false;\n const isArrowKey = event.key.startsWith('Arrow');\n const isParentCrossOpenKey = isCrossOrientationOpenKey(event.key, getParentOrientation(), rtl);\n const isMainKey = isMainOrientationKey(event.key, orientation);\n const isNavigationKey = (nested ? isParentCrossOpenKey : isMainKey) || event.key === 'Enter' || event.key.trim() === '';\n if (virtual && currentOpen) {\n return commonOnKeyDown(event);\n }\n\n // If a floating element should not open on arrow key down, avoid\n // setting `activeIndex` while it's closed.\n if (!currentOpen && !openOnArrowKeyDown && isArrowKey) {\n return undefined;\n }\n if (isNavigationKey) {\n const isParentMainKey = isMainOrientationKey(event.key, getParentOrientation());\n keyRef.current = nested && isParentMainKey ? null : event.key;\n }\n if (nested) {\n if (isParentCrossOpenKey) {\n stopEvent(event);\n if (currentOpen) {\n indexRef.current = getMinEnabledIndex();\n onNavigate(event);\n } else {\n openOnNavigationKeyDown(event);\n }\n }\n return undefined;\n }\n if (isMainKey) {\n if (selectedIndexRef.current != null) {\n indexRef.current = selectedIndexRef.current;\n }\n stopEvent(event);\n if (!currentOpen && openOnArrowKeyDown) {\n openOnNavigationKeyDown(event);\n } else {\n commonOnKeyDown(event);\n }\n if (currentOpen) {\n onNavigate(event);\n }\n }\n return undefined;\n },\n onFocus(event) {\n if (store.select('open') && !virtual) {\n indexRef.current = -1;\n onNavigate(event);\n }\n },\n onPointerDown: checkVirtualPointer,\n onPointerEnter: checkVirtualPointer,\n onMouseDown: checkVirtualMouse,\n onClick: checkVirtualMouse\n };\n }, [commonOnKeyDown, focusItemOnOpen, getMinEnabledIndex, nested, onNavigate, store, openOnArrowKeyDown, orientation, getParentOrientation, rtl, selectedIndexRef, virtual]);\n const reference = React.useMemo(() => {\n return {\n ...ariaActiveDescendantProp,\n ...trigger\n };\n }, [ariaActiveDescendantProp, trigger]);\n return React.useMemo(() => enabled ? {\n reference,\n floating,\n item,\n trigger\n } : {}, [enabled, reference, floating, trigger, item]);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { EMPTY_ARRAY } from '@base-ui/utils/empty';\nimport { isElementVisible, isListIndexDisabled } from \"../utils/composite.mjs\";\nimport { contains } from \"../utils/element.mjs\";\nimport { stopEvent } from \"../utils/event.mjs\";\n/**\n * Provides a matching callback that can be used to focus an item as the user\n * types, often used in tandem with `useListNavigation()`.\n * @see https://floating-ui.com/docs/useTypeahead\n */\nexport function useTypeahead(context, props) {\n const {\n listRef,\n elementsRef,\n activeIndex,\n onMatch: onMatchProp,\n disabledIndices,\n onTyping,\n enabled = true,\n resetMs = 750,\n selectedIndex = null\n } = props;\n const store = 'rootStore' in context ? context.rootStore : context;\n const open = store.useState('open');\n const timeout = useTimeout();\n const stringRef = React.useRef('');\n const prevIndexRef = React.useRef(selectedIndex ?? activeIndex ?? -1);\n const matchIndexRef = React.useRef(null);\n const onKeyDown = useStableCallback(event => {\n function getElement(index) {\n return elementsRef?.current[index];\n }\n function isItemAvailable(index) {\n const element = getElement(index);\n if (element && !isElementVisible(element) || element?.matches(':disabled')) {\n return false;\n }\n // Visibility and native disabled state are handled above; pass an empty\n // element list so `isListIndexDisabled` resolves only the explicit\n // `disabledIndices` (array/predicate) and skips its own fallbacks.\n // Consumers that don't pass `disabledIndices` keep matching every visible\n // item except native disabled elements provided through `elementsRef`.\n return disabledIndices == null || !isListIndexDisabled(EMPTY_ARRAY, index, disabledIndices);\n }\n function getMatchingIndex(list, string, startIndex = 0) {\n if (list.length === 0) {\n return -1;\n }\n const normalizedStartIndex = (startIndex % list.length + list.length) % list.length;\n const lowerString = string.toLowerCase();\n for (let offset = 0; offset < list.length; offset += 1) {\n const index = (normalizedStartIndex + offset) % list.length;\n const text = list[index];\n if (!text?.toLowerCase().startsWith(lowerString) || !isItemAvailable(index)) {\n continue;\n }\n return index;\n }\n return -1;\n }\n const listContent = listRef.current;\n if (stringRef.current.length > 0 && event.key === ' ') {\n // Space should continue the in-progress typeahead session.\n stopEvent(event);\n onTyping?.(true);\n }\n if (stringRef.current.length > 0 && stringRef.current[0] !== ' ') {\n if (getMatchingIndex(listContent, stringRef.current) === -1 && event.key !== ' ') {\n onTyping?.(false);\n }\n }\n if (listContent == null ||\n // Character key.\n event.key.length !== 1 ||\n // Modifier key.\n event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n if (open && event.key !== ' ') {\n stopEvent(event);\n onTyping?.(true);\n }\n\n // Capture whether this is a new typing session before mutating the string.\n const isNewSession = stringRef.current === '';\n if (isNewSession) {\n prevIndexRef.current = selectedIndex ?? activeIndex ?? -1;\n }\n\n // Bail out if the list contains a word like \"llama\" or \"aaron\". TODO:\n // allow it in this case, too. Unavailable items are skipped while matching, so\n // they must be ignored here as well — otherwise a hidden or disabled double-letter\n // label would block rapid cycling through the available items.\n const allowRapidSuccessionOfFirstLetter = listContent.every((text, index) => text && isItemAvailable(index) ? text[0]?.toLowerCase() !== text[1]?.toLowerCase() : true);\n\n // Allows the user to cycle through items that start with the same letter\n // in rapid succession.\n if (allowRapidSuccessionOfFirstLetter && stringRef.current === event.key) {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n }\n stringRef.current += event.key;\n timeout.start(resetMs, () => {\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n onTyping?.(false);\n });\n\n // Compute the starting index for this search.\n // If this is a new typing session (string is empty), base it on the current\n // selection/active item; otherwise continue from the last matched index.\n const prevIndex = isNewSession ? selectedIndex ?? activeIndex ?? -1 : prevIndexRef.current;\n const startIndex = (prevIndex ?? 0) + 1;\n const index = getMatchingIndex(listContent, stringRef.current, startIndex);\n if (index !== -1) {\n onMatchProp?.(index);\n matchIndexRef.current = index;\n } else if (event.key !== ' ') {\n stringRef.current = '';\n onTyping?.(false);\n }\n });\n const onBlur = useStableCallback(event => {\n const next = event.relatedTarget;\n const currentDomReferenceElement = store.select('domReferenceElement');\n const currentFloatingElement = store.select('floatingElement');\n const withinComposite = contains(currentDomReferenceElement, next) || contains(currentFloatingElement, next);\n\n // Keep the session if focus moves within the composite (reference <-> floating).\n if (withinComposite) {\n return;\n }\n\n // End the current typing session when focus leaves the composite entirely.\n timeout.clear();\n stringRef.current = '';\n prevIndexRef.current = matchIndexRef.current;\n onTyping?.(false);\n });\n useIsoLayoutEffect(() => {\n if (!open && selectedIndex !== null) {\n return;\n }\n timeout.clear();\n matchIndexRef.current = null;\n if (stringRef.current !== '') {\n stringRef.current = '';\n }\n }, [open, selectedIndex, timeout]);\n const sharedProps = React.useMemo(() => ({\n onKeyDown,\n onBlur\n }), [onKeyDown, onBlur]);\n return React.useMemo(() => enabled ? {\n reference: sharedProps,\n floating: sharedProps\n } : {}, [enabled, sharedProps]);\n}","import { isElement } from '@floating-ui/utils/dom';\nimport { Timeout } from '@base-ui/utils/useTimeout';\nimport { contains, getTarget } from \"./utils/element.mjs\";\nimport { getNodeChildren } from \"./utils/nodes.mjs\";\n\n/* eslint-disable no-nested-ternary */\n\nconst CURSOR_SPEED_THRESHOLD = 0.1;\nconst CURSOR_SPEED_THRESHOLD_SQUARED = CURSOR_SPEED_THRESHOLD * CURSOR_SPEED_THRESHOLD;\nconst POLYGON_BUFFER = 0.5;\nfunction hasIntersectingEdge(pointX, pointY, xi, yi, xj, yj) {\n return yi >= pointY !== yj >= pointY && pointX <= (xj - xi) * (pointY - yi) / (yj - yi) + xi;\n}\nfunction isPointInQuadrilateral(pointX, pointY, x1, y1, x2, y2, x3, y3, x4, y4) {\n let isInsideValue = false;\n if (hasIntersectingEdge(pointX, pointY, x1, y1, x2, y2)) {\n isInsideValue = !isInsideValue;\n }\n if (hasIntersectingEdge(pointX, pointY, x2, y2, x3, y3)) {\n isInsideValue = !isInsideValue;\n }\n if (hasIntersectingEdge(pointX, pointY, x3, y3, x4, y4)) {\n isInsideValue = !isInsideValue;\n }\n if (hasIntersectingEdge(pointX, pointY, x4, y4, x1, y1)) {\n isInsideValue = !isInsideValue;\n }\n return isInsideValue;\n}\nfunction isInsideRect(pointX, pointY, rect) {\n return pointX >= rect.x && pointX <= rect.x + rect.width && pointY >= rect.y && pointY <= rect.y + rect.height;\n}\nfunction isInsideAxisAlignedRect(pointX, pointY, x1, y1, x2, y2) {\n const minX = Math.min(x1, x2);\n const maxX = Math.max(x1, x2);\n const minY = Math.min(y1, y2);\n const maxY = Math.max(y1, y2);\n return pointX >= minX && pointX <= maxX && pointY >= minY && pointY <= maxY;\n}\n/**\n * Generates a safe polygon area that the user can traverse without closing the\n * floating element once leaving the reference element.\n * @see https://floating-ui.com/docs/useHover#safepolygon\n */\nexport function safePolygon(options = {}) {\n const {\n blockPointerEvents = false\n } = options;\n const timeout = new Timeout();\n const fn = ({\n x,\n y,\n placement,\n elements,\n onClose,\n nodeId,\n tree\n }) => {\n const side = placement?.split('-')[0];\n let hasLanded = false;\n let lastX = null;\n let lastY = null;\n let lastCursorTime = typeof performance !== 'undefined' ? performance.now() : 0;\n function isCursorMovingSlowly(nextX, nextY) {\n const currentTime = performance.now();\n const elapsedTime = currentTime - lastCursorTime;\n if (lastX === null || lastY === null || elapsedTime === 0) {\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n return false;\n }\n const deltaX = nextX - lastX;\n const deltaY = nextY - lastY;\n const distanceSquared = deltaX * deltaX + deltaY * deltaY;\n const thresholdSquared = elapsedTime * elapsedTime * CURSOR_SPEED_THRESHOLD_SQUARED;\n lastX = nextX;\n lastY = nextY;\n lastCursorTime = currentTime;\n return distanceSquared < thresholdSquared;\n }\n function close() {\n timeout.clear();\n onClose();\n }\n return function onMouseMove(event) {\n timeout.clear();\n const domReference = elements.domReference;\n const floating = elements.floating;\n if (!domReference || !floating || side == null || x == null || y == null) {\n return undefined;\n }\n const {\n clientX,\n clientY\n } = event;\n const target = getTarget(event);\n const isLeave = event.type === 'mouseleave';\n const isOverFloatingEl = contains(floating, target);\n const isOverReferenceEl = contains(domReference, target);\n if (isOverFloatingEl) {\n hasLanded = true;\n if (!isLeave) {\n return undefined;\n }\n }\n if (isOverReferenceEl) {\n hasLanded = false;\n if (!isLeave) {\n hasLanded = true;\n return undefined;\n }\n }\n\n // Prevent overlapping floating element from being stuck in an open-close\n // loop: https://github.com/floating-ui/floating-ui/issues/1910\n if (isLeave && isElement(event.relatedTarget) && contains(floating, event.relatedTarget)) {\n return undefined;\n }\n function hasOpenChildNode() {\n return Boolean(tree && getNodeChildren(tree.nodesRef.current, nodeId).length > 0);\n }\n function closeIfNoOpenChild() {\n if (!hasOpenChildNode()) {\n close();\n }\n }\n\n // If any nested child is open, abort.\n if (hasOpenChildNode()) {\n return undefined;\n }\n const refRect = domReference.getBoundingClientRect();\n const rect = floating.getBoundingClientRect();\n const cursorLeaveFromRight = x > rect.right - rect.width / 2;\n const cursorLeaveFromBottom = y > rect.bottom - rect.height / 2;\n const isFloatingWider = rect.width > refRect.width;\n const isFloatingTaller = rect.height > refRect.height;\n const left = (isFloatingWider ? refRect : rect).left;\n const right = (isFloatingWider ? refRect : rect).right;\n const top = (isFloatingTaller ? refRect : rect).top;\n const bottom = (isFloatingTaller ? refRect : rect).bottom;\n\n // If the pointer is leaving from the opposite side, the \"buffer\" logic\n // creates a point where the floating element remains open, but should be\n // ignored.\n // A constant of 1 handles floating point rounding errors.\n if (side === 'top' && y >= refRect.bottom - 1 || side === 'bottom' && y <= refRect.top + 1 || side === 'left' && x >= refRect.right - 1 || side === 'right' && x <= refRect.left + 1) {\n closeIfNoOpenChild();\n return undefined;\n }\n\n // Ignore when the cursor is within the rectangular trough between the\n // two elements. Since the triangle is created from the cursor point,\n // which can start beyond the ref element's edge, traversing back and\n // forth from the ref to the floating element can cause it to close. This\n // ensures it always remains open in that case.\n let isInsideTroughRect = false;\n switch (side) {\n case 'top':\n isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, refRect.top + 1, right, rect.bottom - 1);\n break;\n case 'bottom':\n isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, left, rect.top + 1, right, refRect.bottom - 1);\n break;\n case 'left':\n isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, rect.right - 1, bottom, refRect.left + 1, top);\n break;\n case 'right':\n isInsideTroughRect = isInsideAxisAlignedRect(clientX, clientY, refRect.right - 1, bottom, rect.left + 1, top);\n break;\n default:\n }\n if (isInsideTroughRect) {\n return undefined;\n }\n if (hasLanded && !isInsideRect(clientX, clientY, refRect)) {\n closeIfNoOpenChild();\n return undefined;\n }\n if (!isLeave && isCursorMovingSlowly(clientX, clientY)) {\n closeIfNoOpenChild();\n return undefined;\n }\n let isInsidePolygon = false;\n switch (side) {\n case 'top':\n {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;\n const cursorPointY = y + POLYGON_BUFFER + 1;\n const commonYLeft = cursorLeaveFromRight ? rect.bottom - POLYGON_BUFFER : isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top;\n const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.bottom - POLYGON_BUFFER : rect.top : rect.bottom - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);\n break;\n }\n case 'bottom':\n {\n const cursorXOffset = isFloatingWider ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneX = isFloatingWider ? x + cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;\n const cursorPointTwoX = isFloatingWider ? x - cursorXOffset : cursorLeaveFromRight ? x + cursorXOffset : x - cursorXOffset;\n const cursorPointY = y - POLYGON_BUFFER;\n const commonYLeft = cursorLeaveFromRight ? rect.top + POLYGON_BUFFER : isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom;\n const commonYRight = cursorLeaveFromRight ? isFloatingWider ? rect.top + POLYGON_BUFFER : rect.bottom : rect.top + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointOneX, cursorPointY, cursorPointTwoX, cursorPointY, rect.left, commonYLeft, rect.right, commonYRight);\n break;\n }\n case 'left':\n {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;\n const cursorPointX = x + POLYGON_BUFFER + 1;\n const commonXTop = cursorLeaveFromBottom ? rect.right - POLYGON_BUFFER : isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left;\n const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.right - POLYGON_BUFFER : rect.left : rect.right - POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(clientX, clientY, commonXTop, rect.top, commonXBottom, rect.bottom, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY);\n break;\n }\n case 'right':\n {\n const cursorYOffset = isFloatingTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;\n const cursorPointOneY = isFloatingTaller ? y + cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;\n const cursorPointTwoY = isFloatingTaller ? y - cursorYOffset : cursorLeaveFromBottom ? y + cursorYOffset : y - cursorYOffset;\n const cursorPointX = x - POLYGON_BUFFER;\n const commonXTop = cursorLeaveFromBottom ? rect.left + POLYGON_BUFFER : isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right;\n const commonXBottom = cursorLeaveFromBottom ? isFloatingTaller ? rect.left + POLYGON_BUFFER : rect.right : rect.left + POLYGON_BUFFER;\n isInsidePolygon = isPointInQuadrilateral(clientX, clientY, cursorPointX, cursorPointOneY, cursorPointX, cursorPointTwoY, commonXTop, rect.top, commonXBottom, rect.bottom);\n break;\n }\n default:\n }\n if (!isInsidePolygon) {\n closeIfNoOpenChild();\n } else if (!hasLanded) {\n timeout.start(40, closeIfNoOpenChild);\n }\n return undefined;\n };\n };\n\n // eslint-disable-next-line no-underscore-dangle\n fn.__options = {\n ...options,\n blockPointerEvents\n };\n return fn;\n}","/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M20 6 9 17l-5-5\", key: \"1gmf2c\" }]];\nconst Check = createLucideIcon(\"check\", __iconNode);\n\nexport { __iconNode, Check as default };\n//# sourceMappingURL=check.mjs.map\n","/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.mjs.map\n","/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.mjs.map\n","/**\n * @license lucide-react v1.25.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { TRButton } from \"../button/button.js\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/icon-button/icon-button.tsx\nfunction TRIconButton({ \"aria-labelledby\": ariaLabelledBy, children, className, loading, ...props }) {\n\treturn /* @__PURE__ */ jsx(TRButton, {\n\t\t...props,\n\t\t...(!loading || props.loadingLabel === void 0) && ariaLabelledBy ? { \"aria-labelledby\": ariaLabelledBy } : {},\n\t\t...loading === void 0 ? {} : { loading },\n\t\tclassName: mergeComponentClassName(\"tr-icon-btn\", className),\n\t\tchildren: loading ? null : children\n\t});\n}\n//#endregion\nexport { TRIconButton };\n\n//# sourceMappingURL=icon-button.js.map","import { useSuspenseQuery } from '@tanstack/react-query';\nimport { useSearch } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\n\ntype Branding = {\n /**\n * The deployment's product name, or `undefined` when it has not configured\n * one. Deliberately not defaulted to any screen's copy: this is the page's\n * `h1` on every auth screen, so borrowing e.g. the sign-in title would put\n * \"Welcome back!\" at the top of the register and consent screens.\n */\n title: string | undefined;\n /** Supporting line under the title, if the deployment configured one. */\n subtitle: string | undefined;\n iconUrl: string | undefined;\n backgroundUrl: string | undefined;\n};\n\n/**\n * Resolves the deployment's branding for the active language.\n *\n * Every localized branding field falls back to the configured fallback\n * language before falling back to nothing, so a deployment that only\n * translated some languages still renders something sensible.\n *\n * The `?lang=` search param wins over the stored/detected language, matching\n * how the auth screens resolve their own localized config. Read loosely\n * because this runs from the layout, which is not tied to one route.\n */\nexport function useBranding(): Branding {\n const { i18n } = useTranslation();\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n const search = useSearch({ strict: false });\n\n const langParam = 'lang' in search ? search.lang : undefined;\n const language = typeof langParam === 'string' ? langParam : i18n.language;\n const fallback = config.i18n.fallback_language;\n\n const localized = (field: Record<string, string> | null | undefined) =>\n field?.[language] ?? field?.[fallback];\n\n return {\n title: localized(config.branding.title),\n subtitle: localized(config.branding.subtitle),\n iconUrl: config.branding.icon_url ?? undefined,\n backgroundUrl: config.branding.background_url ?? undefined,\n };\n}\n","import { TRToast } from '@tinyrack/ui/components/toast';\nimport { XIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\n/**\n * Transient, non-blocking confirmation that something succeeded.\n *\n * The rule for reaching for this instead of an inline `Alert`: **if dismissing\n * it loses information the user still needs, it is not a toast.** So this\n * carries \"we re-sent the email\", \"codes copied\" — and never a validation\n * error, a session-expiry countdown, or anything gating a decision. Those stay\n * inline next to the thing they describe, where a screen reader meets them in\n * document order.\n *\n * No `variant` is passed: `TRToast.Root` derives it from each toast's own\n * `type`, so hardcoding one here would render an error with the success\n * accent.\n */\nexport function Toaster() {\n const { t } = useTranslation();\n const { toasts } = TRToast.useToastManager();\n\n return (\n <TRToast.Portal>\n <TRToast.Viewport position=\"block-start-center\">\n {toasts.map((toast) => (\n <TRToast.Root key={toast.id} toast={toast}>\n <TRToast.Content>\n <TRToast.Title />\n <TRToast.Description />\n </TRToast.Content>\n <TRToast.Close aria-label={t('common.dismiss')}>\n <XIcon aria-hidden className=\"size-tinyrack-lg\" />\n </TRToast.Close>\n </TRToast.Root>\n ))}\n </TRToast.Viewport>\n </TRToast.Portal>\n );\n}\n","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const TooltipRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") TooltipRootContext.displayName = \"TooltipRootContext\";\nexport function useTooltipRootContext(optional) {\n const context = React.useContext(TooltipRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: TooltipRootContext is missing. Tooltip parts must be placed within <Tooltip.Root>.' : _formatErrorMessage(72));\n }\n return context;\n}","import { ReactStore } from '@base-ui/utils/store';\n/**\n * A `ReactStore` whose state never changes.\n *\n * Useful for fallback stores that need to support normal store reads while detached from the\n * component that owns real state. Context values may still contain mutable refs or maps.\n */\nexport class NullStore extends ReactStore {\n // `update`/`set`/`notifyAll` funnel through `setState` in the base `Store`, so overriding\n // `setState` alone would neutralize them today. They are overridden explicitly so the store stays\n // inert even if a future base-class change stops routing a mutator through `setState`.\n setState(_newState) {}\n update(_changes) {}\n set(_key, _value) {}\n notifyAll() {}\n}","import * as React from 'react';\nimport { ReactStore } from '@base-ui/utils/store';\nimport { NOOP } from '@base-ui/utils/empty';\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { NullStore } from \"../../utils/NullStore.mjs\";\nimport { applyPopupOpenChange, createPopupFloatingRootContext, createInitialPopupStoreState, popupStoreSelectors, PopupTriggerMap } from \"../../utils/popups/index.mjs\";\nconst selectors = {\n ...popupStoreSelectors,\n disabled: state => state.disabled,\n instantType: state => state.instantType,\n isInstantPhase: state => state.isInstantPhase,\n trackCursorAxis: state => state.trackCursorAxis,\n disableHoverablePopup: state => state.disableHoverablePopup,\n lastOpenChangeReason: state => state.openChangeReason,\n closeOnClick: state => state.closeOnClick,\n closeDelay: state => state.closeDelay,\n adaptiveOrigin: state => state.adaptiveOrigin\n};\n\n/**\n * The store view that detached handle-backed triggers read from. Both the real `TooltipStore` and\n * the inert fallback store satisfy it, so a trigger can read from whichever store the handle\n * currently exposes. Narrowed to the members a trigger actually uses — the trigger-data members plus\n * `setOpen`/`cancelPendingOpen` (called directly by the trigger) and `useSyncedValue` — so the\n * exposed surface can't bypass the open-change pipeline; on the detached fallback store every one of\n * these mutations is a no-op.\n */\n\nexport class TooltipStore extends ReactStore {\n constructor(initialState, floatingId, nested) {\n const triggerElements = new PopupTriggerMap();\n super(createInitialState(initialState, triggerElements, floatingId, nested), createInitialContext(triggerElements), selectors);\n }\n setOpen = (nextOpen, eventDetails) => {\n applyPopupOpenChange(this, nextOpen, eventDetails, {\n extraState: {\n openChangeReason: eventDetails.reason\n }\n });\n };\n\n // Used by trigger clicks to clear a delayed hover open without reporting a public open-state change.\n cancelPendingOpen(event) {\n this.state.floatingRootContext.dispatchOpenChange(false, createChangeEventDetails(REASONS.triggerPress, event));\n }\n}\n\n/**\n * Creates the inert fallback store used by detached handle-backed triggers while no `Tooltip.Root`\n * is attached. It preserves a tooltip-specific trigger registry in context so detached triggers can\n * register before migrating to the live root store. `setOpen`/`cancelPendingOpen` are no-ops\n * (matching the inert reads/writes of `NullStore`), so a trigger can call them from hover/click\n * handlers while detached without any effect.\n */\nexport function createNullTooltipStore() {\n const triggerElements = new PopupTriggerMap();\n const store = new NullStore(Object.freeze(createInitialState(undefined, triggerElements)), Object.freeze(createInitialContext(triggerElements)), selectors);\n return Object.assign(store, {\n setOpen: NOOP,\n cancelPendingOpen: NOOP\n });\n}\nfunction createInitialState(initialState, triggerElements, floatingId, nested = false) {\n const state = {\n ...createInitialPopupStoreState(),\n disabled: false,\n instantType: undefined,\n isInstantPhase: false,\n trackCursorAxis: 'none',\n disableHoverablePopup: false,\n openChangeReason: null,\n closeOnClick: true,\n closeDelay: 0,\n adaptiveOrigin: undefined,\n ...initialState\n };\n state.floatingRootContext = createPopupFloatingRootContext(triggerElements, floatingId, nested);\n return state;\n}\nfunction createInitialContext(triggerElements) {\n return {\n popupRef: /*#__PURE__*/React.createRef(),\n onOpenChange: undefined,\n onOpenChangeComplete: undefined,\n triggerElements\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { fastComponent } from '@base-ui/utils/fastHooks';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { TooltipRootContext } from \"./TooltipRootContext.mjs\";\nimport { useClientPoint, useDismiss } from \"../../floating-ui-react/index.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { PopupHandleAttachment, useImplicitActiveTrigger, usePopupRootStore, useOpenStateTransitions, usePopupInteractionProps } from \"../../utils/popups/index.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { TooltipStore } from \"../store/TooltipStore.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\n\n/**\n * Groups all parts of the tooltip.\n * Doesn't render its own HTML element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const TooltipRoot = fastComponent(function TooltipRoot(props) {\n const {\n disabled = false,\n defaultOpen = false,\n open: openProp,\n disableHoverablePopup = false,\n trackCursorAxis = 'none',\n actionsRef,\n onOpenChange,\n onOpenChangeComplete,\n handle,\n triggerId: triggerIdProp,\n defaultTriggerId: defaultTriggerIdProp = null,\n children\n } = props;\n const store = usePopupRootStore((floatingId, nested) => new TooltipStore({\n open: defaultOpen,\n openProp,\n activeTriggerId: defaultTriggerIdProp,\n triggerIdProp\n }, floatingId, nested));\n store.useControlledProp('openProp', openProp);\n store.useControlledProp('triggerIdProp', triggerIdProp);\n store.useContextCallback('onOpenChange', onOpenChange);\n store.useContextCallback('onOpenChangeComplete', onOpenChangeComplete);\n const openState = store.useState('open');\n const open = !disabled && openState;\n const activeTriggerId = store.useState('activeTriggerId');\n const mounted = store.useState('mounted');\n const payload = store.useState('payload');\n store.useSyncedValues({\n trackCursorAxis,\n disableHoverablePopup,\n disabled\n });\n useImplicitActiveTrigger(store, {\n closeOnActiveTriggerUnmount: true\n });\n const {\n forceUnmount,\n transitionStatus\n } = useOpenStateTransitions(open, store);\n const isInstantPhase = store.useState('isInstantPhase');\n const instantType = store.useState('instantType');\n const lastOpenChangeReason = store.useState('lastOpenChangeReason');\n\n // Animations should be instant in two cases:\n // 1) Opening during the provider's instant phase (adjacent tooltip opens instantly)\n // 2) Closing because another tooltip opened (reason === 'none')\n // Otherwise, allow the animation to play. In particular, do not disable animations\n // during the 'ending' phase unless it's due to a sibling opening.\n const previousInstantTypeRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (openState && disabled) {\n store.setOpen(false, createChangeEventDetails(REASONS.disabled));\n }\n }, [openState, disabled, store]);\n useIsoLayoutEffect(() => {\n if (transitionStatus === 'ending' && lastOpenChangeReason === REASONS.none || transitionStatus !== 'ending' && isInstantPhase) {\n // Capture the current instant type so we can restore it later\n // and set to 'delay' to disable animations while moving from one trigger to another\n // within a delay group.\n if (instantType !== 'delay') {\n previousInstantTypeRef.current = instantType;\n }\n store.set('instantType', 'delay');\n } else if (previousInstantTypeRef.current !== null) {\n store.set('instantType', previousInstantTypeRef.current);\n previousInstantTypeRef.current = null;\n }\n }, [transitionStatus, isInstantPhase, lastOpenChangeReason, instantType, store]);\n useIsoLayoutEffect(() => {\n if (open) {\n if (activeTriggerId == null) {\n store.set('payload', undefined);\n }\n }\n }, [store, activeTriggerId, open]);\n React.useImperativeHandle(actionsRef, () => ({\n unmount: forceUnmount,\n close: () => store.setOpen(false, createChangeEventDetails(REASONS.imperativeAction))\n }), [forceUnmount, store]);\n const shouldRenderInteractions = open || mounted || !disabled && trackCursorAxis !== 'none';\n return /*#__PURE__*/_jsxs(TooltipRootContext.Provider, {\n value: store,\n children: [handle && /*#__PURE__*/_jsx(PopupHandleAttachment, {\n handle: handle,\n store: store\n }), shouldRenderInteractions && /*#__PURE__*/_jsx(TooltipInteractions, {\n store: store,\n disabled: disabled,\n trackCursorAxis: trackCursorAxis\n }), typeof children === 'function' ? children({\n payload\n }) : children]\n });\n});\nif (process.env.NODE_ENV !== \"production\") TooltipRoot.displayName = \"TooltipRoot\";\nfunction TooltipInteractions({\n store,\n disabled,\n trackCursorAxis\n}) {\n const floatingRootContext = store.useState('floatingRootContext');\n const dismiss = useDismiss(floatingRootContext, {\n enabled: !disabled,\n referencePress: () => store.select('closeOnClick')\n });\n const clientPoint = useClientPoint(floatingRootContext, {\n enabled: !disabled && trackCursorAxis !== 'none',\n axis: trackCursorAxis === 'none' ? undefined : trackCursorAxis\n });\n\n // Both hooks return `trigger: reference` (same object identity), so the active and\n // inactive trigger props can never differ. `useClientPoint` has no floating-side props.\n const triggerProps = React.useMemo(() => mergeProps(clientPoint.reference, dismiss.reference), [clientPoint.reference, dismiss.reference]);\n usePopupInteractionProps(store, {\n activeTriggerProps: triggerProps,\n inactiveTriggerProps: triggerProps,\n popupProps: dismiss.floating ?? EMPTY_OBJECT\n });\n return null;\n}","'use client';\n\nimport { useId } from '@base-ui/utils/useId';\n\n/**\n * Wraps `useId` and prefixes generated `id`s with `base-ui-`\n * @param {string | undefined} idOverride overrides the generated id when provided\n * @returns {string | undefined}\n */\nexport function useBaseUiId(idOverride) {\n return useId(idOverride, 'base-ui');\n}","'use client';\n\nimport * as React from 'react';\n\n/**\n * Holds the provider's `delay` value. `closeDelay` is handled by the delay group.\n */\nexport const TooltipProviderContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") TooltipProviderContext.displayName = \"TooltipProviderContext\";\nexport function useTooltipProviderContext() {\n return React.useContext(TooltipProviderContext);\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { fastComponentRef } from '@base-ui/utils/fastHooks';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { usePopupHandleStore, useTriggerDataForwarding } from \"../../utils/popups/index.mjs\";\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useTooltipProviderContext } from \"../provider/TooltipProviderContext.mjs\";\nimport { safePolygon, useDelayGroup, useFocus, useHoverReferenceInteraction } from \"../../floating-ui-react/index.mjs\";\nimport { contains } from \"../../floating-ui-react/utils/element.mjs\";\nimport { isMouseLikePointerType } from \"../../floating-ui-react/utils/event.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useHoverInteractionSharedState } from \"../../floating-ui-react/hooks/useHoverInteractionSharedState.mjs\";\nimport { getDelay } from \"../../floating-ui-react/hooks/useHoverShared.mjs\";\nimport { OPEN_DELAY } from \"../utils/constants.mjs\";\nconst TOOLTIP_TRIGGER_IDENTIFIER = 'data-base-ui-tooltip-trigger';\nfunction getTargetElement(event) {\n if ('composedPath' in event) {\n const path = event.composedPath();\n for (let i = 0; i < path.length; i += 1) {\n const element = path[i];\n if (isElement(element)) {\n return element;\n }\n }\n }\n const target = event.target;\n if (isElement(target)) {\n return target;\n }\n return null;\n}\nfunction closestEnabledTooltipTrigger(element) {\n let current = element;\n while (current) {\n const trigger = current.closest(`[${TOOLTIP_TRIGGER_IDENTIFIER}]`);\n if (trigger) {\n return trigger;\n }\n const root = current.getRootNode();\n current = 'host' in root && isElement(root.host) ? root.host : null;\n }\n return null;\n}\n\n/**\n * An element to attach the tooltip to.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nexport const TooltipTrigger = fastComponentRef(function TooltipTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n handle,\n payload,\n disabled: disabledProp,\n delay,\n closeOnClick = true,\n closeDelay,\n id: idProp,\n ...elementProps\n } = componentProps;\n const rootContext = useTooltipRootContext(true);\n const handleStore = usePopupHandleStore(handle);\n const store = handleStore ?? rootContext;\n if (!store) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Tooltip.Trigger> must be either used within a <Tooltip.Root> component or provided with a handle.' : _formatErrorMessage(82));\n }\n const thisTriggerId = useBaseUiId(idProp);\n const isTriggerActive = store.useState('isTriggerActive', thisTriggerId);\n const isOpenedByThisTrigger = store.useState('isOpenedByTrigger', thisTriggerId);\n const floatingRootContext = store.useState('floatingRootContext');\n const triggerElementRef = React.useRef(null);\n const delayWithDefault = delay ?? OPEN_DELAY;\n const closeDelayWithDefault = closeDelay ?? 0;\n const {\n registerTrigger,\n isMountedByThisTrigger\n } = useTriggerDataForwarding(thisTriggerId, triggerElementRef, store, {\n payload,\n closeOnClick,\n closeDelay: closeDelayWithDefault\n });\n const providerDelay = useTooltipProviderContext();\n const {\n delayRef,\n isInstantPhase,\n hasProvider\n } = useDelayGroup(floatingRootContext, {\n open: isOpenedByThisTrigger\n });\n const hoverInteraction = useHoverInteractionSharedState(floatingRootContext);\n store.useSyncedValue('isInstantPhase', isInstantPhase);\n const rootDisabled = store.useState('disabled');\n const disabled = disabledProp ?? rootDisabled;\n const disabledRef = useValueAsRef(disabled);\n const trackCursorAxis = store.useState('trackCursorAxis');\n const disableHoverablePopup = store.useState('disableHoverablePopup');\n const isNestedTriggerHoveredRef = React.useRef(false);\n const nestedTriggerOpenTimeout = useTimeout();\n // Local copy so it can be cleared on mouseLeave without resetting the hover hook's own pointerType.\n const pointerTypeRef = React.useRef(undefined);\n function getOpenDelay() {\n if (!hasProvider) {\n return delayWithDefault;\n }\n return getDelay(delayRef.current, 'open') === 0 ? 0 : delay ?? providerDelay ?? OPEN_DELAY;\n }\n function isEnabledNestedTriggerTarget(target) {\n const triggerEl = triggerElementRef.current;\n if (!triggerEl || !target) {\n return false;\n }\n const nearestTrigger = closestEnabledTooltipTrigger(target);\n return nearestTrigger !== null && nearestTrigger !== triggerEl && contains(triggerEl, nearestTrigger);\n }\n function detectNestedTriggerHover(target) {\n const nestedTriggerHovered = isEnabledNestedTriggerTarget(target);\n isNestedTriggerHoveredRef.current = nestedTriggerHovered;\n if (nestedTriggerHovered) {\n hoverInteraction.openChangeTimeout.clear();\n hoverInteraction.restTimeout.clear();\n hoverInteraction.restTimeoutPending = false;\n nestedTriggerOpenTimeout.clear();\n }\n return nestedTriggerHovered;\n }\n const hoverProps = useHoverReferenceInteraction(floatingRootContext, {\n enabled: !disabled,\n mouseOnly: true,\n move: false,\n handleClose: !disableHoverablePopup && trackCursorAxis !== 'both' ? safePolygon() : null,\n restMs: getOpenDelay,\n delay() {\n if (closeDelay == null && hasProvider) {\n return {\n close: getDelay(delayRef.current, 'close')\n };\n }\n return {\n close: closeDelayWithDefault\n };\n },\n triggerElementRef,\n isActiveTrigger: isTriggerActive,\n isClosing: () => store.select('transitionStatus') === 'ending',\n shouldOpen() {\n return !isNestedTriggerHoveredRef.current;\n }\n });\n const focusProps = useFocus(floatingRootContext, {\n enabled: !disabled\n }).reference;\n const handleNestedTriggerHover = event => {\n const wasNestedTriggerHovered = isNestedTriggerHoveredRef.current;\n const target = getTargetElement(event);\n const nestedTriggerHovered = detectNestedTriggerHover(target);\n const triggerEl = triggerElementRef.current;\n const targetInsideTrigger = triggerEl && target && contains(triggerEl, target);\n\n // Only close hover-opened parents. Focus/click-like opens remain owned by\n // their original interaction and should not be clobbered by nested hover.\n if (nestedTriggerHovered && store.select('open') && store.select('lastOpenChangeReason') === REASONS.triggerHover) {\n store.setOpen(false, createChangeEventDetails(REASONS.triggerHover, event));\n return;\n }\n if (wasNestedTriggerHovered && !nestedTriggerHovered && targetInsideTrigger && !disabledRef.current && !store.select('open') && triggerEl &&\n // Match the hover hook's non-strict mouse fallback for mouse-only event sequences.\n isMouseLikePointerType(pointerTypeRef.current)) {\n const open = () => {\n if (!isNestedTriggerHoveredRef.current && !disabledRef.current && !store.select('open')) {\n store.setOpen(true, createChangeEventDetails(REASONS.triggerHover, event, triggerEl));\n }\n };\n const openDelay = getOpenDelay();\n\n // With `move: false`, the hover hook only listens to mouseenter/mouseleave\n // on the parent trigger. Leaving a nested child for the parent area fires\n // no event the hook can react to, so reopen locally.\n if (openDelay === 0) {\n nestedTriggerOpenTimeout.clear();\n open();\n } else {\n nestedTriggerOpenTimeout.start(openDelay, open);\n }\n }\n };\n const rootTriggerProps = store.useState('triggerProps', isMountedByThisTrigger);\n const shouldApplyRootTriggerProps = isMountedByThisTrigger || trackCursorAxis !== 'none';\n const state = {\n open: isOpenedByThisTrigger\n };\n const element = useRenderElement('button', componentProps, {\n state,\n ref: [forwardedRef, registerTrigger, triggerElementRef],\n props: [hoverProps, focusProps, shouldApplyRootTriggerProps ? rootTriggerProps : undefined, {\n onMouseOver(event) {\n handleNestedTriggerHover(event.nativeEvent);\n },\n onFocus(event) {\n if (isEnabledNestedTriggerTarget(getTargetElement(event.nativeEvent))) {\n event.preventBaseUIHandler();\n }\n },\n onMouseLeave() {\n isNestedTriggerHoveredRef.current = false;\n nestedTriggerOpenTimeout.clear();\n pointerTypeRef.current = undefined;\n },\n onPointerEnter(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n store.set('closeOnClick', closeOnClick);\n if (closeOnClick && !store.select('open')) {\n store.cancelPendingOpen(event.nativeEvent);\n }\n },\n onClick(event) {\n if (closeOnClick && !store.select('open')) {\n store.cancelPendingOpen(event.nativeEvent);\n }\n },\n id: thisTriggerId,\n 'data-trigger-disabled': disabled ? '' : undefined,\n [TOOLTIP_TRIGGER_IDENTIFIER]: disabled ? undefined : ''\n }, elementProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") TooltipTrigger.displayName = \"TooltipTrigger\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const TooltipPortalContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") TooltipPortalContext.displayName = \"TooltipPortalContext\";\nexport function useTooltipPortalContext() {\n const value = React.useContext(TooltipPortalContext);\n if (value === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: <Tooltip.Portal> is missing.' : _formatErrorMessage(70));\n }\n return value;\n}","'use client';\n\nimport * as React from 'react';\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\nimport { TooltipPortalContext } from \"./TooltipPortalContext.mjs\";\nimport { FloatingPortalLite } from \"../../utils/FloatingPortalLite.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nexport const TooltipPortal = /*#__PURE__*/React.forwardRef(function TooltipPortal(props, forwardedRef) {\n const {\n keepMounted = false,\n ...portalProps\n } = props;\n const store = useTooltipRootContext();\n const mounted = store.useState('mounted');\n const shouldRender = mounted || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(TooltipPortalContext.Provider, {\n value: keepMounted,\n children: /*#__PURE__*/_jsx(FloatingPortalLite, {\n ref: forwardedRef,\n ...portalProps\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") TooltipPortal.displayName = \"TooltipPortal\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const TooltipPositionerContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") TooltipPositionerContext.displayName = \"TooltipPositionerContext\";\nexport function useTooltipPositionerContext() {\n const context = React.useContext(TooltipPositionerContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: TooltipPositionerContext is missing. TooltipPositioner parts must be placed within <Tooltip.Positioner>.' : _formatErrorMessage(71));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\nimport { TooltipPositionerContext } from \"./TooltipPositionerContext.mjs\";\nimport { useAnchorPositioning } from \"../../internals/useAnchorPositioning.mjs\";\nimport { useTooltipPortalContext } from \"../portal/TooltipPortalContext.mjs\";\nimport { POPUP_COLLISION_AVOIDANCE } from \"../../internals/constants.mjs\";\nimport { usePositioner } from \"../../utils/usePositioner.mjs\";\n\n/**\n * Positions the tooltip against the trigger.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const TooltipPositioner = /*#__PURE__*/React.forwardRef(function TooltipPositioner(componentProps, forwardedRef) {\n const {\n render,\n className,\n anchor,\n positionMethod = 'absolute',\n side = 'top',\n align = 'center',\n sideOffset = 0,\n alignOffset = 0,\n collisionBoundary = 'clipping-ancestors',\n collisionPadding = 5,\n arrowPadding = 5,\n sticky = false,\n disableAnchorTracking = false,\n collisionAvoidance = POPUP_COLLISION_AVOIDANCE,\n style,\n ...elementProps\n } = componentProps;\n const store = useTooltipRootContext();\n const keepMounted = useTooltipPortalContext();\n const open = store.useState('open');\n const mounted = store.useState('mounted');\n const trackCursorAxis = store.useState('trackCursorAxis');\n const disableHoverablePopup = store.useState('disableHoverablePopup');\n const floatingRootContext = store.useState('floatingRootContext');\n const instantType = store.useState('instantType');\n const transitionStatus = store.useState('transitionStatus');\n const adaptiveOrigin = store.useState('adaptiveOrigin');\n const positioning = useAnchorPositioning({\n anchor,\n positionMethod,\n floatingRootContext,\n mounted,\n side,\n sideOffset,\n align,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n keepMounted,\n collisionAvoidance,\n adaptiveOrigin\n });\n const state = React.useMemo(() => ({\n open,\n side: positioning.side,\n align: positioning.align,\n anchorHidden: positioning.anchorHidden,\n instant: trackCursorAxis !== 'none' ? 'tracking-cursor' : instantType\n }), [open, positioning.side, positioning.align, positioning.anchorHidden, trackCursorAxis, instantType]);\n const element = usePositioner(componentProps, state, {\n styles: positioning.positionerStyles,\n transitionStatus,\n props: elementProps,\n refs: [forwardedRef, store.useStateSetter('positionerElement')],\n hidden: !mounted,\n inert: !open || trackCursorAxis === 'both' || disableHoverablePopup\n });\n return /*#__PURE__*/_jsx(TooltipPositionerContext.Provider, {\n value: positioning,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") TooltipPositioner.displayName = \"TooltipPositioner\";","'use client';\n\nimport * as React from 'react';\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\nimport { useTooltipPositionerContext } from \"../positioner/TooltipPositionerContext.mjs\";\nimport { popupTransitionStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { getDisabledMountTransitionStyles } from \"../../internals/getDisabledMountTransitionStyles.mjs\";\nimport { useHoverFloatingInteraction } from \"../../floating-ui-react/index.mjs\";\nimport { FOCUSABLE_POPUP_PROPS } from \"../../utils/popups/index.mjs\";\n\n/**\n * A container for the tooltip contents.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nexport const TooltipPopup = /*#__PURE__*/React.forwardRef(function TooltipPopup(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const store = useTooltipRootContext();\n const {\n side,\n align\n } = useTooltipPositionerContext();\n const open = store.useState('open');\n const instantType = store.useState('instantType');\n const transitionStatus = store.useState('transitionStatus');\n const popupProps = store.useState('popupProps');\n const floatingContext = store.useState('floatingRootContext');\n const disabled = store.useState('disabled');\n const closeDelay = store.useState('closeDelay');\n useOpenChangeComplete({\n open,\n ref: store.context.popupRef,\n onComplete() {\n if (open) {\n store.context.onOpenChangeComplete?.(true);\n }\n }\n });\n useHoverFloatingInteraction(floatingContext, {\n enabled: !disabled,\n closeDelay\n });\n const setPopupElement = store.useStateSetter('popupElement');\n const state = {\n open,\n side,\n align,\n instant: instantType,\n transitionStatus\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: [forwardedRef, store.context.popupRef, setPopupElement],\n props: [FOCUSABLE_POPUP_PROPS, popupProps, getDisabledMountTransitionStyles(transitionStatus), elementProps],\n stateAttributesMapping: popupTransitionStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") TooltipPopup.displayName = \"TooltipPopup\";","'use client';\n\nimport * as React from 'react';\nimport { useTooltipPositionerContext } from \"../positioner/TooltipPositionerContext.mjs\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\n\n/**\n * Displays an element positioned against the tooltip anchor.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nexport const TooltipArrow = /*#__PURE__*/React.forwardRef(function TooltipArrow(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const store = useTooltipRootContext();\n const {\n arrowRef,\n side,\n align,\n arrowUncentered,\n arrowStyles\n } = useTooltipPositionerContext();\n const open = store.useState('open');\n const instantType = store.useState('instantType');\n const state = {\n open,\n side,\n align,\n uncentered: arrowUncentered,\n instant: instantType\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: [forwardedRef, arrowRef],\n props: [{\n style: arrowStyles,\n 'aria-hidden': true\n }, elementProps],\n stateAttributesMapping: popupStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") TooltipArrow.displayName = \"TooltipArrow\";","'use client';\n\nimport * as React from 'react';\nimport { FloatingDelayGroup } from \"../../floating-ui-react/index.mjs\";\nimport { TooltipProviderContext } from \"./TooltipProviderContext.mjs\";\n\n/**\n * Provides a shared delay for multiple tooltips. The grouping logic ensures that\n * once a tooltip becomes visible, the adjacent tooltips will be shown instantly.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const TooltipProvider = function TooltipProvider(props) {\n const {\n delay,\n closeDelay,\n timeout = 400\n } = props;\n const delayValue = React.useMemo(() => ({\n open: delay,\n close: closeDelay\n }), [delay, closeDelay]);\n return /*#__PURE__*/_jsx(TooltipProviderContext.Provider, {\n value: delay,\n children: /*#__PURE__*/_jsx(FloatingDelayGroup, {\n delay: delayValue,\n timeoutMs: timeout,\n children: props.children\n })\n });\n};\nif (process.env.NODE_ENV !== \"production\") TooltipProvider.displayName = \"TooltipProvider\";","'use client';\n\nimport * as React from 'react';\n\n/**\n * Returns a previous value of its argument.\n * @param value Current value.\n * @returns Previous value, or null if there is no previous value.\n */\nexport function usePreviousValue(value) {\n const [state, setState] = React.useState({\n current: value,\n previous: null\n });\n if (!Object.is(value, state.current)) {\n setState({\n current: value,\n previous: state.current\n });\n }\n return state.previous;\n}","import { round } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement } from '@floating-ui/utils/dom';\nexport function getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { NOOP, EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useAnimationsFinished } from \"../internals/useAnimationsFinished.mjs\";\nimport { getCssDimensions } from \"./getCssDimensions.mjs\";\n/**\n * Allows the element to automatically resize based on its content while supporting animations.\n */\nexport function usePopupAutoResize(parameters) {\n const {\n popupElement,\n positionerElement,\n content,\n mounted,\n onMeasureLayout: onMeasureLayoutParam,\n onMeasureLayoutComplete: onMeasureLayoutCompleteParam,\n side,\n direction\n } = parameters;\n const runOnceAnimationsFinish = useAnimationsFinished(popupElement, true);\n const animationFrame = useAnimationFrame();\n const committedDimensionsRef = React.useRef(null);\n const isInitialRenderRef = React.useRef(true);\n const restoreAnchoringStylesRef = React.useRef(NOOP);\n const onMeasureLayout = useStableCallback(onMeasureLayoutParam);\n const onMeasureLayoutComplete = useStableCallback(onMeasureLayoutCompleteParam);\n const anchoringStyles = React.useMemo(() => getPopupAnchoringStyles(side, direction), [side, direction]);\n useIsoLayoutEffect(() => {\n // Reset the state when the popup is closed.\n if (!mounted) {\n restoreAnchoringStylesRef.current = NOOP;\n isInitialRenderRef.current = true;\n committedDimensionsRef.current = null;\n return undefined;\n }\n if (!popupElement || !positionerElement) {\n return undefined;\n }\n restoreAnchoringStylesRef.current = applyElementStyles(popupElement, anchoringStyles);\n\n // Measure the rendered size to enable transitions:\n setPopupCssSize(popupElement, 'auto');\n const restorePopupPosition = overrideElementStyle(popupElement, 'position', 'static');\n const restorePopupTransform = overrideElementStyle(popupElement, 'transform', 'none');\n const restorePopupScale = overrideElementStyle(popupElement, 'scale', '1');\n const restorePositionerAvailableSize = applyElementStyles(positionerElement, {\n '--available-width': 'max-content',\n '--available-height': 'max-content'\n });\n function restoreMeasurementOverrides() {\n restorePopupPosition();\n restorePopupTransform();\n restorePositionerAvailableSize();\n }\n function restoreMeasurementOverridesIncludingScale() {\n restoreMeasurementOverrides();\n restorePopupScale();\n }\n onMeasureLayout?.();\n\n // Initial render (for each time the popup opens).\n if (isInitialRenderRef.current || committedDimensionsRef.current === null) {\n setPositionerCssSize(positionerElement, 'max-content');\n const dimensions = getCssDimensions(popupElement);\n committedDimensionsRef.current = dimensions;\n setPositionerCssSize(positionerElement, dimensions);\n restoreMeasurementOverridesIncludingScale();\n onMeasureLayoutComplete?.(null, dimensions);\n isInitialRenderRef.current = false;\n return () => {\n restoreAnchoringStylesRef.current();\n restoreAnchoringStylesRef.current = NOOP;\n };\n }\n\n // Subsequent renders while open (when `content` changes).\n setPositionerCssSize(positionerElement, 'max-content');\n const previousDimensions = committedDimensionsRef.current;\n const newDimensions = getCssDimensions(popupElement);\n\n // Commit immediately so future content changes have a stable previous size.\n committedDimensionsRef.current = newDimensions;\n setPopupCssSize(popupElement, previousDimensions);\n restoreMeasurementOverridesIncludingScale();\n onMeasureLayoutComplete?.(previousDimensions, newDimensions);\n setPositionerCssSize(positionerElement, newDimensions);\n const abortController = new AbortController();\n animationFrame.request(() => {\n setPopupCssSize(popupElement, newDimensions);\n runOnceAnimationsFinish(() => {\n popupElement.style.setProperty('--popup-width', 'auto');\n popupElement.style.setProperty('--popup-height', 'auto');\n }, abortController.signal);\n });\n return () => {\n abortController.abort();\n animationFrame.cancel();\n restoreAnchoringStylesRef.current();\n restoreAnchoringStylesRef.current = NOOP;\n };\n }, [content, popupElement, positionerElement, runOnceAnimationsFinish, animationFrame, mounted, onMeasureLayout, onMeasureLayoutComplete, anchoringStyles]);\n}\nfunction getPopupAnchoringStyles(side, direction) {\n // Ensure popup size transitions correctly when anchored to `bottom` (side=top) or `right` (side=left).\n const isPhysicalTop = side === 'top';\n const isPhysicalLeft = side === 'left' || side === (direction === 'rtl' ? 'inline-end' : 'inline-start');\n if (!isPhysicalTop && !isPhysicalLeft) {\n return EMPTY_OBJECT;\n }\n return {\n position: 'absolute',\n [isPhysicalTop ? 'bottom' : 'top']: '0',\n [isPhysicalLeft ? 'right' : 'left']: '0'\n };\n}\nfunction overrideElementStyle(element, property, value) {\n const originalValue = element.style.getPropertyValue(property);\n element.style.setProperty(property, value);\n return () => {\n element.style.setProperty(property, originalValue);\n };\n}\nfunction applyElementStyles(element, styles) {\n const restorers = [];\n for (const [key, value] of Object.entries(styles)) {\n restorers.push(overrideElementStyle(element, key, value));\n }\n return restorers.length ? () => {\n restorers.forEach(restore => restore());\n } : NOOP;\n}\nfunction setPopupCssSize(popupElement, size) {\n const width = size === 'auto' ? 'auto' : `${size.width}px`;\n const height = size === 'auto' ? 'auto' : `${size.height}px`;\n popupElement.style.setProperty('--popup-width', width);\n popupElement.style.setProperty('--popup-height', height);\n}\nfunction setPositionerCssSize(positionerElement, size) {\n const width = size === 'max-content' ? 'max-content' : `${size.width}px`;\n const height = size === 'max-content' ? 'max-content' : `${size.height}px`;\n positionerElement.style.setProperty('--positioner-width', width);\n positionerElement.style.setProperty('--positioner-height', height);\n}","import { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { getSide } from '@floating-ui/utils';\nimport { DEFAULT_SIDES } from \"./adaptiveOriginConstants.mjs\";\nexport const adaptiveOrigin = {\n name: 'adaptiveOrigin',\n async fn(state) {\n const {\n x: rawX,\n y: rawY,\n rects: {\n floating: floatRect\n },\n elements: {\n floating\n },\n platform,\n strategy,\n placement\n } = state;\n const win = ownerWindow(floating);\n const styles = win.getComputedStyle(floating);\n const hasTransition = styles.transitionDuration !== '0s' && styles.transitionDuration !== '';\n if (!hasTransition) {\n return {\n x: rawX,\n y: rawY,\n data: DEFAULT_SIDES\n };\n }\n const offsetParent = await platform.getOffsetParent?.(floating);\n let offsetDimensions = {\n width: 0,\n height: 0\n };\n\n // For fixed strategy, prefer visualViewport if available\n if (strategy === 'fixed' && win?.visualViewport) {\n offsetDimensions = {\n width: win.visualViewport.width,\n height: win.visualViewport.height\n };\n } else if (offsetParent === win) {\n const doc = ownerDocument(floating);\n offsetDimensions = {\n width: doc.documentElement.clientWidth,\n height: doc.documentElement.clientHeight\n };\n } else if (await platform.isElement?.(offsetParent)) {\n offsetDimensions = await platform.getDimensions(offsetParent);\n }\n const currentSide = getSide(placement);\n let x = rawX;\n let y = rawY;\n if (currentSide === 'left') {\n x = offsetDimensions.width - (rawX + floatRect.width);\n }\n if (currentSide === 'top') {\n y = offsetDimensions.height - (rawY + floatRect.height);\n }\n const sideX = currentSide === 'left' ? 'right' : DEFAULT_SIDES.sideX;\n const sideY = currentSide === 'top' ? 'bottom' : DEFAULT_SIDES.sideY;\n return {\n x,\n y,\n data: {\n sideX,\n sideY\n }\n };\n }\n};","'use client';\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { usePreviousValue } from '@base-ui/utils/usePreviousValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useAnimationsFinished } from \"../internals/useAnimationsFinished.mjs\";\nimport { usePopupAutoResize } from \"./usePopupAutoResize.mjs\";\nimport { useDirection } from \"../direction-provider/index.mjs\";\nimport { adaptiveOrigin } from \"./adaptiveOriginMiddleware.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const popupViewportStateMapping = {\n activationDirection: value => value ? {\n 'data-activation-direction': value\n } : null\n};\n/**\n * Builds morphing viewport containers for popups that animate between trigger-based content.\n * Handles previous-content snapshots, auto-resize, and state attributes for transitions.\n */\nexport function usePopupViewport(parameters) {\n const {\n store,\n side,\n children\n } = parameters;\n const direction = useDirection();\n const activeTrigger = store.useState('activeTriggerElement');\n const activeTriggerId = store.useState('activeTriggerId');\n const open = store.useState('open');\n const payload = store.useState('payload');\n const mounted = store.useState('mounted');\n const popupElement = store.useState('popupElement');\n const positionerElement = store.useState('positionerElement');\n const previousActiveTrigger = usePreviousValue(open ? activeTrigger : null);\n // Remount current content on trigger changes (and once more when payload lags) to avoid DOM reuse flashes.\n // The key bumps immediately on trigger switches, then again if the payload arrives on a later render.\n const currentContentKey = usePopupContentKey(activeTriggerId, payload);\n const capturedNodeRef = React.useRef(null);\n const [previousContentNode, setPreviousContentNode] = React.useState(null);\n const [newTriggerOffset, setNewTriggerOffset] = React.useState(null);\n const currentContainerRef = React.useRef(null);\n const previousContainerRef = React.useRef(null);\n const onAnimationsFinished = useAnimationsFinished(currentContainerRef, true);\n const cleanupFrame = useAnimationFrame();\n const cleanupControllerRef = React.useRef(null);\n const [previousContentDimensions, setPreviousContentDimensions] = React.useState(null);\n const [showStartingStyleAttribute, setShowStartingStyleAttribute] = React.useState(false);\n useIsoLayoutEffect(() => {\n store.set('adaptiveOrigin', adaptiveOrigin);\n return () => {\n store.set('adaptiveOrigin', undefined);\n };\n }, [store]);\n const handleMeasureLayout = useStableCallback(() => {\n currentContainerRef.current?.style.setProperty('animation', 'none');\n currentContainerRef.current?.style.setProperty('transition', 'none');\n previousContainerRef.current?.style.setProperty('display', 'none');\n });\n const handleMeasureLayoutComplete = useStableCallback(previousDimensions => {\n currentContainerRef.current?.style.removeProperty('animation');\n currentContainerRef.current?.style.removeProperty('transition');\n previousContainerRef.current?.style.removeProperty('display');\n if (previousDimensions) {\n setPreviousContentDimensions(previousDimensions);\n }\n });\n const armViewportCleanup = useStableCallback(() => {\n cleanupControllerRef.current?.abort();\n const controller = new AbortController();\n cleanupControllerRef.current = controller;\n onAnimationsFinished(() => {\n setPreviousContentNode(null);\n setPreviousContentDimensions(null);\n capturedNodeRef.current = null;\n }, controller.signal);\n });\n const lastHandledTriggerRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n if (!open || !mounted) {\n lastHandledTriggerRef.current = null;\n }\n }, [open, mounted]);\n useIsoLayoutEffect(() => {\n // When a trigger changes, set the captured children HTML to state,\n // so we can render both new and old content.\n if (activeTrigger && previousActiveTrigger && activeTrigger !== previousActiveTrigger && lastHandledTriggerRef.current !== activeTrigger && capturedNodeRef.current) {\n setPreviousContentNode(capturedNodeRef.current);\n setShowStartingStyleAttribute(true);\n\n // Calculate the relative position between the previous and new trigger,\n // so we can pass it to the style hook for animation purposes.\n const offset = calculateRelativePosition(previousActiveTrigger, activeTrigger);\n setNewTriggerOffset(offset);\n lastHandledTriggerRef.current = activeTrigger;\n }\n }, [activeTrigger, previousActiveTrigger]);\n\n // Arm cleanup after a trigger change, and re-arm it if the current container remounts\n // mid-transition when a lagging payload bumps `currentContentKey`. The remount discards\n // the running entry animation (and with transition-style CSS the replacement mounts at\n // final styles with no animation at all), so re-run the starting-style choreography —\n // otherwise the watcher either strands or fires before the previous container's exit\n // animation finishes.\n useIsoLayoutEffect(() => {\n if (previousContentNode == null) {\n return;\n }\n\n // Abort the stale watcher synchronously. The remount cancels the old container's\n // animations, and the resulting promise rejection would otherwise run the cleanup\n // in a microtask before the re-armed watcher below is in place.\n cleanupControllerRef.current?.abort();\n setShowStartingStyleAttribute(true);\n cleanupFrame.request(() => {\n ReactDOM.flushSync(() => {\n setShowStartingStyleAttribute(false);\n });\n armViewportCleanup();\n });\n }, [currentContentKey, previousContentNode, armViewportCleanup, cleanupFrame]);\n\n // Capture a clone of the current content DOM subtree when not transitioning.\n // We can't store previous React nodes as they may be stateful; instead we capture DOM clones for visual continuity.\n useIsoLayoutEffect(() => {\n // When a transition is in progress, we store the next content in capturedNodeRef.\n // This handles the case where the trigger changes multiple times before the transition finishes.\n // We want to always capture the latest content for the previous snapshot.\n // So clicking quickly on T1, T2, T3 will result in the following sequence:\n // 1. T1 -> T2: previousContent = T1, currentContent = T2\n // 2. T2 -> T3: previousContent = T2, currentContent = T3\n const source = currentContainerRef.current;\n if (!source) {\n return;\n }\n const wrapper = ownerDocument(source).createElement('div');\n for (const child of Array.from(source.childNodes)) {\n wrapper.appendChild(child.cloneNode(true));\n }\n capturedNodeRef.current = wrapper;\n });\n const isTransitioning = previousContentNode != null;\n let childrenToRender;\n if (!isTransitioning) {\n childrenToRender = /*#__PURE__*/_jsx(\"div\", {\n \"data-current\": true,\n ref: currentContainerRef,\n children: children\n }, currentContentKey);\n } else {\n childrenToRender = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n \"data-previous\": true,\n inert: inertValue(true),\n ref: previousContainerRef,\n style: {\n ...(previousContentDimensions ? {\n '--popup-width': `${previousContentDimensions.width}px`,\n '--popup-height': `${previousContentDimensions.height}px`\n } : null),\n position: 'absolute'\n },\n \"data-ending-style\": showStartingStyleAttribute ? undefined : ''\n }, \"previous\"), /*#__PURE__*/_jsx(\"div\", {\n \"data-current\": true,\n ref: currentContainerRef,\n \"data-starting-style\": showStartingStyleAttribute ? '' : undefined,\n children: children\n }, currentContentKey)]\n });\n }\n\n // When previousContentNode is present, imperatively populate the previous container with the cloned children.\n useIsoLayoutEffect(() => {\n const container = previousContainerRef.current;\n if (!container || !previousContentNode) {\n return;\n }\n container.replaceChildren(...Array.from(previousContentNode.childNodes));\n }, [previousContentNode]);\n usePopupAutoResize({\n popupElement,\n positionerElement,\n mounted,\n content: payload,\n onMeasureLayout: handleMeasureLayout,\n onMeasureLayoutComplete: handleMeasureLayoutComplete,\n side,\n direction\n });\n const state = {\n activationDirection: getActivationDirection(newTriggerOffset),\n transitioning: isTransitioning\n };\n return {\n children: childrenToRender,\n state\n };\n}\n/**\n * Returns a string describing the provided offset.\n * It describes both the horizontal and vertical offset, separated by a space.\n *\n * @param offset\n */\nfunction getActivationDirection(offset) {\n if (!offset) {\n return undefined;\n }\n return `${getValueWithTolerance(offset.horizontal, 5, 'right', 'left')} ${getValueWithTolerance(offset.vertical, 5, 'down', 'up')}`;\n}\n\n/**\n * Returns a label describing the value (positive/negative) treating values\n * within tolerance as zero.\n *\n * @param value Value to check\n * @param tolerance Tolerance to treat the value as zero.\n * @param positiveLabel\n * @param negativeLabel\n * @returns If 0 < abs(value) < tolerance, returns an empty string. Otherwise returns positiveLabel or negativeLabel.\n */\nfunction getValueWithTolerance(value, tolerance, positiveLabel, negativeLabel) {\n if (value > tolerance) {\n return positiveLabel;\n }\n if (value < -tolerance) {\n return negativeLabel;\n }\n return '';\n}\n\n/**\n * Calculates the relative position between centers of two elements.\n */\nfunction calculateRelativePosition(from, to) {\n const fromRect = from.getBoundingClientRect();\n const toRect = to.getBoundingClientRect();\n const fromCenter = {\n x: fromRect.left + fromRect.width / 2,\n y: fromRect.top + fromRect.height / 2\n };\n const toCenter = {\n x: toRect.left + toRect.width / 2,\n y: toRect.top + toRect.height / 2\n };\n return {\n horizontal: toCenter.x - fromCenter.x,\n vertical: toCenter.y - fromCenter.y\n };\n}\n\n/**\n * Returns a key that forces remounting content when triggers change or a payload is updated.\n */\nfunction usePopupContentKey(activeTriggerId, payload) {\n const [contentKey, setContentKey] = React.useState(0);\n const previousActiveTriggerIdRef = React.useRef(activeTriggerId);\n const previousPayloadRef = React.useRef(payload);\n const pendingPayloadUpdateRef = React.useRef(false);\n useIsoLayoutEffect(() => {\n // Compare against the last committed values to decide whether we need a new DOM subtree.\n const previousActiveTriggerId = previousActiveTriggerIdRef.current;\n const previousPayload = previousPayloadRef.current;\n const triggerIdChanged = activeTriggerId !== previousActiveTriggerId;\n const payloadChanged = payload !== previousPayload;\n if (triggerIdChanged) {\n // Remount immediately on trigger change; remember if payload hasn't caught up yet.\n setContentKey(value => value + 1);\n pendingPayloadUpdateRef.current = !payloadChanged;\n } else if (pendingPayloadUpdateRef.current && payloadChanged) {\n // Payload arrived a render later, so remount once more to avoid reusing the old <img>.\n setContentKey(value => value + 1);\n pendingPayloadUpdateRef.current = false;\n }\n\n // Persist current values for the next render's comparison.\n previousActiveTriggerIdRef.current = activeTriggerId;\n previousPayloadRef.current = payload;\n }, [activeTriggerId, payload]);\n return `${activeTriggerId ?? 'current'}-${contentKey}`;\n}","'use client';\n\nimport * as React from 'react';\nimport { useTooltipRootContext } from \"../root/TooltipRootContext.mjs\";\nimport { useTooltipPositionerContext } from \"../positioner/TooltipPositionerContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { popupViewportStateMapping, usePopupViewport } from \"../../utils/usePopupViewport.mjs\";\n\n/**\n * A viewport for displaying content transitions.\n * This component is only required if one popup can be opened by multiple triggers, its content\n * changes based on the trigger, and switching between them is animated.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Tooltip](https://base-ui.com/react/components/tooltip)\n */\nexport const TooltipViewport = /*#__PURE__*/React.forwardRef(function TooltipViewport(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n children,\n ...elementProps\n } = componentProps;\n const store = useTooltipRootContext();\n const positioner = useTooltipPositionerContext();\n const instantType = store.useState('instantType');\n const {\n children: childrenToRender,\n state: viewportState\n } = usePopupViewport({\n store,\n side: positioner.side,\n children\n });\n const state = {\n activationDirection: viewportState.activationDirection,\n transitioning: viewportState.transitioning,\n instant: instantType\n };\n return useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [elementProps, {\n children: childrenToRender\n }],\n stateAttributesMapping: popupViewportStateMapping\n });\n});\nif (process.env.NODE_ENV !== \"production\") TooltipViewport.displayName = \"TooltipViewport\";","import { createNullTooltipStore } from \"./TooltipStore.mjs\";\nimport { BasePopupHandle } from \"../../utils/popups/popupHandle.mjs\";\n\n/**\n * Controls a Tooltip imperatively and associates detached `Tooltip.Trigger` components with a\n * `Tooltip.Root`. Create one with `Tooltip.createHandle()` and pass it to the `handle` prop of the\n * root and of any triggers rendered outside of it.\n *\n * The imperative methods take effect only while a root using this handle is mounted; calls made\n * before a root attaches (or after it unmounts) are ignored.\n */\nexport class TooltipHandle extends BasePopupHandle {\n constructor() {\n super(createNullTooltipStore(), 'Tooltip');\n }\n\n /**\n * Opens the tooltip and associates it with the trigger with the given id.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n *\n * @param triggerId ID of the trigger to associate with the tooltip. The trigger must be a matching\n * `Tooltip.Trigger` with this handle passed as a prop.\n */\n open(triggerId) {\n this.openByTrigger(triggerId);\n }\n\n /**\n * Closes the tooltip.\n *\n * This method should only be called in an event handler or an effect (not during rendering).\n */\n close() {\n this.closePopup();\n }\n\n /**\n * Whether the tooltip is currently open. Returns `false` while no root is attached to the handle.\n */\n get isOpen() {\n return this.attachedStore?.select('open') ?? false;\n }\n}\n\n/**\n * Creates a new handle to connect a Tooltip.Root with detached Tooltip.Trigger components.\n */\nexport function createTooltipHandle() {\n return new TooltipHandle();\n}","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-arrow.tsx\nconst TRTooltipArrow = createComponentPart(Tooltip.Arrow, \"tr-layer-arrow tr-tooltip-arrow\");\n//#endregion\nexport { TRTooltipArrow };\n\n//# sourceMappingURL=tooltip-arrow.js.map","\"use client\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-handle.ts\nfunction createTooltipHandle() {\n\treturn Tooltip.createHandle();\n}\n//#endregion\nexport { createTooltipHandle };\n\n//# sourceMappingURL=tooltip-handle.js.map","\"use client\";\nimport { createContext, useContext } from \"react\";\n//#region src/components/tooltip/tooltip-description-context.tsx\nconst TooltipDescriptionContext = createContext(null);\nconst TooltipDescriptionProvider = TooltipDescriptionContext.Provider;\nfunction useTooltipDescriptionContext() {\n\treturn useContext(TooltipDescriptionContext);\n}\n//#endregion\nexport { TooltipDescriptionProvider, useTooltipDescriptionContext };\n\n//# sourceMappingURL=tooltip-description-context.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { useTooltipDescriptionContext } from \"./tooltip-description-context.js\";\nimport { useEffect } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-popup.tsx\nfunction TRTooltipPopup({ className, id, role, ...props }) {\n\tconst context = useTooltipDescriptionContext();\n\tif (context === null) throw new Error(\"TRTooltip.Popup must be used within TRTooltip.Root.\");\n\tconst resolvedId = id ?? context.fallbackId;\n\tconst { setPopupId } = context;\n\tuseEffect(() => {\n\t\tsetPopupId(resolvedId);\n\t\treturn () => setPopupId(null);\n\t}, [resolvedId, setPopupId]);\n\treturn /* @__PURE__ */ jsx(Tooltip.Popup, {\n\t\t...props,\n\t\tclassName: mergeComponentClassName(\"tr-layer tr-tooltip-content\", className),\n\t\tid: resolvedId,\n\t\trole: role ?? \"tooltip\"\n\t});\n}\n//#endregion\nexport { TRTooltipPopup };\n\n//# sourceMappingURL=tooltip-popup.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-portal.tsx\nconst TRTooltipPortal = createComponentPart(Tooltip.Portal);\n//#endregion\nexport { TRTooltipPortal };\n\n//# sourceMappingURL=tooltip-portal.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-positioner.tsx\nconst TRTooltipPositioner = createComponentPart(Tooltip.Positioner, \"tr-layer-positioner tr-tooltip-positioner\");\n//#endregion\nexport { TRTooltipPositioner };\n\n//# sourceMappingURL=tooltip-positioner.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-provider.tsx\nconst TRTooltipProvider = createComponentPart(Tooltip.Provider);\n//#endregion\nexport { TRTooltipProvider };\n\n//# sourceMappingURL=tooltip-provider.js.map","\"use client\";\nimport { TooltipDescriptionProvider } from \"./tooltip-description-context.js\";\nimport { useId, useMemo, useState } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-root.tsx\nfunction TRTooltipRoot(props) {\n\tconst fallbackId = useId();\n\tconst [popupId, setPopupId] = useState(null);\n\treturn /* @__PURE__ */ jsx(TooltipDescriptionProvider, {\n\t\tvalue: useMemo(() => ({\n\t\t\tdescriptionId: popupId ?? fallbackId,\n\t\t\tfallbackId,\n\t\t\tsetPopupId\n\t\t}), [fallbackId, popupId]),\n\t\tchildren: /* @__PURE__ */ jsx(Tooltip.Root, { ...props })\n\t});\n}\n//#endregion\nexport { TRTooltipRoot };\n\n//# sourceMappingURL=tooltip-root.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { useTooltipDescriptionContext } from \"./tooltip-description-context.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-trigger.tsx\nfunction TRTooltipTrigger({ \"aria-describedby\": ariaDescribedBy, className, ...props }) {\n\tconst describedBy = [ariaDescribedBy, useTooltipDescriptionContext()?.descriptionId].filter(Boolean).join(\" \");\n\treturn /* @__PURE__ */ jsx(Tooltip.Trigger, {\n\t\t...props,\n\t\t\"aria-describedby\": describedBy,\n\t\tclassName: mergeComponentClassName(\"tr-tooltip\", className)\n\t});\n}\n//#endregion\nexport { TRTooltipTrigger };\n\n//# sourceMappingURL=tooltip-trigger.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Tooltip } from \"@base-ui/react/tooltip\";\n//#region src/components/tooltip/tooltip-viewport.tsx\nconst TRTooltipViewport = createComponentPart(Tooltip.Viewport, \"tr-layer-viewport tr-tooltip-viewport\");\n//#endregion\nexport { TRTooltipViewport };\n\n//# sourceMappingURL=tooltip-viewport.js.map","import { TRTooltipArrow } from \"./tooltip-arrow.js\";\nimport { createTooltipHandle } from \"./tooltip-handle.js\";\nimport { TRTooltipPopup } from \"./tooltip-popup.js\";\nimport { TRTooltipPortal } from \"./tooltip-portal.js\";\nimport { TRTooltipPositioner } from \"./tooltip-positioner.js\";\nimport { TRTooltipProvider } from \"./tooltip-provider.js\";\nimport { TRTooltipRoot } from \"./tooltip-root.js\";\nimport { TRTooltipTrigger } from \"./tooltip-trigger.js\";\nimport { TRTooltipViewport } from \"./tooltip-viewport.js\";\n//#region src/components/tooltip/index.tsx\nconst TRTooltip = {\n\tRoot: TRTooltipRoot,\n\tTrigger: TRTooltipTrigger,\n\tPortal: TRTooltipPortal,\n\tPositioner: TRTooltipPositioner,\n\tPopup: TRTooltipPopup,\n\tArrow: TRTooltipArrow,\n\tProvider: TRTooltipProvider,\n\tViewport: TRTooltipViewport,\n\tcreateHandle: createTooltipHandle\n};\n//#endregion\nexport { TRTooltip, TRTooltipArrow, TRTooltipPopup, TRTooltipPortal, TRTooltipPositioner, TRTooltipProvider, TRTooltipRoot, TRTooltipTrigger, TRTooltipViewport, createTooltipHandle };\n\n//# sourceMappingURL=index.js.map","import { TRIconButton } from '@tinyrack/ui/components/icon-button';\nimport { TRTooltip } from '@tinyrack/ui/components/tooltip';\nimport { MoonIcon, SunIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\n\ntype ThemeToggleProps = {\n colorScheme: 'light' | 'dark';\n onToggle: () => void;\n};\n\n/**\n * Carries no positioning of its own. Every shell now lays this out in a real\n * header bar; it used to be pinned to the viewport corner with `fixed`, where\n * it overlapped content on short screens.\n */\nexport function ThemeToggle({ colorScheme, onToggle }: ThemeToggleProps) {\n const { t } = useTranslation();\n\n const label =\n colorScheme === 'dark' ? t('common.theme.dark') : t('common.theme.light');\n\n const SchemeIcon = colorScheme === 'dark' ? SunIcon : MoonIcon;\n\n return (\n <div>\n <TRTooltip.Root>\n <TRTooltip.Trigger\n data-testid=\"theme-toggle\"\n render={\n <TRIconButton\n appearance=\"ghost\"\n aria-label={label}\n onClick={onToggle}\n >\n <SchemeIcon />\n </TRIconButton>\n }\n />\n <TRTooltip.Portal>\n <TRTooltip.Positioner>\n <TRTooltip.Popup>{label}</TRTooltip.Popup>\n <TRTooltip.Arrow />\n </TRTooltip.Positioner>\n </TRTooltip.Portal>\n </TRTooltip.Root>\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nexport function useOnFirstRender(fn) {\n const ref = React.useRef(true);\n if (ref.current) {\n ref.current = false;\n fn();\n }\n}","export function isElementDisabled(element) {\n return element == null || element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n}","'use client';\n\n// TODO: uncomment once we enable eslint-plugin-react-compiler // eslint-disable-next-line react-compiler/react-compiler -- process.env never changes, dependency arrays are intentionally ignored\n/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nimport { error } from \"./error.mjs\";\nexport function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n error([`A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && serializeToDevModeString(defaultValue) !== serializeToDevModeString(defaultProp)) {\n error([`A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [defaultProp]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}\nfunction serializeToDevModeString(input) {\n let nextId = 0;\n const seen = new WeakMap();\n try {\n const result = JSON.stringify(input, function replacer(key, value) {\n if (key === '_owner' && this != null && typeof this === 'object' && '$$typeof' in this) {\n return undefined;\n }\n if (typeof value === 'bigint') {\n return `__bigint__:${value}`;\n }\n if (value !== null && typeof value === 'object') {\n const id = seen.get(value);\n if (id !== undefined) {\n return `__object__:${id}`;\n }\n seen.set(value, nextId);\n nextId += 1;\n }\n return value;\n });\n return result ?? `__top__:${typeof input}`;\n } catch {\n return '__unserializable__';\n }\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectRootContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== \"production\") SelectRootContext.displayName = \"SelectRootContext\";\nexport function useSelectRootContext() {\n const context = React.useContext(SelectRootContext);\n if (context === null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectRootContext is missing. Select parts must be placed within <Select.Root>.' : _formatErrorMessage(60));\n }\n return context;\n}","export const DEFAULT_VALIDITY_STATE = {\n badInput: false,\n customError: false,\n patternMismatch: false,\n rangeOverflow: false,\n rangeUnderflow: false,\n stepMismatch: false,\n tooLong: false,\n tooShort: false,\n typeMismatch: false,\n valid: null,\n valueMissing: false\n};\nexport const DEFAULT_FIELD_STATE_ATTRIBUTES = {\n valid: null,\n touched: false,\n dirty: false,\n filled: false,\n focused: false\n};\nexport const DEFAULT_FIELD_ROOT_STATE = {\n disabled: false,\n ...DEFAULT_FIELD_STATE_ATTRIBUTES\n};\nexport const fieldValidityMapping = {\n valid(value) {\n if (value === null) {\n return null;\n }\n if (value) {\n return {\n 'data-valid': ''\n };\n }\n return {\n 'data-invalid': ''\n };\n }\n};","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nimport { EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { NOOP } from \"../noop.mjs\";\nimport { DEFAULT_FIELD_ROOT_STATE, DEFAULT_VALIDITY_STATE } from \"../field-constants/constants.mjs\";\nexport const DEFAULT_FIELD_ROOT_CONTEXT = {\n invalid: undefined,\n name: undefined,\n validityData: {\n state: DEFAULT_VALIDITY_STATE,\n errors: [],\n error: '',\n value: '',\n initialValue: null\n },\n setValidityData: NOOP,\n disabled: undefined,\n setTouched: NOOP,\n setDirty: NOOP,\n setFilled: NOOP,\n setFocused: NOOP,\n validationMode: 'onSubmit',\n shouldValidateOnChange: () => false,\n state: DEFAULT_FIELD_ROOT_STATE,\n registerFieldControl: NOOP,\n validation: {\n getValidationProps: (_disabled, props = EMPTY_OBJECT) => props,\n inputRef: {\n current: null\n },\n registeredInputs: new Map(),\n registerInput: NOOP,\n getInputControl: () => null,\n commit: async () => {},\n change: NOOP\n }\n};\nexport const FieldRootContext = /*#__PURE__*/React.createContext(DEFAULT_FIELD_ROOT_CONTEXT);\nif (process.env.NODE_ENV !== \"production\") FieldRootContext.displayName = \"FieldRootContext\";\nexport function useFieldRootContext(optional = true) {\n const context = React.useContext(FieldRootContext);\n if (context.setValidityData === NOOP && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: FieldRootContext is missing. Field parts must be placed within <Field.Root>.' : _formatErrorMessage(28));\n }\n return context;\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useFieldRootContext } from \"../field-root-context/FieldRootContext.mjs\";\nexport function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true, name) {\n const {\n registerFieldControl\n } = useFieldRootContext();\n const sourceRef = useRefWithInit(() => Symbol());\n\n // Re-register without unregistering first: re-registration with the same id updates the\n // form's fields Map entry in place, while a delete + re-add would move the field to the\n // end of the Map every time its value changes.\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n if (!enabled) {\n registerFieldControl(source, undefined);\n return;\n }\n const registration = {\n controlRef,\n getValue: getFormValueOverride,\n id,\n name,\n value\n };\n registerFieldControl(source, registration);\n }, [controlRef, enabled, getFormValueOverride, id, name, registerFieldControl, sourceRef, value]);\n useIsoLayoutEffect(() => {\n const source = sourceRef.current;\n return () => {\n registerFieldControl(source, undefined);\n };\n }, [registerFieldControl, sourceRef]);\n}","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\n/**\n * A context for providing [labelable elements](https://html.spec.whatwg.org/multipage/forms.html#category-label)\\\n * with an accessible name (label) and description.\n */\nexport const LabelableContext = /*#__PURE__*/React.createContext({\n controlId: undefined,\n registerControlId: NOOP,\n labelId: undefined,\n setLabelId: NOOP,\n messageIds: [],\n setMessageIds: NOOP,\n getDescriptionProps: externalProps => externalProps\n});\nif (process.env.NODE_ENV !== \"production\") LabelableContext.displayName = \"LabelableContext\";\nexport function useLabelableContext() {\n return React.useContext(LabelableContext);\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { isElement } from '@floating-ui/utils/dom';\nimport { NOOP } from \"../noop.mjs\";\nimport { useBaseUiId } from \"../useBaseUiId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabelableId(params = {}) {\n const {\n id,\n implicit = false,\n controlRef\n } = params;\n const {\n controlId,\n registerControlId\n } = useLabelableContext();\n const defaultId = useBaseUiId(id);\n const controlIdForEffect = implicit ? controlId : undefined;\n const controlSourceRef = useRefWithInit(() => Symbol());\n const hasRegisteredRef = React.useRef(false);\n const hadExplicitIdRef = React.useRef(id != null);\n const unregisterControlId = useStableCallback(() => {\n if (!hasRegisteredRef.current || registerControlId === NOOP) {\n return;\n }\n hasRegisteredRef.current = false;\n registerControlId(controlSourceRef.current, undefined);\n });\n useIsoLayoutEffect(() => {\n if (registerControlId === NOOP) {\n return undefined;\n }\n let nextId;\n if (implicit) {\n const elem = controlRef?.current;\n if (isElement(elem) && elem.closest('label') != null) {\n nextId = id ?? null;\n } else {\n nextId = controlIdForEffect ?? defaultId;\n }\n } else if (id != null) {\n hadExplicitIdRef.current = true;\n nextId = id;\n } else if (hadExplicitIdRef.current) {\n nextId = defaultId;\n } else {\n unregisterControlId();\n return undefined;\n }\n if (nextId === undefined) {\n unregisterControlId();\n return undefined;\n }\n hasRegisteredRef.current = true;\n registerControlId(controlSourceRef.current, nextId);\n return undefined;\n }, [id, controlRef, controlIdForEffect, registerControlId, implicit, defaultId, controlSourceRef, unregisterControlId]);\n React.useEffect(() => {\n return unregisterControlId;\n }, [unregisterControlId]);\n return controlId ?? defaultId;\n}","export const defaultItemEquality = (itemValue, selectedValue) => Object.is(itemValue, selectedValue);\nexport function compareItemEquality(itemValue, selectedValue, comparer) {\n if (itemValue == null || selectedValue == null) {\n return Object.is(itemValue, selectedValue);\n }\n return comparer(itemValue, selectedValue);\n}\nexport function selectedValueIncludes(selectedValues, itemValue, comparer) {\n if (!selectedValues || selectedValues.length === 0) {\n return false;\n }\n return selectedValues.some(selectedValue => {\n if (selectedValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function findItemIndex(itemValues, selectedValue, comparer) {\n if (!itemValues || itemValues.length === 0) {\n return -1;\n }\n return itemValues.findIndex(itemValue => {\n if (itemValue === undefined) {\n return false;\n }\n return compareItemEquality(itemValue, selectedValue, comparer);\n });\n}\nexport function findSelectionIndex(itemValues, selectedValue, comparer, multiple) {\n // Only unwrap in multiple mode: an array can itself be a valid single-select value.\n const lastValue = multiple && Array.isArray(selectedValue) ? selectedValue[selectedValue.length - 1] : selectedValue;\n const index = findItemIndex(itemValues, lastValue, comparer);\n return index === -1 ? null : index;\n}\nexport function removeItem(selectedValues, itemValue, comparer) {\n return selectedValues.filter(selectedValue => !compareItemEquality(itemValue, selectedValue, comparer));\n}","export function serializeValue(value) {\n if (value == null) {\n return '';\n }\n if (typeof value === 'string') {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}","'use client';\n\nimport * as React from 'react';\nimport { serializeValue } from \"./serializeValue.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function isGroupedItems(items) {\n return items != null && items.length > 0 && typeof items[0] === 'object' && items[0] != null && 'items' in items[0];\n}\n\n/**\n * Checks if the items array contains an item with a null value that has a non-null label.\n */\nexport function hasNullItemLabel(items) {\n if (!Array.isArray(items)) {\n return items != null && 'null' in items;\n }\n const arrayItems = items;\n if (isGroupedItems(arrayItems)) {\n for (const group of arrayItems) {\n for (const item of group.items) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n }\n return false;\n }\n for (const item of arrayItems) {\n if (item && item.value == null && item.label != null) {\n return true;\n }\n }\n return false;\n}\nexport function stringifyAsLabel(item, itemToStringLabel) {\n if (itemToStringLabel && item != null) {\n return itemToStringLabel(item) ?? '';\n }\n if (item && typeof item === 'object') {\n if ('label' in item && item.label != null) {\n return String(item.label);\n }\n if ('value' in item) {\n return String(item.value);\n }\n }\n return serializeValue(item);\n}\nexport function stringifyAsValue(item, itemToStringValue) {\n if (itemToStringValue && item != null) {\n return itemToStringValue(item) ?? '';\n }\n if (item && typeof item === 'object' && 'value' in item && 'label' in item) {\n return serializeValue(item.value);\n }\n return serializeValue(item);\n}\nexport function resolveSelectedLabel(value, items, itemToStringLabel) {\n function fallback() {\n return stringifyAsLabel(value, itemToStringLabel);\n }\n if (itemToStringLabel && value != null) {\n return itemToStringLabel(value);\n }\n\n // Custom object with explicit label takes precedence\n if (value && typeof value === 'object' && 'label' in value && value.label != null) {\n return value.label;\n }\n\n // Items provided as plain record map\n if (items && !Array.isArray(items)) {\n return items[value] ?? fallback();\n }\n\n // Items provided as array (flat or grouped)\n if (Array.isArray(items)) {\n const arrayItems = items;\n const flatItems = isGroupedItems(arrayItems) ? arrayItems.flatMap(group => group.items) : arrayItems;\n if (value == null || typeof value !== 'object') {\n const match = flatItems.find(item => item.value === value);\n if (match && match.label != null) {\n return match.label;\n }\n return fallback();\n }\n\n // Object without explicit label: try matching by its `value` property\n if ('value' in value) {\n const match = flatItems.find(item => item && item.value === value.value);\n if (match && match.label != null) {\n return match.label;\n }\n }\n }\n return fallback();\n}\nexport function resolveMultipleLabels(values, items, itemToStringLabel) {\n return values.reduce((acc, value, index) => {\n if (index > 0) {\n acc.push(', ');\n }\n acc.push(/*#__PURE__*/_jsx(React.Fragment, {\n children: resolveSelectedLabel(value, items, itemToStringLabel)\n }, index));\n return acc;\n }, []);\n}","import { compareItemEquality } from \"../internals/itemEquality.mjs\";\nimport { hasNullItemLabel, stringifyAsValue } from \"../internals/resolveValueLabel.mjs\";\nexport const selectors = {\n id: state => state.id,\n labelId: state => state.labelId,\n modal: state => state.modal,\n items: state => state.items,\n itemToStringLabel: state => state.itemToStringLabel,\n isItemEqualToValue: state => state.isItemEqualToValue,\n value: state => state.value,\n hasSelectedValue: state => {\n const {\n value,\n multiple,\n itemToStringValue\n } = state;\n if (value == null) {\n return false;\n }\n if (multiple && Array.isArray(value)) {\n return value.length > 0;\n }\n return stringifyAsValue(value, itemToStringValue) !== '';\n },\n hasNullItemLabel: (state, enabled) => {\n return enabled ? hasNullItemLabel(state.items) : false;\n },\n open: state => state.open,\n mounted: state => state.mounted,\n forceMount: state => state.forceMount,\n transitionStatus: state => state.transitionStatus,\n openMethod: state => state.openMethod,\n activeIndex: state => state.activeIndex,\n selectedIndex: state => state.selectedIndex,\n isActive: (state, index) => state.activeIndex === index,\n isSelected: (state, itemValue) => {\n const comparer = state.isItemEqualToValue;\n const storeValue = state.value;\n if (state.multiple) {\n return Array.isArray(storeValue) && storeValue.some(selectedItem => compareItemEquality(itemValue, selectedItem, comparer));\n }\n\n // The value is the source of truth: a stale `selectedIndex` (e.g. the controlled\n // value changes while the popup is open, where the index sync is deferred) must not\n // keep a previously selected item marked as selected.\n return compareItemEquality(itemValue, storeValue, comparer);\n },\n isSelectedByFocus: (state, index) => {\n return state.selectedIndex === index;\n },\n popupProps: state => state.popupProps,\n triggerProps: state => state.triggerProps,\n triggerElement: state => state.triggerElement,\n positionerElement: state => state.positionerElement,\n listElement: state => state.listElement,\n popupSide: state => state.popupSide,\n scrollUpArrowVisible: state => state.scrollUpArrowVisible,\n scrollDownArrowVisible: state => state.scrollDownArrowVisible,\n hasScrollArrows: state => state.hasScrollArrows\n};","'use client';\n\nimport * as React from 'react';\nimport { NOOP } from \"../noop.mjs\";\nexport const FormContext = /*#__PURE__*/React.createContext({\n elementRef: {\n current: null\n },\n formRef: {\n current: {\n fields: new Map()\n }\n },\n errors: {},\n clearErrors: NOOP,\n validationMode: 'onSubmit',\n submitAttemptedRef: {\n current: false\n }\n});\nif (process.env.NODE_ENV !== \"production\") FormContext.displayName = \"FormContext\";\nexport function useFormContext() {\n return React.useContext(FormContext);\n}","export function areArraysEqual(array1, array2, itemComparer = (a, b) => a === b) {\n return array1.length === array2.length && array1.every((value, index) => itemComparer(value, array2[index]));\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nexport function useValueChanged(value, onChange) {\n const valueRef = React.useRef(value);\n const onChangeCallback = useStableCallback(onChange);\n useIsoLayoutEffect(() => {\n if (valueRef.current !== value) {\n onChangeCallback(valueRef.current);\n }\n valueRef.current = value;\n }, [value, onChangeCallback]);\n}","'use client';\n\nimport * as React from 'react';\n/**\n * Provides a cross-browser way to determine the type of the pointer used to click.\n * Safari and Firefox do not provide the PointerEvent to the click handler (they use MouseEvent) yet.\n * Additionally, this implementation detects if the click was triggered by the keyboard.\n *\n * @param handler The function to be called when the button is clicked. The first parameter is the original event and the second parameter is the pointer type.\n */\nexport function useEnhancedClickHandler(handler) {\n const lastClickInteractionTypeRef = React.useRef('');\n const handlePointerDown = React.useCallback(event => {\n if (event.defaultPrevented) {\n return;\n }\n lastClickInteractionTypeRef.current = event.pointerType;\n handler(event, event.pointerType);\n }, [handler]);\n const handleClick = React.useCallback(event => {\n // event.detail has the number of clicks performed on the element. 0 means it was triggered by the keyboard.\n if (event.detail === 0) {\n handler(event, 'keyboard');\n return;\n }\n if ('pointerType' in event) {\n // Chrome and Edge correctly use PointerEvent\n handler(event, event.pointerType);\n } else {\n handler(event, lastClickInteractionTypeRef.current);\n }\n lastClickInteractionTypeRef.current = '';\n }, [handler]);\n return {\n onClick: handleClick,\n onPointerDown: handlePointerDown\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useEnhancedClickHandler } from '@base-ui/utils/useEnhancedClickHandler';\nimport { platform } from '@base-ui/utils/platform';\nimport { useValueChanged } from \"../internals/useValueChanged.mjs\";\nexport function useOpenMethodTriggerProps(open, setOpenMethod) {\n const handleTriggerClick = useStableCallback((_, interactionType) => {\n const isOpen = typeof open === 'function' ? open() : open;\n if (!isOpen) {\n setOpenMethod(interactionType || (\n // On iOS Safari, the hitslop around touch targets means tapping outside an element's\n // bounds does not fire `pointerdown` but does fire `mousedown`. The `interactionType`\n // will be \"\" in that case.\n platform.os.ios ? 'touch' : ''));\n }\n });\n const {\n onClick,\n onPointerDown\n } = useEnhancedClickHandler(handleTriggerClick);\n return React.useMemo(() => ({\n onClick,\n onPointerDown\n }), [onClick, onPointerDown]);\n}\n\n/**\n * Determines the interaction type (keyboard, mouse, touch, etc.) that opened the component.\n *\n * @param open The open state of the component.\n */\nexport function useOpenInteractionType(open) {\n const [openMethod, setOpenMethod] = React.useState(null);\n const triggerProps = useOpenMethodTriggerProps(open, setOpenMethod);\n useValueChanged(open, previousOpen => {\n if (previousOpen && !open) {\n setOpenMethod(null);\n }\n });\n return React.useMemo(() => ({\n openMethod,\n triggerProps\n }), [openMethod, triggerProps]);\n}","import { clamp } from \"../internals/clamp.mjs\";\nexport const SCROLL_EDGE_TOLERANCE_PX = 1;\nexport function getMaxScrollOffset(scrollSize, clientSize) {\n return Math.max(0, scrollSize - clientSize);\n}\nexport function normalizeScrollOffset(value, max) {\n if (max <= 0) {\n return 0;\n }\n const clamped = clamp(value, 0, max);\n const startDistance = clamped;\n const endDistance = max - clamped;\n const withinStartTolerance = startDistance <= SCROLL_EDGE_TOLERANCE_PX;\n const withinEndTolerance = endDistance <= SCROLL_EDGE_TOLERANCE_PX;\n if (withinStartTolerance && withinEndTolerance) {\n return startDistance <= endDistance ? 0 : max;\n }\n if (withinStartTolerance) {\n return 0;\n }\n if (withinEndTolerance) {\n return max;\n }\n return clamped;\n}","'use client';\n\nimport * as React from 'react';\nimport { visuallyHidden, visuallyHiddenInput } from '@base-ui/utils/visuallyHidden';\nimport { useMergedRefs } from '@base-ui/utils/useMergedRefs';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useOnFirstRender } from '@base-ui/utils/useOnFirstRender';\nimport { usePreviousValue } from '@base-ui/utils/usePreviousValue';\nimport { isElementDisabled } from '@base-ui/utils/isElementDisabled';\nimport { useControlled } from '@base-ui/utils/useControlled';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore, ReactStore } from '@base-ui/utils/store';\nimport { EMPTY_ARRAY, EMPTY_OBJECT } from '@base-ui/utils/empty';\nimport { useClick, useDismiss, useFloatingRootContext, useListNavigation, useTypeahead } from \"../../floating-ui-react/index.mjs\";\nimport { SelectRootContext } from \"./SelectRootContext.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useRegisterFieldControl } from \"../../internals/field-register-control/useRegisterFieldControl.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\nimport { selectors } from \"../store.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useFormContext } from \"../../internals/form-context/FormContext.mjs\";\nimport { stringifyAsLabel, stringifyAsValue } from \"../../internals/resolveValueLabel.mjs\";\nimport { compareItemEquality, defaultItemEquality, findItemIndex } from \"../../internals/itemEquality.mjs\";\nimport { areArraysEqual } from \"../../internals/areArraysEqual.mjs\";\nimport { useValueChanged } from \"../../internals/useValueChanged.mjs\";\nimport { useOpenInteractionType } from \"../../utils/useOpenInteractionType.mjs\";\nimport { getMaxScrollOffset, normalizeScrollOffset } from \"../../utils/scrollEdges.mjs\";\nimport { FOCUSABLE_POPUP_PROPS } from \"../../utils/popups/index.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\n\n/**\n * Groups all parts of the select.\n * Doesn't render its own HTML element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function SelectRoot(props) {\n const {\n id,\n value: valueProp,\n defaultValue = null,\n onValueChange,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n name: nameProp,\n form,\n autoComplete,\n disabled: disabledProp = false,\n readOnly = false,\n required = false,\n modal = true,\n actionsRef,\n inputRef,\n onOpenChangeComplete,\n items,\n multiple = false,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue = defaultItemEquality,\n highlightItemOnHover = true,\n children\n } = props;\n const {\n clearErrors\n } = useFormContext();\n const {\n setDirty,\n setTouched,\n setFocused,\n validityData,\n setFilled,\n name: fieldName,\n disabled: fieldDisabled,\n validation,\n validationMode\n } = useFieldRootContext();\n const generatedId = useLabelableId({\n id\n });\n const disabled = fieldDisabled || disabledProp;\n const name = fieldName ?? nameProp;\n const [value, setValueUnwrapped] = useControlled({\n controlled: valueProp,\n default: multiple ? defaultValue ?? EMPTY_ARRAY : defaultValue,\n name: 'Select',\n state: 'value'\n });\n const [open, setOpenUnwrapped] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n name: 'Select',\n state: 'open'\n });\n const listRef = React.useRef([]);\n const labelsRef = React.useRef([]);\n const popupRef = React.useRef(null);\n const scrollHandlerRef = React.useRef(null);\n const scrollArrowsMountedCountRef = React.useRef(0);\n const valueRef = React.useRef(null);\n const valuesRef = React.useRef([]);\n const typingRef = React.useRef(false);\n const firstItemTextRef = React.useRef(null);\n const selectedItemTextRef = React.useRef(null);\n const selectionRef = React.useRef({\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false,\n dragY: 0\n });\n const alignItemWithTriggerActiveRef = React.useRef(false);\n const {\n mounted,\n setMounted,\n transitionStatus\n } = useTransitionStatus(open);\n const {\n openMethod,\n triggerProps: interactionTypeProps\n } = useOpenInteractionType(open);\n const store = useRefWithInit(() => new ReactStore({\n id: generatedId,\n labelId: undefined,\n modal,\n multiple,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n value,\n open,\n mounted,\n transitionStatus,\n items,\n forceMount: false,\n openMethod: null,\n activeIndex: null,\n selectedIndex: null,\n popupProps: {},\n triggerProps: {},\n triggerElement: null,\n positionerElement: null,\n listElement: null,\n popupSide: null,\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false,\n hasScrollArrows: false\n })).current;\n const activeIndex = useStore(store, selectors.activeIndex);\n const selectedIndex = useStore(store, selectors.selectedIndex);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const previousOpenMethod = usePreviousValue(openMethod);\n const renderedOpenMethod = openMethod ?? previousOpenMethod;\n const serializedValue = React.useMemo(() => {\n // In multiple mode the shared input is nameless; per-value entries are submitted via\n // `hiddenInputs`. Its value is therefore irrelevant, and passing the whole array to\n // `stringifyAsValue` would invoke a user `itemToStringValue` with an array it doesn't expect.\n if (multiple) {\n return '';\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const fieldStringValue = React.useMemo(() => {\n if (multiple && Array.isArray(value)) {\n return value.map(currentValue => stringifyAsValue(currentValue, itemToStringValue));\n }\n return stringifyAsValue(value, itemToStringValue);\n }, [multiple, value, itemToStringValue]);\n const controlRef = useValueAsRef(triggerElement);\n const getStringifiedValueForForm = useStableCallback(() => fieldStringValue);\n useRegisterFieldControl(controlRef, generatedId, value, getStringifiedValueForForm, !disabled, nameProp);\n const initialValueRef = React.useRef(value);\n // Mirror the `hasSelectedValue` store selector so the Field's filled state agrees with the\n // trigger/value placeholder semantics (a value serializing to `''` counts as empty).\n const hasSelectedValue = multiple ? Array.isArray(value) && value.length > 0 : value != null && serializedValue !== '';\n useIsoLayoutEffect(() => {\n setFilled(hasSelectedValue);\n }, [hasSelectedValue, setFilled]);\n useIsoLayoutEffect(function syncSelectedIndex() {\n let target = value;\n let empty = false;\n if (multiple) {\n const currentValue = Array.isArray(value) ? value : [];\n empty = currentValue.length === 0;\n target = currentValue[currentValue.length - 1];\n }\n const index = empty ? -1 : findItemIndex(valuesRef.current, target, isItemEqualToValue);\n const nextIndex = index === -1 ? null : index;\n if (nextIndex === null) {\n selectedItemTextRef.current = null;\n }\n if (open) {\n return;\n }\n store.set('selectedIndex', nextIndex);\n }, [multiple, open, value, isItemEqualToValue, store]);\n function isSelectedValueDirty(currentValue) {\n const initialValue = validityData.initialValue;\n if (Array.isArray(currentValue) && Array.isArray(initialValue)) {\n return !areArraysEqual(currentValue, initialValue, (itemValue, initialItemValue) => compareItemEquality(itemValue, initialItemValue, isItemEqualToValue));\n }\n return currentValue !== initialValue;\n }\n useValueChanged(value, () => {\n clearErrors(name);\n setDirty(isSelectedValueDirty(value));\n validation.change(value);\n });\n const setOpen = useStableCallback((nextOpen, eventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setOpenUnwrapped(nextOpen);\n if (!nextOpen && (eventDetails.reason === REASONS.focusOut || eventDetails.reason === REASONS.outsidePress)) {\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n }\n });\n const handleUnmount = useStableCallback(() => {\n setMounted(false);\n store.update({\n activeIndex: null,\n openMethod: null,\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false\n });\n onOpenChangeComplete?.(false);\n });\n useOpenChangeComplete({\n enabled: !actionsRef,\n open,\n ref: popupRef,\n onComplete() {\n if (!open) {\n handleUnmount();\n }\n }\n });\n React.useImperativeHandle(actionsRef, () => ({\n unmount: handleUnmount\n }), [handleUnmount]);\n const setValue = useStableCallback((nextValue, eventDetails) => {\n onValueChange?.(nextValue, eventDetails);\n if (eventDetails.isCanceled) {\n return;\n }\n setValueUnwrapped(nextValue);\n });\n const handleScrollArrowVisibility = useStableCallback(scroller => {\n const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);\n const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop);\n const shouldShowUp = scrollTop > 0;\n const shouldShowDown = scrollTop < maxScrollTop;\n store.set('scrollUpArrowVisible', shouldShowUp);\n store.set('scrollDownArrowVisible', shouldShowDown);\n });\n const floatingContext = useFloatingRootContext({\n open,\n onOpenChange: setOpen,\n elements: {\n reference: triggerElement,\n floating: positionerElement\n }\n });\n const click = useClick(floatingContext, {\n enabled: !readOnly && !disabled,\n event: 'mousedown'\n });\n const dismiss = useDismiss(floatingContext);\n const listNavigation = useListNavigation(floatingContext, {\n enabled: !readOnly && !disabled,\n listRef,\n activeIndex,\n selectedIndex,\n disabledIndices: EMPTY_ARRAY,\n onNavigate(nextActiveIndex) {\n // Retain the highlight while transitioning out.\n if (nextActiveIndex === null && !open) {\n return;\n }\n store.set('activeIndex', nextActiveIndex);\n },\n focusItemOnHover: highlightItemOnHover\n });\n const typeahead = useTypeahead(floatingContext, {\n enabled: !readOnly && !disabled && (open || !multiple),\n listRef: labelsRef,\n activeIndex,\n selectedIndex,\n // Skip disabled items while matching so typeahead advances to the next selectable item\n // (a click can never select a disabled item and native `<select>` skips them too). Resolve\n // the disabled state from the element via the attribute-only `isElementDisabled` so the\n // hidden, force-mounted items used for closed-trigger typeahead aren't dropped by the\n // `elementsRef`/visibility filter that `disabledIndices` deliberately sidesteps.\n disabledIndices: index => isElementDisabled(listRef.current[index]),\n onMatch(index) {\n if (open) {\n store.set('activeIndex', index);\n } else {\n setValue(valuesRef.current[index], createChangeEventDetails(REASONS.none));\n }\n },\n onTyping(typing) {\n typingRef.current = typing;\n }\n });\n\n // `Select.Trigger` applies the id itself from the store, so it's deliberately not merged here.\n const mergedTriggerProps = React.useMemo(() => mergeProps(typeahead.reference, listNavigation.reference, dismiss.reference, click.reference, interactionTypeProps), [click.reference, typeahead.reference, listNavigation.reference, dismiss.reference, interactionTypeProps]);\n const popupProps = React.useMemo(() => mergeProps(FOCUSABLE_POPUP_PROPS, typeahead.floating, listNavigation.floating, dismiss.floating), [typeahead.floating, listNavigation.floating, dismiss.floating]);\n const itemProps = listNavigation.item ?? EMPTY_OBJECT;\n useOnFirstRender(() => {\n store.update({\n popupProps,\n triggerProps: mergedTriggerProps\n });\n });\n store.useSyncedValues({\n id: generatedId,\n modal,\n multiple,\n value,\n open,\n mounted,\n transitionStatus,\n popupProps,\n triggerProps: mergedTriggerProps,\n items,\n itemToStringLabel,\n itemToStringValue,\n isItemEqualToValue,\n openMethod: renderedOpenMethod\n });\n const contextValue = React.useMemo(() => ({\n store,\n floatingContext,\n required,\n disabled,\n readOnly,\n multiple,\n highlightItemOnHover,\n setValue,\n setOpen,\n listRef,\n popupRef,\n scrollHandlerRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef,\n itemProps,\n valueRef,\n valuesRef,\n labelsRef,\n typingRef,\n selectionRef,\n firstItemTextRef,\n selectedItemTextRef,\n validation,\n onOpenChangeComplete,\n alignItemWithTriggerActiveRef,\n initialValueRef\n }), [store, floatingContext, required, disabled, readOnly, multiple, highlightItemOnHover, setValue, setOpen, itemProps, validation, onOpenChangeComplete, handleScrollArrowVisibility]);\n const ref = useMergedRefs(inputRef, validation.inputRef);\n const hiddenInputName = multiple ? undefined : name;\n const hiddenInputs = React.useMemo(() => {\n if (!multiple || !Array.isArray(value) || !name) {\n return null;\n }\n return value.map(v => {\n const currentSerializedValue = stringifyAsValue(v, itemToStringValue);\n return /*#__PURE__*/_jsx(\"input\", {\n type: \"hidden\",\n form: form,\n name: name,\n value: currentSerializedValue,\n disabled: disabled\n }, currentSerializedValue);\n });\n }, [multiple, value, form, name, itemToStringValue, disabled]);\n return /*#__PURE__*/_jsxs(SelectRootContext.Provider, {\n value: contextValue,\n children: [children, /*#__PURE__*/_jsx(\"input\", {\n ...validation.getValidationProps(disabled, {\n onFocus() {\n // Move focus to the trigger element when the hidden input is focused.\n store.state.triggerElement?.focus({\n // Supported in Chrome from 144 (January 2026)\n focusVisible: true\n });\n },\n // Handle browser autofill.\n onChange(event) {\n // Workaround for https://github.com/react/react/issues/9023\n if (event.nativeEvent.defaultPrevented || disabled || readOnly) {\n return;\n }\n const nextValue = event.currentTarget.value;\n const details = createChangeEventDetails(REASONS.none, event.nativeEvent);\n function handleChange() {\n if (multiple) {\n // Browser autofill only writes a single scalar value.\n return;\n }\n\n // Preserve the original serialized matching, then fall back to rendered text,\n // which browsers can autofill for primitive values like `value=\"US\">United States`.\n const nextValueLower = nextValue.toLowerCase();\n let matchingIndex = valuesRef.current.findIndex(candidate => stringifyAsValue(candidate, itemToStringValue).toLowerCase() === nextValueLower || stringifyAsLabel(candidate, itemToStringLabel).toLowerCase() === nextValueLower);\n if (matchingIndex === -1) {\n matchingIndex = valuesRef.current.findIndex((_, index) => {\n const renderedLabel = labelsRef.current[index];\n return renderedLabel != null && renderedLabel.toLowerCase() === nextValueLower;\n });\n }\n const matchingValue = valuesRef.current[matchingIndex];\n if (matchingValue != null) {\n // `setValue` may be canceled by `onValueChange`; rely on `useValueChanged` to\n // mark the field dirty and run validation only when the value actually changes.\n setValue(matchingValue, details);\n }\n }\n store.set('forceMount', true);\n queueMicrotask(handleChange);\n }\n }),\n id: generatedId && hiddenInputName == null ? `${generatedId}-hidden-input` : undefined,\n form: form,\n name: hiddenInputName,\n autoComplete: autoComplete,\n value: serializedValue,\n disabled: disabled,\n required: required && !(multiple && hasSelectedValue),\n readOnly: readOnly,\n ref: ref,\n style: name ? visuallyHiddenInput : visuallyHidden,\n tabIndex: -1,\n \"aria-hidden\": true,\n suppressHydrationWarning: true\n }), hiddenInputs]\n });\n}","'use client';\n\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../internals/useBaseUiId.mjs\";\nexport function useRegisteredLabelId(idProp, setLabelId) {\n const id = useBaseUiId(idProp);\n useIsoLayoutEffect(() => {\n setLabelId(id);\n return () => {\n setLabelId(currentId => currentId === id ? undefined : currentId);\n };\n }, [id, setLabelId]);\n return id;\n}","'use client';\n\nimport { isHTMLElement } from '@floating-ui/utils/dom';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { getTarget } from \"../../floating-ui-react/utils.mjs\";\nimport { useRegisteredLabelId } from \"../../utils/useRegisteredLabelId.mjs\";\nimport { useLabelableContext } from \"./LabelableContext.mjs\";\nexport function useLabel(params = {}) {\n const {\n id: idProp,\n fallbackControlId,\n native = false,\n setLabelId: setLabelIdProp,\n focusControl: focusControlProp\n } = params;\n const {\n controlId: contextControlId,\n setLabelId: setContextLabelId\n } = useLabelableContext();\n const syncLabelId = useStableCallback(nextLabelId => {\n setContextLabelId(nextLabelId);\n setLabelIdProp?.(nextLabelId);\n });\n const id = useRegisteredLabelId(idProp, syncLabelId);\n const resolvedControlId = contextControlId ?? fallbackControlId;\n function focusControl(event) {\n if (focusControlProp) {\n focusControlProp(event, resolvedControlId);\n return;\n }\n if (!resolvedControlId) {\n return;\n }\n const controlElement = ownerDocument(event.currentTarget).getElementById(resolvedControlId);\n if (isHTMLElement(controlElement)) {\n focusElementWithVisible(controlElement);\n }\n }\n function handleInteraction(event) {\n const target = getTarget(event.nativeEvent);\n if (target?.closest('button,input,select,textarea')) {\n return;\n }\n\n // Prevent text selection when double clicking label.\n if (!event.defaultPrevented && event.detail > 1) {\n event.preventDefault();\n }\n if (native) {\n return;\n }\n focusControl(event);\n }\n return native ? {\n id,\n htmlFor: resolvedControlId ?? undefined,\n onMouseDown: handleInteraction\n } : {\n id,\n onClick: handleInteraction,\n onPointerDown(event) {\n event.preventDefault();\n }\n };\n}\nexport function focusElementWithVisible(element) {\n element.focus({\n // Available from Chrome 144+ (January 2026).\n // Safari and Firefox already support it.\n focusVisible: true\n });\n}","'use client';\n\nexport function getDefaultLabelId(id) {\n return id == null ? undefined : `${id}-label`;\n}\nexport function resolveAriaLabelledBy(fieldLabelId, localLabelId) {\n return fieldLabelId ?? localLabelId;\n}","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useLabel } from \"../../internals/labelable-provider/useLabel.mjs\";\nimport { getDefaultLabelId } from \"../../utils/resolveAriaLabelledBy.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * An accessible label that is automatically associated with the select trigger.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectLabel = /*#__PURE__*/React.forwardRef(function SelectLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n // Keep label id derived from the root and ignore runtime `id` overrides from untyped consumers.\n const elementPropsWithoutId = elementProps;\n delete elementPropsWithoutId.id;\n const fieldRootContext = useFieldRootContext();\n const {\n store\n } = useSelectRootContext();\n const triggerElement = useStore(store, selectors.triggerElement);\n const rootId = useStore(store, selectors.id);\n const defaultLabelId = getDefaultLabelId(rootId);\n const labelProps = useLabel({\n id: defaultLabelId,\n fallbackControlId: triggerElement?.id ?? rootId,\n setLabelId(nextLabelId) {\n const resolvedLabelId = typeof nextLabelId === 'function' ? nextLabelId(store.state.labelId) : nextLabelId;\n store.set('labelId', resolvedLabelId);\n }\n });\n return useRenderElement('div', componentProps, {\n ref: forwardedRef,\n state: fieldRootContext.state,\n props: [labelProps, elementProps],\n stateAttributesMapping: fieldValidityMapping\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectLabel.displayName = \"SelectLabel\";","import { ownerWindow } from '@base-ui/utils/owner';\nimport { platform } from '@base-ui/utils/platform';\n// Tolerance around the element bounds so a fast click whose pointer drifts slightly\n// during press-release isn't mistaken for a drag-off-and-release cancellation.\n// Matches typical OS/browser drag-initiation thresholds.\nconst BOUNDARY_OFFSET = 5;\n\n/**\n * Determines if a mouse event occurred within the bounds of an element\n * (including its pseudo-elements), with a small tolerance for pointer drift.\n */\nexport function isMouseWithinBounds(event, element) {\n const bounds = getPseudoElementBounds(element);\n return event.clientX >= bounds.left - BOUNDARY_OFFSET && event.clientX <= bounds.right + BOUNDARY_OFFSET && event.clientY >= bounds.top - BOUNDARY_OFFSET && event.clientY <= bounds.bottom + BOUNDARY_OFFSET;\n}\nexport function getPseudoElementBounds(element) {\n const elementRect = element.getBoundingClientRect();\n const win = ownerWindow(element);\n\n // Avoid \"Not implemented: window.getComputedStyle(elt, pseudoElt)\" in jsdom.\n if (platform.env.jsdom) {\n return elementRect;\n }\n const beforeStyles = win.getComputedStyle(element, '::before');\n const afterStyles = win.getComputedStyle(element, '::after');\n const hasPseudoElements = beforeStyles.content !== 'none' || afterStyles.content !== 'none';\n if (!hasPseudoElements) {\n return elementRect;\n }\n\n // Get dimensions of pseudo-elements\n const beforeWidth = parseFloat(beforeStyles.width) || 0;\n const beforeHeight = parseFloat(beforeStyles.height) || 0;\n const afterWidth = parseFloat(afterStyles.width) || 0;\n const afterHeight = parseFloat(afterStyles.height) || 0;\n\n // Calculate max dimensions including pseudo-elements\n const totalWidth = Math.max(elementRect.width, beforeWidth, afterWidth);\n const totalHeight = Math.max(elementRect.height, beforeHeight, afterHeight);\n\n // Calculate the differences to extend the bounds\n const widthDiff = totalWidth - elementRect.width;\n const heightDiff = totalHeight - elementRect.height;\n return {\n left: elementRect.left - widthDiff / 2,\n right: elementRect.right + widthDiff / 2,\n top: elementRect.top - heightDiff / 2,\n bottom: elementRect.bottom + heightDiff / 2\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useValueAsRef } from '@base-ui/utils/useValueAsRef';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { useFieldRootContext } from \"../../internals/field-root-context/FieldRootContext.mjs\";\nimport { useLabelableContext } from \"../../internals/labelable-provider/LabelableContext.mjs\";\nimport { pressableTriggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { fieldValidityMapping } from \"../../internals/field-constants/constants.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { selectors } from \"../store.mjs\";\nimport { isMouseWithinBounds } from \"../../utils/getPseudoElementBounds.mjs\";\nimport { contains, getFloatingFocusElement } from \"../../floating-ui-react/utils.mjs\";\nimport { mergeProps } from \"../../merge-props/index.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useLabelableId } from \"../../internals/labelable-provider/useLabelableId.mjs\";\nimport { resolveAriaLabelledBy } from \"../../utils/resolveAriaLabelledBy.mjs\";\nconst SELECTED_DELAY = 400;\nconst stateAttributesMapping = {\n ...pressableTriggerOpenStateMapping,\n ...fieldValidityMapping,\n popupSide: side => side ? {\n 'data-popup-side': side\n } : null,\n value: () => null\n};\n\n/**\n * A button that opens the select popup.\n * Renders a `<button>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectTrigger = /*#__PURE__*/React.forwardRef(function SelectTrigger(componentProps, forwardedRef) {\n const {\n render,\n className,\n id: idProp,\n disabled: disabledProp = false,\n nativeButton = true,\n style,\n ...elementProps\n } = componentProps;\n const {\n setTouched,\n setFocused,\n validationMode,\n state: fieldState,\n disabled: fieldDisabled\n } = useFieldRootContext();\n const {\n labelId: fieldLabelId\n } = useLabelableContext();\n const {\n store,\n setOpen,\n selectionRef,\n validation,\n readOnly,\n required,\n alignItemWithTriggerActiveRef,\n disabled: selectDisabled\n } = useSelectRootContext();\n const disabled = fieldDisabled || selectDisabled || disabledProp;\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const value = useStore(store, selectors.value);\n const triggerProps = useStore(store, selectors.triggerProps);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const popupSideValue = useStore(store, selectors.popupSide);\n const rootId = useStore(store, selectors.id);\n const selectLabelId = useStore(store, selectors.labelId);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const popupSide = mounted && positionerElement ? popupSideValue : null;\n const id = idProp ?? rootId;\n const ariaLabelledBy = resolveAriaLabelledBy(fieldLabelId, selectLabelId);\n useLabelableId({\n id\n });\n const positionerRef = useValueAsRef(positionerElement);\n const triggerRef = React.useRef(null);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n native: nativeButton\n });\n const setTriggerElement = store.useStateSetter('triggerElement');\n const timeoutFocus = useTimeout();\n const timeoutMouseDown = useTimeout();\n const selectedDelayTimeout = useTimeout();\n React.useEffect(() => {\n if (open) {\n // A mousedown on the trigger can open the popup under the cursor. Keep mouseup selection\n // disabled briefly so releasing over either the selected item or a neighboring item doesn't\n // commit an accidental selection. SelectItem can still opt into unselected mouseup sooner\n // after a real drag over the item.\n selectedDelayTimeout.start(SELECTED_DELAY, () => {\n selectionRef.current.allowUnselectedMouseUp = true;\n selectionRef.current.allowSelectedMouseUp = true;\n });\n return () => {\n selectedDelayTimeout.clear();\n };\n }\n selectionRef.current = {\n allowSelectedMouseUp: false,\n allowUnselectedMouseUp: false,\n dragY: 0\n };\n timeoutMouseDown.clear();\n return undefined;\n }, [open, selectionRef, timeoutMouseDown, selectedDelayTimeout]);\n const mergedProps = mergeProps(triggerProps, {\n id,\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-haspopup': 'listbox',\n 'aria-controls': open ? listElement?.id ?? getFloatingFocusElement(positionerElement)?.id : undefined,\n 'aria-labelledby': ariaLabelledBy,\n 'aria-readonly': readOnly || undefined,\n 'aria-required': required || undefined,\n tabIndex: disabled ? -1 : 0,\n onFocus(event) {\n setFocused(true);\n\n // The popup element shouldn't obscure the focused trigger.\n if (open && alignItemWithTriggerActiveRef.current) {\n setOpen(false, createChangeEventDetails(REASONS.none, event.nativeEvent));\n }\n\n // Saves a re-render on initial click: `forceMount === true` mounts\n // the items before `open === true`. We could sync those cycles better\n // without a timeout, but this is enough for now.\n timeoutFocus.start(0, () => {\n store.set('forceMount', true);\n });\n },\n onBlur(event) {\n // If focus is moving into the popup, don't count it as a blur.\n if (contains(positionerElement, event.relatedTarget)) {\n return;\n }\n setTouched(true);\n setFocused(false);\n if (validationMode === 'onBlur') {\n validation.commit(value);\n }\n },\n onMouseDown(event) {\n if (open) {\n return;\n }\n const doc = ownerDocument(event.currentTarget);\n function handleMouseUp(mouseEvent) {\n if (!triggerRef.current) {\n return;\n }\n const mouseUpTarget = mouseEvent.target;\n\n // Don't treat the release as an outside press when it lands on the trigger or inside\n // the popup positioner (or their children).\n if (contains(triggerRef.current, mouseUpTarget) || contains(positionerRef.current, mouseUpTarget)) {\n return;\n }\n if (isMouseWithinBounds(mouseEvent, triggerRef.current)) {\n return;\n }\n setOpen(false, createChangeEventDetails(REASONS.cancelOpen, mouseEvent));\n }\n\n // Firefox can fire this upon mousedown\n timeoutMouseDown.start(0, () => {\n doc.addEventListener('mouseup', handleMouseUp, {\n once: true\n });\n });\n }\n }, elementProps, getButtonProps);\n const props = validation.getValidationProps(disabled, mergedProps);\n\n // ensure nested useButton does not overwrite the combobox role:\n // <Toolbar.Button render={<Select.Trigger />} />\n props.role = 'combobox';\n const state = {\n ...fieldState,\n open,\n disabled,\n value,\n readOnly,\n popupSide,\n placeholder: !hasSelectedValue\n };\n return useRenderElement('button', componentProps, {\n ref: [forwardedRef, triggerRef, buttonRef, setTriggerElement],\n state,\n stateAttributesMapping,\n props\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectTrigger.displayName = \"SelectTrigger\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { resolveMultipleLabels, resolveSelectedLabel } from \"../../internals/resolveValueLabel.mjs\";\nimport { selectors } from \"../store.mjs\";\nconst stateAttributesMapping = {\n value: () => null\n};\n\n/**\n * A text label of the currently selected item.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectValue = /*#__PURE__*/React.forwardRef(function SelectValue(componentProps, forwardedRef) {\n const {\n className,\n render,\n children: childrenProp,\n placeholder,\n style,\n ...elementProps\n } = componentProps;\n const {\n store,\n valueRef\n } = useSelectRootContext();\n const value = useStore(store, selectors.value);\n const items = useStore(store, selectors.items);\n const itemToStringLabel = useStore(store, selectors.itemToStringLabel);\n const hasSelectedValue = useStore(store, selectors.hasSelectedValue);\n const shouldCheckNullItemLabel = !hasSelectedValue && placeholder != null && childrenProp == null;\n const hasNullLabel = useStore(store, selectors.hasNullItemLabel, shouldCheckNullItemLabel);\n const state = {\n value,\n placeholder: !hasSelectedValue\n };\n let children = null;\n if (typeof childrenProp === 'function') {\n children = childrenProp(value);\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (shouldCheckNullItemLabel && !hasNullLabel) {\n children = placeholder;\n } else if (Array.isArray(value)) {\n children = resolveMultipleLabels(value, items, itemToStringLabel);\n } else {\n children = resolveSelectedLabel(value, items, itemToStringLabel);\n }\n const element = useRenderElement('span', componentProps, {\n state,\n ref: [forwardedRef, valueRef],\n props: [{\n children\n }, elementProps],\n stateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectValue.displayName = \"SelectValue\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { triggerOpenStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * An icon that indicates that the trigger button opens a select popup.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectIcon = /*#__PURE__*/React.forwardRef(function SelectIcon(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n store\n } = useSelectRootContext();\n const open = useStore(store, selectors.open);\n const state = {\n open\n };\n const element = useRenderElement('span', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n 'aria-hidden': true,\n children: '▼'\n }, elementProps],\n stateAttributesMapping: triggerOpenStateMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectIcon.displayName = \"SelectIcon\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { FloatingPortal } from \"../../floating-ui-react/index.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * A portal element that moves the popup to a different part of the DOM.\n * By default, the portal element is appended to `<body>`.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectPortal = /*#__PURE__*/React.forwardRef(function SelectPortal(portalProps, forwardedRef) {\n const {\n store\n } = useSelectRootContext();\n const mounted = useStore(store, selectors.mounted);\n const forceMount = useStore(store, selectors.forceMount);\n const shouldRender = mounted || forceMount;\n if (!shouldRender) {\n return null;\n }\n return /*#__PURE__*/_jsx(FloatingPortal, {\n ref: forwardedRef,\n ...portalProps\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPortal.displayName = \"SelectPortal\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { selectors } from \"../store.mjs\";\nconst stateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping\n};\n\n/**\n * An overlay displayed beneath the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectBackdrop = /*#__PURE__*/React.forwardRef(function SelectBackdrop(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n store\n } = useSelectRootContext();\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const state = {\n open,\n transitionStatus\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n role: 'presentation',\n hidden: !mounted,\n style: {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n }\n }, elementProps],\n stateAttributesMapping\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectBackdrop.displayName = \"SelectBackdrop\";","'use client';\n\nimport * as React from 'react';\nexport const CompositeListContext = /*#__PURE__*/React.createContext({\n register: () => {},\n unregister: () => {},\n subscribeMapChange: () => () => {},\n nextIndexRef: {\n current: 0\n }\n});\nif (process.env.NODE_ENV !== \"production\") CompositeListContext.displayName = \"CompositeListContext\";\nexport function useCompositeListContext() {\n return React.useContext(CompositeListContext);\n}","/* eslint-disable no-bitwise */\n'use client';\n\nimport * as React from 'react';\nimport { useRefWithInit } from '@base-ui/utils/useRefWithInit';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { CompositeListContext } from \"./CompositeListContext.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * Provides context for a list of items in a composite component.\n */\nexport function CompositeList(props) {\n const {\n children,\n elementsRef,\n labelsRef,\n onMapChange: onMapChangeProp\n } = props;\n const onMapChange = useStableCallback(onMapChangeProp);\n const [, setMapTick] = React.useState(false);\n const listeners = useRefWithInit(createListeners).current;\n const map = useRefWithInit(createMap).current;\n const nextIndexRef = React.useRef(0);\n const isDirtyRef = React.useRef(true);\n const itemsRef = React.useRef([]);\n const mutationObserverRef = React.useRef(null);\n\n // Item effects can run without their parent rendering. Schedule one synchronous\n // parent update for the whole commit so refs are rebuilt before paint and while\n // the originating React event is still inside `act()` in tests.\n const scheduleMapUpdate = useStableCallback(() => {\n if (isDirtyRef.current) {\n return;\n }\n isDirtyRef.current = true;\n setMapTick(tick => !tick);\n });\n const register = useStableCallback((node, registration) => {\n map.set(node, registration);\n scheduleMapUpdate();\n });\n const unregister = useStableCallback(node => {\n map.delete(node);\n scheduleMapUpdate();\n });\n const syncRefs = useStableCallback(items => {\n const nextMap = new Map();\n elementsRef.current.length = 0;\n if (labelsRef) {\n labelsRef.current.length = 0;\n }\n items.forEach(item => {\n nextMap.set(item.element, {\n ...(item.registration.metadata ?? {}),\n index: item.index\n });\n elementsRef.current[item.index] = item.element;\n if (labelsRef) {\n labelsRef.current[item.index] = item.registration.label !== undefined ? item.registration.label : item.registration.textRef?.current?.textContent ?? item.element.textContent;\n }\n });\n nextIndexRef.current = elementsRef.current.length;\n return nextMap;\n });\n function observe(sortedNodes) {\n mutationObserverRef.current?.disconnect();\n mutationObserverRef.current = null;\n\n // A single item can't reorder.\n if (typeof MutationObserver !== 'function' || sortedNodes.length < 2) {\n return;\n }\n const mutationObserver = new MutationObserver(entries => {\n // Only verify the order after a move: a node that was removed and later\n // re-added within the same batch. Additions and removals alone can't\n // change the relative order of the remaining items, and items that mount\n // or unmount re-sort through `register`/`unregister`.\n if (!hasMovedNode(entries)) {\n return;\n }\n let previousConnectedNode = null;\n\n // If any connected node now appears before the previous connected node,\n // wrappers/items moved and the index map needs to be rebuilt.\n for (const node of sortedNodes) {\n if (!node.isConnected) {\n continue;\n }\n if (previousConnectedNode && sortByDocumentPosition(previousConnectedNode, node) > 0) {\n mutationObserver.disconnect();\n scheduleMapUpdate();\n return;\n }\n previousConnectedNode = node;\n }\n });\n mutationObserverRef.current = mutationObserver;\n\n // A reorder that changes item indexes must invert at least one adjacent pair\n // from the previous sorted order. Observing each pair's common parent catches\n // both direct item moves and ancestor wrapper moves at the boundary.\n const roots = new Set();\n for (let i = 1; i < sortedNodes.length; i += 1) {\n const root = getCommonAncestor(sortedNodes[i - 1], sortedNodes[i]);\n if (root) {\n roots.add(root);\n }\n }\n roots.forEach(root => mutationObserver.observe(root, {\n childList: true\n }));\n }\n const flush = useStableCallback(() => {\n const [items, automaticNodes] = getCompositeListSnapshot(map);\n const nextMap = syncRefs(items);\n observe(automaticNodes);\n itemsRef.current = items;\n isDirtyRef.current = false;\n listeners.forEach(listener => listener(nextMap));\n onMapChange(nextMap);\n });\n useIsoLayoutEffect(() => {\n // Re-copy the last committed snapshot when the ref objects change or Strict Mode replays\n // effects without reattaching callback refs.\n if (!isDirtyRef.current) {\n syncRefs(itemsRef.current);\n }\n return () => {\n elementsRef.current = [];\n if (labelsRef) {\n labelsRef.current = [];\n }\n };\n }, [elementsRef, labelsRef, syncRefs]);\n useIsoLayoutEffect(() => {\n if (isDirtyRef.current) {\n flush();\n }\n });\n useIsoLayoutEffect(() => {\n return () => {\n mutationObserverRef.current?.disconnect();\n // React 18 Strict Mode replays effects without replaying callback refs.\n // Mark the retained map dirty so the replay rebuilds refs and observation.\n isDirtyRef.current = true;\n };\n }, []);\n const subscribeMapChange = useStableCallback(fn => {\n listeners.add(fn);\n return () => {\n listeners.delete(fn);\n };\n });\n const contextValue = React.useMemo(() => ({\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n }), [register, unregister, subscribeMapChange, nextIndexRef]);\n return /*#__PURE__*/_jsx(CompositeListContext.Provider, {\n value: contextValue,\n children: children\n });\n}\nfunction createMap() {\n return new Map();\n}\nfunction createListeners() {\n return new Set();\n}\nfunction getCompositeListSnapshot(map) {\n const reservedIndices = new Set();\n const items = [];\n const automaticItems = [];\n map.forEach((registration, node) => {\n if (!node.isConnected) {\n return;\n }\n const index = registration.index;\n const item = {\n index: index ?? -1,\n element: node,\n registration\n };\n if (index === null) {\n automaticItems.push(item);\n } else if (index >= 0) {\n reservedIndices.add(index);\n items.push(item);\n }\n });\n let nextAutomaticIndex = 0;\n automaticItems.sort((a, b) => sortByDocumentPosition(a.element, b.element));\n automaticItems.forEach(item => {\n while (reservedIndices.has(nextAutomaticIndex)) {\n nextAutomaticIndex += 1;\n }\n item.index = nextAutomaticIndex;\n items.push(item);\n nextAutomaticIndex += 1;\n });\n if (reservedIndices.size > 0) {\n items.sort((a, b) => a.index - b.index);\n }\n return [items, automaticItems.map(item => item.element)];\n}\nfunction getCommonAncestor(firstNode, lastNode) {\n let ancestor = firstNode.parentElement;\n\n // The `parentElement` walk cannot cross shadow boundaries, so the native\n // `contains` is sufficient here.\n while (ancestor && !ancestor.contains(lastNode)) {\n ancestor = ancestor.parentElement;\n }\n return ancestor;\n}\nfunction hasMovedNode(entries) {\n for (const entry of entries) {\n for (let i = 0; i < entry.removedNodes.length; i += 1) {\n if (entry.removedNodes[i].isConnected) {\n return true;\n }\n }\n }\n return false;\n}\nfunction sortByDocumentPosition(a, b) {\n // `DOCUMENT_POSITION_CONTAINED_BY` is always reported alongside `FOLLOWING`, and `CONTAINS`\n // alongside `PRECEDING`, so testing `FOLLOWING` alone orders siblings and nested items alike.\n return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectPositionerContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectPositionerContext.displayName = \"SelectPositionerContext\";\nexport function useSelectPositionerContext() {\n const context = React.useContext(SelectPositionerContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectPositionerContext is missing. SelectPositioner parts must be placed within <Select.Positioner>.' : _formatErrorMessage(59));\n }\n return context;\n}","import * as React from 'react';\n\n/**\n * @internal\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const InternalBackdrop = /*#__PURE__*/React.forwardRef(function InternalBackdrop(props, ref) {\n const {\n cutout,\n ...otherProps\n } = props;\n let clipPath;\n if (cutout) {\n const rect = cutout.getBoundingClientRect();\n clipPath = `polygon(0% 0%,100% 0%,100% 100%,0% 100%,0% 0%,${rect.left}px ${rect.top}px,${rect.left}px ${rect.bottom}px,${rect.right}px ${rect.bottom}px,${rect.right}px ${rect.top}px,${rect.left}px ${rect.top}px)`;\n }\n return /*#__PURE__*/_jsx(\"div\", {\n ref: ref,\n role: \"presentation\"\n // Ensures Floating UI's outside press detection runs, as it considers\n // it an element that existed when the popup rendered.\n ,\n \"data-base-ui-inert\": \"\",\n ...otherProps,\n style: {\n position: 'fixed',\n inset: 0,\n userSelect: 'none',\n WebkitUserSelect: 'none',\n clipPath\n }\n });\n});\nif (process.env.NODE_ENV !== \"production\") InternalBackdrop.displayName = \"InternalBackdrop\";","export function clearStyles(element, originalStyles) {\n if (element) {\n Object.assign(element.style, originalStyles);\n }\n}\nexport const LIST_FUNCTIONAL_STYLES = {\n position: 'relative',\n maxHeight: '100%',\n overflowX: 'hidden',\n overflowY: 'auto'\n};","'use client';\n\nimport { isOverflowElement } from '@floating-ui/utils/dom';\nimport { addEventListener } from \"./addEventListener.mjs\";\nimport { platform } from \"./platform/index.mjs\";\nimport { ownerDocument, ownerWindow } from \"./owner.mjs\";\nimport { useIsoLayoutEffect } from \"./useIsoLayoutEffect.mjs\";\nimport { Timeout } from \"./useTimeout.mjs\";\nimport { AnimationFrame } from \"./useAnimationFrame.mjs\";\nlet originalHtmlStyles = {};\nlet originalBodyStyles = {};\nlet originalHtmlScrollBehavior = '';\n\n// The viewport's overflow comes from <html> when it establishes its own scroll container, and\n// propagates from <body> otherwise. An `overflow` style on the other element doesn't lock the page.\nfunction getViewportScroller(html, body) {\n return isOverflowElement(html) ? html : body;\n}\nfunction isPageScrollLocked(win, html, body) {\n return /hidden|clip/.test(win.getComputedStyle(getViewportScroller(html, body)).overflowY);\n}\nfunction hasInsetScrollbars(referenceElement) {\n if (typeof document === 'undefined') {\n return false;\n }\n const doc = ownerDocument(referenceElement);\n const win = ownerWindow(doc);\n return win.innerWidth - doc.documentElement.clientWidth > 0;\n}\nfunction supportsStableScrollbarGutter(referenceElement) {\n const supported = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('scrollbar-gutter', 'stable');\n if (!supported || typeof document === 'undefined') {\n return false;\n }\n const doc = ownerDocument(referenceElement);\n const html = doc.documentElement;\n const body = doc.body;\n const scrollContainer = getViewportScroller(html, body);\n const originalScrollContainerOverflowY = scrollContainer.style.overflowY;\n const originalHtmlStyleGutter = html.style.scrollbarGutter;\n html.style.scrollbarGutter = 'stable';\n scrollContainer.style.overflowY = 'scroll';\n const before = scrollContainer.offsetWidth;\n scrollContainer.style.overflowY = 'hidden';\n const after = scrollContainer.offsetWidth;\n scrollContainer.style.overflowY = originalScrollContainerOverflowY;\n html.style.scrollbarGutter = originalHtmlStyleGutter;\n return before === after;\n}\nfunction preventScrollOverlayScrollbars(referenceElement) {\n const doc = ownerDocument(referenceElement);\n const html = doc.documentElement;\n const body = doc.body;\n\n // If an `overflow` style is present on <html>, we need to lock it, because a lock on <body>\n // won't have any effect.\n // But if <body> has an `overflow` style (like `overflow-x: hidden`), we need to lock it\n // instead, as sticky elements shift otherwise.\n const elementToLock = getViewportScroller(html, body);\n const originalElementToLockStyles = {\n overflowY: elementToLock.style.overflowY,\n overflowX: elementToLock.style.overflowX\n };\n Object.assign(elementToLock.style, {\n overflowY: 'hidden',\n overflowX: 'hidden'\n });\n return () => {\n Object.assign(elementToLock.style, originalElementToLockStyles);\n };\n}\nfunction preventScrollInsetScrollbars(referenceElement) {\n const doc = ownerDocument(referenceElement);\n const html = doc.documentElement;\n const body = doc.body;\n const win = ownerWindow(html);\n let scrollTop = 0;\n let scrollLeft = 0;\n let updateGutterOnly = false;\n const resizeFrame = AnimationFrame.create();\n\n // Pinch-zoom in Safari causes a shift. Just don't lock scroll if there's any pinch-zoom.\n if (platform.engine.webkit && (win.visualViewport?.scale ?? 1) !== 1) {\n return () => {};\n }\n function lockScroll() {\n /* DOM reads: */\n\n const htmlStyles = win.getComputedStyle(html);\n const bodyStyles = win.getComputedStyle(body);\n const htmlScrollbarGutterValue = htmlStyles.scrollbarGutter || '';\n const hasBothEdges = htmlScrollbarGutterValue.includes('both-edges');\n const scrollbarGutterValue = hasBothEdges ? 'stable both-edges' : 'stable';\n scrollTop = html.scrollTop;\n scrollLeft = html.scrollLeft;\n originalHtmlStyles = {\n scrollbarGutter: html.style.scrollbarGutter,\n overflowY: html.style.overflowY,\n overflowX: html.style.overflowX\n };\n originalHtmlScrollBehavior = html.style.scrollBehavior;\n originalBodyStyles = {\n position: body.style.position,\n height: body.style.height,\n width: body.style.width,\n boxSizing: body.style.boxSizing,\n overflowY: body.style.overflowY,\n overflowX: body.style.overflowX,\n scrollBehavior: body.style.scrollBehavior\n };\n const isScrollableY = html.scrollHeight > html.clientHeight;\n const isScrollableX = html.scrollWidth > html.clientWidth;\n const hasConstantOverflowY = htmlStyles.overflowY === 'scroll' || bodyStyles.overflowY === 'scroll';\n const hasConstantOverflowX = htmlStyles.overflowX === 'scroll' || bodyStyles.overflowX === 'scroll';\n\n // Values can be negative in Firefox\n const scrollbarWidth = Math.max(0, win.innerWidth - body.clientWidth);\n const scrollbarHeight = Math.max(0, win.innerHeight - body.clientHeight);\n\n // Avoid shift due to the default <body> margin. This does cause elements to be clipped\n // with whitespace. Warn if <body> has margins?\n const marginY = parseFloat(bodyStyles.marginTop) + parseFloat(bodyStyles.marginBottom);\n const marginX = parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight);\n const elementToLock = getViewportScroller(html, body);\n updateGutterOnly = supportsStableScrollbarGutter(referenceElement);\n\n /*\n * DOM writes:\n * Do not read the DOM past this point!\n */\n\n if (updateGutterOnly) {\n html.style.scrollbarGutter = scrollbarGutterValue;\n elementToLock.style.overflowY = 'hidden';\n elementToLock.style.overflowX = 'hidden';\n return;\n }\n Object.assign(html.style, {\n scrollbarGutter: scrollbarGutterValue,\n overflowY: 'hidden',\n overflowX: 'hidden'\n });\n if (isScrollableY || hasConstantOverflowY) {\n html.style.overflowY = 'scroll';\n }\n if (isScrollableX || hasConstantOverflowX) {\n html.style.overflowX = 'scroll';\n }\n Object.assign(body.style, {\n position: 'relative',\n height: marginY || scrollbarHeight ? `calc(100dvh - ${marginY + scrollbarHeight}px)` : '100dvh',\n width: marginX || scrollbarWidth ? `calc(100vw - ${marginX + scrollbarWidth}px)` : '100vw',\n boxSizing: 'border-box',\n // Assign the longhands that `cleanup` restores, so nothing is left behind.\n overflowY: 'hidden',\n overflowX: 'hidden',\n scrollBehavior: 'unset'\n });\n body.scrollTop = scrollTop;\n body.scrollLeft = scrollLeft;\n html.setAttribute('data-base-ui-scroll-locked', '');\n html.style.scrollBehavior = 'unset';\n }\n function cleanup() {\n Object.assign(html.style, originalHtmlStyles);\n Object.assign(body.style, originalBodyStyles);\n if (!updateGutterOnly) {\n html.scrollTop = scrollTop;\n html.scrollLeft = scrollLeft;\n html.removeAttribute('data-base-ui-scroll-locked');\n html.style.scrollBehavior = originalHtmlScrollBehavior;\n }\n }\n function handleResize() {\n cleanup();\n resizeFrame.request(lockScroll);\n }\n lockScroll();\n const unsubscribeResize = addEventListener(win, 'resize', handleResize);\n return () => {\n resizeFrame.cancel();\n cleanup();\n // Sometimes this cleanup can run after test teardown because it is called\n // in a `setTimeout(fn, 0)`. Guard the returned cleanup to avoid calling\n // `removeEventListener` when it is no longer available in tests.\n if (typeof win.removeEventListener === 'function') {\n unsubscribeResize();\n }\n };\n}\nclass ScrollLocker {\n lockCount = 0;\n restore = null;\n timeoutLock = Timeout.create();\n timeoutUnlock = Timeout.create();\n acquire(referenceElement) {\n this.lockCount += 1;\n if (this.lockCount === 1 && this.restore === null) {\n this.timeoutLock.start(0, () => this.lock(referenceElement));\n }\n return this.release;\n }\n release = () => {\n this.lockCount -= 1;\n if (this.lockCount === 0 && this.restore) {\n this.timeoutUnlock.start(0, this.unlock);\n }\n };\n unlock = () => {\n if (this.lockCount === 0 && this.restore) {\n this.restore?.();\n this.restore = null;\n }\n };\n lock(referenceElement) {\n if (this.lockCount === 0 || this.restore !== null) {\n return;\n }\n const doc = ownerDocument(referenceElement);\n const html = doc.documentElement;\n const body = doc.body;\n const win = ownerWindow(html);\n\n // The page is already locked, either by the site author or by a non-Base UI overlay that\n // hasn't cleaned up yet. Leave it alone and wait for the lock to clear before taking over,\n // otherwise we'd snapshot the locked state and restore it after our own lock is released.\n if (isPageScrollLocked(win, html, body)) {\n const observer = new win.MutationObserver(() => {\n if (isPageScrollLocked(win, html, body)) {\n return;\n }\n observer.disconnect();\n this.restore = null;\n this.lock(referenceElement);\n });\n\n // Watch every attribute: locks are applied through inline styles, classes, or attributes\n // paired with a stylesheet (`data-scroll-locked` in react-remove-scroll, for example).\n const options = {\n attributes: true\n };\n observer.observe(html, options);\n observer.observe(body, options);\n this.restore = () => observer.disconnect();\n return;\n }\n const hasOverlayScrollbars = platform.os.ios || !hasInsetScrollbars(referenceElement);\n\n // On iOS, scroll locking does not work if the navbar is collapsed. Due to numerous\n // side effects and bugs that arise on iOS, it must be researched extensively before\n // being enabled to ensure it doesn't cause the following issues:\n // - Textboxes must scroll into view when focused, nor cause a glitchy scroll animation.\n // - The navbar must not force itself into view and cause layout shift.\n // - Scroll containers must not flicker upon closing a popup when it has an exit animation.\n this.restore = hasOverlayScrollbars ? preventScrollOverlayScrollbars(referenceElement) : preventScrollInsetScrollbars(referenceElement);\n }\n}\nconst SCROLL_LOCKER = new ScrollLocker();\n\n/**\n * Locks the scroll of the document when enabled.\n *\n * @param enabled - Whether to enable the scroll lock.\n * @param referenceElement - Element to use as a reference for lock calculations.\n */\nexport function useScrollLock(enabled = true, referenceElement = null) {\n useIsoLayoutEffect(() => {\n if (!enabled) {\n return undefined;\n }\n return SCROLL_LOCKER.acquire(referenceElement);\n }, [enabled, referenceElement]);\n}","'use client';\n\nimport * as React from 'react';\nimport { ownerDocument } from '@base-ui/utils/owner';\nimport { useScrollLock } from '@base-ui/utils/useScrollLock';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\n\n// Touch-opened popups normally avoid scroll locking so users can still swipe outside to dismiss.\n// This hook re-enables scroll lock only when the popup is effectively full-width.\n// Treat popups with up to 20px of total horizontal gutter as full-width so common ~10px side\n// padding still locks scroll, since that leaves too little outside space for a reliable swipe.\nconst VIEWPORT_WIDTH_TOLERANCE_PX = 20;\n\n/**\n * Manages scroll lock for anchored popups. For non-touch opens, scroll lock is applied when\n * enabled. For touch opens, scroll lock is applied only when the positioner width is effectively\n * viewport-sized.\n */\nexport function useAnchoredPopupScrollLock(enabled, touchOpen, positionerElement, referenceElement) {\n const [touchOpenShouldLockScroll, setTouchOpenShouldLockScroll] = React.useState(false);\n useIsoLayoutEffect(() => {\n if (!enabled || !touchOpen || positionerElement == null) {\n setTouchOpenShouldLockScroll(false);\n return;\n }\n const viewportWidth = ownerDocument(positionerElement).documentElement.clientWidth;\n const popupWidth = positionerElement.offsetWidth;\n setTouchOpenShouldLockScroll(viewportWidth > 0 && popupWidth > 0 && popupWidth >= viewportWidth - VIEWPORT_WIDTH_TOLERANCE_PX);\n }, [enabled, touchOpen, positionerElement]);\n useScrollLock(enabled && (!touchOpen || touchOpenShouldLockScroll), referenceElement);\n}","'use client';\n\nimport * as React from 'react';\nimport { inertValue } from '@base-ui/utils/inertValue';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { CompositeList } from \"../../internals/composite/list/CompositeList.mjs\";\nimport { useAnchorPositioning } from \"../../internals/useAnchorPositioning.mjs\";\nimport { SelectPositionerContext } from \"./SelectPositionerContext.mjs\";\nimport { InternalBackdrop } from \"../../utils/InternalBackdrop.mjs\";\nimport { DROPDOWN_COLLISION_AVOIDANCE } from \"../../internals/constants.mjs\";\nimport { clearStyles } from \"../popup/utils.mjs\";\nimport { selectors } from \"../store.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { findItemIndex } from \"../../internals/itemEquality.mjs\";\nimport { usePositioner } from \"../../utils/usePositioner.mjs\";\nimport { useAnchoredPopupScrollLock } from \"../../utils/useAnchoredPopupScrollLock.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst FIXED = {\n position: 'fixed'\n};\n\n/**\n * Positions the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPositioner = /*#__PURE__*/React.forwardRef(function SelectPositioner(componentProps, forwardedRef) {\n const {\n anchor,\n className,\n render,\n // `useAnchorPositioning` applies the same defaults to the undefined values; the names\n // remain destructured to exclude the props from `elementProps`.\n positionMethod,\n side,\n align,\n sideOffset,\n alignOffset,\n collisionBoundary = 'clipping-ancestors',\n collisionPadding,\n arrowPadding,\n sticky,\n disableAnchorTracking,\n alignItemWithTrigger = true,\n collisionAvoidance = DROPDOWN_COLLISION_AVOIDANCE,\n style,\n ...elementProps\n } = componentProps;\n const {\n store,\n listRef,\n labelsRef,\n alignItemWithTriggerActiveRef,\n selectedItemTextRef,\n valuesRef,\n initialValueRef,\n popupRef,\n setValue,\n floatingContext: floatingRootContext\n } = useSelectRootContext();\n const open = useStore(store, selectors.open);\n const mounted = useStore(store, selectors.mounted);\n const modal = useStore(store, selectors.modal);\n const value = useStore(store, selectors.value);\n const openMethod = useStore(store, selectors.openMethod);\n const positionerElement = useStore(store, selectors.positionerElement);\n const triggerElement = useStore(store, selectors.triggerElement);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const scrollUpArrowRef = React.useRef(null);\n const scrollDownArrowRef = React.useRef(null);\n const [controlledAlignItemWithTrigger, setControlledAlignItemWithTrigger] = React.useState(alignItemWithTrigger);\n const alignItemWithTriggerActive = mounted && controlledAlignItemWithTrigger && openMethod !== 'touch';\n if (!mounted && controlledAlignItemWithTrigger !== alignItemWithTrigger) {\n setControlledAlignItemWithTrigger(alignItemWithTrigger);\n }\n React.useImperativeHandle(alignItemWithTriggerActiveRef, () => alignItemWithTriggerActive);\n useAnchoredPopupScrollLock((alignItemWithTriggerActive || modal) && open, openMethod === 'touch', positionerElement, triggerElement);\n const positioning = useAnchorPositioning({\n anchor,\n floatingRootContext,\n positionMethod,\n mounted,\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n disableAnchorTracking: disableAnchorTracking ?? alignItemWithTriggerActive,\n collisionAvoidance,\n keepMounted: true\n });\n const renderedSide = alignItemWithTriggerActive ? 'none' : positioning.side;\n const positionerStyles = alignItemWithTriggerActive ? FIXED : positioning.positionerStyles;\n const state = {\n open,\n side: renderedSide,\n align: positioning.align,\n anchorHidden: positioning.anchorHidden\n };\n useIsoLayoutEffect(() => {\n store.set('popupSide', positioning.side);\n }, [store, positioning.side]);\n const setPositionerElement = store.useStateSetter('positionerElement');\n const element = usePositioner(componentProps, state, {\n styles: positionerStyles,\n transitionStatus,\n props: elementProps,\n refs: [forwardedRef, setPositionerElement],\n hidden: !mounted,\n inert: !open\n });\n const prevMapSizeRef = React.useRef(0);\n const onMapChange = useStableCallback(map => {\n if (valuesRef.current.length === 0) {\n return;\n }\n const prevSize = prevMapSizeRef.current;\n prevMapSizeRef.current = map.size;\n if (map.size === prevSize) {\n return;\n }\n const eventDetails = createChangeEventDetails(REASONS.none);\n if (prevSize !== 0 && !store.state.multiple && value !== null) {\n const selectedValueIndex = findItemIndex(valuesRef.current, value, isItemEqualToValue);\n if (selectedValueIndex === -1) {\n const initialSelectedValue = initialValueRef.current;\n const hasInitial = initialSelectedValue != null && findItemIndex(valuesRef.current, initialSelectedValue, isItemEqualToValue) !== -1;\n const nextValue = hasInitial ? initialSelectedValue : null;\n setValue(nextValue, eventDetails);\n if (nextValue === null) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (prevSize !== 0 && store.state.multiple && Array.isArray(value)) {\n const nextValue = value.filter(selectedItemValue => findItemIndex(valuesRef.current, selectedItemValue, isItemEqualToValue) !== -1);\n if (nextValue.length !== value.length) {\n setValue(nextValue, eventDetails);\n if (nextValue.length === 0) {\n store.set('selectedIndex', null);\n selectedItemTextRef.current = null;\n }\n }\n }\n if (open && alignItemWithTriggerActive) {\n store.update({\n scrollUpArrowVisible: false,\n scrollDownArrowVisible: false\n });\n const stylesToClear = {\n height: ''\n };\n clearStyles(positionerElement, stylesToClear);\n clearStyles(popupRef.current, stylesToClear);\n }\n });\n const contextValue = React.useMemo(() => ({\n ...positioning,\n side: renderedSide,\n alignItemWithTriggerActive,\n setControlledAlignItemWithTrigger,\n scrollUpArrowRef,\n scrollDownArrowRef\n }), [positioning, renderedSide, alignItemWithTriggerActive, setControlledAlignItemWithTrigger]);\n return /*#__PURE__*/_jsx(CompositeList, {\n elementsRef: listRef,\n labelsRef: labelsRef,\n onMapChange: onMapChange,\n children: /*#__PURE__*/_jsxs(SelectPositionerContext.Provider, {\n value: contextValue,\n children: [mounted && modal && /*#__PURE__*/_jsx(InternalBackdrop, {\n inert: inertValue(!open),\n cutout: triggerElement\n }), element]\n })\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPositioner.displayName = \"SelectPositioner\";","import { jsx as _jsx } from \"react/jsx-runtime\";\nconst DISABLE_SCROLLBAR_CLASS_NAME = 'base-ui-disable-scrollbar';\nexport const styleDisableScrollbar = {\n className: DISABLE_SCROLLBAR_CLASS_NAME,\n getElement(nonce) {\n return /*#__PURE__*/_jsx(\"style\", {\n nonce: nonce,\n href: DISABLE_SCROLLBAR_CLASS_NAME,\n precedence: \"base-ui:low\",\n children: `.${DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.${DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}`\n });\n }\n};\nif (process.env.NODE_ENV !== \"production\") styleDisableScrollbar.getElement.displayName = \"styleDisableScrollbar.getElement\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const ToolbarRootContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") ToolbarRootContext.displayName = \"ToolbarRootContext\";\nexport function useToolbarRootContext(optional) {\n const context = React.useContext(ToolbarRootContext);\n if (context === undefined && !optional) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: ToolbarRootContext is missing. Toolbar parts must be placed within <Toolbar.Root>.' : _formatErrorMessage(69));\n }\n return context;\n}","import { isHTMLElement } from '@floating-ui/utils/dom';\nexport { stopEvent, isIndexOutOfListBounds, isListIndexDisabled, findNonDisabledListIndex, getMaxListIndex, getMinListIndex } from \"../../floating-ui-react/utils.mjs\";\nexport const ARROW_UP = 'ArrowUp';\nexport const ARROW_DOWN = 'ArrowDown';\nexport const ARROW_LEFT = 'ArrowLeft';\nexport const ARROW_RIGHT = 'ArrowRight';\nexport const HOME = 'Home';\nexport const END = 'End';\nexport const PAGE_UP = 'PageUp';\nexport const PAGE_DOWN = 'PageDown';\nexport const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);\nexport const SHIFT = 'Shift';\nexport const MODIFIER_KEYS = [SHIFT, 'Control', 'Alt', 'Meta'];\nfunction isInputElement(element) {\n return isHTMLElement(element) && element.tagName === 'INPUT';\n}\nexport function isNativeInput(element) {\n if (isInputElement(element) && element.selectionStart != null) {\n return true;\n }\n if (isHTMLElement(element) && element.tagName === 'TEXTAREA') {\n return true;\n }\n return false;\n}\nexport function scrollIntoViewIfNeeded(scrollContainer, element, direction, orientation) {\n if (!scrollContainer || !element || !element.scrollTo) {\n return;\n }\n let targetX = scrollContainer.scrollLeft;\n let targetY = scrollContainer.scrollTop;\n const isOverflowingX = scrollContainer.clientWidth < scrollContainer.scrollWidth;\n const isOverflowingY = scrollContainer.clientHeight < scrollContainer.scrollHeight;\n if (isOverflowingX && orientation !== 'vertical') {\n const elementOffsetLeft = getOffset(scrollContainer, element, 'left');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (direction === 'ltr') {\n if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n } else if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n }\n }\n if (direction === 'rtl') {\n if (elementOffsetLeft - elementStyles.scrollMarginLeft < scrollContainer.scrollLeft + containerStyles.scrollPaddingLeft) {\n // overflow to the left, scroll to align left edges\n targetX = elementOffsetLeft - elementStyles.scrollMarginLeft - containerStyles.scrollPaddingLeft;\n } else if (elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight > scrollContainer.scrollLeft + scrollContainer.clientWidth - containerStyles.scrollPaddingRight) {\n // overflow to the right, scroll to align right edges\n targetX = elementOffsetLeft + element.offsetWidth + elementStyles.scrollMarginRight - scrollContainer.clientWidth + containerStyles.scrollPaddingRight;\n }\n }\n }\n if (isOverflowingY && orientation !== 'horizontal') {\n const elementOffsetTop = getOffset(scrollContainer, element, 'top');\n const containerStyles = getStyles(scrollContainer);\n const elementStyles = getStyles(element);\n if (elementOffsetTop - elementStyles.scrollMarginTop < scrollContainer.scrollTop + containerStyles.scrollPaddingTop) {\n // overflow upwards, align top edges\n targetY = elementOffsetTop - elementStyles.scrollMarginTop - containerStyles.scrollPaddingTop;\n } else if (elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom > scrollContainer.scrollTop + scrollContainer.clientHeight - containerStyles.scrollPaddingBottom) {\n // overflow downwards, align bottom edges\n targetY = elementOffsetTop + element.offsetHeight + elementStyles.scrollMarginBottom - scrollContainer.clientHeight + containerStyles.scrollPaddingBottom;\n }\n }\n scrollContainer.scrollTo({\n left: targetX,\n top: targetY,\n behavior: 'auto'\n });\n}\nfunction getOffset(ancestor, element, side) {\n const propName = side === 'left' ? 'offsetLeft' : 'offsetTop';\n let result = 0;\n while (element.offsetParent) {\n result += element[propName];\n if (element.offsetParent === ancestor) {\n break;\n }\n element = element.offsetParent;\n }\n return result;\n}\nfunction getStyles(element) {\n const styles = getComputedStyle(element);\n return {\n scrollMarginTop: parseFloat(styles.scrollMarginTop) || 0,\n scrollMarginRight: parseFloat(styles.scrollMarginRight) || 0,\n scrollMarginBottom: parseFloat(styles.scrollMarginBottom) || 0,\n scrollMarginLeft: parseFloat(styles.scrollMarginLeft) || 0,\n scrollPaddingTop: parseFloat(styles.scrollPaddingTop) || 0,\n scrollPaddingRight: parseFloat(styles.scrollPaddingRight) || 0,\n scrollPaddingBottom: parseFloat(styles.scrollPaddingBottom) || 0,\n scrollPaddingLeft: parseFloat(styles.scrollPaddingLeft) || 0\n };\n}","'use client';\n\nimport * as React from 'react';\nexport const CSPContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") CSPContext.displayName = \"CSPContext\";\nconst DEFAULT_CSP_CONTEXT_VALUE = {\n disableStyleElements: false\n};\nexport function useCSPContext() {\n return React.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;\n}","'use client';\n\nimport * as React from 'react';\nimport { rectToClientRect } from '@floating-ui/utils';\nimport { addEventListener } from '@base-ui/utils/addEventListener';\nimport { platform } from '@base-ui/utils/platform';\nimport { useStableCallback } from '@base-ui/utils/useStableCallback';\nimport { ownerDocument, ownerWindow } from '@base-ui/utils/owner';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStore } from '@base-ui/utils/store';\nimport { useAnimationFrame } from '@base-ui/utils/useAnimationFrame';\nimport { FloatingFocusManager, platform as floatingPlatform } from \"../../floating-ui-react/index.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { popupStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.mjs\";\nimport { styleDisableScrollbar } from \"../../utils/styles.mjs\";\nimport { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { selectors } from \"../store.mjs\";\nimport { clearStyles, LIST_FUNCTIONAL_STYLES } from \"./utils.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { useToolbarRootContext } from \"../../toolbar/root/ToolbarRootContext.mjs\";\nimport { COMPOSITE_KEYS } from \"../../internals/composite/composite.mjs\";\nimport { getDisabledMountTransitionStyles } from \"../../internals/getDisabledMountTransitionStyles.mjs\";\nimport { clamp } from \"../../internals/clamp.mjs\";\nimport { getMaxScrollOffset, SCROLL_EDGE_TOLERANCE_PX } from \"../../utils/scrollEdges.mjs\";\nimport { useCSPContext } from \"../../internals/csp-context/CSPContext.mjs\";\nimport { useDirection } from \"../../internals/direction-context/DirectionContext.mjs\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst stateAttributesMapping = {\n ...popupStateMapping,\n ...transitionStatusMapping\n};\n\n/**\n * A container for the select list.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectPopup = /*#__PURE__*/React.forwardRef(function SelectPopup(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n finalFocus,\n ...elementProps\n } = componentProps;\n const {\n store,\n popupRef,\n onOpenChangeComplete,\n setOpen,\n valueRef,\n firstItemTextRef,\n selectedItemTextRef,\n multiple,\n handleScrollArrowVisibility,\n scrollHandlerRef,\n listRef,\n highlightItemOnHover,\n floatingContext: floatingRootContext\n } = useSelectRootContext();\n const {\n side,\n align,\n alignItemWithTriggerActive,\n isPositioned,\n setControlledAlignItemWithTrigger\n } = useSelectPositionerContext();\n const insideToolbar = useToolbarRootContext(true) != null;\n const direction = useDirection();\n const {\n nonce,\n disableStyleElements\n } = useCSPContext();\n const id = useStore(store, selectors.id);\n const open = useStore(store, selectors.open);\n const openMethod = useStore(store, selectors.openMethod);\n const mounted = useStore(store, selectors.mounted);\n const popupProps = useStore(store, selectors.popupProps);\n const transitionStatus = useStore(store, selectors.transitionStatus);\n const triggerElement = useStore(store, selectors.triggerElement);\n const positionerElement = useStore(store, selectors.positionerElement);\n const listElement = useStore(store, selectors.listElement);\n const reachedMaxHeightRef = React.useRef(false);\n const initialPlacedRef = React.useRef(false);\n const originalPositionerStylesRef = React.useRef({});\n const scrollArrowFrame = useAnimationFrame();\n const handleScroll = useStableCallback(scroller => {\n if (!positionerElement || !popupRef.current || !initialPlacedRef.current) {\n return;\n }\n const isTopPositioned = positionerElement.style.top === '0px';\n const isBottomPositioned = positionerElement.style.bottom === '0px';\n if (reachedMaxHeightRef.current || !alignItemWithTriggerActive || !isTopPositioned && !isBottomPositioned) {\n handleScrollArrowVisibility(scroller);\n return;\n }\n const scale = getScale(positionerElement);\n const currentHeight = normalizeSize(positionerElement.getBoundingClientRect().height, 'y', scale);\n const doc = ownerDocument(positionerElement);\n const win = ownerWindow(positionerElement);\n const positionerStyles = win.getComputedStyle(positionerElement);\n const marginTop = parseFloat(positionerStyles.marginTop);\n const marginBottom = parseFloat(positionerStyles.marginBottom);\n const maxPopupHeight = getMaxPopupHeight(win.getComputedStyle(popupRef.current));\n const maxAvailableHeight = Math.min(doc.documentElement.clientHeight - marginTop - marginBottom, maxPopupHeight);\n const scrollTop = scroller.scrollTop;\n const maxScrollTop = getMaxScrollTop(scroller);\n\n // `Infinity` requests a scroll to the recomputed maximum offset.\n let nextScrollTop = null;\n const setHeight = height => {\n positionerElement.style.height = `${height}px`;\n };\n const diff = isTopPositioned ? maxScrollTop - scrollTop : scrollTop;\n const nextHeight = Math.min(currentHeight + diff, maxAvailableHeight);\n if (diff <= SCROLL_EDGE_TOLERANCE_PX) {\n const heightDelta = clamp(diff, 0, maxAvailableHeight - currentHeight);\n if (heightDelta > 0) {\n // Consume the remaining scroll in height.\n setHeight(currentHeight + heightDelta);\n }\n scroller.scrollTop = isTopPositioned ? maxScrollTop : 0;\n if (maxAvailableHeight - (currentHeight + heightDelta) <= SCROLL_EDGE_TOLERANCE_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility(scroller);\n return;\n }\n if (maxAvailableHeight - nextHeight > SCROLL_EDGE_TOLERANCE_PX) {\n nextScrollTop = isTopPositioned ? Infinity : 0;\n } else if (isBottomPositioned && scrollTop < maxScrollTop) {\n const overshoot = currentHeight + diff - maxAvailableHeight;\n nextScrollTop = scrollTop - (diff - overshoot);\n }\n const nextPositionerHeight = Math.ceil(nextHeight);\n if (nextPositionerHeight !== 0) {\n setHeight(nextPositionerHeight);\n }\n if (nextScrollTop != null) {\n // Recompute bounds after resizing (clientHeight likely changed).\n const target = clamp(nextScrollTop, 0, getMaxScrollTop(scroller));\n\n // Avoid adjustments that re-trigger scroll events forever.\n if (Math.abs(scroller.scrollTop - target) > SCROLL_EDGE_TOLERANCE_PX) {\n scroller.scrollTop = target;\n }\n }\n if (nextPositionerHeight >= maxAvailableHeight - SCROLL_EDGE_TOLERANCE_PX) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility(scroller);\n });\n React.useImperativeHandle(scrollHandlerRef, () => handleScroll, [handleScroll]);\n useOpenChangeComplete({\n open,\n ref: popupRef,\n onComplete() {\n if (open) {\n onOpenChangeComplete?.(true);\n }\n }\n });\n const state = {\n open,\n transitionStatus,\n side,\n align\n };\n useIsoLayoutEffect(() => {\n if (!positionerElement || !popupRef.current || Object.keys(originalPositionerStylesRef.current).length) {\n return;\n }\n originalPositionerStylesRef.current = {\n top: positionerElement.style.top || '0',\n left: positionerElement.style.left || '0',\n right: positionerElement.style.right,\n height: positionerElement.style.height,\n bottom: positionerElement.style.bottom,\n minHeight: positionerElement.style.minHeight,\n maxHeight: positionerElement.style.maxHeight,\n marginTop: positionerElement.style.marginTop,\n marginBottom: positionerElement.style.marginBottom\n };\n }, [popupRef, positionerElement]);\n useIsoLayoutEffect(() => {\n if (open || alignItemWithTriggerActive) {\n return;\n }\n initialPlacedRef.current = false;\n reachedMaxHeightRef.current = false;\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n }, [open, alignItemWithTriggerActive, positionerElement, popupRef]);\n useIsoLayoutEffect(() => {\n const popupElement = popupRef.current;\n\n // Wait for Floating UI's first positioning pass before reading DOM geometry.\n // We replace the final coordinates for aligned selects, but still need middleware\n // like `size()` to set CSS variables such as `--anchor-width`.\n if (!open || !triggerElement || !positionerElement || !popupElement || alignItemWithTriggerActive && !isPositioned || store.state.transitionStatus === 'ending') {\n return;\n }\n initialPlacedRef.current = true;\n popupElement.style.removeProperty('--transform-origin');\n if (!alignItemWithTriggerActive) {\n // The wrapper supplies the scroller: the list owns scrolling once it has mounted, and\n // this effect re-runs (cancelling the stale frame) when that happens.\n scrollArrowFrame.request(() => handleScrollArrowVisibility(listElement || popupElement));\n return;\n }\n\n // Ensure we remove any transforms that can affect the location of the popup\n // and therefore the calculations.\n const restoreTransformStyles = unsetTransformStyles(popupElement);\n try {\n let textElement = selectedItemTextRef.current;\n if (!textElement?.isConnected) {\n const hasSelectedValue = selectors.hasSelectedValue(store.state);\n textElement = !hasSelectedValue && firstItemTextRef.current?.isConnected ? firstItemTextRef.current : null;\n }\n const valueElement = valueRef.current;\n const win = ownerWindow(positionerElement);\n const positionerStyles = win.getComputedStyle(positionerElement);\n const popupStyles = win.getComputedStyle(popupElement);\n const doc = ownerDocument(triggerElement);\n const scale = getScale(triggerElement);\n const triggerRect = normalizeRect(triggerElement.getBoundingClientRect(), scale);\n const positionerRect = normalizeRect(positionerElement.getBoundingClientRect(), scale);\n const triggerHeight = triggerRect.height;\n const scroller = listElement || popupElement;\n const scrollHeight = scroller.scrollHeight;\n const borderBottom = parseFloat(popupStyles.borderBottomWidth);\n // The `|| N` fallbacks cover an unset/`auto` value (parses to `NaN`). Note a literal `0`\n // also resolves to the fallback, so an explicit `margin: 0` or `min-height: 0` still takes\n // the default below.\n const marginTop = parseFloat(positionerStyles.marginTop) || 10;\n const marginBottom = parseFloat(positionerStyles.marginBottom) || 10;\n const minHeight = parseFloat(positionerStyles.minHeight) || 100;\n const maxPopupHeight = getMaxPopupHeight(popupStyles);\n const paddingLeft = 5;\n const paddingRight = 5;\n const triggerCollisionThreshold = 20;\n const viewportHeight = doc.documentElement.clientHeight - marginTop - marginBottom;\n const viewportWidth = doc.documentElement.clientWidth;\n const availableSpaceBeneathTrigger = viewportHeight - triggerRect.bottom + triggerHeight;\n let textRect;\n let alignedLeft = direction === 'rtl' ? triggerRect.right - positionerRect.width : triggerRect.left;\n let offsetY = 0;\n if (textElement && valueElement) {\n const valueRect = normalizeRect(valueElement.getBoundingClientRect(), scale);\n textRect = normalizeRect(textElement.getBoundingClientRect(), scale);\n alignedLeft = positionerRect.left + (direction === 'rtl' ? valueRect.right - textRect.right : valueRect.left - textRect.left);\n const valueCenterFromTriggerTop = valueRect.top - triggerRect.top + valueRect.height / 2;\n const textCenterFromPositionerTop = textRect.top - positionerRect.top + textRect.height / 2;\n offsetY = textCenterFromPositionerTop - valueCenterFromTriggerTop;\n }\n const idealHeight = availableSpaceBeneathTrigger + offsetY + marginBottom + borderBottom;\n let height = Math.min(viewportHeight, idealHeight);\n const maxHeight = viewportHeight - marginTop - marginBottom;\n const scrollTop = idealHeight - height;\n const maxRight = viewportWidth - paddingRight;\n positionerElement.style.left = `${clamp(alignedLeft, paddingLeft, maxRight - positionerRect.width)}px`;\n positionerElement.style.height = `${height}px`;\n // `none` (not the invalid `auto`) so the explicit height governs in align mode and isn't\n // clamped by a `max-height` from user CSS.\n positionerElement.style.maxHeight = 'none';\n positionerElement.style.marginTop = `${marginTop}px`;\n positionerElement.style.marginBottom = `${marginBottom}px`;\n popupElement.style.height = '100%';\n const maxScrollTop = getMaxScrollTop(scroller);\n const isTopPositioned = scrollTop >= maxScrollTop - SCROLL_EDGE_TOLERANCE_PX;\n if (isTopPositioned) {\n height = Math.min(viewportHeight, positionerRect.height) - (scrollTop - maxScrollTop);\n }\n\n // When the trigger is too close to the top or bottom of the viewport, or the minHeight is\n // reached, we fallback to aligning the popup to the trigger as the UX is poor otherwise.\n const fallbackToAlignPopupToTrigger = triggerRect.top < triggerCollisionThreshold || triggerRect.bottom > viewportHeight - triggerCollisionThreshold || Math.ceil(height) + SCROLL_EDGE_TOLERANCE_PX < Math.min(scrollHeight, minHeight);\n\n // Safari doesn't position the popup correctly when pinch-zoomed.\n const isPinchZoomed = (win.visualViewport?.scale ?? 1) !== 1 && platform.engine.webkit;\n if (fallbackToAlignPopupToTrigger || isPinchZoomed) {\n clearStyles(positionerElement, originalPositionerStylesRef.current);\n setControlledAlignItemWithTrigger(false);\n return;\n }\n const initialHeight = Math.max(minHeight, height);\n if (isTopPositioned) {\n const topOffset = Math.max(0, viewportHeight - idealHeight);\n positionerElement.style.top = positionerRect.height >= maxHeight ? '0' : `${topOffset}px`;\n positionerElement.style.height = `${height}px`;\n scroller.scrollTop = getMaxScrollTop(scroller);\n } else {\n positionerElement.style.bottom = '0';\n scroller.scrollTop = scrollTop;\n }\n if (textRect) {\n const popupTop = positionerRect.top;\n const popupHeight = positionerRect.height;\n const textCenterY = textRect.top + textRect.height / 2;\n const clampedY = clamp(popupHeight > 0 ? (textCenterY - popupTop) / popupHeight * 100 : 50, 0, 100);\n popupElement.style.setProperty('--transform-origin', `50% ${clampedY}%`);\n }\n if (initialHeight === viewportHeight || height >= maxPopupHeight) {\n reachedMaxHeightRef.current = true;\n }\n handleScrollArrowVisibility(scroller);\n if (highlightItemOnHover && store.state.selectedIndex === null && store.state.activeIndex === null && listRef.current[0] != null) {\n store.set('activeIndex', 0);\n }\n } finally {\n restoreTransformStyles();\n }\n }, [store, open, positionerElement, triggerElement, valueRef, firstItemTextRef, selectedItemTextRef, popupRef, handleScrollArrowVisibility, alignItemWithTriggerActive, setControlledAlignItemWithTrigger, scrollArrowFrame, listElement, listRef, highlightItemOnHover, direction, isPositioned]);\n React.useEffect(() => {\n if (!alignItemWithTriggerActive || !positionerElement || !open) {\n return undefined;\n }\n const win = ownerWindow(positionerElement);\n function handleResize(event) {\n setOpen(false, createChangeEventDetails(REASONS.windowResize, event));\n }\n return addEventListener(win, 'resize', handleResize);\n }, [setOpen, alignItemWithTriggerActive, positionerElement, open]);\n const defaultProps = {\n ...(listElement ? {\n role: 'presentation',\n 'aria-orientation': undefined\n } : {\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n id: `${id}-list`\n }),\n onKeyDown(event) {\n if (insideToolbar && COMPOSITE_KEYS.has(event.key)) {\n event.stopPropagation();\n }\n },\n onScroll(event) {\n if (listElement) {\n return;\n }\n handleScroll(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: listElement ? {\n height: '100%'\n } : LIST_FUNCTIONAL_STYLES\n }),\n className: !listElement && alignItemWithTriggerActive ? styleDisableScrollbar.className : undefined\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, popupRef],\n state,\n stateAttributesMapping,\n props: [popupProps, defaultProps, getDisabledMountTransitionStyles(transitionStatus), elementProps]\n });\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableStyleElements && styleDisableScrollbar.getElement(nonce), /*#__PURE__*/_jsx(FloatingFocusManager, {\n context: floatingRootContext,\n modal: false,\n disabled: !mounted,\n openInteractionType: openMethod,\n returnFocus: finalFocus,\n restoreFocus: true,\n children: element\n })]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectPopup.displayName = \"SelectPopup\";\nfunction getMaxPopupHeight(popupStyles) {\n const maxHeightStyle = popupStyles.maxHeight;\n return maxHeightStyle.endsWith('px') ? parseFloat(maxHeightStyle) || Infinity : Infinity;\n}\nfunction getMaxScrollTop(scroller) {\n return getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);\n}\nfunction getScale(element) {\n // The platform API is async-capable, but the DOM platform returns a plain scale object.\n return floatingPlatform.getScale(element);\n}\nfunction normalizeSize(size, axis, scale) {\n return size / scale[axis];\n}\nfunction normalizeRect(rect, scale) {\n return rectToClientRect({\n x: normalizeSize(rect.x, 'x', scale),\n y: normalizeSize(rect.y, 'y', scale),\n width: normalizeSize(rect.width, 'x', scale),\n height: normalizeSize(rect.height, 'y', scale)\n });\n}\nconst TRANSFORM_STYLE_RESETS = [['transform', 'none'], ['scale', '1'], ['translate', '0 0']];\nfunction unsetTransformStyles(popupElement) {\n const {\n style\n } = popupElement;\n const originalStyles = {};\n for (const [property, value] of TRANSFORM_STYLE_RESETS) {\n originalStyles[property] = style.getPropertyValue(property);\n style.setProperty(property, value, 'important');\n }\n return () => {\n for (const [property] of TRANSFORM_STYLE_RESETS) {\n const originalValue = originalStyles[property];\n if (originalValue) {\n style.setProperty(property, originalValue);\n } else {\n style.removeProperty(property);\n }\n }\n };\n}","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { styleDisableScrollbar } from \"../../utils/styles.mjs\";\nimport { LIST_FUNCTIONAL_STYLES } from \"../popup/utils.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * A container for the select items.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectList = /*#__PURE__*/React.forwardRef(function SelectList(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n store,\n scrollHandlerRef,\n multiple\n } = useSelectRootContext();\n const {\n alignItemWithTriggerActive\n } = useSelectPositionerContext();\n const hasScrollArrows = useStore(store, selectors.hasScrollArrows);\n const openMethod = useStore(store, selectors.openMethod);\n const id = useStore(store, selectors.id);\n const defaultProps = {\n id: `${id}-list`,\n role: 'listbox',\n 'aria-multiselectable': multiple || undefined,\n onScroll(event) {\n scrollHandlerRef.current?.(event.currentTarget);\n },\n ...(alignItemWithTriggerActive && {\n style: LIST_FUNCTIONAL_STYLES\n }),\n className: hasScrollArrows && openMethod !== 'touch' ? styleDisableScrollbar.className : undefined\n };\n const setListElement = store.useStateSetter('listElement');\n return useRenderElement('div', componentProps, {\n ref: [forwardedRef, setListElement],\n props: [defaultProps, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectList.displayName = \"SelectList\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useCompositeListContext } from \"./CompositeListContext.mjs\";\n/**\n * Used to register a list item and its index (DOM position) in the `CompositeList`.\n */\nexport function useCompositeListItem(params = {}) {\n const {\n guess,\n label,\n metadata,\n textRef,\n index: externalIndex\n } = params;\n const {\n register,\n unregister,\n subscribeMapChange,\n nextIndexRef\n } = useCompositeListContext();\n\n // Guess the index from the render order. This avoids a re-render after mount for\n // flat lists rendered in DOM order; when the guess is wrong (grouped or out-of-order\n // rendering), the commit flush corrects it before paint.\n const indexRef = React.useRef(-1);\n const [internalIndex, setInternalIndex] = React.useState(externalIndex == null && guess ? () => {\n if (indexRef.current === -1) {\n const newIndex = nextIndexRef.current;\n nextIndexRef.current += 1;\n indexRef.current = newIndex;\n }\n return indexRef.current;\n } : -1);\n const index = externalIndex ?? internalIndex;\n const componentRef = React.useRef(null);\n\n // Deliberately identity-sensitive: nested items sharing one DOM node rely on ref attachment\n // order to decide which registration wins, and republishing from an effect instead would let\n // an inner item's later update silently take ownership from the outer one.\n const ref = React.useCallback(node => {\n const previousNode = componentRef.current;\n if (previousNode) {\n unregister(previousNode);\n }\n componentRef.current = node;\n if (node) {\n register(node, {\n metadata: metadata ?? null,\n index: externalIndex ?? null,\n label,\n textRef\n });\n }\n }, [externalIndex, register, unregister, metadata, label, textRef]);\n useIsoLayoutEffect(() => {\n if (externalIndex != null) {\n return undefined;\n }\n return subscribeMapChange(map => {\n const i = componentRef.current ? map.get(componentRef.current)?.index : null;\n if (i != null) {\n setInternalIndex(i);\n }\n });\n }, [externalIndex, subscribeMapChange]);\n return {\n ref,\n index\n };\n}","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectItemContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectItemContext.displayName = \"SelectItemContext\";\nexport function useSelectItemContext() {\n const context = React.useContext(SelectItemContext);\n if (!context) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectItemContext is missing. SelectItem parts must be placed within <Select.Item>.' : _formatErrorMessage(57));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { useCompositeListItem } from \"../../internals/composite/list/useCompositeListItem.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { SelectItemContext } from \"./SelectItemContext.mjs\";\nimport { selectors } from \"../store.mjs\";\nimport { useButton } from \"../../internals/use-button/index.mjs\";\nimport { createChangeEventDetails } from \"../../internals/createBaseUIEventDetails.mjs\";\nimport { REASONS } from \"../../internals/reasons.mjs\";\nimport { compareItemEquality, removeItem } from \"../../internals/itemEquality.mjs\";\nimport { isVirtualClick } from \"../../floating-ui-react/utils/event.mjs\";\n\n/**\n * An individual option in the select popup.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItem = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItem(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n value: itemValue = null,\n label,\n disabled: disabledProp = false,\n nativeButton = false,\n ...elementProps\n } = componentProps;\n const textRef = React.useRef(null);\n const listItem = useCompositeListItem({\n guess: true,\n label,\n textRef\n });\n const {\n store,\n itemProps,\n setOpen,\n setValue,\n selectionRef,\n typingRef,\n valuesRef,\n multiple,\n selectedItemTextRef,\n disabled: selectDisabled,\n readOnly\n } = useSelectRootContext();\n const disabled = selectDisabled || disabledProp;\n const highlighted = useStore(store, selectors.isActive, listItem.index);\n const open = useStore(store, selectors.open);\n const selected = useStore(store, selectors.isSelected, itemValue);\n const selectedByFocus = useStore(store, selectors.isSelectedByFocus, listItem.index);\n const isItemEqualToValue = useStore(store, selectors.isItemEqualToValue);\n const index = listItem.index;\n const itemRef = React.useRef(null);\n useIsoLayoutEffect(() => {\n const values = valuesRef.current;\n values[index] = itemValue;\n return () => {\n delete values[index];\n };\n }, [index, itemValue, valuesRef]);\n useIsoLayoutEffect(() => {\n const selectedValue = store.state.value;\n let selectedCandidate = selectedValue;\n if (multiple && Array.isArray(selectedValue)) {\n // Compare against the last selected item, or `undefined` when nothing is selected — never\n // the raw array, which a custom `isItemEqualToValue` isn't expected to receive.\n selectedCandidate = selectedValue.length > 0 ? selectedValue[selectedValue.length - 1] : undefined;\n }\n if (selectedCandidate !== undefined && compareItemEquality(itemValue, selectedCandidate, isItemEqualToValue)) {\n store.set('selectedIndex', index);\n // Make sure SelectPopup can measure the selected item on first open.\n // SelectItemText can still update this ref later when focus moves.\n if (textRef.current) {\n selectedItemTextRef.current = textRef.current;\n }\n }\n }, [index, multiple, isItemEqualToValue, store, itemValue, selectedItemTextRef]);\n const pointerTypeRef = React.useRef('mouse');\n const allowMouseSelectionRef = React.useRef(false);\n const {\n getButtonProps,\n buttonRef\n } = useButton({\n disabled,\n focusableWhenDisabled: true,\n native: nativeButton,\n composite: true\n });\n const state = {\n disabled,\n selected,\n highlighted\n };\n function commitSelection(event) {\n // A forced-open select (`open`/`defaultOpen`) can still receive item activations even\n // when the root is disabled or read-only, so guard the commit here too.\n if (selectDisabled || readOnly) {\n return;\n }\n const selectedValue = store.state.value;\n if (multiple) {\n const currentValue = Array.isArray(selectedValue) ? selectedValue : [];\n const nextValue = selected ? removeItem(currentValue, itemValue, isItemEqualToValue) : [...currentValue, itemValue];\n setValue(nextValue, createChangeEventDetails(REASONS.itemPress, event));\n } else {\n setValue(itemValue, createChangeEventDetails(REASONS.itemPress, event));\n setOpen(false, createChangeEventDetails(REASONS.itemPress, event));\n }\n }\n function resetDragMovement() {\n selectionRef.current.dragY = 0;\n }\n const defaultProps = {\n role: 'option',\n 'aria-selected': selected,\n tabIndex: open && highlighted ? 0 : -1,\n onKeyDown(event) {\n store.set('activeIndex', index);\n if (event.key === ' ' && typingRef.current) {\n // `useButton` skips Space activation for `role=\"option\"` items when the keydown\n // is `defaultPrevented`, keeping typeahead spaces from committing a selection.\n event.preventDefault();\n }\n },\n onClick(event) {\n const isMouseClick = pointerTypeRef.current !== 'touch';\n const clickPointerType = event.nativeEvent.pointerType;\n const isVirtualMouseClick = isMouseClick && isVirtualClick(event.nativeEvent) && (\n // Generic no-pointer `detail === 0` clicks stay tied to highlight state. Virtual\n // clicks that carry browser pointer data, including an empty string from assistive\n // technology, can activate unhighlighted items.\n clickPointerType !== undefined || highlighted);\n // With alignItemWithTrigger, opening can place an item under the cursor. Real mouse\n // clicks must start on the item, while virtual clicks represent explicit keyboard or\n // assistive technology activation.\n const isInvalidMouseClick = isMouseClick && !isVirtualMouseClick && !allowMouseSelectionRef.current;\n allowMouseSelectionRef.current = false;\n if (disabled || isInvalidMouseClick) {\n return;\n }\n commitSelection(event.nativeEvent);\n },\n onPointerEnter(event) {\n pointerTypeRef.current = event.pointerType;\n },\n onPointerMove(event) {\n if (event.pointerType === 'mouse' && event.buttons === 1) {\n const selection = selectionRef.current;\n selection.dragY += event.movementY;\n if (selection.dragY ** 2 >= 64) {\n selection.allowUnselectedMouseUp = true;\n }\n }\n },\n onPointerDown(event) {\n pointerTypeRef.current = event.pointerType;\n allowMouseSelectionRef.current = true;\n resetDragMovement();\n },\n onMouseUp() {\n resetDragMovement();\n if (disabled || pointerTypeRef.current === 'touch') {\n return;\n }\n\n // Regular clicks are committed by the click event.\n if (allowMouseSelectionRef.current) {\n return;\n }\n const disallowSelectedMouseUp = !selectionRef.current.allowSelectedMouseUp && selected;\n const disallowUnselectedMouseUp = !selectionRef.current.allowUnselectedMouseUp && !selected;\n if (disallowSelectedMouseUp || disallowUnselectedMouseUp) {\n return;\n }\n allowMouseSelectionRef.current = true;\n itemRef.current?.click();\n allowMouseSelectionRef.current = false;\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [buttonRef, forwardedRef, listItem.ref, itemRef],\n state,\n props: [itemProps, defaultProps, elementProps, getButtonProps]\n });\n const contextValue = React.useMemo(() => ({\n selected,\n index,\n textRef,\n selectedByFocus\n }), [selected, index, textRef, selectedByFocus]);\n return /*#__PURE__*/_jsx(SelectItemContext.Provider, {\n value: contextValue,\n children: element\n });\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItem.displayName = \"SelectItem\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectItemContext } from \"../item/SelectItemContext.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\n\n/**\n * Indicates whether the select item is selected.\n * Renders a `<span>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectItemIndicator = /*#__PURE__*/React.forwardRef(function SelectItemIndicator(componentProps, forwardedRef) {\n const {\n selected\n } = useSelectItemContext();\n const shouldRender = componentProps.keepMounted || selected;\n if (!shouldRender) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return /*#__PURE__*/_jsx(Inner, {\n ...componentProps,\n ref: forwardedRef\n });\n});\n\n// Split the core implementation to avoid paying the hook costs unless the element needs to mount.\nif (process.env.NODE_ENV !== \"production\") SelectItemIndicator.displayName = \"SelectItemIndicator\";\nconst Inner = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef((componentProps, forwardedRef) => {\n const {\n render,\n className,\n style,\n keepMounted,\n ...elementProps\n } = componentProps;\n const {\n selected\n } = useSelectItemContext();\n const indicatorRef = React.useRef(null);\n const {\n transitionStatus,\n setMounted\n } = useTransitionStatus(selected);\n const state = {\n selected,\n transitionStatus\n };\n const element = useRenderElement('span', componentProps, {\n ref: [forwardedRef, indicatorRef],\n state,\n props: [{\n 'aria-hidden': true,\n children: '✔️'\n }, elementProps],\n stateAttributesMapping: transitionStatusMapping\n });\n useOpenChangeComplete({\n open: selected,\n ref: indicatorRef,\n onComplete() {\n if (!selected) {\n setMounted(false);\n }\n }\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") Inner.displayName = \"Inner\";","'use client';\n\nimport * as React from 'react';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { useSelectItemContext } from \"../item/SelectItemContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * A text label of the select item.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectItemText = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function SelectItemText(componentProps, forwardedRef) {\n const {\n index,\n textRef,\n selectedByFocus\n } = useSelectItemContext();\n const {\n firstItemTextRef,\n selectedItemTextRef\n } = useSelectRootContext();\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const localRef = React.useCallback(node => {\n if (!node) {\n return;\n }\n if (index === 0) {\n firstItemTextRef.current = node;\n }\n if (selectedByFocus) {\n selectedItemTextRef.current = node;\n }\n }, [firstItemTextRef, selectedItemTextRef, index, selectedByFocus]);\n const element = useRenderElement('div', componentProps, {\n ref: [localRef, forwardedRef, textRef],\n props: elementProps\n });\n return element;\n}));\nif (process.env.NODE_ENV !== \"production\") SelectItemText.displayName = \"SelectItemText\";","'use client';\n\nimport * as React from 'react';\nimport { useStore } from '@base-ui/utils/store';\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.mjs\";\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { popupTransitionStateMapping } from \"../../utils/popupStateMapping.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * Displays an element positioned against the select popup anchor.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectArrow = /*#__PURE__*/React.forwardRef(function SelectArrow(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const {\n store\n } = useSelectRootContext();\n const {\n side,\n align,\n arrowRef,\n arrowStyles,\n arrowUncentered,\n alignItemWithTriggerActive\n } = useSelectPositionerContext();\n const open = useStore(store, selectors.open);\n const state = {\n open,\n side,\n align,\n uncentered: arrowUncentered\n };\n const element = useRenderElement('div', componentProps, {\n state,\n ref: [arrowRef, forwardedRef],\n props: [{\n style: arrowStyles,\n 'aria-hidden': true\n }, elementProps],\n stateAttributesMapping: popupTransitionStateMapping\n });\n if (alignItemWithTriggerActive) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectArrow.displayName = \"SelectArrow\";","'use client';\n\nimport * as React from 'react';\nimport { useTimeout } from '@base-ui/utils/useTimeout';\nimport { useStore } from '@base-ui/utils/store';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useSelectRootContext } from \"../root/SelectRootContext.mjs\";\nimport { useSelectPositionerContext } from \"../positioner/SelectPositionerContext.mjs\";\nimport { useTransitionStatus } from \"../../internals/useTransitionStatus.mjs\";\nimport { useOpenChangeComplete } from \"../../internals/useOpenChangeComplete.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\nimport { transitionStatusMapping } from \"../../internals/stateAttributesMapping.mjs\";\nimport { getMaxScrollOffset, normalizeScrollOffset, SCROLL_EDGE_TOLERANCE_PX } from \"../../utils/scrollEdges.mjs\";\nimport { selectors } from \"../store.mjs\";\n\n/**\n * @internal\n */\nexport const SelectScrollArrow = /*#__PURE__*/React.forwardRef(function SelectScrollArrow(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n direction,\n keepMounted,\n ...elementProps\n } = componentProps;\n const isUp = direction === 'up';\n const {\n store,\n popupRef,\n listRef,\n handleScrollArrowVisibility,\n scrollArrowsMountedCountRef\n } = useSelectRootContext();\n const {\n side,\n scrollDownArrowRef,\n scrollUpArrowRef\n } = useSelectPositionerContext();\n const visibleSelector = isUp ? selectors.scrollUpArrowVisible : selectors.scrollDownArrowVisible;\n const stateVisible = useStore(store, visibleSelector);\n const openMethod = useStore(store, selectors.openMethod);\n\n // Scroll arrows are disabled for touch modality as they are a hover-only element.\n const visible = stateVisible && openMethod !== 'touch';\n const timeout = useTimeout();\n const scrollArrowRef = isUp ? scrollUpArrowRef : scrollDownArrowRef;\n const {\n mounted,\n transitionStatus,\n setMounted\n } = useTransitionStatus(visible);\n useIsoLayoutEffect(() => {\n scrollArrowsMountedCountRef.current += 1;\n store.set('hasScrollArrows', true);\n return () => {\n scrollArrowsMountedCountRef.current = Math.max(0, scrollArrowsMountedCountRef.current - 1);\n if (scrollArrowsMountedCountRef.current === 0) {\n store.set('hasScrollArrows', false);\n }\n };\n }, [store, scrollArrowsMountedCountRef]);\n useOpenChangeComplete({\n open: visible,\n ref: scrollArrowRef,\n onComplete() {\n if (!visible) {\n setMounted(false);\n }\n }\n });\n const state = {\n direction,\n visible,\n side,\n transitionStatus\n };\n const defaultProps = {\n 'aria-hidden': true,\n children: isUp ? '▲' : '▼',\n style: {\n position: 'absolute'\n },\n onMouseMove(event) {\n if (event.movementX === 0 && event.movementY === 0 || timeout.isStarted()) {\n return;\n }\n store.set('activeIndex', null);\n function scrollNextItem() {\n const scroller = store.state.listElement ?? popupRef.current;\n if (!scroller) {\n return;\n }\n store.set('activeIndex', null);\n handleScrollArrowVisibility(scroller);\n const maxScrollTop = getMaxScrollOffset(scroller.scrollHeight, scroller.clientHeight);\n const scrollTop = normalizeScrollOffset(scroller.scrollTop, maxScrollTop);\n const isScrolledToEdge = scrollTop === (isUp ? 0 : maxScrollTop);\n const items = listRef.current;\n if (scrollTop !== scroller.scrollTop) {\n scroller.scrollTop = scrollTop;\n }\n if (isScrolledToEdge) {\n timeout.clear();\n return;\n }\n if (items.length > 0) {\n const scrollArrowHeight = scrollArrowRef.current?.offsetHeight || 0;\n scroller.scrollTop = getTargetScrollTop(items, isUp, scrollTop, scroller.clientHeight, scrollArrowHeight, maxScrollTop);\n }\n timeout.start(40, scrollNextItem);\n }\n timeout.start(40, scrollNextItem);\n },\n onMouseLeave() {\n timeout.clear();\n }\n };\n const element = useRenderElement('div', componentProps, {\n ref: [forwardedRef, scrollArrowRef],\n state,\n props: [defaultProps, elementProps],\n stateAttributesMapping: transitionStatusMapping\n });\n const shouldRender = mounted || keepMounted;\n if (!shouldRender) {\n return null;\n }\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollArrow.displayName = \"SelectScrollArrow\";\nfunction getTargetScrollTop(items, isUp, scrollTop, clientHeight, scrollArrowHeight, maxScrollTop) {\n if (isUp) {\n let firstVisibleIndex = 0;\n const visibleTop = scrollTop + scrollArrowHeight - SCROLL_EDGE_TOLERANCE_PX;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item && item.offsetTop >= visibleTop) {\n firstVisibleIndex = i;\n break;\n }\n }\n const targetIndex = Math.max(0, firstVisibleIndex - 1);\n const targetItem = items[targetIndex];\n return targetIndex < firstVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop - scrollArrowHeight, maxScrollTop) : 0;\n }\n let lastVisibleIndex = items.length - 1;\n const visibleBottom = scrollTop + clientHeight - scrollArrowHeight + SCROLL_EDGE_TOLERANCE_PX;\n for (let i = 0; i < items.length; i += 1) {\n const item = items[i];\n if (item && item.offsetTop + item.offsetHeight > visibleBottom) {\n lastVisibleIndex = Math.max(0, i - 1);\n break;\n }\n }\n const targetIndex = Math.min(items.length - 1, lastVisibleIndex + 1);\n const targetItem = items[targetIndex];\n return targetIndex > lastVisibleIndex && targetItem ? normalizeScrollOffset(targetItem.offsetTop + targetItem.offsetHeight - clientHeight + scrollArrowHeight, maxScrollTop) : maxScrollTop;\n}","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup down when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollDownArrow = /*#__PURE__*/React.forwardRef(function SelectScrollDownArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"down\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollDownArrow.displayName = \"SelectScrollDownArrow\";","'use client';\n\nimport * as React from 'react';\nimport { SelectScrollArrow } from \"../scroll-arrow/SelectScrollArrow.mjs\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n/**\n * An element that scrolls the select popup up when hovered. Does not render when using touch input.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectScrollUpArrow = /*#__PURE__*/React.forwardRef(function SelectScrollUpArrow(props, forwardedRef) {\n return /*#__PURE__*/_jsx(SelectScrollArrow, {\n ...props,\n ref: forwardedRef,\n direction: \"up\"\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectScrollUpArrow.displayName = \"SelectScrollUpArrow\";","'use client';\n\nimport _formatErrorMessage from \"@base-ui/utils/formatErrorMessage\";\nimport * as React from 'react';\nexport const SelectGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== \"production\") SelectGroupContext.displayName = \"SelectGroupContext\";\nexport function useSelectGroupContext() {\n const context = React.useContext(SelectGroupContext);\n if (context === undefined) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? 'Base UI: SelectGroupContext is missing. SelectGroup parts must be placed within <Select.Group>.' : _formatErrorMessage(56));\n }\n return context;\n}","'use client';\n\nimport * as React from 'react';\nimport { SelectGroupContext } from \"./SelectGroupContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * Groups related select items with the corresponding label.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const SelectGroup = /*#__PURE__*/React.forwardRef(function SelectGroup(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n ...elementProps\n } = componentProps;\n const [labelId, setLabelId] = React.useState();\n const contextValue = React.useMemo(() => ({\n labelId,\n setLabelId\n }), [labelId, setLabelId]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [{\n role: 'group',\n 'aria-labelledby': labelId\n }, elementProps]\n });\n return /*#__PURE__*/_jsx(SelectGroupContext.Provider, {\n value: contextValue,\n children: element\n });\n});\nif (process.env.NODE_ENV !== \"production\") SelectGroup.displayName = \"SelectGroup\";","'use client';\n\nimport * as React from 'react';\nimport { useIsoLayoutEffect } from '@base-ui/utils/useIsoLayoutEffect';\nimport { useBaseUiId } from \"../../internals/useBaseUiId.mjs\";\nimport { useSelectGroupContext } from \"../group/SelectGroupContext.mjs\";\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * An accessible label that is automatically associated with its parent group.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectGroupLabel = /*#__PURE__*/React.forwardRef(function SelectGroupLabel(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n id: idProp,\n ...elementProps\n } = componentProps;\n const {\n setLabelId\n } = useSelectGroupContext();\n const id = useBaseUiId(idProp);\n useIsoLayoutEffect(() => {\n setLabelId(id);\n return () => {\n setLabelId(currentId => currentId === id ? undefined : currentId);\n };\n }, [id, setLabelId]);\n const element = useRenderElement('div', componentProps, {\n ref: forwardedRef,\n props: [{\n id\n }, elementProps]\n });\n return element;\n});\nif (process.env.NODE_ENV !== \"production\") SelectGroupLabel.displayName = \"SelectGroupLabel\";","'use client';\n\nimport * as React from 'react';\nimport { useRenderElement } from \"../../internals/useRenderElement.mjs\";\n\n/**\n * A visual separator between items.\n * Renders a `<div>` element.\n *\n * @internal\n */\nexport const ListboxSeparator = /*#__PURE__*/React.forwardRef(function ListboxSeparator(componentProps, forwardedRef) {\n const {\n className,\n render,\n orientation = 'horizontal',\n style,\n ...elementProps\n } = componentProps;\n const state = {\n orientation\n };\n return useRenderElement('div', componentProps, {\n state,\n ref: forwardedRef,\n props: [{\n role: 'presentation'\n }, elementProps]\n });\n});\nif (process.env.NODE_ENV !== \"production\") ListboxSeparator.displayName = \"ListboxSeparator\";","'use client';\n\nimport { ListboxSeparator } from \"../../utils/listbox-separator/ListboxSeparator.mjs\";\n/**\n * A visual separator between items or groups.\n * Renders a `<div>` element.\n *\n * Documentation: [Base UI Select](https://base-ui.com/react/components/select)\n */\nexport const SelectSeparator = ListboxSeparator;","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-arrow.tsx\nconst TRSelectArrow = createComponentPart(Select.Arrow, \"tr-layer-arrow tr-select-arrow\");\n//#endregion\nexport { TRSelectArrow };\n\n//# sourceMappingURL=select-arrow.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-backdrop.tsx\nconst TRSelectBackdrop = createComponentPart(Select.Backdrop, \"tr-layer-backdrop tr-select-backdrop\");\n//#endregion\nexport { TRSelectBackdrop };\n\n//# sourceMappingURL=select-backdrop.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-group.tsx\nconst TRSelectGroup = createComponentPart(Select.Group, \"tr-select-group\");\n//#endregion\nexport { TRSelectGroup };\n\n//# sourceMappingURL=select-group.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-group-label.tsx\nconst TRSelectGroupLabel = createComponentPart(Select.GroupLabel, \"tr-select-group-label\");\n//#endregion\nexport { TRSelectGroupLabel };\n\n//# sourceMappingURL=select-group-label.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-icon.tsx\nconst TRSelectIcon = createComponentPart(Select.Icon, \"tr-select-icon\");\n//#endregion\nexport { TRSelectIcon };\n\n//# sourceMappingURL=select-icon.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-item.tsx\nconst TRSelectItem = createComponentPart(Select.Item, \"tr-select-item\");\n//#endregion\nexport { TRSelectItem };\n\n//# sourceMappingURL=select-item.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-item-indicator.tsx\nconst TRSelectItemIndicator = createComponentPart(Select.ItemIndicator, \"tr-select-item-indicator\");\n//#endregion\nexport { TRSelectItemIndicator };\n\n//# sourceMappingURL=select-item-indicator.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-item-text.tsx\nconst TRSelectItemText = createComponentPart(Select.ItemText, \"tr-select-item-text\");\n//#endregion\nexport { TRSelectItemText };\n\n//# sourceMappingURL=select-item-text.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-label.tsx\nconst TRSelectLabel = createComponentPart(Select.Label, \"tr-select-label\");\n//#endregion\nexport { TRSelectLabel };\n\n//# sourceMappingURL=select-label.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-list.tsx\nconst TRSelectList = createComponentPart(Select.List, \"tr-select-list\");\n//#endregion\nexport { TRSelectList };\n\n//# sourceMappingURL=select-list.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-popup.tsx\nconst TRSelectPopup = createComponentPart(Select.Popup, \"tr-layer tr-select-popup\");\n//#endregion\nexport { TRSelectPopup };\n\n//# sourceMappingURL=select-popup.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-portal.tsx\nconst TRSelectPortal = createComponentPart(Select.Portal, \"tr-select-portal\");\n//#endregion\nexport { TRSelectPortal };\n\n//# sourceMappingURL=select-portal.js.map","\"use client\";\nimport { mergeComponentClassName } from \"../../internal/component-class-name.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-positioner.tsx\nconst positioningProps = [\n\t\"align\",\n\t\"alignItemWithTrigger\",\n\t\"alignOffset\",\n\t\"anchor\",\n\t\"arrowPadding\",\n\t\"collisionAvoidance\",\n\t\"collisionBoundary\",\n\t\"collisionPadding\",\n\t\"disableAnchorTracking\",\n\t\"positionMethod\",\n\t\"side\",\n\t\"sideOffset\",\n\t\"sticky\"\n];\nfunction TRSelectPositioner({ className, ...props }) {\n\tconst positionerProps = { ...props };\n\tfor (const prop of positioningProps) Reflect.deleteProperty(positionerProps, prop);\n\treturn /* @__PURE__ */ jsx(Select.Positioner, {\n\t\t...positionerProps,\n\t\talign: \"center\",\n\t\talignItemWithTrigger: false,\n\t\tclassName: mergeComponentClassName(\"tr-layer-positioner tr-select-positioner\", className),\n\t\tside: \"bottom\",\n\t\tsideOffset: 4\n\t});\n}\n//#endregion\nexport { TRSelectPositioner };\n\n//# sourceMappingURL=select-positioner.js.map","\"use client\";\nimport { createElement, useEffect, useRef, useState } from \"react\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-root.tsx\nfunction TRSelectRoot({ form, inputRef, value, ...props }) {\n\tconst internalInputRef = useRef(null);\n\tconst [resetKey, setResetKey] = useState(0);\n\tuseEffect(() => {\n\t\tif (value !== void 0) return;\n\t\tconst ownerForm = form ? document.getElementById(form) : internalInputRef.current?.form;\n\t\tif (!(ownerForm instanceof HTMLFormElement)) return;\n\t\tconst reset = () => setResetKey((current) => current + 1);\n\t\townerForm.addEventListener(\"reset\", reset);\n\t\treturn () => ownerForm.removeEventListener(\"reset\", reset);\n\t}, [form, value]);\n\treturn /* @__PURE__ */ createElement(Select.Root, {\n\t\t...props,\n\t\tform,\n\t\tinputRef: (node) => {\n\t\t\tinternalInputRef.current = node;\n\t\t\tif (typeof inputRef === \"function\") inputRef(node);\n\t\t\telse if (inputRef) inputRef.current = node;\n\t\t},\n\t\tkey: resetKey,\n\t\tvalue\n\t});\n}\n//#endregion\nexport { TRSelectRoot };\n\n//# sourceMappingURL=select-root.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-scroll-down-arrow.tsx\nconst TRSelectScrollDownArrow = createComponentPart(Select.ScrollDownArrow, \"tr-select-scroll-down-arrow\");\n//#endregion\nexport { TRSelectScrollDownArrow };\n\n//# sourceMappingURL=select-scroll-down-arrow.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-scroll-up-arrow.tsx\nconst TRSelectScrollUpArrow = createComponentPart(Select.ScrollUpArrow, \"tr-select-scroll-up-arrow\");\n//#endregion\nexport { TRSelectScrollUpArrow };\n\n//# sourceMappingURL=select-scroll-up-arrow.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-separator.tsx\nconst TRSelectSeparator = createComponentPart(Select.Separator, \"tr-separator tr-select-separator\");\n//#endregion\nexport { TRSelectSeparator };\n\n//# sourceMappingURL=select-separator.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-trigger.tsx\nconst SelectTriggerPart = createComponentPart(Select.Trigger, \"tr-select-trigger\");\nfunction TRSelectTrigger({ className, uiSize = \"md\", appearance = \"solid\", ...props }) {\n\treturn /* @__PURE__ */ jsx(SelectTriggerPart, {\n\t\t...props,\n\t\tclassName,\n\t\t\"data-appearance\": appearance,\n\t\t\"data-ui-size\": uiSize\n\t});\n}\n//#endregion\nexport { TRSelectTrigger };\n\n//# sourceMappingURL=select-trigger.js.map","\"use client\";\nimport { createComponentPart } from \"../../internal/component-part.js\";\nimport { Select } from \"@base-ui/react/select\";\n//#region src/components/select/select-value.tsx\nconst TRSelectValue = createComponentPart(Select.Value, \"tr-select-value\");\n//#endregion\nexport { TRSelectValue };\n\n//# sourceMappingURL=select-value.js.map","import { TRSelectArrow } from \"./select-arrow.js\";\nimport { TRSelectBackdrop } from \"./select-backdrop.js\";\nimport { TRSelectGroup } from \"./select-group.js\";\nimport { TRSelectGroupLabel } from \"./select-group-label.js\";\nimport { TRSelectIcon } from \"./select-icon.js\";\nimport { TRSelectItem } from \"./select-item.js\";\nimport { TRSelectItemIndicator } from \"./select-item-indicator.js\";\nimport { TRSelectItemText } from \"./select-item-text.js\";\nimport { TRSelectLabel } from \"./select-label.js\";\nimport { TRSelectList } from \"./select-list.js\";\nimport { TRSelectPopup } from \"./select-popup.js\";\nimport { TRSelectPortal } from \"./select-portal.js\";\nimport { TRSelectPositioner } from \"./select-positioner.js\";\nimport { TRSelectRoot } from \"./select-root.js\";\nimport { TRSelectScrollDownArrow } from \"./select-scroll-down-arrow.js\";\nimport { TRSelectScrollUpArrow } from \"./select-scroll-up-arrow.js\";\nimport { TRSelectSeparator } from \"./select-separator.js\";\nimport { TRSelectTrigger } from \"./select-trigger.js\";\nimport { TRSelectValue } from \"./select-value.js\";\n//#region src/components/select/index.tsx\nconst TRSelect = {\n\tRoot: TRSelectRoot,\n\tLabel: TRSelectLabel,\n\tTrigger: TRSelectTrigger,\n\tValue: TRSelectValue,\n\tIcon: TRSelectIcon,\n\tPortal: TRSelectPortal,\n\tBackdrop: TRSelectBackdrop,\n\tPositioner: TRSelectPositioner,\n\tPopup: TRSelectPopup,\n\tList: TRSelectList,\n\tItem: TRSelectItem,\n\tItemIndicator: TRSelectItemIndicator,\n\tItemText: TRSelectItemText,\n\tArrow: TRSelectArrow,\n\tScrollDownArrow: TRSelectScrollDownArrow,\n\tScrollUpArrow: TRSelectScrollUpArrow,\n\tGroup: TRSelectGroup,\n\tGroupLabel: TRSelectGroupLabel,\n\tSeparator: TRSelectSeparator\n};\n//#endregion\nexport { TRSelect, TRSelectArrow, TRSelectBackdrop, TRSelectGroup, TRSelectGroupLabel, TRSelectIcon, TRSelectItem, TRSelectItemIndicator, TRSelectItemText, TRSelectLabel, TRSelectList, TRSelectPopup, TRSelectPortal, TRSelectPositioner, TRSelectRoot, TRSelectScrollDownArrow, TRSelectScrollUpArrow, TRSelectSeparator, TRSelectTrigger, TRSelectValue };\n\n//# sourceMappingURL=index.js.map","import { useSuspenseQuery } from '@tanstack/react-query';\nimport { useCallback, useSyncExternalStore } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n detectBrowserLanguage,\n getAvailableLanguages,\n LANGUAGE_STORAGE_KEY,\n} from '#frontend/i18n/index.ts';\nimport { appConfigQueryOptions } from '#frontend/queries/config.ts';\n\n/**\n * Subscribe to localStorage changes for language preference\n */\nfunction subscribeToLanguageStorage(callback: () => void) {\n const handleStorage = (e: StorageEvent) => {\n if (e.key === LANGUAGE_STORAGE_KEY) {\n callback();\n }\n };\n window.addEventListener('storage', handleStorage);\n\n // Custom event for same-tab updates\n window.addEventListener('language-storage-change', callback);\n\n return () => {\n window.removeEventListener('storage', handleStorage);\n window.removeEventListener('language-storage-change', callback);\n };\n}\n\nfunction getLanguageStorageSnapshot() {\n return localStorage.getItem(LANGUAGE_STORAGE_KEY);\n}\n\nfunction dispatchLanguageStorageChange() {\n window.dispatchEvent(new Event('language-storage-change'));\n}\n\nexport function useLanguage() {\n const { i18n } = useTranslation();\n const { data: config } = useSuspenseQuery(appConfigQueryOptions);\n\n // Get supported languages from server config\n const supportedLanguages = config.i18n.supported_languages;\n\n // Filter to only languages we have translations for\n const availableLanguages = getAvailableLanguages(supportedLanguages);\n\n // Sync with localStorage using useSyncExternalStore for proper reactivity\n const storedLanguage = useSyncExternalStore(\n subscribeToLanguageStorage,\n getLanguageStorageSnapshot,\n getLanguageStorageSnapshot,\n );\n\n // Check if user is in auto mode (no localStorage preference)\n const isAutoMode = storedLanguage === null;\n\n // Detect browser language for display in auto mode\n const detectedLanguage = detectBrowserLanguage(\n availableLanguages,\n config.i18n.fallback_language,\n );\n\n const setLanguage = useCallback(\n (lang: string) => {\n if (\n !availableLanguages.includes(\n lang as (typeof availableLanguages)[number],\n )\n ) {\n return;\n }\n i18n.changeLanguage(lang);\n localStorage.setItem(LANGUAGE_STORAGE_KEY, lang);\n dispatchLanguageStorageChange();\n },\n [availableLanguages, i18n],\n );\n\n const setAutoLanguage = useCallback(() => {\n localStorage.removeItem(LANGUAGE_STORAGE_KEY);\n dispatchLanguageStorageChange();\n // Immediately switch to detected browser language\n i18n.changeLanguage(detectedLanguage);\n }, [detectedLanguage, i18n]);\n\n return {\n language: i18n.language,\n languages: availableLanguages,\n setLanguage,\n setAutoLanguage,\n isAutoMode,\n detectedLanguage,\n // Show language selector only if more than one language is supported\n showLanguageSelector: availableLanguages.length > 1,\n };\n}\n","import { TRSelect } from '@tinyrack/ui/components/select';\nimport { CheckIcon } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useLanguage } from '#frontend/hooks/use-language.ts';\nimport { LANGUAGE_LABELS } from '#frontend/i18n/index.ts';\n\ntype LanguageSelectorProps = {\n className?: string;\n};\n\nexport function LanguageSelector({ className = '' }: LanguageSelectorProps) {\n const { t } = useTranslation();\n const {\n language,\n languages,\n setLanguage,\n setAutoLanguage,\n isAutoMode,\n detectedLanguage,\n showLanguageSelector,\n } = useLanguage();\n\n if (!showLanguageSelector) {\n return null;\n }\n\n const detectedLanguageName =\n LANGUAGE_LABELS[detectedLanguage] || detectedLanguage;\n const autoLabel = `${t('common.language.auto')} (${detectedLanguageName})`;\n\n const options = [\n { label: autoLabel, value: 'auto' },\n ...languages.map((lang) => ({\n label: LANGUAGE_LABELS[lang] || lang,\n value: lang,\n })),\n ];\n\n const currentValue = isAutoMode ? 'auto' : language;\n\n return (\n <div className={className}>\n <TRSelect.Root\n onValueChange={(value) => {\n if (typeof value !== 'string') {\n return;\n }\n if (value === 'auto') {\n setAutoLanguage();\n } else {\n setLanguage(value);\n }\n }}\n value={currentValue}\n >\n {/*\n The trigger's visible content is the current value, which the\n combobox role does not expose as its own name, so without this the\n control announces as an unnamed button.\n */}\n <TRSelect.Trigger\n aria-label={t('common.language.select')}\n data-testid=\"language-selector\"\n uiSize=\"sm\"\n >\n <TRSelect.Value />\n </TRSelect.Trigger>\n <TRSelect.Portal>\n <TRSelect.Positioner>\n <TRSelect.Popup>\n <TRSelect.List>\n {options.map((option) => (\n <TRSelect.Item key={option.value} value={option.value}>\n <TRSelect.ItemText>{option.label}</TRSelect.ItemText>\n <TRSelect.ItemIndicator>\n <CheckIcon />\n </TRSelect.ItemIndicator>\n </TRSelect.Item>\n ))}\n </TRSelect.List>\n </TRSelect.Popup>\n </TRSelect.Positioner>\n </TRSelect.Portal>\n </TRSelect.Root>\n </div>\n );\n}\n","import { TRText } from '@tinyrack/ui/components/text';\nimport { ThemeToggle } from '#frontend/components/ui/theme-toggle.tsx';\nimport { LanguageSelector } from '#frontend/features/layout/language-selector.tsx';\nimport { useBranding } from '#frontend/features/layout/use-branding.ts';\nimport { useColorScheme } from '#frontend/hooks/use-theme.ts';\n\ntype ShellHeaderBarProps = {\n /**\n * Renders the deployment's mark on the leading edge.\n *\n * Off by default, and it must stay that way: on auth screens\n * `AuthBrandPanel` already owns the brand title as the page's `h1`, so\n * turning this on there would give the title two heading nodes.\n */\n brand?: boolean;\n /** Page-level action, ahead of the presentation controls. */\n actions?: React.ReactNode;\n};\n\n/**\n * Presentation controls for every shell.\n *\n * These used to float over the page — the theme toggle pinned to the viewport\n * corner and the language selector centred under the card. Giving them a real\n * bar puts them in the tab order where a header is expected and stops the\n * toggle overlapping content on short viewports.\n *\n * The language selector renders nothing when the deployment fixes a language,\n * so the bar has to stay balanced with only one control in it.\n */\nexport function ShellHeaderBar({\n brand = false,\n actions,\n}: ShellHeaderBarProps) {\n const { colorScheme, toggleColorScheme } = useColorScheme();\n const { title, iconUrl } = useBranding();\n\n return (\n <div className=\"flex items-center gap-tinyrack-sm px-tinyrack-lg py-tinyrack-sm\">\n {brand && (\n <div className=\"flex min-w-0 items-center gap-tinyrack-sm\">\n {iconUrl && (\n <img\n alt=\"\"\n className=\"size-tinyrack-xl object-contain\"\n src={iconUrl}\n />\n )}\n {title && (\n <TRText as=\"h1\" truncate variant=\"headingSm\" weight=\"heading\">\n {title}\n </TRText>\n )}\n </div>\n )}\n {/*\n `ms-auto` rather than `justify-end` on the row, so the brand can sit on\n the leading edge while the controls stay pinned to the trailing one.\n With no brand and no actions this renders identically to a\n right-justified row.\n */}\n <div className=\"ms-auto flex items-center gap-tinyrack-sm\">\n {actions}\n <LanguageSelector />\n <ThemeToggle colorScheme={colorScheme} onToggle={toggleColorScheme} />\n </div>\n </div>\n );\n}\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142],"mappings":"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"}
|