Skip to content

Commit b8f605d

Browse files
authored
Merge pull request #9 from LFerronato/master
feat: add shadow config prop
2 parents 25eb86a + c1678c2 commit b8f605d

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,25 +66,27 @@ If no props are passed to `<NextTopLoader />`, below is the default configuratio
6666

6767
```jsx
6868
<NextTopLoader
69-
color="#29D"
69+
color="#2299DD"
7070
initialPosition={0.08}
7171
crawlSpeed={200}
7272
height={3}
7373
crawl={true}
7474
showSpinner={true}
7575
easing="ease"
7676
speed={200}
77+
shadow="0 0 10px #2299DD,0 0 5px #2299DD"
7778
/>
7879
```
7980

8081
- `color`: to change the default color of TopLoader.
8182
- `initialPosition`: to change initial position for the TopLoader in percentage, : `0.08 = 8%`.
82-
- `crawlSpeed`: increament delay speed in `ms`.
83+
- `crawlSpeed`: increment delay speed in `ms`.
8384
- `speed`: animation speed for the TopLoader in `ms`
8485
- `easing`: animation settings using easing (a CSS easing string).
8586
- `height`: height of TopLoader in `px`.
86-
- `crawl`: auto increamenting behaviour for the TopLoader.
87+
- `crawl`: auto incrementing behavior for the TopLoader.
8788
- `showSpinner`: to show spinner or not.
89+
- `shadow`: a smooth shadow for the TopLoader. (set to `false` to disable it)
8890

8991
[![Sponsor me on GitHub](https://img.shields.io/badge/Sponsor%20me%20on-GitHub-brightgreen)](https://github.com/sponsors/TheSGJ)
9092

src/index.tsx

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,35 +53,51 @@ export type NextTopLoaderProps = {
5353
* @default 200
5454
*/
5555
speed?: number;
56+
/**
57+
* Defines a shadow for the TopLoader.
58+
* @default "0 0 10px ${color},0 0 5px ${color}"
59+
*
60+
* @ you can disable it by setting it to `false`
61+
*/
62+
shadow?: string | false;
5663
}
5764

5865
const NextTopLoader = ({
59-
color,
60-
height,
66+
color: propColor,
67+
height: propHeight,
6168
showSpinner,
6269
crawl,
6370
crawlSpeed,
6471
initialPosition,
6572
easing,
6673
speed,
74+
shadow,
6775
}: NextTopLoaderProps) => {
6876
const defaultColor = '#29d';
6977
const defaultHeight = 3;
7078

79+
const color = propColor ?? defaultColor;
80+
const height = propHeight ?? defaultHeight;
81+
82+
// Any falsy (except undefined) will disable the shadow
83+
const boxShadow = !shadow && shadow !== undefined
84+
? ''
85+
: shadow
86+
? `box-shadow:${shadow}`
87+
: `box-shadow:0 0 10px ${color},0 0 5px ${color}`;
88+
7189
const styles = (
7290
<style>
7391
{`#nprogress{pointer-events:none}#nprogress .bar{background:${
74-
color ?? defaultColor
92+
color
7593
};position:fixed;z-index:1031;top:0;left:0;width:100%;height:${
76-
height ?? defaultHeight
77-
}px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px ${
78-
color ?? defaultColor
79-
},0 0 5px ${
80-
color ?? defaultColor
94+
height
95+
}px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;${
96+
boxShadow
8197
};opacity:1;-webkit-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border:2px solid transparent;border-top-color:${
82-
color ?? defaultColor
98+
color
8399
};border-left-color:${
84-
color ?? defaultColor
100+
color
85101
};border-radius:50%;-webkit-animation:nprogress-spinner 400ms linear infinite;animation:nprogress-spinner 400ms linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}`}
86102
</style>
87103
);
@@ -183,4 +199,8 @@ NextTopLoader.propTypes = {
183199
initialPosition: PropTypes.number,
184200
easing: PropTypes.string,
185201
speed: PropTypes.number,
202+
shadow: PropTypes.oneOfType([
203+
PropTypes.string,
204+
PropTypes.bool,
205+
]),
186206
};

0 commit comments

Comments
 (0)