├── README.md
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.css
├── App.jsx
├── components
│ ├── Carousel.css
│ └── Carousel.jsx
├── data
│ └── carouselData.json
├── index.css
└── main.jsx
└── vite.config.js
/README.md:
--------------------------------------------------------------------------------
1 | # react-image-carousel
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite + React
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-carousel",
3 | "version": "0.0.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "react-carousel",
9 | "version": "0.0.0",
10 | "dependencies": {
11 | "react": "^18.2.0",
12 | "react-dom": "^18.2.0",
13 | "react-icons": "^4.7.1"
14 | },
15 | "devDependencies": {
16 | "@types/react": "^18.0.27",
17 | "@types/react-dom": "^18.0.10",
18 | "@vitejs/plugin-react": "^3.1.0",
19 | "vite": "^4.1.0"
20 | }
21 | },
22 | "node_modules/@ampproject/remapping": {
23 | "version": "2.2.0",
24 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
25 | "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
26 | "dev": true,
27 | "dependencies": {
28 | "@jridgewell/gen-mapping": "^0.1.0",
29 | "@jridgewell/trace-mapping": "^0.3.9"
30 | },
31 | "engines": {
32 | "node": ">=6.0.0"
33 | }
34 | },
35 | "node_modules/@babel/code-frame": {
36 | "version": "7.18.6",
37 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
38 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
39 | "dev": true,
40 | "dependencies": {
41 | "@babel/highlight": "^7.18.6"
42 | },
43 | "engines": {
44 | "node": ">=6.9.0"
45 | }
46 | },
47 | "node_modules/@babel/compat-data": {
48 | "version": "7.21.0",
49 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.0.tgz",
50 | "integrity": "sha512-gMuZsmsgxk/ENC3O/fRw5QY8A9/uxQbbCEypnLIiYYc/qVJtEV7ouxC3EllIIwNzMqAQee5tanFabWsUOutS7g==",
51 | "dev": true,
52 | "engines": {
53 | "node": ">=6.9.0"
54 | }
55 | },
56 | "node_modules/@babel/core": {
57 | "version": "7.21.0",
58 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.0.tgz",
59 | "integrity": "sha512-PuxUbxcW6ZYe656yL3EAhpy7qXKq0DmYsrJLpbB8XrsCP9Nm+XCg9XFMb5vIDliPD7+U/+M+QJlH17XOcB7eXA==",
60 | "dev": true,
61 | "dependencies": {
62 | "@ampproject/remapping": "^2.2.0",
63 | "@babel/code-frame": "^7.18.6",
64 | "@babel/generator": "^7.21.0",
65 | "@babel/helper-compilation-targets": "^7.20.7",
66 | "@babel/helper-module-transforms": "^7.21.0",
67 | "@babel/helpers": "^7.21.0",
68 | "@babel/parser": "^7.21.0",
69 | "@babel/template": "^7.20.7",
70 | "@babel/traverse": "^7.21.0",
71 | "@babel/types": "^7.21.0",
72 | "convert-source-map": "^1.7.0",
73 | "debug": "^4.1.0",
74 | "gensync": "^1.0.0-beta.2",
75 | "json5": "^2.2.2",
76 | "semver": "^6.3.0"
77 | },
78 | "engines": {
79 | "node": ">=6.9.0"
80 | },
81 | "funding": {
82 | "type": "opencollective",
83 | "url": "https://opencollective.com/babel"
84 | }
85 | },
86 | "node_modules/@babel/generator": {
87 | "version": "7.21.1",
88 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.1.tgz",
89 | "integrity": "sha512-1lT45bAYlQhFn/BHivJs43AiW2rg3/UbLyShGfF3C0KmHvO5fSghWd5kBJy30kpRRucGzXStvnnCFniCR2kXAA==",
90 | "dev": true,
91 | "dependencies": {
92 | "@babel/types": "^7.21.0",
93 | "@jridgewell/gen-mapping": "^0.3.2",
94 | "@jridgewell/trace-mapping": "^0.3.17",
95 | "jsesc": "^2.5.1"
96 | },
97 | "engines": {
98 | "node": ">=6.9.0"
99 | }
100 | },
101 | "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
102 | "version": "0.3.2",
103 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
104 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
105 | "dev": true,
106 | "dependencies": {
107 | "@jridgewell/set-array": "^1.0.1",
108 | "@jridgewell/sourcemap-codec": "^1.4.10",
109 | "@jridgewell/trace-mapping": "^0.3.9"
110 | },
111 | "engines": {
112 | "node": ">=6.0.0"
113 | }
114 | },
115 | "node_modules/@babel/helper-compilation-targets": {
116 | "version": "7.20.7",
117 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
118 | "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
119 | "dev": true,
120 | "dependencies": {
121 | "@babel/compat-data": "^7.20.5",
122 | "@babel/helper-validator-option": "^7.18.6",
123 | "browserslist": "^4.21.3",
124 | "lru-cache": "^5.1.1",
125 | "semver": "^6.3.0"
126 | },
127 | "engines": {
128 | "node": ">=6.9.0"
129 | },
130 | "peerDependencies": {
131 | "@babel/core": "^7.0.0"
132 | }
133 | },
134 | "node_modules/@babel/helper-environment-visitor": {
135 | "version": "7.18.9",
136 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
137 | "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
138 | "dev": true,
139 | "engines": {
140 | "node": ">=6.9.0"
141 | }
142 | },
143 | "node_modules/@babel/helper-function-name": {
144 | "version": "7.21.0",
145 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz",
146 | "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==",
147 | "dev": true,
148 | "dependencies": {
149 | "@babel/template": "^7.20.7",
150 | "@babel/types": "^7.21.0"
151 | },
152 | "engines": {
153 | "node": ">=6.9.0"
154 | }
155 | },
156 | "node_modules/@babel/helper-hoist-variables": {
157 | "version": "7.18.6",
158 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
159 | "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
160 | "dev": true,
161 | "dependencies": {
162 | "@babel/types": "^7.18.6"
163 | },
164 | "engines": {
165 | "node": ">=6.9.0"
166 | }
167 | },
168 | "node_modules/@babel/helper-module-imports": {
169 | "version": "7.18.6",
170 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
171 | "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
172 | "dev": true,
173 | "dependencies": {
174 | "@babel/types": "^7.18.6"
175 | },
176 | "engines": {
177 | "node": ">=6.9.0"
178 | }
179 | },
180 | "node_modules/@babel/helper-module-transforms": {
181 | "version": "7.21.2",
182 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz",
183 | "integrity": "sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==",
184 | "dev": true,
185 | "dependencies": {
186 | "@babel/helper-environment-visitor": "^7.18.9",
187 | "@babel/helper-module-imports": "^7.18.6",
188 | "@babel/helper-simple-access": "^7.20.2",
189 | "@babel/helper-split-export-declaration": "^7.18.6",
190 | "@babel/helper-validator-identifier": "^7.19.1",
191 | "@babel/template": "^7.20.7",
192 | "@babel/traverse": "^7.21.2",
193 | "@babel/types": "^7.21.2"
194 | },
195 | "engines": {
196 | "node": ">=6.9.0"
197 | }
198 | },
199 | "node_modules/@babel/helper-plugin-utils": {
200 | "version": "7.20.2",
201 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
202 | "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
203 | "dev": true,
204 | "engines": {
205 | "node": ">=6.9.0"
206 | }
207 | },
208 | "node_modules/@babel/helper-simple-access": {
209 | "version": "7.20.2",
210 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
211 | "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
212 | "dev": true,
213 | "dependencies": {
214 | "@babel/types": "^7.20.2"
215 | },
216 | "engines": {
217 | "node": ">=6.9.0"
218 | }
219 | },
220 | "node_modules/@babel/helper-split-export-declaration": {
221 | "version": "7.18.6",
222 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
223 | "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
224 | "dev": true,
225 | "dependencies": {
226 | "@babel/types": "^7.18.6"
227 | },
228 | "engines": {
229 | "node": ">=6.9.0"
230 | }
231 | },
232 | "node_modules/@babel/helper-string-parser": {
233 | "version": "7.19.4",
234 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
235 | "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
236 | "dev": true,
237 | "engines": {
238 | "node": ">=6.9.0"
239 | }
240 | },
241 | "node_modules/@babel/helper-validator-identifier": {
242 | "version": "7.19.1",
243 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
244 | "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
245 | "dev": true,
246 | "engines": {
247 | "node": ">=6.9.0"
248 | }
249 | },
250 | "node_modules/@babel/helper-validator-option": {
251 | "version": "7.21.0",
252 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
253 | "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
254 | "dev": true,
255 | "engines": {
256 | "node": ">=6.9.0"
257 | }
258 | },
259 | "node_modules/@babel/helpers": {
260 | "version": "7.21.0",
261 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.0.tgz",
262 | "integrity": "sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==",
263 | "dev": true,
264 | "dependencies": {
265 | "@babel/template": "^7.20.7",
266 | "@babel/traverse": "^7.21.0",
267 | "@babel/types": "^7.21.0"
268 | },
269 | "engines": {
270 | "node": ">=6.9.0"
271 | }
272 | },
273 | "node_modules/@babel/highlight": {
274 | "version": "7.18.6",
275 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
276 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
277 | "dev": true,
278 | "dependencies": {
279 | "@babel/helper-validator-identifier": "^7.18.6",
280 | "chalk": "^2.0.0",
281 | "js-tokens": "^4.0.0"
282 | },
283 | "engines": {
284 | "node": ">=6.9.0"
285 | }
286 | },
287 | "node_modules/@babel/parser": {
288 | "version": "7.21.2",
289 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz",
290 | "integrity": "sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==",
291 | "dev": true,
292 | "bin": {
293 | "parser": "bin/babel-parser.js"
294 | },
295 | "engines": {
296 | "node": ">=6.0.0"
297 | }
298 | },
299 | "node_modules/@babel/plugin-transform-react-jsx-self": {
300 | "version": "7.21.0",
301 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.21.0.tgz",
302 | "integrity": "sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==",
303 | "dev": true,
304 | "dependencies": {
305 | "@babel/helper-plugin-utils": "^7.20.2"
306 | },
307 | "engines": {
308 | "node": ">=6.9.0"
309 | },
310 | "peerDependencies": {
311 | "@babel/core": "^7.0.0-0"
312 | }
313 | },
314 | "node_modules/@babel/plugin-transform-react-jsx-source": {
315 | "version": "7.19.6",
316 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
317 | "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
318 | "dev": true,
319 | "dependencies": {
320 | "@babel/helper-plugin-utils": "^7.19.0"
321 | },
322 | "engines": {
323 | "node": ">=6.9.0"
324 | },
325 | "peerDependencies": {
326 | "@babel/core": "^7.0.0-0"
327 | }
328 | },
329 | "node_modules/@babel/template": {
330 | "version": "7.20.7",
331 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
332 | "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
333 | "dev": true,
334 | "dependencies": {
335 | "@babel/code-frame": "^7.18.6",
336 | "@babel/parser": "^7.20.7",
337 | "@babel/types": "^7.20.7"
338 | },
339 | "engines": {
340 | "node": ">=6.9.0"
341 | }
342 | },
343 | "node_modules/@babel/traverse": {
344 | "version": "7.21.2",
345 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.2.tgz",
346 | "integrity": "sha512-ts5FFU/dSUPS13tv8XiEObDu9K+iagEKME9kAbaP7r0Y9KtZJZ+NGndDvWoRAYNpeWafbpFeki3q9QoMD6gxyw==",
347 | "dev": true,
348 | "dependencies": {
349 | "@babel/code-frame": "^7.18.6",
350 | "@babel/generator": "^7.21.1",
351 | "@babel/helper-environment-visitor": "^7.18.9",
352 | "@babel/helper-function-name": "^7.21.0",
353 | "@babel/helper-hoist-variables": "^7.18.6",
354 | "@babel/helper-split-export-declaration": "^7.18.6",
355 | "@babel/parser": "^7.21.2",
356 | "@babel/types": "^7.21.2",
357 | "debug": "^4.1.0",
358 | "globals": "^11.1.0"
359 | },
360 | "engines": {
361 | "node": ">=6.9.0"
362 | }
363 | },
364 | "node_modules/@babel/types": {
365 | "version": "7.21.2",
366 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.2.tgz",
367 | "integrity": "sha512-3wRZSs7jiFaB8AjxiiD+VqN5DTG2iRvJGQ+qYFrs/654lg6kGTQWIOFjlBo5RaXuAZjBmP3+OQH4dmhqiiyYxw==",
368 | "dev": true,
369 | "dependencies": {
370 | "@babel/helper-string-parser": "^7.19.4",
371 | "@babel/helper-validator-identifier": "^7.19.1",
372 | "to-fast-properties": "^2.0.0"
373 | },
374 | "engines": {
375 | "node": ">=6.9.0"
376 | }
377 | },
378 | "node_modules/@esbuild/android-arm": {
379 | "version": "0.16.17",
380 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
381 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
382 | "cpu": [
383 | "arm"
384 | ],
385 | "dev": true,
386 | "optional": true,
387 | "os": [
388 | "android"
389 | ],
390 | "engines": {
391 | "node": ">=12"
392 | }
393 | },
394 | "node_modules/@esbuild/android-arm64": {
395 | "version": "0.16.17",
396 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
397 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
398 | "cpu": [
399 | "arm64"
400 | ],
401 | "dev": true,
402 | "optional": true,
403 | "os": [
404 | "android"
405 | ],
406 | "engines": {
407 | "node": ">=12"
408 | }
409 | },
410 | "node_modules/@esbuild/android-x64": {
411 | "version": "0.16.17",
412 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
413 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
414 | "cpu": [
415 | "x64"
416 | ],
417 | "dev": true,
418 | "optional": true,
419 | "os": [
420 | "android"
421 | ],
422 | "engines": {
423 | "node": ">=12"
424 | }
425 | },
426 | "node_modules/@esbuild/darwin-arm64": {
427 | "version": "0.16.17",
428 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
429 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
430 | "cpu": [
431 | "arm64"
432 | ],
433 | "dev": true,
434 | "optional": true,
435 | "os": [
436 | "darwin"
437 | ],
438 | "engines": {
439 | "node": ">=12"
440 | }
441 | },
442 | "node_modules/@esbuild/darwin-x64": {
443 | "version": "0.16.17",
444 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
445 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
446 | "cpu": [
447 | "x64"
448 | ],
449 | "dev": true,
450 | "optional": true,
451 | "os": [
452 | "darwin"
453 | ],
454 | "engines": {
455 | "node": ">=12"
456 | }
457 | },
458 | "node_modules/@esbuild/freebsd-arm64": {
459 | "version": "0.16.17",
460 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
461 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
462 | "cpu": [
463 | "arm64"
464 | ],
465 | "dev": true,
466 | "optional": true,
467 | "os": [
468 | "freebsd"
469 | ],
470 | "engines": {
471 | "node": ">=12"
472 | }
473 | },
474 | "node_modules/@esbuild/freebsd-x64": {
475 | "version": "0.16.17",
476 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
477 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
478 | "cpu": [
479 | "x64"
480 | ],
481 | "dev": true,
482 | "optional": true,
483 | "os": [
484 | "freebsd"
485 | ],
486 | "engines": {
487 | "node": ">=12"
488 | }
489 | },
490 | "node_modules/@esbuild/linux-arm": {
491 | "version": "0.16.17",
492 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
493 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
494 | "cpu": [
495 | "arm"
496 | ],
497 | "dev": true,
498 | "optional": true,
499 | "os": [
500 | "linux"
501 | ],
502 | "engines": {
503 | "node": ">=12"
504 | }
505 | },
506 | "node_modules/@esbuild/linux-arm64": {
507 | "version": "0.16.17",
508 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
509 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
510 | "cpu": [
511 | "arm64"
512 | ],
513 | "dev": true,
514 | "optional": true,
515 | "os": [
516 | "linux"
517 | ],
518 | "engines": {
519 | "node": ">=12"
520 | }
521 | },
522 | "node_modules/@esbuild/linux-ia32": {
523 | "version": "0.16.17",
524 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
525 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
526 | "cpu": [
527 | "ia32"
528 | ],
529 | "dev": true,
530 | "optional": true,
531 | "os": [
532 | "linux"
533 | ],
534 | "engines": {
535 | "node": ">=12"
536 | }
537 | },
538 | "node_modules/@esbuild/linux-loong64": {
539 | "version": "0.16.17",
540 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
541 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
542 | "cpu": [
543 | "loong64"
544 | ],
545 | "dev": true,
546 | "optional": true,
547 | "os": [
548 | "linux"
549 | ],
550 | "engines": {
551 | "node": ">=12"
552 | }
553 | },
554 | "node_modules/@esbuild/linux-mips64el": {
555 | "version": "0.16.17",
556 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
557 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
558 | "cpu": [
559 | "mips64el"
560 | ],
561 | "dev": true,
562 | "optional": true,
563 | "os": [
564 | "linux"
565 | ],
566 | "engines": {
567 | "node": ">=12"
568 | }
569 | },
570 | "node_modules/@esbuild/linux-ppc64": {
571 | "version": "0.16.17",
572 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
573 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
574 | "cpu": [
575 | "ppc64"
576 | ],
577 | "dev": true,
578 | "optional": true,
579 | "os": [
580 | "linux"
581 | ],
582 | "engines": {
583 | "node": ">=12"
584 | }
585 | },
586 | "node_modules/@esbuild/linux-riscv64": {
587 | "version": "0.16.17",
588 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
589 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
590 | "cpu": [
591 | "riscv64"
592 | ],
593 | "dev": true,
594 | "optional": true,
595 | "os": [
596 | "linux"
597 | ],
598 | "engines": {
599 | "node": ">=12"
600 | }
601 | },
602 | "node_modules/@esbuild/linux-s390x": {
603 | "version": "0.16.17",
604 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
605 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
606 | "cpu": [
607 | "s390x"
608 | ],
609 | "dev": true,
610 | "optional": true,
611 | "os": [
612 | "linux"
613 | ],
614 | "engines": {
615 | "node": ">=12"
616 | }
617 | },
618 | "node_modules/@esbuild/linux-x64": {
619 | "version": "0.16.17",
620 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
621 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==",
622 | "cpu": [
623 | "x64"
624 | ],
625 | "dev": true,
626 | "optional": true,
627 | "os": [
628 | "linux"
629 | ],
630 | "engines": {
631 | "node": ">=12"
632 | }
633 | },
634 | "node_modules/@esbuild/netbsd-x64": {
635 | "version": "0.16.17",
636 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
637 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
638 | "cpu": [
639 | "x64"
640 | ],
641 | "dev": true,
642 | "optional": true,
643 | "os": [
644 | "netbsd"
645 | ],
646 | "engines": {
647 | "node": ">=12"
648 | }
649 | },
650 | "node_modules/@esbuild/openbsd-x64": {
651 | "version": "0.16.17",
652 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
653 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
654 | "cpu": [
655 | "x64"
656 | ],
657 | "dev": true,
658 | "optional": true,
659 | "os": [
660 | "openbsd"
661 | ],
662 | "engines": {
663 | "node": ">=12"
664 | }
665 | },
666 | "node_modules/@esbuild/sunos-x64": {
667 | "version": "0.16.17",
668 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
669 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
670 | "cpu": [
671 | "x64"
672 | ],
673 | "dev": true,
674 | "optional": true,
675 | "os": [
676 | "sunos"
677 | ],
678 | "engines": {
679 | "node": ">=12"
680 | }
681 | },
682 | "node_modules/@esbuild/win32-arm64": {
683 | "version": "0.16.17",
684 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
685 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
686 | "cpu": [
687 | "arm64"
688 | ],
689 | "dev": true,
690 | "optional": true,
691 | "os": [
692 | "win32"
693 | ],
694 | "engines": {
695 | "node": ">=12"
696 | }
697 | },
698 | "node_modules/@esbuild/win32-ia32": {
699 | "version": "0.16.17",
700 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
701 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
702 | "cpu": [
703 | "ia32"
704 | ],
705 | "dev": true,
706 | "optional": true,
707 | "os": [
708 | "win32"
709 | ],
710 | "engines": {
711 | "node": ">=12"
712 | }
713 | },
714 | "node_modules/@esbuild/win32-x64": {
715 | "version": "0.16.17",
716 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
717 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
718 | "cpu": [
719 | "x64"
720 | ],
721 | "dev": true,
722 | "optional": true,
723 | "os": [
724 | "win32"
725 | ],
726 | "engines": {
727 | "node": ">=12"
728 | }
729 | },
730 | "node_modules/@jridgewell/gen-mapping": {
731 | "version": "0.1.1",
732 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
733 | "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
734 | "dev": true,
735 | "dependencies": {
736 | "@jridgewell/set-array": "^1.0.0",
737 | "@jridgewell/sourcemap-codec": "^1.4.10"
738 | },
739 | "engines": {
740 | "node": ">=6.0.0"
741 | }
742 | },
743 | "node_modules/@jridgewell/resolve-uri": {
744 | "version": "3.1.0",
745 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
746 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
747 | "dev": true,
748 | "engines": {
749 | "node": ">=6.0.0"
750 | }
751 | },
752 | "node_modules/@jridgewell/set-array": {
753 | "version": "1.1.2",
754 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
755 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
756 | "dev": true,
757 | "engines": {
758 | "node": ">=6.0.0"
759 | }
760 | },
761 | "node_modules/@jridgewell/sourcemap-codec": {
762 | "version": "1.4.14",
763 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
764 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
765 | "dev": true
766 | },
767 | "node_modules/@jridgewell/trace-mapping": {
768 | "version": "0.3.17",
769 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
770 | "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
771 | "dev": true,
772 | "dependencies": {
773 | "@jridgewell/resolve-uri": "3.1.0",
774 | "@jridgewell/sourcemap-codec": "1.4.14"
775 | }
776 | },
777 | "node_modules/@types/prop-types": {
778 | "version": "15.7.5",
779 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
780 | "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
781 | "dev": true
782 | },
783 | "node_modules/@types/react": {
784 | "version": "18.0.28",
785 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.28.tgz",
786 | "integrity": "sha512-RD0ivG1kEztNBdoAK7lekI9M+azSnitIn85h4iOiaLjaTrMjzslhaqCGaI4IyCJ1RljWiLCEu4jyrLLgqxBTew==",
787 | "dev": true,
788 | "dependencies": {
789 | "@types/prop-types": "*",
790 | "@types/scheduler": "*",
791 | "csstype": "^3.0.2"
792 | }
793 | },
794 | "node_modules/@types/react-dom": {
795 | "version": "18.0.11",
796 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz",
797 | "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==",
798 | "dev": true,
799 | "dependencies": {
800 | "@types/react": "*"
801 | }
802 | },
803 | "node_modules/@types/scheduler": {
804 | "version": "0.16.2",
805 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
806 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
807 | "dev": true
808 | },
809 | "node_modules/@vitejs/plugin-react": {
810 | "version": "3.1.0",
811 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz",
812 | "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==",
813 | "dev": true,
814 | "dependencies": {
815 | "@babel/core": "^7.20.12",
816 | "@babel/plugin-transform-react-jsx-self": "^7.18.6",
817 | "@babel/plugin-transform-react-jsx-source": "^7.19.6",
818 | "magic-string": "^0.27.0",
819 | "react-refresh": "^0.14.0"
820 | },
821 | "engines": {
822 | "node": "^14.18.0 || >=16.0.0"
823 | },
824 | "peerDependencies": {
825 | "vite": "^4.1.0-beta.0"
826 | }
827 | },
828 | "node_modules/ansi-styles": {
829 | "version": "3.2.1",
830 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
831 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
832 | "dev": true,
833 | "dependencies": {
834 | "color-convert": "^1.9.0"
835 | },
836 | "engines": {
837 | "node": ">=4"
838 | }
839 | },
840 | "node_modules/browserslist": {
841 | "version": "4.21.5",
842 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz",
843 | "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==",
844 | "dev": true,
845 | "funding": [
846 | {
847 | "type": "opencollective",
848 | "url": "https://opencollective.com/browserslist"
849 | },
850 | {
851 | "type": "tidelift",
852 | "url": "https://tidelift.com/funding/github/npm/browserslist"
853 | }
854 | ],
855 | "dependencies": {
856 | "caniuse-lite": "^1.0.30001449",
857 | "electron-to-chromium": "^1.4.284",
858 | "node-releases": "^2.0.8",
859 | "update-browserslist-db": "^1.0.10"
860 | },
861 | "bin": {
862 | "browserslist": "cli.js"
863 | },
864 | "engines": {
865 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
866 | }
867 | },
868 | "node_modules/caniuse-lite": {
869 | "version": "1.0.30001458",
870 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001458.tgz",
871 | "integrity": "sha512-lQ1VlUUq5q9ro9X+5gOEyH7i3vm+AYVT1WDCVB69XOZ17KZRhnZ9J0Sqz7wTHQaLBJccNCHq8/Ww5LlOIZbB0w==",
872 | "dev": true,
873 | "funding": [
874 | {
875 | "type": "opencollective",
876 | "url": "https://opencollective.com/browserslist"
877 | },
878 | {
879 | "type": "tidelift",
880 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
881 | }
882 | ]
883 | },
884 | "node_modules/chalk": {
885 | "version": "2.4.2",
886 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
887 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
888 | "dev": true,
889 | "dependencies": {
890 | "ansi-styles": "^3.2.1",
891 | "escape-string-regexp": "^1.0.5",
892 | "supports-color": "^5.3.0"
893 | },
894 | "engines": {
895 | "node": ">=4"
896 | }
897 | },
898 | "node_modules/color-convert": {
899 | "version": "1.9.3",
900 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
901 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
902 | "dev": true,
903 | "dependencies": {
904 | "color-name": "1.1.3"
905 | }
906 | },
907 | "node_modules/color-name": {
908 | "version": "1.1.3",
909 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
910 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
911 | "dev": true
912 | },
913 | "node_modules/convert-source-map": {
914 | "version": "1.9.0",
915 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
916 | "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
917 | "dev": true
918 | },
919 | "node_modules/csstype": {
920 | "version": "3.1.1",
921 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
922 | "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
923 | "dev": true
924 | },
925 | "node_modules/debug": {
926 | "version": "4.3.4",
927 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
928 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
929 | "dev": true,
930 | "dependencies": {
931 | "ms": "2.1.2"
932 | },
933 | "engines": {
934 | "node": ">=6.0"
935 | },
936 | "peerDependenciesMeta": {
937 | "supports-color": {
938 | "optional": true
939 | }
940 | }
941 | },
942 | "node_modules/electron-to-chromium": {
943 | "version": "1.4.314",
944 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.314.tgz",
945 | "integrity": "sha512-+3RmNVx9hZLlc0gW//4yep0K5SYKmIvB5DXg1Yg6varsuAHlHwTeqeygfS8DWwLCsNOWrgj+p9qgM5WYjw1lXQ==",
946 | "dev": true
947 | },
948 | "node_modules/esbuild": {
949 | "version": "0.16.17",
950 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz",
951 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==",
952 | "dev": true,
953 | "hasInstallScript": true,
954 | "bin": {
955 | "esbuild": "bin/esbuild"
956 | },
957 | "engines": {
958 | "node": ">=12"
959 | },
960 | "optionalDependencies": {
961 | "@esbuild/android-arm": "0.16.17",
962 | "@esbuild/android-arm64": "0.16.17",
963 | "@esbuild/android-x64": "0.16.17",
964 | "@esbuild/darwin-arm64": "0.16.17",
965 | "@esbuild/darwin-x64": "0.16.17",
966 | "@esbuild/freebsd-arm64": "0.16.17",
967 | "@esbuild/freebsd-x64": "0.16.17",
968 | "@esbuild/linux-arm": "0.16.17",
969 | "@esbuild/linux-arm64": "0.16.17",
970 | "@esbuild/linux-ia32": "0.16.17",
971 | "@esbuild/linux-loong64": "0.16.17",
972 | "@esbuild/linux-mips64el": "0.16.17",
973 | "@esbuild/linux-ppc64": "0.16.17",
974 | "@esbuild/linux-riscv64": "0.16.17",
975 | "@esbuild/linux-s390x": "0.16.17",
976 | "@esbuild/linux-x64": "0.16.17",
977 | "@esbuild/netbsd-x64": "0.16.17",
978 | "@esbuild/openbsd-x64": "0.16.17",
979 | "@esbuild/sunos-x64": "0.16.17",
980 | "@esbuild/win32-arm64": "0.16.17",
981 | "@esbuild/win32-ia32": "0.16.17",
982 | "@esbuild/win32-x64": "0.16.17"
983 | }
984 | },
985 | "node_modules/escalade": {
986 | "version": "3.1.1",
987 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
988 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
989 | "dev": true,
990 | "engines": {
991 | "node": ">=6"
992 | }
993 | },
994 | "node_modules/escape-string-regexp": {
995 | "version": "1.0.5",
996 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
997 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
998 | "dev": true,
999 | "engines": {
1000 | "node": ">=0.8.0"
1001 | }
1002 | },
1003 | "node_modules/fsevents": {
1004 | "version": "2.3.2",
1005 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1006 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1007 | "dev": true,
1008 | "hasInstallScript": true,
1009 | "optional": true,
1010 | "os": [
1011 | "darwin"
1012 | ],
1013 | "engines": {
1014 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1015 | }
1016 | },
1017 | "node_modules/function-bind": {
1018 | "version": "1.1.1",
1019 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1020 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1021 | "dev": true
1022 | },
1023 | "node_modules/gensync": {
1024 | "version": "1.0.0-beta.2",
1025 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1026 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1027 | "dev": true,
1028 | "engines": {
1029 | "node": ">=6.9.0"
1030 | }
1031 | },
1032 | "node_modules/globals": {
1033 | "version": "11.12.0",
1034 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1035 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1036 | "dev": true,
1037 | "engines": {
1038 | "node": ">=4"
1039 | }
1040 | },
1041 | "node_modules/has": {
1042 | "version": "1.0.3",
1043 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1044 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1045 | "dev": true,
1046 | "dependencies": {
1047 | "function-bind": "^1.1.1"
1048 | },
1049 | "engines": {
1050 | "node": ">= 0.4.0"
1051 | }
1052 | },
1053 | "node_modules/has-flag": {
1054 | "version": "3.0.0",
1055 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1056 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1057 | "dev": true,
1058 | "engines": {
1059 | "node": ">=4"
1060 | }
1061 | },
1062 | "node_modules/is-core-module": {
1063 | "version": "2.11.0",
1064 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1065 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1066 | "dev": true,
1067 | "dependencies": {
1068 | "has": "^1.0.3"
1069 | },
1070 | "funding": {
1071 | "url": "https://github.com/sponsors/ljharb"
1072 | }
1073 | },
1074 | "node_modules/js-tokens": {
1075 | "version": "4.0.0",
1076 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1077 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1078 | },
1079 | "node_modules/jsesc": {
1080 | "version": "2.5.2",
1081 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1082 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1083 | "dev": true,
1084 | "bin": {
1085 | "jsesc": "bin/jsesc"
1086 | },
1087 | "engines": {
1088 | "node": ">=4"
1089 | }
1090 | },
1091 | "node_modules/json5": {
1092 | "version": "2.2.3",
1093 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
1094 | "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
1095 | "dev": true,
1096 | "bin": {
1097 | "json5": "lib/cli.js"
1098 | },
1099 | "engines": {
1100 | "node": ">=6"
1101 | }
1102 | },
1103 | "node_modules/loose-envify": {
1104 | "version": "1.4.0",
1105 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1106 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1107 | "dependencies": {
1108 | "js-tokens": "^3.0.0 || ^4.0.0"
1109 | },
1110 | "bin": {
1111 | "loose-envify": "cli.js"
1112 | }
1113 | },
1114 | "node_modules/lru-cache": {
1115 | "version": "5.1.1",
1116 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1117 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1118 | "dev": true,
1119 | "dependencies": {
1120 | "yallist": "^3.0.2"
1121 | }
1122 | },
1123 | "node_modules/magic-string": {
1124 | "version": "0.27.0",
1125 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
1126 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
1127 | "dev": true,
1128 | "dependencies": {
1129 | "@jridgewell/sourcemap-codec": "^1.4.13"
1130 | },
1131 | "engines": {
1132 | "node": ">=12"
1133 | }
1134 | },
1135 | "node_modules/ms": {
1136 | "version": "2.1.2",
1137 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1138 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1139 | "dev": true
1140 | },
1141 | "node_modules/nanoid": {
1142 | "version": "3.3.4",
1143 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1144 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1145 | "dev": true,
1146 | "bin": {
1147 | "nanoid": "bin/nanoid.cjs"
1148 | },
1149 | "engines": {
1150 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1151 | }
1152 | },
1153 | "node_modules/node-releases": {
1154 | "version": "2.0.10",
1155 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz",
1156 | "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==",
1157 | "dev": true
1158 | },
1159 | "node_modules/path-parse": {
1160 | "version": "1.0.7",
1161 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1162 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1163 | "dev": true
1164 | },
1165 | "node_modules/picocolors": {
1166 | "version": "1.0.0",
1167 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1168 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1169 | "dev": true
1170 | },
1171 | "node_modules/postcss": {
1172 | "version": "8.4.21",
1173 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz",
1174 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==",
1175 | "dev": true,
1176 | "funding": [
1177 | {
1178 | "type": "opencollective",
1179 | "url": "https://opencollective.com/postcss/"
1180 | },
1181 | {
1182 | "type": "tidelift",
1183 | "url": "https://tidelift.com/funding/github/npm/postcss"
1184 | }
1185 | ],
1186 | "dependencies": {
1187 | "nanoid": "^3.3.4",
1188 | "picocolors": "^1.0.0",
1189 | "source-map-js": "^1.0.2"
1190 | },
1191 | "engines": {
1192 | "node": "^10 || ^12 || >=14"
1193 | }
1194 | },
1195 | "node_modules/react": {
1196 | "version": "18.2.0",
1197 | "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1198 | "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1199 | "dependencies": {
1200 | "loose-envify": "^1.1.0"
1201 | },
1202 | "engines": {
1203 | "node": ">=0.10.0"
1204 | }
1205 | },
1206 | "node_modules/react-dom": {
1207 | "version": "18.2.0",
1208 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1209 | "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1210 | "dependencies": {
1211 | "loose-envify": "^1.1.0",
1212 | "scheduler": "^0.23.0"
1213 | },
1214 | "peerDependencies": {
1215 | "react": "^18.2.0"
1216 | }
1217 | },
1218 | "node_modules/react-icons": {
1219 | "version": "4.7.1",
1220 | "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz",
1221 | "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==",
1222 | "peerDependencies": {
1223 | "react": "*"
1224 | }
1225 | },
1226 | "node_modules/react-refresh": {
1227 | "version": "0.14.0",
1228 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
1229 | "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
1230 | "dev": true,
1231 | "engines": {
1232 | "node": ">=0.10.0"
1233 | }
1234 | },
1235 | "node_modules/resolve": {
1236 | "version": "1.22.1",
1237 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1238 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1239 | "dev": true,
1240 | "dependencies": {
1241 | "is-core-module": "^2.9.0",
1242 | "path-parse": "^1.0.7",
1243 | "supports-preserve-symlinks-flag": "^1.0.0"
1244 | },
1245 | "bin": {
1246 | "resolve": "bin/resolve"
1247 | },
1248 | "funding": {
1249 | "url": "https://github.com/sponsors/ljharb"
1250 | }
1251 | },
1252 | "node_modules/rollup": {
1253 | "version": "3.17.3",
1254 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.17.3.tgz",
1255 | "integrity": "sha512-p5LaCXiiOL/wrOkj8djsIDFmyU9ysUxcyW+EKRLHb6TKldJzXpImjcRSR+vgo09DBdofGcOoLOsRyxxG2n5/qQ==",
1256 | "dev": true,
1257 | "bin": {
1258 | "rollup": "dist/bin/rollup"
1259 | },
1260 | "engines": {
1261 | "node": ">=14.18.0",
1262 | "npm": ">=8.0.0"
1263 | },
1264 | "optionalDependencies": {
1265 | "fsevents": "~2.3.2"
1266 | }
1267 | },
1268 | "node_modules/scheduler": {
1269 | "version": "0.23.0",
1270 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1271 | "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1272 | "dependencies": {
1273 | "loose-envify": "^1.1.0"
1274 | }
1275 | },
1276 | "node_modules/semver": {
1277 | "version": "6.3.0",
1278 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1279 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1280 | "dev": true,
1281 | "bin": {
1282 | "semver": "bin/semver.js"
1283 | }
1284 | },
1285 | "node_modules/source-map-js": {
1286 | "version": "1.0.2",
1287 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1288 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1289 | "dev": true,
1290 | "engines": {
1291 | "node": ">=0.10.0"
1292 | }
1293 | },
1294 | "node_modules/supports-color": {
1295 | "version": "5.5.0",
1296 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1297 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1298 | "dev": true,
1299 | "dependencies": {
1300 | "has-flag": "^3.0.0"
1301 | },
1302 | "engines": {
1303 | "node": ">=4"
1304 | }
1305 | },
1306 | "node_modules/supports-preserve-symlinks-flag": {
1307 | "version": "1.0.0",
1308 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1309 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1310 | "dev": true,
1311 | "engines": {
1312 | "node": ">= 0.4"
1313 | },
1314 | "funding": {
1315 | "url": "https://github.com/sponsors/ljharb"
1316 | }
1317 | },
1318 | "node_modules/to-fast-properties": {
1319 | "version": "2.0.0",
1320 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
1321 | "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
1322 | "dev": true,
1323 | "engines": {
1324 | "node": ">=4"
1325 | }
1326 | },
1327 | "node_modules/update-browserslist-db": {
1328 | "version": "1.0.10",
1329 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
1330 | "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
1331 | "dev": true,
1332 | "funding": [
1333 | {
1334 | "type": "opencollective",
1335 | "url": "https://opencollective.com/browserslist"
1336 | },
1337 | {
1338 | "type": "tidelift",
1339 | "url": "https://tidelift.com/funding/github/npm/browserslist"
1340 | }
1341 | ],
1342 | "dependencies": {
1343 | "escalade": "^3.1.1",
1344 | "picocolors": "^1.0.0"
1345 | },
1346 | "bin": {
1347 | "browserslist-lint": "cli.js"
1348 | },
1349 | "peerDependencies": {
1350 | "browserslist": ">= 4.21.0"
1351 | }
1352 | },
1353 | "node_modules/vite": {
1354 | "version": "4.1.4",
1355 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz",
1356 | "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==",
1357 | "dev": true,
1358 | "dependencies": {
1359 | "esbuild": "^0.16.14",
1360 | "postcss": "^8.4.21",
1361 | "resolve": "^1.22.1",
1362 | "rollup": "^3.10.0"
1363 | },
1364 | "bin": {
1365 | "vite": "bin/vite.js"
1366 | },
1367 | "engines": {
1368 | "node": "^14.18.0 || >=16.0.0"
1369 | },
1370 | "optionalDependencies": {
1371 | "fsevents": "~2.3.2"
1372 | },
1373 | "peerDependencies": {
1374 | "@types/node": ">= 14",
1375 | "less": "*",
1376 | "sass": "*",
1377 | "stylus": "*",
1378 | "sugarss": "*",
1379 | "terser": "^5.4.0"
1380 | },
1381 | "peerDependenciesMeta": {
1382 | "@types/node": {
1383 | "optional": true
1384 | },
1385 | "less": {
1386 | "optional": true
1387 | },
1388 | "sass": {
1389 | "optional": true
1390 | },
1391 | "stylus": {
1392 | "optional": true
1393 | },
1394 | "sugarss": {
1395 | "optional": true
1396 | },
1397 | "terser": {
1398 | "optional": true
1399 | }
1400 | }
1401 | },
1402 | "node_modules/yallist": {
1403 | "version": "3.1.1",
1404 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1405 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
1406 | "dev": true
1407 | }
1408 | }
1409 | }
1410 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "react-carousel",
3 | "private": true,
4 | "version": "0.0.0",
5 | "type": "module",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build",
9 | "preview": "vite preview"
10 | },
11 | "dependencies": {
12 | "react": "^18.2.0",
13 | "react-dom": "^18.2.0",
14 | "react-icons": "^4.7.1"
15 | },
16 | "devDependencies": {
17 | "@types/react": "^18.0.27",
18 | "@types/react-dom": "^18.0.10",
19 | "@vitejs/plugin-react": "^3.1.0",
20 | "vite": "^4.1.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/App.css:
--------------------------------------------------------------------------------
1 | .App {
2 | height: 100vh;
3 | display: flex;
4 | flex-direction: column;
5 | justify-content: center;
6 | align-items: center;
7 | }
8 |
--------------------------------------------------------------------------------
/src/App.jsx:
--------------------------------------------------------------------------------
1 | import "./App.css";
2 | import { Carousel } from "./components/Carousel";
3 |
4 | import { slides } from "./data/carouselData.json";
5 |
6 | function App() {
7 | return (
8 |
9 |
10 |
11 | );
12 | }
13 |
14 | export default App;
15 |
--------------------------------------------------------------------------------
/src/components/Carousel.css:
--------------------------------------------------------------------------------
1 | .carousel {
2 | position: relative;
3 | display: flex;
4 | justify-content: center;
5 | align-items: center;
6 | width: 600px;
7 | height: 400px;
8 | }
9 |
10 | .slide {
11 | border-radius: 0.5rem;
12 | box-shadow: 0px 0px 7px #666;
13 | width: 100%;
14 | height: 100%;
15 | }
16 |
17 | .slide-hidden {
18 | display: none;
19 | }
20 |
21 | .arrow {
22 | position: absolute;
23 | filter: drop-shadow(0px 0px 5px #555);
24 | width: 2rem;
25 | height: 2rem;
26 | color: white;
27 | }
28 |
29 | .arrow:hover {
30 | cursor: pointer;
31 | }
32 |
33 | .arrow-left {
34 | left: 1rem;
35 | }
36 |
37 | .arrow-right {
38 | right: 1rem;
39 | }
40 |
41 | .indicators {
42 | display: flex;
43 | position: absolute;
44 | bottom: 1rem;
45 | }
46 |
47 | .indicator {
48 | background-color: white;
49 | height: 0.5rem;
50 | width: 0.5rem;
51 | border-radius: 100%;
52 | border: none;
53 | outline: none;
54 | box-shadow: 0px 0px 5px #555;
55 | margin: 0 0.2rem;
56 | cursor: pointer;
57 | }
58 |
59 | .indicator-inactive {
60 | background-color: grey;
61 | }
62 |
--------------------------------------------------------------------------------
/src/components/Carousel.jsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { BsArrowLeftCircleFill, BsArrowRightCircleFill } from "react-icons/bs";
3 |
4 | import "./Carousel.css";
5 |
6 | export const Carousel = ({ data }) => {
7 | const [slide, setSlide] = useState(0);
8 |
9 | const nextSlide = () => {
10 | setSlide(slide === data.length - 1 ? 0 : slide + 1);
11 | };
12 |
13 | const prevSlide = () => {
14 | setSlide(slide === 0 ? data.length - 1 : slide - 1);
15 | };
16 |
17 | return (
18 |
19 |
20 | {data.map((item, idx) => {
21 | return (
22 |

28 | );
29 | })}
30 |
34 |
35 | {data.map((_, idx) => {
36 | return (
37 |
44 | );
45 | })}
46 |
47 |
48 | );
49 | };
50 |
--------------------------------------------------------------------------------
/src/data/carouselData.json:
--------------------------------------------------------------------------------
1 | {
2 | "slides": [
3 | {
4 | "src": "https://picsum.photos/seed/img1/600/400",
5 | "alt": "Image 1 for carousel"
6 | },
7 | {
8 | "src": "https://picsum.photos/seed/img2/600/400",
9 | "alt": "Image 2 for carousel"
10 | },
11 | {
12 | "src": "https://picsum.photos/seed/img3/600/400",
13 | "alt": "Image 3 for carousel"
14 | }
15 | ]
16 | }
17 |
--------------------------------------------------------------------------------
/src/index.css:
--------------------------------------------------------------------------------
1 | * {
2 | box-sizing: border-box;
3 | margin: 0;
4 | padding: 0;
5 | font-family: Arial, Helvetica, sans-serif;
6 | }
7 |
--------------------------------------------------------------------------------
/src/main.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react'
2 | import ReactDOM from 'react-dom/client'
3 | import App from './App'
4 | import './index.css'
5 |
6 | ReactDOM.createRoot(document.getElementById('root')).render(
7 |
8 |
9 | ,
10 | )
11 |
--------------------------------------------------------------------------------
/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from 'vite'
2 | import react from '@vitejs/plugin-react'
3 |
4 | // https://vitejs.dev/config/
5 | export default defineConfig({
6 | plugins: [react()],
7 | })
8 |
--------------------------------------------------------------------------------