- made using NProgress.
- supports data route with loader
- supports future.v7_startTransition
See the demo for detail.
npm install react-router-topbar
pnpm install react-router-topbar
yarn add react-router-topbar
Place the topbar component inside your router's root component.
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import ReactRouterTopbar from "react-router-topbar";
function App() {
return (
<RouterProvider future={{ v7_startTransition: true }} router={router} />
);
}
export default App;
const router = createBrowserRouter([
{
path: "/",
element: <Root />,
children: [
...
],
},
]);
function Root() {
return (
<>
<ReactRouterTopbar />
...
</>
);
}
If no props are passed to <ReactRouterTopbar />
, below is the default configuration applied.
<ReactRouterTopbar
color="#2299DD"
initialPosition={0.08}
crawlSpeed={200}
height={3}
crawl={true}
showSpinner={true}
easing="ease"
speed={200}
shadow="0 0 10px #2299DD,0 0 5px #2299DD"
template='<div class="bar" role="bar"><div class="peg"></div></div>
<div class="spinner" role="spinner"><div class="spinner-icon"></div></div>'
zIndex={1600}
showAtBottom={false}
/>
color
: to change the default color of TopLoader.initialPosition
: to change initial position for the TopLoader in percentage, :0.08 = 8%
.crawlSpeed
: increment delay speed inms
.speed
: animation speed for the TopLoader inms
easing
: animation settings using easing (a CSS easing string).height
: height of TopLoader inpx
.crawl
: auto incrementing behavior for the TopLoader.showSpinner
: to show spinner or not.shadow
: a smooth shadow for the TopLoader. (set tofalse
to disable it)template
: to include custom HTML attributes for the TopLoader.zIndex
: defines zIndex for the TopLoader.showAtBottom
: To show the TopLoader at bottom. (increase height for the TopLoader to ensure it's visibility at the mobile devices)
Name | Type | Default Value |
---|---|---|
color |
string |
"#2299DD" |
initialPosition |
number |
0.08 |
crawlSpeed |
number |
200 |
height |
number |
3 |
crawl |
boolean |
true |
showSpinner |
boolean |
true |
easing |
string |
"ease" |
speed |
number |
200 |
shadow |
string | false |
"0 0 10px #2299DD,0 0 5px #2299DD" |
template |
string |
"<div class="bar" role="bar"><div class="peg"></div></div><div class="spinner" role="spinner"><div class="spinner-icon"></div></div>" |
zIndex |
number |
1600 |
showAtBottom |
boolean |
false |
MIT.
Basic structure from Nextjs Toploader.