- components
- ›
- navigation
- ›
- svelte
Navigation
A flexible navigation interface for large, medium, and small screens.
Bar
Contents
- Recommended for small sized screens (ex: mobile).
- Ideal for vertical screen layouts.
- Should be fixed to the bottom of the viewport.
- Supports 3-5 tiles based on contents and viewport width.
- Consider progressive enhancement with the Virtual Keyboard API.
Rail
Contents
- Recommended for medium sized screens (ex: tablet).
- Ideal for horizontal screen layouts.
- Should be fixed to the left or right of the viewport.
- Supports 3-7 tiles based on contents and viewport height.
Sidebar
Contents
- Recommended for large sized screens (ex: desktop).
- Ideal for horizontal screen layouts.
- Should be fixed to the left or right of the viewport.
- Supports multiple groups of links for deep navigation.
- Supports a label field per each group.
- Can scroll vertically if contents extend beyond the viewport height.
Toggle Layout
Using reactive state we can dynamically switch between multiple layouts. Tap the double arrow icon to toggle.
Layout: Rail
API Reference
Root
bg-surface-100-900 overflow-x-hidden transition-[width] duration-200 data-[layout=bar]:w-full data-[layout=bar]:p-2 data-[layout=rail]:w-[100px] data-[layout=rail]:h-full data-[layout=rail]:overflow-y-hidden data-[layout=rail]:p-2 data-[layout=rail]:flex data-[layout=rail]:flex-col data-[layout=rail]:gap-4 data-[layout=sidebar]:w-[280px] data-[layout=sidebar]:h-full data-[layout=sidebar]:overflow-y-auto data-[layout=sidebar]:p-4
Property | Default | Type |
---|---|---|
layout | bar | "bar" | "rail" | "sidebar" | undefinedSets the data-layout attribute, which modifies the visual presentation of the component set. |
element | - | Snippet<[HTMLAttributes<"div">]> | undefinedRender the element yourself |
Header
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"header">]> | undefinedRender the element yourself |
Content
data-[layout=rail]:contents data-[layout=sidebar]:space-y-4
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"div">]> | undefinedRender the element yourself |
Group
data-[layout=rail]:contents data-[layout=sidebar]:flex flex-col gap-2
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"div">]> | undefinedRender the element yourself |
Label
text-xs text-surface-700-300
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"div">]> | undefinedRender the element yourself |
Menu
flex-1 flex gap-2 data-[layout=bar]:items-stretch data-[layout=rail]:flex-col data-[layout=rail]:justify-center data-[layout=sidebar]:flex-col data-[layout=sidebar]:items-stretch
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"div">]> | undefinedRender the element yourself |
Footer
Property | Default | Type |
---|---|---|
element | - | Snippet<[HTMLAttributes<"footer">]> | undefinedRender the element yourself |