Skip to main content

orbital_shell/tokens/
elevation.rs

1//! Elevation (shadow depth) for surfaces.
2
3/// Orbital shadow tiers. Use sparingly — each surface maps to one tier.
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5pub enum Elevation {
6    /// Page background, flat sections.
7    Flat,
8    /// Hover lift on inline cards.
9    Shadow2,
10    /// Family cards at rest, capability-tab panels, balance-sheet rows.
11    Shadow4,
12    /// Hero primary CTA, raised CTA panel, scrolled top-bar.
13    Shadow8,
14    /// Callouts, device-profile popovers.
15    Shadow16,
16    /// Mobile nav dropdown panels.
17    Shadow28,
18    /// Sponsor coachmark, dialog-style surfaces.
19    Shadow64,
20}
21
22impl Elevation {
23    pub const fn as_class(self) -> &'static str {
24        match self {
25            Self::Flat => "orbital-token-elev-flat",
26            Self::Shadow2 => "orbital-token-elev-shadow2",
27            Self::Shadow4 => "orbital-token-elev-shadow4",
28            Self::Shadow8 => "orbital-token-elev-shadow8",
29            Self::Shadow16 => "orbital-token-elev-shadow16",
30            Self::Shadow28 => "orbital-token-elev-shadow28",
31            Self::Shadow64 => "orbital-token-elev-shadow64",
32        }
33    }
34
35    /// Maps to theme shadow CSS variables where defined.
36    pub const fn as_token(self) -> &'static str {
37        match self {
38            Self::Flat => "none",
39            Self::Shadow2 => "var(--orb-elev-raised-xs)",
40            Self::Shadow4 => "var(--orb-elev-raised-sm)",
41            Self::Shadow8 => "var(--orb-elev-raised-md)",
42            Self::Shadow16 => "var(--orb-elev-floating)",
43            Self::Shadow28 => "var(--orb-elev-overlay)",
44            Self::Shadow64 => "var(--orb-elev-modal)",
45        }
46    }
47}