Skip to content

Commit 88a97a4

Browse files
committed
Merge branch 'main' into sync-devlop-main-2.0.0
# Conflicts: # .github/workflows/dartdoc-gh-pages.yml # MIGRATION.md # NOTICE.txt # app/CHANGELOG.md # app/android/build.gradle # app/android/settings.gradle # app/ios/Podfile.lock # app/lib/l10n/gen/ouds_flutter_app_localizations.dart # app/lib/l10n/gen/ouds_flutter_app_localizations_ar.dart # app/lib/l10n/gen/ouds_flutter_app_localizations_en.dart # app/lib/l10n/gen/ouds_flutter_app_localizations_fr.dart # app/lib/l10n/ouds_flutter_ar.arb # app/lib/l10n/ouds_flutter_en.arb # app/lib/l10n/ouds_flutter_fr.arb # app/lib/ui/components/alert/alert_message_demo_screen.dart # app/lib/ui/components/badge/badge_customization.dart # app/lib/ui/components/badge/badge_demo_screen.dart # app/lib/ui/components/chip/chip_filter_demo_sreen.dart # app/lib/ui/components/chip/chip_suggestion_demo_screen.dart # app/lib/ui/components/components.dart # app/lib/ui/components/navigation/navigation_bar_customization_utils.dart # app/lib/ui/components/navigation/navigation_bar_demo_screen.dart # app/lib/ui/components/pin_code_input/pin_code_input_demo_screen.dart # app/lib/ui/components/tag/input_tag_demo_screen.dart # app/lib/ui/components/top_bar/toolbar_top_customization_utils.dart # app/lib/ui/components/top_bar/top_appbar_customization_utils.dart # app/lib/ui/components/top_bar/top_bar_code_generator.dart # app/lib/ui/components/top_bar/top_bar_customization_utils.dart # app/lib/ui/components/top_bar/top_bar_demo_screen.dart # app/lib/ui/tokens/color/color_tokens_model.dart # app/lib/ui/utilities/app_assets.dart # app/pubspec.yaml # ouds_core/CHANGELOG.md # ouds_core/README.md # ouds_core/lib/components/alert/ouds_alert_message.dart # ouds_core/lib/components/alert/ouds_inline_alert.dart # ouds_core/lib/components/badge/internal/ouds_badge_size_modifier.dart # ouds_core/lib/components/badge/internal/ouds_badge_status_modifier.dart # ouds_core/lib/components/badge/ouds_badge.dart # ouds_core/lib/components/button/internal/ouds_button_utils.dart # ouds_core/lib/components/button/ouds_button.dart # ouds_core/lib/components/checkbox/ouds_checkbox_item.dart # ouds_core/lib/components/chip/ouds_filter_chip.dart # ouds_core/lib/components/chip/ouds_suggestion_chip.dart # ouds_core/lib/components/common/ouds_icon_status.dart # ouds_core/lib/components/control/internal/modifier/ouds_control_indicator.dart # ouds_core/lib/components/control/ouds_control_item.dart # ouds_core/lib/components/form_input/internal/ouds_form_input_decoration.dart # ouds_core/lib/components/form_input/ouds_phone_number_input.dart # ouds_core/lib/components/form_input/ouds_text_input.dart # ouds_core/lib/components/form_input/password_input/ouds_password_input.dart # ouds_core/lib/components/form_input/password_input/ouds_password_input_decoration.dart # ouds_core/lib/components/navigation/internal/ouds_navigation_bar_status_modifier.dart # ouds_core/lib/components/navigation/ouds_navigation_bar.dart # ouds_core/lib/components/navigation/ouds_navigation_bar_item.dart # ouds_core/lib/components/navigation/ouds_tab_bar.dart # ouds_core/lib/components/pin_code_input/digit_input/ouds_digit_input.dart # ouds_core/lib/components/pin_code_input/ouds_pin_code_input.dart # ouds_core/lib/components/radio_button/ouds_radio_button.dart # ouds_core/lib/components/radio_button/ouds_radio_button_item.dart # ouds_core/lib/components/switch/ouds_switch_item.dart # ouds_core/lib/components/tag/internal/ouds_tag_status_modifier.dart # ouds_core/lib/components/tag/internal/ouds_tag_text_style_modifier.dart # ouds_core/lib/components/tag/ouds_input_tag.dart # ouds_core/lib/components/tag/ouds_tag.dart # ouds_core/lib/components/top_bar/ouds_top_appbar.dart # ouds_core/lib/components/top_bar/ouds_top_bar.dart # ouds_core/lib/components/top_bar/ouds_top_bar_action_config.dart # ouds_core/lib/components/utilities/app_assets.dart # ouds_core/lib/l10n/gen/ouds_localizations.dart # ouds_core/lib/l10n/gen/ouds_localizations_ar.dart # ouds_core/lib/l10n/gen/ouds_localizations_en.dart # ouds_core/lib/l10n/gen/ouds_localizations_fr.dart # ouds_core/lib/l10n/ouds_flutter_ar.arb # ouds_core/lib/l10n/ouds_flutter_en.arb # ouds_core/lib/l10n/ouds_flutter_fr.arb # ouds_core/pubspec.yaml # ouds_global_raw_tokens/CHANGELOG.md # ouds_global_raw_tokens/README.md # ouds_global_raw_tokens/lib/border_raw_tokens.dart # ouds_global_raw_tokens/lib/color_raw_tokens.dart # ouds_global_raw_tokens/lib/dimension_raw_tokens.dart # ouds_global_raw_tokens/lib/effect_raw_tokens.dart # ouds_global_raw_tokens/lib/font_raw_tokens.dart # ouds_global_raw_tokens/lib/grid_raw_tokens.dart # ouds_global_raw_tokens/lib/opacity_raw_tokens.dart # ouds_global_raw_tokens/pubspec.yaml # ouds_theme_contract/CHANGELOG.md # ouds_theme_contract/README.md # ouds_theme_contract/lib/config/ouds_theme_config_model.dart # ouds_theme_contract/lib/ouds_component_version.dart # ouds_theme_contract/lib/ouds_tokens_version.dart # ouds_theme_contract/lib/theme/scheme/color/ouds_color_scheme.dart # ouds_theme_contract/lib/theme/scheme/responsive/ouds_size_scheme.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_alert_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_badge_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_bar_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_bulletList_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_buttonMono_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_button_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_checkbox_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_chip_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_controlItem_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_divider_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_icon_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_inputTag_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_linkMono_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_link_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_pinCodeInput_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_radioButton_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_skeleton_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_switch_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_tag_tokens.dart # ouds_theme_contract/lib/theme/tokens/components/ouds_textInput_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_border_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_action_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_always_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_bg_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_border_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_content_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_decorative_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_opacity_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_overlay_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_repository_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_color_surface_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_effect_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_elevation_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_font_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_grid_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_opacity_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_size_semantic_tokens.dart # ouds_theme_contract/lib/theme/tokens/semantic/ouds_space_semantic_tokens.dart # ouds_theme_contract/pubspec.yaml # ouds_theme_orange/CHANGELOG.md # ouds_theme_orange/README.md # ouds_theme_orange/assets/component/alert/important-fill.svg # ouds_theme_orange/assets/component/alert/info-fill.svg # ouds_theme_orange/assets/component/alert/tick-confirmation-fill.svg # ouds_theme_orange/assets/component/alert/warning-external-shape.svg # ouds_theme_orange/assets/component/alert/warning-internal-shape.svg # ouds_theme_orange/assets/component/alert/warning.svg # ouds_theme_orange/assets/functional/navigation/form-chevron-left.svg # ouds_theme_orange/lib/components/orange_alert_tokens.dart # ouds_theme_orange/lib/components/orange_badge_tokens.dart # ouds_theme_orange/lib/components/orange_bar_tokens.dart # ouds_theme_orange/lib/components/orange_bulletList_tokens.dart # ouds_theme_orange/lib/components/orange_buttonMono_tokens.dart # ouds_theme_orange/lib/components/orange_button_tokens.dart # ouds_theme_orange/lib/components/orange_checkbox_tokens.dart # ouds_theme_orange/lib/components/orange_chip_tokens.dart # ouds_theme_orange/lib/components/orange_controlItem_tokens.dart # ouds_theme_orange/lib/components/orange_divider_tokens.dart # ouds_theme_orange/lib/components/orange_icon_tokens.dart # ouds_theme_orange/lib/components/orange_inputTag_tokens.dart # ouds_theme_orange/lib/components/orange_linkMono_tokens.dart # ouds_theme_orange/lib/components/orange_link_tokens.dart # ouds_theme_orange/lib/components/orange_pinCodeInput_tokens.dart # ouds_theme_orange/lib/components/orange_radioButton_tokens.dart # ouds_theme_orange/lib/components/orange_skeleton_tokens.dart # ouds_theme_orange/lib/components/orange_switch_tokens.dart # ouds_theme_orange/lib/components/orange_tag_tokens.dart # ouds_theme_orange/lib/components/orange_textInput_tokens.dart # ouds_theme_orange/lib/material/orange_material_color_tokens.dart # ouds_theme_orange/lib/orange_theme.dart # ouds_theme_orange/lib/semantic/orange_border_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_action_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_always_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_bg_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_border_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_content_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_decorative_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_opacity_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_overlay_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_repository_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_color_surface_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_effect_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_font_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_grid_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_opacity_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_size_semantic_tokens.dart # ouds_theme_orange/lib/semantic/orange_space_semantic_tokens.dart # ouds_theme_orange/pubspec.yaml # ouds_theme_orange_compact/CHANGELOG.md # ouds_theme_orange_compact/README.md # ouds_theme_orange_compact/assets/component/alert/important-fill.svg # ouds_theme_orange_compact/assets/component/alert/info-fill.svg # ouds_theme_orange_compact/assets/component/alert/tick-confirmation-fill.svg # ouds_theme_orange_compact/assets/component/alert/warning-external-shape.svg # ouds_theme_orange_compact/assets/component/alert/warning-internal-shape.svg # ouds_theme_orange_compact/assets/component/alert/warning.svg # ouds_theme_orange_compact/lib/components/orangeCompact_alert_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_badge_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_bar_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_bulletList_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_buttonMono_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_button_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_checkbox_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_chip_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_controlItem_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_divider_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_icon_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_inputTag_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_linkMono_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_link_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_pinCodeInput_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_radioButton_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_skeleton_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_switch_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_tag_tokens.dart # ouds_theme_orange_compact/lib/components/orangeCompact_textInput_tokens.dart # ouds_theme_orange_compact/lib/material/orangeCompact_material_color_tokens.dart # ouds_theme_orange_compact/lib/orange_compact_theme.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_border_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_action_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_always_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_bg_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_border_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_content_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_opacity_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_overlay_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_repository_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_color_surface_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_effect_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_font_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_grid_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_opacity_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_size_semantic_tokens.dart # ouds_theme_orange_compact/lib/semantic/orangeCompact_space_semantic_tokens.dart # ouds_theme_orange_compact/pubspec.yaml # ouds_theme_sosh/CHANGELOG.md # ouds_theme_sosh/README.md # ouds_theme_sosh/assets/component/button/expanded-false.svg # ouds_theme_sosh/assets/component/button/expanded-true.svg # ouds_theme_sosh/assets/component/button/next.svg # ouds_theme_sosh/assets/component/button/previous.svg # ouds_theme_sosh/assets/component/chip/expanded-false.svg # ouds_theme_sosh/assets/component/chip/expanded-true.svg # ouds_theme_sosh/assets/component/link/expanded-false.svg # ouds_theme_sosh/assets/component/link/expanded-true.svg # ouds_theme_sosh/assets/component/link/next.svg # ouds_theme_sosh/assets/component/link/previous.svg # ouds_theme_sosh/assets/functional/navigation/form-chevron-left.svg # ouds_theme_sosh/lib/components/sosh_alert_tokens.dart # ouds_theme_sosh/lib/components/sosh_badge_tokens.dart # ouds_theme_sosh/lib/components/sosh_bar_tokens.dart # ouds_theme_sosh/lib/components/sosh_bulletList_tokens.dart # ouds_theme_sosh/lib/components/sosh_buttonMono_tokens.dart # ouds_theme_sosh/lib/components/sosh_button_tokens.dart # ouds_theme_sosh/lib/components/sosh_checkbox_tokens.dart # ouds_theme_sosh/lib/components/sosh_chip_tokens.dart # ouds_theme_sosh/lib/components/sosh_controlItem_tokens.dart # ouds_theme_sosh/lib/components/sosh_divider_tokens.dart # ouds_theme_sosh/lib/components/sosh_icon_tokens.dart # ouds_theme_sosh/lib/components/sosh_inputTag_tokens.dart # ouds_theme_sosh/lib/components/sosh_linkMono_tokens.dart # ouds_theme_sosh/lib/components/sosh_link_tokens.dart # ouds_theme_sosh/lib/components/sosh_pinCodeInput_tokens.dart # ouds_theme_sosh/lib/components/sosh_radioButton_tokens.dart # ouds_theme_sosh/lib/components/sosh_skeleton_tokens.dart # ouds_theme_sosh/lib/components/sosh_switch_tokens.dart # ouds_theme_sosh/lib/components/sosh_tag_tokens.dart # ouds_theme_sosh/lib/components/sosh_textInput_tokens.dart # ouds_theme_sosh/lib/material/sosh_material_color_tokens.dart # ouds_theme_sosh/lib/raw/sosh_color_raw_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_border_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_action_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_always_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_bg_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_border_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_content_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_opacity_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_overlay_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_repository_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_color_surface_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_effect_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_font_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_grid_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_opacity_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_size_semantic_tokens.dart # ouds_theme_sosh/lib/semantic/sosh_space_semantic_tokens.dart # ouds_theme_sosh/pubspec.yaml # ouds_theme_white_label/lib/semantic/white_label_color_opacity_semantic_tokens.dart # ouds_theme_wireframe/CHANGELOG.md # ouds_theme_wireframe/README.md # ouds_theme_wireframe/assets/communication/accessibility/accessibility-vision.svg # ouds_theme_wireframe/assets/communication/security-and-safety/lock.svg # ouds_theme_wireframe/assets/component/alert/important-fill.svg # ouds_theme_wireframe/assets/component/alert/info-fill.svg # ouds_theme_wireframe/assets/component/alert/tick-confirmation-fill.svg # ouds_theme_wireframe/assets/component/alert/warning-external-shape.svg # ouds_theme_wireframe/assets/component/alert/warning-internal-shape.svg # ouds_theme_wireframe/assets/component/alert/warning.svg # ouds_theme_wireframe/assets/component/button/expanded-false.svg # ouds_theme_wireframe/assets/component/button/expanded-true.svg # ouds_theme_wireframe/assets/component/button/expurge.svg # ouds_theme_wireframe/assets/component/button/increment-higher.svg # ouds_theme_wireframe/assets/component/button/increment-lower.svg # ouds_theme_wireframe/assets/component/button/next.svg # ouds_theme_wireframe/assets/component/button/previous.svg # ouds_theme_wireframe/assets/component/checkbox/checkbox-selected.svg # ouds_theme_wireframe/assets/component/checkbox/checkbox-undetermined.svg # ouds_theme_wireframe/assets/component/chip/expanded-false.svg # ouds_theme_wireframe/assets/component/chip/expanded-true.svg # ouds_theme_wireframe/assets/component/chip/tick.svg # ouds_theme_wireframe/assets/component/link/expanded-false.svg # ouds_theme_wireframe/assets/component/link/expanded-true.svg # ouds_theme_wireframe/assets/component/link/next.svg # ouds_theme_wireframe/assets/component/link/previous.svg # ouds_theme_wireframe/assets/component/radio-button/radio-button-selected.svg # ouds_theme_wireframe/assets/component/switch/selected-switch.svg # ouds_theme_wireframe/assets/component/tag/close.svg # ouds_theme_wireframe/assets/functional/actions/delete.svg # ouds_theme_wireframe/assets/functional/navigation/form-chevron-left.svg # ouds_theme_wireframe/assets/functional/navigation/menu.svg # ouds_theme_wireframe/assets/functional/settings-and-tools/hide.svg # ouds_theme_wireframe/assets/functional/social-and-engagement/heart-empty.svg # ouds_theme_wireframe/lib/components/wireframe_alert_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_badge_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_bar_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_bulletList_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_buttonMono_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_button_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_checkbox_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_chip_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_controlItem_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_divider_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_icon_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_inputTag_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_linkMono_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_link_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_pinCodeInput_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_radioButton_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_skeleton_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_switch_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_tag_tokens.dart # ouds_theme_wireframe/lib/components/wireframe_textInput_tokens.dart # ouds_theme_wireframe/lib/material/wireframe_material_color_tokens.dart # ouds_theme_wireframe/lib/raw/wireframe_color_raw_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_border_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_action_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_always_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_bg_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_border_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_content_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_opacity_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_overlay_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_repository_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_color_surface_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_effect_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_font_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_grid_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_opacity_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_size_semantic_tokens.dart # ouds_theme_wireframe/lib/semantic/wireframe_space_semantic_tokens.dart # ouds_theme_wireframe/pubspec.yaml
2 parents 7061bca + e5ad605 commit 88a97a4

