From a159eaabddc0940f5e2f559aebfbac9151267352 Mon Sep 17 00:00:00 2001 From: Jonas Hungershausen Date: Tue, 21 Oct 2025 20:25:29 -0400 Subject: [PATCH] chore: AX locales docs --- docs/account-experience/index.mdx | 27 +++-- docs/concepts/redirects.mdx | 2 +- docs/guides/custom-domains.mdx | 4 +- .../get-started/account-recovery.mdx | 4 +- docs/identities/index.mdx | 4 +- .../identifier-first-authentication.mdx | 9 +- docs/intro.mdx | 5 +- .../20_configure-ory-to-use-your-ui.mdx | 6 +- ...identity-provider-integration-settings.mdx | 2 +- .../ConsoleLink/console-nav-data.ts | 72 +++++++++----- src/components/ConsoleLink/console-routes.ts | 99 ++++++++++++------- 11 files changed, 149 insertions(+), 85 deletions(-) diff --git a/docs/account-experience/index.mdx b/docs/account-experience/index.mdx index d245325352..0a0c31d52e 100644 --- a/docs/account-experience/index.mdx +++ b/docs/account-experience/index.mdx @@ -20,19 +20,26 @@ The Account Experience can be themed using the Ory Console. Head over to the [theming settings](https://console.ory.sh/projects/current/account-experience/theming). It is also possible to set a custom logo and favicon. -## Welcome Screen - -The Account Experience comes with a welcome screen that shows information about the current user's session. As this screen is -rather meant for debugging purposes, it can be disabled in the [Ory Console](https://console.ory.sh/projects/current/ui). - ## Translations (i18n) & Message Customization Currently, the account experience is available in 83 languages. For a full list of available languages please have a look at [the source](https://github.com/ory/elements/tree/main/packages/elements-react/src/locales). If you want to add a new language or -fix some wording, please open a pull request in [ory/elements](https://github.com/ory/elements#internalization-i18n). To determine -the language to use, the Account Experience uses the `Accept-Language` header. If the language is not available, the fallback -language (English) is used. Custom translations are not supported at the moment, but please reach out if you need this feature. +fix some wording, please open a pull request in [ory/elements](https://github.com/ory/elements#internalization-i18n). + +By default, the Account Experience automatically adapts to the user's language preferences, and offers translations for all +supported languages. Each language can be enabled or disabled in the Ory Console +under . + +To determine the language to use, the Account Experience uses the `Accept-Language` header. If the language is not available, the +Default Language (English) is used. To change the default language, go +to  and select your preferred default language. + +To turn off automatic language detection, disable **Respect the user's system language preferences** in the Ory Console +under . -## Custom Domains +### Custom locales -The Account Experience is also available under custom domains the same way it works on the slug URL. +You can customize any of the existing translations or add your own translations in the Ory Console +under . Click on the edit icon for the language you want to +customize, and then modify the messages as needed. Custom translations will override the default translations provided by Ory +Elements. diff --git a/docs/concepts/redirects.mdx b/docs/concepts/redirects.mdx index c77c03f1a6..b310d52ffd 100644 --- a/docs/concepts/redirects.mdx +++ b/docs/concepts/redirects.mdx @@ -33,7 +33,7 @@ The Ory Network has a total of six flows, **Login**, **Registration**, **Verific which can be configured to redirect back to any URL. A common use case would be to redirect the user to your application home screen after a logout or to a specific URL on a sub-domain after a settings password update. -On project creation the redirect flows are by default set to the Ory Account Experience pages. +By default, the flows always redirect to the Ory Account Experience pages. ### Login, registration, and settings diff --git a/docs/guides/custom-domains.mdx b/docs/guides/custom-domains.mdx index 88d76a1e2b..9c6d590c36 100644 --- a/docs/guides/custom-domains.mdx +++ b/docs/guides/custom-domains.mdx @@ -253,8 +253,8 @@ show "Enabled/Disabled". ![Custom Domain Cors enabled](./_static/custom-domains/cname-cors-enabled.png) -Once active, the Ory Account Experience is reachable at `https:///ui/welcome`. Learn how to configure a custom -UI: [Bring Your Own UI](../kratos/bring-your-own-ui/configure-ory-to-use-your-ui). +Once active, the Ory Account Experience is reachable at `https:///login`. Learn how to configure a custom UI: +[Bring Your Own UI](../kratos/bring-your-own-ui/configure-ory-to-use-your-ui). You may also remove your custom domain from the Console, but please note that **any requests to it will no longer resolve** once you do. diff --git a/docs/identities/get-started/account-recovery.mdx b/docs/identities/get-started/account-recovery.mdx index 4d784bf97d..1c8ff9667e 100644 --- a/docs/identities/get-started/account-recovery.mdx +++ b/docs/identities/get-started/account-recovery.mdx @@ -92,7 +92,9 @@ feature_flags: When integrating with the API directly, your applications must send and receive these fields. Refer to the [API documentation](../../reference/api#tag/frontend/operation/updateRecoveryFlow) for more details. -When using the built-in Account Experience UI, there is nothing special to do. Otherwise, you need to do some changes. +When using the built-in Ory Account Experience, no changes are needed in your application code. + +If you're using a custom UI, ensure that your recovery forms handle the new fields appropriately: New fields have been added to the payload when getting and updating the recovery flow that are exclusively used when this feature flag is enabled: diff --git a/docs/identities/index.mdx b/docs/identities/index.mdx index a19eef3c3b..8572a9080d 100644 --- a/docs/identities/index.mdx +++ b/docs/identities/index.mdx @@ -36,8 +36,8 @@ the Ory documentation. Read [more here](../kratos/manage-identities/01_overview. Identity is a hard problem that Ory Identities solves in a unique way. Ory values security, flexibility, and integration with cloud technology such as Kubernetes the most: -- Ory Identities doesn't ship an HTML Rendering Engine. You use the Ory Account Experience available in Ory Network or build your - own UI in the language and framework you feel most comfortable with. +- Ory Identities doesn't ship an HTML Rendering Engine. You can use the Ory Account Experience available in Ory Network or build + your own UI in the language and framework you feel most comfortable with. - The workflow engine allows you to fully customize your users' experience. Whether you want users to activate their accounts after registration, or have a multi-step (progressive) registration process - it's all possible! - One [identity schema](../kratos/manage-identities/01_overview.mdx) doesn't fit all - you may have customers that need a billing diff --git a/docs/identities/sign-in/identifier-first-authentication.mdx b/docs/identities/sign-in/identifier-first-authentication.mdx index 2d9019c04b..418bcdb93a 100644 --- a/docs/identities/sign-in/identifier-first-authentication.mdx +++ b/docs/identities/sign-in/identifier-first-authentication.mdx @@ -22,12 +22,11 @@ To enable it: - 1. Log in to the [Ory Console](https://console.ory.sh). - 2. Select your project. - 3. Navigate to . -- 4. Enable "Enable Account Experience 2.0 (preview)". -- 5. Navigate to -- 6. Click "Apply new UI URLs". -- 7. Test the flow in your application by navigating to the login page. +- 4. Disable "Use legacy Hosted UI". +- 5. Test the flow in your application by navigating to the login page. -To revert, follow the same steps, disable "New Account Experience", and click "Reset to Account Experience". +To revert, follow the same steps, enable "Use legacy Hosted UI", and click "Reset to Account Experience" on +the . ## Self-hosted Ory Kratos diff --git a/docs/intro.mdx b/docs/intro.mdx index 730687c53b..da27479e11 100644 --- a/docs/intro.mdx +++ b/docs/intro.mdx @@ -110,9 +110,8 @@ Ory Console is the management UI of Ory Network. Ory Account Experience implements screens such as login, registration, account recovery, account setting, and account verification for fast adoption of Ory. -Contrary to other vendors, Ory allows you to implement your own (login, registration, ...) UI by offering simple, headless APIs. -Use the open-source [Ory Elements](https://github.com/ory/elements) components library for fast integration with frameworks like -ExpressJS, React, or Preact. +Ory allows you to implement your own authentication UI by offering simple, headless APIs. Use the open-source +[Ory Elements](https://github.com/ory/elements) components library for fast integration with frameworks like React and Next.js. ### Ory Actions diff --git a/docs/kratos/bring-your-own-ui/20_configure-ory-to-use-your-ui.mdx b/docs/kratos/bring-your-own-ui/20_configure-ory-to-use-your-ui.mdx index 2127001f2a..0a278e4b12 100644 --- a/docs/kratos/bring-your-own-ui/20_configure-ory-to-use-your-ui.mdx +++ b/docs/kratos/bring-your-own-ui/20_configure-ory-to-use-your-ui.mdx @@ -13,9 +13,9 @@ Configuration URL, go to , and copy the ::: -By default, self-service flows use [Ory Account Experience](./01_overview.mdx#why-should-i-use-ory-account-experience), which is a -part of every Ory Network project. In the default setup, the system uses relative paths to point to the appropriate UI for every -screen. The relative links that point to the Ory Account Experience follow the `/ui/{flow_name}` format. +By default, self-service flows use [Ory Account Experience](./01_overview.mdx#why-should-i-use-ory-account-experience). In the +default setup, the system uses relative paths to point to the appropriate UI for every screen. The relative links that point to +the Ory Account Experience follow the `/ui/{flow_name}` format. ## Custom domain setup diff --git a/docs/oauth2-oidc/identity-provider-integration-settings.mdx b/docs/oauth2-oidc/identity-provider-integration-settings.mdx index 00e650587b..7734045227 100644 --- a/docs/oauth2-oidc/identity-provider-integration-settings.mdx +++ b/docs/oauth2-oidc/identity-provider-integration-settings.mdx @@ -32,7 +32,7 @@ import TabItem from '@theme/TabItem'; -Go to and `Enable Override Return To` setting. +Go to and enable the `OAuth2 provider override "return_to` setting. diff --git a/src/components/ConsoleLink/console-nav-data.ts b/src/components/ConsoleLink/console-nav-data.ts index e760350c74..d925a9ae86 100644 --- a/src/components/ConsoleLink/console-nav-data.ts +++ b/src/components/ConsoleLink/console-nav-data.ts @@ -22,7 +22,7 @@ export const getStartedPaths: Path[] = [ href: routes.project.getStarted.route + "#integrations", }, { - title: "Guides and Tutorials", + title: "Guides and concepts", href: routes.project.getStarted.route + "#guides-tutorials", }, { title: "Community", href: routes.project.getStarted.route + "#community" }, @@ -31,15 +31,15 @@ export const getStartedPaths: Path[] = [ export const activityPaths: Path[] = [ { title: "Live", href: routes.project.activity.route }, { - title: "Logs & Events", + title: "Logs & events", href: routes.project.activity.events.route, }, { title: "Sessions", href: routes.project.sessions.list.route }, - { title: "Email delivery", href: routes.project.courierMessages.route }, + { title: "Message delivery", href: routes.project.courierMessages.route }, ] export const identititesPaths: Path[] = [ - { title: "Users & Identities", href: routes.project.identities.list.route }, + { title: "Users & identities", href: routes.project.identities.list.route }, { title: "Identity schema", href: routes.project.identitySchema.route }, { title: "Import users", @@ -53,6 +53,10 @@ export const brandingPaths: Path[] = [ title: "Theming", href: routes.project.accountExperience.theming.route, }, + { + title: "Localization", + href: routes.project.accountExperience.locales.route, + }, { title: "Custom domains", href: routes.project.cname.route, @@ -65,6 +69,10 @@ export const brandingPaths: Path[] = [ title: "UI URLs", href: routes.project.ui.route, }, + { + title: "Email templates", + href: routes.project.emailTemplates.route, + }, ] export const authenticationPaths: Path[] = [ @@ -81,17 +89,23 @@ export const authenticationPaths: Path[] = [ href: routes.project.mfa.route, }, { - title: "Social Sign-In", + title: "Social Sign-In (OIDC)", href: routes.project.socialSignIn.route, }, { - title: "Actions & Webhooks", - href: routes.project.developers.actions.route, + title: "SAML Sign-In", + href: routes.project.saml.route, + pill: "Preview", }, { title: "Enterprise SSO", href: routes.project.authentication.organizations.route, }, + + { + title: "Sessions", + href: routes.project.authentication.sessionSettings.route, + }, { title: "Account recovery", href: routes.project.recovery.route, @@ -101,39 +115,51 @@ export const authenticationPaths: Path[] = [ href: routes.project.verification.route, }, { - title: "Email configuration", + title: "Email Configuration", href: routes.project.emailConfiguration.route, }, { - title: "Email templates", - href: routes.project.emailTemplates.route, - }, - { - title: "SMS configuration", + title: "SMS Configuration", href: routes.project.smsConfiguration.route, }, { - title: "Sessions", - href: routes.project.authentication.sessionSettings.route, + title: "Actions & Webhooks", + href: routes.project.developers.actions.route, }, ] export const oauthPaths: Path[] = [ { - title: "Overview", - href: routes.project.oauthConfiguration.overview.route, + title: "Clients and applications", + href: routes.project.oauthConfiguration.route, }, { - title: "OAuth2 Clients", - href: routes.project.oauthConfiguration.route, + title: "Endpoints", + href: routes.project.oauthConfiguration.endpoints.route, }, { - title: "Configuration", + title: "General", href: routes.project.oauthConfiguration.configure.route, }, { - title: "Identity integration settings", - href: routes.project.oauthConfiguration.identityIntegration.route, + title: "OpenID Connect", + href: routes.project.oauthConfiguration.openid.route, + }, + { + title: "URLs", + href: routes.project.oauthConfiguration.urls.route, + }, + { + title: "Lifespans", + href: routes.project.oauthConfiguration.lifespans.route, + }, + { + title: "Token strategies", + href: routes.project.oauthConfiguration.strategies.route, + }, + { + title: "Cookies", + href: routes.project.oauthConfiguration.cookies.route, }, ] @@ -217,7 +243,7 @@ export const projectPaths: RootPath[] = [ }, { title: "OAuth 2", - href: routes.project.oauthConfiguration.overview.route, + href: routes.project.oauthConfiguration.route, paths: oauthPaths, }, { diff --git a/src/components/ConsoleLink/console-routes.ts b/src/components/ConsoleLink/console-routes.ts index 4b88e26d64..9e4871a02c 100644 --- a/src/components/ConsoleLink/console-routes.ts +++ b/src/components/ConsoleLink/console-routes.ts @@ -26,6 +26,7 @@ export const routes = { support: "/support", account: { login: "/login", + consent: "/oauth2/consent", recovery: "/recovery", verification: "/verification", register: "/registration", @@ -36,7 +37,6 @@ export const routes = { onboard: "/get-started", }, invites: "/invites", - guides: "/guides", project: { activity: { route: "/projects/[project]/activity", @@ -57,10 +57,6 @@ export const routes = { route: "/projects/[project]/developers/actions", href: (project: string) => `/projects/${project}/developers/actions`, }, - guides: { - route: "/projects/[project]/developers/guides", - href: (project: string) => `/projects/${project}/developers/guides`, - }, }, list: "/projects", create: "/projects/create", @@ -98,12 +94,21 @@ export const routes = { href: (project: string) => `/projects/${project}/mfa`, }, recovery: { - route: "/projects/[project]/recovery", - href: (project: string) => `/projects/${project}/recovery`, + route: "/projects/[project]/authentication/recovery", + href: (project: string) => `/projects/${project}/authentication/recovery`, }, verification: { - route: "/projects/[project]/verification", - href: (project: string) => `/projects/${project}/verification`, + route: "/projects/[project]/authentication/verification", + href: (project: string) => + `/projects/${project}/authentication/verification`, + }, + smsConfiguration: { + route: "/projects/[project]/sms-configuration", + href: (project: string) => `/projects/${project}/sms-configuration`, + }, + limits: { + route: "/projects/[project]/limits", + href: (project: string) => `/projects/${project}/limits`, }, emailConfiguration: { route: "/projects/[project]/email-configuration", @@ -113,10 +118,6 @@ export const routes = { route: "/projects/[project]/email-templates", href: (project: string) => `/projects/${project}/email-templates`, }, - smsConfiguration: { - route: "/projects/[project]/sms-configuration", - href: (project: string) => `/projects/${project}/sms-configuration`, - }, sessionSettings: { route: "/projects/[project]/session-settings", href: (project: string) => `/projects/${project}/session-settings`, @@ -172,30 +173,45 @@ export const routes = { `/projects/${project}/social-signin/${providerId}`, }, }, + saml: { + route: "/projects/[project]/saml", + href: (project: string) => `/projects/${project}/saml`, + configureProvider: { + route: "/projects/[project]/saml/[provider]", + href: (project: string, providerId: string) => + `/projects/${project}/saml/${providerId}`, + }, + }, oauthConfiguration: { route: "/projects/[project]/oauth", href: (project: string) => `/projects/${project}/oauth`, - edit: { - route: "/projects/[project]/oauth/[client]", - href: (project: string, client: string) => - `/projects/${project}/oauth/${client}`, - }, - create: { - route: "/projects/[project]/oauth/create", - href: (project: string) => `/projects/${project}/oauth/create`, - }, - overview: { - route: "/projects/[project]/oauth/overview", - href: (project: string) => `/projects/${project}/oauth/overview`, + endpoints: { + route: "/projects/[project]/oauth/endpoints", + href: (project: string) => `/projects/${project}/oauth/endpoints`, }, configure: { route: "/projects/[project]/oauth/configure", href: (project: string) => `/projects/${project}/oauth/configure`, }, - identityIntegration: { - route: "/projects/[project]/oauth/identity-integration-settings", - href: (project: string) => - `/projects/${project}/oauth/identity-integration-settings`, + openid: { + route: "/projects/[project]/oauth/openid", + href: (project: string) => `/projects/${project}/oauth/openid`, + }, + urls: { + route: "/projects/[project]/oauth/urls", + href: (project: string) => `/projects/${project}/oauth/urls`, + }, + lifespans: { + route: "/projects/[project]/oauth/lifespans", + href: (project: string) => `/projects/${project}/oauth/lifespans`, + }, + strategies: { + route: "/projects/[project]/oauth/strategies", + href: (project: string) => `/projects/${project}/oauth/strategies`, + }, + cookies: { + route: "/projects/[project]/oauth/cookies", + href: (project: string) => `/projects/${project}/oauth/cookies`, }, }, courierMessages: { @@ -214,6 +230,21 @@ export const routes = { route: "/projects/[project]/account-experience/theming", href: (project: string) => `/projects/${project}/account-experience/theming`, + customize: { + route: "/projects/[project]/account-experience/theming/customize", + href: (project: string) => + `/projects/${project}/account-experience/theming/customize`, + }, + }, + locales: { + route: "/projects/[project]/account-experience/locales", + href: (project: string) => + `/projects/${project}/account-experience/locales`, + edit: { + route: "/projects/[project]/account-experience/locales/[locale]", + href: (project: string, locale: string) => + `/projects/${project}/account-experience/locales/${locale}`, + }, }, }, authentication: { @@ -261,16 +292,16 @@ export const routes = { href: (workspace: string) => `/workspaces/${workspace}/settings/members`, }, - apiKeys: { - route: "/workspaces/[workspace]/settings/api-keys", - href: (workspace: string) => - `/workspaces/${workspace}/settings/api-keys`, - }, subscription: { route: "/workspaces/[workspace]/settings/subscription", href: (workspace: string) => `/workspaces/${workspace}/settings/subscription`, }, + apiKeys: { + route: "/workspaces/[workspace]/settings/api-keys", + href: (workspace: string) => + `/workspaces/${workspace}/settings/api-keys`, + }, billing: { route: "/workspaces/[workspace]/settings/billing", href: (workspace: string) =>