From e354a6c7208d9433f950087ef10a27117ef5659a Mon Sep 17 00:00:00 2001 From: boosted-bot Date: Mon, 20 Apr 2026 14:42:29 +0100 Subject: [PATCH 1/5] chore: update tokens --- .../lib/ouds_component_version.dart | 4 ++ .../lib/ouds_tokens_version.dart | 1 - .../tokens/components/ouds_alert_tokens.dart | 31 +++++++++++ .../lib/components/orange_alert_tokens.dart | 53 +++++++++++++++++++ .../lib/components/sosh_alert_tokens.dart | 53 +++++++++++++++++++ .../components/wireframe_alert_tokens.dart | 53 +++++++++++++++++++ 6 files changed, 194 insertions(+), 1 deletion(-) create mode 100644 ouds_theme_contract/lib/theme/tokens/components/ouds_alert_tokens.dart create mode 100644 ouds_theme_orange/lib/components/orange_alert_tokens.dart create mode 100644 ouds_theme_sosh/lib/components/sosh_alert_tokens.dart create mode 100644 ouds_theme_wireframe/lib/components/wireframe_alert_tokens.dart diff --git a/ouds_theme_contract/lib/ouds_component_version.dart b/ouds_theme_contract/lib/ouds_component_version.dart index 1b5ebc865..9696df81a 100644 --- a/ouds_theme_contract/lib/ouds_component_version.dart +++ b/ouds_theme_contract/lib/ouds_component_version.dart @@ -13,13 +13,17 @@ // Generated by Tokenator class OudsComponentVersion { + static const alertMessage = '1.0.0'; static const badge = '1.2.0'; static const bar = '1.0.0'; static const button = '3.2.0'; static const checkbox = '2.4.0'; static const chip = '1.3.0'; static const divider = '1.0.0'; + static const inlineAlert = '1.0.0'; static const link = '2.2.0'; + static const passwordInput = '1.2.0'; + static const phoneNumberInput = '1.2.0'; static const pinCodeInput = '1.2.0'; static const radioButton = '1.4.0'; static const skeleton = '1.0.0'; diff --git a/ouds_theme_contract/lib/ouds_tokens_version.dart b/ouds_theme_contract/lib/ouds_tokens_version.dart index cac791562..21cbd3b1d 100644 --- a/ouds_theme_contract/lib/ouds_tokens_version.dart +++ b/ouds_theme_contract/lib/ouds_tokens_version.dart @@ -18,7 +18,6 @@ class OudsTokensVersion { static const androidSystem = '1.2.0'; static const orangeCore = '1.2.0'; static const orangeBrand = '2.3.0'; - static const orangeCompactBrand = '2.3.0'; static const soshCore = '1.2.0'; static const soshBrand = '2.3.0'; static const wireframeCore = '1.3.0'; diff --git a/ouds_theme_contract/lib/theme/tokens/components/ouds_alert_tokens.dart b/ouds_theme_contract/lib/theme/tokens/components/ouds_alert_tokens.dart new file mode 100644 index 000000000..279a55d3b --- /dev/null +++ b/ouds_theme_contract/lib/theme/tokens/components/ouds_alert_tokens.dart @@ -0,0 +1,31 @@ +// +// Software Name: OUDS Flutter +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Software description: Flutter library of reusable graphical components +// + +// Orange brand tokens version 2.3.0 +// Generated by Tokenator + +abstract class OudsAlertTokens { + late double borderRadiusDefault; + late double borderRadiusRounded; + late double borderWidth; + late double sizeIcon; + late double sizeMinHeight; + late double sizeMinHeightBottomActionPlacement; + late double sizeMinWidth; + late double spaceColumnGap; + late double spaceColumnGapAction; + late double spacePaddingBlock; + late double spacePaddingInline; + late double spaceRowGap; + late double spaceRowGapAction; + late double spaceRowGapBullet; +} diff --git a/ouds_theme_orange/lib/components/orange_alert_tokens.dart b/ouds_theme_orange/lib/components/orange_alert_tokens.dart new file mode 100644 index 000000000..d4f145093 --- /dev/null +++ b/ouds_theme_orange/lib/components/orange_alert_tokens.dart @@ -0,0 +1,53 @@ +// +// Software Name: OUDS Flutter +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Software description: Flutter library of reusable graphical components +// + +// Orange brand tokens version 2.3.0 +// Generated by Tokenator + +import 'package:ouds_global_raw_tokens/dimension_raw_tokens.dart'; +import 'package:ouds_theme_contract/ouds_tokens_provider.dart'; +import 'package:ouds_theme_contract/theme/tokens/components/ouds_alert_tokens.dart'; + +class OrangeAlertTokens extends OudsAlertTokens { + final OudsProvidersTokens providersTokens; + + OrangeAlertTokens(this.providersTokens); + + @override + double get borderRadiusDefault => providersTokens.borderTokens.radiusDefault; + @override + double get borderRadiusRounded => providersTokens.borderTokens.radiusLarge; + @override + double get borderWidth => providersTokens.borderTokens.widthNone; + @override + double get sizeIcon => providersTokens.sizeTokens.iconWithLabelLargeSizeSmall; + @override + double get sizeMinHeight => providersTokens.sizeTokens.minInteractiveArea; + @override + double get sizeMinHeightBottomActionPlacement => DimensionRawTokens.dimension1250; + @override + double get sizeMinWidth => DimensionRawTokens.dimension2000; + @override + double get spaceColumnGap => providersTokens.spaceTokens.columnGapMedium; + @override + double get spaceColumnGapAction => providersTokens.spaceTokens.columnGapSmall; + @override + double get spacePaddingBlock => providersTokens.spaceTokens.paddingBlockMedium; + @override + double get spacePaddingInline => providersTokens.spaceTokens.paddingInlineLarge; + @override + double get spaceRowGap => providersTokens.spaceTokens.rowGapSmall; + @override + double get spaceRowGapAction => providersTokens.spaceTokens.rowGap2xsmall; + @override + double get spaceRowGapBullet => providersTokens.spaceTokens.rowGapNone; +} diff --git a/ouds_theme_sosh/lib/components/sosh_alert_tokens.dart b/ouds_theme_sosh/lib/components/sosh_alert_tokens.dart new file mode 100644 index 000000000..885c44938 --- /dev/null +++ b/ouds_theme_sosh/lib/components/sosh_alert_tokens.dart @@ -0,0 +1,53 @@ +// +// Software Name: OUDS Flutter +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Software description: Flutter library of reusable graphical components +// + +// Sosh brand tokens version 2.3.0 +// Generated by Tokenator + +import 'package:ouds_global_raw_tokens/dimension_raw_tokens.dart'; +import 'package:ouds_theme_contract/ouds_tokens_provider.dart'; +import 'package:ouds_theme_contract/theme/tokens/components/ouds_alert_tokens.dart'; + +class SoshAlertTokens extends OudsAlertTokens { + final OudsProvidersTokens providersTokens; + + SoshAlertTokens(this.providersTokens); + + @override + double get borderRadiusDefault => providersTokens.borderTokens.radiusLarge; + @override + double get borderRadiusRounded => providersTokens.borderTokens.radiusLarge; + @override + double get borderWidth => providersTokens.borderTokens.widthNone; + @override + double get sizeIcon => providersTokens.sizeTokens.iconWithLabelLargeSizeSmall; + @override + double get sizeMinHeight => providersTokens.sizeTokens.minInteractiveArea; + @override + double get sizeMinHeightBottomActionPlacement => DimensionRawTokens.dimension1250; + @override + double get sizeMinWidth => DimensionRawTokens.dimension2000; + @override + double get spaceColumnGap => providersTokens.spaceTokens.columnGapMedium; + @override + double get spaceColumnGapAction => providersTokens.spaceTokens.columnGapSmall; + @override + double get spacePaddingBlock => providersTokens.spaceTokens.paddingBlockMedium; + @override + double get spacePaddingInline => providersTokens.spaceTokens.paddingInlineLarge; + @override + double get spaceRowGap => providersTokens.spaceTokens.rowGapSmall; + @override + double get spaceRowGapAction => providersTokens.spaceTokens.rowGap2xsmall; + @override + double get spaceRowGapBullet => providersTokens.spaceTokens.rowGapNone; +} diff --git a/ouds_theme_wireframe/lib/components/wireframe_alert_tokens.dart b/ouds_theme_wireframe/lib/components/wireframe_alert_tokens.dart new file mode 100644 index 000000000..9bbf5d78d --- /dev/null +++ b/ouds_theme_wireframe/lib/components/wireframe_alert_tokens.dart @@ -0,0 +1,53 @@ +// +// Software Name: OUDS Flutter +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Software description: Flutter library of reusable graphical components +// + +// Wireframe brand tokens version 2.3.0 +// Generated by Tokenator + +import 'package:ouds_global_raw_tokens/dimension_raw_tokens.dart'; +import 'package:ouds_theme_contract/ouds_tokens_provider.dart'; +import 'package:ouds_theme_contract/theme/tokens/components/ouds_alert_tokens.dart'; + +class WireframeAlertTokens extends OudsAlertTokens { + final OudsProvidersTokens providersTokens; + + WireframeAlertTokens(this.providersTokens); + + @override + double get borderRadiusDefault => providersTokens.borderTokens.radiusLarge; + @override + double get borderRadiusRounded => providersTokens.borderTokens.radiusLarge; + @override + double get borderWidth => providersTokens.borderTokens.widthThin; + @override + double get sizeIcon => providersTokens.sizeTokens.iconWithLabelLargeSizeSmall; + @override + double get sizeMinHeight => providersTokens.sizeTokens.minInteractiveArea; + @override + double get sizeMinHeightBottomActionPlacement => DimensionRawTokens.dimension1250; + @override + double get sizeMinWidth => DimensionRawTokens.dimension2000; + @override + double get spaceColumnGap => providersTokens.spaceTokens.columnGapMedium; + @override + double get spaceColumnGapAction => providersTokens.spaceTokens.columnGapSmall; + @override + double get spacePaddingBlock => providersTokens.spaceTokens.paddingBlockMedium; + @override + double get spacePaddingInline => providersTokens.spaceTokens.paddingInlineLarge; + @override + double get spaceRowGap => providersTokens.spaceTokens.rowGapSmall; + @override + double get spaceRowGapAction => providersTokens.spaceTokens.rowGap2xsmall; + @override + double get spaceRowGapBullet => providersTokens.spaceTokens.rowGapNone; +} From e15e7278b46045464fa23d22b4dbeeb2b2b96daa Mon Sep 17 00:00:00 2001 From: Ahmed Amine Zribi Date: Mon, 20 Apr 2026 15:07:26 +0100 Subject: [PATCH 2/5] chore: update component input with their version --- .../password_input_demo_screen.dart | 87 ++++++++++---- .../phone_number_input_demo_screen.dart | 106 +++++++++++++----- .../lib/ouds_component_version.dart | 34 +++--- .../lib/ouds_tokens_version.dart | 19 ++-- 4 files changed, 166 insertions(+), 80 deletions(-) diff --git a/app/lib/ui/components/form_input/password_input/password_input_demo_screen.dart b/app/lib/ui/components/form_input/password_input/password_input_demo_screen.dart index 03c1bee9b..e2e43932b 100644 --- a/app/lib/ui/components/form_input/password_input/password_input_demo_screen.dart +++ b/app/lib/ui/components/form_input/password_input/password_input_demo_screen.dart @@ -37,10 +37,11 @@ import 'package:provider/provider.dart'; class PasswordInputDemoScreen extends StatefulWidget { final String? previousPageTitle; - const PasswordInputDemoScreen({super.key,this.previousPageTitle}); + const PasswordInputDemoScreen({super.key, this.previousPageTitle}); @override - State createState() => _PasswordInputDemoScreenState(); + State createState() => + _PasswordInputDemoScreenState(); } class _PasswordInputDemoScreenState extends State { @@ -60,13 +61,18 @@ class _PasswordInputDemoScreenState extends State { key: _scaffoldKey, inputType: FormFieldsTypeEnum.passwordInput, child: Padding( - padding: EdgeInsets.only(bottom: defaultTargetPlatform == TargetPlatform.android ? MediaQuery.of(context).viewPadding.bottom : OudsTheme.of(context).spaceScheme(context).paddingBlockNone), + padding: EdgeInsets.only( + bottom: defaultTargetPlatform == TargetPlatform.android + ? MediaQuery.of(context).viewPadding.bottom + : OudsTheme.of(context).spaceScheme(context).paddingBlockNone, + ), child: Scaffold( extendBodyBehindAppBar: true, appBar: MainAppBar( - showBackButton: true, - title: context.l10n.app_components_passwordInput_label, - previousPageTitle: widget.previousPageTitle), + showBackButton: true, + title: context.l10n.app_components_passwordInput_label, + previousPageTitle: widget.previousPageTitle, + ), bottomSheet: OudsSheetsBottom( onExpansionChanged: _onExpansionChanged, sheetContent: const _CustomizationContent(), @@ -93,20 +99,29 @@ class _Body extends StatefulWidget { class _BodyState extends State<_Body> { @override Widget build(BuildContext context) { - final themeController = Provider.of(context, listen: false); + final themeController = Provider.of( + context, + listen: false, + ); return DetailScreenDescription( description: context.l10n.app_components_passwordInput_description_text, widget: Column( children: [ const _TextInputDemo(), - SizedBox(height: themeController.currentTheme.spaceScheme(context).fixedMedium), + SizedBox( + height: themeController.currentTheme + .spaceScheme(context) + .fixedMedium, + ), Code( code: FormFieldsCodeGenerator.updateCode( context, FormFieldsTypeEnum.passwordInput, ), ), - ReferenceDesignVersionComponent(version: OudsComponentVersion.textInput), + ReferenceDesignVersionComponent( + version: OudsComponentVersion.passwordInput, + ), ], ), ); @@ -163,7 +178,9 @@ class _TextInputDemoState extends State<_TextInputDemo> { @override Widget build(BuildContext context) { - final customizationState = FormFieldsCustomization.of(context)!; // safe to use ! + final customizationState = FormFieldsCustomization.of( + context, + )!; // safe to use ! return LightDarkBox( hasConstrainedMaxWidthOption: true, @@ -180,15 +197,35 @@ class _TextInputDemoState extends State<_TextInputDemo> { /// }, decoration: OudsPasswordInputDecoration( - labelText: customizationState.labelText.isNotEmpty ? FormFieldsCustomizationUtils.getLabelText(customizationState) : null, - helperText: customizationState.helperText.isNotEmpty ? FormFieldsCustomizationUtils.getHelperText(customizationState) : null, - hintText: customizationState.placeholderText.isNotEmpty ? FormFieldsCustomizationUtils.getPlaceholderText(customizationState) : null, + labelText: customizationState.labelText.isNotEmpty + ? FormFieldsCustomizationUtils.getLabelText( + customizationState, + ) + : null, + helperText: customizationState.helperText.isNotEmpty + ? FormFieldsCustomizationUtils.getHelperText( + customizationState, + ) + : null, + hintText: customizationState.placeholderText.isNotEmpty + ? FormFieldsCustomizationUtils.getPlaceholderText( + customizationState, + ) + : null, prefixIcon: customizationState.hasLeadingIcon, - prefix: customizationState.prefixText.isNotEmpty ? FormFieldsCustomizationUtils.getPrefixText(customizationState) : null, - errorText: customizationState.hasError ? context.l10n.app_components_passwordInput_error_label : null, + prefix: customizationState.prefixText.isNotEmpty + ? FormFieldsCustomizationUtils.getPrefixText( + customizationState, + ) + : null, + errorText: customizationState.hasError + ? context.l10n.app_components_passwordInput_error_label + : null, loader: customizationState.hasLoader, outlined: customizationState.hasOutlined, - constrainedMaxWidth: customizationState.hasConstrainedMaxWidth ? true : false, + constrainedMaxWidth: customizationState.hasConstrainedMaxWidth + ? true + : false, ), ), ], @@ -250,13 +287,12 @@ class _CustomizationContentState extends State<_CustomizationContent> { title: context.l10n.app_common_enabled_label, value: customizationState.hasEnabled, onChanged: - /// Specific case: The switch is disabled if there is an error (hasError is true). customizationState.isEnabledWhenError == true - ? null // Disable the switch if there is an error - : (value) { - customizationState.hasEnabled = value; - }, + ? null // Disable the switch if there is an error + : (value) { + customizationState.hasEnabled = value; + }, ), CustomizableSwitch( title: context.l10n.app_components_common_readOnly_label, @@ -270,7 +306,10 @@ class _CustomizationContentState extends State<_CustomizationContent> { CustomizableSwitch( title: context.l10n.app_components_common_error_label, value: customizationState.hasError, - onChanged: customizationState.isErrorWhenEnabled || customizationState.isErrorWhenLoader || customizationState.isErrorWhenReadOnly + onChanged: + customizationState.isErrorWhenEnabled || + customizationState.isErrorWhenLoader || + customizationState.isErrorWhenReadOnly ? null : (value) { customizationState.hasError = value; @@ -287,7 +326,9 @@ class _CustomizationContentState extends State<_CustomizationContent> { title: context.l10n.app_components_common_loader_label, value: customizationState.hasLoader, // The switch is disabled when the user is not typing - onChanged: (!customizationState.isTyping || customizationState.isLoaderWhenError) + onChanged: + (!customizationState.isTyping || + customizationState.isLoaderWhenError) ? null : (value) { customizationState.hasLoader = value; diff --git a/app/lib/ui/components/form_input/phone_number/phone_number_input_demo_screen.dart b/app/lib/ui/components/form_input/phone_number/phone_number_input_demo_screen.dart index bba2c8ede..479b1ed11 100644 --- a/app/lib/ui/components/form_input/phone_number/phone_number_input_demo_screen.dart +++ b/app/lib/ui/components/form_input/phone_number/phone_number_input_demo_screen.dart @@ -40,13 +40,15 @@ import 'package:provider/provider.dart'; class PhoneNumberInputDemoScreen extends StatefulWidget { final String? previousPageTitle; - const PhoneNumberInputDemoScreen({super.key,this.previousPageTitle}); + const PhoneNumberInputDemoScreen({super.key, this.previousPageTitle}); @override - State createState() => _PhoneNumberInputDemoScreenState(); + State createState() => + _PhoneNumberInputDemoScreenState(); } -class _PhoneNumberInputDemoScreenState extends State { +class _PhoneNumberInputDemoScreenState + extends State { final _scaffoldKey = GlobalKey(); bool _isBottomSheetExpanded = true; @@ -63,7 +65,11 @@ class _PhoneNumberInputDemoScreenState extends State key: _scaffoldKey, inputType: FormFieldsTypeEnum.phoneNumberInput, child: Padding( - padding: EdgeInsets.only(bottom: defaultTargetPlatform == TargetPlatform.android ? MediaQuery.of(context).viewPadding.bottom : OudsTheme.of(context).spaceScheme(context).paddingBlockNone), + padding: EdgeInsets.only( + bottom: defaultTargetPlatform == TargetPlatform.android + ? MediaQuery.of(context).viewPadding.bottom + : OudsTheme.of(context).spaceScheme(context).paddingBlockNone, + ), child: Scaffold( extendBodyBehindAppBar: true, appBar: MainAppBar( @@ -97,20 +103,30 @@ class _Body extends StatefulWidget { class _BodyState extends State<_Body> { @override Widget build(BuildContext context) { - final themeController = Provider.of(context, listen: false); + final themeController = Provider.of( + context, + listen: false, + ); return DetailScreenDescription( - description: context.l10n.app_components_phoneNumberInput_description_text, + description: + context.l10n.app_components_phoneNumberInput_description_text, widget: Column( children: [ const _PhoneNumberInputDemo(), - SizedBox(height: themeController.currentTheme.spaceScheme(context).fixedMedium), + SizedBox( + height: themeController.currentTheme + .spaceScheme(context) + .fixedMedium, + ), Code( code: FormFieldsCodeGenerator.updateCode( context, FormFieldsTypeEnum.phoneNumberInput, ), ), - ReferenceDesignVersionComponent(version: OudsComponentVersion.textInput), + ReferenceDesignVersionComponent( + version: OudsComponentVersion.phoneNumberInput, + ), ], ), ); @@ -183,7 +199,9 @@ class _PhoneNumberInputDemoState extends State<_PhoneNumberInputDemo> { @override Widget build(BuildContext context) { - final customizationState = FormFieldsCustomization.of(context)!; // safe to use ! + final customizationState = FormFieldsCustomization.of( + context, + )!; // safe to use ! final themeController = Provider.of(context, listen: true); return LightDarkBox( @@ -195,7 +213,8 @@ class _PhoneNumberInputDemoState extends State<_PhoneNumberInputDemo> { readOnly: customizationState.hasReadOnly, countrySelector: customizationState.hasCountrySelector ? CountrySelector( - readOnly: customizationState.isCountrySelectorWhenReadOnlyAndEnable, + readOnly: + customizationState.isCountrySelectorWhenReadOnlyAndEnable, countryFilter: CountryFilter.all, //codes: ["fr", "tn", "us"], selectedCountry: selectedCountry, @@ -209,16 +228,32 @@ class _PhoneNumberInputDemoState extends State<_PhoneNumberInputDemo> { /// }, decoration: OudsInputDecoration( - labelText: customizationState.labelText.isNotEmpty ? FormFieldsCustomizationUtils.getLabelText(customizationState) : null, - helperText: customizationState.helperText.isNotEmpty ? FormFieldsCustomizationUtils.getHelperText(customizationState) : null, - hintText: customizationState.placeholderText.isNotEmpty ? FormFieldsCustomizationUtils.getPlaceholderText(customizationState) : null, - prefix: customizationState.prefixText.isNotEmpty ? FormFieldsCustomizationUtils.getPrefixText(customizationState) : null, + labelText: customizationState.labelText.isNotEmpty + ? FormFieldsCustomizationUtils.getLabelText(customizationState) + : null, + helperText: customizationState.helperText.isNotEmpty + ? FormFieldsCustomizationUtils.getHelperText(customizationState) + : null, + hintText: customizationState.placeholderText.isNotEmpty + ? FormFieldsCustomizationUtils.getPlaceholderText( + customizationState, + ) + : null, + prefix: customizationState.prefixText.isNotEmpty + ? FormFieldsCustomizationUtils.getPrefixText(customizationState) + : null, hasPrefix: customizationState.hasPrefix, - prefixIcon: customizationState.hasLeadingIcon ? AppAssets.icons.deviceSmartphone(themeController) : null, - errorText: customizationState.hasError ? context.l10n.app_components_phoneNumberInput_error_label : null, + prefixIcon: customizationState.hasLeadingIcon + ? AppAssets.icons.deviceSmartphone(themeController) + : null, + errorText: customizationState.hasError + ? context.l10n.app_components_phoneNumberInput_error_label + : null, loader: customizationState.hasLoader, outlined: customizationState.hasOutlined, - constrainedMaxWidth: customizationState.hasConstrainedMaxWidth ? true : false, + constrainedMaxWidth: customizationState.hasConstrainedMaxWidth + ? true + : false, ), ), ); @@ -278,13 +313,12 @@ class _CustomizationContentState extends State<_CustomizationContent> { title: context.l10n.app_common_enabled_label, value: customizationState.hasEnabled, onChanged: - /// Specific case: The switch is disabled if there is an error (hasError is true). customizationState.isEnabledWhenError == true - ? null // Disable the switch if there is an error - : (value) { - customizationState.hasEnabled = value; - }, + ? null // Disable the switch if there is an error + : (value) { + customizationState.hasEnabled = value; + }, ), CustomizableSwitch( title: context.l10n.app_components_common_readOnly_label, @@ -298,21 +332,27 @@ class _CustomizationContentState extends State<_CustomizationContent> { CustomizableSwitch( title: context.l10n.app_components_common_error_label, value: customizationState.hasError, - onChanged: customizationState.isErrorWhenEnabled || customizationState.isErrorWhenLoader || customizationState.isErrorWhenReadOnly + onChanged: + customizationState.isErrorWhenEnabled || + customizationState.isErrorWhenLoader || + customizationState.isErrorWhenReadOnly ? null : (value) { customizationState.hasError = value; }, ), CustomizableSwitch( - title: context.l10n.app_components_textInput_leadingIcon_label, - value: !customizationState.hasCountrySelector, - onChanged: (value) { - customizationState.hasLeadingIcon = value; - customizationState.hasCountrySelector = !value; - }), + title: context.l10n.app_components_textInput_leadingIcon_label, + value: !customizationState.hasCountrySelector, + onChanged: (value) { + customizationState.hasLeadingIcon = value; + customizationState.hasCountrySelector = !value; + }, + ), CustomizableSwitch( - title: context.l10n.app_components_phoneNumberInput_country_selector_label, + title: context + .l10n + .app_components_phoneNumberInput_country_selector_label, value: !customizationState.hasLeadingIcon, onChanged: (value) { customizationState.hasCountrySelector = value; @@ -329,7 +369,11 @@ class _CustomizationContentState extends State<_CustomizationContent> { CustomizableSwitch( title: context.l10n.app_components_common_loader_label, value: customizationState.hasLoader, - onChanged: customizationState.isLoaderWhenError || !customizationState.isTyping || customizationState.isLoaderWhenEnabled || customizationState.isEnabledWhenPlaceHolderIsNotEmpty + onChanged: + customizationState.isLoaderWhenError || + !customizationState.isTyping || + customizationState.isLoaderWhenEnabled || + customizationState.isEnabledWhenPlaceHolderIsNotEmpty ? null : (value) { customizationState.hasLoader = value; diff --git a/ouds_theme_contract/lib/ouds_component_version.dart b/ouds_theme_contract/lib/ouds_component_version.dart index 9696df81a..13b5d9050 100644 --- a/ouds_theme_contract/lib/ouds_component_version.dart +++ b/ouds_theme_contract/lib/ouds_component_version.dart @@ -13,21 +13,21 @@ // Generated by Tokenator class OudsComponentVersion { - static const alertMessage = '1.0.0'; - static const badge = '1.2.0'; - static const bar = '1.0.0'; - static const button = '3.2.0'; - static const checkbox = '2.4.0'; - static const chip = '1.3.0'; - static const divider = '1.0.0'; - static const inlineAlert = '1.0.0'; - static const link = '2.2.0'; - static const passwordInput = '1.2.0'; - static const phoneNumberInput = '1.2.0'; - static const pinCodeInput = '1.2.0'; - static const radioButton = '1.4.0'; - static const skeleton = '1.0.0'; - static const switchButton = '1.5.0'; - static const tag = '1.4.0'; - static const textInput = '1.3.0'; + static const alertMessage = '1.1.0'; + static const badge = '1.2.0'; + static const bar = '1.0.0'; + static const button = '3.2.0'; + static const checkbox = '2.4.0'; + static const chip = '1.3.0'; + static const divider = '1.0.0'; + static const inlineAlert = '1.0.0'; + static const link = '2.2.0'; + static const passwordInput = '1.2.0'; + static const phoneNumberInput = '1.2.0'; + static const pinCodeInput = '1.2.0'; + static const radioButton = '1.4.0'; + static const skeleton = '1.0.0'; + static const switchButton = '1.5.0'; + static const tag = '1.4.0'; + static const textInput = '1.3.0'; } diff --git a/ouds_theme_contract/lib/ouds_tokens_version.dart b/ouds_theme_contract/lib/ouds_tokens_version.dart index 21cbd3b1d..406b5176c 100644 --- a/ouds_theme_contract/lib/ouds_tokens_version.dart +++ b/ouds_theme_contract/lib/ouds_tokens_version.dart @@ -13,13 +13,14 @@ // Generated by Tokenator class OudsTokensVersion { - static const oudsCore = '1.9.0'; - static const androidCore = '1.0.0'; - static const androidSystem = '1.2.0'; - static const orangeCore = '1.2.0'; - static const orangeBrand = '2.3.0'; - static const soshCore = '1.2.0'; - static const soshBrand = '2.3.0'; - static const wireframeCore = '1.3.0'; - static const wireframeBrand = '2.3.0'; + static const oudsCore = '1.9.0'; + static const androidCore = '1.0.0'; + static const androidSystem = '1.2.0'; + static const orangeCore = '1.2.0'; + static const orangeBrand = '2.3.0'; + static const orangeCompactBrand = '2.3.0'; + static const soshCore = '1.2.0'; + static const soshBrand = '2.3.0'; + static const wireframeCore = '1.3.0'; + static const wireframeBrand = '2.3.0'; } From 39c4a394272522d46872db4e63b87209b72de671 Mon Sep 17 00:00:00 2001 From: Ahmed Amine Zribi Date: Mon, 20 Apr 2026 15:07:37 +0100 Subject: [PATCH 3/5] chore: update changelog --- app/CHANGELOG.md | 3 +++ ouds_theme_contract/CHANGELOG.md | 1 + ouds_theme_orange/CHANGELOG.md | 1 + ouds_theme_orange_compact/CHANGELOG.md | 1 + ouds_theme_sosh/CHANGELOG.md | 1 + ouds_theme_wireframe/CHANGELOG.md | 1 + 6 files changed, 8 insertions(+) diff --git a/app/CHANGELOG.md b/app/CHANGELOG.md index bf6c7b63b..63a08e9a1 100644 --- a/app/CHANGELOG.md +++ b/app/CHANGELOG.md @@ -14,6 +14,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [Library] Manage Helvetica Neue Arabic font ([#404](https://github.com/Orange-OpenSource/ouds-flutter/issues/404)) ### Changed +- [DemoApp][Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) +- [Tool] improve dartDoc permissions ([#664](https://github.com/Orange-OpenSource/ouds-flutter/issues/664)) +- [Tool] Improve OSSF score ([#659](https://github.com/Orange-OpenSource/ouds-flutter/issues/659)) - [DemoApp][Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) - [DemoApp] Unused dependency detected in Flutter demo app ([#646](https://github.com/Orange-OpenSource/ouds-flutter/issues/646)) - [DemoApp][Library] Remove OudsTagConfig and add rounded corner into `Tag` ([#598](https://github.com/Orange-OpenSource/ouds-flutter/issues/598)) diff --git a/ouds_theme_contract/CHANGELOG.md b/ouds_theme_contract/CHANGELOG.md index 277515dad..52aaf4a2e 100644 --- a/ouds_theme_contract/CHANGELOG.md +++ b/ouds_theme_contract/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +- [Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) - [Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) - [Library] Remove OudsTagConfig and add rounded corner into `Tag` ([#598](https://github.com/Orange-OpenSource/ouds-flutter/issues/598)) diff --git a/ouds_theme_orange/CHANGELOG.md b/ouds_theme_orange/CHANGELOG.md index 066797487..0c107341e 100644 --- a/ouds_theme_orange/CHANGELOG.md +++ b/ouds_theme_orange/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [Library] Manage Helvetica Neue Arabic font ([#404](https://github.com/Orange-OpenSource/ouds-flutter/issues/404)) ### Changed +- [Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) - [Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) ### Fixed diff --git a/ouds_theme_orange_compact/CHANGELOG.md b/ouds_theme_orange_compact/CHANGELOG.md index 50c486f40..b78361541 100644 --- a/ouds_theme_orange_compact/CHANGELOG.md +++ b/ouds_theme_orange_compact/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +- [Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) - [Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) ### Fixed diff --git a/ouds_theme_sosh/CHANGELOG.md b/ouds_theme_sosh/CHANGELOG.md index 91de9f17f..25f179b80 100644 --- a/ouds_theme_sosh/CHANGELOG.md +++ b/ouds_theme_sosh/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +- [Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) - [Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) ### Fixed diff --git a/ouds_theme_wireframe/CHANGELOG.md b/ouds_theme_wireframe/CHANGELOG.md index 088837223..361676f31 100644 --- a/ouds_theme_wireframe/CHANGELOG.md +++ b/ouds_theme_wireframe/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added ### Changed +- [Library] update tokens 1.9.0 - Component Alert ([#672](https://github.com/Orange-OpenSource/ouds-flutter/issues/672)) - [Library] Downgrade to Flutter SDK 3.35 and update documentation ([#656](https://github.com/Orange-OpenSource/ouds-flutter/issues/656)) ### Fixed From 4d2b842f8045c9f9c800e314d88f5754d27b7390 Mon Sep 17 00:00:00 2001 From: boosted-bot Date: Tue, 21 Apr 2026 10:32:29 +0100 Subject: [PATCH 4/5] chore: update tokens --- .../orangeCompact_alert_tokens.dart | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 ouds_theme_orange_compact/lib/components/orangeCompact_alert_tokens.dart diff --git a/ouds_theme_orange_compact/lib/components/orangeCompact_alert_tokens.dart b/ouds_theme_orange_compact/lib/components/orangeCompact_alert_tokens.dart new file mode 100644 index 000000000..f284e52d2 --- /dev/null +++ b/ouds_theme_orange_compact/lib/components/orangeCompact_alert_tokens.dart @@ -0,0 +1,53 @@ +// +// Software Name: OUDS Flutter +// SPDX-FileCopyrightText: Copyright (c) Orange SA +// SPDX-License-Identifier: MIT +// +// This software is distributed under the MIT license, +// the text of which is available at https://opensource.org/license/MIT/ +// or see the "LICENSE" file for more details. +// +// Software description: Flutter library of reusable graphical components +// + +// Orange Compact brand tokens version 2.3.0 +// Generated by Tokenator + +import 'package:ouds_global_raw_tokens/dimension_raw_tokens.dart'; +import 'package:ouds_theme_contract/ouds_tokens_provider.dart'; +import 'package:ouds_theme_contract/theme/tokens/components/ouds_alert_tokens.dart'; + +class OrangeCompactAlertTokens extends OudsAlertTokens { + final OudsProvidersTokens providersTokens; + + OrangeCompactAlertTokens(this.providersTokens); + + @override + double get borderRadiusDefault => providersTokens.borderTokens.radiusDefault; + @override + double get borderRadiusRounded => providersTokens.borderTokens.radiusLarge; + @override + double get borderWidth => providersTokens.borderTokens.widthNone; + @override + double get sizeIcon => providersTokens.sizeTokens.iconWithLabelLargeSizeSmall; + @override + double get sizeMinHeight => providersTokens.sizeTokens.minInteractiveArea; + @override + double get sizeMinHeightBottomActionPlacement => DimensionRawTokens.dimension1050; + @override + double get sizeMinWidth => DimensionRawTokens.dimension1800; + @override + double get spaceColumnGap => providersTokens.spaceTokens.columnGapMedium; + @override + double get spaceColumnGapAction => providersTokens.spaceTokens.columnGapSmall; + @override + double get spacePaddingBlock => providersTokens.spaceTokens.paddingBlockMedium; + @override + double get spacePaddingInline => providersTokens.spaceTokens.paddingInlineLarge; + @override + double get spaceRowGap => providersTokens.spaceTokens.rowGapSmall; + @override + double get spaceRowGapAction => providersTokens.spaceTokens.rowGap2xsmall; + @override + double get spaceRowGapBullet => providersTokens.spaceTokens.rowGap2xsmall; +} From b48ffb9c7eb42b6b9024bfde846274e72b503c46 Mon Sep 17 00:00:00 2001 From: Ahmed Amine Zribi Date: Tue, 21 Apr 2026 18:23:59 +0100 Subject: [PATCH 5/5] chore(doc): update readme.md --- ouds_core/README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/ouds_core/README.md b/ouds_core/README.md index e3daa21be..8fefbd195 100644 --- a/ouds_core/README.md +++ b/ouds_core/README.md @@ -54,6 +54,10 @@ It is intended to replace internal frameworks and the previous [ODS](https://git + + Alert Message + 1.1.0 + Badge 1.2.0 @@ -64,7 +68,7 @@ It is intended to replace internal frameworks and the previous [ODS](https://git Button - 3.2.0 + 3.2.0 Checkbox @@ -78,12 +82,24 @@ It is intended to replace internal frameworks and the previous [ODS](https://git Divider 1.0.0 + + Inline Alert + 1.0.0 + Link 2.2.0 - Pin Code Input + Password Input + 1.2.0 + + + Phone Number Input + 1.2.0 + + + Pin Code Input 1.2.0