75 files changed

Lines changed: 1111 additions & 3 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
26.9 KB
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
/*
2+
* // Software Name: OUDS Flutter
3+
* // SPDX-FileCopyrightText: Copyright (c) Orange SA
4+
* // SPDX-License-Identifier: MIT
5+
* //
6+
* // This software is distributed under the MIT license,
7+
* // the text of which is available at https://opensource.org/license/MIT/
8+
* // or see the "LICENSE" file for more details.
9+
* //
10+
* // Software description: Flutter library of reusable graphical components
11+
* //
12+
*/
13+
import 'package:flutter/material.dart';
14+
import 'package:ouds_theme_contract/ouds_theme.dart';
15+
import 'package:ouds_theme_contract/ouds_theme_contract.dart';
16+
17+
/// A widget that applies a specific theme to its child using [OudsTheme].
18+
///
19+
/// This widget allows setting a theme mode (`ThemeMode`) and a theme contract
20+
/// (`OudsThemeContract`). It wraps its child inside a background colored by a [ColoredBox].
21+
class ThemeBox extends StatelessWidget {
22+
/// The widget to display inside the [ThemeBox].
23+
final Widget child;
24+
25+
/// The theme mode to apply (light, dark, or system).
26+
final ThemeMode themeMode;
27+
28+
/// The theme contract defining the theme's design tokens and styles.
29+
final OudsThemeContract themeContract;
30+
31+
/// Constructor for [ThemeBox].
32+
///
33+
/// Requires [child], [themeMode], and [themeContract].
34+
const ThemeBox({
35+
required this.child,
36+
required this.themeMode,
37+
required this.themeContract,
38+
super.key,
39+
});
40+
41+
@override
42+
Widget build(BuildContext context) {
43+
return OudsTheme(
44+
themeContract: themeContract,
45+
themeMode: themeMode,
46+
onColoredSurface: false,
47+
child: Builder(
48+
builder: (context) {
49+
return ColoredBox(
50+
color: ColoredBoxColor.backgroundPrimary,
51+
child: Column(
52+
children: [
53+
child,
54+
],
55+
),
56+
);
57+
},
58+
),
59+
);
60+
}
61+
}
62+
63+
/// A demo colored box widget used to showcase `DARK` and `LIGHT` modes.
64+
/// It displays a background with centered content and a minimum height.
65+
class ColoredBox extends StatelessWidget {
66+
/// The widget to display at the center of the box.
67+
final Widget child;
68+
69+
/// The background color of the box, optional.
70+
final ColoredBoxColor? color;
71+
72+
/// Constructor for [ColoredBox].
73+
///
74+
/// Requires [child], [color] is optional.
75+
const ColoredBox({
76+
required this.child,
77+
this.color,
78+
super.key,
79+
});
80+
81+
@override
82+
Widget build(BuildContext context) {
83+
return Container(
84+
constraints: BoxConstraints(
85+
minHeight: 80,
86+
),
87+
width: double.infinity,
88+
color: color?.getValue(context),
89+
child: Padding(
90+
padding: EdgeInsetsDirectional.symmetric(
91+
vertical: OudsTheme.of(context).spaceScheme(context).fixedMedium,
92+
horizontal: OudsTheme.of(context).spaceScheme(context).fixedNone,
93+
),
94+
child: Container(
95+
alignment: AlignmentDirectional.centerStart,
96+
child: child,
97+
),
98+
),
99+
);
100+
}
101+
}
102+
103+
/// Enumeration representing the possible background colors of a [ColoredBox].
104+
enum ColoredBoxColor {
105+
/// Primary background color.
106+
backgroundPrimary;
107+
108+
/// Retrieves the color value associated with this enum in the current context.
109+
Color getValue(BuildContext context) {
110+
final theme = OudsTheme.of(context);
111+
112+
switch (this) {
113+
case ColoredBoxColor.backgroundPrimary:
114+
return theme.colorScheme(context).bgPrimary;
115+
}
116+
}
117+
}
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
/*
2+
* // Software Name: OUDS Flutter
3+
* // SPDX-FileCopyrightText: Copyright (c) Orange SA
4+
* // SPDX-License-Identifier: MIT
5+
* //
6+
* // This software is distributed under the MIT license,
7+
* // the text of which is available at https://opensource.org/license/MIT/
8+
* // or see the "LICENSE" file for more details.
9+
* //
10+
* // Software description: Flutter library of reusable graphical components
11+
* //
12+
*/
13+
/// @nodoc
14+
library;
15+
16+
import 'package:flutter/material.dart';
17+
import 'package:ouds_theme_contract/ouds_theme.dart';
18+
19+
/// Controls how the focus ring stroke is positioned relative to the widget bounds.
20+
enum FocusAlignment {
21+
/// The stroke is fully inside the widget bounds.
22+
inside,
23+
24+
/// The stroke is centered on the widget bounds (half inside, half outside).
25+
center,
26+
27+
/// The stroke is fully outside the widget bounds.
28+
outside,
29+
}
30+
31+
/// A [CustomPainter] that draws a rounded-rectangle focus ring.
32+
///
33+
/// The ring is drawn using a stroke of [strokeWidth] and rounded corners
34+
/// defined by [borderRadius]. The ring position depends on [alignment]:
35+
/// - [FocusAlignment.inside] deflates the rect by half the stroke width.
36+
/// - [FocusAlignment.center] draws on the original rect.
37+
/// - [FocusAlignment.outside] inflates the rect by half the stroke width.
38+
class FocusContainerPainter extends CustomPainter {
39+
final Color color;
40+
final double strokeWidth;
41+
final double borderRadius;
42+
final FocusAlignment alignment;
43+
44+
FocusContainerPainter({
45+
required this.color,
46+
required this.strokeWidth,
47+
required this.borderRadius,
48+
this.alignment = FocusAlignment.center,
49+
});
50+
51+
@override
52+
void paint(Canvas canvas, Size size) {
53+
final paint = Paint()
54+
..style = PaintingStyle.stroke
55+
..strokeWidth = strokeWidth
56+
..color = color
57+
..isAntiAlias = true;
58+
59+
Rect baseRect = Offset.zero & size;
60+
RRect rrect = RRect.fromRectAndRadius(baseRect, Radius.circular(borderRadius));
61+
62+
final half = strokeWidth / 2;
63+
if (alignment == FocusAlignment.outside) {
64+
rrect = rrect.inflate(half);
65+
} else if (alignment == FocusAlignment.inside) {
66+
rrect = rrect.deflate(half);
67+
}
68+
canvas.drawRRect(rrect, paint);
69+
}
70+
71+
@override
72+
bool shouldRepaint(covariant FocusContainerPainter oldDelegate) {
73+
return oldDelegate.color != color || oldDelegate.strokeWidth != strokeWidth || oldDelegate.borderRadius != borderRadius || oldDelegate.alignment != alignment;
74+
}
75+
}
76+
77+
/// Wraps [child] with an optional focus ring and an optional inset border.
78+
///
79+
/// When [isFocused] is true, a focus ring is painted using [CustomPaint]
80+
/// inside a [Stack]. The ring uses theme tokens (focus border color/width)
81+
/// and can be visually aligned via [alignment].
82+
///
83+
/// This widget is designed to be used by interactive components to make
84+
/// keyboard focus visible (for example when navigating with Tab).
85+
class FocusContainer extends StatelessWidget {
86+
/// The content widget.
87+
final Widget child;
88+
89+
/// Optional ring color (defaults to transparent).
90+
///
91+
/// Note: the current implementation uses theme colors for the painted ring.
92+
final Color color;
93+
94+
/// The stroke width used for the focus ring.
95+
///
96+
/// Note: the current implementation uses theme tokens for the painted ring.
97+
final double strokeWidth;
98+
99+
/// Corner radius used for the focus ring and the inset border.
100+
final double borderRadius;
101+
102+
/// Focus ring alignment relative to the widget bounds.
103+
final FocusAlignment alignment;
104+
105+
/// Whether the focus ring should be visible.
106+
final bool isFocused;
107+
108+
const FocusContainer({
109+
super.key,
110+
required this.child,
111+
this.color = Colors.transparent,
112+
this.strokeWidth = 5,
113+
this.borderRadius = 8,
114+
this.alignment = FocusAlignment.center,
115+
this.isFocused = false,
116+
});
117+
118+
@override
119+
Widget build(BuildContext context) {
120+
final borderTokens = OudsTheme.of(context).borderTokens;
121+
122+
if (!isFocused) {
123+
// Pas de focus - retourner le child directement sans wrapper
124+
return child;
125+
}
126+
127+
// Avec focus - dessiner les borders par-dessus avec CustomPaint
128+
// Utiliser borderTokens au lieu des paramètres pour s'adapter au thème
129+
return CustomPaint(
130+
painter: FocusContainerPainter(
131+
color: color,
132+
strokeWidth: borderTokens.widthFocus,
133+
borderRadius: borderRadius,
134+
alignment: FocusAlignment.center,
135+
),
136+
foregroundPainter: FocusContainerPainter(
137+
color: OudsTheme.of(context).colorScheme(context).borderFocusInset,
138+
strokeWidth: borderTokens.widthFocusInset,
139+
borderRadius: borderRadius,
140+
alignment: FocusAlignment.inside,
141+
),
142+
child: child,
143+
);
144+
}
145+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* // Software Name: OUDS Flutter
3+
* // SPDX-FileCopyrightText: Copyright (c) Orange SA
4+
* // SPDX-License-Identifier: MIT
5+
* //
6+
* // This software is distributed under the MIT license,
7+
* // the text of which is available at https://opensource.org/license/MIT/
8+
* // or see the "LICENSE" file for more details.
9+
* //
10+
* // Software description: Flutter library of reusable graphical components
11+
* //
12+
*/
13+
@Deprecated('OudsTagConfig is deprecated and will be removed in a future version. Please migrate off of its usage.')
14+
class OudsTagConfig {
15+
final bool? rounded;
16+
17+
const OudsTagConfig({
18+
this.rounded = true,
19+
});
20+
}

ouds_theme_contract/lib/ouds_theme.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ class OudsTheme extends InheritedModel<OudsThemeAspect> {
131131
}
132132
return false;
133133
}
134-
}
134+
}

0 commit comments

Comments
 (0)