Skip to content

Bottom Navigation ​

The VBottomNavigation component is an alternative to the sidebar. It is primarily used for mobile applications and comes in different colors, icons and and text.

Usage ​

Basic Usage ​

While it is meant to be used with Vue Router, you can also programmatically control the active state by using the item's index.

Default Active ​

You can set the default active of item using default-active prop.

Grow ​

Using the grow property forces the item to fill all available space.

Hide Slider ​

Using the hideSlider property with hide the default slider.

Icon Only ​

Leave the default slot blank to create icon only navigation.

With Vue Router ​

Bottom navigation automatically set active state when using with Vue Router. Add the to prop to the VBottomNavigationItem component and you good to go.

Colors ​

Use color prop to change the active color.

v-model ​

Use v-model to toggle show or hide the component.

With Button ​

You can also add VBtn to the bottom navigation.

With FAB Button ​

You can also add floating action button (FAB) to the bottom navigation.

Props ​

VBottomNavigation ​

NameTypeDefault
modelValuebooleantrue
colorstring'primary'
growbooleanfalse
fixedbooleantrue
defaultActivenumber0
transitionstring'slide-up'

VBottomNavigationItem ​

NameTypeDefault
iconstringundefined
iconSizestring'sm'
textstringundefined
tostring | RouteLocationundefined
hrefstringundefined
nuxtbooleanfalse
asstring | Vue Component'button'
exactActiveClassstring'v-bottom-navigation__item--active'

Events ​

VBottomNavigation ​

NamePayloadDescription
update:modelValue{value: boolean}Fired when modelValue changed

VBottomNavigationItem ​

None

Slots ​

VBottomNavigation ​

NamePropsDescription
default{}The default Vue slot

VBottomNavigationItem ​

NamePropsDescription
default{}The default Vue slot
icon{}Used to place custom icon

CSS Variables ​

scss
:root {
  --v-bottom-navigation-padding-x: 0;
  --v-bottom-navigation-padding-y: var(--size-spacing-3);
  --v-bottom-navigation-bg-color: var(--color-white);
  --v-bottom-navigation-shadow: 4px 0px 20px rgba(0, 0, 0, 0.05);
  --v-bottom-navigation-min-height: 77px;

  // content
  --v-bottom-navigation-content-gap: var(--size-spacing-2);

  // item
  --v-bottom-navigation-item-padding-x: var(--size-spacing-4);
  --v-bottom-navigation-item-padding-y: var(--size-spacing-2);
  --v-bottom-navigation-item-gap: var(--size-spacing-1);
  --v-bottom-navigation-item-color: var(--color-gray-700);

  // active color
  --v-bottom-navigation-item-active-bg-color: var(--color-primary-100);
  --v-bottom-navigation-item-active-color: var(--color-primary-700);

  // hover
  --v-bottom-navigation-item-hover-color: var(--v-bottom-navigation-item-active-color);
}
:root {
  --v-bottom-navigation-padding-x: 0;
  --v-bottom-navigation-padding-y: var(--size-spacing-3);
  --v-bottom-navigation-bg-color: var(--color-white);
  --v-bottom-navigation-shadow: 4px 0px 20px rgba(0, 0, 0, 0.05);
  --v-bottom-navigation-min-height: 77px;

  // content
  --v-bottom-navigation-content-gap: var(--size-spacing-2);

  // item
  --v-bottom-navigation-item-padding-x: var(--size-spacing-4);
  --v-bottom-navigation-item-padding-y: var(--size-spacing-2);
  --v-bottom-navigation-item-gap: var(--size-spacing-1);
  --v-bottom-navigation-item-color: var(--color-gray-700);

  // active color
  --v-bottom-navigation-item-active-bg-color: var(--color-primary-100);
  --v-bottom-navigation-item-active-color: var(--color-primary-700);

  // hover
  --v-bottom-navigation-item-hover-color: var(--v-bottom-navigation-item-active-color);
}

Standalone Installation ​

You can also install the VBottomNavigation component individually via @morpheme/bottom-navigation package:

bash
npm i @morpheme/bottom-navigation
npm i @morpheme/bottom-navigation
vue
<script setup lang="ts">
import {VBottomNavigation, VBottomNavigationItem} from '@morpheme/bottom-navigation';
</script>

<template>
  <VBottomNavigation>
    <VBottomNavigationItem icon="ri:home-line">
      Home
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:history-line">
      Recents
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:heart-line">
      Favorites
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:map-pin-2-line">
      Nearby
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:user-line">
      Account
    </VBottomNavigationItem>
  </VBottomNavigation>
</template>
<script setup lang="ts">
import {VBottomNavigation, VBottomNavigationItem} from '@morpheme/bottom-navigation';
</script>

<template>
  <VBottomNavigation>
    <VBottomNavigationItem icon="ri:home-line">
      Home
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:history-line">
      Recents
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:heart-line">
      Favorites
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:map-pin-2-line">
      Nearby
    </VBottomNavigationItem>
    <VBottomNavigationItem icon="ri:user-line">
      Account
    </VBottomNavigationItem>
  </VBottomNavigation>
</template>

Storybook ​

View Storybook documentation here.