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.
Compact settings panel with gear trigger, details accordion sections, and theme/accessibility/layout/effects controls.
A compact settings panel triggered by a gear icon. Uses native <details name="settings"> for exclusive accordion sections with theme selection, accessibility toggles, layout options, and effects controls.
Runs in parallel with <theme-picker> — both share state through ThemeManager and localStorage events. Changes in one component are reflected in the other.
<settings-panel></settings-panel>
| Attribute | Type | Default | Description |
|---|---|---|---|
open |
boolean | — | Reflected attribute indicating the panel is open. |
The panel contains four collapsible <details> sections with exclusive accordion behavior (one open at a time).
<select> with optgroups: Base (Default), Personality (Modern, Minimal, Classic), and Extreme (Swiss, Brutalist, Cyber, Terminal, Organic, Editorial, Kawaii, 8-Bit, NES, Win9x, Rough)Toggle switches (input[data-switch="sm"]) for:
Toggle switches for:
A Reset to Defaults button in the footer clears all preferences.
Provide your own trigger button as a child element with data-trigger. If no trigger is found, a gear icon is auto-generated.
<settings-panel> <button data-trigger> <icon-wc name="settings" label="Settings"></icon-wc> Settings </button></settings-panel>
The typical placement is inline with footer legal links. The panel opens upward from the trigger.
<footer> <p class="footer-legal"> <span>© 2026 Your Name</span> <a href="/about">About</a> <settings-panel></settings-panel> </p></footer>
| Method | Returns | Description |
|---|---|---|
open() |
void |
Open the settings panel. |
close() |
void |
Close the settings panel. |
toggle() |
void |
Toggle the panel open/closed. |
const settings = document.querySelector('settings-panel'); // Open/close programmaticallysettings.open();settings.close();settings.toggle();
Both <settings-panel> and <theme-picker> share state through three channels:
| Channel | Storage Key | Window Event |
|---|---|---|
| Theme (mode, brand, fluid) | vb-theme |
vb:theme-change |
| Extensions (motion, sound) | vb-extensions |
vb:extensions-change |
| Accessibility themes | vb-a11y-themes |
vb:a11y-themes-change |
| Key | Action |
|---|---|
| Escape | Close panel, return focus to trigger |
| Tab | Navigate through controls within the panel |
| Space / Enter | Toggle trigger, activate controls |
role="dialog" with aria-label="Site settings".aria-haspopup="dialog" and aria-expanded reflecting state.role="radiogroup".title on each swatch.<input type="checkbox" data-switch="sm">.<theme-picker> — Full theme picker with swatch grid (runs in parallel)