npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

vue-layout-navigation

v0.1.3

Published

[![npm version](https://badge.fury.io/js/vue-layout-navigation.svg)](https://badge.fury.io/js/vue-layout-navigation) [![CI](https://github.com/Tada5hi/vue-layout-navigation/actions/workflows/main.yml/badge.svg)](https://github.com/Tada5hi/vue-layout-navig

Downloads

27

Readme

npm version CI

Vue-Layout-Navigation 🏝

This repository contains:

  • vuex store plugin 🏦
    • to hold the current navigation components for each tier.
  • vue templates ⛩
    • to render navigation components from the vuex store
  • (nuxt-) middleware 🚧
    • to initialize navigation components according meta properties or by url, if no meta data is available.

Table of Contents

Installation

This package requires nodejs & npm to be installed on the host machine.

$ npm i --save-dev vue-layout-navigation

Usage

The first step is to define a class which implements the Interface NavigationProviderInterface. It will be responsible for providing navigation items for specific tiers on demand and will be injected to the vuex store.

This implementation class shape should look like this:

import {NavigationProviderInterface} from "./type";

export class NavigationProvider implements NavigationProviderInterface {
    async getComponent(
        tier: NavigationComponentTier, 
        id: string, 
        context: NavigationProviderContext
    ): Promise<NavigationComponentConfig | undefined> {
        // component for specific tier for a given context.
    }

    async getComponents(
        tier: NavigationComponentTier,
        context: NavigationProviderContext
    ): Promise<NavigationComponentConfig[]> {
        // components for specific tier for a given context.
    }

    async hasTier(tier: NavigationComponentTier): Promise<boolean> {
        // check if the tier exists.
    }

    async getContextForUrl?(url: string): Promise<NavigationProviderContext | undefined> {
        // build component context for url
    }
}

The next step is to init the vuex store and inject an instance of the NavigationProvider to the store. The vue entry point could look like this:

import Vue, { VNode } from 'vue';
import Vuex from 'vuex';
import VueRouter from "vue-router";

// import the NavigationProviderInterface implementation
import {NavigationProvider} from "./module";

import VueLayoutNavigation, {
    storePlugin
} from 'vue-layout-navigation';

// register the plugin, vuex & vue-router
Vue.use(VueLayoutNavigation);
Vue.use(Vuex);
Vue.use(VueRouter);

const router = new VueRouter({
    mode: "history",
    routes: [
        // ... set paths
    ]
});

const store = new Vuex.Store({
    modules: {
        layout: storePlugin
    }
});

(store as any).$layoutNavigationProvider = new NavigationProvider();
(store as any).$router = router;

Promise.resolve()
    .then(() => store.dispatch('layout/initNavigation'));

new Vue({
    render: (h): VNode => h(Dev),
    store,
    router
}).$mount('#app');

After those steps are completed, the NavigationComponents SFC can be placed anywhere, if registered globally. In addition, navigation components are reactively rendered for a specific navigation tier, through the store.

<template>
    <div>
        <navigation-components :tier="0" />
        
        <navigation-components :tier="1" />
    </div>
</template>

Example

For a full example check out ./dev/ directory of this project.