admin-layout-vue

Admin layout Vue component with sidebar and navbar.
3,765
Install
npm install admin-layout-vue
Latest Version:1.4.11
Vue:3
License:MIT
Last Updated:Apr 21, 2026
Links: GitHub  ·  npm
Maintainer: zemkogabor

Admin Layout - Vue JS component

NPM version

Requirements:

  • Bootstrap 5.2
  • Vue router (for <router-link>)
  • Vue 3

Install:

npm install admin-layout-vue

Parameters:

Property Type Required
brandName String No
leftItemsByGroups Array Yes
leftItemsByGroups[].heading String No
leftItemsByGroups[].items Array Yes
leftItemsByGroups[].items[].label String Yes
leftItemsByGroups[].items[].iconClass String No
leftItemsByGroups[].items[].route Object No
leftItemsByGroups[].items[].route.name String Yes
leftItemsByGroups[].items[].visible Bool No
leftItemsByGroups[].items[].subItems Array No
leftItemsByGroups[].items[].relatedRoutes Array No
leftItemsByGroups[].items[].subItems[].label String Yes
leftItemsByGroups[].items[].subItems[].route Object Yes
leftItemsByGroups[].items[].subItems[].route.name Object Yes
leftItemsByGroups[].items[].subItems[].visible Bool No
leftItemsByGroups[].items[].subItems[].relatedRoutes Array No
topItems Array Yes
topItems[].label String No
topItems[].iconClass String No
topItems[].callable Callable No
topItems[].showBadge Bool No
topItems[].subItems[] Array No
topItems[].subItems[].label String Yes
topItems[].subItems[].class String No
topItems[].subItems[].iconClass String No
topItems[].subItems[].callable Callable Yes
topNavClass String No
leftNavClass [String, Object] No
leftNavBgClass [String, Object] No
dataBsThemeTop String No
dataBsThemeLeft String No
strictActiveRoute Boolean No

Example

<template>
  <admin-layout
      brand-name="Brand"
      :left-items-by-groups="leftItemsByGroups"
      :top-items="topItems"
  >
    <template #topEnd>
      <div class="badge bg-info me-3">
        Example
      </div>
    </template>
    <router-view />
  </admin-layout>
</template>

<script>
import AdminLayout from 'admin-layout-vue'

export default {
  name: 'ExampleComponent',
  components: {
    AdminLayout,
  },
  data() {
    return {
      /**
       * Sidebar menu items
       */
      leftItemsByGroups: [
        {
          items: [
            {
              label: 'Home',
              iconClass: 'bi bi-house-door-fill',
              route: {
                name: 'home',
              },
            },
          ],
        },
        {
          heading: 'First heading',
          items: [
            {
              label: 'People',
              iconClass: 'bi bi-people-fill',
              route: {
                name: 'people',
              },
              relatedRoutes: [
                  'peopleCreate',
              ],
            },
            {
              label: 'Briefcase',
              iconClass: 'bi bi-briefcase-fill',
              subItems: [
                {
                  label: 'Option 1',
                  route: {
                    name: 'option',
                    query: {
                      status: '1',
                    },
                  },
                  relatedRoutes: [
                    'relatedOption',
                  ],
                },
                {
                  label: 'Option 2',
                  route: {
                    name: 'option',
                    query: {
                      status: '2',
                    },
                  },
                },
              ],
            },
          ],
        },
        {
          items: [
            {
              label: 'Coin',
              iconClass: 'bi bi-coin',
              route: {
                name: 'coin',
              },
            },
          ],
        },
      ],
      /**
       * Top navbar items
       */
      topItems: [
        {
          iconClass: 'bi bi-person-circle',
          subItems: [
            {
              label: this.$t('logout.submit'),
              callable: this.onLogoutClick,
            },
          ],
          showBadge: false,
        },
        {
          iconClass: 'bi bi-bell-fill',
          callable: this.showNotifications,
          showBadge: this.notificationsTotalCount > 0,
        },
      ],
    }
  }
}
</script>

Screenshots

Screenshot 2022-12-01 at 15 19 19 Screenshot 2022-12-01 at 15 19 37 Screenshot 2022-12-01 at 15 18 55

Related Packages

vue3-bs

Vue 3 + Bootstrap 5 Component Library

3,172 0
vue2-sidebar

Vue2Sidebar: Bootstrap 4 sidebar component in Vue 2.0

2,772
bootstrap-vue-wrapper

Bootstrap 5 components in Vue3 wrapper.

15,917
@velkymx/vibeui

A lightweight Vue 3 component library for Bootstrap 5.3 with dual-mode support (...

4,437 9
@composy/menu-vue

LDesign 菜单系统 - Vue 3 适配器

0

Version History

Version Released Vue License
1.4.11 ^3.2.0 MIT
1.4.10 ^3.2.0 MIT
1.4.9 ^3.2.0 MIT
1.4.8 ^3.2.0 MIT
1.4.7 ^3.2.0 MIT