ferroui-themes-material 0.4.0

Android Material 3 Expressive theme for FerroUI with compiled XAML, light and dark color schemes, expressive motion and touch-first control templates
Documentation
//! Android Material 3 Expressive for FerroUI.
//!
//! Independent compiled XAML theme derived from FerroUI's WinUI template contracts.
//! Visual reference: AndroidX Material3 1.5.0-beta02 (2026-10-21).
//! See docs/porting/material-theme.md for component coverage and fidelity limits.
//!
//! ```ignore
//! use ferroui_themes_material::{MaterialTheme, MaterialAppBuilderExtension};
//! // Add .with_material_fonts() to your AppBuilder.
//! application.styles().add(MaterialTheme::new().as_style());
//! ```

mod color_scheme;
mod dynamic_color;
mod android_colors;
pub use android_colors::{MaterialAndroidColorError, MaterialAndroidColorSource};
pub use dynamic_color::{MaterialColorSpec, MaterialDynamicColorError, MaterialDynamicColorOptions, MaterialDynamicPalette, MaterialPaletteFamily, MaterialPaletteStyle, MaterialTonalPalette, MATERIAL_COLOR_UTILITIES_VERSION, MATERIAL_HCT_SOLVER_VERSION};
mod fonts;
pub mod motion;
mod app_bar;
mod app_bar_layout;
mod app_bar_state;
pub use app_bar::MaterialAppBar;
pub use app_bar_layout::MaterialAppBarLayout;
pub use app_bar_state::{MaterialAppBarFling, MaterialAppBarScrollBehavior, MaterialAppBarSize, MaterialAppBarState};
mod chip;
mod chip_layout;
pub use chip::{MaterialChip, MaterialChipKind, MaterialChipDismissButton};
pub use chip_layout::MaterialChipLayout;
mod segmented_content;
mod segmented_group;
pub use segmented_content::MaterialSegmentedContent;
pub use segmented_group::{MaterialSegmentedGroup, MaterialSegmentedGroupAutomationPeer};
mod sheet_state;
pub use sheet_state::{MaterialSheetAnchors, MaterialSheetState};
mod date_picker;
mod date_picker_calendar;
mod date_picker_state;
pub use date_picker::{MaterialDatePicker, MaterialDatePickerAutomationPeer};
pub use date_picker_calendar::{MaterialDateCell, MaterialDateCellAutomationPeer, MaterialDateMonthView, MaterialDateMonthsPanel};
pub use date_picker_state::{MaterialDatePickerState, MaterialDateInputFormat, MaterialDatePickerMode, MaterialDateSelectionMode};
mod time_picker;
mod time_picker_dial;
mod time_picker_state;
pub use time_picker::{MaterialTimePicker, MaterialTimePickerField, MaterialTimePickerLayout, MaterialTimePickerAutomationPeer, MaterialTimeChangedEventArgs};
pub use time_picker_dial::{MaterialTimePickerDial, MaterialTimePickerNumber, MaterialTimePickerNumberAutomationPeer};
pub use time_picker_state::{MaterialTimeSelection, MaterialTimeDisplayMode};
mod bottom_sheet_automation;
pub use bottom_sheet_automation::MaterialBottomSheetAutomationPeer;
mod bottom_sheet;
pub use bottom_sheet::MaterialBottomSheetHost;
mod search_view;
pub use search_view::MaterialSearchView;
mod extended_fab;
pub use extended_fab::{MaterialExtendedFab, MaterialExtendedFabLayout, MaterialExtendedFabSize};
mod range_slider;
pub use range_slider::{MaterialRangeSlider, MaterialRangeThumb, MaterialRangeSliderThumb,
    MaterialRangeSliderLayout, MaterialRangeSliderThumbAutomationPeer};
mod snackbar;
pub use snackbar::{MaterialSnackbar, MaterialSnackbarHost, MaterialSnackbarDuration, MaterialSnackbarResult,
    MaterialSnackbarMessage, MaterialSnackbarHandle, MaterialSnackbarFuture, MaterialSnackbarTimeoutPolicy};
mod spring_transitions;
pub use spring_transitions::{MaterialDoubleTransition, MaterialCornerRadiusTransition, MaterialThicknessTransition};
pub mod ripple;
mod progress_indicator;
mod loading_indicator;
mod selection_mark;
pub use selection_mark::MaterialSelectionMark;
mod text_field_border;
pub use text_field_border::MaterialTextFieldBorder;
mod text_field;
pub use text_field::MaterialTextField;
mod text_field_layout;
pub use text_field_layout::{MaterialTextFieldLayout, MaterialTextFieldSlot};
pub use loading_indicator::{MaterialLoadingIndicator, loading_indeterminate_frame};
pub use ripple::MaterialRipple;
pub use progress_indicator::{MaterialProgressIndicator, linear_indeterminate_segments, circular_indeterminate_frame};
pub use color_scheme::{MaterialColorRole, MaterialColorScheme, MaterialStatusColor};
pub use fonts::MaterialAppBuilderExtension;
pub use motion::{MaterialMotionScheme, MaterialMotionRole, MaterialSpringSpec, MaterialSpringSample, MaterialSpringState, MaterialSpringEasing};

#[path = "Accents/mod.rs"]
pub mod accents;
mod assets;
#[path = "Converters/mod.rs"]
pub mod converters;
#[path = "Primitives/mod.rs"]
pub mod primitives;
// `compiled_xaml`, the compiled markup of the theme: generated by the build script of the
// crate from the documents of [`MaterialTheme`], against the type models of this crate and of
// the crates it is built on (docs/porting/xaml.md, 9.5.13). The theme registers its assets
// and its loader table itself.
ferroui_markup_xaml::include_compiled_xaml!();
mod register_types;
mod rust_paths;
mod material_theme;

pub use assets::{excluded_documents, ExcludedDocument};
pub use register_types::{register_types, ASSEMBLY};
pub use material_theme::{DensityStyle, MaterialTheme};



#[cfg(test)]
mod tests;