daisy_rsx 0.1.56

Daisy UI components for the Dioxus Rust library.
Documentation
#[derive(Clone, PartialEq, Eq, Debug)]
pub struct SectionSpacing {
    pub section_gap: String,
    pub page_container: String,
}

#[derive(Clone, PartialEq, Eq, Debug)]
pub struct SurfaceStyle {
    pub badge_class: String,
    pub card_class: String,
}

#[derive(Clone, PartialEq, Eq, Debug)]
pub struct ButtonStyle {
    pub primary_class: String,
    pub secondary_class: String,
}

#[derive(Clone, PartialEq, Eq, Debug)]
pub struct MarketingTheme {
    pub name: String,
    pub section_spacing: SectionSpacing,
    pub surface: SurfaceStyle,
    pub buttons: ButtonStyle,
    pub title_class: String,
    pub subtitle_class: String,
    pub motion: MotionTokens,
}

pub fn bionic_theme() -> MarketingTheme {
    MarketingTheme {
        name: "bionic".to_string(),
        section_spacing: SectionSpacing {
            section_gap: "grid gap-y-36".to_string(),
            page_container: "px-4 md:px-0 w-full lg:max-w-5xl mt-16 md:mt-36 mx-auto".to_string(),
        },
        surface: SurfaceStyle {
            badge_class: "badge badge-outline".to_string(),
            card_class: "bg-base-200".to_string(),
        },
        buttons: ButtonStyle {
            primary_class: "btn btn-primary".to_string(),
            secondary_class: "btn btn-secondary".to_string(),
        },
        title_class: "font-display text-2xl md:text-6xl font-bold".to_string(),
        subtitle_class: "py-6 text-base md:text-lg".to_string(),
        motion: MotionTokens {
            duration_fast_ms: 220,
            duration_base_ms: 520,
            duration_slow_ms: 760,
            easing_enter: "cubic-bezier(0.22, 1, 0.36, 1)".to_string(),
            easing_emphasis: "cubic-bezier(0.34, 1.56, 0.64, 1)".to_string(),
            stagger_ms: 90,
            travel_px: 20,
        },
    }
}

pub fn decision_theme() -> MarketingTheme {
    MarketingTheme {
        name: "decision".to_string(),
        section_spacing: SectionSpacing {
            section_gap: "grid gap-y-28 lg:gap-y-36".to_string(),
            page_container: "mx-auto w-full max-w-5xl px-6 pt-32 pb-20 lg:pt-40".to_string(),
        },
        surface: SurfaceStyle {
            badge_class: "badge badge-outline".to_string(),
            card_class: "bg-base-200".to_string(),
        },
        buttons: ButtonStyle {
            primary_class: "btn btn-primary".to_string(),
            secondary_class: "btn btn-secondary".to_string(),
        },
        title_class: "text-4xl sm:text-5xl font-bold".to_string(),
        subtitle_class: "mt-6 text-lg opacity-80".to_string(),
        motion: MotionTokens {
            duration_fast_ms: 240,
            duration_base_ms: 560,
            duration_slow_ms: 820,
            easing_enter: "cubic-bezier(0.22, 1, 0.36, 1)".to_string(),
            easing_emphasis: "cubic-bezier(0.34, 1.56, 0.64, 1)".to_string(),
            stagger_ms: 100,
            travel_px: 26,
        },
    }
}

pub fn deploy_theme() -> MarketingTheme {
    MarketingTheme {
        name: "deploy".to_string(),
        section_spacing: SectionSpacing {
            section_gap: "grid gap-y-28 lg:gap-y-32".to_string(),
            page_container: "mx-auto w-full max-w-6xl px-6 pt-24 pb-20 lg:pt-32".to_string(),
        },
        surface: SurfaceStyle {
            badge_class: "badge badge-outline".to_string(),
            card_class: "bg-base-200".to_string(),
        },
        buttons: ButtonStyle {
            primary_class: "btn btn-primary".to_string(),
            secondary_class: "btn btn-secondary".to_string(),
        },
        title_class: "font-display text-3xl md:text-5xl font-bold".to_string(),
        subtitle_class: "py-6 text-base md:text-lg opacity-80".to_string(),
        motion: MotionTokens {
            duration_fast_ms: 220,
            duration_base_ms: 500,
            duration_slow_ms: 740,
            easing_enter: "cubic-bezier(0.22, 1, 0.36, 1)".to_string(),
            easing_emphasis: "cubic-bezier(0.34, 1.56, 0.64, 1)".to_string(),
            stagger_ms: 80,
            travel_px: 18,
        },
    }
}
use crate::marketing::motion::MotionTokens;