Skip to main content

orbital_core_components/navigation/
slots.rs

1use leptos::prelude::*;
2use orbital_base_components::{MaterialCorners, MaterialElevation, MaterialVariant};
3
4/// Configures the [`Material`](crate::Material) surface for [`Navigation`](crate::Navigation).
5///
6/// At [`MaterialElevation::Flat`], the material surface gets an outlined trailing edge — flat elevation with a stroke on the rail boundary.
7#[slot]
8pub struct NavigationMaterial {
9    #[prop(default = MaterialVariant::Solid)]
10    pub variant: MaterialVariant,
11    #[prop(default = MaterialElevation::Flat)]
12    pub elevation: MaterialElevation,
13    #[prop(default = MaterialCorners::Square)]
14    pub corners: MaterialCorners,
15}
16
17/// Optional header region above the navigation body.
18#[slot]
19pub struct NavigationHeader {
20    pub children: Children,
21}
22
23/// Scrollable navigation content region.
24#[slot]
25pub struct NavigationBody {
26    pub children: Children,
27}
28
29/// Optional footer region below the navigation body.
30#[slot]
31pub struct NavigationFooter {
32    pub children: Children,
33}
34
35pub fn default_navigation_material() -> (MaterialVariant, MaterialElevation, MaterialCorners) {
36    (
37        MaterialVariant::Solid,
38        MaterialElevation::Flat,
39        MaterialCorners::Square,
40    )
41}