nextjs-toploader
Version:
A Next.js Top Loading Bar component made using nprogress, works with Next.js 15 and Next.js 14 and React.
118 lines (114 loc) • 3.42 kB
TypeScript
import * as PropTypes from 'prop-types';
import * as React from 'react';
import * as NProgress from 'nprogress';
interface TopLoaderActions {
start: () => NProgress.NProgress;
done: (force?: boolean) => NProgress.NProgress;
remove: () => void;
setProgress: (value: number) => NProgress.NProgress;
inc: (amount?: number) => NProgress.NProgress;
trickle: () => NProgress.NProgress;
isStarted: () => boolean;
isRendered: () => boolean;
getPositioningCSS: () => 'translate3d' | 'translate' | 'margin';
}
declare const useTopLoader: () => TopLoaderActions;
type NextTopLoaderProps = {
/**
* Color for the TopLoader.
* @default "#29d"
*/
color?: string;
/**
* The initial position for the TopLoader in percentage, 0.08 is 8%.
* @default 0.08
*/
initialPosition?: number;
/**
* The increament delay speed in milliseconds.
* @default 200
*/
crawlSpeed?: number;
/**
* The height for the TopLoader in pixels (px).
* @default 3
*/
height?: number;
/**
* Auto increamenting behaviour for the TopLoader.
* @default true
*/
crawl?: boolean;
/**
* To show spinner or not.
* @default true
*/
showSpinner?: boolean;
/**
* Animation settings using easing (a CSS easing string).
* @default "ease"
*/
easing?: string;
/**
* Animation speed in ms for the TopLoader.
* @default 200
*/
speed?: number;
/**
* Defines a shadow for the TopLoader.
* @default "0 0 10px ${color},0 0 5px ${color}"
*
* @ you can disable it by setting it to `false`
*/
shadow?: string | false;
/**
* Defines a template for the TopLoader.
* @default "<div class="bar" role="bar"><div class="peg"></div></div>
* <div class="spinner" role="spinner"><div class="spinner-icon"></div></div>"
*/
template?: string;
/**
* Defines zIndex for the TopLoader.
* @default 1600
*
*/
zIndex?: number;
/**
* To show the TopLoader at bottom.
* @default false
*
*/
showAtBottom?: boolean;
/**
* To show the TopLoader for hash anchors.
* @default true
*
*/
showForHashAnchor?: boolean;
};
/**
*
* NextTopLoader
* @license MIT
* @param {NextTopLoaderProps} props The properties to configure NextTopLoader
* @returns {React.JSX.Element}
*
*/
declare const NextTopLoader: {
({ color: propColor, height: propHeight, showSpinner, crawl, crawlSpeed, initialPosition, easing, speed, shadow, template, zIndex, showAtBottom, showForHashAnchor, }: NextTopLoaderProps): React.JSX.Element;
propTypes: {
color: PropTypes.Requireable<string>;
height: PropTypes.Requireable<number>;
showSpinner: PropTypes.Requireable<boolean>;
crawl: PropTypes.Requireable<boolean>;
crawlSpeed: PropTypes.Requireable<number>;
initialPosition: PropTypes.Requireable<number>;
easing: PropTypes.Requireable<string>;
speed: PropTypes.Requireable<number>;
template: PropTypes.Requireable<string>;
shadow: PropTypes.Requireable<NonNullable<string | boolean | null | undefined>>;
zIndex: PropTypes.Requireable<number>;
showAtBottom: PropTypes.Requireable<boolean>;
};
};
export { NextTopLoaderProps, NextTopLoader as default, useTopLoader };