JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1368
  • Score
    100M100P100Q109457F
  • License MIT

Next.js library to manage navigation between pages/routes with loading animation

Package Exports

  • nextjs-progressloader
  • nextjs-progressloader/dist/index.js
  • nextjs-progressloader/dist/nextjs-progressloader.esm.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (nextjs-progressloader) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Next Js Progress Loader

Important context: Latter the Next.Js 13 update, router events has ben depreciated and still there's no 'next native ressource' to manipulate router events as before. But this lib was build to solve this problem and bring a new way to make the UX better!

Install

using npm:

npm install nextjs-progressloader

using yarn:

yarn add nextjs-progressloader

Basic Usage

import the animation component:

import { ProgressLoader } from 'nextjs-progressloader';

Usage with app/layout.js for app folder structure

For rendering add <ProgressLoader /> to your return() inside the <body></body> tag of RootLayout():

'use client';
import { ProgressLoader } from 'nextjs-progressloader';

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>
        <ProgressLoader />
        {children}
      </body>
    </html>
  );
}
Learn more about <ProgressLoader />

Advanced Usage

If you would like to render some route with the Load Animation, use <ContainerLink /> component and changeRoute() function to do it:

When render <ContainerLink /> you are required to pass a links prop which is responsible to create all the needed events to work.

And when using changeRoute() a event will be emitted based on the function's param.

Once the links are defined, you can call the route wherever and whenever you want! You may call using the nickname or href.

Learn everything about the Usability flow

Example usage

import { changeRoute, ContainerLink, ContainerLinkProps } from 'nextjs-progressloader';

const links: ContainerLinkProps["links"] = [
  {
    href: "/",
    nickname: "home",
  },
  {
    href: "/posts",
    nickname: "posts"
  },
  {
    href: "/login",
  },
];

export function ComponentIWantToRender(){

  function validateSomeThing(){
    // your validation

    //Example
    if(userLogged){
      // calling by the nickname
      changeRoute("home")
    }else{
      //calling by the route
      changeRoute("/login")
    }
  }

  return (
    <>
      <ContainerLink links={links} />;

      <button className="bg-red-500" onClick={validateSomeThing}>
        Validating something
      </button>
    </>
  )
}
Learn everything about the Usability flow