Navigation - Skeleton

Skeleton

  1. components
  2. navigation
  3. svelte

Navigation

A flexible navigation interface for large, medium, and small screens.

Bar

  • 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

  • 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.
  • 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.

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" | undefined
Sets the data-layout attribute, which modifies the visual presentation of the component set.
element -
Snippet<[HTMLAttributes<"div">]> | undefined
Render the element yourself

Header

Property Default Type
element -
Snippet<[HTMLAttributes<"header">]> | undefined
Render the element yourself

Content

data-[layout=rail]:contents data-[layout=sidebar]:space-y-4
Property Default Type
element -
Snippet<[HTMLAttributes<"div">]> | undefined
Render the element yourself

Group

data-[layout=rail]:contents data-[layout=sidebar]:flex flex-col gap-2
Property Default Type
element -
Snippet<[HTMLAttributes<"div">]> | undefined
Render the element yourself

Label

text-xs text-surface-700-300
Property Default Type
element -
Snippet<[HTMLAttributes<"div">]> | undefined
Render 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">]> | undefined
Render the element yourself

Footer

Property Default Type
element -
Snippet<[HTMLAttributes<"footer">]> | undefined
Render the element yourself