Welcome to Vanilla Breeze
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
This bell pulls live notifications from /go/notify/messages — the same contract documented at /docs/concepts/service-contracts/. Static articles like this one are the no-JS / no-backend fallback.
Collapsible “tree-style” navigation using native <details>/<summary>. Works without JavaScript. Not an ARIA tree widget.
This pattern creates a hierarchical navigation menu with collapsible sections, using native HTML5 <details> and <summary> for the expand/collapse behavior. No JavaScript required.
Key features:
aria-current="page"data-layout-densityA tree navigation with multiple nesting levels and an active page indicator.
Copy this snippet and customize the links, labels, and nesting structure for your navigation.
<nav class="tree" aria-label="Section navigation" data-layout-density="compact"> <ul> <!-- Simple link --> <li><a href="/getting-started/">Getting Started</a></li> <!-- Active link (aria-current) --> <li><a href="/overview/" aria-current="page">Overview</a></li> <!-- Collapsible section with nested items --> <li> <details open> <summary>Components</summary> <ul> <li><a href="/components/button/">Button</a></li> <li><a href="/components/card/">Card</a></li> <li><a href="/components/modal/">Modal</a></li> </ul> </details> </li> <!-- Another collapsible section (closed by default) --> <li> <details> <summary>Utilities</summary> <ul> <li><a href="/utilities/spacing/">Spacing</a></li> <li><a href="/utilities/colors/">Colors</a></li> </ul> </details> </li> <!-- Deeply nested example --> <li> <details> <summary>Advanced</summary> <ul> <li> <details> <summary>Theming</summary> <ul> <li><a href="/theming/tokens/">Design Tokens</a></li> <li><a href="/theming/dark-mode/">Dark Mode</a></li> </ul> </details> </li> <li><a href="/advanced/plugins/">Plugins</a></li> </ul> </details> </li> </ul></nav>
Without data-layout-density="compact", the navigation has more generous spacing.
<nav class="tree" aria-label="Example navigation"> <ul> <li><a href="#">Home</a></li> <li> <details open> <summary>Documentation</summary> <ul> <li><a href="#">Introduction</a></li> <li><a href="#">Quick Start</a></li> </ul> </details> </li> <li><a href="#">Support</a></li> </ul></nav>
aria-label on the <nav> element to identify its purposearia-current="page" on the link representing the current pageopen attribute to <details> elements that should be expanded by default.tree class applies Vanilla Breeze navigation styles automaticallyrole="tree" to nav.tree or its summaries. Partial ARIA is worse than none — it promises a widget contract this pattern does not implement.Native navigation element documentation
Native disclosure widget documentation
Page layout with sidebar navigation