use crate::tokens::dtcg::DimensionValue;
use crate::tokens::MacDesignTokens;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProgressSizeMetrics {
pub bar_height: DimensionValue,
pub bar_corner_radius: DimensionValue,
pub spinner_size: DimensionValue,
pub spoke_width: DimensionValue,
pub font_size: DimensionValue,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ProgressIndicatorMetrics {
pub regular: ProgressSizeMetrics,
pub small: ProgressSizeMetrics,
pub mini: ProgressSizeMetrics,
pub default_bar_width: DimensionValue,
pub spoke_count: DimensionValue,
pub spoke_inner_ratio: DimensionValue,
pub indeterminate_pill_ratio: DimensionValue,
pub spin_speed_hz: DimensionValue,
pub bar_indeterminate_speed: DimensionValue,
pub label_spacing: DimensionValue,
pub border_width: DimensionValue,
pub tau_radians: DimensionValue,
pub min_spoke_alpha: DimensionValue,
pub percentage_scale: DimensionValue,
}
impl Default for ProgressIndicatorMetrics {
fn default() -> Self {
MacDesignTokens::default_shared()
.progress_indicator_metrics()
.clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TableViewMetrics {
pub header_height: DimensionValue,
pub row_height: DimensionValue,
pub cell_padding_horizontal: DimensionValue,
pub cell_padding_vertical: DimensionValue,
pub header_font_size: DimensionValue,
pub cell_font_size: DimensionValue,
pub sort_chevron_size: DimensionValue,
pub sort_chevron_spacing: DimensionValue,
pub separator_width: DimensionValue,
pub header_divider_inset: DimensionValue,
pub corner_radius: DimensionValue,
pub row_corner_radius: DimensionValue,
}
impl Default for TableViewMetrics {
fn default() -> Self {
MacDesignTokens::default_shared().table_view_metrics().clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TokenFieldMetrics {
pub min_height: DimensionValue,
pub corner_radius: DimensionValue,
pub border_width: DimensionValue,
pub padding_horizontal: DimensionValue,
pub padding_vertical: DimensionValue,
pub pill_height: DimensionValue,
pub pill_corner_radius: DimensionValue,
pub pill_padding_horizontal: DimensionValue,
pub pill_spacing: DimensionValue,
pub row_spacing: DimensionValue,
pub font_size: DimensionValue,
pub counter_font_size: DimensionValue,
pub remove_icon_size: DimensionValue,
pub remove_icon_stroke: DimensionValue,
pub remove_cross_span: DimensionValue,
pub min_input_width: DimensionValue,
pub default_width: DimensionValue,
pub counter_row_height: DimensionValue,
}
impl Default for TokenFieldMetrics {
fn default() -> Self {
MacDesignTokens::default_shared().token_field_metrics().clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LevelIndicatorMetrics {
pub default_length: DimensionValue,
pub thickness: DimensionValue,
pub corner_radius: DimensionValue,
pub segment_corner_radius: DimensionValue,
pub segment_spacing: DimensionValue,
pub default_segment_count: DimensionValue,
pub border_width: DimensionValue,
pub peak_line_width: DimensionValue,
pub track_inset: DimensionValue,
}
impl Default for LevelIndicatorMetrics {
fn default() -> Self {
MacDesignTokens::default_shared()
.level_indicator_metrics()
.clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct TrimScrubberMetrics {
pub height: DimensionValue,
pub default_width: DimensionValue,
pub track_inset_vertical: DimensionValue,
pub corner_radius: DimensionValue,
pub handle_width: DimensionValue,
pub handle_slot_width: DimensionValue,
pub handle_slot_height: DimensionValue,
pub selection_border_width: DimensionValue,
pub playhead_width: DimensionValue,
pub playhead_hit_width: DimensionValue,
pub badge_height: DimensionValue,
pub badge_padding_horizontal: DimensionValue,
pub badge_corner_radius: DimensionValue,
pub badge_font_size: DimensionValue,
pub zone_font_size: DimensionValue,
pub zone_label_padding: DimensionValue,
pub waveform_bar_width: DimensionValue,
pub waveform_min_amplitude: DimensionValue,
pub seconds_per_minute: DimensionValue,
pub tenths_per_second: DimensionValue,
}
impl Default for TrimScrubberMetrics {
fn default() -> Self {
MacDesignTokens::default_shared()
.trim_scrubber_metrics()
.clone()
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PathControlMetrics {
pub height: DimensionValue,
pub corner_radius: DimensionValue,
pub segment_corner_radius: DimensionValue,
pub padding_horizontal: DimensionValue,
pub segment_padding_horizontal: DimensionValue,
pub segment_spacing: DimensionValue,
pub icon_size: DimensionValue,
pub icon_spacing: DimensionValue,
pub chevron_size: DimensionValue,
pub font_size: DimensionValue,
pub border_width: DimensionValue,
pub choose_button_padding: DimensionValue,
pub choose_button_height: DimensionValue,
pub folder_tab_width: DimensionValue,
pub folder_tab_height: DimensionValue,
}
impl Default for PathControlMetrics {
fn default() -> Self {
MacDesignTokens::default_shared()
.path_control_metrics()
.clone()
}
}