├── Capture.PNG ├── Capture2.PNG ├── LICENSE ├── README.md ├── example ├── README.md ├── package-lock.json ├── package.json ├── public │ ├── favicon.ico │ ├── index.html │ └── manifest.json ├── src │ ├── App.js │ ├── App.test.js │ ├── index.css │ └── index.js └── y ├── package-lock.json ├── package.json ├── src ├── control.js ├── index.js ├── index.test.js └── styles.module.css └── sticky logo.png /Capture.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abodmicheal/react-js-stickynav/f1b5c5410ae96e7289e731ea14da6f649e0a08da/Capture.PNG -------------------------------------------------------------------------------- /Capture2.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abodmicheal/react-js-stickynav/f1b5c5410ae96e7289e731ea14da6f649e0a08da/Capture2.PNG -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Abod Micheal 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | stickyNav logo 3 |

react-js-stickynav

4 |

5 |

A simple react js nav bar onscroll

6 | 7 | [![NPM](https://img.shields.io/npm/v/react-js-stickynav.svg)](https://www.npmjs.com/package/react-js-stickynav) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) 8 | 9 | ## Intro 10 | 11 |

12 | 13 |

14 | 15 | ## Install 16 | 17 | ```bash 18 | npm install --save react-js-stickynav 19 | ``` 20 | 21 | ## Usage 22 | 23 | length = navigation length , which is the length you want you want your sticky Nav to appear 24 | 25 | ```jsx 26 | import React from 'react' 27 | import { StickyNav } from 'react-js-stickynav' 28 | import 'react-js-stickynav/dist/index.css' 29 | 30 | const App = () => { 31 | const style = () => { 32 | return ( 33 | 51 | ) 52 | } 53 | return ( 54 |
55 | {style()} 56 | insert your Navbar Component here 57 |
58 |

59 | Creating a Single-Page App in React using React Router by kirupa | 60 | filed under Learning React Now that you've familiarized yourself with 61 | the basics of how to work with React, let's kick things up a few 62 | notches. What we are going to do is use React to build a simple 63 | single-page app (also referred to as SPA by the cool kids...and people 64 | living in Scandinavia). Like we talked about in our React introduction 65 | forever ago, single-page apps are different from the more traditional 66 | multi-page apps that you see everywhere. The biggest difference is 67 | that navigating a single-page app doesn't involve going to an entirely 68 | new page. Instead, your pages (commonly known as views in this 69 | context) typically load inline within the same page itself: When you 70 | are loading content inline, things get a little challenging. The hard 71 | part is not loading the content itself. That is relatively easy. The 72 | hard part is making sure that single-page apps behave in a way that is 73 | consistent with what your users are used to. More specifically, when 74 | users navigate your app, they expect that: The URL displayed in the 75 | address bar always reflects the thing that they are viewing. They can 76 | use the browser's back and forward buttons...successfully. They can 77 | navigate to a particular view (aka deep link) directly using the 78 | appropriate URL. With multi-page apps, these three things come for 79 | free. There is nothing extra you have to do for any of it. With 80 | single-page apps, because you aren't navigating to an entirely new 81 | page, you have to do real work to deal with these three things that 82 | your users expect to just work. You need to ensure that navigating 83 | within your app adjusts the URL appropriately. You need to ensure your 84 | browser's history is properly synchronized with 85 |

86 |
87 | Creating a Single-Page App in React using React Router by kirupa | 88 | filed under Learning React Now that you've familiarized yourself with 89 | the basics of how to work with React, let's kick things up a few 90 | notches. What we are going to do is use React to build a simple 91 | single-page app (also referred to as SPA by the cool kids...and people 92 | living in Scandinavia). Like we talked about in our React introduction 93 | forever ago, single-page apps are different from the more traditional 94 | multi-page apps that you see everywhere. The biggest difference is 95 | that navigating a single-page app doesn't involve going to an entirely 96 | new page. Instead, your pages (commonly known as views in this 97 | context) typically load inline within the same page itself: When you 98 | are loading content inline, things get a little challenging. The hard 99 | part is not loading the content itself. That is relatively easy. The 100 | hard part is making sure that single-page apps behave in a way that is 101 | consistent with what your users are used to. More specifically, when 102 | users navigate your app, they expect that: The URL displayed in the 103 | address bar always reflects the thing that they are viewing. They can 104 | use the browser's back and forward buttons...successfully. They can 105 | navigate to a particular view (aka deep link) directly using the 106 | appropriate URL. With multi-page apps, these three things come for 107 | free. There is nothing extra you have to do for any of it. With 108 | single-page apps, because you aren't navigating to an entirely new 109 | page, you have to do real work to deal with these three things that 110 | your users expect to just work. You need to ensure that navigating 111 | within your app adjusts the URL appropriately. You need to ensure your 112 | browser's history is properly synchronized with 113 |
114 |
115 |
116 | ) 117 | } 118 | 119 | export default App 120 | ``` 121 | 122 | 123 | 124 | 125 | ## License 126 | 127 | MIT © [abodmicheal](https://github.com/abodmicheal/react-js-stickynav) 128 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | This example was bootstrapped with [Create React App](https://github.com/facebook/create-react-app). 2 | 3 | It is linked to the react-js-stickynav package in the parent directory for development purposes. 4 | 5 | You can run `npm install` and then `npm start` to test your package. 6 | -------------------------------------------------------------------------------- /example/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-js-stickynav-example", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "react-js-stickynav-example", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "react": "file:../node_modules/react", 12 | "react-dom": "file:../node_modules/react-dom", 13 | "react-js-stickynav": "file:..", 14 | "react-scripts": "file:../node_modules/react-scripts", 15 | "styled-jsx": "^4.0.1" 16 | }, 17 | "devDependencies": { 18 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3" 19 | } 20 | }, 21 | "..": { 22 | "version": "1.0.0", 23 | "license": "MIT", 24 | "dependencies": { 25 | "styled-jsx": "^4.0.1" 26 | }, 27 | "devDependencies": { 28 | "babel-eslint": "^10.0.3", 29 | "cross-env": "^7.0.2", 30 | "eslint": "^6.8.0", 31 | "eslint-config-prettier": "^6.7.0", 32 | "eslint-config-standard": "^14.1.0", 33 | "eslint-config-standard-react": "^9.2.0", 34 | "eslint-plugin-import": "^2.18.2", 35 | "eslint-plugin-node": "^11.0.0", 36 | "eslint-plugin-prettier": "^3.1.1", 37 | "eslint-plugin-promise": "^4.2.1", 38 | "eslint-plugin-react": "^7.17.0", 39 | "eslint-plugin-standard": "^4.0.1", 40 | "gh-pages": "^2.2.0", 41 | "microbundle-crl": "^0.13.10", 42 | "npm-run-all": "^4.1.5", 43 | "prettier": "^2.0.4", 44 | "react": "^16.13.1", 45 | "react-dom": "^16.13.1", 46 | "react-scripts": "^3.4.1", 47 | "styled-jsx": "^4.0.1" 48 | }, 49 | "engines": { 50 | "node": ">=10" 51 | }, 52 | "peerDependencies": { 53 | "react": "^16.0.0", 54 | "styled-jsx": "^4.0.1" 55 | } 56 | }, 57 | "../node_modules/react": { 58 | "version": "16.14.0", 59 | "license": "MIT", 60 | "dependencies": { 61 | "loose-envify": "^1.1.0", 62 | "object-assign": "^4.1.1", 63 | "prop-types": "^15.6.2" 64 | }, 65 | "engines": { 66 | "node": ">=0.10.0" 67 | } 68 | }, 69 | "../node_modules/react-dom": { 70 | "version": "16.14.0", 71 | "license": "MIT", 72 | "dependencies": { 73 | "loose-envify": "^1.1.0", 74 | "object-assign": "^4.1.1", 75 | "prop-types": "^15.6.2", 76 | "scheduler": "^0.19.1" 77 | }, 78 | "peerDependencies": { 79 | "react": "^16.14.0" 80 | } 81 | }, 82 | "../node_modules/react-scripts": { 83 | "version": "3.4.4", 84 | "license": "MIT", 85 | "dependencies": { 86 | "@babel/core": "7.9.0", 87 | "@svgr/webpack": "4.3.3", 88 | "@typescript-eslint/eslint-plugin": "^2.10.0", 89 | "@typescript-eslint/parser": "^2.10.0", 90 | "babel-eslint": "10.1.0", 91 | "babel-jest": "^24.9.0", 92 | "babel-loader": "8.1.0", 93 | "babel-plugin-named-asset-import": "^0.3.6", 94 | "babel-preset-react-app": "^9.1.2", 95 | "camelcase": "^5.3.1", 96 | "case-sensitive-paths-webpack-plugin": "2.3.0", 97 | "css-loader": "3.4.2", 98 | "dotenv": "8.2.0", 99 | "dotenv-expand": "5.1.0", 100 | "eslint": "^6.6.0", 101 | "eslint-config-react-app": "^5.2.1", 102 | "eslint-loader": "3.0.3", 103 | "eslint-plugin-flowtype": "4.6.0", 104 | "eslint-plugin-import": "2.20.1", 105 | "eslint-plugin-jsx-a11y": "6.2.3", 106 | "eslint-plugin-react": "7.19.0", 107 | "eslint-plugin-react-hooks": "^1.6.1", 108 | "file-loader": "4.3.0", 109 | "fs-extra": "^8.1.0", 110 | "html-webpack-plugin": "4.0.0-beta.11", 111 | "identity-obj-proxy": "3.0.0", 112 | "jest": "24.9.0", 113 | "jest-environment-jsdom-fourteen": "1.0.1", 114 | "jest-resolve": "24.9.0", 115 | "jest-watch-typeahead": "0.4.2", 116 | "mini-css-extract-plugin": "0.9.0", 117 | "optimize-css-assets-webpack-plugin": "5.0.3", 118 | "pnp-webpack-plugin": "1.6.4", 119 | "postcss-flexbugs-fixes": "4.1.0", 120 | "postcss-loader": "3.0.0", 121 | "postcss-normalize": "8.0.1", 122 | "postcss-preset-env": "6.7.0", 123 | "postcss-safe-parser": "4.0.1", 124 | "react-app-polyfill": "^1.0.6", 125 | "react-dev-utils": "^10.2.1", 126 | "resolve": "1.15.0", 127 | "resolve-url-loader": "3.1.2", 128 | "sass-loader": "8.0.2", 129 | "semver": "6.3.0", 130 | "style-loader": "0.23.1", 131 | "terser-webpack-plugin": "2.3.8", 132 | "ts-pnp": "1.1.6", 133 | "url-loader": "2.3.0", 134 | "webpack": "4.42.0", 135 | "webpack-dev-server": "3.11.0", 136 | "webpack-manifest-plugin": "2.2.0", 137 | "workbox-webpack-plugin": "4.3.1" 138 | }, 139 | "bin": { 140 | "react-scripts": "bin/react-scripts.js" 141 | }, 142 | "engines": { 143 | "node": ">=8.10" 144 | }, 145 | "optionalDependencies": { 146 | "fsevents": "2.1.2" 147 | }, 148 | "peerDependencies": { 149 | "typescript": "^3.2.1" 150 | }, 151 | "peerDependenciesMeta": { 152 | "typescript": { 153 | "optional": true 154 | } 155 | } 156 | }, 157 | "node_modules/@babel/code-frame": { 158 | "version": "7.14.5", 159 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", 160 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", 161 | "peer": true, 162 | "dependencies": { 163 | "@babel/highlight": "^7.14.5" 164 | }, 165 | "engines": { 166 | "node": ">=6.9.0" 167 | } 168 | }, 169 | "node_modules/@babel/compat-data": { 170 | "version": "7.15.0", 171 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", 172 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", 173 | "peer": true, 174 | "engines": { 175 | "node": ">=6.9.0" 176 | } 177 | }, 178 | "node_modules/@babel/core": { 179 | "version": "7.15.5", 180 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", 181 | "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", 182 | "peer": true, 183 | "dependencies": { 184 | "@babel/code-frame": "^7.14.5", 185 | "@babel/generator": "^7.15.4", 186 | "@babel/helper-compilation-targets": "^7.15.4", 187 | "@babel/helper-module-transforms": "^7.15.4", 188 | "@babel/helpers": "^7.15.4", 189 | "@babel/parser": "^7.15.5", 190 | "@babel/template": "^7.15.4", 191 | "@babel/traverse": "^7.15.4", 192 | "@babel/types": "^7.15.4", 193 | "convert-source-map": "^1.7.0", 194 | "debug": "^4.1.0", 195 | "gensync": "^1.0.0-beta.2", 196 | "json5": "^2.1.2", 197 | "semver": "^6.3.0", 198 | "source-map": "^0.5.0" 199 | }, 200 | "engines": { 201 | "node": ">=6.9.0" 202 | }, 203 | "funding": { 204 | "type": "opencollective", 205 | "url": "https://opencollective.com/babel" 206 | } 207 | }, 208 | "node_modules/@babel/generator": { 209 | "version": "7.15.4", 210 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", 211 | "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", 212 | "peer": true, 213 | "dependencies": { 214 | "@babel/types": "^7.15.4", 215 | "jsesc": "^2.5.1", 216 | "source-map": "^0.5.0" 217 | }, 218 | "engines": { 219 | "node": ">=6.9.0" 220 | } 221 | }, 222 | "node_modules/@babel/helper-compilation-targets": { 223 | "version": "7.15.4", 224 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", 225 | "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", 226 | "peer": true, 227 | "dependencies": { 228 | "@babel/compat-data": "^7.15.0", 229 | "@babel/helper-validator-option": "^7.14.5", 230 | "browserslist": "^4.16.6", 231 | "semver": "^6.3.0" 232 | }, 233 | "engines": { 234 | "node": ">=6.9.0" 235 | }, 236 | "peerDependencies": { 237 | "@babel/core": "^7.0.0" 238 | } 239 | }, 240 | "node_modules/@babel/helper-function-name": { 241 | "version": "7.15.4", 242 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", 243 | "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", 244 | "peer": true, 245 | "dependencies": { 246 | "@babel/helper-get-function-arity": "^7.15.4", 247 | "@babel/template": "^7.15.4", 248 | "@babel/types": "^7.15.4" 249 | }, 250 | "engines": { 251 | "node": ">=6.9.0" 252 | } 253 | }, 254 | "node_modules/@babel/helper-get-function-arity": { 255 | "version": "7.15.4", 256 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", 257 | "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", 258 | "peer": true, 259 | "dependencies": { 260 | "@babel/types": "^7.15.4" 261 | }, 262 | "engines": { 263 | "node": ">=6.9.0" 264 | } 265 | }, 266 | "node_modules/@babel/helper-hoist-variables": { 267 | "version": "7.15.4", 268 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", 269 | "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", 270 | "peer": true, 271 | "dependencies": { 272 | "@babel/types": "^7.15.4" 273 | }, 274 | "engines": { 275 | "node": ">=6.9.0" 276 | } 277 | }, 278 | "node_modules/@babel/helper-member-expression-to-functions": { 279 | "version": "7.15.4", 280 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", 281 | "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", 282 | "peer": true, 283 | "dependencies": { 284 | "@babel/types": "^7.15.4" 285 | }, 286 | "engines": { 287 | "node": ">=6.9.0" 288 | } 289 | }, 290 | "node_modules/@babel/helper-module-imports": { 291 | "version": "7.15.4", 292 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", 293 | "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", 294 | "peer": true, 295 | "dependencies": { 296 | "@babel/types": "^7.15.4" 297 | }, 298 | "engines": { 299 | "node": ">=6.9.0" 300 | } 301 | }, 302 | "node_modules/@babel/helper-module-transforms": { 303 | "version": "7.15.7", 304 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", 305 | "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", 306 | "peer": true, 307 | "dependencies": { 308 | "@babel/helper-module-imports": "^7.15.4", 309 | "@babel/helper-replace-supers": "^7.15.4", 310 | "@babel/helper-simple-access": "^7.15.4", 311 | "@babel/helper-split-export-declaration": "^7.15.4", 312 | "@babel/helper-validator-identifier": "^7.15.7", 313 | "@babel/template": "^7.15.4", 314 | "@babel/traverse": "^7.15.4", 315 | "@babel/types": "^7.15.6" 316 | }, 317 | "engines": { 318 | "node": ">=6.9.0" 319 | } 320 | }, 321 | "node_modules/@babel/helper-optimise-call-expression": { 322 | "version": "7.15.4", 323 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", 324 | "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", 325 | "peer": true, 326 | "dependencies": { 327 | "@babel/types": "^7.15.4" 328 | }, 329 | "engines": { 330 | "node": ">=6.9.0" 331 | } 332 | }, 333 | "node_modules/@babel/helper-plugin-utils": { 334 | "version": "7.14.5", 335 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", 336 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", 337 | "engines": { 338 | "node": ">=6.9.0" 339 | } 340 | }, 341 | "node_modules/@babel/helper-replace-supers": { 342 | "version": "7.15.4", 343 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", 344 | "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", 345 | "peer": true, 346 | "dependencies": { 347 | "@babel/helper-member-expression-to-functions": "^7.15.4", 348 | "@babel/helper-optimise-call-expression": "^7.15.4", 349 | "@babel/traverse": "^7.15.4", 350 | "@babel/types": "^7.15.4" 351 | }, 352 | "engines": { 353 | "node": ">=6.9.0" 354 | } 355 | }, 356 | "node_modules/@babel/helper-simple-access": { 357 | "version": "7.15.4", 358 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", 359 | "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", 360 | "peer": true, 361 | "dependencies": { 362 | "@babel/types": "^7.15.4" 363 | }, 364 | "engines": { 365 | "node": ">=6.9.0" 366 | } 367 | }, 368 | "node_modules/@babel/helper-split-export-declaration": { 369 | "version": "7.15.4", 370 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", 371 | "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", 372 | "peer": true, 373 | "dependencies": { 374 | "@babel/types": "^7.15.4" 375 | }, 376 | "engines": { 377 | "node": ">=6.9.0" 378 | } 379 | }, 380 | "node_modules/@babel/helper-validator-identifier": { 381 | "version": "7.15.7", 382 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 383 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", 384 | "engines": { 385 | "node": ">=6.9.0" 386 | } 387 | }, 388 | "node_modules/@babel/helper-validator-option": { 389 | "version": "7.14.5", 390 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 391 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 392 | "peer": true, 393 | "engines": { 394 | "node": ">=6.9.0" 395 | } 396 | }, 397 | "node_modules/@babel/helpers": { 398 | "version": "7.15.4", 399 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", 400 | "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", 401 | "peer": true, 402 | "dependencies": { 403 | "@babel/template": "^7.15.4", 404 | "@babel/traverse": "^7.15.4", 405 | "@babel/types": "^7.15.4" 406 | }, 407 | "engines": { 408 | "node": ">=6.9.0" 409 | } 410 | }, 411 | "node_modules/@babel/highlight": { 412 | "version": "7.14.5", 413 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", 414 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", 415 | "peer": true, 416 | "dependencies": { 417 | "@babel/helper-validator-identifier": "^7.14.5", 418 | "chalk": "^2.0.0", 419 | "js-tokens": "^4.0.0" 420 | }, 421 | "engines": { 422 | "node": ">=6.9.0" 423 | } 424 | }, 425 | "node_modules/@babel/parser": { 426 | "version": "7.15.7", 427 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", 428 | "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", 429 | "peer": true, 430 | "bin": { 431 | "parser": "bin/babel-parser.js" 432 | }, 433 | "engines": { 434 | "node": ">=6.0.0" 435 | } 436 | }, 437 | "node_modules/@babel/plugin-syntax-jsx": { 438 | "version": "7.14.5", 439 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", 440 | "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", 441 | "dependencies": { 442 | "@babel/helper-plugin-utils": "^7.14.5" 443 | }, 444 | "engines": { 445 | "node": ">=6.9.0" 446 | }, 447 | "peerDependencies": { 448 | "@babel/core": "^7.0.0-0" 449 | } 450 | }, 451 | "node_modules/@babel/plugin-syntax-object-rest-spread": { 452 | "version": "7.8.3", 453 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 454 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 455 | "dev": true, 456 | "dependencies": { 457 | "@babel/helper-plugin-utils": "^7.8.0" 458 | }, 459 | "peerDependencies": { 460 | "@babel/core": "^7.0.0-0" 461 | } 462 | }, 463 | "node_modules/@babel/template": { 464 | "version": "7.15.4", 465 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", 466 | "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", 467 | "peer": true, 468 | "dependencies": { 469 | "@babel/code-frame": "^7.14.5", 470 | "@babel/parser": "^7.15.4", 471 | "@babel/types": "^7.15.4" 472 | }, 473 | "engines": { 474 | "node": ">=6.9.0" 475 | } 476 | }, 477 | "node_modules/@babel/traverse": { 478 | "version": "7.15.4", 479 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", 480 | "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", 481 | "peer": true, 482 | "dependencies": { 483 | "@babel/code-frame": "^7.14.5", 484 | "@babel/generator": "^7.15.4", 485 | "@babel/helper-function-name": "^7.15.4", 486 | "@babel/helper-hoist-variables": "^7.15.4", 487 | "@babel/helper-split-export-declaration": "^7.15.4", 488 | "@babel/parser": "^7.15.4", 489 | "@babel/types": "^7.15.4", 490 | "debug": "^4.1.0", 491 | "globals": "^11.1.0" 492 | }, 493 | "engines": { 494 | "node": ">=6.9.0" 495 | } 496 | }, 497 | "node_modules/@babel/types": { 498 | "version": "7.15.6", 499 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", 500 | "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", 501 | "peer": true, 502 | "dependencies": { 503 | "@babel/helper-validator-identifier": "^7.14.9", 504 | "to-fast-properties": "^2.0.0" 505 | }, 506 | "engines": { 507 | "node": ">=6.9.0" 508 | } 509 | }, 510 | "node_modules/ansi-styles": { 511 | "version": "3.2.1", 512 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 513 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 514 | "peer": true, 515 | "dependencies": { 516 | "color-convert": "^1.9.0" 517 | }, 518 | "engines": { 519 | "node": ">=4" 520 | } 521 | }, 522 | "node_modules/big.js": { 523 | "version": "5.2.2", 524 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 525 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", 526 | "engines": { 527 | "node": "*" 528 | } 529 | }, 530 | "node_modules/browserslist": { 531 | "version": "4.17.1", 532 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", 533 | "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", 534 | "peer": true, 535 | "dependencies": { 536 | "caniuse-lite": "^1.0.30001259", 537 | "electron-to-chromium": "^1.3.846", 538 | "escalade": "^3.1.1", 539 | "nanocolors": "^0.1.5", 540 | "node-releases": "^1.1.76" 541 | }, 542 | "bin": { 543 | "browserslist": "cli.js" 544 | }, 545 | "engines": { 546 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 547 | }, 548 | "funding": { 549 | "type": "opencollective", 550 | "url": "https://opencollective.com/browserslist" 551 | } 552 | }, 553 | "node_modules/caniuse-lite": { 554 | "version": "1.0.30001259", 555 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz", 556 | "integrity": "sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg==", 557 | "peer": true, 558 | "funding": { 559 | "type": "opencollective", 560 | "url": "https://opencollective.com/browserslist" 561 | } 562 | }, 563 | "node_modules/chalk": { 564 | "version": "2.4.2", 565 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 566 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 567 | "peer": true, 568 | "dependencies": { 569 | "ansi-styles": "^3.2.1", 570 | "escape-string-regexp": "^1.0.5", 571 | "supports-color": "^5.3.0" 572 | }, 573 | "engines": { 574 | "node": ">=4" 575 | } 576 | }, 577 | "node_modules/color-convert": { 578 | "version": "1.9.3", 579 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 580 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 581 | "peer": true, 582 | "dependencies": { 583 | "color-name": "1.1.3" 584 | } 585 | }, 586 | "node_modules/color-name": { 587 | "version": "1.1.3", 588 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 589 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 590 | "peer": true 591 | }, 592 | "node_modules/convert-source-map": { 593 | "version": "1.8.0", 594 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 595 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 596 | "peer": true, 597 | "dependencies": { 598 | "safe-buffer": "~5.1.1" 599 | } 600 | }, 601 | "node_modules/debug": { 602 | "version": "4.3.2", 603 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 604 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 605 | "peer": true, 606 | "dependencies": { 607 | "ms": "2.1.2" 608 | }, 609 | "engines": { 610 | "node": ">=6.0" 611 | }, 612 | "peerDependenciesMeta": { 613 | "supports-color": { 614 | "optional": true 615 | } 616 | } 617 | }, 618 | "node_modules/electron-to-chromium": { 619 | "version": "1.3.847", 620 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.847.tgz", 621 | "integrity": "sha512-u2VQOKACHgflbu9TAAiJ9UPaQj6AD0dijL79wdqTAzFz86GXSTTPyaoxP3gZflH+r0DAlY0jD4G0TqzHzLN6Vg==", 622 | "peer": true 623 | }, 624 | "node_modules/emojis-list": { 625 | "version": "2.1.0", 626 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 627 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", 628 | "engines": { 629 | "node": ">= 0.10" 630 | } 631 | }, 632 | "node_modules/escalade": { 633 | "version": "3.1.1", 634 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 635 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 636 | "peer": true, 637 | "engines": { 638 | "node": ">=6" 639 | } 640 | }, 641 | "node_modules/escape-string-regexp": { 642 | "version": "1.0.5", 643 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 644 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 645 | "peer": true, 646 | "engines": { 647 | "node": ">=0.8.0" 648 | } 649 | }, 650 | "node_modules/gensync": { 651 | "version": "1.0.0-beta.2", 652 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 653 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 654 | "peer": true, 655 | "engines": { 656 | "node": ">=6.9.0" 657 | } 658 | }, 659 | "node_modules/globals": { 660 | "version": "11.12.0", 661 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 662 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 663 | "peer": true, 664 | "engines": { 665 | "node": ">=4" 666 | } 667 | }, 668 | "node_modules/has-flag": { 669 | "version": "3.0.0", 670 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 671 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 672 | "peer": true, 673 | "engines": { 674 | "node": ">=4" 675 | } 676 | }, 677 | "node_modules/js-tokens": { 678 | "version": "4.0.0", 679 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 680 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 681 | "peer": true 682 | }, 683 | "node_modules/jsesc": { 684 | "version": "2.5.2", 685 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 686 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 687 | "peer": true, 688 | "bin": { 689 | "jsesc": "bin/jsesc" 690 | }, 691 | "engines": { 692 | "node": ">=4" 693 | } 694 | }, 695 | "node_modules/json5": { 696 | "version": "2.2.0", 697 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 698 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 699 | "peer": true, 700 | "dependencies": { 701 | "minimist": "^1.2.5" 702 | }, 703 | "bin": { 704 | "json5": "lib/cli.js" 705 | }, 706 | "engines": { 707 | "node": ">=6" 708 | } 709 | }, 710 | "node_modules/loader-utils": { 711 | "version": "1.2.3", 712 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", 713 | "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", 714 | "dependencies": { 715 | "big.js": "^5.2.2", 716 | "emojis-list": "^2.0.0", 717 | "json5": "^1.0.1" 718 | }, 719 | "engines": { 720 | "node": ">=4.0.0" 721 | } 722 | }, 723 | "node_modules/loader-utils/node_modules/json5": { 724 | "version": "1.0.1", 725 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 726 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 727 | "dependencies": { 728 | "minimist": "^1.2.0" 729 | }, 730 | "bin": { 731 | "json5": "lib/cli.js" 732 | } 733 | }, 734 | "node_modules/minimist": { 735 | "version": "1.2.5", 736 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 737 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 738 | }, 739 | "node_modules/ms": { 740 | "version": "2.1.2", 741 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 742 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 743 | "peer": true 744 | }, 745 | "node_modules/nanocolors": { 746 | "version": "0.1.6", 747 | "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.6.tgz", 748 | "integrity": "sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ==", 749 | "peer": true, 750 | "engines": { 751 | "node": ">=8.0.0" 752 | } 753 | }, 754 | "node_modules/node-releases": { 755 | "version": "1.1.76", 756 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", 757 | "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", 758 | "peer": true 759 | }, 760 | "node_modules/react": { 761 | "resolved": "../node_modules/react", 762 | "link": true 763 | }, 764 | "node_modules/react-dom": { 765 | "resolved": "../node_modules/react-dom", 766 | "link": true 767 | }, 768 | "node_modules/react-js-stickynav": { 769 | "resolved": "..", 770 | "link": true 771 | }, 772 | "node_modules/react-scripts": { 773 | "resolved": "../node_modules/react-scripts", 774 | "link": true 775 | }, 776 | "node_modules/safe-buffer": { 777 | "version": "5.1.2", 778 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 779 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 780 | }, 781 | "node_modules/semver": { 782 | "version": "6.3.0", 783 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 784 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 785 | "peer": true, 786 | "bin": { 787 | "semver": "bin/semver.js" 788 | } 789 | }, 790 | "node_modules/source-map": { 791 | "version": "0.5.7", 792 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 793 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 794 | "peer": true, 795 | "engines": { 796 | "node": ">=0.10.0" 797 | } 798 | }, 799 | "node_modules/string-hash": { 800 | "version": "1.1.3", 801 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 802 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" 803 | }, 804 | "node_modules/styled-jsx": { 805 | "version": "4.0.1", 806 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz", 807 | "integrity": "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==", 808 | "dependencies": { 809 | "@babel/plugin-syntax-jsx": "7.14.5", 810 | "@babel/types": "7.15.0", 811 | "convert-source-map": "1.7.0", 812 | "loader-utils": "1.2.3", 813 | "source-map": "0.7.3", 814 | "string-hash": "1.1.3", 815 | "stylis": "3.5.4", 816 | "stylis-rule-sheet": "0.0.10" 817 | }, 818 | "engines": { 819 | "node": ">= 12.0.0" 820 | }, 821 | "peerDependencies": { 822 | "react": ">= 16.8.0 || 17.x.x || 18.x.x" 823 | }, 824 | "peerDependenciesMeta": { 825 | "@babel/core": { 826 | "optional": true 827 | } 828 | } 829 | }, 830 | "node_modules/styled-jsx/node_modules/@babel/types": { 831 | "version": "7.15.0", 832 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", 833 | "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", 834 | "dependencies": { 835 | "@babel/helper-validator-identifier": "^7.14.9", 836 | "to-fast-properties": "^2.0.0" 837 | }, 838 | "engines": { 839 | "node": ">=6.9.0" 840 | } 841 | }, 842 | "node_modules/styled-jsx/node_modules/convert-source-map": { 843 | "version": "1.7.0", 844 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 845 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 846 | "dependencies": { 847 | "safe-buffer": "~5.1.1" 848 | } 849 | }, 850 | "node_modules/styled-jsx/node_modules/source-map": { 851 | "version": "0.7.3", 852 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 853 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", 854 | "engines": { 855 | "node": ">= 8" 856 | } 857 | }, 858 | "node_modules/stylis": { 859 | "version": "3.5.4", 860 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", 861 | "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" 862 | }, 863 | "node_modules/stylis-rule-sheet": { 864 | "version": "0.0.10", 865 | "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", 866 | "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", 867 | "peerDependencies": { 868 | "stylis": "^3.5.0" 869 | } 870 | }, 871 | "node_modules/supports-color": { 872 | "version": "5.5.0", 873 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 874 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 875 | "peer": true, 876 | "dependencies": { 877 | "has-flag": "^3.0.0" 878 | }, 879 | "engines": { 880 | "node": ">=4" 881 | } 882 | }, 883 | "node_modules/to-fast-properties": { 884 | "version": "2.0.0", 885 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 886 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 887 | "engines": { 888 | "node": ">=4" 889 | } 890 | } 891 | }, 892 | "dependencies": { 893 | "@babel/code-frame": { 894 | "version": "7.14.5", 895 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", 896 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", 897 | "peer": true, 898 | "requires": { 899 | "@babel/highlight": "^7.14.5" 900 | } 901 | }, 902 | "@babel/compat-data": { 903 | "version": "7.15.0", 904 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", 905 | "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", 906 | "peer": true 907 | }, 908 | "@babel/core": { 909 | "version": "7.15.5", 910 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", 911 | "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", 912 | "peer": true, 913 | "requires": { 914 | "@babel/code-frame": "^7.14.5", 915 | "@babel/generator": "^7.15.4", 916 | "@babel/helper-compilation-targets": "^7.15.4", 917 | "@babel/helper-module-transforms": "^7.15.4", 918 | "@babel/helpers": "^7.15.4", 919 | "@babel/parser": "^7.15.5", 920 | "@babel/template": "^7.15.4", 921 | "@babel/traverse": "^7.15.4", 922 | "@babel/types": "^7.15.4", 923 | "convert-source-map": "^1.7.0", 924 | "debug": "^4.1.0", 925 | "gensync": "^1.0.0-beta.2", 926 | "json5": "^2.1.2", 927 | "semver": "^6.3.0", 928 | "source-map": "^0.5.0" 929 | } 930 | }, 931 | "@babel/generator": { 932 | "version": "7.15.4", 933 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", 934 | "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", 935 | "peer": true, 936 | "requires": { 937 | "@babel/types": "^7.15.4", 938 | "jsesc": "^2.5.1", 939 | "source-map": "^0.5.0" 940 | } 941 | }, 942 | "@babel/helper-compilation-targets": { 943 | "version": "7.15.4", 944 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", 945 | "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", 946 | "peer": true, 947 | "requires": { 948 | "@babel/compat-data": "^7.15.0", 949 | "@babel/helper-validator-option": "^7.14.5", 950 | "browserslist": "^4.16.6", 951 | "semver": "^6.3.0" 952 | } 953 | }, 954 | "@babel/helper-function-name": { 955 | "version": "7.15.4", 956 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", 957 | "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", 958 | "peer": true, 959 | "requires": { 960 | "@babel/helper-get-function-arity": "^7.15.4", 961 | "@babel/template": "^7.15.4", 962 | "@babel/types": "^7.15.4" 963 | } 964 | }, 965 | "@babel/helper-get-function-arity": { 966 | "version": "7.15.4", 967 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", 968 | "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", 969 | "peer": true, 970 | "requires": { 971 | "@babel/types": "^7.15.4" 972 | } 973 | }, 974 | "@babel/helper-hoist-variables": { 975 | "version": "7.15.4", 976 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", 977 | "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", 978 | "peer": true, 979 | "requires": { 980 | "@babel/types": "^7.15.4" 981 | } 982 | }, 983 | "@babel/helper-member-expression-to-functions": { 984 | "version": "7.15.4", 985 | "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", 986 | "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", 987 | "peer": true, 988 | "requires": { 989 | "@babel/types": "^7.15.4" 990 | } 991 | }, 992 | "@babel/helper-module-imports": { 993 | "version": "7.15.4", 994 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", 995 | "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", 996 | "peer": true, 997 | "requires": { 998 | "@babel/types": "^7.15.4" 999 | } 1000 | }, 1001 | "@babel/helper-module-transforms": { 1002 | "version": "7.15.7", 1003 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.7.tgz", 1004 | "integrity": "sha512-ZNqjjQG/AuFfekFTY+7nY4RgBSklgTu970c7Rj3m/JOhIu5KPBUuTA9AY6zaKcUvk4g6EbDXdBnhi35FAssdSw==", 1005 | "peer": true, 1006 | "requires": { 1007 | "@babel/helper-module-imports": "^7.15.4", 1008 | "@babel/helper-replace-supers": "^7.15.4", 1009 | "@babel/helper-simple-access": "^7.15.4", 1010 | "@babel/helper-split-export-declaration": "^7.15.4", 1011 | "@babel/helper-validator-identifier": "^7.15.7", 1012 | "@babel/template": "^7.15.4", 1013 | "@babel/traverse": "^7.15.4", 1014 | "@babel/types": "^7.15.6" 1015 | } 1016 | }, 1017 | "@babel/helper-optimise-call-expression": { 1018 | "version": "7.15.4", 1019 | "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", 1020 | "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", 1021 | "peer": true, 1022 | "requires": { 1023 | "@babel/types": "^7.15.4" 1024 | } 1025 | }, 1026 | "@babel/helper-plugin-utils": { 1027 | "version": "7.14.5", 1028 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", 1029 | "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" 1030 | }, 1031 | "@babel/helper-replace-supers": { 1032 | "version": "7.15.4", 1033 | "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", 1034 | "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", 1035 | "peer": true, 1036 | "requires": { 1037 | "@babel/helper-member-expression-to-functions": "^7.15.4", 1038 | "@babel/helper-optimise-call-expression": "^7.15.4", 1039 | "@babel/traverse": "^7.15.4", 1040 | "@babel/types": "^7.15.4" 1041 | } 1042 | }, 1043 | "@babel/helper-simple-access": { 1044 | "version": "7.15.4", 1045 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", 1046 | "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", 1047 | "peer": true, 1048 | "requires": { 1049 | "@babel/types": "^7.15.4" 1050 | } 1051 | }, 1052 | "@babel/helper-split-export-declaration": { 1053 | "version": "7.15.4", 1054 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", 1055 | "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", 1056 | "peer": true, 1057 | "requires": { 1058 | "@babel/types": "^7.15.4" 1059 | } 1060 | }, 1061 | "@babel/helper-validator-identifier": { 1062 | "version": "7.15.7", 1063 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", 1064 | "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" 1065 | }, 1066 | "@babel/helper-validator-option": { 1067 | "version": "7.14.5", 1068 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", 1069 | "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", 1070 | "peer": true 1071 | }, 1072 | "@babel/helpers": { 1073 | "version": "7.15.4", 1074 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", 1075 | "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", 1076 | "peer": true, 1077 | "requires": { 1078 | "@babel/template": "^7.15.4", 1079 | "@babel/traverse": "^7.15.4", 1080 | "@babel/types": "^7.15.4" 1081 | } 1082 | }, 1083 | "@babel/highlight": { 1084 | "version": "7.14.5", 1085 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", 1086 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", 1087 | "peer": true, 1088 | "requires": { 1089 | "@babel/helper-validator-identifier": "^7.14.5", 1090 | "chalk": "^2.0.0", 1091 | "js-tokens": "^4.0.0" 1092 | } 1093 | }, 1094 | "@babel/parser": { 1095 | "version": "7.15.7", 1096 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", 1097 | "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", 1098 | "peer": true 1099 | }, 1100 | "@babel/plugin-syntax-jsx": { 1101 | "version": "7.14.5", 1102 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", 1103 | "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", 1104 | "requires": { 1105 | "@babel/helper-plugin-utils": "^7.14.5" 1106 | } 1107 | }, 1108 | "@babel/plugin-syntax-object-rest-spread": { 1109 | "version": "7.8.3", 1110 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", 1111 | "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", 1112 | "dev": true, 1113 | "requires": { 1114 | "@babel/helper-plugin-utils": "^7.8.0" 1115 | } 1116 | }, 1117 | "@babel/template": { 1118 | "version": "7.15.4", 1119 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", 1120 | "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", 1121 | "peer": true, 1122 | "requires": { 1123 | "@babel/code-frame": "^7.14.5", 1124 | "@babel/parser": "^7.15.4", 1125 | "@babel/types": "^7.15.4" 1126 | } 1127 | }, 1128 | "@babel/traverse": { 1129 | "version": "7.15.4", 1130 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", 1131 | "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", 1132 | "peer": true, 1133 | "requires": { 1134 | "@babel/code-frame": "^7.14.5", 1135 | "@babel/generator": "^7.15.4", 1136 | "@babel/helper-function-name": "^7.15.4", 1137 | "@babel/helper-hoist-variables": "^7.15.4", 1138 | "@babel/helper-split-export-declaration": "^7.15.4", 1139 | "@babel/parser": "^7.15.4", 1140 | "@babel/types": "^7.15.4", 1141 | "debug": "^4.1.0", 1142 | "globals": "^11.1.0" 1143 | } 1144 | }, 1145 | "@babel/types": { 1146 | "version": "7.15.6", 1147 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", 1148 | "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", 1149 | "peer": true, 1150 | "requires": { 1151 | "@babel/helper-validator-identifier": "^7.14.9", 1152 | "to-fast-properties": "^2.0.0" 1153 | } 1154 | }, 1155 | "ansi-styles": { 1156 | "version": "3.2.1", 1157 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 1158 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 1159 | "peer": true, 1160 | "requires": { 1161 | "color-convert": "^1.9.0" 1162 | } 1163 | }, 1164 | "big.js": { 1165 | "version": "5.2.2", 1166 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 1167 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" 1168 | }, 1169 | "browserslist": { 1170 | "version": "4.17.1", 1171 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", 1172 | "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", 1173 | "peer": true, 1174 | "requires": { 1175 | "caniuse-lite": "^1.0.30001259", 1176 | "electron-to-chromium": "^1.3.846", 1177 | "escalade": "^3.1.1", 1178 | "nanocolors": "^0.1.5", 1179 | "node-releases": "^1.1.76" 1180 | } 1181 | }, 1182 | "caniuse-lite": { 1183 | "version": "1.0.30001259", 1184 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz", 1185 | "integrity": "sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg==", 1186 | "peer": true 1187 | }, 1188 | "chalk": { 1189 | "version": "2.4.2", 1190 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 1191 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 1192 | "peer": true, 1193 | "requires": { 1194 | "ansi-styles": "^3.2.1", 1195 | "escape-string-regexp": "^1.0.5", 1196 | "supports-color": "^5.3.0" 1197 | } 1198 | }, 1199 | "color-convert": { 1200 | "version": "1.9.3", 1201 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 1202 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 1203 | "peer": true, 1204 | "requires": { 1205 | "color-name": "1.1.3" 1206 | } 1207 | }, 1208 | "color-name": { 1209 | "version": "1.1.3", 1210 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 1211 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 1212 | "peer": true 1213 | }, 1214 | "convert-source-map": { 1215 | "version": "1.8.0", 1216 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 1217 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 1218 | "peer": true, 1219 | "requires": { 1220 | "safe-buffer": "~5.1.1" 1221 | } 1222 | }, 1223 | "debug": { 1224 | "version": "4.3.2", 1225 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 1226 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 1227 | "peer": true, 1228 | "requires": { 1229 | "ms": "2.1.2" 1230 | } 1231 | }, 1232 | "electron-to-chromium": { 1233 | "version": "1.3.847", 1234 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.847.tgz", 1235 | "integrity": "sha512-u2VQOKACHgflbu9TAAiJ9UPaQj6AD0dijL79wdqTAzFz86GXSTTPyaoxP3gZflH+r0DAlY0jD4G0TqzHzLN6Vg==", 1236 | "peer": true 1237 | }, 1238 | "emojis-list": { 1239 | "version": "2.1.0", 1240 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 1241 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" 1242 | }, 1243 | "escalade": { 1244 | "version": "3.1.1", 1245 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1246 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1247 | "peer": true 1248 | }, 1249 | "escape-string-regexp": { 1250 | "version": "1.0.5", 1251 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1252 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 1253 | "peer": true 1254 | }, 1255 | "gensync": { 1256 | "version": "1.0.0-beta.2", 1257 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 1258 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 1259 | "peer": true 1260 | }, 1261 | "globals": { 1262 | "version": "11.12.0", 1263 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 1264 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 1265 | "peer": true 1266 | }, 1267 | "has-flag": { 1268 | "version": "3.0.0", 1269 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1270 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", 1271 | "peer": true 1272 | }, 1273 | "js-tokens": { 1274 | "version": "4.0.0", 1275 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1276 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 1277 | "peer": true 1278 | }, 1279 | "jsesc": { 1280 | "version": "2.5.2", 1281 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1282 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1283 | "peer": true 1284 | }, 1285 | "json5": { 1286 | "version": "2.2.0", 1287 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", 1288 | "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", 1289 | "peer": true, 1290 | "requires": { 1291 | "minimist": "^1.2.5" 1292 | } 1293 | }, 1294 | "loader-utils": { 1295 | "version": "1.2.3", 1296 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", 1297 | "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", 1298 | "requires": { 1299 | "big.js": "^5.2.2", 1300 | "emojis-list": "^2.0.0", 1301 | "json5": "^1.0.1" 1302 | }, 1303 | "dependencies": { 1304 | "json5": { 1305 | "version": "1.0.1", 1306 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1307 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1308 | "requires": { 1309 | "minimist": "^1.2.0" 1310 | } 1311 | } 1312 | } 1313 | }, 1314 | "minimist": { 1315 | "version": "1.2.5", 1316 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1317 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1318 | }, 1319 | "ms": { 1320 | "version": "2.1.2", 1321 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1322 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1323 | "peer": true 1324 | }, 1325 | "nanocolors": { 1326 | "version": "0.1.6", 1327 | "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.6.tgz", 1328 | "integrity": "sha512-2pvTw6vYRaBLGir2xR7MxaJtyWkrn+C53EpW8yPotG+pdAwBvt0Xwk4VJ6VHLY0aLthVZPvDfm9TdZvrvAm5UQ==", 1329 | "peer": true 1330 | }, 1331 | "node-releases": { 1332 | "version": "1.1.76", 1333 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", 1334 | "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", 1335 | "peer": true 1336 | }, 1337 | "react": { 1338 | "version": "file:../node_modules/react", 1339 | "requires": { 1340 | "loose-envify": "^1.1.0", 1341 | "object-assign": "^4.1.1", 1342 | "prop-types": "^15.6.2" 1343 | } 1344 | }, 1345 | "react-dom": { 1346 | "version": "file:../node_modules/react-dom", 1347 | "requires": { 1348 | "loose-envify": "^1.1.0", 1349 | "object-assign": "^4.1.1", 1350 | "prop-types": "^15.6.2", 1351 | "scheduler": "^0.19.1" 1352 | } 1353 | }, 1354 | "react-js-stickynav": { 1355 | "version": "file:..", 1356 | "requires": { 1357 | "babel-eslint": "^10.0.3", 1358 | "cross-env": "^7.0.2", 1359 | "eslint": "^6.8.0", 1360 | "eslint-config-prettier": "^6.7.0", 1361 | "eslint-config-standard": "^14.1.0", 1362 | "eslint-config-standard-react": "^9.2.0", 1363 | "eslint-plugin-import": "^2.18.2", 1364 | "eslint-plugin-node": "^11.0.0", 1365 | "eslint-plugin-prettier": "^3.1.1", 1366 | "eslint-plugin-promise": "^4.2.1", 1367 | "eslint-plugin-react": "^7.17.0", 1368 | "eslint-plugin-standard": "^4.0.1", 1369 | "gh-pages": "^2.2.0", 1370 | "microbundle-crl": "^0.13.10", 1371 | "npm-run-all": "^4.1.5", 1372 | "prettier": "^2.0.4", 1373 | "react": "^16.13.1", 1374 | "react-dom": "^16.13.1", 1375 | "react-scripts": "^3.4.1", 1376 | "styled-jsx": "^4.0.1" 1377 | }, 1378 | "dependencies": { 1379 | "react": { 1380 | "version": "16.14.0", 1381 | "requires": { 1382 | "loose-envify": "^1.1.0", 1383 | "object-assign": "^4.1.1", 1384 | "prop-types": "^15.6.2" 1385 | } 1386 | }, 1387 | "react-dom": { 1388 | "version": "16.14.0", 1389 | "requires": { 1390 | "loose-envify": "^1.1.0", 1391 | "object-assign": "^4.1.1", 1392 | "prop-types": "^15.6.2", 1393 | "scheduler": "^0.19.1" 1394 | } 1395 | }, 1396 | "react-scripts": { 1397 | "version": "3.4.4", 1398 | "requires": { 1399 | "@babel/core": "7.9.0", 1400 | "@svgr/webpack": "4.3.3", 1401 | "@typescript-eslint/eslint-plugin": "^2.10.0", 1402 | "@typescript-eslint/parser": "^2.10.0", 1403 | "babel-eslint": "10.1.0", 1404 | "babel-jest": "^24.9.0", 1405 | "babel-loader": "8.1.0", 1406 | "babel-plugin-named-asset-import": "^0.3.6", 1407 | "babel-preset-react-app": "^9.1.2", 1408 | "camelcase": "^5.3.1", 1409 | "case-sensitive-paths-webpack-plugin": "2.3.0", 1410 | "css-loader": "3.4.2", 1411 | "dotenv": "8.2.0", 1412 | "dotenv-expand": "5.1.0", 1413 | "eslint": "^6.6.0", 1414 | "eslint-config-react-app": "^5.2.1", 1415 | "eslint-loader": "3.0.3", 1416 | "eslint-plugin-flowtype": "4.6.0", 1417 | "eslint-plugin-import": "2.20.1", 1418 | "eslint-plugin-jsx-a11y": "6.2.3", 1419 | "eslint-plugin-react": "7.19.0", 1420 | "eslint-plugin-react-hooks": "^1.6.1", 1421 | "file-loader": "4.3.0", 1422 | "fs-extra": "^8.1.0", 1423 | "fsevents": "2.1.2", 1424 | "html-webpack-plugin": "4.0.0-beta.11", 1425 | "identity-obj-proxy": "3.0.0", 1426 | "jest": "24.9.0", 1427 | "jest-environment-jsdom-fourteen": "1.0.1", 1428 | "jest-resolve": "24.9.0", 1429 | "jest-watch-typeahead": "0.4.2", 1430 | "mini-css-extract-plugin": "0.9.0", 1431 | "optimize-css-assets-webpack-plugin": "5.0.3", 1432 | "pnp-webpack-plugin": "1.6.4", 1433 | "postcss-flexbugs-fixes": "4.1.0", 1434 | "postcss-loader": "3.0.0", 1435 | "postcss-normalize": "8.0.1", 1436 | "postcss-preset-env": "6.7.0", 1437 | "postcss-safe-parser": "4.0.1", 1438 | "react-app-polyfill": "^1.0.6", 1439 | "react-dev-utils": "^10.2.1", 1440 | "resolve": "1.15.0", 1441 | "resolve-url-loader": "3.1.2", 1442 | "sass-loader": "8.0.2", 1443 | "semver": "6.3.0", 1444 | "style-loader": "0.23.1", 1445 | "terser-webpack-plugin": "2.3.8", 1446 | "ts-pnp": "1.1.6", 1447 | "url-loader": "2.3.0", 1448 | "webpack": "4.42.0", 1449 | "webpack-dev-server": "3.11.0", 1450 | "webpack-manifest-plugin": "2.2.0", 1451 | "workbox-webpack-plugin": "4.3.1" 1452 | } 1453 | } 1454 | } 1455 | }, 1456 | "react-scripts": { 1457 | "version": "file:../node_modules/react-scripts", 1458 | "requires": { 1459 | "@babel/core": "7.9.0", 1460 | "@svgr/webpack": "4.3.3", 1461 | "@typescript-eslint/eslint-plugin": "^2.10.0", 1462 | "@typescript-eslint/parser": "^2.10.0", 1463 | "babel-eslint": "10.1.0", 1464 | "babel-jest": "^24.9.0", 1465 | "babel-loader": "8.1.0", 1466 | "babel-plugin-named-asset-import": "^0.3.6", 1467 | "babel-preset-react-app": "^9.1.2", 1468 | "camelcase": "^5.3.1", 1469 | "case-sensitive-paths-webpack-plugin": "2.3.0", 1470 | "css-loader": "3.4.2", 1471 | "dotenv": "8.2.0", 1472 | "dotenv-expand": "5.1.0", 1473 | "eslint": "^6.6.0", 1474 | "eslint-config-react-app": "^5.2.1", 1475 | "eslint-loader": "3.0.3", 1476 | "eslint-plugin-flowtype": "4.6.0", 1477 | "eslint-plugin-import": "2.20.1", 1478 | "eslint-plugin-jsx-a11y": "6.2.3", 1479 | "eslint-plugin-react": "7.19.0", 1480 | "eslint-plugin-react-hooks": "^1.6.1", 1481 | "file-loader": "4.3.0", 1482 | "fs-extra": "^8.1.0", 1483 | "fsevents": "2.1.2", 1484 | "html-webpack-plugin": "4.0.0-beta.11", 1485 | "identity-obj-proxy": "3.0.0", 1486 | "jest": "24.9.0", 1487 | "jest-environment-jsdom-fourteen": "1.0.1", 1488 | "jest-resolve": "24.9.0", 1489 | "jest-watch-typeahead": "0.4.2", 1490 | "mini-css-extract-plugin": "0.9.0", 1491 | "optimize-css-assets-webpack-plugin": "5.0.3", 1492 | "pnp-webpack-plugin": "1.6.4", 1493 | "postcss-flexbugs-fixes": "4.1.0", 1494 | "postcss-loader": "3.0.0", 1495 | "postcss-normalize": "8.0.1", 1496 | "postcss-preset-env": "6.7.0", 1497 | "postcss-safe-parser": "4.0.1", 1498 | "react-app-polyfill": "^1.0.6", 1499 | "react-dev-utils": "^10.2.1", 1500 | "resolve": "1.15.0", 1501 | "resolve-url-loader": "3.1.2", 1502 | "sass-loader": "8.0.2", 1503 | "semver": "6.3.0", 1504 | "style-loader": "0.23.1", 1505 | "terser-webpack-plugin": "2.3.8", 1506 | "ts-pnp": "1.1.6", 1507 | "url-loader": "2.3.0", 1508 | "webpack": "4.42.0", 1509 | "webpack-dev-server": "3.11.0", 1510 | "webpack-manifest-plugin": "2.2.0", 1511 | "workbox-webpack-plugin": "4.3.1" 1512 | } 1513 | }, 1514 | "safe-buffer": { 1515 | "version": "5.1.2", 1516 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1517 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1518 | }, 1519 | "semver": { 1520 | "version": "6.3.0", 1521 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1522 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1523 | "peer": true 1524 | }, 1525 | "source-map": { 1526 | "version": "0.5.7", 1527 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1528 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1529 | "peer": true 1530 | }, 1531 | "string-hash": { 1532 | "version": "1.1.3", 1533 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 1534 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" 1535 | }, 1536 | "styled-jsx": { 1537 | "version": "4.0.1", 1538 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz", 1539 | "integrity": "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==", 1540 | "requires": { 1541 | "@babel/plugin-syntax-jsx": "7.14.5", 1542 | "@babel/types": "7.15.0", 1543 | "convert-source-map": "1.7.0", 1544 | "loader-utils": "1.2.3", 1545 | "source-map": "0.7.3", 1546 | "string-hash": "1.1.3", 1547 | "stylis": "3.5.4", 1548 | "stylis-rule-sheet": "0.0.10" 1549 | }, 1550 | "dependencies": { 1551 | "@babel/types": { 1552 | "version": "7.15.0", 1553 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", 1554 | "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", 1555 | "requires": { 1556 | "@babel/helper-validator-identifier": "^7.14.9", 1557 | "to-fast-properties": "^2.0.0" 1558 | } 1559 | }, 1560 | "convert-source-map": { 1561 | "version": "1.7.0", 1562 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 1563 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 1564 | "requires": { 1565 | "safe-buffer": "~5.1.1" 1566 | } 1567 | }, 1568 | "source-map": { 1569 | "version": "0.7.3", 1570 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 1571 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" 1572 | } 1573 | } 1574 | }, 1575 | "stylis": { 1576 | "version": "3.5.4", 1577 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", 1578 | "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" 1579 | }, 1580 | "stylis-rule-sheet": { 1581 | "version": "0.0.10", 1582 | "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", 1583 | "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", 1584 | "requires": {} 1585 | }, 1586 | "supports-color": { 1587 | "version": "5.5.0", 1588 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1589 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1590 | "peer": true, 1591 | "requires": { 1592 | "has-flag": "^3.0.0" 1593 | } 1594 | }, 1595 | "to-fast-properties": { 1596 | "version": "2.0.0", 1597 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1598 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 1599 | } 1600 | } 1601 | } 1602 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-js-stickynav-example", 3 | "homepage": ".", 4 | "version": "0.0.0", 5 | "private": true, 6 | "scripts": { 7 | "start": "node ../node_modules/react-scripts/bin/react-scripts.js start", 8 | "build": "node ../node_modules/react-scripts/bin/react-scripts.js build", 9 | "test": "node ../node_modules/react-scripts/bin/react-scripts.js test", 10 | "eject": "node ../node_modules/react-scripts/bin/react-scripts.js eject" 11 | }, 12 | "dependencies": { 13 | "react": "file:../node_modules/react", 14 | "react-dom": "file:../node_modules/react-dom", 15 | "react-js-stickynav": "file:..", 16 | "react-scripts": "file:../node_modules/react-scripts", 17 | "styled-jsx": "^4.0.1" 18 | }, 19 | "devDependencies": { 20 | "@babel/plugin-syntax-object-rest-spread": "^7.8.3" 21 | }, 22 | "eslintConfig": { 23 | "extends": "react-app" 24 | }, 25 | "browserslist": [ 26 | ">0.2%", 27 | "not dead", 28 | "not ie <= 11", 29 | "not op_mini all" 30 | ] 31 | } 32 | -------------------------------------------------------------------------------- /example/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abodmicheal/react-js-stickynav/f1b5c5410ae96e7289e731ea14da6f649e0a08da/example/public/favicon.ico -------------------------------------------------------------------------------- /example/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 16 | 17 | 18 | 27 | react-js-stickynav 28 | 29 | 30 | 31 | 34 | 35 |
36 | 37 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /example/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "react-js-stickynav", 3 | "name": "react-js-stickynav", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /example/src/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import StickyNav from 'react-js-stickynav' 3 | import 'react-js-stickynav/dist/index.css' 4 | 5 | const App = () => { 6 | const style = () => { 7 | return ( 8 | 26 | ) 27 | } 28 | return ( 29 |
30 | {style()} 31 | insert your Navbar Component here 32 |
33 |

34 | Creating a Single-Page App in React using React Router by kirupa | 35 | filed under Learning React Now that you've familiarized yourself with 36 | the basics of how to work with React, let's kick things up a few 37 | notches. What we are going to do is use React to build a simple 38 | single-page app (also referred to as SPA by the cool kids...and people 39 | living in Scandinavia). Like we talked about in our React introduction 40 | forever ago, single-page apps are different from the more traditional 41 | multi-page apps that you see everywhere. The biggest difference is 42 | that navigating a single-page app doesn't involve going to an entirely 43 | new page. Instead, your pages (commonly known as views in this 44 | context) typically load inline within the same page itself: When you 45 | are loading content inline, things get a little challenging. The hard 46 | part is not loading the content itself. That is relatively easy. The 47 | hard part is making sure that single-page apps behave in a way that is 48 | consistent with what your users are used to. More specifically, when 49 | users navigate your app, they expect that: The URL displayed in the 50 | address bar always reflects the thing that they are viewing. They can 51 | use the browser's back and forward buttons...successfully. They can 52 | navigate to a particular view (aka deep link) directly using the 53 | appropriate URL. With multi-page apps, these three things come for 54 | free. There is nothing extra you have to do for any of it. With 55 | single-page apps, because you aren't navigating to an entirely new 56 | page, you have to do real work to deal with these three things that 57 | your users expect to just work. You need to ensure that navigating 58 | within your app adjusts the URL appropriately. You need to ensure your 59 | browser's history is properly synchronized with 60 |

61 |
62 | Creating a Single-Page App in React using React Router by kirupa | 63 | filed under Learning React Now that you've familiarized yourself with 64 | the basics of how to work with React, let's kick things up a few 65 | notches. What we are going to do is use React to build a simple 66 | single-page app (also referred to as SPA by the cool kids...and people 67 | living in Scandinavia). Like we talked about in our React introduction 68 | forever ago, single-page apps are different from the more traditional 69 | multi-page apps that you see everywhere. The biggest difference is 70 | that navigating a single-page app doesn't involve going to an entirely 71 | new page. Instead, your pages (commonly known as views in this 72 | context) typically load inline within the same page itself: When you 73 | are loading content inline, things get a little challenging. The hard 74 | part is not loading the content itself. That is relatively easy. The 75 | hard part is making sure that single-page apps behave in a way that is 76 | consistent with what your users are used to. More specifically, when 77 | users navigate your app, they expect that: The URL displayed in the 78 | address bar always reflects the thing that they are viewing. They can 79 | use the browser's back and forward buttons...successfully. They can 80 | navigate to a particular view (aka deep link) directly using the 81 | appropriate URL. With multi-page apps, these three things come for 82 | free. There is nothing extra you have to do for any of it. With 83 | single-page apps, because you aren't navigating to an entirely new 84 | page, you have to do real work to deal with these three things that 85 | your users expect to just work. You need to ensure that navigating 86 | within your app adjusts the URL appropriately. You need to ensure your 87 | browser's history is properly synchronized with 88 |
89 |
90 |
91 | ) 92 | } 93 | 94 | export default App 95 | -------------------------------------------------------------------------------- /example/src/App.test.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import App from './App' 4 | 5 | it('renders without crashing', () => { 6 | const div = document.createElement('div') 7 | ReactDOM.render(, div) 8 | ReactDOM.unmountComponentAtNode(div) 9 | }) 10 | -------------------------------------------------------------------------------- /example/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | padding: 0; 4 | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 5 | 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 6 | sans-serif; 7 | -webkit-font-smoothing: antialiased; 8 | -moz-osx-font-smoothing: grayscale; 9 | } 10 | 11 | code { 12 | font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', 13 | monospace; 14 | } 15 | -------------------------------------------------------------------------------- /example/src/index.js: -------------------------------------------------------------------------------- 1 | import './index.css' 2 | 3 | import React from 'react' 4 | import ReactDOM from 'react-dom' 5 | import App from './App' 6 | 7 | ReactDOM.render(, document.getElementById('root')) 8 | -------------------------------------------------------------------------------- /example/y: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "react-js-stickynav", 3 | "version": "1.0.2", 4 | "description": "a simple reactjs nav bar onscroll", 5 | "author": "abodmicheal", 6 | "license": "MIT", 7 | "repository": "https://github.com/abodmicheal/react-js-stickynav", 8 | "main": "dist/index.js", 9 | "module": "dist/index.modern.js", 10 | "source": "src/index.js", 11 | "engines": { 12 | "node": ">=10" 13 | }, 14 | "keywords": [ 15 | "react", 16 | "react onsroll nav bar", 17 | "onscroll", 18 | "react nav", 19 | "nav bar", 20 | "onscroll nav", 21 | "onscroll bar", 22 | "nav", 23 | "react nav", 24 | "react nav bar", 25 | "react bar", 26 | "navigation bar", 27 | "navigation", 28 | "react navigation bar", 29 | "react js navigation bar" 30 | ], 31 | "scripts": { 32 | "build": "microbundle-crl --no-compress --format modern,cjs", 33 | "start": "microbundle-crl watch --no-compress --format modern,cjs", 34 | "prepare": "run-s build", 35 | "test": "run-s test:unit test:lint test:build", 36 | "test:build": "run-s build", 37 | "test:lint": "eslint .", 38 | "test:unit": "cross-env CI=1 react-scripts test --env=jsdom", 39 | "test:watch": "react-scripts test --env=jsdom", 40 | "predeploy": "cd example && npm install && npm run build", 41 | "deploy": "gh-pages -d example/build" 42 | }, 43 | "peerDependencies": { 44 | "react": "^17.0.2", 45 | "react-dom": "^17.0.2", 46 | "styled-jsx": "^4.0.1" 47 | }, 48 | "devDependencies": { 49 | "babel-eslint": "^10.0.3", 50 | "cross-env": "^7.0.2", 51 | "eslint": "^6.8.0", 52 | "eslint-config-prettier": "^6.7.0", 53 | "eslint-config-standard": "^14.1.0", 54 | "eslint-config-standard-react": "^9.2.0", 55 | "eslint-plugin-import": "^2.18.2", 56 | "eslint-plugin-node": "^11.0.0", 57 | "eslint-plugin-prettier": "^3.1.1", 58 | "eslint-plugin-promise": "^4.2.1", 59 | "eslint-plugin-react": "^7.17.0", 60 | "eslint-plugin-standard": "^4.0.1", 61 | "gh-pages": "^2.2.0", 62 | "microbundle-crl": "^0.13.10", 63 | "npm-run-all": "^4.1.5", 64 | "prettier": "^2.0.4", 65 | "react": "^17.0.2", 66 | "react-dom": "^17.0.2", 67 | "react-scripts": "^3.4.1", 68 | "styled-jsx": "^4.0.1" 69 | }, 70 | "files": [ 71 | "dist" 72 | ], 73 | "dependencies": { 74 | "styled-jsx": "^4.0.1" 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /src/control.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { StickyNav } from './index' 3 | 4 | export const Conrol = ({ length, children , nav , nav__scroll }) => { 5 | return ( 6 |
7 | 8 |
9 | ) 10 | } 11 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | import React, { useState, useEffect } from 'react' 2 | import styles from './styles.module.css' 3 | 4 | const StickyNav = (props) => { 5 | const [nav, setNav] = useState(false) 6 | 7 | useEffect(() => { 8 | window.addEventListener('scroll', handleScroll) 9 | }); 10 | 11 | const handleScroll = () => { 12 | window.pageYOffset > props.length ? !nav && setNav(true) : nav && setNav(false) 13 | } 14 | 15 | return ( 16 |
17 |
18 | {props.children} 19 |
20 |
21 | ) 22 | } 23 | 24 | export default StickyNav; 25 | -------------------------------------------------------------------------------- /src/index.test.js: -------------------------------------------------------------------------------- 1 | import { ExampleComponent } from '.' 2 | 3 | describe('ExampleComponent', () => { 4 | it('is truthy', () => { 5 | expect(ExampleComponent).toBeTruthy() 6 | }) 7 | }) 8 | -------------------------------------------------------------------------------- /src/styles.module.css: -------------------------------------------------------------------------------- 1 | /* add css module styles here (optional) */ 2 | * { 3 | margin: 0; 4 | padding: 0; 5 | box-sizing: border-box; 6 | } 7 | -------------------------------------------------------------------------------- /sticky logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abodmicheal/react-js-stickynav/f1b5c5410ae96e7289e731ea14da6f649e0a08da/sticky logo.png --------------------------------------------------------------------------------