use crate::private::Sealed;
#[derive(Debug, Clone, Copy, Default)]
pub struct Primary;
impl Sealed for Primary {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Secondary;
impl Sealed for Secondary {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Ghost;
impl Sealed for Ghost {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Destructive;
impl Sealed for Destructive {}
#[derive(Debug, Clone, Copy, Default)]
pub struct Outline;
impl Sealed for Outline {}
pub trait ButtonVariant: Sealed + Copy + Default {
const NAME: &'static str;
}
impl ButtonVariant for Primary {
const NAME: &'static str = "primary";
}
impl ButtonVariant for Secondary {
const NAME: &'static str = "secondary";
}
impl ButtonVariant for Ghost {
const NAME: &'static str = "ghost";
}
impl ButtonVariant for Destructive {
const NAME: &'static str = "destructive";
}
impl ButtonVariant for Outline {
const NAME: &'static str = "outline";
}
pub trait InputVariant: Sealed + Copy + Default {
const NAME: &'static str;
}
#[derive(Debug, Clone, Copy, Default)]
pub struct DefaultInput;
impl Sealed for DefaultInput {}
impl InputVariant for DefaultInput {
const NAME: &'static str = "default";
}
#[derive(Debug, Clone, Copy, Default)]
pub struct FilledInput;
impl Sealed for FilledInput {}
impl InputVariant for FilledInput {
const NAME: &'static str = "filled";
}