From 96640e69c9a5f1e2ff86c62b9ae5a6aed8db7eca Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Tue, 29 Jul 2025 17:33:05 +0100 Subject: [PATCH 01/20] fix: make google-one-tap work [#207] # Conflicts: # packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart # packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart --- .fvmrc | 2 +- .../clerk_auth/lib/src/clerk_api/api.dart | 51 +++++++++---------- .../clerk_auth/lib/src/clerk_auth/auth.dart | 14 ++--- .../lib/src/models/client/strategy.dart | 2 +- .../example/android/app/build.gradle | 4 +- .../example/android/build.gradle | 2 +- .../clerk_flutter/example/ios/Podfile.lock | 32 ++++++++++++ .../lib/pages/custom_sign_in_example.dart | 36 +++++++++++-- .../Flutter/GeneratedPluginRegistrant.swift | 2 + packages/clerk_flutter/example/pubspec.yaml | 4 +- .../clerk_organization_profile.dart | 4 +- .../src/widgets/ui/clerk_material_button.dart | 8 +-- .../widgets/ui/multi_digit_code_input.dart | 2 +- .../src/widgets/user/clerk_user_button.dart | 2 +- 14 files changed, 110 insertions(+), 55 deletions(-) diff --git a/.fvmrc b/.fvmrc index 2549cd21..c2783c69 100644 --- a/.fvmrc +++ b/.fvmrc @@ -1,3 +1,3 @@ { - "flutter": "3.10.0" + "flutter": "3.27.4" } \ No newline at end of file diff --git a/packages/clerk_auth/lib/src/clerk_api/api.dart b/packages/clerk_auth/lib/src/clerk_api/api.dart index ac17bdf4..38a6e4a8 100644 --- a/packages/clerk_auth/lib/src/clerk_api/api.dart +++ b/packages/clerk_auth/lib/src/clerk_api/api.dart @@ -50,6 +50,7 @@ class Api with Logging { static const _kClerkSessionId = '_clerk_session_id'; static const _kClientKey = 'client'; static const _kErrorsKey = 'errors'; + static const _kMetaKey = 'meta'; static const _kIsNative = '_is_native'; static const _kJwtKey = 'jwt'; static const _kOrganizationId = 'organization_id'; @@ -309,6 +310,8 @@ class Api with Logging { String? identifier, String? password, String? redirectUrl, + String? token, + String? code, }) async { return await _fetchApiResponse( '/client/sign_ins', @@ -317,6 +320,8 @@ class Api with Logging { 'identifier': identifier, 'password': password, 'redirect_url': redirectUrl, + 'token': token, + 'code': code, }, ); } @@ -445,23 +450,6 @@ class Api with Logging { ); } - /// Send a token and code supplied by an oAuth provider to the back end - /// - Future oauthTokenSignIn( - Strategy strategy, { - String? token, - String? code, - }) async { - return await _fetchApiResponse( - '/client/sign_ins', - params: { - 'strategy': strategy, - 'token': token, - 'code': code, - }, - ); - } - /// Send a token received from an oAuth provider to the back end /// Future sendOauthToken( @@ -904,17 +892,14 @@ class Api with Logging { ApiResponse _processResponse(http.Response resp) { final body = json.decode(resp.body) as Map; - final errors = body[_kErrorsKey] != null - ? List>.from(body[_kErrorsKey]) - .map(ApiError.fromJson) - .toList() - : null; - final [clientData, responseData] = switch (body[_kClientKey]) { - Map client when client.isNotEmpty => [ + final errors = _errors(body[_kErrorsKey]); + final (clientData, responseData) = + switch (body[_kClientKey] ?? body[_kMetaKey]?[_kClientKey]) { + Map client when client.isNotEmpty => ( client, - body[_kResponseKey], - ], - _ => [body[_kResponseKey], null], + body[_kResponseKey] + ), + _ => (body[_kResponseKey], null), }; if (clientData case Map clientJson) { final client = Client.fromJson(clientJson); @@ -929,7 +914,6 @@ class Api with Logging { }, ); } else { - logSevere(body); return ApiResponse( status: resp.statusCode, errors: errors, @@ -937,6 +921,17 @@ class Api with Logging { } } + List? _errors(List? data) { + if (data == null) { + return null; + } + + logSevere(data); + return List>.from(data) + .map(ApiError.fromJson) + .toList(growable: false); + } + Future _fetch({ required String path, HttpMethod method = HttpMethod.post, diff --git a/packages/clerk_auth/lib/src/clerk_auth/auth.dart b/packages/clerk_auth/lib/src/clerk_auth/auth.dart index 69671113..730142f6 100644 --- a/packages/clerk_auth/lib/src/clerk_auth/auth.dart +++ b/packages/clerk_auth/lib/src/clerk_auth/auth.dart @@ -354,21 +354,15 @@ class Auth { String? redirectUrl, }) async { // oAuthToken - if (strategy.isOauthToken && (token is String || code is String)) { + if (strategy.isOauthToken) { await _api - .oauthTokenSignIn(strategy, token: token, code: code) - .then(_housekeeping); - return; - } - - // google one tap - if (strategy == Strategy.googleOneTap && token is String) { - await _api - .oauthTokenSignIn(Strategy.googleOneTap, token: token) + .createSignIn(strategy: strategy, token: token, code: code) .then(_housekeeping); + update(); return; } + // Ensure we have a signIn object if (client.signIn == null) { // if password and identifier been presented, we can immediately attempt // a sign in; if null they will be ignored diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index a6d723af..02a491a5 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -159,7 +159,7 @@ class Strategy { bool get isOauth => const [_oauthToken, _oauthCustom, _oauth].contains(name); /// is oauth token? - bool get isOauthToken => name == _oauthToken; + bool get isOauthToken => name == _oauthToken || this == googleOneTap; /// is other strategy? bool get isOtherStrategy => isOauth == false && requiresPassword == false; diff --git a/packages/clerk_flutter/example/android/app/build.gradle b/packages/clerk_flutter/example/android/app/build.gradle index 17e701c4..1ea29b8e 100644 --- a/packages/clerk_flutter/example/android/app/build.gradle +++ b/packages/clerk_flutter/example/android/app/build.gradle @@ -27,7 +27,7 @@ apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { namespace "com.example.example" - compileSdkVersion 34 + compileSdkVersion 35 ndkVersion "25.1.8937393" compileOptions { @@ -48,7 +48,7 @@ android { applicationId "com.example.example" // You can update the following values to match your application needs. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion 19 + minSdkVersion flutter.minSdkVersion targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/packages/clerk_flutter/example/android/build.gradle b/packages/clerk_flutter/example/android/build.gradle index 2941aa6c..80abf3cf 100644 --- a/packages/clerk_flutter/example/android/build.gradle +++ b/packages/clerk_flutter/example/android/build.gradle @@ -1,5 +1,5 @@ buildscript { - ext.kotlin_version = '1.7.10' + ext.kotlin_version = '2.2.0' repositories { google() mavenCentral() diff --git a/packages/clerk_flutter/example/ios/Podfile.lock b/packages/clerk_flutter/example/ios/Podfile.lock index 0cfc742e..0bf74bf6 100644 --- a/packages/clerk_flutter/example/ios/Podfile.lock +++ b/packages/clerk_flutter/example/ios/Podfile.lock @@ -1,7 +1,24 @@ PODS: - app_links (0.0.1): - Flutter + - AppAuth (1.7.6): + - AppAuth/Core (= 1.7.6) + - AppAuth/ExternalUserAgent (= 1.7.6) + - AppAuth/Core (1.7.6) + - AppAuth/ExternalUserAgent (1.7.6): + - AppAuth/Core - Flutter (1.0.0) + - google_sign_in_ios (0.0.1): + - Flutter + - GoogleSignIn (~> 7.0) + - GoogleSignIn (7.1.0): + - AppAuth (< 2.0, >= 1.7.3) + - GTMAppAuth (< 5.0, >= 4.1.1) + - GTMSessionFetcher/Core (~> 3.3) + - GTMAppAuth (4.1.1): + - AppAuth/Core (~> 1.7) + - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher/Core (3.5.0) - image_picker_ios (0.0.1): - Flutter - path_provider_foundation (0.0.1): @@ -15,16 +32,26 @@ PODS: DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) - Flutter (from `Flutter`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) +SPEC REPOS: + trunk: + - AppAuth + - GoogleSignIn + - GTMAppAuth + - GTMSessionFetcher + EXTERNAL SOURCES: app_links: :path: ".symlinks/plugins/app_links/ios" Flutter: :path: Flutter + google_sign_in_ios: + :path: ".symlinks/plugins/google_sign_in_ios/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" path_provider_foundation: @@ -36,7 +63,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: app_links: c5161ac5ab5383ad046884568b4b91cb52df5d91 + AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 + google_sign_in_ios: 8c4b89589e876fc9fcf22035d6208077008f6c03 + GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db + GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de + GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 image_picker_ios: 85f2b3c9fb98c09d63725c4d12ebd585b56ec35d path_provider_foundation: 608fcb11be570ce83519b076ab6a1fffe2474f05 url_launcher_ios: 9d5365b30ff416ba8e3d917bae5f7fb25f6a4a89 diff --git a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart index 54c94c72..91c09221 100644 --- a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart +++ b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart @@ -1,8 +1,10 @@ import 'dart:async'; +import 'package:clerk_auth/clerk_auth.dart' as clerk; import 'package:clerk_flutter/clerk_flutter.dart'; import 'package:flutter/material.dart'; -import 'package:clerk_auth/clerk_auth.dart' as clerk; +import 'package:google_sign_in/google_sign_in.dart'; +import 'package:uuid/uuid.dart'; /// Example of how to use clerk auth with custom ui. /// @@ -72,7 +74,29 @@ class _CustomOAuthSignInExampleState extends State { } } - // Alwats dispose of the subscriptions and remove listeners. + Future _googleOneTap() async { + _loading.value = true; + final google = GoogleSignIn.instance; + await google.initialize( + serverClientId: + '56207170923-qp406tdeq9glhs03t9b6ddn1ve988os5.apps.googleusercontent.com', + nonce: const Uuid().v4(), + ); + final account = await google.authenticate( + scopeHint: const [ + 'openid', + 'https://www.googleapis.com/auth/userinfo.email', + 'https://www.googleapis.com/auth/userinfo.profile' + ], + ); + await _authState.attemptSignIn( + strategy: clerk.Strategy.googleOneTap, + token: account.authentication.idToken, + ); + _loading.value = false; + } + + // Always dispose of the subscriptions and remove listeners. @override void dispose() { super.dispose(); @@ -86,7 +110,7 @@ class _CustomOAuthSignInExampleState extends State { return Scaffold( key: _scaffoldKey, appBar: AppBar( - title: const Text('Custom OAuth Sign In'), + title: const Text('Custom Sign In'), ), body: ListenableBuilder( listenable: _initalized, @@ -152,6 +176,12 @@ class _CustomOAuthSignInExampleState extends State { onPressed: () => _signIn(strategy), child: Text(strategy.provider ?? strategy.name), ), + if (_authState.env.config.firstFactors + .contains(clerk.Strategy.googleOneTap)) // + ElevatedButton( + onPressed: _googleOneTap, + child: const Text('google_one_tap'), + ), ], ), ], diff --git a/packages/clerk_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/clerk_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift index a1090596..e02d6556 100644 --- a/packages/clerk_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/packages/clerk_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -7,12 +7,14 @@ import Foundation import app_links import file_selector_macos +import google_sign_in_ios import path_provider_foundation import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) } diff --git a/packages/clerk_flutter/example/pubspec.yaml b/packages/clerk_flutter/example/pubspec.yaml index df92864d..66d35d95 100644 --- a/packages/clerk_flutter/example/pubspec.yaml +++ b/packages/clerk_flutter/example/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: 'none' version: 0.1.0 environment: - sdk: '>=3.0.0 <4.0.0' + sdk: '>=3.2.0 <4.0.0' flutter: '>=3.10.0' dependencies: @@ -14,6 +14,8 @@ dependencies: clerk_auth: '>=0.0.10-beta' app_links: ^3.5.1 url_launcher_ios: 6.2.0 + google_sign_in: ^7.1.0 + uuid: ^4.5.1 dev_dependencies: flutter_lints: ^3.0.1 diff --git a/packages/clerk_flutter/lib/src/widgets/organization/clerk_organization_profile.dart b/packages/clerk_flutter/lib/src/widgets/organization/clerk_organization_profile.dart index 779fe492..be41360d 100644 --- a/packages/clerk_flutter/lib/src/widgets/organization/clerk_organization_profile.dart +++ b/packages/clerk_flutter/lib/src/widgets/organization/clerk_organization_profile.dart @@ -62,12 +62,12 @@ class _ClerkOrganizationProfileState extends State }, ); - if (result == DialogChoice.ok && context.mounted) { + if (result == DialogChoice.ok && mounted) { final hasLeftSuccessfully = await authState.safelyCall( context, () => authState.leaveOrganization(organization: org), ); - if (hasLeftSuccessfully == true && context.mounted) { + if (hasLeftSuccessfully == true && mounted) { Navigator.of(context).pop(); } } diff --git a/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart b/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart index 156b2d52..623f086d 100644 --- a/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart +++ b/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart @@ -72,10 +72,10 @@ class ClerkMaterialButton extends StatelessWidget { child: FilledButton( onPressed: onPressed, style: ButtonStyle( - padding: MaterialStateProperty.all(EdgeInsets.zero), - backgroundColor: MaterialStateProperty.all(color), - foregroundColor: MaterialStateProperty.all(textColor), - shape: MaterialStateProperty.all( + padding: WidgetStateProperty.all(EdgeInsets.zero), + backgroundColor: WidgetStateProperty.all(color), + foregroundColor: WidgetStateProperty.all(textColor), + shape: WidgetStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(height / 6), side: const BorderSide(color: ClerkColors.dawnPink), diff --git a/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart b/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart index a409cdcf..132918ed 100644 --- a/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart +++ b/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart @@ -347,7 +347,7 @@ class _PulsingCursorState extends State<_PulsingCursor> width: double.infinity, height: widget.height, child: ColoredBox( - color: Colors.black.withOpacity(_curve.value * 0.5), + color: Colors.black.withAlpha((_curve.value * 128).toInt()), ), ), ), diff --git a/packages/clerk_flutter/lib/src/widgets/user/clerk_user_button.dart b/packages/clerk_flutter/lib/src/widgets/user/clerk_user_button.dart index 406c34a3..b58b07b0 100644 --- a/packages/clerk_flutter/lib/src/widgets/user/clerk_user_button.dart +++ b/packages/clerk_flutter/lib/src/widgets/user/clerk_user_button.dart @@ -157,7 +157,7 @@ class _ClerkUserButtonState extends State DialogChoice.ok: _localizations.ok, }, ); - if (result == DialogChoice.ok && context.mounted) { + if (result == DialogChoice.ok && mounted) { await _authState.safelyCall(context, () => _authState.signOut()); } } From 5b7e91f1a4b93f8cc16546d70420242f18f21b73 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Tue, 29 Jul 2025 17:52:11 +0100 Subject: [PATCH 02/20] fix: remove reference to gcp project ID --- .../example/lib/pages/custom_sign_in_example.dart | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart index 91c09221..6a0ca6c7 100644 --- a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart +++ b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart @@ -78,16 +78,11 @@ class _CustomOAuthSignInExampleState extends State { _loading.value = true; final google = GoogleSignIn.instance; await google.initialize( - serverClientId: - '56207170923-qp406tdeq9glhs03t9b6ddn1ve988os5.apps.googleusercontent.com', + serverClientId: const String.fromEnvironment('gcp_project_id'), nonce: const Uuid().v4(), ); final account = await google.authenticate( - scopeHint: const [ - 'openid', - 'https://www.googleapis.com/auth/userinfo.email', - 'https://www.googleapis.com/auth/userinfo.profile' - ], + scopeHint: const ['openid', 'email', 'profile'], ); await _authState.attemptSignIn( strategy: clerk.Strategy.googleOneTap, From c7f68dce25253a4d666abe210d2b2c474e34d403 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Tue, 29 Jul 2025 17:54:59 +0100 Subject: [PATCH 03/20] fix: remove oauth_token_google strategy [#207] --- packages/clerk_auth/lib/src/models/client/strategy.dart | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index 02a491a5..8183ab95 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -49,10 +49,6 @@ class Strategy { /// oauth token apple strategy static const oauthTokenApple = Strategy(name: _oauthToken, provider: 'apple'); - /// oauth token google strategy - static const oauthTokenGoogle = - Strategy(name: _oauthToken, provider: 'google'); - /// google one tap strategy static const googleOneTap = Strategy(name: 'google_one_tap'); @@ -63,7 +59,6 @@ class Strategy { oauthGoogle.toString(): oauthGoogle, oauthFacebook.toString(): oauthFacebook, oauthTokenApple.toString(): oauthTokenApple, - oauthTokenGoogle.toString(): oauthTokenGoogle, googleOneTap.toString(): googleOneTap, }; From df6c6640380aa16b641bcba054c1cf5f53537528 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 16:55:57 +0100 Subject: [PATCH 04/20] fix: remove mention of googleonetap outside comms with the api [#207] --- .../lib/src/models/client/strategy.dart | 50 +- .../src/models/environment/environment.dart | 14 +- packages/clerk_flutter/example/.gitignore | 2 + .../clerk_flutter/example/ios/Podfile.lock | 63 +- .../ios/Runner.xcodeproj/project.pbxproj | 20 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/ios/Runner/AppDelegate.swift | 2 +- .../lib/pages/custom_sign_in_example.dart | 7 +- packages/clerk_flutter/example/pubspec.yaml | 1 + .../generated/clerk_sdk_localizations.dart | 1851 ++++++++--------- .../generated/clerk_sdk_localizations_en.dart | 920 ++++---- 11 files changed, 1478 insertions(+), 1454 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index 8183ab95..a8493ccb 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -25,6 +25,7 @@ class Strategy { /// provider final String? provider; + static const _oauthTokenGoogleName = 'google_one_tap'; static const _oauthToken = 'oauth_token'; static const _oauthCustom = 'oauth_custom'; static const _oauth = 'oauth'; @@ -50,7 +51,7 @@ class Strategy { static const oauthTokenApple = Strategy(name: _oauthToken, provider: 'apple'); /// google one tap strategy - static const googleOneTap = Strategy(name: 'google_one_tap'); + static const oauthTokenGoogle = Strategy(name: _oauthTokenGoogleName); /// the collected oauth strategies static final oauthStrategies = { @@ -59,7 +60,7 @@ class Strategy { oauthGoogle.toString(): oauthGoogle, oauthFacebook.toString(): oauthFacebook, oauthTokenApple.toString(): oauthTokenApple, - googleOneTap.toString(): googleOneTap, + oauthTokenGoogle.toString(): oauthTokenGoogle, }; // verification strategies @@ -83,12 +84,10 @@ class Strategy { static const phoneCode = Strategy(name: 'phone_code'); /// reset password email code strategy - static const resetPasswordEmailCode = - Strategy(name: 'reset_password_email_code'); + static const resetPasswordEmailCode = Strategy(name: 'reset_password_email_code'); /// reset password phone code strategy - static const resetPasswordPhoneCode = - Strategy(name: 'reset_password_phone_code'); + static const resetPasswordPhoneCode = Strategy(name: 'reset_password_phone_code'); /// saml strategy static const saml = Strategy(name: 'saml'); @@ -97,12 +96,10 @@ class Strategy { static const ticket = Strategy(name: 'ticket'); /// web3 metamask signature strategy - static const web3MetamaskSignature = - Strategy(name: 'web3_metamask_signature'); + static const web3MetamaskSignature = Strategy(name: 'web3_metamask_signature'); /// web3 coinbase signature strategy - static const web3CoinbaseSignature = - Strategy(name: 'web3_coinbase_signature'); + static const web3CoinbaseSignature = Strategy(name: 'web3_coinbase_signature'); /// the collected verification strategies static final verificationStrategies = { @@ -150,45 +147,38 @@ class Strategy { /// is known? bool get isKnown => isUnknown == false; - /// is oauth? - bool get isOauth => const [_oauthToken, _oauthCustom, _oauth].contains(name); + /// is oauth custom? + bool get isOauthCustom => name == _oauthCustom; /// is oauth token? - bool get isOauthToken => name == _oauthToken || this == googleOneTap; + bool get isOauthToken => const [_oauthToken, _oauthTokenGoogleName].contains(name); + + /// is some variety of oauth? + bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; /// is other strategy? bool get isOtherStrategy => isOauth == false && requiresPassword == false; /// is phone strategy? - bool get isPhone => - const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); + bool get isPhone => const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); /// is a password reset strategy? bool get isPasswordResetter => const [resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires password? - bool get requiresPassword => const [ - password, - resetPasswordEmailCode, - resetPasswordPhoneCode - ].contains(this); + bool get requiresPassword => + const [password, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires code? - bool get requiresCode => const [ - emailCode, - phoneCode, - resetPasswordEmailCode, - resetPasswordPhoneCode - ].contains(this); + bool get requiresCode => + const [emailCode, phoneCode, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires signature? - bool get requiresSignature => - const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); + bool get requiresSignature => const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); /// requires redirect? - bool get requiresRedirect => - name == _oauth || const [emailLink, saml].contains(this); + bool get requiresRedirect => name == _oauth || const [emailLink, saml].contains(this); /// For a given [name] return the [Strategy] it identifies. /// Create one if necessary and possible diff --git a/packages/clerk_auth/lib/src/models/environment/environment.dart b/packages/clerk_auth/lib/src/models/environment/environment.dart index 1a35e808..cb20956d 100644 --- a/packages/clerk_auth/lib/src/models/environment/environment.dart +++ b/packages/clerk_auth/lib/src/models/environment/environment.dart @@ -51,15 +51,15 @@ class Environment with InformativeToStringMixin { static const empty = Environment(); /// Do we have [Strategy.password] configured? - bool get hasPasswordStrategy => - config.firstFactors.contains(Strategy.password); + bool get hasPasswordStrategy => config.firstFactors.contains(Strategy.password); /// [List] of identification strategies List get strategies => config.identificationStrategies; /// [Iterable] of non-oauth and non-phone identification strategies - Iterable get identificationStrategies => - strategies.where((i) => i.isOauth == false); + Iterable get identificationStrategies => strategies.where( + (i) => const [Strategy.emailAddress, Strategy.username, Strategy.phoneNumber].contains(i), + ); /// Do we have identification strategies? bool get hasIdentificationStrategies => identificationStrategies.isNotEmpty; @@ -72,15 +72,13 @@ class Environment with InformativeToStringMixin { /// [Iterable] of other strategies /// i.e. strategies that are neither oauth nor password-based - Iterable get otherStrategies => - strategies.where((f) => f.isOtherStrategy); + Iterable get otherStrategies => strategies.where((f) => f.isOtherStrategy); /// Do we have other strategies? bool get hasOtherStrategies => otherStrategies.isNotEmpty; /// fromJson - static Environment fromJson(Map json) => - _$EnvironmentFromJson(json); + static Environment fromJson(Map json) => _$EnvironmentFromJson(json); /// toJson @override diff --git a/packages/clerk_flutter/example/.gitignore b/packages/clerk_flutter/example/.gitignore index d9fb10a2..57323334 100644 --- a/packages/clerk_flutter/example/.gitignore +++ b/packages/clerk_flutter/example/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/packages/clerk_flutter/example/ios/Podfile.lock b/packages/clerk_flutter/example/ios/Podfile.lock index 0bf74bf6..5884e82c 100644 --- a/packages/clerk_flutter/example/ios/Podfile.lock +++ b/packages/clerk_flutter/example/ios/Podfile.lock @@ -1,29 +1,50 @@ PODS: - app_links (0.0.1): - Flutter - - AppAuth (1.7.6): - - AppAuth/Core (= 1.7.6) - - AppAuth/ExternalUserAgent (= 1.7.6) - - AppAuth/Core (1.7.6) - - AppAuth/ExternalUserAgent (1.7.6): + - AppAuth (2.0.0): + - AppAuth/Core (= 2.0.0) + - AppAuth/ExternalUserAgent (= 2.0.0) + - AppAuth/Core (2.0.0) + - AppAuth/ExternalUserAgent (2.0.0): - AppAuth/Core + - AppCheckCore (11.2.0): + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) - Flutter (1.0.0) - google_sign_in_ios (0.0.1): - Flutter - - GoogleSignIn (~> 7.0) - - GoogleSignIn (7.1.0): - - AppAuth (< 2.0, >= 1.7.3) - - GTMAppAuth (< 5.0, >= 4.1.1) + - FlutterMacOS + - GoogleSignIn (~> 9.0) + - GTMSessionFetcher (>= 3.4.0) + - GoogleSignIn (9.0.0): + - AppAuth (~> 2.0) + - AppCheckCore (~> 11.0) + - GTMAppAuth (~> 5.0) - GTMSessionFetcher/Core (~> 3.3) - - GTMAppAuth (4.1.1): - - AppAuth/Core (~> 1.7) + - GoogleUtilities/Environment (8.1.0): + - GoogleUtilities/Privacy + - GoogleUtilities/Logger (8.1.0): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (8.1.0) + - GoogleUtilities/UserDefaults (8.1.0): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GTMAppAuth (5.0.0): + - AppAuth/Core (~> 2.0) - GTMSessionFetcher/Core (< 4.0, >= 3.3) + - GTMSessionFetcher (3.5.0): + - GTMSessionFetcher/Full (= 3.5.0) - GTMSessionFetcher/Core (3.5.0) + - GTMSessionFetcher/Full (3.5.0): + - GTMSessionFetcher/Core - image_picker_ios (0.0.1): - Flutter - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS + - PromisesObjC (2.4.0) - url_launcher_ios (0.0.1): - Flutter - webview_flutter_wkwebview (0.0.1): @@ -32,7 +53,7 @@ PODS: DEPENDENCIES: - app_links (from `.symlinks/plugins/app_links/ios`) - Flutter (from `Flutter`) - - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/ios`) + - google_sign_in_ios (from `.symlinks/plugins/google_sign_in_ios/darwin`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) @@ -41,9 +62,12 @@ DEPENDENCIES: SPEC REPOS: trunk: - AppAuth + - AppCheckCore - GoogleSignIn + - GoogleUtilities - GTMAppAuth - GTMSessionFetcher + - PromisesObjC EXTERNAL SOURCES: app_links: @@ -51,7 +75,7 @@ EXTERNAL SOURCES: Flutter: :path: Flutter google_sign_in_ios: - :path: ".symlinks/plugins/google_sign_in_ios/ios" + :path: ".symlinks/plugins/google_sign_in_ios/darwin" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" path_provider_foundation: @@ -63,14 +87,17 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: app_links: c5161ac5ab5383ad046884568b4b91cb52df5d91 - AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - google_sign_in_ios: 8c4b89589e876fc9fcf22035d6208077008f6c03 - GoogleSignIn: d4281ab6cf21542b1cfaff85c191f230b399d2db - GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de + AppAuth: 1c1a8afa7e12f2ec3a294d9882dfa5ab7d3cb063 + AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 + google_sign_in_ios: 205742c688aea0e64db9da03c33121694a365109 + GoogleSignIn: c7f09cfbc85a1abf69187be091997c317cc33b77 + GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 + GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 image_picker_ios: 85f2b3c9fb98c09d63725c4d12ebd585b56ec35d path_provider_foundation: 608fcb11be570ce83519b076ab6a1fffe2474f05 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 url_launcher_ios: 9d5365b30ff416ba8e3d917bae5f7fb25f6a4a89 webview_flutter_wkwebview: daa94b5ed120e19439eb7f797649768d6360ebdd diff --git a/packages/clerk_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/clerk_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 41a2364f..3a08cf6e 100644 --- a/packages/clerk_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/clerk_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -198,6 +198,7 @@ 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 689B28B7F877FA22B78D933F /* [CP] Embed Pods Frameworks */, + 2666E98AFB5323465520CA3C /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -215,7 +216,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { @@ -269,6 +270,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2666E98AFB5323465520CA3C /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; 329A23D911D285C7AFCBA93D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; diff --git a/packages/clerk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/clerk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index e42adcb3..8e3ca5df 100644 --- a/packages/clerk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/clerk_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ createState() => - _CustomOAuthSignInExampleState(); + State createState() => _CustomOAuthSignInExampleState(); } class _CustomOAuthSignInExampleState extends State { @@ -85,7 +84,7 @@ class _CustomOAuthSignInExampleState extends State { scopeHint: const ['openid', 'email', 'profile'], ); await _authState.attemptSignIn( - strategy: clerk.Strategy.googleOneTap, + strategy: clerk.Strategy.oauthTokenGoogle, token: account.authentication.idToken, ); _loading.value = false; @@ -172,7 +171,7 @@ class _CustomOAuthSignInExampleState extends State { child: Text(strategy.provider ?? strategy.name), ), if (_authState.env.config.firstFactors - .contains(clerk.Strategy.googleOneTap)) // + .contains(clerk.Strategy.oauthTokenGoogle)) // ElevatedButton( onPressed: _googleOneTap, child: const Text('google_one_tap'), diff --git a/packages/clerk_flutter/example/pubspec.yaml b/packages/clerk_flutter/example/pubspec.yaml index 66d35d95..56b25173 100644 --- a/packages/clerk_flutter/example/pubspec.yaml +++ b/packages/clerk_flutter/example/pubspec.yaml @@ -16,6 +16,7 @@ dependencies: url_launcher_ios: 6.2.0 google_sign_in: ^7.1.0 uuid: ^4.5.1 + win32: ^5.5.4 dev_dependencies: flutter_lints: ^3.0.1 diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart index ad1bc326..d1daab2a 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart @@ -1,926 +1,925 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'clerk_sdk_localizations_en.dart'; - -/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations -/// returned by `ClerkSdkLocalizations.of(context)`. -/// -/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'generated/clerk_sdk_localizations.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, -/// supportedLocales: ClerkSdkLocalizations.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales -/// property. -abstract class ClerkSdkLocalizations { - ClerkSdkLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static ClerkSdkLocalizations? of(BuildContext context) { - return Localizations.of( - context, ClerkSdkLocalizations); - } - - static const LocalizationsDelegate delegate = - _ClerkSdkLocalizationsDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [Locale('en')]; - - /// No description provided for @aLengthOfBetweenMINAndMAX. - /// - /// In en, this message translates to: - /// **'a length of between {min} and {max}'** - String aLengthOfBetweenMINAndMAX(int min, int max); - - /// No description provided for @aLengthOfMINOrGreater. - /// - /// In en, this message translates to: - /// **'a length of {min} or greater'** - String aLengthOfMINOrGreater(int min); - - /// No description provided for @aLowercaseLetter. - /// - /// In en, this message translates to: - /// **'a LOWERCASE letter'** - String get aLowercaseLetter; - - /// No description provided for @aNumber. - /// - /// In en, this message translates to: - /// **'a NUMBER'** - String get aNumber; - - /// No description provided for @aSpecialCharacter. - /// - /// In en, this message translates to: - /// **'a SPECIAL CHARACTER ({chars})'** - String aSpecialCharacter(String chars); - - /// No description provided for @abandoned. - /// - /// In en, this message translates to: - /// **'abandoned'** - String get abandoned; - - /// No description provided for @acceptTerms. - /// - /// In en, this message translates to: - /// **'I accept the Terms & Conditions and Privacy Policy'** - String get acceptTerms; - - /// No description provided for @actionNotTimely. - /// - /// In en, this message translates to: - /// **'Awaited user action not completed in required timeframe'** - String get actionNotTimely; - - /// No description provided for @active. - /// - /// In en, this message translates to: - /// **'active'** - String get active; - - /// No description provided for @addAccount. - /// - /// In en, this message translates to: - /// **'Add account'** - String get addAccount; - - /// No description provided for @addDomain. - /// - /// In en, this message translates to: - /// **'Add domain'** - String get addDomain; - - /// No description provided for @addEmailAddress. - /// - /// In en, this message translates to: - /// **'Add email address'** - String get addEmailAddress; - - /// No description provided for @addPhoneNumber. - /// - /// In en, this message translates to: - /// **'Add phone number'** - String get addPhoneNumber; - - /// No description provided for @alreadyHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Already have an account?'** - String get alreadyHaveAnAccount; - - /// No description provided for @anUppercaseLetter. - /// - /// In en, this message translates to: - /// **'an UPPERCASE letter'** - String get anUppercaseLetter; - - /// No description provided for @and. - /// - /// In en, this message translates to: - /// **'and'** - String get and; - - /// No description provided for @areYouSure. - /// - /// In en, this message translates to: - /// **'Are you sure?'** - String get areYouSure; - - /// No description provided for @authenticatorApp. - /// - /// In en, this message translates to: - /// **'authenticator app'** - String get authenticatorApp; - - /// No description provided for @automaticInvitation. - /// - /// In en, this message translates to: - /// **'Automatic invitation'** - String get automaticInvitation; - - /// No description provided for @automaticSuggestion. - /// - /// In en, this message translates to: - /// **'Automatic suggestion'** - String get automaticSuggestion; - - /// No description provided for @backupCode. - /// - /// In en, this message translates to: - /// **'backup code'** - String get backupCode; - - /// No description provided for @cancel. - /// - /// In en, this message translates to: - /// **'Cancel'** - String get cancel; - - /// No description provided for @cannotDeleteSelf. - /// - /// In en, this message translates to: - /// **'You are not authorized to delete your user'** - String get cannotDeleteSelf; - - /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. - /// - /// In en, this message translates to: - /// **'Click on the link that‘s been sent to {identifier} and then check back here'** - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); - - /// No description provided for @complete. - /// - /// In en, this message translates to: - /// **'complete'** - String get complete; - - /// No description provided for @connectAccount. - /// - /// In en, this message translates to: - /// **'Connect account'** - String get connectAccount; - - /// No description provided for @connectedAccounts. - /// - /// In en, this message translates to: - /// **'Connected accounts'** - String get connectedAccounts; - - /// No description provided for @cont. - /// - /// In en, this message translates to: - /// **'Continue'** - String get cont; - - /// No description provided for @createOrganization. - /// - /// In en, this message translates to: - /// **'Create organization'** - String get createOrganization; - - /// No description provided for @didntReceiveCode. - /// - /// In en, this message translates to: - /// **'Didn\'t receive the code?'** - String get didntReceiveCode; - - /// No description provided for @domainName. - /// - /// In en, this message translates to: - /// **'Domain name'** - String get domainName; - - /// No description provided for @dontHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Don’t have an account?'** - String get dontHaveAnAccount; - - /// No description provided for @edit. - /// - /// In en, this message translates to: - /// **'edit'** - String get edit; - - /// No description provided for @emailAddress. - /// - /// In en, this message translates to: - /// **'email address'** - String get emailAddress; - - /// No description provided for @emailAddressConcise. - /// - /// In en, this message translates to: - /// **'email'** - String get emailAddressConcise; - - /// No description provided for @enrollment. - /// - /// In en, this message translates to: - /// **'Enrollment'** - String get enrollment; - - /// No description provided for @enrollmentMode. - /// - /// In en, this message translates to: - /// **'Enrollment mode:'** - String get enrollmentMode; - - /// No description provided for @enterCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter code sent to {identifier}'** - String enterCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter the code sent to {identifier}'** - String enterTheCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentToYou. - /// - /// In en, this message translates to: - /// **'Enter the code sent to you'** - String get enterTheCodeSentToYou; - - /// No description provided for @expired. - /// - /// In en, this message translates to: - /// **'expired'** - String get expired; - - /// No description provided for @failed. - /// - /// In en, this message translates to: - /// **'failed'** - String get failed; - - /// No description provided for @firstName. - /// - /// In en, this message translates to: - /// **'first name'** - String get firstName; - - /// No description provided for @forgottenPassword. - /// - /// In en, this message translates to: - /// **'Forgotten password?'** - String get forgottenPassword; - - /// No description provided for @generalDetails. - /// - /// In en, this message translates to: - /// **'General details'** - String get generalDetails; - - /// No description provided for @invalidEmailAddress. - /// - /// In en, this message translates to: - /// **'Invalid email address: {address}'** - String invalidEmailAddress(String address); - - /// No description provided for @invalidPhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid phone number: {number}'** - String invalidPhoneNumber(String number); - - /// No description provided for @join. - /// - /// In en, this message translates to: - /// **'JOIN'** - String get join; - - /// No description provided for @jwtPoorlyFormatted. - /// - /// In en, this message translates to: - /// **'JWT poorly formatted: {arg}'** - String jwtPoorlyFormatted(String arg); - - /// No description provided for @lastName. - /// - /// In en, this message translates to: - /// **'last name'** - String get lastName; - - /// No description provided for @leave. - /// - /// In en, this message translates to: - /// **'Leave'** - String get leave; - - /// No description provided for @leaveOrg. - /// - /// In en, this message translates to: - /// **'Leave {organization}'** - String leaveOrg(String organization); - - /// No description provided for @leaveOrganization. - /// - /// In en, this message translates to: - /// **'Leave organization'** - String get leaveOrganization; - - /// No description provided for @loading. - /// - /// In en, this message translates to: - /// **'Loading…'** - String get loading; - - /// No description provided for @logo. - /// - /// In en, this message translates to: - /// **'Logo'** - String get logo; - - /// No description provided for @manualInvitation. - /// - /// In en, this message translates to: - /// **'Manual invitation'** - String get manualInvitation; - - /// No description provided for @missingRequirements. - /// - /// In en, this message translates to: - /// **'missing requirements'** - String get missingRequirements; - - /// No description provided for @name. - /// - /// In en, this message translates to: - /// **'Name'** - String get name; - - /// No description provided for @needsFirstFactor. - /// - /// In en, this message translates to: - /// **'needs first factor'** - String get needsFirstFactor; - - /// No description provided for @needsIdentifier. - /// - /// In en, this message translates to: - /// **'needs identifier'** - String get needsIdentifier; - - /// No description provided for @needsSecondFactor. - /// - /// In en, this message translates to: - /// **'needs second factor'** - String get needsSecondFactor; - - /// No description provided for @newPassword. - /// - /// In en, this message translates to: - /// **'New password'** - String get newPassword; - - /// No description provided for @newPasswordConfirmation. - /// - /// In en, this message translates to: - /// **'Confirm new password'** - String get newPasswordConfirmation; - - /// No description provided for @noAssociatedCodeRetrievalMethod. - /// - /// In en, this message translates to: - /// **'No code retrieval method associated with {arg}'** - String noAssociatedCodeRetrievalMethod(String arg); - - /// No description provided for @noAssociatedStrategy. - /// - /// In en, this message translates to: - /// **'No strategy associated with {arg}'** - String noAssociatedStrategy(String arg); - - /// No description provided for @noSessionFoundForUser. - /// - /// In en, this message translates to: - /// **'No session found for {arg}'** - String noSessionFoundForUser(String arg); - - /// No description provided for @noSessionTokenRetrieved. - /// - /// In en, this message translates to: - /// **'No session token retrieved'** - String get noSessionTokenRetrieved; - - /// No description provided for @noStageForStatus. - /// - /// In en, this message translates to: - /// **'No stage for {arg}'** - String noStageForStatus(String arg); - - /// No description provided for @noSuchFirstFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for first factor'** - String noSuchFirstFactorStrategy(String arg); - - /// No description provided for @noSuchSecondFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for second factor'** - String noSuchSecondFactorStrategy(String arg); - - /// No description provided for @noTranslationFor. - /// - /// In en, this message translates to: - /// **'No translation for {name}'** - String noTranslationFor(String name); - - /// No description provided for @ok. - /// - /// In en, this message translates to: - /// **'OK'** - String get ok; - - /// No description provided for @optional. - /// - /// In en, this message translates to: - /// **'(optional)'** - String get optional; - - /// No description provided for @or. - /// - /// In en, this message translates to: - /// **'or'** - String get or; - - /// No description provided for @organizationProfile. - /// - /// In en, this message translates to: - /// **'Organization profile'** - String get organizationProfile; - - /// No description provided for @organizations. - /// - /// In en, this message translates to: - /// **'Organizations'** - String get organizations; - - /// No description provided for @passkey. - /// - /// In en, this message translates to: - /// **'passkey'** - String get passkey; - - /// No description provided for @password. - /// - /// In en, this message translates to: - /// **'Password'** - String get password; - - /// No description provided for @passwordAndPasswordConfirmationMustMatch. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordAndPasswordConfirmationMustMatch; - - /// No description provided for @passwordConfirmation. - /// - /// In en, this message translates to: - /// **'confirm password'** - String get passwordConfirmation; - - /// No description provided for @passwordMatchError. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordMatchError; - - /// No description provided for @passwordMustBeSupplied. - /// - /// In en, this message translates to: - /// **'A password must be supplied'** - String get passwordMustBeSupplied; - - /// No description provided for @passwordRequires. - /// - /// In en, this message translates to: - /// **'Password requires:'** - String get passwordRequires; - - /// No description provided for @pending. - /// - /// In en, this message translates to: - /// **'pending'** - String get pending; - - /// No description provided for @personalAccount. - /// - /// In en, this message translates to: - /// **'Personal account'** - String get personalAccount; - - /// No description provided for @phoneNumber. - /// - /// In en, this message translates to: - /// **'phone number'** - String get phoneNumber; - - /// No description provided for @phoneNumberConcise. - /// - /// In en, this message translates to: - /// **'phone'** - String get phoneNumberConcise; - - /// No description provided for @pleaseChooseAnAccountToConnect. - /// - /// In en, this message translates to: - /// **'Please choose an account to connect'** - String get pleaseChooseAnAccountToConnect; - - /// No description provided for @pleaseEnterYourIdentifier. - /// - /// In en, this message translates to: - /// **'Please enter your identifier'** - String get pleaseEnterYourIdentifier; - - /// No description provided for @primary. - /// - /// In en, this message translates to: - /// **'PRIMARY'** - String get primary; - - /// No description provided for @privacyPolicy. - /// - /// In en, this message translates to: - /// **'Privacy Policy'** - String get privacyPolicy; - - /// No description provided for @problemsConnecting. - /// - /// In en, this message translates to: - /// **'We are having problems connecting'** - String get problemsConnecting; - - /// No description provided for @profile. - /// - /// In en, this message translates to: - /// **'Profile'** - String get profile; - - /// No description provided for @profileDetails. - /// - /// In en, this message translates to: - /// **'Profile details'** - String get profileDetails; - - /// No description provided for @recommendSize. - /// - /// In en, this message translates to: - /// **'Recommend size 1:1, up to 5MB.'** - String get recommendSize; - - /// No description provided for @requiredField. - /// - /// In en, this message translates to: - /// **'(required)'** - String get requiredField; - - /// No description provided for @resend. - /// - /// In en, this message translates to: - /// **'Resend'** - String get resend; - - /// No description provided for @resetFailed. - /// - /// In en, this message translates to: - /// **'That password reset attempt failed. A new code has been sent.'** - String get resetFailed; - - /// No description provided for @resetPassword. - /// - /// In en, this message translates to: - /// **'Reset password and sign in'** - String get resetPassword; - - /// No description provided for @selectAccount. - /// - /// In en, this message translates to: - /// **'Select the account with which you wish to continue'** - String get selectAccount; - - /// No description provided for @sendMeTheCode. - /// - /// In en, this message translates to: - /// **'Send me the reset code'** - String get sendMeTheCode; - - /// No description provided for @signIn. - /// - /// In en, this message translates to: - /// **'Sign in'** - String get signIn; - - /// No description provided for @signInByClickingALinkSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by clicking a link sent to you by email'** - String get signInByClickingALinkSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by email'** - String get signInByEnteringACodeSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by text message'** - String get signInByEnteringACodeSentToYouByTextMessage; - - /// No description provided for @signInError. - /// - /// In en, this message translates to: - /// **'Unsupported sign in attempt: {arg}'** - String signInError(String arg); - - /// No description provided for @signInTo. - /// - /// In en, this message translates to: - /// **'Sign in to {name}'** - String signInTo(String name); - - /// No description provided for @signOut. - /// - /// In en, this message translates to: - /// **'Sign out'** - String get signOut; - - /// No description provided for @signOutIdentifier. - /// - /// In en, this message translates to: - /// **'Sign out {identifier}'** - String signOutIdentifier(String identifier); - - /// No description provided for @signOutOfAllAccounts. - /// - /// In en, this message translates to: - /// **'Sign out of all accounts'** - String get signOutOfAllAccounts; - - /// No description provided for @signUp. - /// - /// In en, this message translates to: - /// **'Sign up'** - String get signUp; - - /// No description provided for @signUpTo. - /// - /// In en, this message translates to: - /// **'Sign up to {name}'** - String signUpTo(String name); - - /// No description provided for @slugUrl. - /// - /// In en, this message translates to: - /// **'Slug URL'** - String get slugUrl; - - /// No description provided for @switchTo. - /// - /// In en, this message translates to: - /// **'Switch to'** - String get switchTo; - - /// No description provided for @termsAndConditions. - /// - /// In en, this message translates to: - /// **'Terms & Conditions'** - String get termsAndConditions; - - /// No description provided for @transferable. - /// - /// In en, this message translates to: - /// **'transferable'** - String get transferable; - - /// No description provided for @typeTypeInvalid. - /// - /// In en, this message translates to: - /// **'Type \'{type}\' is invalid'** - String typeTypeInvalid(String type); - - /// No description provided for @unsupportedPasswordResetStrategy. - /// - /// In en, this message translates to: - /// **'Unsupported password reset strategy: {arg}'** - String unsupportedPasswordResetStrategy(String arg); - - /// No description provided for @unverified. - /// - /// In en, this message translates to: - /// **'unverified'** - String get unverified; - - /// No description provided for @username. - /// - /// In en, this message translates to: - /// **'username'** - String get username; - - /// No description provided for @verificationEmailAddress. - /// - /// In en, this message translates to: - /// **'Email address verification'** - String get verificationEmailAddress; - - /// No description provided for @verificationPhoneNumber. - /// - /// In en, this message translates to: - /// **'Phone number verification'** - String get verificationPhoneNumber; - - /// No description provided for @verified. - /// - /// In en, this message translates to: - /// **'verified'** - String get verified; - - /// No description provided for @verifiedDomains. - /// - /// In en, this message translates to: - /// **'Verified domains'** - String get verifiedDomains; - - /// No description provided for @verifyYourEmailAddress. - /// - /// In en, this message translates to: - /// **'Verify your email address'** - String get verifyYourEmailAddress; - - /// No description provided for @verifyYourPhoneNumber. - /// - /// In en, this message translates to: - /// **'Verify your phone number'** - String get verifyYourPhoneNumber; - - /// No description provided for @viaAutomaticInvitation. - /// - /// In en, this message translates to: - /// **'via automatic invitation'** - String get viaAutomaticInvitation; - - /// No description provided for @viaAutomaticSuggestion. - /// - /// In en, this message translates to: - /// **'via automatic suggestion'** - String get viaAutomaticSuggestion; - - /// No description provided for @viaManualInvitation. - /// - /// In en, this message translates to: - /// **'via manual invitation'** - String get viaManualInvitation; - - /// No description provided for @web3Wallet. - /// - /// In en, this message translates to: - /// **'web3 wallet'** - String get web3Wallet; - - /// No description provided for @welcomeBackPleaseSignInToContinue. - /// - /// In en, this message translates to: - /// **'Welcome back! Please sign in to continue'** - String get welcomeBackPleaseSignInToContinue; - - /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. - /// - /// In en, this message translates to: - /// **'Welcome! Please fill in the details to get started'** - String get welcomePleaseFillInTheDetailsToGetStarted; - - /// No description provided for @youNeedToAdd. - /// - /// In en, this message translates to: - /// **'You need to add:'** - String get youNeedToAdd; -} - -class _ClerkSdkLocalizationsDelegate - extends LocalizationsDelegate { - const _ClerkSdkLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture( - lookupClerkSdkLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => - ['en'].contains(locale.languageCode); - - @override - bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; -} - -ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'en': - return ClerkSdkLocalizationsEn(); - } - - throw FlutterError( - 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); -} +// ignore_for_file: public_member_api_docs, use_super_parameters +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'clerk_sdk_localizations_en.dart'; + +// ignore_for_file: type=lint + +/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations +/// returned by `ClerkSdkLocalizations.of(context)`. +/// +/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'generated/clerk_sdk_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, +/// supportedLocales: ClerkSdkLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales +/// property. +abstract class ClerkSdkLocalizations { + ClerkSdkLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static ClerkSdkLocalizations? of(BuildContext context) { + return Localizations.of(context, ClerkSdkLocalizations); + } + + static const LocalizationsDelegate delegate = _ClerkSdkLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [ + Locale('en') + ]; + + /// No description provided for @aLengthOfBetweenMINAndMAX. + /// + /// In en, this message translates to: + /// **'a length of between {min} and {max}'** + String aLengthOfBetweenMINAndMAX(int min, int max); + + /// No description provided for @aLengthOfMINOrGreater. + /// + /// In en, this message translates to: + /// **'a length of {min} or greater'** + String aLengthOfMINOrGreater(int min); + + /// No description provided for @aLowercaseLetter. + /// + /// In en, this message translates to: + /// **'a LOWERCASE letter'** + String get aLowercaseLetter; + + /// No description provided for @aNumber. + /// + /// In en, this message translates to: + /// **'a NUMBER'** + String get aNumber; + + /// No description provided for @aSpecialCharacter. + /// + /// In en, this message translates to: + /// **'a SPECIAL CHARACTER ({chars})'** + String aSpecialCharacter(String chars); + + /// No description provided for @abandoned. + /// + /// In en, this message translates to: + /// **'abandoned'** + String get abandoned; + + /// No description provided for @acceptTerms. + /// + /// In en, this message translates to: + /// **'I accept the Terms & Conditions and Privacy Policy'** + String get acceptTerms; + + /// No description provided for @actionNotTimely. + /// + /// In en, this message translates to: + /// **'Awaited user action not completed in required timeframe'** + String get actionNotTimely; + + /// No description provided for @active. + /// + /// In en, this message translates to: + /// **'active'** + String get active; + + /// No description provided for @addAccount. + /// + /// In en, this message translates to: + /// **'Add account'** + String get addAccount; + + /// No description provided for @addDomain. + /// + /// In en, this message translates to: + /// **'Add domain'** + String get addDomain; + + /// No description provided for @addEmailAddress. + /// + /// In en, this message translates to: + /// **'Add email address'** + String get addEmailAddress; + + /// No description provided for @addPhoneNumber. + /// + /// In en, this message translates to: + /// **'Add phone number'** + String get addPhoneNumber; + + /// No description provided for @alreadyHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Already have an account?'** + String get alreadyHaveAnAccount; + + /// No description provided for @anUppercaseLetter. + /// + /// In en, this message translates to: + /// **'an UPPERCASE letter'** + String get anUppercaseLetter; + + /// No description provided for @and. + /// + /// In en, this message translates to: + /// **'and'** + String get and; + + /// No description provided for @areYouSure. + /// + /// In en, this message translates to: + /// **'Are you sure?'** + String get areYouSure; + + /// No description provided for @authenticatorApp. + /// + /// In en, this message translates to: + /// **'authenticator app'** + String get authenticatorApp; + + /// No description provided for @automaticInvitation. + /// + /// In en, this message translates to: + /// **'Automatic invitation'** + String get automaticInvitation; + + /// No description provided for @automaticSuggestion. + /// + /// In en, this message translates to: + /// **'Automatic suggestion'** + String get automaticSuggestion; + + /// No description provided for @backupCode. + /// + /// In en, this message translates to: + /// **'backup code'** + String get backupCode; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @cannotDeleteSelf. + /// + /// In en, this message translates to: + /// **'You are not authorized to delete your user'** + String get cannotDeleteSelf; + + /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. + /// + /// In en, this message translates to: + /// **'Click on the link that‘s been sent to {identifier} and then check back here'** + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); + + /// No description provided for @complete. + /// + /// In en, this message translates to: + /// **'complete'** + String get complete; + + /// No description provided for @connectAccount. + /// + /// In en, this message translates to: + /// **'Connect account'** + String get connectAccount; + + /// No description provided for @connectedAccounts. + /// + /// In en, this message translates to: + /// **'Connected accounts'** + String get connectedAccounts; + + /// No description provided for @cont. + /// + /// In en, this message translates to: + /// **'Continue'** + String get cont; + + /// No description provided for @createOrganization. + /// + /// In en, this message translates to: + /// **'Create organization'** + String get createOrganization; + + /// No description provided for @didntReceiveCode. + /// + /// In en, this message translates to: + /// **'Didn\'t receive the code?'** + String get didntReceiveCode; + + /// No description provided for @domainName. + /// + /// In en, this message translates to: + /// **'Domain name'** + String get domainName; + + /// No description provided for @dontHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Don’t have an account?'** + String get dontHaveAnAccount; + + /// No description provided for @edit. + /// + /// In en, this message translates to: + /// **'edit'** + String get edit; + + /// No description provided for @emailAddress. + /// + /// In en, this message translates to: + /// **'email address'** + String get emailAddress; + + /// No description provided for @emailAddressConcise. + /// + /// In en, this message translates to: + /// **'email'** + String get emailAddressConcise; + + /// No description provided for @enrollment. + /// + /// In en, this message translates to: + /// **'Enrollment'** + String get enrollment; + + /// No description provided for @enrollmentMode. + /// + /// In en, this message translates to: + /// **'Enrollment mode:'** + String get enrollmentMode; + + /// No description provided for @enterCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter code sent to {identifier}'** + String enterCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter the code sent to {identifier}'** + String enterTheCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentToYou. + /// + /// In en, this message translates to: + /// **'Enter the code sent to you'** + String get enterTheCodeSentToYou; + + /// No description provided for @expired. + /// + /// In en, this message translates to: + /// **'expired'** + String get expired; + + /// No description provided for @failed. + /// + /// In en, this message translates to: + /// **'failed'** + String get failed; + + /// No description provided for @firstName. + /// + /// In en, this message translates to: + /// **'first name'** + String get firstName; + + /// No description provided for @forgottenPassword. + /// + /// In en, this message translates to: + /// **'Forgotten password?'** + String get forgottenPassword; + + /// No description provided for @generalDetails. + /// + /// In en, this message translates to: + /// **'General details'** + String get generalDetails; + + /// No description provided for @invalidEmailAddress. + /// + /// In en, this message translates to: + /// **'Invalid email address: {address}'** + String invalidEmailAddress(String address); + + /// No description provided for @invalidPhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid phone number: {number}'** + String invalidPhoneNumber(String number); + + /// No description provided for @join. + /// + /// In en, this message translates to: + /// **'JOIN'** + String get join; + + /// No description provided for @jwtPoorlyFormatted. + /// + /// In en, this message translates to: + /// **'JWT poorly formatted: {arg}'** + String jwtPoorlyFormatted(String arg); + + /// No description provided for @lastName. + /// + /// In en, this message translates to: + /// **'last name'** + String get lastName; + + /// No description provided for @leave. + /// + /// In en, this message translates to: + /// **'Leave'** + String get leave; + + /// No description provided for @leaveOrg. + /// + /// In en, this message translates to: + /// **'Leave {organization}'** + String leaveOrg(String organization); + + /// No description provided for @leaveOrganization. + /// + /// In en, this message translates to: + /// **'Leave organization'** + String get leaveOrganization; + + /// No description provided for @loading. + /// + /// In en, this message translates to: + /// **'Loading…'** + String get loading; + + /// No description provided for @logo. + /// + /// In en, this message translates to: + /// **'Logo'** + String get logo; + + /// No description provided for @manualInvitation. + /// + /// In en, this message translates to: + /// **'Manual invitation'** + String get manualInvitation; + + /// No description provided for @missingRequirements. + /// + /// In en, this message translates to: + /// **'missing requirements'** + String get missingRequirements; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @needsFirstFactor. + /// + /// In en, this message translates to: + /// **'needs first factor'** + String get needsFirstFactor; + + /// No description provided for @needsIdentifier. + /// + /// In en, this message translates to: + /// **'needs identifier'** + String get needsIdentifier; + + /// No description provided for @needsSecondFactor. + /// + /// In en, this message translates to: + /// **'needs second factor'** + String get needsSecondFactor; + + /// No description provided for @newPassword. + /// + /// In en, this message translates to: + /// **'New password'** + String get newPassword; + + /// No description provided for @newPasswordConfirmation. + /// + /// In en, this message translates to: + /// **'Confirm new password'** + String get newPasswordConfirmation; + + /// No description provided for @noAssociatedCodeRetrievalMethod. + /// + /// In en, this message translates to: + /// **'No code retrieval method associated with {arg}'** + String noAssociatedCodeRetrievalMethod(String arg); + + /// No description provided for @noAssociatedStrategy. + /// + /// In en, this message translates to: + /// **'No strategy associated with {arg}'** + String noAssociatedStrategy(String arg); + + /// No description provided for @noSessionFoundForUser. + /// + /// In en, this message translates to: + /// **'No session found for {arg}'** + String noSessionFoundForUser(String arg); + + /// No description provided for @noSessionTokenRetrieved. + /// + /// In en, this message translates to: + /// **'No session token retrieved'** + String get noSessionTokenRetrieved; + + /// No description provided for @noStageForStatus. + /// + /// In en, this message translates to: + /// **'No stage for {arg}'** + String noStageForStatus(String arg); + + /// No description provided for @noSuchFirstFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for first factor'** + String noSuchFirstFactorStrategy(String arg); + + /// No description provided for @noSuchSecondFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for second factor'** + String noSuchSecondFactorStrategy(String arg); + + /// No description provided for @noTranslationFor. + /// + /// In en, this message translates to: + /// **'No translation for {name}'** + String noTranslationFor(String name); + + /// No description provided for @ok. + /// + /// In en, this message translates to: + /// **'OK'** + String get ok; + + /// No description provided for @optional. + /// + /// In en, this message translates to: + /// **'(optional)'** + String get optional; + + /// No description provided for @or. + /// + /// In en, this message translates to: + /// **'or'** + String get or; + + /// No description provided for @organizationProfile. + /// + /// In en, this message translates to: + /// **'Organization profile'** + String get organizationProfile; + + /// No description provided for @organizations. + /// + /// In en, this message translates to: + /// **'Organizations'** + String get organizations; + + /// No description provided for @passkey. + /// + /// In en, this message translates to: + /// **'passkey'** + String get passkey; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @passwordAndPasswordConfirmationMustMatch. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordAndPasswordConfirmationMustMatch; + + /// No description provided for @passwordConfirmation. + /// + /// In en, this message translates to: + /// **'confirm password'** + String get passwordConfirmation; + + /// No description provided for @passwordMatchError. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordMatchError; + + /// No description provided for @passwordMustBeSupplied. + /// + /// In en, this message translates to: + /// **'A password must be supplied'** + String get passwordMustBeSupplied; + + /// No description provided for @passwordRequires. + /// + /// In en, this message translates to: + /// **'Password requires:'** + String get passwordRequires; + + /// No description provided for @pending. + /// + /// In en, this message translates to: + /// **'pending'** + String get pending; + + /// No description provided for @personalAccount. + /// + /// In en, this message translates to: + /// **'Personal account'** + String get personalAccount; + + /// No description provided for @phoneNumber. + /// + /// In en, this message translates to: + /// **'phone number'** + String get phoneNumber; + + /// No description provided for @phoneNumberConcise. + /// + /// In en, this message translates to: + /// **'phone'** + String get phoneNumberConcise; + + /// No description provided for @pleaseChooseAnAccountToConnect. + /// + /// In en, this message translates to: + /// **'Please choose an account to connect'** + String get pleaseChooseAnAccountToConnect; + + /// No description provided for @pleaseEnterYourIdentifier. + /// + /// In en, this message translates to: + /// **'Please enter your identifier'** + String get pleaseEnterYourIdentifier; + + /// No description provided for @primary. + /// + /// In en, this message translates to: + /// **'PRIMARY'** + String get primary; + + /// No description provided for @privacyPolicy. + /// + /// In en, this message translates to: + /// **'Privacy Policy'** + String get privacyPolicy; + + /// No description provided for @problemsConnecting. + /// + /// In en, this message translates to: + /// **'We are having problems connecting'** + String get problemsConnecting; + + /// No description provided for @profile. + /// + /// In en, this message translates to: + /// **'Profile'** + String get profile; + + /// No description provided for @profileDetails. + /// + /// In en, this message translates to: + /// **'Profile details'** + String get profileDetails; + + /// No description provided for @recommendSize. + /// + /// In en, this message translates to: + /// **'Recommend size 1:1, up to 5MB.'** + String get recommendSize; + + /// No description provided for @requiredField. + /// + /// In en, this message translates to: + /// **'(required)'** + String get requiredField; + + /// No description provided for @resend. + /// + /// In en, this message translates to: + /// **'Resend'** + String get resend; + + /// No description provided for @resetFailed. + /// + /// In en, this message translates to: + /// **'That password reset attempt failed. A new code has been sent.'** + String get resetFailed; + + /// No description provided for @resetPassword. + /// + /// In en, this message translates to: + /// **'Reset password and sign in'** + String get resetPassword; + + /// No description provided for @selectAccount. + /// + /// In en, this message translates to: + /// **'Select the account with which you wish to continue'** + String get selectAccount; + + /// No description provided for @sendMeTheCode. + /// + /// In en, this message translates to: + /// **'Send me the reset code'** + String get sendMeTheCode; + + /// No description provided for @signIn. + /// + /// In en, this message translates to: + /// **'Sign in'** + String get signIn; + + /// No description provided for @signInByClickingALinkSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by clicking a link sent to you by email'** + String get signInByClickingALinkSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by email'** + String get signInByEnteringACodeSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by text message'** + String get signInByEnteringACodeSentToYouByTextMessage; + + /// No description provided for @signInError. + /// + /// In en, this message translates to: + /// **'Unsupported sign in attempt: {arg}'** + String signInError(String arg); + + /// No description provided for @signInTo. + /// + /// In en, this message translates to: + /// **'Sign in to {name}'** + String signInTo(String name); + + /// No description provided for @signOut. + /// + /// In en, this message translates to: + /// **'Sign out'** + String get signOut; + + /// No description provided for @signOutIdentifier. + /// + /// In en, this message translates to: + /// **'Sign out {identifier}'** + String signOutIdentifier(String identifier); + + /// No description provided for @signOutOfAllAccounts. + /// + /// In en, this message translates to: + /// **'Sign out of all accounts'** + String get signOutOfAllAccounts; + + /// No description provided for @signUp. + /// + /// In en, this message translates to: + /// **'Sign up'** + String get signUp; + + /// No description provided for @signUpTo. + /// + /// In en, this message translates to: + /// **'Sign up to {name}'** + String signUpTo(String name); + + /// No description provided for @slugUrl. + /// + /// In en, this message translates to: + /// **'Slug URL'** + String get slugUrl; + + /// No description provided for @switchTo. + /// + /// In en, this message translates to: + /// **'Switch to'** + String get switchTo; + + /// No description provided for @termsAndConditions. + /// + /// In en, this message translates to: + /// **'Terms & Conditions'** + String get termsAndConditions; + + /// No description provided for @transferable. + /// + /// In en, this message translates to: + /// **'transferable'** + String get transferable; + + /// No description provided for @typeTypeInvalid. + /// + /// In en, this message translates to: + /// **'Type \'{type}\' is invalid'** + String typeTypeInvalid(String type); + + /// No description provided for @unsupportedPasswordResetStrategy. + /// + /// In en, this message translates to: + /// **'Unsupported password reset strategy: {arg}'** + String unsupportedPasswordResetStrategy(String arg); + + /// No description provided for @unverified. + /// + /// In en, this message translates to: + /// **'unverified'** + String get unverified; + + /// No description provided for @username. + /// + /// In en, this message translates to: + /// **'username'** + String get username; + + /// No description provided for @verificationEmailAddress. + /// + /// In en, this message translates to: + /// **'Email address verification'** + String get verificationEmailAddress; + + /// No description provided for @verificationPhoneNumber. + /// + /// In en, this message translates to: + /// **'Phone number verification'** + String get verificationPhoneNumber; + + /// No description provided for @verified. + /// + /// In en, this message translates to: + /// **'verified'** + String get verified; + + /// No description provided for @verifiedDomains. + /// + /// In en, this message translates to: + /// **'Verified domains'** + String get verifiedDomains; + + /// No description provided for @verifyYourEmailAddress. + /// + /// In en, this message translates to: + /// **'Verify your email address'** + String get verifyYourEmailAddress; + + /// No description provided for @verifyYourPhoneNumber. + /// + /// In en, this message translates to: + /// **'Verify your phone number'** + String get verifyYourPhoneNumber; + + /// No description provided for @viaAutomaticInvitation. + /// + /// In en, this message translates to: + /// **'via automatic invitation'** + String get viaAutomaticInvitation; + + /// No description provided for @viaAutomaticSuggestion. + /// + /// In en, this message translates to: + /// **'via automatic suggestion'** + String get viaAutomaticSuggestion; + + /// No description provided for @viaManualInvitation. + /// + /// In en, this message translates to: + /// **'via manual invitation'** + String get viaManualInvitation; + + /// No description provided for @web3Wallet. + /// + /// In en, this message translates to: + /// **'web3 wallet'** + String get web3Wallet; + + /// No description provided for @welcomeBackPleaseSignInToContinue. + /// + /// In en, this message translates to: + /// **'Welcome back! Please sign in to continue'** + String get welcomeBackPleaseSignInToContinue; + + /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. + /// + /// In en, this message translates to: + /// **'Welcome! Please fill in the details to get started'** + String get welcomePleaseFillInTheDetailsToGetStarted; + + /// No description provided for @youNeedToAdd. + /// + /// In en, this message translates to: + /// **'You need to add:'** + String get youNeedToAdd; +} + +class _ClerkSdkLocalizationsDelegate extends LocalizationsDelegate { + const _ClerkSdkLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture(lookupClerkSdkLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => ['en'].contains(locale.languageCode); + + @override + bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; +} + +ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { + + + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': return ClerkSdkLocalizationsEn(); + } + + throw FlutterError( + 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.' + ); +} diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart index f9d84d1a..d044b3d8 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart @@ -1,465 +1,455 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters - -import 'clerk_sdk_localizations.dart'; - -/// The translations for English (`en`). -class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { - ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String aLengthOfBetweenMINAndMAX(int min, int max) { - return 'a length of between $min and $max'; - } - - @override - String aLengthOfMINOrGreater(int min) { - return 'a length of $min or greater'; - } - - @override - String get aLowercaseLetter => 'a LOWERCASE letter'; - - @override - String get aNumber => 'a NUMBER'; - - @override - String aSpecialCharacter(String chars) { - return 'a SPECIAL CHARACTER ($chars)'; - } - - @override - String get abandoned => 'abandoned'; - - @override - String get acceptTerms => - 'I accept the Terms & Conditions and Privacy Policy'; - - @override - String get actionNotTimely => - 'Awaited user action not completed in required timeframe'; - - @override - String get active => 'active'; - - @override - String get addAccount => 'Add account'; - - @override - String get addDomain => 'Add domain'; - - @override - String get addEmailAddress => 'Add email address'; - - @override - String get addPhoneNumber => 'Add phone number'; - - @override - String get alreadyHaveAnAccount => 'Already have an account?'; - - @override - String get anUppercaseLetter => 'an UPPERCASE letter'; - - @override - String get and => 'and'; - - @override - String get areYouSure => 'Are you sure?'; - - @override - String get authenticatorApp => 'authenticator app'; - - @override - String get automaticInvitation => 'Automatic invitation'; - - @override - String get automaticSuggestion => 'Automatic suggestion'; - - @override - String get backupCode => 'backup code'; - - @override - String get cancel => 'Cancel'; - - @override - String get cannotDeleteSelf => 'You are not authorized to delete your user'; - - @override - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { - return 'Click on the link that‘s been sent to $identifier and then check back here'; - } - - @override - String get complete => 'complete'; - - @override - String get connectAccount => 'Connect account'; - - @override - String get connectedAccounts => 'Connected accounts'; - - @override - String get cont => 'Continue'; - - @override - String get createOrganization => 'Create organization'; - - @override - String get didntReceiveCode => 'Didn\'t receive the code?'; - - @override - String get domainName => 'Domain name'; - - @override - String get dontHaveAnAccount => 'Don’t have an account?'; - - @override - String get edit => 'edit'; - - @override - String get emailAddress => 'email address'; - - @override - String get emailAddressConcise => 'email'; - - @override - String get enrollment => 'Enrollment'; - - @override - String get enrollmentMode => 'Enrollment mode:'; - - @override - String enterCodeSentTo(String identifier) { - return 'Enter code sent to $identifier'; - } - - @override - String enterTheCodeSentTo(String identifier) { - return 'Enter the code sent to $identifier'; - } - - @override - String get enterTheCodeSentToYou => 'Enter the code sent to you'; - - @override - String get expired => 'expired'; - - @override - String get failed => 'failed'; - - @override - String get firstName => 'first name'; - - @override - String get forgottenPassword => 'Forgotten password?'; - - @override - String get generalDetails => 'General details'; - - @override - String invalidEmailAddress(String address) { - return 'Invalid email address: $address'; - } - - @override - String invalidPhoneNumber(String number) { - return 'Invalid phone number: $number'; - } - - @override - String get join => 'JOIN'; - - @override - String jwtPoorlyFormatted(String arg) { - return 'JWT poorly formatted: $arg'; - } - - @override - String get lastName => 'last name'; - - @override - String get leave => 'Leave'; - - @override - String leaveOrg(String organization) { - return 'Leave $organization'; - } - - @override - String get leaveOrganization => 'Leave organization'; - - @override - String get loading => 'Loading…'; - - @override - String get logo => 'Logo'; - - @override - String get manualInvitation => 'Manual invitation'; - - @override - String get missingRequirements => 'missing requirements'; - - @override - String get name => 'Name'; - - @override - String get needsFirstFactor => 'needs first factor'; - - @override - String get needsIdentifier => 'needs identifier'; - - @override - String get needsSecondFactor => 'needs second factor'; - - @override - String get newPassword => 'New password'; - - @override - String get newPasswordConfirmation => 'Confirm new password'; - - @override - String noAssociatedCodeRetrievalMethod(String arg) { - return 'No code retrieval method associated with $arg'; - } - - @override - String noAssociatedStrategy(String arg) { - return 'No strategy associated with $arg'; - } - - @override - String noSessionFoundForUser(String arg) { - return 'No session found for $arg'; - } - - @override - String get noSessionTokenRetrieved => 'No session token retrieved'; - - @override - String noStageForStatus(String arg) { - return 'No stage for $arg'; - } - - @override - String noSuchFirstFactorStrategy(String arg) { - return 'Strategy $arg not supported for first factor'; - } - - @override - String noSuchSecondFactorStrategy(String arg) { - return 'Strategy $arg not supported for second factor'; - } - - @override - String noTranslationFor(String name) { - return 'No translation for $name'; - } - - @override - String get ok => 'OK'; - - @override - String get optional => '(optional)'; - - @override - String get or => 'or'; - - @override - String get organizationProfile => 'Organization profile'; - - @override - String get organizations => 'Organizations'; - - @override - String get passkey => 'passkey'; - - @override - String get password => 'Password'; - - @override - String get passwordAndPasswordConfirmationMustMatch => - 'Password and password confirmation must match'; - - @override - String get passwordConfirmation => 'confirm password'; - - @override - String get passwordMatchError => - 'Password and password confirmation must match'; - - @override - String get passwordMustBeSupplied => 'A password must be supplied'; - - @override - String get passwordRequires => 'Password requires:'; - - @override - String get pending => 'pending'; - - @override - String get personalAccount => 'Personal account'; - - @override - String get phoneNumber => 'phone number'; - - @override - String get phoneNumberConcise => 'phone'; - - @override - String get pleaseChooseAnAccountToConnect => - 'Please choose an account to connect'; - - @override - String get pleaseEnterYourIdentifier => 'Please enter your identifier'; - - @override - String get primary => 'PRIMARY'; - - @override - String get privacyPolicy => 'Privacy Policy'; - - @override - String get problemsConnecting => 'We are having problems connecting'; - - @override - String get profile => 'Profile'; - - @override - String get profileDetails => 'Profile details'; - - @override - String get recommendSize => 'Recommend size 1:1, up to 5MB.'; - - @override - String get requiredField => '(required)'; - - @override - String get resend => 'Resend'; - - @override - String get resetFailed => - 'That password reset attempt failed. A new code has been sent.'; - - @override - String get resetPassword => 'Reset password and sign in'; - - @override - String get selectAccount => - 'Select the account with which you wish to continue'; - - @override - String get sendMeTheCode => 'Send me the reset code'; - - @override - String get signIn => 'Sign in'; - - @override - String get signInByClickingALinkSentToYouByEmail => - 'Sign in by clicking a link sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByEmail => - 'Sign in by entering a code sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByTextMessage => - 'Sign in by entering a code sent to you by text message'; - - @override - String signInError(String arg) { - return 'Unsupported sign in attempt: $arg'; - } - - @override - String signInTo(String name) { - return 'Sign in to $name'; - } - - @override - String get signOut => 'Sign out'; - - @override - String signOutIdentifier(String identifier) { - return 'Sign out $identifier'; - } - - @override - String get signOutOfAllAccounts => 'Sign out of all accounts'; - - @override - String get signUp => 'Sign up'; - - @override - String signUpTo(String name) { - return 'Sign up to $name'; - } - - @override - String get slugUrl => 'Slug URL'; - - @override - String get switchTo => 'Switch to'; - - @override - String get termsAndConditions => 'Terms & Conditions'; - - @override - String get transferable => 'transferable'; - - @override - String typeTypeInvalid(String type) { - return 'Type \'$type\' is invalid'; - } - - @override - String unsupportedPasswordResetStrategy(String arg) { - return 'Unsupported password reset strategy: $arg'; - } - - @override - String get unverified => 'unverified'; - - @override - String get username => 'username'; - - @override - String get verificationEmailAddress => 'Email address verification'; - - @override - String get verificationPhoneNumber => 'Phone number verification'; - - @override - String get verified => 'verified'; - - @override - String get verifiedDomains => 'Verified domains'; - - @override - String get verifyYourEmailAddress => 'Verify your email address'; - - @override - String get verifyYourPhoneNumber => 'Verify your phone number'; - - @override - String get viaAutomaticInvitation => 'via automatic invitation'; - - @override - String get viaAutomaticSuggestion => 'via automatic suggestion'; - - @override - String get viaManualInvitation => 'via manual invitation'; - - @override - String get web3Wallet => 'web3 wallet'; - - @override - String get welcomeBackPleaseSignInToContinue => - 'Welcome back! Please sign in to continue'; - - @override - String get welcomePleaseFillInTheDetailsToGetStarted => - 'Welcome! Please fill in the details to get started'; - - @override - String get youNeedToAdd => 'You need to add:'; -} +// ignore_for_file: public_member_api_docs, use_super_parameters + +import 'clerk_sdk_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for English (`en`). +class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { + ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String aLengthOfBetweenMINAndMAX(int min, int max) { + return 'a length of between $min and $max'; + } + + @override + String aLengthOfMINOrGreater(int min) { + return 'a length of $min or greater'; + } + + @override + String get aLowercaseLetter => 'a LOWERCASE letter'; + + @override + String get aNumber => 'a NUMBER'; + + @override + String aSpecialCharacter(String chars) { + return 'a SPECIAL CHARACTER ($chars)'; + } + + @override + String get abandoned => 'abandoned'; + + @override + String get acceptTerms => 'I accept the Terms & Conditions and Privacy Policy'; + + @override + String get actionNotTimely => 'Awaited user action not completed in required timeframe'; + + @override + String get active => 'active'; + + @override + String get addAccount => 'Add account'; + + @override + String get addDomain => 'Add domain'; + + @override + String get addEmailAddress => 'Add email address'; + + @override + String get addPhoneNumber => 'Add phone number'; + + @override + String get alreadyHaveAnAccount => 'Already have an account?'; + + @override + String get anUppercaseLetter => 'an UPPERCASE letter'; + + @override + String get and => 'and'; + + @override + String get areYouSure => 'Are you sure?'; + + @override + String get authenticatorApp => 'authenticator app'; + + @override + String get automaticInvitation => 'Automatic invitation'; + + @override + String get automaticSuggestion => 'Automatic suggestion'; + + @override + String get backupCode => 'backup code'; + + @override + String get cancel => 'Cancel'; + + @override + String get cannotDeleteSelf => 'You are not authorized to delete your user'; + + @override + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { + return 'Click on the link that‘s been sent to $identifier and then check back here'; + } + + @override + String get complete => 'complete'; + + @override + String get connectAccount => 'Connect account'; + + @override + String get connectedAccounts => 'Connected accounts'; + + @override + String get cont => 'Continue'; + + @override + String get createOrganization => 'Create organization'; + + @override + String get didntReceiveCode => 'Didn\'t receive the code?'; + + @override + String get domainName => 'Domain name'; + + @override + String get dontHaveAnAccount => 'Don’t have an account?'; + + @override + String get edit => 'edit'; + + @override + String get emailAddress => 'email address'; + + @override + String get emailAddressConcise => 'email'; + + @override + String get enrollment => 'Enrollment'; + + @override + String get enrollmentMode => 'Enrollment mode:'; + + @override + String enterCodeSentTo(String identifier) { + return 'Enter code sent to $identifier'; + } + + @override + String enterTheCodeSentTo(String identifier) { + return 'Enter the code sent to $identifier'; + } + + @override + String get enterTheCodeSentToYou => 'Enter the code sent to you'; + + @override + String get expired => 'expired'; + + @override + String get failed => 'failed'; + + @override + String get firstName => 'first name'; + + @override + String get forgottenPassword => 'Forgotten password?'; + + @override + String get generalDetails => 'General details'; + + @override + String invalidEmailAddress(String address) { + return 'Invalid email address: $address'; + } + + @override + String invalidPhoneNumber(String number) { + return 'Invalid phone number: $number'; + } + + @override + String get join => 'JOIN'; + + @override + String jwtPoorlyFormatted(String arg) { + return 'JWT poorly formatted: $arg'; + } + + @override + String get lastName => 'last name'; + + @override + String get leave => 'Leave'; + + @override + String leaveOrg(String organization) { + return 'Leave $organization'; + } + + @override + String get leaveOrganization => 'Leave organization'; + + @override + String get loading => 'Loading…'; + + @override + String get logo => 'Logo'; + + @override + String get manualInvitation => 'Manual invitation'; + + @override + String get missingRequirements => 'missing requirements'; + + @override + String get name => 'Name'; + + @override + String get needsFirstFactor => 'needs first factor'; + + @override + String get needsIdentifier => 'needs identifier'; + + @override + String get needsSecondFactor => 'needs second factor'; + + @override + String get newPassword => 'New password'; + + @override + String get newPasswordConfirmation => 'Confirm new password'; + + @override + String noAssociatedCodeRetrievalMethod(String arg) { + return 'No code retrieval method associated with $arg'; + } + + @override + String noAssociatedStrategy(String arg) { + return 'No strategy associated with $arg'; + } + + @override + String noSessionFoundForUser(String arg) { + return 'No session found for $arg'; + } + + @override + String get noSessionTokenRetrieved => 'No session token retrieved'; + + @override + String noStageForStatus(String arg) { + return 'No stage for $arg'; + } + + @override + String noSuchFirstFactorStrategy(String arg) { + return 'Strategy $arg not supported for first factor'; + } + + @override + String noSuchSecondFactorStrategy(String arg) { + return 'Strategy $arg not supported for second factor'; + } + + @override + String noTranslationFor(String name) { + return 'No translation for $name'; + } + + @override + String get ok => 'OK'; + + @override + String get optional => '(optional)'; + + @override + String get or => 'or'; + + @override + String get organizationProfile => 'Organization profile'; + + @override + String get organizations => 'Organizations'; + + @override + String get passkey => 'passkey'; + + @override + String get password => 'Password'; + + @override + String get passwordAndPasswordConfirmationMustMatch => 'Password and password confirmation must match'; + + @override + String get passwordConfirmation => 'confirm password'; + + @override + String get passwordMatchError => 'Password and password confirmation must match'; + + @override + String get passwordMustBeSupplied => 'A password must be supplied'; + + @override + String get passwordRequires => 'Password requires:'; + + @override + String get pending => 'pending'; + + @override + String get personalAccount => 'Personal account'; + + @override + String get phoneNumber => 'phone number'; + + @override + String get phoneNumberConcise => 'phone'; + + @override + String get pleaseChooseAnAccountToConnect => 'Please choose an account to connect'; + + @override + String get pleaseEnterYourIdentifier => 'Please enter your identifier'; + + @override + String get primary => 'PRIMARY'; + + @override + String get privacyPolicy => 'Privacy Policy'; + + @override + String get problemsConnecting => 'We are having problems connecting'; + + @override + String get profile => 'Profile'; + + @override + String get profileDetails => 'Profile details'; + + @override + String get recommendSize => 'Recommend size 1:1, up to 5MB.'; + + @override + String get requiredField => '(required)'; + + @override + String get resend => 'Resend'; + + @override + String get resetFailed => 'That password reset attempt failed. A new code has been sent.'; + + @override + String get resetPassword => 'Reset password and sign in'; + + @override + String get selectAccount => 'Select the account with which you wish to continue'; + + @override + String get sendMeTheCode => 'Send me the reset code'; + + @override + String get signIn => 'Sign in'; + + @override + String get signInByClickingALinkSentToYouByEmail => 'Sign in by clicking a link sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByEmail => 'Sign in by entering a code sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByTextMessage => 'Sign in by entering a code sent to you by text message'; + + @override + String signInError(String arg) { + return 'Unsupported sign in attempt: $arg'; + } + + @override + String signInTo(String name) { + return 'Sign in to $name'; + } + + @override + String get signOut => 'Sign out'; + + @override + String signOutIdentifier(String identifier) { + return 'Sign out $identifier'; + } + + @override + String get signOutOfAllAccounts => 'Sign out of all accounts'; + + @override + String get signUp => 'Sign up'; + + @override + String signUpTo(String name) { + return 'Sign up to $name'; + } + + @override + String get slugUrl => 'Slug URL'; + + @override + String get switchTo => 'Switch to'; + + @override + String get termsAndConditions => 'Terms & Conditions'; + + @override + String get transferable => 'transferable'; + + @override + String typeTypeInvalid(String type) { + return 'Type \'$type\' is invalid'; + } + + @override + String unsupportedPasswordResetStrategy(String arg) { + return 'Unsupported password reset strategy: $arg'; + } + + @override + String get unverified => 'unverified'; + + @override + String get username => 'username'; + + @override + String get verificationEmailAddress => 'Email address verification'; + + @override + String get verificationPhoneNumber => 'Phone number verification'; + + @override + String get verified => 'verified'; + + @override + String get verifiedDomains => 'Verified domains'; + + @override + String get verifyYourEmailAddress => 'Verify your email address'; + + @override + String get verifyYourPhoneNumber => 'Verify your phone number'; + + @override + String get viaAutomaticInvitation => 'via automatic invitation'; + + @override + String get viaAutomaticSuggestion => 'via automatic suggestion'; + + @override + String get viaManualInvitation => 'via manual invitation'; + + @override + String get web3Wallet => 'web3 wallet'; + + @override + String get welcomeBackPleaseSignInToContinue => 'Welcome back! Please sign in to continue'; + + @override + String get welcomePleaseFillInTheDetailsToGetStarted => 'Welcome! Please fill in the details to get started'; + + @override + String get youNeedToAdd => 'You need to add:'; +} From 6d0bad2c8dfd94e25674c42f31d7da7fb521daf2 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 17:08:18 +0100 Subject: [PATCH 05/20] fix: remove mention of google one tap in example also [#207] --- .../example/lib/pages/custom_sign_in_example.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart index b271958c..59074ce0 100644 --- a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart +++ b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart @@ -73,7 +73,7 @@ class _CustomOAuthSignInExampleState extends State { } } - Future _googleOneTap() async { + Future _oauthTokenGoogle() async { _loading.value = true; final google = GoogleSignIn.instance; await google.initialize( @@ -173,8 +173,8 @@ class _CustomOAuthSignInExampleState extends State { if (_authState.env.config.firstFactors .contains(clerk.Strategy.oauthTokenGoogle)) // ElevatedButton( - onPressed: _googleOneTap, - child: const Text('google_one_tap'), + onPressed: _oauthTokenGoogle, + child: const Text('google via oauth token'), ), ], ), From 552ad5e775bcad65ab46b6da6b99537d6f38cb76 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 17:49:47 +0100 Subject: [PATCH 06/20] fix: upgrade android build to non-imperative gradle [#207] --- .../example/android/app/build.gradle | 16 ++++------ .../example/android/build.gradle | 13 -------- .../example/android/settings.gradle | 30 ++++++++++++++----- 3 files changed, 28 insertions(+), 31 deletions(-) diff --git a/packages/clerk_flutter/example/android/app/build.gradle b/packages/clerk_flutter/example/android/app/build.gradle index 1ea29b8e..db02ca46 100644 --- a/packages/clerk_flutter/example/android/app/build.gradle +++ b/packages/clerk_flutter/example/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -21,10 +22,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - android { namespace "com.example.example" compileSdkVersion 35 @@ -68,5 +65,4 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" } diff --git a/packages/clerk_flutter/example/android/build.gradle b/packages/clerk_flutter/example/android/build.gradle index 80abf3cf..bc157bd1 100644 --- a/packages/clerk_flutter/example/android/build.gradle +++ b/packages/clerk_flutter/example/android/build.gradle @@ -1,16 +1,3 @@ -buildscript { - ext.kotlin_version = '2.2.0' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:8.3.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/packages/clerk_flutter/example/android/settings.gradle b/packages/clerk_flutter/example/android/settings.gradle index 44e62bcf..34d5cf0e 100644 --- a/packages/clerk_flutter/example/android/settings.gradle +++ b/packages/clerk_flutter/example/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" // apply true + id "com.android.application" version "8.3.0" apply false + id "org.jetbrains.kotlin.android" version "2.2.0" apply false +} + +include ":app" \ No newline at end of file From 8ac5b9c0e882375521b3b847b48252d032387501 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 17:50:31 +0100 Subject: [PATCH 07/20] fix: refactor api and auth [#207] --- .../clerk_auth/lib/src/clerk_api/api.dart | 70 ++++++++++--------- .../clerk_auth/lib/src/clerk_auth/auth.dart | 11 +-- 2 files changed, 44 insertions(+), 37 deletions(-) diff --git a/packages/clerk_auth/lib/src/clerk_api/api.dart b/packages/clerk_auth/lib/src/clerk_api/api.dart index 38a6e4a8..b0cf2fa6 100644 --- a/packages/clerk_auth/lib/src/clerk_api/api.dart +++ b/packages/clerk_auth/lib/src/clerk_api/api.dart @@ -16,6 +16,8 @@ import 'package:http/http.dart' as http; export 'package:clerk_auth/src/models/enums.dart' show SessionTokenPollMode; +typedef _JsonObject = Map; + /// [Api] manages communication with the Clerk frontend API /// class Api with Logging { @@ -93,7 +95,7 @@ class Api with Logging { Future environment() async { final resp = await _fetch(path: '/environment', method: HttpMethod.get); if (resp.statusCode == HttpStatus.ok) { - final body = json.decode(resp.body) as Map; + final body = json.decode(resp.body) as _JsonObject; final env = Environment.fromJson(body); _testMode = env.config.testMode && config.isTestMode; @@ -111,7 +113,7 @@ class Api with Logging { headers: _headers(method: method), ); if (resp.statusCode == HttpStatus.ok) { - final body = json.decode(resp.body) as Map; + final body = json.decode(resp.body) as _JsonObject; return Client.fromJson(body[_kResponseKey]); } return Client.empty; @@ -213,8 +215,8 @@ class Api with Logging { 'code': code, 'token': token, 'legal_accepted': legalAccepted, - if (metadata is Map) // - 'unsafe_metadata': json.encode(metadata!), + if (metadata case Map metadata) // + 'unsafe_metadata': json.encode(metadata), }, ); } @@ -251,8 +253,8 @@ class Api with Logging { 'code': code, 'token': token, 'legal_accepted': legalAccepted, - if (metadata is Map) // - 'unsafe_metadata': json.encode(metadata!), + if (metadata case Map metadata) // + 'unsafe_metadata': json.encode(metadata), }, ); } @@ -309,9 +311,9 @@ class Api with Logging { Strategy? strategy, String? identifier, String? password, - String? redirectUrl, String? token, String? code, + String? redirectUrl, }) async { return await _fetchApiResponse( '/client/sign_ins', @@ -319,9 +321,9 @@ class Api with Logging { 'strategy': strategy, 'identifier': identifier, 'password': password, - 'redirect_url': redirectUrl, 'token': token, 'code': code, + 'redirect_url': redirectUrl, }, ); } @@ -812,7 +814,7 @@ class Api with Logging { nullableKeys: [_kOrganizationId], ); if (resp.statusCode == HttpStatus.ok) { - final body = json.decode(resp.body) as Map; + final body = json.decode(resp.body) as _JsonObject; final token = body[_kJwtKey] as String; final sessionToken = _tokenCache.makeAndCacheSessionToken(token, templateName); @@ -861,7 +863,7 @@ class Api with Logging { String url, { HttpMethod method = HttpMethod.post, Map? headers, - Map? params, + _JsonObject? params, bool withSession = false, }) async { try { @@ -891,27 +893,17 @@ class Api with Logging { } ApiResponse _processResponse(http.Response resp) { - final body = json.decode(resp.body) as Map; - final errors = _errors(body[_kErrorsKey]); - final (clientData, responseData) = - switch (body[_kClientKey] ?? body[_kMetaKey]?[_kClientKey]) { - Map client when client.isNotEmpty => ( - client, - body[_kResponseKey] - ), - _ => (body[_kResponseKey], null), - }; - if (clientData case Map clientJson) { - final client = Client.fromJson(clientJson); + final body = json.decode(resp.body) as _JsonObject; + final errors = _extractErrors(body[_kErrorsKey]); + final (clientData, responseData) = _extractClientAndResponse(body); + if (clientData is _JsonObject) { + final client = Client.fromJson(clientData); _tokenCache.updateFrom(resp, client); return ApiResponse( client: client, status: resp.statusCode, errors: errors, - response: switch (responseData) { - Map response => response, - _ => null, - }, + response: responseData, ); } else { return ApiResponse( @@ -921,13 +913,27 @@ class Api with Logging { } } - List? _errors(List? data) { + (_JsonObject?, _JsonObject?) _extractClientAndResponse(_JsonObject body) { + final response = switch (body[_kResponseKey]) { + _JsonObject response when response.isNotEmpty => response, + _ => null, + }; + + switch (body[_kClientKey] ?? body[_kMetaKey]?[_kClientKey]) { + case _JsonObject client when client.isNotEmpty: + return (client, response); + default: + return (response, null); + } + } + + List? _extractErrors(List? data) { if (data == null) { return null; } logSevere(data); - return List>.from(data) + return List<_JsonObject>.from(data) .map(ApiError.fromJson) .toList(growable: false); } @@ -936,7 +942,7 @@ class Api with Logging { required String path, HttpMethod method = HttpMethod.post, Map? headers, - Map? params, + _JsonObject? params, bool withSession = false, List? nullableKeys, }) async { @@ -970,10 +976,10 @@ class Api with Logging { return resp; } - Map _queryParams( + _JsonObject _queryParams( HttpMethod method, { bool withSession = false, - Map? params, + _JsonObject? params, }) { final sessionId = params?.remove(_kClerkSessionId)?.toString() ?? _tokenCache.sessionId; @@ -987,7 +993,7 @@ class Api with Logging { }; } - Uri _uri(String path, {Map? params}) { + Uri _uri(String path, {_JsonObject? params}) { return Uri( scheme: _scheme, host: _domain, diff --git a/packages/clerk_auth/lib/src/clerk_auth/auth.dart b/packages/clerk_auth/lib/src/clerk_auth/auth.dart index 730142f6..5c8b45b4 100644 --- a/packages/clerk_auth/lib/src/clerk_auth/auth.dart +++ b/packages/clerk_auth/lib/src/clerk_auth/auth.dart @@ -353,12 +353,13 @@ class Auth { String? token, String? redirectUrl, }) async { - // oAuthToken if (strategy.isOauthToken) { - await _api - .createSignIn(strategy: strategy, token: token, code: code) - .then(_housekeeping); - update(); + if (token?.isNotEmpty == true || code?.isNotEmpty == true) { + await _api + .createSignIn(strategy: strategy, token: token, code: code) + .then(_housekeeping); + update(); + } return; } From 737e2b208b8e0516b2783c46af97dfb9c4135444 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 19:45:18 +0100 Subject: [PATCH 08/20] fix: try upgrade to melos version [#207] --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 42a62a54..8b4f9c85 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -8,4 +8,4 @@ environment: flutter: '>=3.10.0' dev_dependencies: - melos: ^6.1.0 + melos: ^6.3.2 From d569aa569117e1976283d9543e4ded51ab35ba7c Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 19:50:17 +0100 Subject: [PATCH 09/20] fix: update dart version in yaml files [#207] --- .github/workflows/main.yaml | 2 +- pubspec.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml index 9f16d7f4..6c43e9a6 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yaml @@ -18,7 +18,7 @@ jobs: - name: Install flutter uses: flutter-actions/setup-flutter@v4 with: - version: '3.10.0' + version: '3.27.4' - name: 'Install tools: melos and fvm' run: dart pub global activate melos && dart pub global activate fvm diff --git a/pubspec.yaml b/pubspec.yaml index 8b4f9c85..88b92551 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,8 +4,8 @@ description: > Clerk SDK containing all packages that define use of Clerk services for Dart and Flutter code. environment: - sdk: '>=3.0.0 <4.0.0' - flutter: '>=3.10.0' + sdk: '>=3.2.0 <4.0.0' + flutter: '>=3.27.4' dev_dependencies: melos: ^6.3.2 From 041502f637638f7d92092c2808db2163af2be445 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 19:59:26 +0100 Subject: [PATCH 10/20] fix: reformat [#207] --- .../lib/src/models/client/strategy.dart | 39 +++++++++++++------ .../src/models/environment/environment.dart | 15 +++++-- .../lib/pages/custom_sign_in_example.dart | 3 +- .../generated/clerk_sdk_localizations.dart | 39 ++++++++++--------- .../generated/clerk_sdk_localizations_en.dart | 36 +++++++++++------ 5 files changed, 85 insertions(+), 47 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index a8493ccb..48e83f9e 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -84,10 +84,12 @@ class Strategy { static const phoneCode = Strategy(name: 'phone_code'); /// reset password email code strategy - static const resetPasswordEmailCode = Strategy(name: 'reset_password_email_code'); + static const resetPasswordEmailCode = + Strategy(name: 'reset_password_email_code'); /// reset password phone code strategy - static const resetPasswordPhoneCode = Strategy(name: 'reset_password_phone_code'); + static const resetPasswordPhoneCode = + Strategy(name: 'reset_password_phone_code'); /// saml strategy static const saml = Strategy(name: 'saml'); @@ -96,10 +98,12 @@ class Strategy { static const ticket = Strategy(name: 'ticket'); /// web3 metamask signature strategy - static const web3MetamaskSignature = Strategy(name: 'web3_metamask_signature'); + static const web3MetamaskSignature = + Strategy(name: 'web3_metamask_signature'); /// web3 coinbase signature strategy - static const web3CoinbaseSignature = Strategy(name: 'web3_coinbase_signature'); + static const web3CoinbaseSignature = + Strategy(name: 'web3_coinbase_signature'); /// the collected verification strategies static final verificationStrategies = { @@ -151,7 +155,8 @@ class Strategy { bool get isOauthCustom => name == _oauthCustom; /// is oauth token? - bool get isOauthToken => const [_oauthToken, _oauthTokenGoogleName].contains(name); + bool get isOauthToken => + const [_oauthToken, _oauthTokenGoogleName].contains(name); /// is some variety of oauth? bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; @@ -160,25 +165,35 @@ class Strategy { bool get isOtherStrategy => isOauth == false && requiresPassword == false; /// is phone strategy? - bool get isPhone => const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); + bool get isPhone => + const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); /// is a password reset strategy? bool get isPasswordResetter => const [resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires password? - bool get requiresPassword => - const [password, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); + bool get requiresPassword => const [ + password, + resetPasswordEmailCode, + resetPasswordPhoneCode + ].contains(this); /// requires code? - bool get requiresCode => - const [emailCode, phoneCode, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); + bool get requiresCode => const [ + emailCode, + phoneCode, + resetPasswordEmailCode, + resetPasswordPhoneCode + ].contains(this); /// requires signature? - bool get requiresSignature => const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); + bool get requiresSignature => + const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); /// requires redirect? - bool get requiresRedirect => name == _oauth || const [emailLink, saml].contains(this); + bool get requiresRedirect => + name == _oauth || const [emailLink, saml].contains(this); /// For a given [name] return the [Strategy] it identifies. /// Create one if necessary and possible diff --git a/packages/clerk_auth/lib/src/models/environment/environment.dart b/packages/clerk_auth/lib/src/models/environment/environment.dart index cb20956d..684d6c19 100644 --- a/packages/clerk_auth/lib/src/models/environment/environment.dart +++ b/packages/clerk_auth/lib/src/models/environment/environment.dart @@ -51,14 +51,19 @@ class Environment with InformativeToStringMixin { static const empty = Environment(); /// Do we have [Strategy.password] configured? - bool get hasPasswordStrategy => config.firstFactors.contains(Strategy.password); + bool get hasPasswordStrategy => + config.firstFactors.contains(Strategy.password); /// [List] of identification strategies List get strategies => config.identificationStrategies; /// [Iterable] of non-oauth and non-phone identification strategies Iterable get identificationStrategies => strategies.where( - (i) => const [Strategy.emailAddress, Strategy.username, Strategy.phoneNumber].contains(i), + (i) => const [ + Strategy.emailAddress, + Strategy.username, + Strategy.phoneNumber + ].contains(i), ); /// Do we have identification strategies? @@ -72,13 +77,15 @@ class Environment with InformativeToStringMixin { /// [Iterable] of other strategies /// i.e. strategies that are neither oauth nor password-based - Iterable get otherStrategies => strategies.where((f) => f.isOtherStrategy); + Iterable get otherStrategies => + strategies.where((f) => f.isOtherStrategy); /// Do we have other strategies? bool get hasOtherStrategies => otherStrategies.isNotEmpty; /// fromJson - static Environment fromJson(Map json) => _$EnvironmentFromJson(json); + static Environment fromJson(Map json) => + _$EnvironmentFromJson(json); /// toJson @override diff --git a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart index 59074ce0..0b746675 100644 --- a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart +++ b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart @@ -27,7 +27,8 @@ class CustomOAuthSignInExample extends StatefulWidget { static const path = '/custom-oauth-sign-in-example'; @override - State createState() => _CustomOAuthSignInExampleState(); + State createState() => + _CustomOAuthSignInExampleState(); } class _CustomOAuthSignInExampleState extends State { diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart index d1daab2a..e0c1a947 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart @@ -62,15 +62,18 @@ import 'clerk_sdk_localizations_en.dart'; /// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales /// property. abstract class ClerkSdkLocalizations { - ClerkSdkLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + ClerkSdkLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; static ClerkSdkLocalizations? of(BuildContext context) { - return Localizations.of(context, ClerkSdkLocalizations); + return Localizations.of( + context, ClerkSdkLocalizations); } - static const LocalizationsDelegate delegate = _ClerkSdkLocalizationsDelegate(); + static const LocalizationsDelegate delegate = + _ClerkSdkLocalizationsDelegate(); /// A list of this localizations delegate along with the default localizations /// delegates. @@ -82,7 +85,8 @@ abstract class ClerkSdkLocalizations { /// Additional delegates can be added by appending to this list in /// MaterialApp. This list does not have to be used at all if a custom list /// of delegates is preferred or required. - static const List> localizationsDelegates = >[ + static const List> localizationsDelegates = + >[ delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, @@ -90,9 +94,7 @@ abstract class ClerkSdkLocalizations { ]; /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [ - Locale('en') - ]; + static const List supportedLocales = [Locale('en')]; /// No description provided for @aLengthOfBetweenMINAndMAX. /// @@ -893,33 +895,34 @@ abstract class ClerkSdkLocalizations { String get youNeedToAdd; } -class _ClerkSdkLocalizationsDelegate extends LocalizationsDelegate { +class _ClerkSdkLocalizationsDelegate + extends LocalizationsDelegate { const _ClerkSdkLocalizationsDelegate(); @override Future load(Locale locale) { - return SynchronousFuture(lookupClerkSdkLocalizations(locale)); + return SynchronousFuture( + lookupClerkSdkLocalizations(locale)); } @override - bool isSupported(Locale locale) => ['en'].contains(locale.languageCode); + bool isSupported(Locale locale) => + ['en'].contains(locale.languageCode); @override bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; } ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { - - // Lookup logic when only language code is specified. switch (locale.languageCode) { - case 'en': return ClerkSdkLocalizationsEn(); + case 'en': + return ClerkSdkLocalizationsEn(); } throw FlutterError( - 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.' - ); + 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); } diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart index d044b3d8..ed3de42d 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart @@ -33,10 +33,12 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get abandoned => 'abandoned'; @override - String get acceptTerms => 'I accept the Terms & Conditions and Privacy Policy'; + String get acceptTerms => + 'I accept the Terms & Conditions and Privacy Policy'; @override - String get actionNotTimely => 'Awaited user action not completed in required timeframe'; + String get actionNotTimely => + 'Awaited user action not completed in required timeframe'; @override String get active => 'active'; @@ -277,13 +279,15 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get password => 'Password'; @override - String get passwordAndPasswordConfirmationMustMatch => 'Password and password confirmation must match'; + String get passwordAndPasswordConfirmationMustMatch => + 'Password and password confirmation must match'; @override String get passwordConfirmation => 'confirm password'; @override - String get passwordMatchError => 'Password and password confirmation must match'; + String get passwordMatchError => + 'Password and password confirmation must match'; @override String get passwordMustBeSupplied => 'A password must be supplied'; @@ -304,7 +308,8 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get phoneNumberConcise => 'phone'; @override - String get pleaseChooseAnAccountToConnect => 'Please choose an account to connect'; + String get pleaseChooseAnAccountToConnect => + 'Please choose an account to connect'; @override String get pleaseEnterYourIdentifier => 'Please enter your identifier'; @@ -334,13 +339,15 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get resend => 'Resend'; @override - String get resetFailed => 'That password reset attempt failed. A new code has been sent.'; + String get resetFailed => + 'That password reset attempt failed. A new code has been sent.'; @override String get resetPassword => 'Reset password and sign in'; @override - String get selectAccount => 'Select the account with which you wish to continue'; + String get selectAccount => + 'Select the account with which you wish to continue'; @override String get sendMeTheCode => 'Send me the reset code'; @@ -349,13 +356,16 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get signIn => 'Sign in'; @override - String get signInByClickingALinkSentToYouByEmail => 'Sign in by clicking a link sent to you by email'; + String get signInByClickingALinkSentToYouByEmail => + 'Sign in by clicking a link sent to you by email'; @override - String get signInByEnteringACodeSentToYouByEmail => 'Sign in by entering a code sent to you by email'; + String get signInByEnteringACodeSentToYouByEmail => + 'Sign in by entering a code sent to you by email'; @override - String get signInByEnteringACodeSentToYouByTextMessage => 'Sign in by entering a code sent to you by text message'; + String get signInByEnteringACodeSentToYouByTextMessage => + 'Sign in by entering a code sent to you by text message'; @override String signInError(String arg) { @@ -445,10 +455,12 @@ class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { String get web3Wallet => 'web3 wallet'; @override - String get welcomeBackPleaseSignInToContinue => 'Welcome back! Please sign in to continue'; + String get welcomeBackPleaseSignInToContinue => + 'Welcome back! Please sign in to continue'; @override - String get welcomePleaseFillInTheDetailsToGetStarted => 'Welcome! Please fill in the details to get started'; + String get welcomePleaseFillInTheDetailsToGetStarted => + 'Welcome! Please fill in the details to get started'; @override String get youNeedToAdd => 'You need to add:'; From 3cc34b6b814d9242a0daf5efabcf3a4b159e3348 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Wed, 13 Aug 2025 20:38:22 +0100 Subject: [PATCH 11/20] fix: reformat localizations again [#207] --- .../generated/clerk_sdk_localizations.dart | 1854 ++++++++--------- .../generated/clerk_sdk_localizations_en.dart | 932 +++++---- 2 files changed, 1391 insertions(+), 1395 deletions(-) diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart index e0c1a947..ad1bc326 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart @@ -1,928 +1,926 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'clerk_sdk_localizations_en.dart'; - -// ignore_for_file: type=lint - -/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations -/// returned by `ClerkSdkLocalizations.of(context)`. -/// -/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'generated/clerk_sdk_localizations.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, -/// supportedLocales: ClerkSdkLocalizations.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales -/// property. -abstract class ClerkSdkLocalizations { - ClerkSdkLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static ClerkSdkLocalizations? of(BuildContext context) { - return Localizations.of( - context, ClerkSdkLocalizations); - } - - static const LocalizationsDelegate delegate = - _ClerkSdkLocalizationsDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [Locale('en')]; - - /// No description provided for @aLengthOfBetweenMINAndMAX. - /// - /// In en, this message translates to: - /// **'a length of between {min} and {max}'** - String aLengthOfBetweenMINAndMAX(int min, int max); - - /// No description provided for @aLengthOfMINOrGreater. - /// - /// In en, this message translates to: - /// **'a length of {min} or greater'** - String aLengthOfMINOrGreater(int min); - - /// No description provided for @aLowercaseLetter. - /// - /// In en, this message translates to: - /// **'a LOWERCASE letter'** - String get aLowercaseLetter; - - /// No description provided for @aNumber. - /// - /// In en, this message translates to: - /// **'a NUMBER'** - String get aNumber; - - /// No description provided for @aSpecialCharacter. - /// - /// In en, this message translates to: - /// **'a SPECIAL CHARACTER ({chars})'** - String aSpecialCharacter(String chars); - - /// No description provided for @abandoned. - /// - /// In en, this message translates to: - /// **'abandoned'** - String get abandoned; - - /// No description provided for @acceptTerms. - /// - /// In en, this message translates to: - /// **'I accept the Terms & Conditions and Privacy Policy'** - String get acceptTerms; - - /// No description provided for @actionNotTimely. - /// - /// In en, this message translates to: - /// **'Awaited user action not completed in required timeframe'** - String get actionNotTimely; - - /// No description provided for @active. - /// - /// In en, this message translates to: - /// **'active'** - String get active; - - /// No description provided for @addAccount. - /// - /// In en, this message translates to: - /// **'Add account'** - String get addAccount; - - /// No description provided for @addDomain. - /// - /// In en, this message translates to: - /// **'Add domain'** - String get addDomain; - - /// No description provided for @addEmailAddress. - /// - /// In en, this message translates to: - /// **'Add email address'** - String get addEmailAddress; - - /// No description provided for @addPhoneNumber. - /// - /// In en, this message translates to: - /// **'Add phone number'** - String get addPhoneNumber; - - /// No description provided for @alreadyHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Already have an account?'** - String get alreadyHaveAnAccount; - - /// No description provided for @anUppercaseLetter. - /// - /// In en, this message translates to: - /// **'an UPPERCASE letter'** - String get anUppercaseLetter; - - /// No description provided for @and. - /// - /// In en, this message translates to: - /// **'and'** - String get and; - - /// No description provided for @areYouSure. - /// - /// In en, this message translates to: - /// **'Are you sure?'** - String get areYouSure; - - /// No description provided for @authenticatorApp. - /// - /// In en, this message translates to: - /// **'authenticator app'** - String get authenticatorApp; - - /// No description provided for @automaticInvitation. - /// - /// In en, this message translates to: - /// **'Automatic invitation'** - String get automaticInvitation; - - /// No description provided for @automaticSuggestion. - /// - /// In en, this message translates to: - /// **'Automatic suggestion'** - String get automaticSuggestion; - - /// No description provided for @backupCode. - /// - /// In en, this message translates to: - /// **'backup code'** - String get backupCode; - - /// No description provided for @cancel. - /// - /// In en, this message translates to: - /// **'Cancel'** - String get cancel; - - /// No description provided for @cannotDeleteSelf. - /// - /// In en, this message translates to: - /// **'You are not authorized to delete your user'** - String get cannotDeleteSelf; - - /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. - /// - /// In en, this message translates to: - /// **'Click on the link that‘s been sent to {identifier} and then check back here'** - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); - - /// No description provided for @complete. - /// - /// In en, this message translates to: - /// **'complete'** - String get complete; - - /// No description provided for @connectAccount. - /// - /// In en, this message translates to: - /// **'Connect account'** - String get connectAccount; - - /// No description provided for @connectedAccounts. - /// - /// In en, this message translates to: - /// **'Connected accounts'** - String get connectedAccounts; - - /// No description provided for @cont. - /// - /// In en, this message translates to: - /// **'Continue'** - String get cont; - - /// No description provided for @createOrganization. - /// - /// In en, this message translates to: - /// **'Create organization'** - String get createOrganization; - - /// No description provided for @didntReceiveCode. - /// - /// In en, this message translates to: - /// **'Didn\'t receive the code?'** - String get didntReceiveCode; - - /// No description provided for @domainName. - /// - /// In en, this message translates to: - /// **'Domain name'** - String get domainName; - - /// No description provided for @dontHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Don’t have an account?'** - String get dontHaveAnAccount; - - /// No description provided for @edit. - /// - /// In en, this message translates to: - /// **'edit'** - String get edit; - - /// No description provided for @emailAddress. - /// - /// In en, this message translates to: - /// **'email address'** - String get emailAddress; - - /// No description provided for @emailAddressConcise. - /// - /// In en, this message translates to: - /// **'email'** - String get emailAddressConcise; - - /// No description provided for @enrollment. - /// - /// In en, this message translates to: - /// **'Enrollment'** - String get enrollment; - - /// No description provided for @enrollmentMode. - /// - /// In en, this message translates to: - /// **'Enrollment mode:'** - String get enrollmentMode; - - /// No description provided for @enterCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter code sent to {identifier}'** - String enterCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter the code sent to {identifier}'** - String enterTheCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentToYou. - /// - /// In en, this message translates to: - /// **'Enter the code sent to you'** - String get enterTheCodeSentToYou; - - /// No description provided for @expired. - /// - /// In en, this message translates to: - /// **'expired'** - String get expired; - - /// No description provided for @failed. - /// - /// In en, this message translates to: - /// **'failed'** - String get failed; - - /// No description provided for @firstName. - /// - /// In en, this message translates to: - /// **'first name'** - String get firstName; - - /// No description provided for @forgottenPassword. - /// - /// In en, this message translates to: - /// **'Forgotten password?'** - String get forgottenPassword; - - /// No description provided for @generalDetails. - /// - /// In en, this message translates to: - /// **'General details'** - String get generalDetails; - - /// No description provided for @invalidEmailAddress. - /// - /// In en, this message translates to: - /// **'Invalid email address: {address}'** - String invalidEmailAddress(String address); - - /// No description provided for @invalidPhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid phone number: {number}'** - String invalidPhoneNumber(String number); - - /// No description provided for @join. - /// - /// In en, this message translates to: - /// **'JOIN'** - String get join; - - /// No description provided for @jwtPoorlyFormatted. - /// - /// In en, this message translates to: - /// **'JWT poorly formatted: {arg}'** - String jwtPoorlyFormatted(String arg); - - /// No description provided for @lastName. - /// - /// In en, this message translates to: - /// **'last name'** - String get lastName; - - /// No description provided for @leave. - /// - /// In en, this message translates to: - /// **'Leave'** - String get leave; - - /// No description provided for @leaveOrg. - /// - /// In en, this message translates to: - /// **'Leave {organization}'** - String leaveOrg(String organization); - - /// No description provided for @leaveOrganization. - /// - /// In en, this message translates to: - /// **'Leave organization'** - String get leaveOrganization; - - /// No description provided for @loading. - /// - /// In en, this message translates to: - /// **'Loading…'** - String get loading; - - /// No description provided for @logo. - /// - /// In en, this message translates to: - /// **'Logo'** - String get logo; - - /// No description provided for @manualInvitation. - /// - /// In en, this message translates to: - /// **'Manual invitation'** - String get manualInvitation; - - /// No description provided for @missingRequirements. - /// - /// In en, this message translates to: - /// **'missing requirements'** - String get missingRequirements; - - /// No description provided for @name. - /// - /// In en, this message translates to: - /// **'Name'** - String get name; - - /// No description provided for @needsFirstFactor. - /// - /// In en, this message translates to: - /// **'needs first factor'** - String get needsFirstFactor; - - /// No description provided for @needsIdentifier. - /// - /// In en, this message translates to: - /// **'needs identifier'** - String get needsIdentifier; - - /// No description provided for @needsSecondFactor. - /// - /// In en, this message translates to: - /// **'needs second factor'** - String get needsSecondFactor; - - /// No description provided for @newPassword. - /// - /// In en, this message translates to: - /// **'New password'** - String get newPassword; - - /// No description provided for @newPasswordConfirmation. - /// - /// In en, this message translates to: - /// **'Confirm new password'** - String get newPasswordConfirmation; - - /// No description provided for @noAssociatedCodeRetrievalMethod. - /// - /// In en, this message translates to: - /// **'No code retrieval method associated with {arg}'** - String noAssociatedCodeRetrievalMethod(String arg); - - /// No description provided for @noAssociatedStrategy. - /// - /// In en, this message translates to: - /// **'No strategy associated with {arg}'** - String noAssociatedStrategy(String arg); - - /// No description provided for @noSessionFoundForUser. - /// - /// In en, this message translates to: - /// **'No session found for {arg}'** - String noSessionFoundForUser(String arg); - - /// No description provided for @noSessionTokenRetrieved. - /// - /// In en, this message translates to: - /// **'No session token retrieved'** - String get noSessionTokenRetrieved; - - /// No description provided for @noStageForStatus. - /// - /// In en, this message translates to: - /// **'No stage for {arg}'** - String noStageForStatus(String arg); - - /// No description provided for @noSuchFirstFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for first factor'** - String noSuchFirstFactorStrategy(String arg); - - /// No description provided for @noSuchSecondFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for second factor'** - String noSuchSecondFactorStrategy(String arg); - - /// No description provided for @noTranslationFor. - /// - /// In en, this message translates to: - /// **'No translation for {name}'** - String noTranslationFor(String name); - - /// No description provided for @ok. - /// - /// In en, this message translates to: - /// **'OK'** - String get ok; - - /// No description provided for @optional. - /// - /// In en, this message translates to: - /// **'(optional)'** - String get optional; - - /// No description provided for @or. - /// - /// In en, this message translates to: - /// **'or'** - String get or; - - /// No description provided for @organizationProfile. - /// - /// In en, this message translates to: - /// **'Organization profile'** - String get organizationProfile; - - /// No description provided for @organizations. - /// - /// In en, this message translates to: - /// **'Organizations'** - String get organizations; - - /// No description provided for @passkey. - /// - /// In en, this message translates to: - /// **'passkey'** - String get passkey; - - /// No description provided for @password. - /// - /// In en, this message translates to: - /// **'Password'** - String get password; - - /// No description provided for @passwordAndPasswordConfirmationMustMatch. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordAndPasswordConfirmationMustMatch; - - /// No description provided for @passwordConfirmation. - /// - /// In en, this message translates to: - /// **'confirm password'** - String get passwordConfirmation; - - /// No description provided for @passwordMatchError. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordMatchError; - - /// No description provided for @passwordMustBeSupplied. - /// - /// In en, this message translates to: - /// **'A password must be supplied'** - String get passwordMustBeSupplied; - - /// No description provided for @passwordRequires. - /// - /// In en, this message translates to: - /// **'Password requires:'** - String get passwordRequires; - - /// No description provided for @pending. - /// - /// In en, this message translates to: - /// **'pending'** - String get pending; - - /// No description provided for @personalAccount. - /// - /// In en, this message translates to: - /// **'Personal account'** - String get personalAccount; - - /// No description provided for @phoneNumber. - /// - /// In en, this message translates to: - /// **'phone number'** - String get phoneNumber; - - /// No description provided for @phoneNumberConcise. - /// - /// In en, this message translates to: - /// **'phone'** - String get phoneNumberConcise; - - /// No description provided for @pleaseChooseAnAccountToConnect. - /// - /// In en, this message translates to: - /// **'Please choose an account to connect'** - String get pleaseChooseAnAccountToConnect; - - /// No description provided for @pleaseEnterYourIdentifier. - /// - /// In en, this message translates to: - /// **'Please enter your identifier'** - String get pleaseEnterYourIdentifier; - - /// No description provided for @primary. - /// - /// In en, this message translates to: - /// **'PRIMARY'** - String get primary; - - /// No description provided for @privacyPolicy. - /// - /// In en, this message translates to: - /// **'Privacy Policy'** - String get privacyPolicy; - - /// No description provided for @problemsConnecting. - /// - /// In en, this message translates to: - /// **'We are having problems connecting'** - String get problemsConnecting; - - /// No description provided for @profile. - /// - /// In en, this message translates to: - /// **'Profile'** - String get profile; - - /// No description provided for @profileDetails. - /// - /// In en, this message translates to: - /// **'Profile details'** - String get profileDetails; - - /// No description provided for @recommendSize. - /// - /// In en, this message translates to: - /// **'Recommend size 1:1, up to 5MB.'** - String get recommendSize; - - /// No description provided for @requiredField. - /// - /// In en, this message translates to: - /// **'(required)'** - String get requiredField; - - /// No description provided for @resend. - /// - /// In en, this message translates to: - /// **'Resend'** - String get resend; - - /// No description provided for @resetFailed. - /// - /// In en, this message translates to: - /// **'That password reset attempt failed. A new code has been sent.'** - String get resetFailed; - - /// No description provided for @resetPassword. - /// - /// In en, this message translates to: - /// **'Reset password and sign in'** - String get resetPassword; - - /// No description provided for @selectAccount. - /// - /// In en, this message translates to: - /// **'Select the account with which you wish to continue'** - String get selectAccount; - - /// No description provided for @sendMeTheCode. - /// - /// In en, this message translates to: - /// **'Send me the reset code'** - String get sendMeTheCode; - - /// No description provided for @signIn. - /// - /// In en, this message translates to: - /// **'Sign in'** - String get signIn; - - /// No description provided for @signInByClickingALinkSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by clicking a link sent to you by email'** - String get signInByClickingALinkSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by email'** - String get signInByEnteringACodeSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by text message'** - String get signInByEnteringACodeSentToYouByTextMessage; - - /// No description provided for @signInError. - /// - /// In en, this message translates to: - /// **'Unsupported sign in attempt: {arg}'** - String signInError(String arg); - - /// No description provided for @signInTo. - /// - /// In en, this message translates to: - /// **'Sign in to {name}'** - String signInTo(String name); - - /// No description provided for @signOut. - /// - /// In en, this message translates to: - /// **'Sign out'** - String get signOut; - - /// No description provided for @signOutIdentifier. - /// - /// In en, this message translates to: - /// **'Sign out {identifier}'** - String signOutIdentifier(String identifier); - - /// No description provided for @signOutOfAllAccounts. - /// - /// In en, this message translates to: - /// **'Sign out of all accounts'** - String get signOutOfAllAccounts; - - /// No description provided for @signUp. - /// - /// In en, this message translates to: - /// **'Sign up'** - String get signUp; - - /// No description provided for @signUpTo. - /// - /// In en, this message translates to: - /// **'Sign up to {name}'** - String signUpTo(String name); - - /// No description provided for @slugUrl. - /// - /// In en, this message translates to: - /// **'Slug URL'** - String get slugUrl; - - /// No description provided for @switchTo. - /// - /// In en, this message translates to: - /// **'Switch to'** - String get switchTo; - - /// No description provided for @termsAndConditions. - /// - /// In en, this message translates to: - /// **'Terms & Conditions'** - String get termsAndConditions; - - /// No description provided for @transferable. - /// - /// In en, this message translates to: - /// **'transferable'** - String get transferable; - - /// No description provided for @typeTypeInvalid. - /// - /// In en, this message translates to: - /// **'Type \'{type}\' is invalid'** - String typeTypeInvalid(String type); - - /// No description provided for @unsupportedPasswordResetStrategy. - /// - /// In en, this message translates to: - /// **'Unsupported password reset strategy: {arg}'** - String unsupportedPasswordResetStrategy(String arg); - - /// No description provided for @unverified. - /// - /// In en, this message translates to: - /// **'unverified'** - String get unverified; - - /// No description provided for @username. - /// - /// In en, this message translates to: - /// **'username'** - String get username; - - /// No description provided for @verificationEmailAddress. - /// - /// In en, this message translates to: - /// **'Email address verification'** - String get verificationEmailAddress; - - /// No description provided for @verificationPhoneNumber. - /// - /// In en, this message translates to: - /// **'Phone number verification'** - String get verificationPhoneNumber; - - /// No description provided for @verified. - /// - /// In en, this message translates to: - /// **'verified'** - String get verified; - - /// No description provided for @verifiedDomains. - /// - /// In en, this message translates to: - /// **'Verified domains'** - String get verifiedDomains; - - /// No description provided for @verifyYourEmailAddress. - /// - /// In en, this message translates to: - /// **'Verify your email address'** - String get verifyYourEmailAddress; - - /// No description provided for @verifyYourPhoneNumber. - /// - /// In en, this message translates to: - /// **'Verify your phone number'** - String get verifyYourPhoneNumber; - - /// No description provided for @viaAutomaticInvitation. - /// - /// In en, this message translates to: - /// **'via automatic invitation'** - String get viaAutomaticInvitation; - - /// No description provided for @viaAutomaticSuggestion. - /// - /// In en, this message translates to: - /// **'via automatic suggestion'** - String get viaAutomaticSuggestion; - - /// No description provided for @viaManualInvitation. - /// - /// In en, this message translates to: - /// **'via manual invitation'** - String get viaManualInvitation; - - /// No description provided for @web3Wallet. - /// - /// In en, this message translates to: - /// **'web3 wallet'** - String get web3Wallet; - - /// No description provided for @welcomeBackPleaseSignInToContinue. - /// - /// In en, this message translates to: - /// **'Welcome back! Please sign in to continue'** - String get welcomeBackPleaseSignInToContinue; - - /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. - /// - /// In en, this message translates to: - /// **'Welcome! Please fill in the details to get started'** - String get welcomePleaseFillInTheDetailsToGetStarted; - - /// No description provided for @youNeedToAdd. - /// - /// In en, this message translates to: - /// **'You need to add:'** - String get youNeedToAdd; -} - -class _ClerkSdkLocalizationsDelegate - extends LocalizationsDelegate { - const _ClerkSdkLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture( - lookupClerkSdkLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => - ['en'].contains(locale.languageCode); - - @override - bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; -} - -ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'en': - return ClerkSdkLocalizationsEn(); - } - - throw FlutterError( - 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); -} +// ignore_for_file: public_member_api_docs, use_super_parameters +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'clerk_sdk_localizations_en.dart'; + +/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations +/// returned by `ClerkSdkLocalizations.of(context)`. +/// +/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'generated/clerk_sdk_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, +/// supportedLocales: ClerkSdkLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales +/// property. +abstract class ClerkSdkLocalizations { + ClerkSdkLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static ClerkSdkLocalizations? of(BuildContext context) { + return Localizations.of( + context, ClerkSdkLocalizations); + } + + static const LocalizationsDelegate delegate = + _ClerkSdkLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [Locale('en')]; + + /// No description provided for @aLengthOfBetweenMINAndMAX. + /// + /// In en, this message translates to: + /// **'a length of between {min} and {max}'** + String aLengthOfBetweenMINAndMAX(int min, int max); + + /// No description provided for @aLengthOfMINOrGreater. + /// + /// In en, this message translates to: + /// **'a length of {min} or greater'** + String aLengthOfMINOrGreater(int min); + + /// No description provided for @aLowercaseLetter. + /// + /// In en, this message translates to: + /// **'a LOWERCASE letter'** + String get aLowercaseLetter; + + /// No description provided for @aNumber. + /// + /// In en, this message translates to: + /// **'a NUMBER'** + String get aNumber; + + /// No description provided for @aSpecialCharacter. + /// + /// In en, this message translates to: + /// **'a SPECIAL CHARACTER ({chars})'** + String aSpecialCharacter(String chars); + + /// No description provided for @abandoned. + /// + /// In en, this message translates to: + /// **'abandoned'** + String get abandoned; + + /// No description provided for @acceptTerms. + /// + /// In en, this message translates to: + /// **'I accept the Terms & Conditions and Privacy Policy'** + String get acceptTerms; + + /// No description provided for @actionNotTimely. + /// + /// In en, this message translates to: + /// **'Awaited user action not completed in required timeframe'** + String get actionNotTimely; + + /// No description provided for @active. + /// + /// In en, this message translates to: + /// **'active'** + String get active; + + /// No description provided for @addAccount. + /// + /// In en, this message translates to: + /// **'Add account'** + String get addAccount; + + /// No description provided for @addDomain. + /// + /// In en, this message translates to: + /// **'Add domain'** + String get addDomain; + + /// No description provided for @addEmailAddress. + /// + /// In en, this message translates to: + /// **'Add email address'** + String get addEmailAddress; + + /// No description provided for @addPhoneNumber. + /// + /// In en, this message translates to: + /// **'Add phone number'** + String get addPhoneNumber; + + /// No description provided for @alreadyHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Already have an account?'** + String get alreadyHaveAnAccount; + + /// No description provided for @anUppercaseLetter. + /// + /// In en, this message translates to: + /// **'an UPPERCASE letter'** + String get anUppercaseLetter; + + /// No description provided for @and. + /// + /// In en, this message translates to: + /// **'and'** + String get and; + + /// No description provided for @areYouSure. + /// + /// In en, this message translates to: + /// **'Are you sure?'** + String get areYouSure; + + /// No description provided for @authenticatorApp. + /// + /// In en, this message translates to: + /// **'authenticator app'** + String get authenticatorApp; + + /// No description provided for @automaticInvitation. + /// + /// In en, this message translates to: + /// **'Automatic invitation'** + String get automaticInvitation; + + /// No description provided for @automaticSuggestion. + /// + /// In en, this message translates to: + /// **'Automatic suggestion'** + String get automaticSuggestion; + + /// No description provided for @backupCode. + /// + /// In en, this message translates to: + /// **'backup code'** + String get backupCode; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @cannotDeleteSelf. + /// + /// In en, this message translates to: + /// **'You are not authorized to delete your user'** + String get cannotDeleteSelf; + + /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. + /// + /// In en, this message translates to: + /// **'Click on the link that‘s been sent to {identifier} and then check back here'** + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); + + /// No description provided for @complete. + /// + /// In en, this message translates to: + /// **'complete'** + String get complete; + + /// No description provided for @connectAccount. + /// + /// In en, this message translates to: + /// **'Connect account'** + String get connectAccount; + + /// No description provided for @connectedAccounts. + /// + /// In en, this message translates to: + /// **'Connected accounts'** + String get connectedAccounts; + + /// No description provided for @cont. + /// + /// In en, this message translates to: + /// **'Continue'** + String get cont; + + /// No description provided for @createOrganization. + /// + /// In en, this message translates to: + /// **'Create organization'** + String get createOrganization; + + /// No description provided for @didntReceiveCode. + /// + /// In en, this message translates to: + /// **'Didn\'t receive the code?'** + String get didntReceiveCode; + + /// No description provided for @domainName. + /// + /// In en, this message translates to: + /// **'Domain name'** + String get domainName; + + /// No description provided for @dontHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Don’t have an account?'** + String get dontHaveAnAccount; + + /// No description provided for @edit. + /// + /// In en, this message translates to: + /// **'edit'** + String get edit; + + /// No description provided for @emailAddress. + /// + /// In en, this message translates to: + /// **'email address'** + String get emailAddress; + + /// No description provided for @emailAddressConcise. + /// + /// In en, this message translates to: + /// **'email'** + String get emailAddressConcise; + + /// No description provided for @enrollment. + /// + /// In en, this message translates to: + /// **'Enrollment'** + String get enrollment; + + /// No description provided for @enrollmentMode. + /// + /// In en, this message translates to: + /// **'Enrollment mode:'** + String get enrollmentMode; + + /// No description provided for @enterCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter code sent to {identifier}'** + String enterCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter the code sent to {identifier}'** + String enterTheCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentToYou. + /// + /// In en, this message translates to: + /// **'Enter the code sent to you'** + String get enterTheCodeSentToYou; + + /// No description provided for @expired. + /// + /// In en, this message translates to: + /// **'expired'** + String get expired; + + /// No description provided for @failed. + /// + /// In en, this message translates to: + /// **'failed'** + String get failed; + + /// No description provided for @firstName. + /// + /// In en, this message translates to: + /// **'first name'** + String get firstName; + + /// No description provided for @forgottenPassword. + /// + /// In en, this message translates to: + /// **'Forgotten password?'** + String get forgottenPassword; + + /// No description provided for @generalDetails. + /// + /// In en, this message translates to: + /// **'General details'** + String get generalDetails; + + /// No description provided for @invalidEmailAddress. + /// + /// In en, this message translates to: + /// **'Invalid email address: {address}'** + String invalidEmailAddress(String address); + + /// No description provided for @invalidPhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid phone number: {number}'** + String invalidPhoneNumber(String number); + + /// No description provided for @join. + /// + /// In en, this message translates to: + /// **'JOIN'** + String get join; + + /// No description provided for @jwtPoorlyFormatted. + /// + /// In en, this message translates to: + /// **'JWT poorly formatted: {arg}'** + String jwtPoorlyFormatted(String arg); + + /// No description provided for @lastName. + /// + /// In en, this message translates to: + /// **'last name'** + String get lastName; + + /// No description provided for @leave. + /// + /// In en, this message translates to: + /// **'Leave'** + String get leave; + + /// No description provided for @leaveOrg. + /// + /// In en, this message translates to: + /// **'Leave {organization}'** + String leaveOrg(String organization); + + /// No description provided for @leaveOrganization. + /// + /// In en, this message translates to: + /// **'Leave organization'** + String get leaveOrganization; + + /// No description provided for @loading. + /// + /// In en, this message translates to: + /// **'Loading…'** + String get loading; + + /// No description provided for @logo. + /// + /// In en, this message translates to: + /// **'Logo'** + String get logo; + + /// No description provided for @manualInvitation. + /// + /// In en, this message translates to: + /// **'Manual invitation'** + String get manualInvitation; + + /// No description provided for @missingRequirements. + /// + /// In en, this message translates to: + /// **'missing requirements'** + String get missingRequirements; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @needsFirstFactor. + /// + /// In en, this message translates to: + /// **'needs first factor'** + String get needsFirstFactor; + + /// No description provided for @needsIdentifier. + /// + /// In en, this message translates to: + /// **'needs identifier'** + String get needsIdentifier; + + /// No description provided for @needsSecondFactor. + /// + /// In en, this message translates to: + /// **'needs second factor'** + String get needsSecondFactor; + + /// No description provided for @newPassword. + /// + /// In en, this message translates to: + /// **'New password'** + String get newPassword; + + /// No description provided for @newPasswordConfirmation. + /// + /// In en, this message translates to: + /// **'Confirm new password'** + String get newPasswordConfirmation; + + /// No description provided for @noAssociatedCodeRetrievalMethod. + /// + /// In en, this message translates to: + /// **'No code retrieval method associated with {arg}'** + String noAssociatedCodeRetrievalMethod(String arg); + + /// No description provided for @noAssociatedStrategy. + /// + /// In en, this message translates to: + /// **'No strategy associated with {arg}'** + String noAssociatedStrategy(String arg); + + /// No description provided for @noSessionFoundForUser. + /// + /// In en, this message translates to: + /// **'No session found for {arg}'** + String noSessionFoundForUser(String arg); + + /// No description provided for @noSessionTokenRetrieved. + /// + /// In en, this message translates to: + /// **'No session token retrieved'** + String get noSessionTokenRetrieved; + + /// No description provided for @noStageForStatus. + /// + /// In en, this message translates to: + /// **'No stage for {arg}'** + String noStageForStatus(String arg); + + /// No description provided for @noSuchFirstFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for first factor'** + String noSuchFirstFactorStrategy(String arg); + + /// No description provided for @noSuchSecondFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for second factor'** + String noSuchSecondFactorStrategy(String arg); + + /// No description provided for @noTranslationFor. + /// + /// In en, this message translates to: + /// **'No translation for {name}'** + String noTranslationFor(String name); + + /// No description provided for @ok. + /// + /// In en, this message translates to: + /// **'OK'** + String get ok; + + /// No description provided for @optional. + /// + /// In en, this message translates to: + /// **'(optional)'** + String get optional; + + /// No description provided for @or. + /// + /// In en, this message translates to: + /// **'or'** + String get or; + + /// No description provided for @organizationProfile. + /// + /// In en, this message translates to: + /// **'Organization profile'** + String get organizationProfile; + + /// No description provided for @organizations. + /// + /// In en, this message translates to: + /// **'Organizations'** + String get organizations; + + /// No description provided for @passkey. + /// + /// In en, this message translates to: + /// **'passkey'** + String get passkey; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @passwordAndPasswordConfirmationMustMatch. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordAndPasswordConfirmationMustMatch; + + /// No description provided for @passwordConfirmation. + /// + /// In en, this message translates to: + /// **'confirm password'** + String get passwordConfirmation; + + /// No description provided for @passwordMatchError. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordMatchError; + + /// No description provided for @passwordMustBeSupplied. + /// + /// In en, this message translates to: + /// **'A password must be supplied'** + String get passwordMustBeSupplied; + + /// No description provided for @passwordRequires. + /// + /// In en, this message translates to: + /// **'Password requires:'** + String get passwordRequires; + + /// No description provided for @pending. + /// + /// In en, this message translates to: + /// **'pending'** + String get pending; + + /// No description provided for @personalAccount. + /// + /// In en, this message translates to: + /// **'Personal account'** + String get personalAccount; + + /// No description provided for @phoneNumber. + /// + /// In en, this message translates to: + /// **'phone number'** + String get phoneNumber; + + /// No description provided for @phoneNumberConcise. + /// + /// In en, this message translates to: + /// **'phone'** + String get phoneNumberConcise; + + /// No description provided for @pleaseChooseAnAccountToConnect. + /// + /// In en, this message translates to: + /// **'Please choose an account to connect'** + String get pleaseChooseAnAccountToConnect; + + /// No description provided for @pleaseEnterYourIdentifier. + /// + /// In en, this message translates to: + /// **'Please enter your identifier'** + String get pleaseEnterYourIdentifier; + + /// No description provided for @primary. + /// + /// In en, this message translates to: + /// **'PRIMARY'** + String get primary; + + /// No description provided for @privacyPolicy. + /// + /// In en, this message translates to: + /// **'Privacy Policy'** + String get privacyPolicy; + + /// No description provided for @problemsConnecting. + /// + /// In en, this message translates to: + /// **'We are having problems connecting'** + String get problemsConnecting; + + /// No description provided for @profile. + /// + /// In en, this message translates to: + /// **'Profile'** + String get profile; + + /// No description provided for @profileDetails. + /// + /// In en, this message translates to: + /// **'Profile details'** + String get profileDetails; + + /// No description provided for @recommendSize. + /// + /// In en, this message translates to: + /// **'Recommend size 1:1, up to 5MB.'** + String get recommendSize; + + /// No description provided for @requiredField. + /// + /// In en, this message translates to: + /// **'(required)'** + String get requiredField; + + /// No description provided for @resend. + /// + /// In en, this message translates to: + /// **'Resend'** + String get resend; + + /// No description provided for @resetFailed. + /// + /// In en, this message translates to: + /// **'That password reset attempt failed. A new code has been sent.'** + String get resetFailed; + + /// No description provided for @resetPassword. + /// + /// In en, this message translates to: + /// **'Reset password and sign in'** + String get resetPassword; + + /// No description provided for @selectAccount. + /// + /// In en, this message translates to: + /// **'Select the account with which you wish to continue'** + String get selectAccount; + + /// No description provided for @sendMeTheCode. + /// + /// In en, this message translates to: + /// **'Send me the reset code'** + String get sendMeTheCode; + + /// No description provided for @signIn. + /// + /// In en, this message translates to: + /// **'Sign in'** + String get signIn; + + /// No description provided for @signInByClickingALinkSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by clicking a link sent to you by email'** + String get signInByClickingALinkSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by email'** + String get signInByEnteringACodeSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by text message'** + String get signInByEnteringACodeSentToYouByTextMessage; + + /// No description provided for @signInError. + /// + /// In en, this message translates to: + /// **'Unsupported sign in attempt: {arg}'** + String signInError(String arg); + + /// No description provided for @signInTo. + /// + /// In en, this message translates to: + /// **'Sign in to {name}'** + String signInTo(String name); + + /// No description provided for @signOut. + /// + /// In en, this message translates to: + /// **'Sign out'** + String get signOut; + + /// No description provided for @signOutIdentifier. + /// + /// In en, this message translates to: + /// **'Sign out {identifier}'** + String signOutIdentifier(String identifier); + + /// No description provided for @signOutOfAllAccounts. + /// + /// In en, this message translates to: + /// **'Sign out of all accounts'** + String get signOutOfAllAccounts; + + /// No description provided for @signUp. + /// + /// In en, this message translates to: + /// **'Sign up'** + String get signUp; + + /// No description provided for @signUpTo. + /// + /// In en, this message translates to: + /// **'Sign up to {name}'** + String signUpTo(String name); + + /// No description provided for @slugUrl. + /// + /// In en, this message translates to: + /// **'Slug URL'** + String get slugUrl; + + /// No description provided for @switchTo. + /// + /// In en, this message translates to: + /// **'Switch to'** + String get switchTo; + + /// No description provided for @termsAndConditions. + /// + /// In en, this message translates to: + /// **'Terms & Conditions'** + String get termsAndConditions; + + /// No description provided for @transferable. + /// + /// In en, this message translates to: + /// **'transferable'** + String get transferable; + + /// No description provided for @typeTypeInvalid. + /// + /// In en, this message translates to: + /// **'Type \'{type}\' is invalid'** + String typeTypeInvalid(String type); + + /// No description provided for @unsupportedPasswordResetStrategy. + /// + /// In en, this message translates to: + /// **'Unsupported password reset strategy: {arg}'** + String unsupportedPasswordResetStrategy(String arg); + + /// No description provided for @unverified. + /// + /// In en, this message translates to: + /// **'unverified'** + String get unverified; + + /// No description provided for @username. + /// + /// In en, this message translates to: + /// **'username'** + String get username; + + /// No description provided for @verificationEmailAddress. + /// + /// In en, this message translates to: + /// **'Email address verification'** + String get verificationEmailAddress; + + /// No description provided for @verificationPhoneNumber. + /// + /// In en, this message translates to: + /// **'Phone number verification'** + String get verificationPhoneNumber; + + /// No description provided for @verified. + /// + /// In en, this message translates to: + /// **'verified'** + String get verified; + + /// No description provided for @verifiedDomains. + /// + /// In en, this message translates to: + /// **'Verified domains'** + String get verifiedDomains; + + /// No description provided for @verifyYourEmailAddress. + /// + /// In en, this message translates to: + /// **'Verify your email address'** + String get verifyYourEmailAddress; + + /// No description provided for @verifyYourPhoneNumber. + /// + /// In en, this message translates to: + /// **'Verify your phone number'** + String get verifyYourPhoneNumber; + + /// No description provided for @viaAutomaticInvitation. + /// + /// In en, this message translates to: + /// **'via automatic invitation'** + String get viaAutomaticInvitation; + + /// No description provided for @viaAutomaticSuggestion. + /// + /// In en, this message translates to: + /// **'via automatic suggestion'** + String get viaAutomaticSuggestion; + + /// No description provided for @viaManualInvitation. + /// + /// In en, this message translates to: + /// **'via manual invitation'** + String get viaManualInvitation; + + /// No description provided for @web3Wallet. + /// + /// In en, this message translates to: + /// **'web3 wallet'** + String get web3Wallet; + + /// No description provided for @welcomeBackPleaseSignInToContinue. + /// + /// In en, this message translates to: + /// **'Welcome back! Please sign in to continue'** + String get welcomeBackPleaseSignInToContinue; + + /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. + /// + /// In en, this message translates to: + /// **'Welcome! Please fill in the details to get started'** + String get welcomePleaseFillInTheDetailsToGetStarted; + + /// No description provided for @youNeedToAdd. + /// + /// In en, this message translates to: + /// **'You need to add:'** + String get youNeedToAdd; +} + +class _ClerkSdkLocalizationsDelegate + extends LocalizationsDelegate { + const _ClerkSdkLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture( + lookupClerkSdkLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => + ['en'].contains(locale.languageCode); + + @override + bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; +} + +ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': + return ClerkSdkLocalizationsEn(); + } + + throw FlutterError( + 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); +} diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart index ed3de42d..f9d84d1a 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart @@ -1,467 +1,465 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters - -import 'clerk_sdk_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for English (`en`). -class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { - ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String aLengthOfBetweenMINAndMAX(int min, int max) { - return 'a length of between $min and $max'; - } - - @override - String aLengthOfMINOrGreater(int min) { - return 'a length of $min or greater'; - } - - @override - String get aLowercaseLetter => 'a LOWERCASE letter'; - - @override - String get aNumber => 'a NUMBER'; - - @override - String aSpecialCharacter(String chars) { - return 'a SPECIAL CHARACTER ($chars)'; - } - - @override - String get abandoned => 'abandoned'; - - @override - String get acceptTerms => - 'I accept the Terms & Conditions and Privacy Policy'; - - @override - String get actionNotTimely => - 'Awaited user action not completed in required timeframe'; - - @override - String get active => 'active'; - - @override - String get addAccount => 'Add account'; - - @override - String get addDomain => 'Add domain'; - - @override - String get addEmailAddress => 'Add email address'; - - @override - String get addPhoneNumber => 'Add phone number'; - - @override - String get alreadyHaveAnAccount => 'Already have an account?'; - - @override - String get anUppercaseLetter => 'an UPPERCASE letter'; - - @override - String get and => 'and'; - - @override - String get areYouSure => 'Are you sure?'; - - @override - String get authenticatorApp => 'authenticator app'; - - @override - String get automaticInvitation => 'Automatic invitation'; - - @override - String get automaticSuggestion => 'Automatic suggestion'; - - @override - String get backupCode => 'backup code'; - - @override - String get cancel => 'Cancel'; - - @override - String get cannotDeleteSelf => 'You are not authorized to delete your user'; - - @override - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { - return 'Click on the link that‘s been sent to $identifier and then check back here'; - } - - @override - String get complete => 'complete'; - - @override - String get connectAccount => 'Connect account'; - - @override - String get connectedAccounts => 'Connected accounts'; - - @override - String get cont => 'Continue'; - - @override - String get createOrganization => 'Create organization'; - - @override - String get didntReceiveCode => 'Didn\'t receive the code?'; - - @override - String get domainName => 'Domain name'; - - @override - String get dontHaveAnAccount => 'Don’t have an account?'; - - @override - String get edit => 'edit'; - - @override - String get emailAddress => 'email address'; - - @override - String get emailAddressConcise => 'email'; - - @override - String get enrollment => 'Enrollment'; - - @override - String get enrollmentMode => 'Enrollment mode:'; - - @override - String enterCodeSentTo(String identifier) { - return 'Enter code sent to $identifier'; - } - - @override - String enterTheCodeSentTo(String identifier) { - return 'Enter the code sent to $identifier'; - } - - @override - String get enterTheCodeSentToYou => 'Enter the code sent to you'; - - @override - String get expired => 'expired'; - - @override - String get failed => 'failed'; - - @override - String get firstName => 'first name'; - - @override - String get forgottenPassword => 'Forgotten password?'; - - @override - String get generalDetails => 'General details'; - - @override - String invalidEmailAddress(String address) { - return 'Invalid email address: $address'; - } - - @override - String invalidPhoneNumber(String number) { - return 'Invalid phone number: $number'; - } - - @override - String get join => 'JOIN'; - - @override - String jwtPoorlyFormatted(String arg) { - return 'JWT poorly formatted: $arg'; - } - - @override - String get lastName => 'last name'; - - @override - String get leave => 'Leave'; - - @override - String leaveOrg(String organization) { - return 'Leave $organization'; - } - - @override - String get leaveOrganization => 'Leave organization'; - - @override - String get loading => 'Loading…'; - - @override - String get logo => 'Logo'; - - @override - String get manualInvitation => 'Manual invitation'; - - @override - String get missingRequirements => 'missing requirements'; - - @override - String get name => 'Name'; - - @override - String get needsFirstFactor => 'needs first factor'; - - @override - String get needsIdentifier => 'needs identifier'; - - @override - String get needsSecondFactor => 'needs second factor'; - - @override - String get newPassword => 'New password'; - - @override - String get newPasswordConfirmation => 'Confirm new password'; - - @override - String noAssociatedCodeRetrievalMethod(String arg) { - return 'No code retrieval method associated with $arg'; - } - - @override - String noAssociatedStrategy(String arg) { - return 'No strategy associated with $arg'; - } - - @override - String noSessionFoundForUser(String arg) { - return 'No session found for $arg'; - } - - @override - String get noSessionTokenRetrieved => 'No session token retrieved'; - - @override - String noStageForStatus(String arg) { - return 'No stage for $arg'; - } - - @override - String noSuchFirstFactorStrategy(String arg) { - return 'Strategy $arg not supported for first factor'; - } - - @override - String noSuchSecondFactorStrategy(String arg) { - return 'Strategy $arg not supported for second factor'; - } - - @override - String noTranslationFor(String name) { - return 'No translation for $name'; - } - - @override - String get ok => 'OK'; - - @override - String get optional => '(optional)'; - - @override - String get or => 'or'; - - @override - String get organizationProfile => 'Organization profile'; - - @override - String get organizations => 'Organizations'; - - @override - String get passkey => 'passkey'; - - @override - String get password => 'Password'; - - @override - String get passwordAndPasswordConfirmationMustMatch => - 'Password and password confirmation must match'; - - @override - String get passwordConfirmation => 'confirm password'; - - @override - String get passwordMatchError => - 'Password and password confirmation must match'; - - @override - String get passwordMustBeSupplied => 'A password must be supplied'; - - @override - String get passwordRequires => 'Password requires:'; - - @override - String get pending => 'pending'; - - @override - String get personalAccount => 'Personal account'; - - @override - String get phoneNumber => 'phone number'; - - @override - String get phoneNumberConcise => 'phone'; - - @override - String get pleaseChooseAnAccountToConnect => - 'Please choose an account to connect'; - - @override - String get pleaseEnterYourIdentifier => 'Please enter your identifier'; - - @override - String get primary => 'PRIMARY'; - - @override - String get privacyPolicy => 'Privacy Policy'; - - @override - String get problemsConnecting => 'We are having problems connecting'; - - @override - String get profile => 'Profile'; - - @override - String get profileDetails => 'Profile details'; - - @override - String get recommendSize => 'Recommend size 1:1, up to 5MB.'; - - @override - String get requiredField => '(required)'; - - @override - String get resend => 'Resend'; - - @override - String get resetFailed => - 'That password reset attempt failed. A new code has been sent.'; - - @override - String get resetPassword => 'Reset password and sign in'; - - @override - String get selectAccount => - 'Select the account with which you wish to continue'; - - @override - String get sendMeTheCode => 'Send me the reset code'; - - @override - String get signIn => 'Sign in'; - - @override - String get signInByClickingALinkSentToYouByEmail => - 'Sign in by clicking a link sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByEmail => - 'Sign in by entering a code sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByTextMessage => - 'Sign in by entering a code sent to you by text message'; - - @override - String signInError(String arg) { - return 'Unsupported sign in attempt: $arg'; - } - - @override - String signInTo(String name) { - return 'Sign in to $name'; - } - - @override - String get signOut => 'Sign out'; - - @override - String signOutIdentifier(String identifier) { - return 'Sign out $identifier'; - } - - @override - String get signOutOfAllAccounts => 'Sign out of all accounts'; - - @override - String get signUp => 'Sign up'; - - @override - String signUpTo(String name) { - return 'Sign up to $name'; - } - - @override - String get slugUrl => 'Slug URL'; - - @override - String get switchTo => 'Switch to'; - - @override - String get termsAndConditions => 'Terms & Conditions'; - - @override - String get transferable => 'transferable'; - - @override - String typeTypeInvalid(String type) { - return 'Type \'$type\' is invalid'; - } - - @override - String unsupportedPasswordResetStrategy(String arg) { - return 'Unsupported password reset strategy: $arg'; - } - - @override - String get unverified => 'unverified'; - - @override - String get username => 'username'; - - @override - String get verificationEmailAddress => 'Email address verification'; - - @override - String get verificationPhoneNumber => 'Phone number verification'; - - @override - String get verified => 'verified'; - - @override - String get verifiedDomains => 'Verified domains'; - - @override - String get verifyYourEmailAddress => 'Verify your email address'; - - @override - String get verifyYourPhoneNumber => 'Verify your phone number'; - - @override - String get viaAutomaticInvitation => 'via automatic invitation'; - - @override - String get viaAutomaticSuggestion => 'via automatic suggestion'; - - @override - String get viaManualInvitation => 'via manual invitation'; - - @override - String get web3Wallet => 'web3 wallet'; - - @override - String get welcomeBackPleaseSignInToContinue => - 'Welcome back! Please sign in to continue'; - - @override - String get welcomePleaseFillInTheDetailsToGetStarted => - 'Welcome! Please fill in the details to get started'; - - @override - String get youNeedToAdd => 'You need to add:'; -} +// ignore_for_file: public_member_api_docs, use_super_parameters + +import 'clerk_sdk_localizations.dart'; + +/// The translations for English (`en`). +class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { + ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String aLengthOfBetweenMINAndMAX(int min, int max) { + return 'a length of between $min and $max'; + } + + @override + String aLengthOfMINOrGreater(int min) { + return 'a length of $min or greater'; + } + + @override + String get aLowercaseLetter => 'a LOWERCASE letter'; + + @override + String get aNumber => 'a NUMBER'; + + @override + String aSpecialCharacter(String chars) { + return 'a SPECIAL CHARACTER ($chars)'; + } + + @override + String get abandoned => 'abandoned'; + + @override + String get acceptTerms => + 'I accept the Terms & Conditions and Privacy Policy'; + + @override + String get actionNotTimely => + 'Awaited user action not completed in required timeframe'; + + @override + String get active => 'active'; + + @override + String get addAccount => 'Add account'; + + @override + String get addDomain => 'Add domain'; + + @override + String get addEmailAddress => 'Add email address'; + + @override + String get addPhoneNumber => 'Add phone number'; + + @override + String get alreadyHaveAnAccount => 'Already have an account?'; + + @override + String get anUppercaseLetter => 'an UPPERCASE letter'; + + @override + String get and => 'and'; + + @override + String get areYouSure => 'Are you sure?'; + + @override + String get authenticatorApp => 'authenticator app'; + + @override + String get automaticInvitation => 'Automatic invitation'; + + @override + String get automaticSuggestion => 'Automatic suggestion'; + + @override + String get backupCode => 'backup code'; + + @override + String get cancel => 'Cancel'; + + @override + String get cannotDeleteSelf => 'You are not authorized to delete your user'; + + @override + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { + return 'Click on the link that‘s been sent to $identifier and then check back here'; + } + + @override + String get complete => 'complete'; + + @override + String get connectAccount => 'Connect account'; + + @override + String get connectedAccounts => 'Connected accounts'; + + @override + String get cont => 'Continue'; + + @override + String get createOrganization => 'Create organization'; + + @override + String get didntReceiveCode => 'Didn\'t receive the code?'; + + @override + String get domainName => 'Domain name'; + + @override + String get dontHaveAnAccount => 'Don’t have an account?'; + + @override + String get edit => 'edit'; + + @override + String get emailAddress => 'email address'; + + @override + String get emailAddressConcise => 'email'; + + @override + String get enrollment => 'Enrollment'; + + @override + String get enrollmentMode => 'Enrollment mode:'; + + @override + String enterCodeSentTo(String identifier) { + return 'Enter code sent to $identifier'; + } + + @override + String enterTheCodeSentTo(String identifier) { + return 'Enter the code sent to $identifier'; + } + + @override + String get enterTheCodeSentToYou => 'Enter the code sent to you'; + + @override + String get expired => 'expired'; + + @override + String get failed => 'failed'; + + @override + String get firstName => 'first name'; + + @override + String get forgottenPassword => 'Forgotten password?'; + + @override + String get generalDetails => 'General details'; + + @override + String invalidEmailAddress(String address) { + return 'Invalid email address: $address'; + } + + @override + String invalidPhoneNumber(String number) { + return 'Invalid phone number: $number'; + } + + @override + String get join => 'JOIN'; + + @override + String jwtPoorlyFormatted(String arg) { + return 'JWT poorly formatted: $arg'; + } + + @override + String get lastName => 'last name'; + + @override + String get leave => 'Leave'; + + @override + String leaveOrg(String organization) { + return 'Leave $organization'; + } + + @override + String get leaveOrganization => 'Leave organization'; + + @override + String get loading => 'Loading…'; + + @override + String get logo => 'Logo'; + + @override + String get manualInvitation => 'Manual invitation'; + + @override + String get missingRequirements => 'missing requirements'; + + @override + String get name => 'Name'; + + @override + String get needsFirstFactor => 'needs first factor'; + + @override + String get needsIdentifier => 'needs identifier'; + + @override + String get needsSecondFactor => 'needs second factor'; + + @override + String get newPassword => 'New password'; + + @override + String get newPasswordConfirmation => 'Confirm new password'; + + @override + String noAssociatedCodeRetrievalMethod(String arg) { + return 'No code retrieval method associated with $arg'; + } + + @override + String noAssociatedStrategy(String arg) { + return 'No strategy associated with $arg'; + } + + @override + String noSessionFoundForUser(String arg) { + return 'No session found for $arg'; + } + + @override + String get noSessionTokenRetrieved => 'No session token retrieved'; + + @override + String noStageForStatus(String arg) { + return 'No stage for $arg'; + } + + @override + String noSuchFirstFactorStrategy(String arg) { + return 'Strategy $arg not supported for first factor'; + } + + @override + String noSuchSecondFactorStrategy(String arg) { + return 'Strategy $arg not supported for second factor'; + } + + @override + String noTranslationFor(String name) { + return 'No translation for $name'; + } + + @override + String get ok => 'OK'; + + @override + String get optional => '(optional)'; + + @override + String get or => 'or'; + + @override + String get organizationProfile => 'Organization profile'; + + @override + String get organizations => 'Organizations'; + + @override + String get passkey => 'passkey'; + + @override + String get password => 'Password'; + + @override + String get passwordAndPasswordConfirmationMustMatch => + 'Password and password confirmation must match'; + + @override + String get passwordConfirmation => 'confirm password'; + + @override + String get passwordMatchError => + 'Password and password confirmation must match'; + + @override + String get passwordMustBeSupplied => 'A password must be supplied'; + + @override + String get passwordRequires => 'Password requires:'; + + @override + String get pending => 'pending'; + + @override + String get personalAccount => 'Personal account'; + + @override + String get phoneNumber => 'phone number'; + + @override + String get phoneNumberConcise => 'phone'; + + @override + String get pleaseChooseAnAccountToConnect => + 'Please choose an account to connect'; + + @override + String get pleaseEnterYourIdentifier => 'Please enter your identifier'; + + @override + String get primary => 'PRIMARY'; + + @override + String get privacyPolicy => 'Privacy Policy'; + + @override + String get problemsConnecting => 'We are having problems connecting'; + + @override + String get profile => 'Profile'; + + @override + String get profileDetails => 'Profile details'; + + @override + String get recommendSize => 'Recommend size 1:1, up to 5MB.'; + + @override + String get requiredField => '(required)'; + + @override + String get resend => 'Resend'; + + @override + String get resetFailed => + 'That password reset attempt failed. A new code has been sent.'; + + @override + String get resetPassword => 'Reset password and sign in'; + + @override + String get selectAccount => + 'Select the account with which you wish to continue'; + + @override + String get sendMeTheCode => 'Send me the reset code'; + + @override + String get signIn => 'Sign in'; + + @override + String get signInByClickingALinkSentToYouByEmail => + 'Sign in by clicking a link sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByEmail => + 'Sign in by entering a code sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByTextMessage => + 'Sign in by entering a code sent to you by text message'; + + @override + String signInError(String arg) { + return 'Unsupported sign in attempt: $arg'; + } + + @override + String signInTo(String name) { + return 'Sign in to $name'; + } + + @override + String get signOut => 'Sign out'; + + @override + String signOutIdentifier(String identifier) { + return 'Sign out $identifier'; + } + + @override + String get signOutOfAllAccounts => 'Sign out of all accounts'; + + @override + String get signUp => 'Sign up'; + + @override + String signUpTo(String name) { + return 'Sign up to $name'; + } + + @override + String get slugUrl => 'Slug URL'; + + @override + String get switchTo => 'Switch to'; + + @override + String get termsAndConditions => 'Terms & Conditions'; + + @override + String get transferable => 'transferable'; + + @override + String typeTypeInvalid(String type) { + return 'Type \'$type\' is invalid'; + } + + @override + String unsupportedPasswordResetStrategy(String arg) { + return 'Unsupported password reset strategy: $arg'; + } + + @override + String get unverified => 'unverified'; + + @override + String get username => 'username'; + + @override + String get verificationEmailAddress => 'Email address verification'; + + @override + String get verificationPhoneNumber => 'Phone number verification'; + + @override + String get verified => 'verified'; + + @override + String get verifiedDomains => 'Verified domains'; + + @override + String get verifyYourEmailAddress => 'Verify your email address'; + + @override + String get verifyYourPhoneNumber => 'Verify your phone number'; + + @override + String get viaAutomaticInvitation => 'via automatic invitation'; + + @override + String get viaAutomaticSuggestion => 'via automatic suggestion'; + + @override + String get viaManualInvitation => 'via manual invitation'; + + @override + String get web3Wallet => 'web3 wallet'; + + @override + String get welcomeBackPleaseSignInToContinue => + 'Welcome back! Please sign in to continue'; + + @override + String get welcomePleaseFillInTheDetailsToGetStarted => + 'Welcome! Please fill in the details to get started'; + + @override + String get youNeedToAdd => 'You need to add:'; +} From 45eda14421ce0dc57447469ab119d9a976746934 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 14:52:42 +0100 Subject: [PATCH 12/20] fix: change comment and order of functions in strategy [#207] --- .../lib/src/models/client/strategy.dart | 47 +++++++------------ 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index 48e83f9e..9b399512 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -50,7 +50,7 @@ class Strategy { /// oauth token apple strategy static const oauthTokenApple = Strategy(name: _oauthToken, provider: 'apple'); - /// google one tap strategy + /// google authentication token strategy (google one tap) static const oauthTokenGoogle = Strategy(name: _oauthTokenGoogleName); /// the collected oauth strategies @@ -84,12 +84,10 @@ class Strategy { static const phoneCode = Strategy(name: 'phone_code'); /// reset password email code strategy - static const resetPasswordEmailCode = - Strategy(name: 'reset_password_email_code'); + static const resetPasswordEmailCode = Strategy(name: 'reset_password_email_code'); /// reset password phone code strategy - static const resetPasswordPhoneCode = - Strategy(name: 'reset_password_phone_code'); + static const resetPasswordPhoneCode = Strategy(name: 'reset_password_phone_code'); /// saml strategy static const saml = Strategy(name: 'saml'); @@ -98,12 +96,10 @@ class Strategy { static const ticket = Strategy(name: 'ticket'); /// web3 metamask signature strategy - static const web3MetamaskSignature = - Strategy(name: 'web3_metamask_signature'); + static const web3MetamaskSignature = Strategy(name: 'web3_metamask_signature'); /// web3 coinbase signature strategy - static const web3CoinbaseSignature = - Strategy(name: 'web3_coinbase_signature'); + static const web3CoinbaseSignature = Strategy(name: 'web3_coinbase_signature'); /// the collected verification strategies static final verificationStrategies = { @@ -154,46 +150,35 @@ class Strategy { /// is oauth custom? bool get isOauthCustom => name == _oauthCustom; + /// is other strategy? + bool get isOtherStrategy => isOauth == false && requiresPassword == false; + /// is oauth token? - bool get isOauthToken => - const [_oauthToken, _oauthTokenGoogleName].contains(name); + bool get isOauthToken => const [_oauthToken, _oauthTokenGoogleName].contains(name); /// is some variety of oauth? bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; - /// is other strategy? - bool get isOtherStrategy => isOauth == false && requiresPassword == false; - /// is phone strategy? - bool get isPhone => - const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); + bool get isPhone => const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); /// is a password reset strategy? bool get isPasswordResetter => const [resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires password? - bool get requiresPassword => const [ - password, - resetPasswordEmailCode, - resetPasswordPhoneCode - ].contains(this); + bool get requiresPassword => + const [password, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires code? - bool get requiresCode => const [ - emailCode, - phoneCode, - resetPasswordEmailCode, - resetPasswordPhoneCode - ].contains(this); + bool get requiresCode => + const [emailCode, phoneCode, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires signature? - bool get requiresSignature => - const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); + bool get requiresSignature => const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); /// requires redirect? - bool get requiresRedirect => - name == _oauth || const [emailLink, saml].contains(this); + bool get requiresRedirect => name == _oauth || const [emailLink, saml].contains(this); /// For a given [name] return the [Strategy] it identifies. /// Create one if necessary and possible From 482adc99cee0a28cfdedff5eb2cebefbefaa2e9f Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 14:59:42 +0100 Subject: [PATCH 13/20] fix: reformat to 80 columns [#207] --- .../lib/src/models/client/strategy.dart | 39 +++++++++++++------ .../lib/pages/custom_sign_in_example.dart | 2 +- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index 9b399512..53359993 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -84,10 +84,12 @@ class Strategy { static const phoneCode = Strategy(name: 'phone_code'); /// reset password email code strategy - static const resetPasswordEmailCode = Strategy(name: 'reset_password_email_code'); + static const resetPasswordEmailCode = + Strategy(name: 'reset_password_email_code'); /// reset password phone code strategy - static const resetPasswordPhoneCode = Strategy(name: 'reset_password_phone_code'); + static const resetPasswordPhoneCode = + Strategy(name: 'reset_password_phone_code'); /// saml strategy static const saml = Strategy(name: 'saml'); @@ -96,10 +98,12 @@ class Strategy { static const ticket = Strategy(name: 'ticket'); /// web3 metamask signature strategy - static const web3MetamaskSignature = Strategy(name: 'web3_metamask_signature'); + static const web3MetamaskSignature = + Strategy(name: 'web3_metamask_signature'); /// web3 coinbase signature strategy - static const web3CoinbaseSignature = Strategy(name: 'web3_coinbase_signature'); + static const web3CoinbaseSignature = + Strategy(name: 'web3_coinbase_signature'); /// the collected verification strategies static final verificationStrategies = { @@ -154,31 +158,42 @@ class Strategy { bool get isOtherStrategy => isOauth == false && requiresPassword == false; /// is oauth token? - bool get isOauthToken => const [_oauthToken, _oauthTokenGoogleName].contains(name); + bool get isOauthToken => + const [_oauthToken, _oauthTokenGoogleName].contains(name); /// is some variety of oauth? bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; /// is phone strategy? - bool get isPhone => const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); + bool get isPhone => + const [phoneCode, phoneNumber, resetPasswordPhoneCode].contains(this); /// is a password reset strategy? bool get isPasswordResetter => const [resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); /// requires password? - bool get requiresPassword => - const [password, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); + bool get requiresPassword => const [ + password, + resetPasswordEmailCode, + resetPasswordPhoneCode + ].contains(this); /// requires code? - bool get requiresCode => - const [emailCode, phoneCode, resetPasswordEmailCode, resetPasswordPhoneCode].contains(this); + bool get requiresCode => const [ + emailCode, + phoneCode, + resetPasswordEmailCode, + resetPasswordPhoneCode + ].contains(this); /// requires signature? - bool get requiresSignature => const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); + bool get requiresSignature => + const [web3MetamaskSignature, web3CoinbaseSignature].contains(this); /// requires redirect? - bool get requiresRedirect => name == _oauth || const [emailLink, saml].contains(this); + bool get requiresRedirect => + name == _oauth || const [emailLink, saml].contains(this); /// For a given [name] return the [Strategy] it identifies. /// Create one if necessary and possible diff --git a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart index 0b746675..a48b5284 100644 --- a/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart +++ b/packages/clerk_flutter/example/lib/pages/custom_sign_in_example.dart @@ -78,7 +78,7 @@ class _CustomOAuthSignInExampleState extends State { _loading.value = true; final google = GoogleSignIn.instance; await google.initialize( - serverClientId: const String.fromEnvironment('gcp_project_id'), + serverClientId: const String.fromEnvironment('google_client_id'), nonce: const Uuid().v4(), ); final account = await google.authenticate( From 190399bce8886824aa1188d49b136693ddb0b7de Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:04:01 +0100 Subject: [PATCH 14/20] fix: reformat to 80 columns [#207] --- .../clerk_auth/lib/src/models/client/strategy.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/clerk_auth/lib/src/models/client/strategy.dart b/packages/clerk_auth/lib/src/models/client/strategy.dart index 53359993..ae25d220 100644 --- a/packages/clerk_auth/lib/src/models/client/strategy.dart +++ b/packages/clerk_auth/lib/src/models/client/strategy.dart @@ -151,18 +151,18 @@ class Strategy { /// is known? bool get isKnown => isUnknown == false; + /// is some variety of oauth? + bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; + /// is oauth custom? bool get isOauthCustom => name == _oauthCustom; - /// is other strategy? - bool get isOtherStrategy => isOauth == false && requiresPassword == false; - /// is oauth token? bool get isOauthToken => const [_oauthToken, _oauthTokenGoogleName].contains(name); - /// is some variety of oauth? - bool get isOauth => name == _oauth || isOauthCustom || isOauthToken; + /// is other strategy? + bool get isOtherStrategy => isOauth == false && requiresPassword == false; /// is phone strategy? bool get isPhone => From 75b5454096e96b2e7f915a160880cf2c0986a2e8 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:07:34 +0100 Subject: [PATCH 15/20] fix: revert withalpha to withopacity [#207] --- .../lib/src/widgets/ui/multi_digit_code_input.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart b/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart index 132918ed..a409cdcf 100644 --- a/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart +++ b/packages/clerk_flutter/lib/src/widgets/ui/multi_digit_code_input.dart @@ -347,7 +347,7 @@ class _PulsingCursorState extends State<_PulsingCursor> width: double.infinity, height: widget.height, child: ColoredBox( - color: Colors.black.withAlpha((_curve.value * 128).toInt()), + color: Colors.black.withOpacity(_curve.value * 0.5), ), ), ), From fd2d3b1ca2d607bcf77929bfeddb65b7c9173b3c Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:09:54 +0100 Subject: [PATCH 16/20] fix: revert to materialstateproperty [#207] --- .../lib/src/widgets/ui/clerk_material_button.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart b/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart index 623f086d..156b2d52 100644 --- a/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart +++ b/packages/clerk_flutter/lib/src/widgets/ui/clerk_material_button.dart @@ -72,10 +72,10 @@ class ClerkMaterialButton extends StatelessWidget { child: FilledButton( onPressed: onPressed, style: ButtonStyle( - padding: WidgetStateProperty.all(EdgeInsets.zero), - backgroundColor: WidgetStateProperty.all(color), - foregroundColor: WidgetStateProperty.all(textColor), - shape: WidgetStateProperty.all( + padding: MaterialStateProperty.all(EdgeInsets.zero), + backgroundColor: MaterialStateProperty.all(color), + foregroundColor: MaterialStateProperty.all(textColor), + shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(height / 6), side: const BorderSide(color: ClerkColors.dawnPink), From 4aa49c075923c71f52675519510783c835688a59 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:13:41 +0100 Subject: [PATCH 17/20] fix: up flutter and dart versions in readme [#207] --- packages/clerk_auth/README.md | 2 +- packages/clerk_flutter/README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/clerk_auth/README.md b/packages/clerk_auth/README.md index e3eed257..0eca7650 100644 --- a/packages/clerk_auth/README.md +++ b/packages/clerk_auth/README.md @@ -18,7 +18,7 @@ for your users to sign up, sign in, and manage their profile from your Dart code ## Requirements -* Dart >= 3.0.0 +* Dart >= 3.6.2 ## Example Usage diff --git a/packages/clerk_flutter/README.md b/packages/clerk_flutter/README.md index beca2699..61c685db 100644 --- a/packages/clerk_flutter/README.md +++ b/packages/clerk_flutter/README.md @@ -18,8 +18,8 @@ for your users to sign up, sign in, and manage their profile from your Flutter c ## Requirements -* Flutter >= 3.10.0 -* Dart >= 3.0.0 +* Flutter >= 3.27.4 +* Dart >= 3.6.2 ## In Development From 9b4e8e89c6010f7c5e6b5dd203bff6bc1252f5c9 Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:23:09 +0100 Subject: [PATCH 18/20] fix: add documentation regarding env vars for the example app [#207] --- packages/clerk_flutter/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/clerk_flutter/README.md b/packages/clerk_flutter/README.md index 61c685db..db986df9 100644 --- a/packages/clerk_flutter/README.md +++ b/packages/clerk_flutter/README.md @@ -30,6 +30,10 @@ for your users to sign up, sign in, and manage their profile from your Flutter c To use this package you will need to go to your [Clerk Dashboard](https://dashboard.clerk.com/) create an application and copy the public and publishable API keys into your project. +The bundled example app requires one, possibly two, variables to be set up in your environment: +- `publishable_key`: your Clerk publishable key, usually starting `pk_` +- `google_client_id`: the ID of your GCP web project, if you are using Google token oauth + ```dart /// Example App class ExampleApp extends StatelessWidget { From 6b963a7831736bb6fefe11e290e848315299084c Mon Sep 17 00:00:00 2001 From: Nic Ford Date: Mon, 18 Aug 2025 15:29:04 +0100 Subject: [PATCH 19/20] fix: reformat to 80 columns [#207] --- .../generated/clerk_sdk_localizations.dart | 1854 +++++++++-------- .../generated/clerk_sdk_localizations_en.dart | 932 ++++----- 2 files changed, 1395 insertions(+), 1391 deletions(-) diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart index ad1bc326..e0c1a947 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart @@ -1,926 +1,928 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'clerk_sdk_localizations_en.dart'; - -/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations -/// returned by `ClerkSdkLocalizations.of(context)`. -/// -/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'generated/clerk_sdk_localizations.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, -/// supportedLocales: ClerkSdkLocalizations.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales -/// property. -abstract class ClerkSdkLocalizations { - ClerkSdkLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static ClerkSdkLocalizations? of(BuildContext context) { - return Localizations.of( - context, ClerkSdkLocalizations); - } - - static const LocalizationsDelegate delegate = - _ClerkSdkLocalizationsDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [Locale('en')]; - - /// No description provided for @aLengthOfBetweenMINAndMAX. - /// - /// In en, this message translates to: - /// **'a length of between {min} and {max}'** - String aLengthOfBetweenMINAndMAX(int min, int max); - - /// No description provided for @aLengthOfMINOrGreater. - /// - /// In en, this message translates to: - /// **'a length of {min} or greater'** - String aLengthOfMINOrGreater(int min); - - /// No description provided for @aLowercaseLetter. - /// - /// In en, this message translates to: - /// **'a LOWERCASE letter'** - String get aLowercaseLetter; - - /// No description provided for @aNumber. - /// - /// In en, this message translates to: - /// **'a NUMBER'** - String get aNumber; - - /// No description provided for @aSpecialCharacter. - /// - /// In en, this message translates to: - /// **'a SPECIAL CHARACTER ({chars})'** - String aSpecialCharacter(String chars); - - /// No description provided for @abandoned. - /// - /// In en, this message translates to: - /// **'abandoned'** - String get abandoned; - - /// No description provided for @acceptTerms. - /// - /// In en, this message translates to: - /// **'I accept the Terms & Conditions and Privacy Policy'** - String get acceptTerms; - - /// No description provided for @actionNotTimely. - /// - /// In en, this message translates to: - /// **'Awaited user action not completed in required timeframe'** - String get actionNotTimely; - - /// No description provided for @active. - /// - /// In en, this message translates to: - /// **'active'** - String get active; - - /// No description provided for @addAccount. - /// - /// In en, this message translates to: - /// **'Add account'** - String get addAccount; - - /// No description provided for @addDomain. - /// - /// In en, this message translates to: - /// **'Add domain'** - String get addDomain; - - /// No description provided for @addEmailAddress. - /// - /// In en, this message translates to: - /// **'Add email address'** - String get addEmailAddress; - - /// No description provided for @addPhoneNumber. - /// - /// In en, this message translates to: - /// **'Add phone number'** - String get addPhoneNumber; - - /// No description provided for @alreadyHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Already have an account?'** - String get alreadyHaveAnAccount; - - /// No description provided for @anUppercaseLetter. - /// - /// In en, this message translates to: - /// **'an UPPERCASE letter'** - String get anUppercaseLetter; - - /// No description provided for @and. - /// - /// In en, this message translates to: - /// **'and'** - String get and; - - /// No description provided for @areYouSure. - /// - /// In en, this message translates to: - /// **'Are you sure?'** - String get areYouSure; - - /// No description provided for @authenticatorApp. - /// - /// In en, this message translates to: - /// **'authenticator app'** - String get authenticatorApp; - - /// No description provided for @automaticInvitation. - /// - /// In en, this message translates to: - /// **'Automatic invitation'** - String get automaticInvitation; - - /// No description provided for @automaticSuggestion. - /// - /// In en, this message translates to: - /// **'Automatic suggestion'** - String get automaticSuggestion; - - /// No description provided for @backupCode. - /// - /// In en, this message translates to: - /// **'backup code'** - String get backupCode; - - /// No description provided for @cancel. - /// - /// In en, this message translates to: - /// **'Cancel'** - String get cancel; - - /// No description provided for @cannotDeleteSelf. - /// - /// In en, this message translates to: - /// **'You are not authorized to delete your user'** - String get cannotDeleteSelf; - - /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. - /// - /// In en, this message translates to: - /// **'Click on the link that‘s been sent to {identifier} and then check back here'** - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); - - /// No description provided for @complete. - /// - /// In en, this message translates to: - /// **'complete'** - String get complete; - - /// No description provided for @connectAccount. - /// - /// In en, this message translates to: - /// **'Connect account'** - String get connectAccount; - - /// No description provided for @connectedAccounts. - /// - /// In en, this message translates to: - /// **'Connected accounts'** - String get connectedAccounts; - - /// No description provided for @cont. - /// - /// In en, this message translates to: - /// **'Continue'** - String get cont; - - /// No description provided for @createOrganization. - /// - /// In en, this message translates to: - /// **'Create organization'** - String get createOrganization; - - /// No description provided for @didntReceiveCode. - /// - /// In en, this message translates to: - /// **'Didn\'t receive the code?'** - String get didntReceiveCode; - - /// No description provided for @domainName. - /// - /// In en, this message translates to: - /// **'Domain name'** - String get domainName; - - /// No description provided for @dontHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Don’t have an account?'** - String get dontHaveAnAccount; - - /// No description provided for @edit. - /// - /// In en, this message translates to: - /// **'edit'** - String get edit; - - /// No description provided for @emailAddress. - /// - /// In en, this message translates to: - /// **'email address'** - String get emailAddress; - - /// No description provided for @emailAddressConcise. - /// - /// In en, this message translates to: - /// **'email'** - String get emailAddressConcise; - - /// No description provided for @enrollment. - /// - /// In en, this message translates to: - /// **'Enrollment'** - String get enrollment; - - /// No description provided for @enrollmentMode. - /// - /// In en, this message translates to: - /// **'Enrollment mode:'** - String get enrollmentMode; - - /// No description provided for @enterCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter code sent to {identifier}'** - String enterCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter the code sent to {identifier}'** - String enterTheCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentToYou. - /// - /// In en, this message translates to: - /// **'Enter the code sent to you'** - String get enterTheCodeSentToYou; - - /// No description provided for @expired. - /// - /// In en, this message translates to: - /// **'expired'** - String get expired; - - /// No description provided for @failed. - /// - /// In en, this message translates to: - /// **'failed'** - String get failed; - - /// No description provided for @firstName. - /// - /// In en, this message translates to: - /// **'first name'** - String get firstName; - - /// No description provided for @forgottenPassword. - /// - /// In en, this message translates to: - /// **'Forgotten password?'** - String get forgottenPassword; - - /// No description provided for @generalDetails. - /// - /// In en, this message translates to: - /// **'General details'** - String get generalDetails; - - /// No description provided for @invalidEmailAddress. - /// - /// In en, this message translates to: - /// **'Invalid email address: {address}'** - String invalidEmailAddress(String address); - - /// No description provided for @invalidPhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid phone number: {number}'** - String invalidPhoneNumber(String number); - - /// No description provided for @join. - /// - /// In en, this message translates to: - /// **'JOIN'** - String get join; - - /// No description provided for @jwtPoorlyFormatted. - /// - /// In en, this message translates to: - /// **'JWT poorly formatted: {arg}'** - String jwtPoorlyFormatted(String arg); - - /// No description provided for @lastName. - /// - /// In en, this message translates to: - /// **'last name'** - String get lastName; - - /// No description provided for @leave. - /// - /// In en, this message translates to: - /// **'Leave'** - String get leave; - - /// No description provided for @leaveOrg. - /// - /// In en, this message translates to: - /// **'Leave {organization}'** - String leaveOrg(String organization); - - /// No description provided for @leaveOrganization. - /// - /// In en, this message translates to: - /// **'Leave organization'** - String get leaveOrganization; - - /// No description provided for @loading. - /// - /// In en, this message translates to: - /// **'Loading…'** - String get loading; - - /// No description provided for @logo. - /// - /// In en, this message translates to: - /// **'Logo'** - String get logo; - - /// No description provided for @manualInvitation. - /// - /// In en, this message translates to: - /// **'Manual invitation'** - String get manualInvitation; - - /// No description provided for @missingRequirements. - /// - /// In en, this message translates to: - /// **'missing requirements'** - String get missingRequirements; - - /// No description provided for @name. - /// - /// In en, this message translates to: - /// **'Name'** - String get name; - - /// No description provided for @needsFirstFactor. - /// - /// In en, this message translates to: - /// **'needs first factor'** - String get needsFirstFactor; - - /// No description provided for @needsIdentifier. - /// - /// In en, this message translates to: - /// **'needs identifier'** - String get needsIdentifier; - - /// No description provided for @needsSecondFactor. - /// - /// In en, this message translates to: - /// **'needs second factor'** - String get needsSecondFactor; - - /// No description provided for @newPassword. - /// - /// In en, this message translates to: - /// **'New password'** - String get newPassword; - - /// No description provided for @newPasswordConfirmation. - /// - /// In en, this message translates to: - /// **'Confirm new password'** - String get newPasswordConfirmation; - - /// No description provided for @noAssociatedCodeRetrievalMethod. - /// - /// In en, this message translates to: - /// **'No code retrieval method associated with {arg}'** - String noAssociatedCodeRetrievalMethod(String arg); - - /// No description provided for @noAssociatedStrategy. - /// - /// In en, this message translates to: - /// **'No strategy associated with {arg}'** - String noAssociatedStrategy(String arg); - - /// No description provided for @noSessionFoundForUser. - /// - /// In en, this message translates to: - /// **'No session found for {arg}'** - String noSessionFoundForUser(String arg); - - /// No description provided for @noSessionTokenRetrieved. - /// - /// In en, this message translates to: - /// **'No session token retrieved'** - String get noSessionTokenRetrieved; - - /// No description provided for @noStageForStatus. - /// - /// In en, this message translates to: - /// **'No stage for {arg}'** - String noStageForStatus(String arg); - - /// No description provided for @noSuchFirstFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for first factor'** - String noSuchFirstFactorStrategy(String arg); - - /// No description provided for @noSuchSecondFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for second factor'** - String noSuchSecondFactorStrategy(String arg); - - /// No description provided for @noTranslationFor. - /// - /// In en, this message translates to: - /// **'No translation for {name}'** - String noTranslationFor(String name); - - /// No description provided for @ok. - /// - /// In en, this message translates to: - /// **'OK'** - String get ok; - - /// No description provided for @optional. - /// - /// In en, this message translates to: - /// **'(optional)'** - String get optional; - - /// No description provided for @or. - /// - /// In en, this message translates to: - /// **'or'** - String get or; - - /// No description provided for @organizationProfile. - /// - /// In en, this message translates to: - /// **'Organization profile'** - String get organizationProfile; - - /// No description provided for @organizations. - /// - /// In en, this message translates to: - /// **'Organizations'** - String get organizations; - - /// No description provided for @passkey. - /// - /// In en, this message translates to: - /// **'passkey'** - String get passkey; - - /// No description provided for @password. - /// - /// In en, this message translates to: - /// **'Password'** - String get password; - - /// No description provided for @passwordAndPasswordConfirmationMustMatch. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordAndPasswordConfirmationMustMatch; - - /// No description provided for @passwordConfirmation. - /// - /// In en, this message translates to: - /// **'confirm password'** - String get passwordConfirmation; - - /// No description provided for @passwordMatchError. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordMatchError; - - /// No description provided for @passwordMustBeSupplied. - /// - /// In en, this message translates to: - /// **'A password must be supplied'** - String get passwordMustBeSupplied; - - /// No description provided for @passwordRequires. - /// - /// In en, this message translates to: - /// **'Password requires:'** - String get passwordRequires; - - /// No description provided for @pending. - /// - /// In en, this message translates to: - /// **'pending'** - String get pending; - - /// No description provided for @personalAccount. - /// - /// In en, this message translates to: - /// **'Personal account'** - String get personalAccount; - - /// No description provided for @phoneNumber. - /// - /// In en, this message translates to: - /// **'phone number'** - String get phoneNumber; - - /// No description provided for @phoneNumberConcise. - /// - /// In en, this message translates to: - /// **'phone'** - String get phoneNumberConcise; - - /// No description provided for @pleaseChooseAnAccountToConnect. - /// - /// In en, this message translates to: - /// **'Please choose an account to connect'** - String get pleaseChooseAnAccountToConnect; - - /// No description provided for @pleaseEnterYourIdentifier. - /// - /// In en, this message translates to: - /// **'Please enter your identifier'** - String get pleaseEnterYourIdentifier; - - /// No description provided for @primary. - /// - /// In en, this message translates to: - /// **'PRIMARY'** - String get primary; - - /// No description provided for @privacyPolicy. - /// - /// In en, this message translates to: - /// **'Privacy Policy'** - String get privacyPolicy; - - /// No description provided for @problemsConnecting. - /// - /// In en, this message translates to: - /// **'We are having problems connecting'** - String get problemsConnecting; - - /// No description provided for @profile. - /// - /// In en, this message translates to: - /// **'Profile'** - String get profile; - - /// No description provided for @profileDetails. - /// - /// In en, this message translates to: - /// **'Profile details'** - String get profileDetails; - - /// No description provided for @recommendSize. - /// - /// In en, this message translates to: - /// **'Recommend size 1:1, up to 5MB.'** - String get recommendSize; - - /// No description provided for @requiredField. - /// - /// In en, this message translates to: - /// **'(required)'** - String get requiredField; - - /// No description provided for @resend. - /// - /// In en, this message translates to: - /// **'Resend'** - String get resend; - - /// No description provided for @resetFailed. - /// - /// In en, this message translates to: - /// **'That password reset attempt failed. A new code has been sent.'** - String get resetFailed; - - /// No description provided for @resetPassword. - /// - /// In en, this message translates to: - /// **'Reset password and sign in'** - String get resetPassword; - - /// No description provided for @selectAccount. - /// - /// In en, this message translates to: - /// **'Select the account with which you wish to continue'** - String get selectAccount; - - /// No description provided for @sendMeTheCode. - /// - /// In en, this message translates to: - /// **'Send me the reset code'** - String get sendMeTheCode; - - /// No description provided for @signIn. - /// - /// In en, this message translates to: - /// **'Sign in'** - String get signIn; - - /// No description provided for @signInByClickingALinkSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by clicking a link sent to you by email'** - String get signInByClickingALinkSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by email'** - String get signInByEnteringACodeSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by text message'** - String get signInByEnteringACodeSentToYouByTextMessage; - - /// No description provided for @signInError. - /// - /// In en, this message translates to: - /// **'Unsupported sign in attempt: {arg}'** - String signInError(String arg); - - /// No description provided for @signInTo. - /// - /// In en, this message translates to: - /// **'Sign in to {name}'** - String signInTo(String name); - - /// No description provided for @signOut. - /// - /// In en, this message translates to: - /// **'Sign out'** - String get signOut; - - /// No description provided for @signOutIdentifier. - /// - /// In en, this message translates to: - /// **'Sign out {identifier}'** - String signOutIdentifier(String identifier); - - /// No description provided for @signOutOfAllAccounts. - /// - /// In en, this message translates to: - /// **'Sign out of all accounts'** - String get signOutOfAllAccounts; - - /// No description provided for @signUp. - /// - /// In en, this message translates to: - /// **'Sign up'** - String get signUp; - - /// No description provided for @signUpTo. - /// - /// In en, this message translates to: - /// **'Sign up to {name}'** - String signUpTo(String name); - - /// No description provided for @slugUrl. - /// - /// In en, this message translates to: - /// **'Slug URL'** - String get slugUrl; - - /// No description provided for @switchTo. - /// - /// In en, this message translates to: - /// **'Switch to'** - String get switchTo; - - /// No description provided for @termsAndConditions. - /// - /// In en, this message translates to: - /// **'Terms & Conditions'** - String get termsAndConditions; - - /// No description provided for @transferable. - /// - /// In en, this message translates to: - /// **'transferable'** - String get transferable; - - /// No description provided for @typeTypeInvalid. - /// - /// In en, this message translates to: - /// **'Type \'{type}\' is invalid'** - String typeTypeInvalid(String type); - - /// No description provided for @unsupportedPasswordResetStrategy. - /// - /// In en, this message translates to: - /// **'Unsupported password reset strategy: {arg}'** - String unsupportedPasswordResetStrategy(String arg); - - /// No description provided for @unverified. - /// - /// In en, this message translates to: - /// **'unverified'** - String get unverified; - - /// No description provided for @username. - /// - /// In en, this message translates to: - /// **'username'** - String get username; - - /// No description provided for @verificationEmailAddress. - /// - /// In en, this message translates to: - /// **'Email address verification'** - String get verificationEmailAddress; - - /// No description provided for @verificationPhoneNumber. - /// - /// In en, this message translates to: - /// **'Phone number verification'** - String get verificationPhoneNumber; - - /// No description provided for @verified. - /// - /// In en, this message translates to: - /// **'verified'** - String get verified; - - /// No description provided for @verifiedDomains. - /// - /// In en, this message translates to: - /// **'Verified domains'** - String get verifiedDomains; - - /// No description provided for @verifyYourEmailAddress. - /// - /// In en, this message translates to: - /// **'Verify your email address'** - String get verifyYourEmailAddress; - - /// No description provided for @verifyYourPhoneNumber. - /// - /// In en, this message translates to: - /// **'Verify your phone number'** - String get verifyYourPhoneNumber; - - /// No description provided for @viaAutomaticInvitation. - /// - /// In en, this message translates to: - /// **'via automatic invitation'** - String get viaAutomaticInvitation; - - /// No description provided for @viaAutomaticSuggestion. - /// - /// In en, this message translates to: - /// **'via automatic suggestion'** - String get viaAutomaticSuggestion; - - /// No description provided for @viaManualInvitation. - /// - /// In en, this message translates to: - /// **'via manual invitation'** - String get viaManualInvitation; - - /// No description provided for @web3Wallet. - /// - /// In en, this message translates to: - /// **'web3 wallet'** - String get web3Wallet; - - /// No description provided for @welcomeBackPleaseSignInToContinue. - /// - /// In en, this message translates to: - /// **'Welcome back! Please sign in to continue'** - String get welcomeBackPleaseSignInToContinue; - - /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. - /// - /// In en, this message translates to: - /// **'Welcome! Please fill in the details to get started'** - String get welcomePleaseFillInTheDetailsToGetStarted; - - /// No description provided for @youNeedToAdd. - /// - /// In en, this message translates to: - /// **'You need to add:'** - String get youNeedToAdd; -} - -class _ClerkSdkLocalizationsDelegate - extends LocalizationsDelegate { - const _ClerkSdkLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture( - lookupClerkSdkLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => - ['en'].contains(locale.languageCode); - - @override - bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; -} - -ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'en': - return ClerkSdkLocalizationsEn(); - } - - throw FlutterError( - 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); -} +// ignore_for_file: public_member_api_docs, use_super_parameters +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'clerk_sdk_localizations_en.dart'; + +// ignore_for_file: type=lint + +/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations +/// returned by `ClerkSdkLocalizations.of(context)`. +/// +/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'generated/clerk_sdk_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, +/// supportedLocales: ClerkSdkLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales +/// property. +abstract class ClerkSdkLocalizations { + ClerkSdkLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static ClerkSdkLocalizations? of(BuildContext context) { + return Localizations.of( + context, ClerkSdkLocalizations); + } + + static const LocalizationsDelegate delegate = + _ClerkSdkLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [Locale('en')]; + + /// No description provided for @aLengthOfBetweenMINAndMAX. + /// + /// In en, this message translates to: + /// **'a length of between {min} and {max}'** + String aLengthOfBetweenMINAndMAX(int min, int max); + + /// No description provided for @aLengthOfMINOrGreater. + /// + /// In en, this message translates to: + /// **'a length of {min} or greater'** + String aLengthOfMINOrGreater(int min); + + /// No description provided for @aLowercaseLetter. + /// + /// In en, this message translates to: + /// **'a LOWERCASE letter'** + String get aLowercaseLetter; + + /// No description provided for @aNumber. + /// + /// In en, this message translates to: + /// **'a NUMBER'** + String get aNumber; + + /// No description provided for @aSpecialCharacter. + /// + /// In en, this message translates to: + /// **'a SPECIAL CHARACTER ({chars})'** + String aSpecialCharacter(String chars); + + /// No description provided for @abandoned. + /// + /// In en, this message translates to: + /// **'abandoned'** + String get abandoned; + + /// No description provided for @acceptTerms. + /// + /// In en, this message translates to: + /// **'I accept the Terms & Conditions and Privacy Policy'** + String get acceptTerms; + + /// No description provided for @actionNotTimely. + /// + /// In en, this message translates to: + /// **'Awaited user action not completed in required timeframe'** + String get actionNotTimely; + + /// No description provided for @active. + /// + /// In en, this message translates to: + /// **'active'** + String get active; + + /// No description provided for @addAccount. + /// + /// In en, this message translates to: + /// **'Add account'** + String get addAccount; + + /// No description provided for @addDomain. + /// + /// In en, this message translates to: + /// **'Add domain'** + String get addDomain; + + /// No description provided for @addEmailAddress. + /// + /// In en, this message translates to: + /// **'Add email address'** + String get addEmailAddress; + + /// No description provided for @addPhoneNumber. + /// + /// In en, this message translates to: + /// **'Add phone number'** + String get addPhoneNumber; + + /// No description provided for @alreadyHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Already have an account?'** + String get alreadyHaveAnAccount; + + /// No description provided for @anUppercaseLetter. + /// + /// In en, this message translates to: + /// **'an UPPERCASE letter'** + String get anUppercaseLetter; + + /// No description provided for @and. + /// + /// In en, this message translates to: + /// **'and'** + String get and; + + /// No description provided for @areYouSure. + /// + /// In en, this message translates to: + /// **'Are you sure?'** + String get areYouSure; + + /// No description provided for @authenticatorApp. + /// + /// In en, this message translates to: + /// **'authenticator app'** + String get authenticatorApp; + + /// No description provided for @automaticInvitation. + /// + /// In en, this message translates to: + /// **'Automatic invitation'** + String get automaticInvitation; + + /// No description provided for @automaticSuggestion. + /// + /// In en, this message translates to: + /// **'Automatic suggestion'** + String get automaticSuggestion; + + /// No description provided for @backupCode. + /// + /// In en, this message translates to: + /// **'backup code'** + String get backupCode; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @cannotDeleteSelf. + /// + /// In en, this message translates to: + /// **'You are not authorized to delete your user'** + String get cannotDeleteSelf; + + /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. + /// + /// In en, this message translates to: + /// **'Click on the link that‘s been sent to {identifier} and then check back here'** + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); + + /// No description provided for @complete. + /// + /// In en, this message translates to: + /// **'complete'** + String get complete; + + /// No description provided for @connectAccount. + /// + /// In en, this message translates to: + /// **'Connect account'** + String get connectAccount; + + /// No description provided for @connectedAccounts. + /// + /// In en, this message translates to: + /// **'Connected accounts'** + String get connectedAccounts; + + /// No description provided for @cont. + /// + /// In en, this message translates to: + /// **'Continue'** + String get cont; + + /// No description provided for @createOrganization. + /// + /// In en, this message translates to: + /// **'Create organization'** + String get createOrganization; + + /// No description provided for @didntReceiveCode. + /// + /// In en, this message translates to: + /// **'Didn\'t receive the code?'** + String get didntReceiveCode; + + /// No description provided for @domainName. + /// + /// In en, this message translates to: + /// **'Domain name'** + String get domainName; + + /// No description provided for @dontHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Don’t have an account?'** + String get dontHaveAnAccount; + + /// No description provided for @edit. + /// + /// In en, this message translates to: + /// **'edit'** + String get edit; + + /// No description provided for @emailAddress. + /// + /// In en, this message translates to: + /// **'email address'** + String get emailAddress; + + /// No description provided for @emailAddressConcise. + /// + /// In en, this message translates to: + /// **'email'** + String get emailAddressConcise; + + /// No description provided for @enrollment. + /// + /// In en, this message translates to: + /// **'Enrollment'** + String get enrollment; + + /// No description provided for @enrollmentMode. + /// + /// In en, this message translates to: + /// **'Enrollment mode:'** + String get enrollmentMode; + + /// No description provided for @enterCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter code sent to {identifier}'** + String enterCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter the code sent to {identifier}'** + String enterTheCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentToYou. + /// + /// In en, this message translates to: + /// **'Enter the code sent to you'** + String get enterTheCodeSentToYou; + + /// No description provided for @expired. + /// + /// In en, this message translates to: + /// **'expired'** + String get expired; + + /// No description provided for @failed. + /// + /// In en, this message translates to: + /// **'failed'** + String get failed; + + /// No description provided for @firstName. + /// + /// In en, this message translates to: + /// **'first name'** + String get firstName; + + /// No description provided for @forgottenPassword. + /// + /// In en, this message translates to: + /// **'Forgotten password?'** + String get forgottenPassword; + + /// No description provided for @generalDetails. + /// + /// In en, this message translates to: + /// **'General details'** + String get generalDetails; + + /// No description provided for @invalidEmailAddress. + /// + /// In en, this message translates to: + /// **'Invalid email address: {address}'** + String invalidEmailAddress(String address); + + /// No description provided for @invalidPhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid phone number: {number}'** + String invalidPhoneNumber(String number); + + /// No description provided for @join. + /// + /// In en, this message translates to: + /// **'JOIN'** + String get join; + + /// No description provided for @jwtPoorlyFormatted. + /// + /// In en, this message translates to: + /// **'JWT poorly formatted: {arg}'** + String jwtPoorlyFormatted(String arg); + + /// No description provided for @lastName. + /// + /// In en, this message translates to: + /// **'last name'** + String get lastName; + + /// No description provided for @leave. + /// + /// In en, this message translates to: + /// **'Leave'** + String get leave; + + /// No description provided for @leaveOrg. + /// + /// In en, this message translates to: + /// **'Leave {organization}'** + String leaveOrg(String organization); + + /// No description provided for @leaveOrganization. + /// + /// In en, this message translates to: + /// **'Leave organization'** + String get leaveOrganization; + + /// No description provided for @loading. + /// + /// In en, this message translates to: + /// **'Loading…'** + String get loading; + + /// No description provided for @logo. + /// + /// In en, this message translates to: + /// **'Logo'** + String get logo; + + /// No description provided for @manualInvitation. + /// + /// In en, this message translates to: + /// **'Manual invitation'** + String get manualInvitation; + + /// No description provided for @missingRequirements. + /// + /// In en, this message translates to: + /// **'missing requirements'** + String get missingRequirements; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @needsFirstFactor. + /// + /// In en, this message translates to: + /// **'needs first factor'** + String get needsFirstFactor; + + /// No description provided for @needsIdentifier. + /// + /// In en, this message translates to: + /// **'needs identifier'** + String get needsIdentifier; + + /// No description provided for @needsSecondFactor. + /// + /// In en, this message translates to: + /// **'needs second factor'** + String get needsSecondFactor; + + /// No description provided for @newPassword. + /// + /// In en, this message translates to: + /// **'New password'** + String get newPassword; + + /// No description provided for @newPasswordConfirmation. + /// + /// In en, this message translates to: + /// **'Confirm new password'** + String get newPasswordConfirmation; + + /// No description provided for @noAssociatedCodeRetrievalMethod. + /// + /// In en, this message translates to: + /// **'No code retrieval method associated with {arg}'** + String noAssociatedCodeRetrievalMethod(String arg); + + /// No description provided for @noAssociatedStrategy. + /// + /// In en, this message translates to: + /// **'No strategy associated with {arg}'** + String noAssociatedStrategy(String arg); + + /// No description provided for @noSessionFoundForUser. + /// + /// In en, this message translates to: + /// **'No session found for {arg}'** + String noSessionFoundForUser(String arg); + + /// No description provided for @noSessionTokenRetrieved. + /// + /// In en, this message translates to: + /// **'No session token retrieved'** + String get noSessionTokenRetrieved; + + /// No description provided for @noStageForStatus. + /// + /// In en, this message translates to: + /// **'No stage for {arg}'** + String noStageForStatus(String arg); + + /// No description provided for @noSuchFirstFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for first factor'** + String noSuchFirstFactorStrategy(String arg); + + /// No description provided for @noSuchSecondFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for second factor'** + String noSuchSecondFactorStrategy(String arg); + + /// No description provided for @noTranslationFor. + /// + /// In en, this message translates to: + /// **'No translation for {name}'** + String noTranslationFor(String name); + + /// No description provided for @ok. + /// + /// In en, this message translates to: + /// **'OK'** + String get ok; + + /// No description provided for @optional. + /// + /// In en, this message translates to: + /// **'(optional)'** + String get optional; + + /// No description provided for @or. + /// + /// In en, this message translates to: + /// **'or'** + String get or; + + /// No description provided for @organizationProfile. + /// + /// In en, this message translates to: + /// **'Organization profile'** + String get organizationProfile; + + /// No description provided for @organizations. + /// + /// In en, this message translates to: + /// **'Organizations'** + String get organizations; + + /// No description provided for @passkey. + /// + /// In en, this message translates to: + /// **'passkey'** + String get passkey; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @passwordAndPasswordConfirmationMustMatch. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordAndPasswordConfirmationMustMatch; + + /// No description provided for @passwordConfirmation. + /// + /// In en, this message translates to: + /// **'confirm password'** + String get passwordConfirmation; + + /// No description provided for @passwordMatchError. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordMatchError; + + /// No description provided for @passwordMustBeSupplied. + /// + /// In en, this message translates to: + /// **'A password must be supplied'** + String get passwordMustBeSupplied; + + /// No description provided for @passwordRequires. + /// + /// In en, this message translates to: + /// **'Password requires:'** + String get passwordRequires; + + /// No description provided for @pending. + /// + /// In en, this message translates to: + /// **'pending'** + String get pending; + + /// No description provided for @personalAccount. + /// + /// In en, this message translates to: + /// **'Personal account'** + String get personalAccount; + + /// No description provided for @phoneNumber. + /// + /// In en, this message translates to: + /// **'phone number'** + String get phoneNumber; + + /// No description provided for @phoneNumberConcise. + /// + /// In en, this message translates to: + /// **'phone'** + String get phoneNumberConcise; + + /// No description provided for @pleaseChooseAnAccountToConnect. + /// + /// In en, this message translates to: + /// **'Please choose an account to connect'** + String get pleaseChooseAnAccountToConnect; + + /// No description provided for @pleaseEnterYourIdentifier. + /// + /// In en, this message translates to: + /// **'Please enter your identifier'** + String get pleaseEnterYourIdentifier; + + /// No description provided for @primary. + /// + /// In en, this message translates to: + /// **'PRIMARY'** + String get primary; + + /// No description provided for @privacyPolicy. + /// + /// In en, this message translates to: + /// **'Privacy Policy'** + String get privacyPolicy; + + /// No description provided for @problemsConnecting. + /// + /// In en, this message translates to: + /// **'We are having problems connecting'** + String get problemsConnecting; + + /// No description provided for @profile. + /// + /// In en, this message translates to: + /// **'Profile'** + String get profile; + + /// No description provided for @profileDetails. + /// + /// In en, this message translates to: + /// **'Profile details'** + String get profileDetails; + + /// No description provided for @recommendSize. + /// + /// In en, this message translates to: + /// **'Recommend size 1:1, up to 5MB.'** + String get recommendSize; + + /// No description provided for @requiredField. + /// + /// In en, this message translates to: + /// **'(required)'** + String get requiredField; + + /// No description provided for @resend. + /// + /// In en, this message translates to: + /// **'Resend'** + String get resend; + + /// No description provided for @resetFailed. + /// + /// In en, this message translates to: + /// **'That password reset attempt failed. A new code has been sent.'** + String get resetFailed; + + /// No description provided for @resetPassword. + /// + /// In en, this message translates to: + /// **'Reset password and sign in'** + String get resetPassword; + + /// No description provided for @selectAccount. + /// + /// In en, this message translates to: + /// **'Select the account with which you wish to continue'** + String get selectAccount; + + /// No description provided for @sendMeTheCode. + /// + /// In en, this message translates to: + /// **'Send me the reset code'** + String get sendMeTheCode; + + /// No description provided for @signIn. + /// + /// In en, this message translates to: + /// **'Sign in'** + String get signIn; + + /// No description provided for @signInByClickingALinkSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by clicking a link sent to you by email'** + String get signInByClickingALinkSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by email'** + String get signInByEnteringACodeSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by text message'** + String get signInByEnteringACodeSentToYouByTextMessage; + + /// No description provided for @signInError. + /// + /// In en, this message translates to: + /// **'Unsupported sign in attempt: {arg}'** + String signInError(String arg); + + /// No description provided for @signInTo. + /// + /// In en, this message translates to: + /// **'Sign in to {name}'** + String signInTo(String name); + + /// No description provided for @signOut. + /// + /// In en, this message translates to: + /// **'Sign out'** + String get signOut; + + /// No description provided for @signOutIdentifier. + /// + /// In en, this message translates to: + /// **'Sign out {identifier}'** + String signOutIdentifier(String identifier); + + /// No description provided for @signOutOfAllAccounts. + /// + /// In en, this message translates to: + /// **'Sign out of all accounts'** + String get signOutOfAllAccounts; + + /// No description provided for @signUp. + /// + /// In en, this message translates to: + /// **'Sign up'** + String get signUp; + + /// No description provided for @signUpTo. + /// + /// In en, this message translates to: + /// **'Sign up to {name}'** + String signUpTo(String name); + + /// No description provided for @slugUrl. + /// + /// In en, this message translates to: + /// **'Slug URL'** + String get slugUrl; + + /// No description provided for @switchTo. + /// + /// In en, this message translates to: + /// **'Switch to'** + String get switchTo; + + /// No description provided for @termsAndConditions. + /// + /// In en, this message translates to: + /// **'Terms & Conditions'** + String get termsAndConditions; + + /// No description provided for @transferable. + /// + /// In en, this message translates to: + /// **'transferable'** + String get transferable; + + /// No description provided for @typeTypeInvalid. + /// + /// In en, this message translates to: + /// **'Type \'{type}\' is invalid'** + String typeTypeInvalid(String type); + + /// No description provided for @unsupportedPasswordResetStrategy. + /// + /// In en, this message translates to: + /// **'Unsupported password reset strategy: {arg}'** + String unsupportedPasswordResetStrategy(String arg); + + /// No description provided for @unverified. + /// + /// In en, this message translates to: + /// **'unverified'** + String get unverified; + + /// No description provided for @username. + /// + /// In en, this message translates to: + /// **'username'** + String get username; + + /// No description provided for @verificationEmailAddress. + /// + /// In en, this message translates to: + /// **'Email address verification'** + String get verificationEmailAddress; + + /// No description provided for @verificationPhoneNumber. + /// + /// In en, this message translates to: + /// **'Phone number verification'** + String get verificationPhoneNumber; + + /// No description provided for @verified. + /// + /// In en, this message translates to: + /// **'verified'** + String get verified; + + /// No description provided for @verifiedDomains. + /// + /// In en, this message translates to: + /// **'Verified domains'** + String get verifiedDomains; + + /// No description provided for @verifyYourEmailAddress. + /// + /// In en, this message translates to: + /// **'Verify your email address'** + String get verifyYourEmailAddress; + + /// No description provided for @verifyYourPhoneNumber. + /// + /// In en, this message translates to: + /// **'Verify your phone number'** + String get verifyYourPhoneNumber; + + /// No description provided for @viaAutomaticInvitation. + /// + /// In en, this message translates to: + /// **'via automatic invitation'** + String get viaAutomaticInvitation; + + /// No description provided for @viaAutomaticSuggestion. + /// + /// In en, this message translates to: + /// **'via automatic suggestion'** + String get viaAutomaticSuggestion; + + /// No description provided for @viaManualInvitation. + /// + /// In en, this message translates to: + /// **'via manual invitation'** + String get viaManualInvitation; + + /// No description provided for @web3Wallet. + /// + /// In en, this message translates to: + /// **'web3 wallet'** + String get web3Wallet; + + /// No description provided for @welcomeBackPleaseSignInToContinue. + /// + /// In en, this message translates to: + /// **'Welcome back! Please sign in to continue'** + String get welcomeBackPleaseSignInToContinue; + + /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. + /// + /// In en, this message translates to: + /// **'Welcome! Please fill in the details to get started'** + String get welcomePleaseFillInTheDetailsToGetStarted; + + /// No description provided for @youNeedToAdd. + /// + /// In en, this message translates to: + /// **'You need to add:'** + String get youNeedToAdd; +} + +class _ClerkSdkLocalizationsDelegate + extends LocalizationsDelegate { + const _ClerkSdkLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture( + lookupClerkSdkLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => + ['en'].contains(locale.languageCode); + + @override + bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; +} + +ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': + return ClerkSdkLocalizationsEn(); + } + + throw FlutterError( + 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); +} diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart index f9d84d1a..ed3de42d 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart @@ -1,465 +1,467 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters - -import 'clerk_sdk_localizations.dart'; - -/// The translations for English (`en`). -class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { - ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String aLengthOfBetweenMINAndMAX(int min, int max) { - return 'a length of between $min and $max'; - } - - @override - String aLengthOfMINOrGreater(int min) { - return 'a length of $min or greater'; - } - - @override - String get aLowercaseLetter => 'a LOWERCASE letter'; - - @override - String get aNumber => 'a NUMBER'; - - @override - String aSpecialCharacter(String chars) { - return 'a SPECIAL CHARACTER ($chars)'; - } - - @override - String get abandoned => 'abandoned'; - - @override - String get acceptTerms => - 'I accept the Terms & Conditions and Privacy Policy'; - - @override - String get actionNotTimely => - 'Awaited user action not completed in required timeframe'; - - @override - String get active => 'active'; - - @override - String get addAccount => 'Add account'; - - @override - String get addDomain => 'Add domain'; - - @override - String get addEmailAddress => 'Add email address'; - - @override - String get addPhoneNumber => 'Add phone number'; - - @override - String get alreadyHaveAnAccount => 'Already have an account?'; - - @override - String get anUppercaseLetter => 'an UPPERCASE letter'; - - @override - String get and => 'and'; - - @override - String get areYouSure => 'Are you sure?'; - - @override - String get authenticatorApp => 'authenticator app'; - - @override - String get automaticInvitation => 'Automatic invitation'; - - @override - String get automaticSuggestion => 'Automatic suggestion'; - - @override - String get backupCode => 'backup code'; - - @override - String get cancel => 'Cancel'; - - @override - String get cannotDeleteSelf => 'You are not authorized to delete your user'; - - @override - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { - return 'Click on the link that‘s been sent to $identifier and then check back here'; - } - - @override - String get complete => 'complete'; - - @override - String get connectAccount => 'Connect account'; - - @override - String get connectedAccounts => 'Connected accounts'; - - @override - String get cont => 'Continue'; - - @override - String get createOrganization => 'Create organization'; - - @override - String get didntReceiveCode => 'Didn\'t receive the code?'; - - @override - String get domainName => 'Domain name'; - - @override - String get dontHaveAnAccount => 'Don’t have an account?'; - - @override - String get edit => 'edit'; - - @override - String get emailAddress => 'email address'; - - @override - String get emailAddressConcise => 'email'; - - @override - String get enrollment => 'Enrollment'; - - @override - String get enrollmentMode => 'Enrollment mode:'; - - @override - String enterCodeSentTo(String identifier) { - return 'Enter code sent to $identifier'; - } - - @override - String enterTheCodeSentTo(String identifier) { - return 'Enter the code sent to $identifier'; - } - - @override - String get enterTheCodeSentToYou => 'Enter the code sent to you'; - - @override - String get expired => 'expired'; - - @override - String get failed => 'failed'; - - @override - String get firstName => 'first name'; - - @override - String get forgottenPassword => 'Forgotten password?'; - - @override - String get generalDetails => 'General details'; - - @override - String invalidEmailAddress(String address) { - return 'Invalid email address: $address'; - } - - @override - String invalidPhoneNumber(String number) { - return 'Invalid phone number: $number'; - } - - @override - String get join => 'JOIN'; - - @override - String jwtPoorlyFormatted(String arg) { - return 'JWT poorly formatted: $arg'; - } - - @override - String get lastName => 'last name'; - - @override - String get leave => 'Leave'; - - @override - String leaveOrg(String organization) { - return 'Leave $organization'; - } - - @override - String get leaveOrganization => 'Leave organization'; - - @override - String get loading => 'Loading…'; - - @override - String get logo => 'Logo'; - - @override - String get manualInvitation => 'Manual invitation'; - - @override - String get missingRequirements => 'missing requirements'; - - @override - String get name => 'Name'; - - @override - String get needsFirstFactor => 'needs first factor'; - - @override - String get needsIdentifier => 'needs identifier'; - - @override - String get needsSecondFactor => 'needs second factor'; - - @override - String get newPassword => 'New password'; - - @override - String get newPasswordConfirmation => 'Confirm new password'; - - @override - String noAssociatedCodeRetrievalMethod(String arg) { - return 'No code retrieval method associated with $arg'; - } - - @override - String noAssociatedStrategy(String arg) { - return 'No strategy associated with $arg'; - } - - @override - String noSessionFoundForUser(String arg) { - return 'No session found for $arg'; - } - - @override - String get noSessionTokenRetrieved => 'No session token retrieved'; - - @override - String noStageForStatus(String arg) { - return 'No stage for $arg'; - } - - @override - String noSuchFirstFactorStrategy(String arg) { - return 'Strategy $arg not supported for first factor'; - } - - @override - String noSuchSecondFactorStrategy(String arg) { - return 'Strategy $arg not supported for second factor'; - } - - @override - String noTranslationFor(String name) { - return 'No translation for $name'; - } - - @override - String get ok => 'OK'; - - @override - String get optional => '(optional)'; - - @override - String get or => 'or'; - - @override - String get organizationProfile => 'Organization profile'; - - @override - String get organizations => 'Organizations'; - - @override - String get passkey => 'passkey'; - - @override - String get password => 'Password'; - - @override - String get passwordAndPasswordConfirmationMustMatch => - 'Password and password confirmation must match'; - - @override - String get passwordConfirmation => 'confirm password'; - - @override - String get passwordMatchError => - 'Password and password confirmation must match'; - - @override - String get passwordMustBeSupplied => 'A password must be supplied'; - - @override - String get passwordRequires => 'Password requires:'; - - @override - String get pending => 'pending'; - - @override - String get personalAccount => 'Personal account'; - - @override - String get phoneNumber => 'phone number'; - - @override - String get phoneNumberConcise => 'phone'; - - @override - String get pleaseChooseAnAccountToConnect => - 'Please choose an account to connect'; - - @override - String get pleaseEnterYourIdentifier => 'Please enter your identifier'; - - @override - String get primary => 'PRIMARY'; - - @override - String get privacyPolicy => 'Privacy Policy'; - - @override - String get problemsConnecting => 'We are having problems connecting'; - - @override - String get profile => 'Profile'; - - @override - String get profileDetails => 'Profile details'; - - @override - String get recommendSize => 'Recommend size 1:1, up to 5MB.'; - - @override - String get requiredField => '(required)'; - - @override - String get resend => 'Resend'; - - @override - String get resetFailed => - 'That password reset attempt failed. A new code has been sent.'; - - @override - String get resetPassword => 'Reset password and sign in'; - - @override - String get selectAccount => - 'Select the account with which you wish to continue'; - - @override - String get sendMeTheCode => 'Send me the reset code'; - - @override - String get signIn => 'Sign in'; - - @override - String get signInByClickingALinkSentToYouByEmail => - 'Sign in by clicking a link sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByEmail => - 'Sign in by entering a code sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByTextMessage => - 'Sign in by entering a code sent to you by text message'; - - @override - String signInError(String arg) { - return 'Unsupported sign in attempt: $arg'; - } - - @override - String signInTo(String name) { - return 'Sign in to $name'; - } - - @override - String get signOut => 'Sign out'; - - @override - String signOutIdentifier(String identifier) { - return 'Sign out $identifier'; - } - - @override - String get signOutOfAllAccounts => 'Sign out of all accounts'; - - @override - String get signUp => 'Sign up'; - - @override - String signUpTo(String name) { - return 'Sign up to $name'; - } - - @override - String get slugUrl => 'Slug URL'; - - @override - String get switchTo => 'Switch to'; - - @override - String get termsAndConditions => 'Terms & Conditions'; - - @override - String get transferable => 'transferable'; - - @override - String typeTypeInvalid(String type) { - return 'Type \'$type\' is invalid'; - } - - @override - String unsupportedPasswordResetStrategy(String arg) { - return 'Unsupported password reset strategy: $arg'; - } - - @override - String get unverified => 'unverified'; - - @override - String get username => 'username'; - - @override - String get verificationEmailAddress => 'Email address verification'; - - @override - String get verificationPhoneNumber => 'Phone number verification'; - - @override - String get verified => 'verified'; - - @override - String get verifiedDomains => 'Verified domains'; - - @override - String get verifyYourEmailAddress => 'Verify your email address'; - - @override - String get verifyYourPhoneNumber => 'Verify your phone number'; - - @override - String get viaAutomaticInvitation => 'via automatic invitation'; - - @override - String get viaAutomaticSuggestion => 'via automatic suggestion'; - - @override - String get viaManualInvitation => 'via manual invitation'; - - @override - String get web3Wallet => 'web3 wallet'; - - @override - String get welcomeBackPleaseSignInToContinue => - 'Welcome back! Please sign in to continue'; - - @override - String get welcomePleaseFillInTheDetailsToGetStarted => - 'Welcome! Please fill in the details to get started'; - - @override - String get youNeedToAdd => 'You need to add:'; -} +// ignore_for_file: public_member_api_docs, use_super_parameters + +import 'clerk_sdk_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for English (`en`). +class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { + ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String aLengthOfBetweenMINAndMAX(int min, int max) { + return 'a length of between $min and $max'; + } + + @override + String aLengthOfMINOrGreater(int min) { + return 'a length of $min or greater'; + } + + @override + String get aLowercaseLetter => 'a LOWERCASE letter'; + + @override + String get aNumber => 'a NUMBER'; + + @override + String aSpecialCharacter(String chars) { + return 'a SPECIAL CHARACTER ($chars)'; + } + + @override + String get abandoned => 'abandoned'; + + @override + String get acceptTerms => + 'I accept the Terms & Conditions and Privacy Policy'; + + @override + String get actionNotTimely => + 'Awaited user action not completed in required timeframe'; + + @override + String get active => 'active'; + + @override + String get addAccount => 'Add account'; + + @override + String get addDomain => 'Add domain'; + + @override + String get addEmailAddress => 'Add email address'; + + @override + String get addPhoneNumber => 'Add phone number'; + + @override + String get alreadyHaveAnAccount => 'Already have an account?'; + + @override + String get anUppercaseLetter => 'an UPPERCASE letter'; + + @override + String get and => 'and'; + + @override + String get areYouSure => 'Are you sure?'; + + @override + String get authenticatorApp => 'authenticator app'; + + @override + String get automaticInvitation => 'Automatic invitation'; + + @override + String get automaticSuggestion => 'Automatic suggestion'; + + @override + String get backupCode => 'backup code'; + + @override + String get cancel => 'Cancel'; + + @override + String get cannotDeleteSelf => 'You are not authorized to delete your user'; + + @override + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { + return 'Click on the link that‘s been sent to $identifier and then check back here'; + } + + @override + String get complete => 'complete'; + + @override + String get connectAccount => 'Connect account'; + + @override + String get connectedAccounts => 'Connected accounts'; + + @override + String get cont => 'Continue'; + + @override + String get createOrganization => 'Create organization'; + + @override + String get didntReceiveCode => 'Didn\'t receive the code?'; + + @override + String get domainName => 'Domain name'; + + @override + String get dontHaveAnAccount => 'Don’t have an account?'; + + @override + String get edit => 'edit'; + + @override + String get emailAddress => 'email address'; + + @override + String get emailAddressConcise => 'email'; + + @override + String get enrollment => 'Enrollment'; + + @override + String get enrollmentMode => 'Enrollment mode:'; + + @override + String enterCodeSentTo(String identifier) { + return 'Enter code sent to $identifier'; + } + + @override + String enterTheCodeSentTo(String identifier) { + return 'Enter the code sent to $identifier'; + } + + @override + String get enterTheCodeSentToYou => 'Enter the code sent to you'; + + @override + String get expired => 'expired'; + + @override + String get failed => 'failed'; + + @override + String get firstName => 'first name'; + + @override + String get forgottenPassword => 'Forgotten password?'; + + @override + String get generalDetails => 'General details'; + + @override + String invalidEmailAddress(String address) { + return 'Invalid email address: $address'; + } + + @override + String invalidPhoneNumber(String number) { + return 'Invalid phone number: $number'; + } + + @override + String get join => 'JOIN'; + + @override + String jwtPoorlyFormatted(String arg) { + return 'JWT poorly formatted: $arg'; + } + + @override + String get lastName => 'last name'; + + @override + String get leave => 'Leave'; + + @override + String leaveOrg(String organization) { + return 'Leave $organization'; + } + + @override + String get leaveOrganization => 'Leave organization'; + + @override + String get loading => 'Loading…'; + + @override + String get logo => 'Logo'; + + @override + String get manualInvitation => 'Manual invitation'; + + @override + String get missingRequirements => 'missing requirements'; + + @override + String get name => 'Name'; + + @override + String get needsFirstFactor => 'needs first factor'; + + @override + String get needsIdentifier => 'needs identifier'; + + @override + String get needsSecondFactor => 'needs second factor'; + + @override + String get newPassword => 'New password'; + + @override + String get newPasswordConfirmation => 'Confirm new password'; + + @override + String noAssociatedCodeRetrievalMethod(String arg) { + return 'No code retrieval method associated with $arg'; + } + + @override + String noAssociatedStrategy(String arg) { + return 'No strategy associated with $arg'; + } + + @override + String noSessionFoundForUser(String arg) { + return 'No session found for $arg'; + } + + @override + String get noSessionTokenRetrieved => 'No session token retrieved'; + + @override + String noStageForStatus(String arg) { + return 'No stage for $arg'; + } + + @override + String noSuchFirstFactorStrategy(String arg) { + return 'Strategy $arg not supported for first factor'; + } + + @override + String noSuchSecondFactorStrategy(String arg) { + return 'Strategy $arg not supported for second factor'; + } + + @override + String noTranslationFor(String name) { + return 'No translation for $name'; + } + + @override + String get ok => 'OK'; + + @override + String get optional => '(optional)'; + + @override + String get or => 'or'; + + @override + String get organizationProfile => 'Organization profile'; + + @override + String get organizations => 'Organizations'; + + @override + String get passkey => 'passkey'; + + @override + String get password => 'Password'; + + @override + String get passwordAndPasswordConfirmationMustMatch => + 'Password and password confirmation must match'; + + @override + String get passwordConfirmation => 'confirm password'; + + @override + String get passwordMatchError => + 'Password and password confirmation must match'; + + @override + String get passwordMustBeSupplied => 'A password must be supplied'; + + @override + String get passwordRequires => 'Password requires:'; + + @override + String get pending => 'pending'; + + @override + String get personalAccount => 'Personal account'; + + @override + String get phoneNumber => 'phone number'; + + @override + String get phoneNumberConcise => 'phone'; + + @override + String get pleaseChooseAnAccountToConnect => + 'Please choose an account to connect'; + + @override + String get pleaseEnterYourIdentifier => 'Please enter your identifier'; + + @override + String get primary => 'PRIMARY'; + + @override + String get privacyPolicy => 'Privacy Policy'; + + @override + String get problemsConnecting => 'We are having problems connecting'; + + @override + String get profile => 'Profile'; + + @override + String get profileDetails => 'Profile details'; + + @override + String get recommendSize => 'Recommend size 1:1, up to 5MB.'; + + @override + String get requiredField => '(required)'; + + @override + String get resend => 'Resend'; + + @override + String get resetFailed => + 'That password reset attempt failed. A new code has been sent.'; + + @override + String get resetPassword => 'Reset password and sign in'; + + @override + String get selectAccount => + 'Select the account with which you wish to continue'; + + @override + String get sendMeTheCode => 'Send me the reset code'; + + @override + String get signIn => 'Sign in'; + + @override + String get signInByClickingALinkSentToYouByEmail => + 'Sign in by clicking a link sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByEmail => + 'Sign in by entering a code sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByTextMessage => + 'Sign in by entering a code sent to you by text message'; + + @override + String signInError(String arg) { + return 'Unsupported sign in attempt: $arg'; + } + + @override + String signInTo(String name) { + return 'Sign in to $name'; + } + + @override + String get signOut => 'Sign out'; + + @override + String signOutIdentifier(String identifier) { + return 'Sign out $identifier'; + } + + @override + String get signOutOfAllAccounts => 'Sign out of all accounts'; + + @override + String get signUp => 'Sign up'; + + @override + String signUpTo(String name) { + return 'Sign up to $name'; + } + + @override + String get slugUrl => 'Slug URL'; + + @override + String get switchTo => 'Switch to'; + + @override + String get termsAndConditions => 'Terms & Conditions'; + + @override + String get transferable => 'transferable'; + + @override + String typeTypeInvalid(String type) { + return 'Type \'$type\' is invalid'; + } + + @override + String unsupportedPasswordResetStrategy(String arg) { + return 'Unsupported password reset strategy: $arg'; + } + + @override + String get unverified => 'unverified'; + + @override + String get username => 'username'; + + @override + String get verificationEmailAddress => 'Email address verification'; + + @override + String get verificationPhoneNumber => 'Phone number verification'; + + @override + String get verified => 'verified'; + + @override + String get verifiedDomains => 'Verified domains'; + + @override + String get verifyYourEmailAddress => 'Verify your email address'; + + @override + String get verifyYourPhoneNumber => 'Verify your phone number'; + + @override + String get viaAutomaticInvitation => 'via automatic invitation'; + + @override + String get viaAutomaticSuggestion => 'via automatic suggestion'; + + @override + String get viaManualInvitation => 'via manual invitation'; + + @override + String get web3Wallet => 'web3 wallet'; + + @override + String get welcomeBackPleaseSignInToContinue => + 'Welcome back! Please sign in to continue'; + + @override + String get welcomePleaseFillInTheDetailsToGetStarted => + 'Welcome! Please fill in the details to get started'; + + @override + String get youNeedToAdd => 'You need to add:'; +} From 6be791c33dfe734d6be9d3945d1460725e20e6bd Mon Sep 17 00:00:00 2001 From: Simon Lightfoot Date: Mon, 18 Aug 2025 15:46:56 +0100 Subject: [PATCH 20/20] fix: line endings on generated content --- .../generated/clerk_sdk_localizations.dart | 1856 ++++++++--------- .../generated/clerk_sdk_localizations_en.dart | 934 ++++----- 2 files changed, 1395 insertions(+), 1395 deletions(-) diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart index e0c1a947..25b1882b 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations.dart @@ -1,928 +1,928 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'clerk_sdk_localizations_en.dart'; - -// ignore_for_file: type=lint - -/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations -/// returned by `ClerkSdkLocalizations.of(context)`. -/// -/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'generated/clerk_sdk_localizations.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, -/// supportedLocales: ClerkSdkLocalizations.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales -/// property. -abstract class ClerkSdkLocalizations { - ClerkSdkLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static ClerkSdkLocalizations? of(BuildContext context) { - return Localizations.of( - context, ClerkSdkLocalizations); - } - - static const LocalizationsDelegate delegate = - _ClerkSdkLocalizationsDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [Locale('en')]; - - /// No description provided for @aLengthOfBetweenMINAndMAX. - /// - /// In en, this message translates to: - /// **'a length of between {min} and {max}'** - String aLengthOfBetweenMINAndMAX(int min, int max); - - /// No description provided for @aLengthOfMINOrGreater. - /// - /// In en, this message translates to: - /// **'a length of {min} or greater'** - String aLengthOfMINOrGreater(int min); - - /// No description provided for @aLowercaseLetter. - /// - /// In en, this message translates to: - /// **'a LOWERCASE letter'** - String get aLowercaseLetter; - - /// No description provided for @aNumber. - /// - /// In en, this message translates to: - /// **'a NUMBER'** - String get aNumber; - - /// No description provided for @aSpecialCharacter. - /// - /// In en, this message translates to: - /// **'a SPECIAL CHARACTER ({chars})'** - String aSpecialCharacter(String chars); - - /// No description provided for @abandoned. - /// - /// In en, this message translates to: - /// **'abandoned'** - String get abandoned; - - /// No description provided for @acceptTerms. - /// - /// In en, this message translates to: - /// **'I accept the Terms & Conditions and Privacy Policy'** - String get acceptTerms; - - /// No description provided for @actionNotTimely. - /// - /// In en, this message translates to: - /// **'Awaited user action not completed in required timeframe'** - String get actionNotTimely; - - /// No description provided for @active. - /// - /// In en, this message translates to: - /// **'active'** - String get active; - - /// No description provided for @addAccount. - /// - /// In en, this message translates to: - /// **'Add account'** - String get addAccount; - - /// No description provided for @addDomain. - /// - /// In en, this message translates to: - /// **'Add domain'** - String get addDomain; - - /// No description provided for @addEmailAddress. - /// - /// In en, this message translates to: - /// **'Add email address'** - String get addEmailAddress; - - /// No description provided for @addPhoneNumber. - /// - /// In en, this message translates to: - /// **'Add phone number'** - String get addPhoneNumber; - - /// No description provided for @alreadyHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Already have an account?'** - String get alreadyHaveAnAccount; - - /// No description provided for @anUppercaseLetter. - /// - /// In en, this message translates to: - /// **'an UPPERCASE letter'** - String get anUppercaseLetter; - - /// No description provided for @and. - /// - /// In en, this message translates to: - /// **'and'** - String get and; - - /// No description provided for @areYouSure. - /// - /// In en, this message translates to: - /// **'Are you sure?'** - String get areYouSure; - - /// No description provided for @authenticatorApp. - /// - /// In en, this message translates to: - /// **'authenticator app'** - String get authenticatorApp; - - /// No description provided for @automaticInvitation. - /// - /// In en, this message translates to: - /// **'Automatic invitation'** - String get automaticInvitation; - - /// No description provided for @automaticSuggestion. - /// - /// In en, this message translates to: - /// **'Automatic suggestion'** - String get automaticSuggestion; - - /// No description provided for @backupCode. - /// - /// In en, this message translates to: - /// **'backup code'** - String get backupCode; - - /// No description provided for @cancel. - /// - /// In en, this message translates to: - /// **'Cancel'** - String get cancel; - - /// No description provided for @cannotDeleteSelf. - /// - /// In en, this message translates to: - /// **'You are not authorized to delete your user'** - String get cannotDeleteSelf; - - /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. - /// - /// In en, this message translates to: - /// **'Click on the link that‘s been sent to {identifier} and then check back here'** - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); - - /// No description provided for @complete. - /// - /// In en, this message translates to: - /// **'complete'** - String get complete; - - /// No description provided for @connectAccount. - /// - /// In en, this message translates to: - /// **'Connect account'** - String get connectAccount; - - /// No description provided for @connectedAccounts. - /// - /// In en, this message translates to: - /// **'Connected accounts'** - String get connectedAccounts; - - /// No description provided for @cont. - /// - /// In en, this message translates to: - /// **'Continue'** - String get cont; - - /// No description provided for @createOrganization. - /// - /// In en, this message translates to: - /// **'Create organization'** - String get createOrganization; - - /// No description provided for @didntReceiveCode. - /// - /// In en, this message translates to: - /// **'Didn\'t receive the code?'** - String get didntReceiveCode; - - /// No description provided for @domainName. - /// - /// In en, this message translates to: - /// **'Domain name'** - String get domainName; - - /// No description provided for @dontHaveAnAccount. - /// - /// In en, this message translates to: - /// **'Don’t have an account?'** - String get dontHaveAnAccount; - - /// No description provided for @edit. - /// - /// In en, this message translates to: - /// **'edit'** - String get edit; - - /// No description provided for @emailAddress. - /// - /// In en, this message translates to: - /// **'email address'** - String get emailAddress; - - /// No description provided for @emailAddressConcise. - /// - /// In en, this message translates to: - /// **'email'** - String get emailAddressConcise; - - /// No description provided for @enrollment. - /// - /// In en, this message translates to: - /// **'Enrollment'** - String get enrollment; - - /// No description provided for @enrollmentMode. - /// - /// In en, this message translates to: - /// **'Enrollment mode:'** - String get enrollmentMode; - - /// No description provided for @enterCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter code sent to {identifier}'** - String enterCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentTo. - /// - /// In en, this message translates to: - /// **'Enter the code sent to {identifier}'** - String enterTheCodeSentTo(String identifier); - - /// No description provided for @enterTheCodeSentToYou. - /// - /// In en, this message translates to: - /// **'Enter the code sent to you'** - String get enterTheCodeSentToYou; - - /// No description provided for @expired. - /// - /// In en, this message translates to: - /// **'expired'** - String get expired; - - /// No description provided for @failed. - /// - /// In en, this message translates to: - /// **'failed'** - String get failed; - - /// No description provided for @firstName. - /// - /// In en, this message translates to: - /// **'first name'** - String get firstName; - - /// No description provided for @forgottenPassword. - /// - /// In en, this message translates to: - /// **'Forgotten password?'** - String get forgottenPassword; - - /// No description provided for @generalDetails. - /// - /// In en, this message translates to: - /// **'General details'** - String get generalDetails; - - /// No description provided for @invalidEmailAddress. - /// - /// In en, this message translates to: - /// **'Invalid email address: {address}'** - String invalidEmailAddress(String address); - - /// No description provided for @invalidPhoneNumber. - /// - /// In en, this message translates to: - /// **'Invalid phone number: {number}'** - String invalidPhoneNumber(String number); - - /// No description provided for @join. - /// - /// In en, this message translates to: - /// **'JOIN'** - String get join; - - /// No description provided for @jwtPoorlyFormatted. - /// - /// In en, this message translates to: - /// **'JWT poorly formatted: {arg}'** - String jwtPoorlyFormatted(String arg); - - /// No description provided for @lastName. - /// - /// In en, this message translates to: - /// **'last name'** - String get lastName; - - /// No description provided for @leave. - /// - /// In en, this message translates to: - /// **'Leave'** - String get leave; - - /// No description provided for @leaveOrg. - /// - /// In en, this message translates to: - /// **'Leave {organization}'** - String leaveOrg(String organization); - - /// No description provided for @leaveOrganization. - /// - /// In en, this message translates to: - /// **'Leave organization'** - String get leaveOrganization; - - /// No description provided for @loading. - /// - /// In en, this message translates to: - /// **'Loading…'** - String get loading; - - /// No description provided for @logo. - /// - /// In en, this message translates to: - /// **'Logo'** - String get logo; - - /// No description provided for @manualInvitation. - /// - /// In en, this message translates to: - /// **'Manual invitation'** - String get manualInvitation; - - /// No description provided for @missingRequirements. - /// - /// In en, this message translates to: - /// **'missing requirements'** - String get missingRequirements; - - /// No description provided for @name. - /// - /// In en, this message translates to: - /// **'Name'** - String get name; - - /// No description provided for @needsFirstFactor. - /// - /// In en, this message translates to: - /// **'needs first factor'** - String get needsFirstFactor; - - /// No description provided for @needsIdentifier. - /// - /// In en, this message translates to: - /// **'needs identifier'** - String get needsIdentifier; - - /// No description provided for @needsSecondFactor. - /// - /// In en, this message translates to: - /// **'needs second factor'** - String get needsSecondFactor; - - /// No description provided for @newPassword. - /// - /// In en, this message translates to: - /// **'New password'** - String get newPassword; - - /// No description provided for @newPasswordConfirmation. - /// - /// In en, this message translates to: - /// **'Confirm new password'** - String get newPasswordConfirmation; - - /// No description provided for @noAssociatedCodeRetrievalMethod. - /// - /// In en, this message translates to: - /// **'No code retrieval method associated with {arg}'** - String noAssociatedCodeRetrievalMethod(String arg); - - /// No description provided for @noAssociatedStrategy. - /// - /// In en, this message translates to: - /// **'No strategy associated with {arg}'** - String noAssociatedStrategy(String arg); - - /// No description provided for @noSessionFoundForUser. - /// - /// In en, this message translates to: - /// **'No session found for {arg}'** - String noSessionFoundForUser(String arg); - - /// No description provided for @noSessionTokenRetrieved. - /// - /// In en, this message translates to: - /// **'No session token retrieved'** - String get noSessionTokenRetrieved; - - /// No description provided for @noStageForStatus. - /// - /// In en, this message translates to: - /// **'No stage for {arg}'** - String noStageForStatus(String arg); - - /// No description provided for @noSuchFirstFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for first factor'** - String noSuchFirstFactorStrategy(String arg); - - /// No description provided for @noSuchSecondFactorStrategy. - /// - /// In en, this message translates to: - /// **'Strategy {arg} not supported for second factor'** - String noSuchSecondFactorStrategy(String arg); - - /// No description provided for @noTranslationFor. - /// - /// In en, this message translates to: - /// **'No translation for {name}'** - String noTranslationFor(String name); - - /// No description provided for @ok. - /// - /// In en, this message translates to: - /// **'OK'** - String get ok; - - /// No description provided for @optional. - /// - /// In en, this message translates to: - /// **'(optional)'** - String get optional; - - /// No description provided for @or. - /// - /// In en, this message translates to: - /// **'or'** - String get or; - - /// No description provided for @organizationProfile. - /// - /// In en, this message translates to: - /// **'Organization profile'** - String get organizationProfile; - - /// No description provided for @organizations. - /// - /// In en, this message translates to: - /// **'Organizations'** - String get organizations; - - /// No description provided for @passkey. - /// - /// In en, this message translates to: - /// **'passkey'** - String get passkey; - - /// No description provided for @password. - /// - /// In en, this message translates to: - /// **'Password'** - String get password; - - /// No description provided for @passwordAndPasswordConfirmationMustMatch. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordAndPasswordConfirmationMustMatch; - - /// No description provided for @passwordConfirmation. - /// - /// In en, this message translates to: - /// **'confirm password'** - String get passwordConfirmation; - - /// No description provided for @passwordMatchError. - /// - /// In en, this message translates to: - /// **'Password and password confirmation must match'** - String get passwordMatchError; - - /// No description provided for @passwordMustBeSupplied. - /// - /// In en, this message translates to: - /// **'A password must be supplied'** - String get passwordMustBeSupplied; - - /// No description provided for @passwordRequires. - /// - /// In en, this message translates to: - /// **'Password requires:'** - String get passwordRequires; - - /// No description provided for @pending. - /// - /// In en, this message translates to: - /// **'pending'** - String get pending; - - /// No description provided for @personalAccount. - /// - /// In en, this message translates to: - /// **'Personal account'** - String get personalAccount; - - /// No description provided for @phoneNumber. - /// - /// In en, this message translates to: - /// **'phone number'** - String get phoneNumber; - - /// No description provided for @phoneNumberConcise. - /// - /// In en, this message translates to: - /// **'phone'** - String get phoneNumberConcise; - - /// No description provided for @pleaseChooseAnAccountToConnect. - /// - /// In en, this message translates to: - /// **'Please choose an account to connect'** - String get pleaseChooseAnAccountToConnect; - - /// No description provided for @pleaseEnterYourIdentifier. - /// - /// In en, this message translates to: - /// **'Please enter your identifier'** - String get pleaseEnterYourIdentifier; - - /// No description provided for @primary. - /// - /// In en, this message translates to: - /// **'PRIMARY'** - String get primary; - - /// No description provided for @privacyPolicy. - /// - /// In en, this message translates to: - /// **'Privacy Policy'** - String get privacyPolicy; - - /// No description provided for @problemsConnecting. - /// - /// In en, this message translates to: - /// **'We are having problems connecting'** - String get problemsConnecting; - - /// No description provided for @profile. - /// - /// In en, this message translates to: - /// **'Profile'** - String get profile; - - /// No description provided for @profileDetails. - /// - /// In en, this message translates to: - /// **'Profile details'** - String get profileDetails; - - /// No description provided for @recommendSize. - /// - /// In en, this message translates to: - /// **'Recommend size 1:1, up to 5MB.'** - String get recommendSize; - - /// No description provided for @requiredField. - /// - /// In en, this message translates to: - /// **'(required)'** - String get requiredField; - - /// No description provided for @resend. - /// - /// In en, this message translates to: - /// **'Resend'** - String get resend; - - /// No description provided for @resetFailed. - /// - /// In en, this message translates to: - /// **'That password reset attempt failed. A new code has been sent.'** - String get resetFailed; - - /// No description provided for @resetPassword. - /// - /// In en, this message translates to: - /// **'Reset password and sign in'** - String get resetPassword; - - /// No description provided for @selectAccount. - /// - /// In en, this message translates to: - /// **'Select the account with which you wish to continue'** - String get selectAccount; - - /// No description provided for @sendMeTheCode. - /// - /// In en, this message translates to: - /// **'Send me the reset code'** - String get sendMeTheCode; - - /// No description provided for @signIn. - /// - /// In en, this message translates to: - /// **'Sign in'** - String get signIn; - - /// No description provided for @signInByClickingALinkSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by clicking a link sent to you by email'** - String get signInByClickingALinkSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByEmail. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by email'** - String get signInByEnteringACodeSentToYouByEmail; - - /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. - /// - /// In en, this message translates to: - /// **'Sign in by entering a code sent to you by text message'** - String get signInByEnteringACodeSentToYouByTextMessage; - - /// No description provided for @signInError. - /// - /// In en, this message translates to: - /// **'Unsupported sign in attempt: {arg}'** - String signInError(String arg); - - /// No description provided for @signInTo. - /// - /// In en, this message translates to: - /// **'Sign in to {name}'** - String signInTo(String name); - - /// No description provided for @signOut. - /// - /// In en, this message translates to: - /// **'Sign out'** - String get signOut; - - /// No description provided for @signOutIdentifier. - /// - /// In en, this message translates to: - /// **'Sign out {identifier}'** - String signOutIdentifier(String identifier); - - /// No description provided for @signOutOfAllAccounts. - /// - /// In en, this message translates to: - /// **'Sign out of all accounts'** - String get signOutOfAllAccounts; - - /// No description provided for @signUp. - /// - /// In en, this message translates to: - /// **'Sign up'** - String get signUp; - - /// No description provided for @signUpTo. - /// - /// In en, this message translates to: - /// **'Sign up to {name}'** - String signUpTo(String name); - - /// No description provided for @slugUrl. - /// - /// In en, this message translates to: - /// **'Slug URL'** - String get slugUrl; - - /// No description provided for @switchTo. - /// - /// In en, this message translates to: - /// **'Switch to'** - String get switchTo; - - /// No description provided for @termsAndConditions. - /// - /// In en, this message translates to: - /// **'Terms & Conditions'** - String get termsAndConditions; - - /// No description provided for @transferable. - /// - /// In en, this message translates to: - /// **'transferable'** - String get transferable; - - /// No description provided for @typeTypeInvalid. - /// - /// In en, this message translates to: - /// **'Type \'{type}\' is invalid'** - String typeTypeInvalid(String type); - - /// No description provided for @unsupportedPasswordResetStrategy. - /// - /// In en, this message translates to: - /// **'Unsupported password reset strategy: {arg}'** - String unsupportedPasswordResetStrategy(String arg); - - /// No description provided for @unverified. - /// - /// In en, this message translates to: - /// **'unverified'** - String get unverified; - - /// No description provided for @username. - /// - /// In en, this message translates to: - /// **'username'** - String get username; - - /// No description provided for @verificationEmailAddress. - /// - /// In en, this message translates to: - /// **'Email address verification'** - String get verificationEmailAddress; - - /// No description provided for @verificationPhoneNumber. - /// - /// In en, this message translates to: - /// **'Phone number verification'** - String get verificationPhoneNumber; - - /// No description provided for @verified. - /// - /// In en, this message translates to: - /// **'verified'** - String get verified; - - /// No description provided for @verifiedDomains. - /// - /// In en, this message translates to: - /// **'Verified domains'** - String get verifiedDomains; - - /// No description provided for @verifyYourEmailAddress. - /// - /// In en, this message translates to: - /// **'Verify your email address'** - String get verifyYourEmailAddress; - - /// No description provided for @verifyYourPhoneNumber. - /// - /// In en, this message translates to: - /// **'Verify your phone number'** - String get verifyYourPhoneNumber; - - /// No description provided for @viaAutomaticInvitation. - /// - /// In en, this message translates to: - /// **'via automatic invitation'** - String get viaAutomaticInvitation; - - /// No description provided for @viaAutomaticSuggestion. - /// - /// In en, this message translates to: - /// **'via automatic suggestion'** - String get viaAutomaticSuggestion; - - /// No description provided for @viaManualInvitation. - /// - /// In en, this message translates to: - /// **'via manual invitation'** - String get viaManualInvitation; - - /// No description provided for @web3Wallet. - /// - /// In en, this message translates to: - /// **'web3 wallet'** - String get web3Wallet; - - /// No description provided for @welcomeBackPleaseSignInToContinue. - /// - /// In en, this message translates to: - /// **'Welcome back! Please sign in to continue'** - String get welcomeBackPleaseSignInToContinue; - - /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. - /// - /// In en, this message translates to: - /// **'Welcome! Please fill in the details to get started'** - String get welcomePleaseFillInTheDetailsToGetStarted; - - /// No description provided for @youNeedToAdd. - /// - /// In en, this message translates to: - /// **'You need to add:'** - String get youNeedToAdd; -} - -class _ClerkSdkLocalizationsDelegate - extends LocalizationsDelegate { - const _ClerkSdkLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture( - lookupClerkSdkLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => - ['en'].contains(locale.languageCode); - - @override - bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; -} - -ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'en': - return ClerkSdkLocalizationsEn(); - } - - throw FlutterError( - 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.'); -} +// ignore_for_file: public_member_api_docs, use_super_parameters +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:intl/intl.dart' as intl; + +import 'clerk_sdk_localizations_en.dart'; + +// ignore_for_file: type=lint + +/// Callers can lookup localized strings with an instance of ClerkSdkLocalizations +/// returned by `ClerkSdkLocalizations.of(context)`. +/// +/// Applications need to include `ClerkSdkLocalizations.delegate()` in their app's +/// `localizationDelegates` list, and the locales they support in the app's +/// `supportedLocales` list. For example: +/// +/// ```dart +/// import 'generated/clerk_sdk_localizations.dart'; +/// +/// return MaterialApp( +/// localizationsDelegates: ClerkSdkLocalizations.localizationsDelegates, +/// supportedLocales: ClerkSdkLocalizations.supportedLocales, +/// home: MyApplicationHome(), +/// ); +/// ``` +/// +/// ## Update pubspec.yaml +/// +/// Please make sure to update your pubspec.yaml to include the following +/// packages: +/// +/// ```yaml +/// dependencies: +/// # Internationalization support. +/// flutter_localizations: +/// sdk: flutter +/// intl: any # Use the pinned version from flutter_localizations +/// +/// # Rest of dependencies +/// ``` +/// +/// ## iOS Applications +/// +/// iOS applications define key application metadata, including supported +/// locales, in an Info.plist file that is built into the application bundle. +/// To configure the locales supported by your app, you’ll need to edit this +/// file. +/// +/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. +/// Then, in the Project Navigator, open the Info.plist file under the Runner +/// project’s Runner folder. +/// +/// Next, select the Information Property List item, select Add Item from the +/// Editor menu, then select Localizations from the pop-up menu. +/// +/// Select and expand the newly-created Localizations item then, for each +/// locale your application supports, add a new item and select the locale +/// you wish to add from the pop-up menu in the Value field. This list should +/// be consistent with the languages listed in the ClerkSdkLocalizations.supportedLocales +/// property. +abstract class ClerkSdkLocalizations { + ClerkSdkLocalizations(String locale) + : localeName = intl.Intl.canonicalizedLocale(locale.toString()); + + final String localeName; + + static ClerkSdkLocalizations? of(BuildContext context) { + return Localizations.of( + context, ClerkSdkLocalizations); + } + + static const LocalizationsDelegate delegate = + _ClerkSdkLocalizationsDelegate(); + + /// A list of this localizations delegate along with the default localizations + /// delegates. + /// + /// Returns a list of localizations delegates containing this delegate along with + /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, + /// and GlobalWidgetsLocalizations.delegate. + /// + /// Additional delegates can be added by appending to this list in + /// MaterialApp. This list does not have to be used at all if a custom list + /// of delegates is preferred or required. + static const List> localizationsDelegates = + >[ + delegate, + GlobalMaterialLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + ]; + + /// A list of this localizations delegate's supported locales. + static const List supportedLocales = [Locale('en')]; + + /// No description provided for @aLengthOfBetweenMINAndMAX. + /// + /// In en, this message translates to: + /// **'a length of between {min} and {max}'** + String aLengthOfBetweenMINAndMAX(int min, int max); + + /// No description provided for @aLengthOfMINOrGreater. + /// + /// In en, this message translates to: + /// **'a length of {min} or greater'** + String aLengthOfMINOrGreater(int min); + + /// No description provided for @aLowercaseLetter. + /// + /// In en, this message translates to: + /// **'a LOWERCASE letter'** + String get aLowercaseLetter; + + /// No description provided for @aNumber. + /// + /// In en, this message translates to: + /// **'a NUMBER'** + String get aNumber; + + /// No description provided for @aSpecialCharacter. + /// + /// In en, this message translates to: + /// **'a SPECIAL CHARACTER ({chars})'** + String aSpecialCharacter(String chars); + + /// No description provided for @abandoned. + /// + /// In en, this message translates to: + /// **'abandoned'** + String get abandoned; + + /// No description provided for @acceptTerms. + /// + /// In en, this message translates to: + /// **'I accept the Terms & Conditions and Privacy Policy'** + String get acceptTerms; + + /// No description provided for @actionNotTimely. + /// + /// In en, this message translates to: + /// **'Awaited user action not completed in required timeframe'** + String get actionNotTimely; + + /// No description provided for @active. + /// + /// In en, this message translates to: + /// **'active'** + String get active; + + /// No description provided for @addAccount. + /// + /// In en, this message translates to: + /// **'Add account'** + String get addAccount; + + /// No description provided for @addDomain. + /// + /// In en, this message translates to: + /// **'Add domain'** + String get addDomain; + + /// No description provided for @addEmailAddress. + /// + /// In en, this message translates to: + /// **'Add email address'** + String get addEmailAddress; + + /// No description provided for @addPhoneNumber. + /// + /// In en, this message translates to: + /// **'Add phone number'** + String get addPhoneNumber; + + /// No description provided for @alreadyHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Already have an account?'** + String get alreadyHaveAnAccount; + + /// No description provided for @anUppercaseLetter. + /// + /// In en, this message translates to: + /// **'an UPPERCASE letter'** + String get anUppercaseLetter; + + /// No description provided for @and. + /// + /// In en, this message translates to: + /// **'and'** + String get and; + + /// No description provided for @areYouSure. + /// + /// In en, this message translates to: + /// **'Are you sure?'** + String get areYouSure; + + /// No description provided for @authenticatorApp. + /// + /// In en, this message translates to: + /// **'authenticator app'** + String get authenticatorApp; + + /// No description provided for @automaticInvitation. + /// + /// In en, this message translates to: + /// **'Automatic invitation'** + String get automaticInvitation; + + /// No description provided for @automaticSuggestion. + /// + /// In en, this message translates to: + /// **'Automatic suggestion'** + String get automaticSuggestion; + + /// No description provided for @backupCode. + /// + /// In en, this message translates to: + /// **'backup code'** + String get backupCode; + + /// No description provided for @cancel. + /// + /// In en, this message translates to: + /// **'Cancel'** + String get cancel; + + /// No description provided for @cannotDeleteSelf. + /// + /// In en, this message translates to: + /// **'You are not authorized to delete your user'** + String get cannotDeleteSelf; + + /// No description provided for @clickOnTheLinkThatSBeenSentToAndThenCheckBackHere. + /// + /// In en, this message translates to: + /// **'Click on the link that‘s been sent to {identifier} and then check back here'** + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier); + + /// No description provided for @complete. + /// + /// In en, this message translates to: + /// **'complete'** + String get complete; + + /// No description provided for @connectAccount. + /// + /// In en, this message translates to: + /// **'Connect account'** + String get connectAccount; + + /// No description provided for @connectedAccounts. + /// + /// In en, this message translates to: + /// **'Connected accounts'** + String get connectedAccounts; + + /// No description provided for @cont. + /// + /// In en, this message translates to: + /// **'Continue'** + String get cont; + + /// No description provided for @createOrganization. + /// + /// In en, this message translates to: + /// **'Create organization'** + String get createOrganization; + + /// No description provided for @didntReceiveCode. + /// + /// In en, this message translates to: + /// **'Didn\'t receive the code?'** + String get didntReceiveCode; + + /// No description provided for @domainName. + /// + /// In en, this message translates to: + /// **'Domain name'** + String get domainName; + + /// No description provided for @dontHaveAnAccount. + /// + /// In en, this message translates to: + /// **'Don’t have an account?'** + String get dontHaveAnAccount; + + /// No description provided for @edit. + /// + /// In en, this message translates to: + /// **'edit'** + String get edit; + + /// No description provided for @emailAddress. + /// + /// In en, this message translates to: + /// **'email address'** + String get emailAddress; + + /// No description provided for @emailAddressConcise. + /// + /// In en, this message translates to: + /// **'email'** + String get emailAddressConcise; + + /// No description provided for @enrollment. + /// + /// In en, this message translates to: + /// **'Enrollment'** + String get enrollment; + + /// No description provided for @enrollmentMode. + /// + /// In en, this message translates to: + /// **'Enrollment mode:'** + String get enrollmentMode; + + /// No description provided for @enterCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter code sent to {identifier}'** + String enterCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentTo. + /// + /// In en, this message translates to: + /// **'Enter the code sent to {identifier}'** + String enterTheCodeSentTo(String identifier); + + /// No description provided for @enterTheCodeSentToYou. + /// + /// In en, this message translates to: + /// **'Enter the code sent to you'** + String get enterTheCodeSentToYou; + + /// No description provided for @expired. + /// + /// In en, this message translates to: + /// **'expired'** + String get expired; + + /// No description provided for @failed. + /// + /// In en, this message translates to: + /// **'failed'** + String get failed; + + /// No description provided for @firstName. + /// + /// In en, this message translates to: + /// **'first name'** + String get firstName; + + /// No description provided for @forgottenPassword. + /// + /// In en, this message translates to: + /// **'Forgotten password?'** + String get forgottenPassword; + + /// No description provided for @generalDetails. + /// + /// In en, this message translates to: + /// **'General details'** + String get generalDetails; + + /// No description provided for @invalidEmailAddress. + /// + /// In en, this message translates to: + /// **'Invalid email address: {address}'** + String invalidEmailAddress(String address); + + /// No description provided for @invalidPhoneNumber. + /// + /// In en, this message translates to: + /// **'Invalid phone number: {number}'** + String invalidPhoneNumber(String number); + + /// No description provided for @join. + /// + /// In en, this message translates to: + /// **'JOIN'** + String get join; + + /// No description provided for @jwtPoorlyFormatted. + /// + /// In en, this message translates to: + /// **'JWT poorly formatted: {arg}'** + String jwtPoorlyFormatted(String arg); + + /// No description provided for @lastName. + /// + /// In en, this message translates to: + /// **'last name'** + String get lastName; + + /// No description provided for @leave. + /// + /// In en, this message translates to: + /// **'Leave'** + String get leave; + + /// No description provided for @leaveOrg. + /// + /// In en, this message translates to: + /// **'Leave {organization}'** + String leaveOrg(String organization); + + /// No description provided for @leaveOrganization. + /// + /// In en, this message translates to: + /// **'Leave organization'** + String get leaveOrganization; + + /// No description provided for @loading. + /// + /// In en, this message translates to: + /// **'Loading…'** + String get loading; + + /// No description provided for @logo. + /// + /// In en, this message translates to: + /// **'Logo'** + String get logo; + + /// No description provided for @manualInvitation. + /// + /// In en, this message translates to: + /// **'Manual invitation'** + String get manualInvitation; + + /// No description provided for @missingRequirements. + /// + /// In en, this message translates to: + /// **'missing requirements'** + String get missingRequirements; + + /// No description provided for @name. + /// + /// In en, this message translates to: + /// **'Name'** + String get name; + + /// No description provided for @needsFirstFactor. + /// + /// In en, this message translates to: + /// **'needs first factor'** + String get needsFirstFactor; + + /// No description provided for @needsIdentifier. + /// + /// In en, this message translates to: + /// **'needs identifier'** + String get needsIdentifier; + + /// No description provided for @needsSecondFactor. + /// + /// In en, this message translates to: + /// **'needs second factor'** + String get needsSecondFactor; + + /// No description provided for @newPassword. + /// + /// In en, this message translates to: + /// **'New password'** + String get newPassword; + + /// No description provided for @newPasswordConfirmation. + /// + /// In en, this message translates to: + /// **'Confirm new password'** + String get newPasswordConfirmation; + + /// No description provided for @noAssociatedCodeRetrievalMethod. + /// + /// In en, this message translates to: + /// **'No code retrieval method associated with {arg}'** + String noAssociatedCodeRetrievalMethod(String arg); + + /// No description provided for @noAssociatedStrategy. + /// + /// In en, this message translates to: + /// **'No strategy associated with {arg}'** + String noAssociatedStrategy(String arg); + + /// No description provided for @noSessionFoundForUser. + /// + /// In en, this message translates to: + /// **'No session found for {arg}'** + String noSessionFoundForUser(String arg); + + /// No description provided for @noSessionTokenRetrieved. + /// + /// In en, this message translates to: + /// **'No session token retrieved'** + String get noSessionTokenRetrieved; + + /// No description provided for @noStageForStatus. + /// + /// In en, this message translates to: + /// **'No stage for {arg}'** + String noStageForStatus(String arg); + + /// No description provided for @noSuchFirstFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for first factor'** + String noSuchFirstFactorStrategy(String arg); + + /// No description provided for @noSuchSecondFactorStrategy. + /// + /// In en, this message translates to: + /// **'Strategy {arg} not supported for second factor'** + String noSuchSecondFactorStrategy(String arg); + + /// No description provided for @noTranslationFor. + /// + /// In en, this message translates to: + /// **'No translation for {name}'** + String noTranslationFor(String name); + + /// No description provided for @ok. + /// + /// In en, this message translates to: + /// **'OK'** + String get ok; + + /// No description provided for @optional. + /// + /// In en, this message translates to: + /// **'(optional)'** + String get optional; + + /// No description provided for @or. + /// + /// In en, this message translates to: + /// **'or'** + String get or; + + /// No description provided for @organizationProfile. + /// + /// In en, this message translates to: + /// **'Organization profile'** + String get organizationProfile; + + /// No description provided for @organizations. + /// + /// In en, this message translates to: + /// **'Organizations'** + String get organizations; + + /// No description provided for @passkey. + /// + /// In en, this message translates to: + /// **'passkey'** + String get passkey; + + /// No description provided for @password. + /// + /// In en, this message translates to: + /// **'Password'** + String get password; + + /// No description provided for @passwordAndPasswordConfirmationMustMatch. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordAndPasswordConfirmationMustMatch; + + /// No description provided for @passwordConfirmation. + /// + /// In en, this message translates to: + /// **'confirm password'** + String get passwordConfirmation; + + /// No description provided for @passwordMatchError. + /// + /// In en, this message translates to: + /// **'Password and password confirmation must match'** + String get passwordMatchError; + + /// No description provided for @passwordMustBeSupplied. + /// + /// In en, this message translates to: + /// **'A password must be supplied'** + String get passwordMustBeSupplied; + + /// No description provided for @passwordRequires. + /// + /// In en, this message translates to: + /// **'Password requires:'** + String get passwordRequires; + + /// No description provided for @pending. + /// + /// In en, this message translates to: + /// **'pending'** + String get pending; + + /// No description provided for @personalAccount. + /// + /// In en, this message translates to: + /// **'Personal account'** + String get personalAccount; + + /// No description provided for @phoneNumber. + /// + /// In en, this message translates to: + /// **'phone number'** + String get phoneNumber; + + /// No description provided for @phoneNumberConcise. + /// + /// In en, this message translates to: + /// **'phone'** + String get phoneNumberConcise; + + /// No description provided for @pleaseChooseAnAccountToConnect. + /// + /// In en, this message translates to: + /// **'Please choose an account to connect'** + String get pleaseChooseAnAccountToConnect; + + /// No description provided for @pleaseEnterYourIdentifier. + /// + /// In en, this message translates to: + /// **'Please enter your identifier'** + String get pleaseEnterYourIdentifier; + + /// No description provided for @primary. + /// + /// In en, this message translates to: + /// **'PRIMARY'** + String get primary; + + /// No description provided for @privacyPolicy. + /// + /// In en, this message translates to: + /// **'Privacy Policy'** + String get privacyPolicy; + + /// No description provided for @problemsConnecting. + /// + /// In en, this message translates to: + /// **'We are having problems connecting'** + String get problemsConnecting; + + /// No description provided for @profile. + /// + /// In en, this message translates to: + /// **'Profile'** + String get profile; + + /// No description provided for @profileDetails. + /// + /// In en, this message translates to: + /// **'Profile details'** + String get profileDetails; + + /// No description provided for @recommendSize. + /// + /// In en, this message translates to: + /// **'Recommend size 1:1, up to 5MB.'** + String get recommendSize; + + /// No description provided for @requiredField. + /// + /// In en, this message translates to: + /// **'(required)'** + String get requiredField; + + /// No description provided for @resend. + /// + /// In en, this message translates to: + /// **'Resend'** + String get resend; + + /// No description provided for @resetFailed. + /// + /// In en, this message translates to: + /// **'That password reset attempt failed. A new code has been sent.'** + String get resetFailed; + + /// No description provided for @resetPassword. + /// + /// In en, this message translates to: + /// **'Reset password and sign in'** + String get resetPassword; + + /// No description provided for @selectAccount. + /// + /// In en, this message translates to: + /// **'Select the account with which you wish to continue'** + String get selectAccount; + + /// No description provided for @sendMeTheCode. + /// + /// In en, this message translates to: + /// **'Send me the reset code'** + String get sendMeTheCode; + + /// No description provided for @signIn. + /// + /// In en, this message translates to: + /// **'Sign in'** + String get signIn; + + /// No description provided for @signInByClickingALinkSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by clicking a link sent to you by email'** + String get signInByClickingALinkSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByEmail. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by email'** + String get signInByEnteringACodeSentToYouByEmail; + + /// No description provided for @signInByEnteringACodeSentToYouByTextMessage. + /// + /// In en, this message translates to: + /// **'Sign in by entering a code sent to you by text message'** + String get signInByEnteringACodeSentToYouByTextMessage; + + /// No description provided for @signInError. + /// + /// In en, this message translates to: + /// **'Unsupported sign in attempt: {arg}'** + String signInError(String arg); + + /// No description provided for @signInTo. + /// + /// In en, this message translates to: + /// **'Sign in to {name}'** + String signInTo(String name); + + /// No description provided for @signOut. + /// + /// In en, this message translates to: + /// **'Sign out'** + String get signOut; + + /// No description provided for @signOutIdentifier. + /// + /// In en, this message translates to: + /// **'Sign out {identifier}'** + String signOutIdentifier(String identifier); + + /// No description provided for @signOutOfAllAccounts. + /// + /// In en, this message translates to: + /// **'Sign out of all accounts'** + String get signOutOfAllAccounts; + + /// No description provided for @signUp. + /// + /// In en, this message translates to: + /// **'Sign up'** + String get signUp; + + /// No description provided for @signUpTo. + /// + /// In en, this message translates to: + /// **'Sign up to {name}'** + String signUpTo(String name); + + /// No description provided for @slugUrl. + /// + /// In en, this message translates to: + /// **'Slug URL'** + String get slugUrl; + + /// No description provided for @switchTo. + /// + /// In en, this message translates to: + /// **'Switch to'** + String get switchTo; + + /// No description provided for @termsAndConditions. + /// + /// In en, this message translates to: + /// **'Terms & Conditions'** + String get termsAndConditions; + + /// No description provided for @transferable. + /// + /// In en, this message translates to: + /// **'transferable'** + String get transferable; + + /// No description provided for @typeTypeInvalid. + /// + /// In en, this message translates to: + /// **'Type \'{type}\' is invalid'** + String typeTypeInvalid(String type); + + /// No description provided for @unsupportedPasswordResetStrategy. + /// + /// In en, this message translates to: + /// **'Unsupported password reset strategy: {arg}'** + String unsupportedPasswordResetStrategy(String arg); + + /// No description provided for @unverified. + /// + /// In en, this message translates to: + /// **'unverified'** + String get unverified; + + /// No description provided for @username. + /// + /// In en, this message translates to: + /// **'username'** + String get username; + + /// No description provided for @verificationEmailAddress. + /// + /// In en, this message translates to: + /// **'Email address verification'** + String get verificationEmailAddress; + + /// No description provided for @verificationPhoneNumber. + /// + /// In en, this message translates to: + /// **'Phone number verification'** + String get verificationPhoneNumber; + + /// No description provided for @verified. + /// + /// In en, this message translates to: + /// **'verified'** + String get verified; + + /// No description provided for @verifiedDomains. + /// + /// In en, this message translates to: + /// **'Verified domains'** + String get verifiedDomains; + + /// No description provided for @verifyYourEmailAddress. + /// + /// In en, this message translates to: + /// **'Verify your email address'** + String get verifyYourEmailAddress; + + /// No description provided for @verifyYourPhoneNumber. + /// + /// In en, this message translates to: + /// **'Verify your phone number'** + String get verifyYourPhoneNumber; + + /// No description provided for @viaAutomaticInvitation. + /// + /// In en, this message translates to: + /// **'via automatic invitation'** + String get viaAutomaticInvitation; + + /// No description provided for @viaAutomaticSuggestion. + /// + /// In en, this message translates to: + /// **'via automatic suggestion'** + String get viaAutomaticSuggestion; + + /// No description provided for @viaManualInvitation. + /// + /// In en, this message translates to: + /// **'via manual invitation'** + String get viaManualInvitation; + + /// No description provided for @web3Wallet. + /// + /// In en, this message translates to: + /// **'web3 wallet'** + String get web3Wallet; + + /// No description provided for @welcomeBackPleaseSignInToContinue. + /// + /// In en, this message translates to: + /// **'Welcome back! Please sign in to continue'** + String get welcomeBackPleaseSignInToContinue; + + /// No description provided for @welcomePleaseFillInTheDetailsToGetStarted. + /// + /// In en, this message translates to: + /// **'Welcome! Please fill in the details to get started'** + String get welcomePleaseFillInTheDetailsToGetStarted; + + /// No description provided for @youNeedToAdd. + /// + /// In en, this message translates to: + /// **'You need to add:'** + String get youNeedToAdd; +} + +class _ClerkSdkLocalizationsDelegate + extends LocalizationsDelegate { + const _ClerkSdkLocalizationsDelegate(); + + @override + Future load(Locale locale) { + return SynchronousFuture( + lookupClerkSdkLocalizations(locale)); + } + + @override + bool isSupported(Locale locale) => + ['en'].contains(locale.languageCode); + + @override + bool shouldReload(_ClerkSdkLocalizationsDelegate old) => false; +} + +ClerkSdkLocalizations lookupClerkSdkLocalizations(Locale locale) { + // Lookup logic when only language code is specified. + switch (locale.languageCode) { + case 'en': + return ClerkSdkLocalizationsEn(); + } + + throw FlutterError( + 'ClerkSdkLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' + 'an issue with the localizations generation tool. Please file an issue ' + 'on GitHub with a reproducible sample app and the gen-l10n configuration ' + 'that was used.'); +} diff --git a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart index ed3de42d..b73e0d6c 100644 --- a/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart +++ b/packages/clerk_flutter/lib/src/generated/clerk_sdk_localizations_en.dart @@ -1,467 +1,467 @@ -// ignore_for_file: public_member_api_docs, use_super_parameters - -import 'clerk_sdk_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for English (`en`). -class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { - ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String aLengthOfBetweenMINAndMAX(int min, int max) { - return 'a length of between $min and $max'; - } - - @override - String aLengthOfMINOrGreater(int min) { - return 'a length of $min or greater'; - } - - @override - String get aLowercaseLetter => 'a LOWERCASE letter'; - - @override - String get aNumber => 'a NUMBER'; - - @override - String aSpecialCharacter(String chars) { - return 'a SPECIAL CHARACTER ($chars)'; - } - - @override - String get abandoned => 'abandoned'; - - @override - String get acceptTerms => - 'I accept the Terms & Conditions and Privacy Policy'; - - @override - String get actionNotTimely => - 'Awaited user action not completed in required timeframe'; - - @override - String get active => 'active'; - - @override - String get addAccount => 'Add account'; - - @override - String get addDomain => 'Add domain'; - - @override - String get addEmailAddress => 'Add email address'; - - @override - String get addPhoneNumber => 'Add phone number'; - - @override - String get alreadyHaveAnAccount => 'Already have an account?'; - - @override - String get anUppercaseLetter => 'an UPPERCASE letter'; - - @override - String get and => 'and'; - - @override - String get areYouSure => 'Are you sure?'; - - @override - String get authenticatorApp => 'authenticator app'; - - @override - String get automaticInvitation => 'Automatic invitation'; - - @override - String get automaticSuggestion => 'Automatic suggestion'; - - @override - String get backupCode => 'backup code'; - - @override - String get cancel => 'Cancel'; - - @override - String get cannotDeleteSelf => 'You are not authorized to delete your user'; - - @override - String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { - return 'Click on the link that‘s been sent to $identifier and then check back here'; - } - - @override - String get complete => 'complete'; - - @override - String get connectAccount => 'Connect account'; - - @override - String get connectedAccounts => 'Connected accounts'; - - @override - String get cont => 'Continue'; - - @override - String get createOrganization => 'Create organization'; - - @override - String get didntReceiveCode => 'Didn\'t receive the code?'; - - @override - String get domainName => 'Domain name'; - - @override - String get dontHaveAnAccount => 'Don’t have an account?'; - - @override - String get edit => 'edit'; - - @override - String get emailAddress => 'email address'; - - @override - String get emailAddressConcise => 'email'; - - @override - String get enrollment => 'Enrollment'; - - @override - String get enrollmentMode => 'Enrollment mode:'; - - @override - String enterCodeSentTo(String identifier) { - return 'Enter code sent to $identifier'; - } - - @override - String enterTheCodeSentTo(String identifier) { - return 'Enter the code sent to $identifier'; - } - - @override - String get enterTheCodeSentToYou => 'Enter the code sent to you'; - - @override - String get expired => 'expired'; - - @override - String get failed => 'failed'; - - @override - String get firstName => 'first name'; - - @override - String get forgottenPassword => 'Forgotten password?'; - - @override - String get generalDetails => 'General details'; - - @override - String invalidEmailAddress(String address) { - return 'Invalid email address: $address'; - } - - @override - String invalidPhoneNumber(String number) { - return 'Invalid phone number: $number'; - } - - @override - String get join => 'JOIN'; - - @override - String jwtPoorlyFormatted(String arg) { - return 'JWT poorly formatted: $arg'; - } - - @override - String get lastName => 'last name'; - - @override - String get leave => 'Leave'; - - @override - String leaveOrg(String organization) { - return 'Leave $organization'; - } - - @override - String get leaveOrganization => 'Leave organization'; - - @override - String get loading => 'Loading…'; - - @override - String get logo => 'Logo'; - - @override - String get manualInvitation => 'Manual invitation'; - - @override - String get missingRequirements => 'missing requirements'; - - @override - String get name => 'Name'; - - @override - String get needsFirstFactor => 'needs first factor'; - - @override - String get needsIdentifier => 'needs identifier'; - - @override - String get needsSecondFactor => 'needs second factor'; - - @override - String get newPassword => 'New password'; - - @override - String get newPasswordConfirmation => 'Confirm new password'; - - @override - String noAssociatedCodeRetrievalMethod(String arg) { - return 'No code retrieval method associated with $arg'; - } - - @override - String noAssociatedStrategy(String arg) { - return 'No strategy associated with $arg'; - } - - @override - String noSessionFoundForUser(String arg) { - return 'No session found for $arg'; - } - - @override - String get noSessionTokenRetrieved => 'No session token retrieved'; - - @override - String noStageForStatus(String arg) { - return 'No stage for $arg'; - } - - @override - String noSuchFirstFactorStrategy(String arg) { - return 'Strategy $arg not supported for first factor'; - } - - @override - String noSuchSecondFactorStrategy(String arg) { - return 'Strategy $arg not supported for second factor'; - } - - @override - String noTranslationFor(String name) { - return 'No translation for $name'; - } - - @override - String get ok => 'OK'; - - @override - String get optional => '(optional)'; - - @override - String get or => 'or'; - - @override - String get organizationProfile => 'Organization profile'; - - @override - String get organizations => 'Organizations'; - - @override - String get passkey => 'passkey'; - - @override - String get password => 'Password'; - - @override - String get passwordAndPasswordConfirmationMustMatch => - 'Password and password confirmation must match'; - - @override - String get passwordConfirmation => 'confirm password'; - - @override - String get passwordMatchError => - 'Password and password confirmation must match'; - - @override - String get passwordMustBeSupplied => 'A password must be supplied'; - - @override - String get passwordRequires => 'Password requires:'; - - @override - String get pending => 'pending'; - - @override - String get personalAccount => 'Personal account'; - - @override - String get phoneNumber => 'phone number'; - - @override - String get phoneNumberConcise => 'phone'; - - @override - String get pleaseChooseAnAccountToConnect => - 'Please choose an account to connect'; - - @override - String get pleaseEnterYourIdentifier => 'Please enter your identifier'; - - @override - String get primary => 'PRIMARY'; - - @override - String get privacyPolicy => 'Privacy Policy'; - - @override - String get problemsConnecting => 'We are having problems connecting'; - - @override - String get profile => 'Profile'; - - @override - String get profileDetails => 'Profile details'; - - @override - String get recommendSize => 'Recommend size 1:1, up to 5MB.'; - - @override - String get requiredField => '(required)'; - - @override - String get resend => 'Resend'; - - @override - String get resetFailed => - 'That password reset attempt failed. A new code has been sent.'; - - @override - String get resetPassword => 'Reset password and sign in'; - - @override - String get selectAccount => - 'Select the account with which you wish to continue'; - - @override - String get sendMeTheCode => 'Send me the reset code'; - - @override - String get signIn => 'Sign in'; - - @override - String get signInByClickingALinkSentToYouByEmail => - 'Sign in by clicking a link sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByEmail => - 'Sign in by entering a code sent to you by email'; - - @override - String get signInByEnteringACodeSentToYouByTextMessage => - 'Sign in by entering a code sent to you by text message'; - - @override - String signInError(String arg) { - return 'Unsupported sign in attempt: $arg'; - } - - @override - String signInTo(String name) { - return 'Sign in to $name'; - } - - @override - String get signOut => 'Sign out'; - - @override - String signOutIdentifier(String identifier) { - return 'Sign out $identifier'; - } - - @override - String get signOutOfAllAccounts => 'Sign out of all accounts'; - - @override - String get signUp => 'Sign up'; - - @override - String signUpTo(String name) { - return 'Sign up to $name'; - } - - @override - String get slugUrl => 'Slug URL'; - - @override - String get switchTo => 'Switch to'; - - @override - String get termsAndConditions => 'Terms & Conditions'; - - @override - String get transferable => 'transferable'; - - @override - String typeTypeInvalid(String type) { - return 'Type \'$type\' is invalid'; - } - - @override - String unsupportedPasswordResetStrategy(String arg) { - return 'Unsupported password reset strategy: $arg'; - } - - @override - String get unverified => 'unverified'; - - @override - String get username => 'username'; - - @override - String get verificationEmailAddress => 'Email address verification'; - - @override - String get verificationPhoneNumber => 'Phone number verification'; - - @override - String get verified => 'verified'; - - @override - String get verifiedDomains => 'Verified domains'; - - @override - String get verifyYourEmailAddress => 'Verify your email address'; - - @override - String get verifyYourPhoneNumber => 'Verify your phone number'; - - @override - String get viaAutomaticInvitation => 'via automatic invitation'; - - @override - String get viaAutomaticSuggestion => 'via automatic suggestion'; - - @override - String get viaManualInvitation => 'via manual invitation'; - - @override - String get web3Wallet => 'web3 wallet'; - - @override - String get welcomeBackPleaseSignInToContinue => - 'Welcome back! Please sign in to continue'; - - @override - String get welcomePleaseFillInTheDetailsToGetStarted => - 'Welcome! Please fill in the details to get started'; - - @override - String get youNeedToAdd => 'You need to add:'; -} +// ignore_for_file: public_member_api_docs, use_super_parameters + +import 'clerk_sdk_localizations.dart'; + +// ignore_for_file: type=lint + +/// The translations for English (`en`). +class ClerkSdkLocalizationsEn extends ClerkSdkLocalizations { + ClerkSdkLocalizationsEn([String locale = 'en']) : super(locale); + + @override + String aLengthOfBetweenMINAndMAX(int min, int max) { + return 'a length of between $min and $max'; + } + + @override + String aLengthOfMINOrGreater(int min) { + return 'a length of $min or greater'; + } + + @override + String get aLowercaseLetter => 'a LOWERCASE letter'; + + @override + String get aNumber => 'a NUMBER'; + + @override + String aSpecialCharacter(String chars) { + return 'a SPECIAL CHARACTER ($chars)'; + } + + @override + String get abandoned => 'abandoned'; + + @override + String get acceptTerms => + 'I accept the Terms & Conditions and Privacy Policy'; + + @override + String get actionNotTimely => + 'Awaited user action not completed in required timeframe'; + + @override + String get active => 'active'; + + @override + String get addAccount => 'Add account'; + + @override + String get addDomain => 'Add domain'; + + @override + String get addEmailAddress => 'Add email address'; + + @override + String get addPhoneNumber => 'Add phone number'; + + @override + String get alreadyHaveAnAccount => 'Already have an account?'; + + @override + String get anUppercaseLetter => 'an UPPERCASE letter'; + + @override + String get and => 'and'; + + @override + String get areYouSure => 'Are you sure?'; + + @override + String get authenticatorApp => 'authenticator app'; + + @override + String get automaticInvitation => 'Automatic invitation'; + + @override + String get automaticSuggestion => 'Automatic suggestion'; + + @override + String get backupCode => 'backup code'; + + @override + String get cancel => 'Cancel'; + + @override + String get cannotDeleteSelf => 'You are not authorized to delete your user'; + + @override + String clickOnTheLinkThatSBeenSentToAndThenCheckBackHere(String identifier) { + return 'Click on the link that‘s been sent to $identifier and then check back here'; + } + + @override + String get complete => 'complete'; + + @override + String get connectAccount => 'Connect account'; + + @override + String get connectedAccounts => 'Connected accounts'; + + @override + String get cont => 'Continue'; + + @override + String get createOrganization => 'Create organization'; + + @override + String get didntReceiveCode => 'Didn\'t receive the code?'; + + @override + String get domainName => 'Domain name'; + + @override + String get dontHaveAnAccount => 'Don’t have an account?'; + + @override + String get edit => 'edit'; + + @override + String get emailAddress => 'email address'; + + @override + String get emailAddressConcise => 'email'; + + @override + String get enrollment => 'Enrollment'; + + @override + String get enrollmentMode => 'Enrollment mode:'; + + @override + String enterCodeSentTo(String identifier) { + return 'Enter code sent to $identifier'; + } + + @override + String enterTheCodeSentTo(String identifier) { + return 'Enter the code sent to $identifier'; + } + + @override + String get enterTheCodeSentToYou => 'Enter the code sent to you'; + + @override + String get expired => 'expired'; + + @override + String get failed => 'failed'; + + @override + String get firstName => 'first name'; + + @override + String get forgottenPassword => 'Forgotten password?'; + + @override + String get generalDetails => 'General details'; + + @override + String invalidEmailAddress(String address) { + return 'Invalid email address: $address'; + } + + @override + String invalidPhoneNumber(String number) { + return 'Invalid phone number: $number'; + } + + @override + String get join => 'JOIN'; + + @override + String jwtPoorlyFormatted(String arg) { + return 'JWT poorly formatted: $arg'; + } + + @override + String get lastName => 'last name'; + + @override + String get leave => 'Leave'; + + @override + String leaveOrg(String organization) { + return 'Leave $organization'; + } + + @override + String get leaveOrganization => 'Leave organization'; + + @override + String get loading => 'Loading…'; + + @override + String get logo => 'Logo'; + + @override + String get manualInvitation => 'Manual invitation'; + + @override + String get missingRequirements => 'missing requirements'; + + @override + String get name => 'Name'; + + @override + String get needsFirstFactor => 'needs first factor'; + + @override + String get needsIdentifier => 'needs identifier'; + + @override + String get needsSecondFactor => 'needs second factor'; + + @override + String get newPassword => 'New password'; + + @override + String get newPasswordConfirmation => 'Confirm new password'; + + @override + String noAssociatedCodeRetrievalMethod(String arg) { + return 'No code retrieval method associated with $arg'; + } + + @override + String noAssociatedStrategy(String arg) { + return 'No strategy associated with $arg'; + } + + @override + String noSessionFoundForUser(String arg) { + return 'No session found for $arg'; + } + + @override + String get noSessionTokenRetrieved => 'No session token retrieved'; + + @override + String noStageForStatus(String arg) { + return 'No stage for $arg'; + } + + @override + String noSuchFirstFactorStrategy(String arg) { + return 'Strategy $arg not supported for first factor'; + } + + @override + String noSuchSecondFactorStrategy(String arg) { + return 'Strategy $arg not supported for second factor'; + } + + @override + String noTranslationFor(String name) { + return 'No translation for $name'; + } + + @override + String get ok => 'OK'; + + @override + String get optional => '(optional)'; + + @override + String get or => 'or'; + + @override + String get organizationProfile => 'Organization profile'; + + @override + String get organizations => 'Organizations'; + + @override + String get passkey => 'passkey'; + + @override + String get password => 'Password'; + + @override + String get passwordAndPasswordConfirmationMustMatch => + 'Password and password confirmation must match'; + + @override + String get passwordConfirmation => 'confirm password'; + + @override + String get passwordMatchError => + 'Password and password confirmation must match'; + + @override + String get passwordMustBeSupplied => 'A password must be supplied'; + + @override + String get passwordRequires => 'Password requires:'; + + @override + String get pending => 'pending'; + + @override + String get personalAccount => 'Personal account'; + + @override + String get phoneNumber => 'phone number'; + + @override + String get phoneNumberConcise => 'phone'; + + @override + String get pleaseChooseAnAccountToConnect => + 'Please choose an account to connect'; + + @override + String get pleaseEnterYourIdentifier => 'Please enter your identifier'; + + @override + String get primary => 'PRIMARY'; + + @override + String get privacyPolicy => 'Privacy Policy'; + + @override + String get problemsConnecting => 'We are having problems connecting'; + + @override + String get profile => 'Profile'; + + @override + String get profileDetails => 'Profile details'; + + @override + String get recommendSize => 'Recommend size 1:1, up to 5MB.'; + + @override + String get requiredField => '(required)'; + + @override + String get resend => 'Resend'; + + @override + String get resetFailed => + 'That password reset attempt failed. A new code has been sent.'; + + @override + String get resetPassword => 'Reset password and sign in'; + + @override + String get selectAccount => + 'Select the account with which you wish to continue'; + + @override + String get sendMeTheCode => 'Send me the reset code'; + + @override + String get signIn => 'Sign in'; + + @override + String get signInByClickingALinkSentToYouByEmail => + 'Sign in by clicking a link sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByEmail => + 'Sign in by entering a code sent to you by email'; + + @override + String get signInByEnteringACodeSentToYouByTextMessage => + 'Sign in by entering a code sent to you by text message'; + + @override + String signInError(String arg) { + return 'Unsupported sign in attempt: $arg'; + } + + @override + String signInTo(String name) { + return 'Sign in to $name'; + } + + @override + String get signOut => 'Sign out'; + + @override + String signOutIdentifier(String identifier) { + return 'Sign out $identifier'; + } + + @override + String get signOutOfAllAccounts => 'Sign out of all accounts'; + + @override + String get signUp => 'Sign up'; + + @override + String signUpTo(String name) { + return 'Sign up to $name'; + } + + @override + String get slugUrl => 'Slug URL'; + + @override + String get switchTo => 'Switch to'; + + @override + String get termsAndConditions => 'Terms & Conditions'; + + @override + String get transferable => 'transferable'; + + @override + String typeTypeInvalid(String type) { + return 'Type \'$type\' is invalid'; + } + + @override + String unsupportedPasswordResetStrategy(String arg) { + return 'Unsupported password reset strategy: $arg'; + } + + @override + String get unverified => 'unverified'; + + @override + String get username => 'username'; + + @override + String get verificationEmailAddress => 'Email address verification'; + + @override + String get verificationPhoneNumber => 'Phone number verification'; + + @override + String get verified => 'verified'; + + @override + String get verifiedDomains => 'Verified domains'; + + @override + String get verifyYourEmailAddress => 'Verify your email address'; + + @override + String get verifyYourPhoneNumber => 'Verify your phone number'; + + @override + String get viaAutomaticInvitation => 'via automatic invitation'; + + @override + String get viaAutomaticSuggestion => 'via automatic suggestion'; + + @override + String get viaManualInvitation => 'via manual invitation'; + + @override + String get web3Wallet => 'web3 wallet'; + + @override + String get welcomeBackPleaseSignInToContinue => + 'Welcome back! Please sign in to continue'; + + @override + String get welcomePleaseFillInTheDetailsToGetStarted => + 'Welcome! Please fill in the details to get started'; + + @override + String get youNeedToAdd => 'You need to add:'; +}