pub mod layout;
pub mod menu;
pub mod node;
pub mod span;
pub mod style;
pub mod theme;
use std::collections::HashMap;
pub use layout::{
Alignment, Breakpoint, Direction, Justification, LayoutConstraints, Length, Padding,
};
pub use menu::MenuPosition;
pub use node::InterpolatedPart;
pub use node::{AttributeValue, EventBinding, EventKind, WidgetKind, WidgetNode};
pub use span::Span;
pub use style::{
Background, Border, BorderRadius, BorderStyle, Color, Gradient, ImageFit, Shadow,
StyleProperties, Transform,
};
pub use theme::{
FontWeight, IcedPaletteColors, SpacingScale, StateSelector, StyleClass, Theme, ThemeDocument,
ThemeError, ThemeErrorKind, ThemePalette, Typography, WidgetState,
};
#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]
pub struct DampenDocument {
pub version: SchemaVersion,
pub root: WidgetNode,
pub themes: HashMap<String, crate::ir::theme::Theme>,
pub style_classes: HashMap<String, crate::ir::theme::StyleClass>,
pub global_theme: Option<String>,
pub follow_system: bool,
}
impl Default for DampenDocument {
fn default() -> Self {
Self {
version: SchemaVersion { major: 1, minor: 0 },
root: WidgetNode::default(),
themes: HashMap::new(),
style_classes: HashMap::new(),
global_theme: None,
follow_system: true,
}
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
pub struct SchemaVersion {
pub major: u16,
pub minor: u16,
}
impl Default for SchemaVersion {
fn default() -> Self {
Self { major: 1, minor: 0 }
}
}