use crate::tokens::dtcg::DimensionValue;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FocusRingMetrics {
pub stroke_width: DimensionValue,
pub offset: DimensionValue,
pub corner_radius_delta: DimensionValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextFieldSizeMetrics {
pub height: DimensionValue,
pub font_size: DimensionValue,
pub corner_radius: DimensionValue,
pub padding_horizontal: DimensionValue,
#[serde(default)]
pub padding_vertical: Option<DimensionValue>,
pub first_baseline_offset_from_top: DimensionValue,
pub baseline_offset_from_bottom: DimensionValue,
pub default_width: DimensionValue,
pub border_width: DimensionValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TextFieldMetrics {
pub regular: TextFieldSizeMetrics,
pub small: TextFieldSizeMetrics,
#[serde(alias = "compact")]
pub compact_infobox: TextFieldSizeMetrics,
pub mini: TextFieldSizeMetrics,
pub large: TextFieldSizeMetrics,
pub auto_size_regular_min_height: DimensionValue,
pub auto_size_small_min_height: DimensionValue,
pub auto_size_compact_min_height: DimensionValue,
}
impl TextFieldMetrics {
#[inline]
pub fn compact(&self) -> &TextFieldSizeMetrics {
&self.compact_infobox
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ButtonSizeMetrics {
pub height: DimensionValue,
pub corner_radius: DimensionValue,
#[serde(default)]
pub padding_horizontal: Option<DimensionValue>,
pub font_size: DimensionValue,
pub border_width: DimensionValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ButtonMetrics {
pub regular: ButtonSizeMetrics,
pub small: ButtonSizeMetrics,
pub mini: ButtonSizeMetrics,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SegmentedSizeMetrics {
pub height: DimensionValue,
pub corner_radius: DimensionValue,
pub indicator_radius: DimensionValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SegmentedMetrics {
pub regular: SegmentedSizeMetrics,
pub small: SegmentedSizeMetrics,
pub mini: SegmentedSizeMetrics,
pub item_width: DimensionValue,
pub indicator_inset: DimensionValue,
pub border_width: DimensionValue,
pub font_size: DimensionValue,
pub small_font_size: DimensionValue,
pub mini_font_size: DimensionValue,
pub small_square_corner_radius: DimensionValue,
pub padding_horizontal: DimensionValue,
pub animation_duration: DimensionValue,
}