Skip to content

Navigation bar ​

Preview

Source code
html
<div class="preview-row">
    <label for="nav-bar-open">Show navigation bar?</label>
    <h-switch id="nav-bar-open" v-model="isOpen" />
</div>
<h-navigation-bar v-if="isOpen" :hide-on-scroll="state.hideOnScroll">
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 0"
        @click.prevent="activeIcon = 0"
        :hide-label="state.hideLabels"
    >
        <template #inactive><circle-outline-icon /></template>
        <template #active><circle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 1"
        @click.prevent="activeIcon = 1"
        show-badge
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 2"
        @click.prevent="activeIcon = 2"
        show-badge
        :badge-count="1000"
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 3"
        @click.prevent="activeIcon = 3"
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
</h-navigation-bar>
<div class="preview-row">
    <label for="nav-bar-open">Show navigation bar?</label>
    <h-switch id="nav-bar-open" v-model="isOpen" />
</div>
<h-navigation-bar v-if="isOpen" :hide-on-scroll="state.hideOnScroll">
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 0"
        @click.prevent="activeIcon = 0"
        :hide-label="state.hideLabels"
    >
        <template #inactive><circle-outline-icon /></template>
        <template #active><circle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 1"
        @click.prevent="activeIcon = 1"
        show-badge
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 2"
        @click.prevent="activeIcon = 2"
        show-badge
        :badge-count="1000"
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
    <h-navigation-button
        label="Label"
        :is-active="activeIcon === 3"
        @click.prevent="activeIcon = 3"
        :hide-label="state.hideLabels"
    >
        <template #inactive><triangle-outline-icon /></template>
        <template #active><triangle-icon /></template>
    </h-navigation-button>
</h-navigation-bar>

Navigation bars let people switch between UI views on smaller devices. See the Material 3 documentation for this component.

Props ​

HNavigationBar ​

ts
defineProps<{
    // If this navigation bar should be hidden when the user scrolls down.
    hideOnScroll: boolean
}>()
defineProps<{
    // If this navigation bar should be hidden when the user scrolls down.
    hideOnScroll: boolean
}>()

HNavigationButton ​

ts
defineProps<{
    // The label for this button. Should be descriptive - is used for the
    // `aria-label` attribute.
    label: string
    // The content to display, if different from the label.
    content?: string
    // Which element to render the button as. Should be a link-like element.
    // Defaults to `a`.
    as?: string | Component
    // Whether the label should be hidden.
    hideLabel?: boolean
    // Whether the button links to the location that the user is currently at.
    isActive?: boolean
    // Whether to show a notification badge.
    showBadge?: boolean
    // The count to show on the notification badge, if any.
    badgeCount?: number
    // Whether to hide the tooltip.
    noTooltip?: boolean
}>()
defineProps<{
    // The label for this button. Should be descriptive - is used for the
    // `aria-label` attribute.
    label: string
    // The content to display, if different from the label.
    content?: string
    // Which element to render the button as. Should be a link-like element.
    // Defaults to `a`.
    as?: string | Component
    // Whether the label should be hidden.
    hideLabel?: boolean
    // Whether the button links to the location that the user is currently at.
    isActive?: boolean
    // Whether to show a notification badge.
    showBadge?: boolean
    // The count to show on the notification badge, if any.
    badgeCount?: number
    // Whether to hide the tooltip.
    noTooltip?: boolean
}>()

Slots ​

HNavigationBar ​

No slots.

HNavigationButton ​

active ​

The active slot is used for the icon when the navigation button is active.

inactive ​

The inactive slot is used for the icon when the navigation button is inactive.

Made with ❤ by Autumn