Skip to main content

orbital_shell/tokens/
shape.rs

1//! High-level shape vocabulary (rectangle, pill, circle, beak).
2
3/// Shape for buttons, chips, popover anchors, and icon discs.
4#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5pub enum Shape {
6    Rectangle,
7    Circle,
8    Pill,
9    Beak,
10}
11
12impl Shape {
13    pub const fn as_class(self) -> &'static str {
14        match self {
15            Self::Rectangle => "orbital-token-shape-rect",
16            Self::Circle => "orbital-token-shape-circle",
17            Self::Pill => "orbital-token-shape-pill",
18            Self::Beak => "orbital-token-shape-beak",
19        }
20    }
21
22    /// Hint for border-radius; beak uses clip-path in composed components.
23    pub const fn as_token(self) -> &'static str {
24        match self {
25            Self::Rectangle => "0",
26            Self::Circle => "50%",
27            Self::Pill => "9999px",
28            Self::Beak => "12px",
29        }
30    }
31}