@vuecs/navigation

A package for multi level navigations.
14,491 4
Install
npm install @vuecs/navigation
Latest Version:4.5.1
Vue:3
License:Apache-2.0
Last Updated:Oct 16, 2026
Links: GitHub  ·  npm
Maintainer: tada5hi

@vuecs/navigation

npm version CI license

Multi-level navigation for Vue 3, part of vuecs. Each <VCNavItems> owns its items via a :data prop (plain array, sync fn, or async resolver), and dependent navs coordinate through a shared reactive registry — header tabs that swap a sidebar with zero app wiring.

✨ What's inside

  • 🗂️ :data-driven — pass NavigationItem[], a function, or an async resolver receiving { path, registry }; reactive reads retrigger automatically, refresh() for imperative re-runs.
  • 📡 Reactive registry — a nav publishes its resolved tree under a registry-id; other navs read it (items, active, activeTrail) and derive their own list. The canonical header → sidebar pattern.
  • 🎯 Three active concepts — active (exact leaf, best path-score match), activeWithin (ancestor highlight + auto-open), activeTrail (root → leaf chain). Url-less items become click-driven section switchers.
  • 📐 Submenu modes — collapse (inline Collapsible), dropdown (Reka NavigationMenu flyout), or auto; full arrow / Home / End keyboard navigation.
  • 🧭 Router-optional — soft-reads vue-router's $route when present; works router-free with an explicit :path.
  • 🪜 <VCStepper> compound — Stepper / Item / Trigger / Indicator / Title / Description / Separator on Reka's Stepper, for wizards and checkout flows, with linear-mode gating.

📦 Installation

npm install @vuecs/navigation

⚡ Usage

<VCNavItems
    :data="[
        { name: 'Dashboard', url: '/', icon: 'lucide:home' },
        {
            name: 'Settings',
            icon: 'lucide:settings',
            children: [
                { name: 'Profile', url: '/settings/profile' },
                { name: 'Security', url: '/settings/security' },
            ],
        },
    ]"
/>
<!-- dependent navs: top bar publishes, sidebar derives -->
<VCNavItems :data="topItems" registry registry-id="top" />
<VCNavItems :data="({ registry }) => registry('top').active.value[0]?.children ?? []" />

📚 Documentation

Navigation component · Navigation guide · Stepper

License

Made with 💚

Published under Apache 2.0 License.

Related Packages

@vue-layout/basic

A package containing basic components, to build for example multi level navigati...

1,552 4
vue-navigation

A page navigation library, built with vue2 and vue-router2.

6,916 1,017
vue-tree-nav

Navigation tree menu component with nice integration with vue-router

1,973 25
@moca-labs/vue-router-kit-ts

TypeScript Vue Router Navigation Kit - 화면 전환 및 데이터 전달 관리

1,679 0

Version History

Version Released License
4.5.1 Apache-2.0
4.5.0 Apache-2.0
4.4.1 Apache-2.0
4.4.0 Apache-2.0
4.3.0 Apache-2.0