Canon
Navigation
Navigation should orient without demanding attention. Canon keeps the structure visible while letting the destination stay primary.
Published April 14, 2026
Available Surfaces
Navigation: primary site header with desktop and mobile statesFooter: property directory, grouped links, newsletter, legal, and cross-property linksBreadcrumbs: hierarchical wayfinding with optional home iconTabs: WAI-ARIA tab panels with keyboard navigation and bindable active statePagination: page-count navigation for result sets and archivesTooltip: small accessible hints for icon or dense controlsPopover: contextual panels that stay attached to a triggerDropdownMenu: compact grouped commands with keyboard behaviorDrawer: contained side-panel navigation for focused tasksStickyHeader: route-aware header for long property pagesMobileDrawer: mobile navigation shell paired withMenuButtonMenuButton: explicit open/close trigger for navigation drawersMegaMenu: broad grouped navigation for property and system mapsCommandPalette: keyboard-first navigation and command search
Primary Navigation Example
<script lang="ts">
import { Navigation } from '@create-something/canon';
const links = [
{ label: 'Canon', href: '/canon' },
{ label: 'Principles', href: '/principles' }
];
</script>
<Navigation
logo="CREATE"
logoSuffix=".something"
{links}
currentPath="/canon"
ctaLabel="Contact"
ctaHref="/contact"
/>
Performance Navigation
Navigation and Footer accept visualStyle?: 'classic' | 'performance' | 'clear'. Use performance; clear remains an input alias for downstream compatibility.
Use performance when the page must serve a buyer or operator who needs immediate orientation before
brand atmosphere. The style follows the Performance Lab layer: a light shell,
compact readable links, crisp dividers, restrained active states, direct dark CTA, and no decorative
navigation complexity.
Performance navigation should route people into proof-bearing work, not generic brand exploration. Prefer labels for maps, policies, systems, workflows, receipts, and contact paths. Keep the primary CTA bounded to a concrete next action such as mapping one workflow, reviewing a handoff, or opening a governed surface.
<Navigation
logo="CREATE SOMETHING"
logoSuffix=".agency"
links={links}
currentPath="/"
fixed={true}
ctaLabel="Map one workflow"
ctaHref="/book"
visualStyle="performance"
/>
<Footer
mode="agency"
aboutText="Governed workflows with clear trust boundaries and receipt-backed delivery."
quickLinkGroups={footerGroups}
footerCta={{
label: 'Map one workflow',
href: '/book',
description: 'Leave with the workflow, boundary, and proof path.'
}}
visualStyle="performance"
/>
Performance Primitives
The Performance navigation and footer are designed to pair with:
PerformancePageSection: claim, proof, action, and split hero sectionsPerformanceProofStrip: compact objects/actions/states/receipts proofPerformanceStateRows: governed run/wait/stop rowsPerformanceDecisionPanel: selectable allow/review/block decision paths with evidence and receiptsPerformanceReceiptGridandPerformanceArtifactCard: evidence and delivery receiptsPerformanceCtaBand: restrained final action band
Breadcrumbs and Tabs
<script lang="ts">
import { Breadcrumbs, Tabs } from '@create-something/canon';
const items = [
{ label: 'Canon', href: '/canon' },
{ label: 'Navigation' }
];
const tabs = [
{ id: 'overview', label: 'Overview' },
{ id: 'api', label: 'API' }
];
let activeTab = 'overview';
</script>
<Breadcrumbs {items} showHomeIcon={true} />
<Tabs {tabs} bind:activeTab>
{#snippet children(tabId)}
<p>{tabId} content</p>
{/snippet}
</Tabs>
Navigation Patterns
Use DropdownMenu, Popover, and Tooltip only when the trigger remains visible and the
relationship between trigger and panel is obvious. Use Drawer, MobileDrawer, MenuButton,
and StickyHeader for property navigation that must remain scannable across mobile and desktop.
Use MegaMenu and CommandPalette when a property has enough routes or commands that search,
grouping, or keyboard-first navigation reduces friction.
Design Guidance
- Keep the primary header focused on top-level choices.
- Use breadcrumbs when the user needs a clear sense of depth.
- Use tabs for peer content, not for hiding unrelated workflows.
- Use
visualStyle="performance"for the CREATE SOMETHING communication layer: plain-language orientation, visible proof, and a direct next action.