pub(crate) const FOCUS_RING: &str =
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2";
pub(crate) const MOTION_FAST: &str = "transition-colors duration-fast ease-base";
pub(crate) const MOTION_BASE: &str = "transition-opacity duration-base ease-base";
pub(crate) const DISABLED_BASE: &str = "disabled:opacity-50 disabled:pointer-events-none";
pub(crate) const TOAST_TONE_NEUTRAL: &str = "bg-primary/70 text-primary-foreground";
pub(crate) const TOAST_TONE_SUCCESS: &str = "bg-success/70 text-primary-foreground";
pub(crate) const TOAST_TONE_WARNING: &str = "bg-warning/70 text-primary-foreground";
pub(crate) const TOAST_TONE_DESTRUCTIVE: &str = "bg-destructive/70 text-primary-foreground";
pub(crate) const INTERACTIVE_BASE: &str = concat!(
"transition-colors duration-fast ease-base ",
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"
);
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn interactive_base_is_motion_fast_plus_focus_ring() {
assert_eq!(INTERACTIVE_BASE, format!("{MOTION_FAST} {FOCUS_RING}"));
}
#[test]
fn fragments_use_token_utilities() {
assert!(FOCUS_RING.contains("focus-visible:ring-ring"));
assert!(MOTION_FAST.contains("duration-fast") && MOTION_FAST.contains("ease-base"));
assert!(MOTION_BASE.contains("duration-base") && MOTION_BASE.contains("ease-base"));
assert!(DISABLED_BASE.contains("disabled:pointer-events-none"));
}
}