irongit

first commit

huncholanehuncholaneauthored
commit a86b0394b2af6bf3f0699d7bfde9070040056ee6Browse files

23 files changed, +3339 -0

+25-0.gitignore
@@ -0,0 +1,25 @@
1+# Logs
2+logs
3+*.log
4+npm-debug.log*
5+yarn-debug.log*
6+yarn-error.log*
7+pnpm-debug.log*
8+lerna-debug.log*
9+
10+node_modules
11+dist
12+dist-ssr
13+*.local
14+
15+# Editor directories and files
16+.vscode/*
17+!.vscode/extensions.json
18+.idea
19+.DS_Store
20+*.suo
21+*.ntvs*
22+*.njsproj
23+*.sln
24+*.sw?
25+/dist
+3-0entrypoint.sh
@@ -0,0 +1,3 @@
1+#!/bin/bash
2+npm install
3+npm run build
+37-0index.html
@@ -0,0 +1,37 @@
1+<!DOCTYPE html>
2+<html lang="en">
3+ <head>
4+ <meta charset="UTF-8" />
5+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
6+ <meta name="viewport" content="width=device-width, initial-scale=1" />
7+
8+ <!-- HTML Meta Tags -->
9+ <title>Footvol Time</title>
10+ <meta name="description" content="Countdown Till The Vols Get to Ball" />
11+
12+ <!-- Facebook Meta Tags -->
13+ <meta property="og:url" content="https://vflcountdown.com" />
14+ <meta property="og:type" content="website" />
15+ <meta property="og:title" content="Footvol Time" />
16+ <meta
17+ property="og:description"
18+ content="Countdown Till The Vols Get to Ball"
19+ />
20+ <meta property="og:image" content="https://vflcountdown.com/neyland.jpg" />
21+
22+ <!-- Twitter Meta Tags -->
23+ <meta name="twitter:card" content="summary_large_image" />
24+ <meta property="twitter:domain" content="vflcountdown.com" />
25+ <meta property="twitter:url" content="https://vflcountdown.com" />
26+ <meta name="twitter:title" content="Footvol Time" />
27+ <meta
28+ name="twitter:description"
29+ content="Countdown Till The Vols Get to Ball"
30+ />
31+ <meta name="twitter:image" content="https://vflcountdown.com/neyland.jpg" />
32+ </head>
33+ <body>
34+ <div id="root"></div>
35+ <script type="module" src="/src/main.tsx"></script>
36+ </body>
37+</html>
+2181-0package-lock.json
@@ -0,0 +1,2181 @@
1+{
2+ "name": "vflcountdown",
3+ "version": "0.0.0",
4+ "lockfileVersion": 3,
5+ "requires": true,
6+ "packages": {
7+ "": {
8+ "name": "vflcountdown",
9+ "version": "0.0.0",
10+ "dependencies": {
11+ "react": "^18.2.0",
12+ "react-dom": "^18.2.0",
13+ "react-helmet": "^6.1.0"
14+ },
15+ "devDependencies": {
16+ "@types/react": "^18.0.26",
17+ "@types/react-dom": "^18.0.9",
18+ "@vitejs/plugin-react": "^3.0.0",
19+ "autoprefixer": "^10.4.13",
20+ "postcss": "^8.4.20",
21+ "tailwindcss": "^3.2.4",
22+ "typescript": "^4.9.3",
23+ "vite": "^4.0.0"
24+ }
25+ },
26+ "node_modules/@ampproject/remapping": {
27+ "version": "2.2.0",
28+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz",
29+ "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==",
30+ "dev": true,
31+ "dependencies": {
32+ "@jridgewell/gen-mapping": "^0.1.0",
33+ "@jridgewell/trace-mapping": "^0.3.9"
34+ },
35+ "engines": {
36+ "node": ">=6.0.0"
37+ }
38+ },
39+ "node_modules/@babel/code-frame": {
40+ "version": "7.18.6",
41+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
42+ "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
43+ "dev": true,
44+ "dependencies": {
45+ "@babel/highlight": "^7.18.6"
46+ },
47+ "engines": {
48+ "node": ">=6.9.0"
49+ }
50+ },
51+ "node_modules/@babel/compat-data": {
52+ "version": "7.20.10",
53+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz",
54+ "integrity": "sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==",
55+ "dev": true,
56+ "engines": {
57+ "node": ">=6.9.0"
58+ }
59+ },
60+ "node_modules/@babel/core": {
61+ "version": "7.20.7",
62+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.7.tgz",
63+ "integrity": "sha512-t1ZjCluspe5DW24bn2Rr1CDb2v9rn/hROtg9a2tmd0+QYf4bsloYfLQzjG4qHPNMhWtKdGC33R5AxGR2Af2cBw==",
64+ "dev": true,
65+ "dependencies": {
66+ "@ampproject/remapping": "^2.1.0",
67+ "@babel/code-frame": "^7.18.6",
68+ "@babel/generator": "^7.20.7",
69+ "@babel/helper-compilation-targets": "^7.20.7",
70+ "@babel/helper-module-transforms": "^7.20.7",
71+ "@babel/helpers": "^7.20.7",
72+ "@babel/parser": "^7.20.7",
73+ "@babel/template": "^7.20.7",
74+ "@babel/traverse": "^7.20.7",
75+ "@babel/types": "^7.20.7",
76+ "convert-source-map": "^1.7.0",
77+ "debug": "^4.1.0",
78+ "gensync": "^1.0.0-beta.2",
79+ "json5": "^2.2.1",
80+ "semver": "^6.3.0"
81+ },
82+ "engines": {
83+ "node": ">=6.9.0"
84+ },
85+ "funding": {
86+ "type": "opencollective",
87+ "url": "https://opencollective.com/babel"
88+ }
89+ },
90+ "node_modules/@babel/generator": {
91+ "version": "7.20.7",
92+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz",
93+ "integrity": "sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==",
94+ "dev": true,
95+ "dependencies": {
96+ "@babel/types": "^7.20.7",
97+ "@jridgewell/gen-mapping": "^0.3.2",
98+ "jsesc": "^2.5.1"
99+ },
100+ "engines": {
101+ "node": ">=6.9.0"
102+ }
103+ },
104+ "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
105+ "version": "0.3.2",
106+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
107+ "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
108+ "dev": true,
109+ "dependencies": {
110+ "@jridgewell/set-array": "^1.0.1",
111+ "@jridgewell/sourcemap-codec": "^1.4.10",
112+ "@jridgewell/trace-mapping": "^0.3.9"
113+ },
114+ "engines": {
115+ "node": ">=6.0.0"
116+ }
117+ },
118+ "node_modules/@babel/helper-compilation-targets": {
119+ "version": "7.20.7",
120+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz",
121+ "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==",
122+ "dev": true,
123+ "dependencies": {
124+ "@babel/compat-data": "^7.20.5",
125+ "@babel/helper-validator-option": "^7.18.6",
126+ "browserslist": "^4.21.3",
127+ "lru-cache": "^5.1.1",
128+ "semver": "^6.3.0"
129+ },
130+ "engines": {
131+ "node": ">=6.9.0"
132+ },
133+ "peerDependencies": {
134+ "@babel/core": "^7.0.0"
135+ }
136+ },
137+ "node_modules/@babel/helper-environment-visitor": {
138+ "version": "7.18.9",
139+ "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz",
140+ "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==",
141+ "dev": true,
142+ "engines": {
143+ "node": ">=6.9.0"
144+ }
145+ },
146+ "node_modules/@babel/helper-function-name": {
147+ "version": "7.19.0",
148+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz",
149+ "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==",
150+ "dev": true,
151+ "dependencies": {
152+ "@babel/template": "^7.18.10",
153+ "@babel/types": "^7.19.0"
154+ },
155+ "engines": {
156+ "node": ">=6.9.0"
157+ }
158+ },
159+ "node_modules/@babel/helper-hoist-variables": {
160+ "version": "7.18.6",
161+ "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz",
162+ "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==",
163+ "dev": true,
164+ "dependencies": {
165+ "@babel/types": "^7.18.6"
166+ },
167+ "engines": {
168+ "node": ">=6.9.0"
169+ }
170+ },
171+ "node_modules/@babel/helper-module-imports": {
172+ "version": "7.18.6",
173+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
174+ "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
175+ "dev": true,
176+ "dependencies": {
177+ "@babel/types": "^7.18.6"
178+ },
179+ "engines": {
180+ "node": ">=6.9.0"
181+ }
182+ },
183+ "node_modules/@babel/helper-module-transforms": {
184+ "version": "7.20.11",
185+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz",
186+ "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==",
187+ "dev": true,
188+ "dependencies": {
189+ "@babel/helper-environment-visitor": "^7.18.9",
190+ "@babel/helper-module-imports": "^7.18.6",
191+ "@babel/helper-simple-access": "^7.20.2",
192+ "@babel/helper-split-export-declaration": "^7.18.6",
193+ "@babel/helper-validator-identifier": "^7.19.1",
194+ "@babel/template": "^7.20.7",
195+ "@babel/traverse": "^7.20.10",
196+ "@babel/types": "^7.20.7"
197+ },
198+ "engines": {
199+ "node": ">=6.9.0"
200+ }
201+ },
202+ "node_modules/@babel/helper-plugin-utils": {
203+ "version": "7.20.2",
204+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz",
205+ "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==",
206+ "dev": true,
207+ "engines": {
208+ "node": ">=6.9.0"
209+ }
210+ },
211+ "node_modules/@babel/helper-simple-access": {
212+ "version": "7.20.2",
213+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz",
214+ "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==",
215+ "dev": true,
216+ "dependencies": {
217+ "@babel/types": "^7.20.2"
218+ },
219+ "engines": {
220+ "node": ">=6.9.0"
221+ }
222+ },
223+ "node_modules/@babel/helper-split-export-declaration": {
224+ "version": "7.18.6",
225+ "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
226+ "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==",
227+ "dev": true,
228+ "dependencies": {
229+ "@babel/types": "^7.18.6"
230+ },
231+ "engines": {
232+ "node": ">=6.9.0"
233+ }
234+ },
235+ "node_modules/@babel/helper-string-parser": {
236+ "version": "7.19.4",
237+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
238+ "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
239+ "dev": true,
240+ "engines": {
241+ "node": ">=6.9.0"
242+ }
243+ },
244+ "node_modules/@babel/helper-validator-identifier": {
245+ "version": "7.19.1",
246+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
247+ "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
248+ "dev": true,
249+ "engines": {
250+ "node": ">=6.9.0"
251+ }
252+ },
253+ "node_modules/@babel/helper-validator-option": {
254+ "version": "7.18.6",
255+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz",
256+ "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==",
257+ "dev": true,
258+ "engines": {
259+ "node": ">=6.9.0"
260+ }
261+ },
262+ "node_modules/@babel/helpers": {
263+ "version": "7.20.7",
264+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz",
265+ "integrity": "sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==",
266+ "dev": true,
267+ "dependencies": {
268+ "@babel/template": "^7.20.7",
269+ "@babel/traverse": "^7.20.7",
270+ "@babel/types": "^7.20.7"
271+ },
272+ "engines": {
273+ "node": ">=6.9.0"
274+ }
275+ },
276+ "node_modules/@babel/highlight": {
277+ "version": "7.18.6",
278+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
279+ "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
280+ "dev": true,
281+ "dependencies": {
282+ "@babel/helper-validator-identifier": "^7.18.6",
283+ "chalk": "^2.0.0",
284+ "js-tokens": "^4.0.0"
285+ },
286+ "engines": {
287+ "node": ">=6.9.0"
288+ }
289+ },
290+ "node_modules/@babel/parser": {
291+ "version": "7.20.7",
292+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz",
293+ "integrity": "sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==",
294+ "dev": true,
295+ "bin": {
296+ "parser": "bin/babel-parser.js"
297+ },
298+ "engines": {
299+ "node": ">=6.0.0"
300+ }
301+ },
302+ "node_modules/@babel/plugin-transform-react-jsx-self": {
303+ "version": "7.18.6",
304+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.18.6.tgz",
305+ "integrity": "sha512-A0LQGx4+4Jv7u/tWzoJF7alZwnBDQd6cGLh9P+Ttk4dpiL+J5p7NSNv/9tlEFFJDq3kjxOavWmbm6t0Gk+A3Ig==",
306+ "dev": true,
307+ "dependencies": {
308+ "@babel/helper-plugin-utils": "^7.18.6"
309+ },
310+ "engines": {
311+ "node": ">=6.9.0"
312+ },
313+ "peerDependencies": {
314+ "@babel/core": "^7.0.0-0"
315+ }
316+ },
317+ "node_modules/@babel/plugin-transform-react-jsx-source": {
318+ "version": "7.19.6",
319+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.19.6.tgz",
320+ "integrity": "sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==",
321+ "dev": true,
322+ "dependencies": {
323+ "@babel/helper-plugin-utils": "^7.19.0"
324+ },
325+ "engines": {
326+ "node": ">=6.9.0"
327+ },
328+ "peerDependencies": {
329+ "@babel/core": "^7.0.0-0"
330+ }
331+ },
332+ "node_modules/@babel/template": {
333+ "version": "7.20.7",
334+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
335+ "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
336+ "dev": true,
337+ "dependencies": {
338+ "@babel/code-frame": "^7.18.6",
339+ "@babel/parser": "^7.20.7",
340+ "@babel/types": "^7.20.7"
341+ },
342+ "engines": {
343+ "node": ">=6.9.0"
344+ }
345+ },
346+ "node_modules/@babel/traverse": {
347+ "version": "7.20.10",
348+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.10.tgz",
349+ "integrity": "sha512-oSf1juCgymrSez8NI4A2sr4+uB/mFd9MXplYGPEBnfAuWmmyeVcHa6xLPiaRBcXkcb/28bgxmQLTVwFKE1yfsg==",
350+ "dev": true,
351+ "dependencies": {
352+ "@babel/code-frame": "^7.18.6",
353+ "@babel/generator": "^7.20.7",
354+ "@babel/helper-environment-visitor": "^7.18.9",
355+ "@babel/helper-function-name": "^7.19.0",
356+ "@babel/helper-hoist-variables": "^7.18.6",
357+ "@babel/helper-split-export-declaration": "^7.18.6",
358+ "@babel/parser": "^7.20.7",
359+ "@babel/types": "^7.20.7",
360+ "debug": "^4.1.0",
361+ "globals": "^11.1.0"
362+ },
363+ "engines": {
364+ "node": ">=6.9.0"
365+ }
366+ },
367+ "node_modules/@babel/types": {
368+ "version": "7.20.7",
369+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz",
370+ "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==",
371+ "dev": true,
372+ "dependencies": {
373+ "@babel/helper-string-parser": "^7.19.4",
374+ "@babel/helper-validator-identifier": "^7.19.1",
375+ "to-fast-properties": "^2.0.0"
376+ },
377+ "engines": {
378+ "node": ">=6.9.0"
379+ }
380+ },
381+ "node_modules/@esbuild/android-arm": {
382+ "version": "0.16.12",
383+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.12.tgz",
384+ "integrity": "sha512-CTWgMJtpCyCltrvipZrrcjjRu+rzm6pf9V8muCsJqtKujR3kPmU4ffbckvugNNaRmhxAF1ZI3J+0FUIFLFg8KA==",
385+ "cpu": [
386+ "arm"
387+ ],
388+ "dev": true,
389+ "optional": true,
390+ "os": [
391+ "android"
392+ ],
393+ "engines": {
394+ "node": ">=12"
395+ }
396+ },
397+ "node_modules/@esbuild/android-arm64": {
398+ "version": "0.16.12",
399+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.12.tgz",
400+ "integrity": "sha512-0LacmiIW+X0/LOLMZqYtZ7d4uY9fxYABAYhSSOu+OGQVBqH4N5eIYgkT7bBFnR4Nm3qo6qS3RpHKVrDASqj/uQ==",
401+ "cpu": [
402+ "arm64"
403+ ],
404+ "dev": true,
405+ "optional": true,
406+ "os": [
407+ "android"
408+ ],
409+ "engines": {
410+ "node": ">=12"
411+ }
412+ },
413+ "node_modules/@esbuild/android-x64": {
414+ "version": "0.16.12",
415+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.12.tgz",
416+ "integrity": "sha512-sS5CR3XBKQXYpSGMM28VuiUnbX83Z+aWPZzClW+OB2JquKqxoiwdqucJ5qvXS8pM6Up3RtJfDnRQZkz3en2z5g==",
417+ "cpu": [
418+ "x64"
419+ ],
420+ "dev": true,
421+ "optional": true,
422+ "os": [
423+ "android"
424+ ],
425+ "engines": {
426+ "node": ">=12"
427+ }
428+ },
429+ "node_modules/@esbuild/darwin-arm64": {
430+ "version": "0.16.12",
431+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.12.tgz",
432+ "integrity": "sha512-Dpe5hOAQiQRH20YkFAg+wOpcd4PEuXud+aGgKBQa/VriPJA8zuVlgCOSTwna1CgYl05lf6o5els4dtuyk1qJxQ==",
433+ "cpu": [
434+ "arm64"
435+ ],
436+ "dev": true,
437+ "optional": true,
438+ "os": [
439+ "darwin"
440+ ],
441+ "engines": {
442+ "node": ">=12"
443+ }
444+ },
445+ "node_modules/@esbuild/darwin-x64": {
446+ "version": "0.16.12",
447+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.12.tgz",
448+ "integrity": "sha512-ApGRA6X5txIcxV0095X4e4KKv87HAEXfuDRcGTniDWUUN+qPia8sl/BqG/0IomytQWajnUn4C7TOwHduk/FXBQ==",
449+ "cpu": [
450+ "x64"
451+ ],
452+ "dev": true,
453+ "optional": true,
454+ "os": [
455+ "darwin"
456+ ],
457+ "engines": {
458+ "node": ">=12"
459+ }
460+ },
461+ "node_modules/@esbuild/freebsd-arm64": {
462+ "version": "0.16.12",
463+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.12.tgz",
464+ "integrity": "sha512-AMdK2gA9EU83ccXCWS1B/KcWYZCj4P3vDofZZkl/F/sBv/fphi2oUqUTox/g5GMcIxk8CF1CVYTC82+iBSyiUg==",
465+ "cpu": [
466+ "arm64"
467+ ],
468+ "dev": true,
469+ "optional": true,
470+ "os": [
471+ "freebsd"
472+ ],
473+ "engines": {
474+ "node": ">=12"
475+ }
476+ },
477+ "node_modules/@esbuild/freebsd-x64": {
478+ "version": "0.16.12",
479+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.12.tgz",
480+ "integrity": "sha512-KUKB9w8G/xaAbD39t6gnRBuhQ8vIYYlxGT2I+mT6UGRnCGRr1+ePFIGBQmf5V16nxylgUuuWVW1zU2ktKkf6WQ==",
481+ "cpu": [
482+ "x64"
483+ ],
484+ "dev": true,
485+ "optional": true,
486+ "os": [
487+ "freebsd"
488+ ],
489+ "engines": {
490+ "node": ">=12"
491+ }
492+ },
493+ "node_modules/@esbuild/linux-arm": {
494+ "version": "0.16.12",
495+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.12.tgz",
496+ "integrity": "sha512-vhDdIv6z4eL0FJyNVfdr3C/vdd/Wc6h1683GJsFoJzfKb92dU/v88FhWdigg0i6+3TsbSDeWbsPUXb4dif2abg==",
497+ "cpu": [
498+ "arm"
499+ ],
500+ "dev": true,
501+ "optional": true,
502+ "os": [
503+ "linux"
504+ ],
505+ "engines": {
506+ "node": ">=12"
507+ }
508+ },
509+ "node_modules/@esbuild/linux-arm64": {
510+ "version": "0.16.12",
511+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.12.tgz",
512+ "integrity": "sha512-29HXMLpLklDfmw7T2buGqq3HImSUaZ1ArmrPOMaNiZZQptOSZs32SQtOHEl8xWX5vfdwZqrBfNf8Te4nArVzKQ==",
513+ "cpu": [
514+ "arm64"
515+ ],
516+ "dev": true,
517+ "optional": true,
518+ "os": [
519+ "linux"
520+ ],
521+ "engines": {
522+ "node": ">=12"
523+ }
524+ },
525+ "node_modules/@esbuild/linux-ia32": {
526+ "version": "0.16.12",
527+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.12.tgz",
528+ "integrity": "sha512-JFDuNDTTfgD1LJg7wHA42o2uAO/9VzHYK0leAVnCQE/FdMB599YMH73ux+nS0xGr79pv/BK+hrmdRin3iLgQjg==",
529+ "cpu": [
530+ "ia32"
531+ ],
532+ "dev": true,
533+ "optional": true,
534+ "os": [
535+ "linux"
536+ ],
537+ "engines": {
538+ "node": ">=12"
539+ }
540+ },
541+ "node_modules/@esbuild/linux-loong64": {
542+ "version": "0.16.12",
543+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.12.tgz",
544+ "integrity": "sha512-xTGzVPqm6WKfCC0iuj1fryIWr1NWEM8DMhAIo+4rFgUtwy/lfHl+Obvus4oddzRDbBetLLmojfVZGmt/g/g+Rw==",
545+ "cpu": [
546+ "loong64"
547+ ],
548+ "dev": true,
549+ "optional": true,
550+ "os": [
551+ "linux"
552+ ],
553+ "engines": {
554+ "node": ">=12"
555+ }
556+ },
557+ "node_modules/@esbuild/linux-mips64el": {
558+ "version": "0.16.12",
559+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.12.tgz",
560+ "integrity": "sha512-zI1cNgHa3Gol+vPYjIYHzKhU6qMyOQrvZ82REr5Fv7rlh5PG6SkkuCoH7IryPqR+BK2c/7oISGsvPJPGnO2bHQ==",
561+ "cpu": [
562+ "mips64el"
563+ ],
564+ "dev": true,
565+ "optional": true,
566+ "os": [
567+ "linux"
568+ ],
569+ "engines": {
570+ "node": ">=12"
571+ }
572+ },
573+ "node_modules/@esbuild/linux-ppc64": {
574+ "version": "0.16.12",
575+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.12.tgz",
576+ "integrity": "sha512-/C8OFXExoMmvTDIOAM54AhtmmuDHKoedUd0Otpfw3+AuuVGemA1nQK99oN909uZbLEU6Bi+7JheFMG3xGfZluQ==",
577+ "cpu": [
578+ "ppc64"
579+ ],
580+ "dev": true,
581+ "optional": true,
582+ "os": [
583+ "linux"
584+ ],
585+ "engines": {
586+ "node": ">=12"
587+ }
588+ },
589+ "node_modules/@esbuild/linux-riscv64": {
590+ "version": "0.16.12",
591+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.12.tgz",
592+ "integrity": "sha512-qeouyyc8kAGV6Ni6Isz8hUsKMr00EHgVwUKWNp1r4l88fHEoNTDB8mmestvykW6MrstoGI7g2EAsgr0nxmuGYg==",
593+ "cpu": [
594+ "riscv64"
595+ ],
596+ "dev": true,
597+ "optional": true,
598+ "os": [
599+ "linux"
600+ ],
601+ "engines": {
602+ "node": ">=12"
603+ }
604+ },
605+ "node_modules/@esbuild/linux-s390x": {
606+ "version": "0.16.12",
607+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.12.tgz",
608+ "integrity": "sha512-s9AyI/5vz1U4NNqnacEGFElqwnHusWa81pskAf8JNDM2eb6b2E6PpBmT8RzeZv6/TxE6/TADn2g9bb0jOUmXwQ==",
609+ "cpu": [
610+ "s390x"
611+ ],
612+ "dev": true,
613+ "optional": true,
614+ "os": [
615+ "linux"
616+ ],
617+ "engines": {
618+ "node": ">=12"
619+ }
620+ },
621+ "node_modules/@esbuild/linux-x64": {
622+ "version": "0.16.12",
623+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.12.tgz",
624+ "integrity": "sha512-e8YA7GQGLWhvakBecLptUiKxOk4E/EPtSckS1i0MGYctW8ouvNUoh7xnU15PGO2jz7BYl8q1R6g0gE5HFtzpqQ==",
625+ "cpu": [
626+ "x64"
627+ ],
628+ "dev": true,
629+ "optional": true,
630+ "os": [
631+ "linux"
632+ ],
633+ "engines": {
634+ "node": ">=12"
635+ }
636+ },
637+ "node_modules/@esbuild/netbsd-x64": {
638+ "version": "0.16.12",
639+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.12.tgz",
640+ "integrity": "sha512-z2+kUxmOqBS+6SRVd57iOLIHE8oGOoEnGVAmwjm2aENSP35HPS+5cK+FL1l+rhrsJOFIPrNHqDUNechpuG96Sg==",
641+ "cpu": [
642+ "x64"
643+ ],
644+ "dev": true,
645+ "optional": true,
646+ "os": [
647+ "netbsd"
648+ ],
649+ "engines": {
650+ "node": ">=12"
651+ }
652+ },
653+ "node_modules/@esbuild/openbsd-x64": {
654+ "version": "0.16.12",
655+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.12.tgz",
656+ "integrity": "sha512-PAonw4LqIybwn2/vJujhbg1N9W2W8lw9RtXIvvZoyzoA/4rA4CpiuahVbASmQohiytRsixbNoIOUSjRygKXpyA==",
657+ "cpu": [
658+ "x64"
659+ ],
660+ "dev": true,
661+ "optional": true,
662+ "os": [
663+ "openbsd"
664+ ],
665+ "engines": {
666+ "node": ">=12"
667+ }
668+ },
669+ "node_modules/@esbuild/sunos-x64": {
670+ "version": "0.16.12",
671+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.12.tgz",
672+ "integrity": "sha512-+wr1tkt1RERi+Zi/iQtkzmMH4nS8+7UIRxjcyRz7lur84wCkAITT50Olq/HiT4JN2X2bjtlOV6vt7ptW5Gw60Q==",
673+ "cpu": [
674+ "x64"
675+ ],
676+ "dev": true,
677+ "optional": true,
678+ "os": [
679+ "sunos"
680+ ],
681+ "engines": {
682+ "node": ">=12"
683+ }
684+ },
685+ "node_modules/@esbuild/win32-arm64": {
686+ "version": "0.16.12",
687+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.12.tgz",
688+ "integrity": "sha512-XEjeUSHmjsAOJk8+pXJu9pFY2O5KKQbHXZWQylJzQuIBeiGrpMeq9sTVrHefHxMOyxUgoKQTcaTS+VK/K5SviA==",
689+ "cpu": [
690+ "arm64"
691+ ],
692+ "dev": true,
693+ "optional": true,
694+ "os": [
695+ "win32"
696+ ],
697+ "engines": {
698+ "node": ">=12"
699+ }
700+ },
701+ "node_modules/@esbuild/win32-ia32": {
702+ "version": "0.16.12",
703+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.12.tgz",
704+ "integrity": "sha512-eRKPM7e0IecUAUYr2alW7JGDejrFJXmpjt4MlfonmQ5Rz9HWpKFGCjuuIRgKO7W9C/CWVFXdJ2GjddsBXqQI4A==",
705+ "cpu": [
706+ "ia32"
707+ ],
708+ "dev": true,
709+ "optional": true,
710+ "os": [
711+ "win32"
712+ ],
713+ "engines": {
714+ "node": ">=12"
715+ }
716+ },
717+ "node_modules/@esbuild/win32-x64": {
718+ "version": "0.16.12",
719+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.12.tgz",
720+ "integrity": "sha512-iPYKN78t3op2+erv2frW568j1q0RpqX6JOLZ7oPPaAV1VaF7dDstOrNw37PVOYoTWE11pV4A1XUitpdEFNIsPg==",
721+ "cpu": [
722+ "x64"
723+ ],
724+ "dev": true,
725+ "optional": true,
726+ "os": [
727+ "win32"
728+ ],
729+ "engines": {
730+ "node": ">=12"
731+ }
732+ },
733+ "node_modules/@jridgewell/gen-mapping": {
734+ "version": "0.1.1",
735+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz",
736+ "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==",
737+ "dev": true,
738+ "dependencies": {
739+ "@jridgewell/set-array": "^1.0.0",
740+ "@jridgewell/sourcemap-codec": "^1.4.10"
741+ },
742+ "engines": {
743+ "node": ">=6.0.0"
744+ }
745+ },
746+ "node_modules/@jridgewell/resolve-uri": {
747+ "version": "3.1.0",
748+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz",
749+ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==",
750+ "dev": true,
751+ "engines": {
752+ "node": ">=6.0.0"
753+ }
754+ },
755+ "node_modules/@jridgewell/set-array": {
756+ "version": "1.1.2",
757+ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
758+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
759+ "dev": true,
760+ "engines": {
761+ "node": ">=6.0.0"
762+ }
763+ },
764+ "node_modules/@jridgewell/sourcemap-codec": {
765+ "version": "1.4.14",
766+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
767+ "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
768+ "dev": true
769+ },
770+ "node_modules/@jridgewell/trace-mapping": {
771+ "version": "0.3.17",
772+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz",
773+ "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==",
774+ "dev": true,
775+ "dependencies": {
776+ "@jridgewell/resolve-uri": "3.1.0",
777+ "@jridgewell/sourcemap-codec": "1.4.14"
778+ }
779+ },
780+ "node_modules/@nodelib/fs.scandir": {
781+ "version": "2.1.5",
782+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
783+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
784+ "dev": true,
785+ "dependencies": {
786+ "@nodelib/fs.stat": "2.0.5",
787+ "run-parallel": "^1.1.9"
788+ },
789+ "engines": {
790+ "node": ">= 8"
791+ }
792+ },
793+ "node_modules/@nodelib/fs.stat": {
794+ "version": "2.0.5",
795+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
796+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
797+ "dev": true,
798+ "engines": {
799+ "node": ">= 8"
800+ }
801+ },
802+ "node_modules/@nodelib/fs.walk": {
803+ "version": "1.2.8",
804+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
805+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
806+ "dev": true,
807+ "dependencies": {
808+ "@nodelib/fs.scandir": "2.1.5",
809+ "fastq": "^1.6.0"
810+ },
811+ "engines": {
812+ "node": ">= 8"
813+ }
814+ },
815+ "node_modules/@types/prop-types": {
816+ "version": "15.7.5",
817+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz",
818+ "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==",
819+ "dev": true
820+ },
821+ "node_modules/@types/react": {
822+ "version": "18.0.26",
823+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.26.tgz",
824+ "integrity": "sha512-hCR3PJQsAIXyxhTNSiDFY//LhnMZWpNNr5etoCqx/iUfGc5gXWtQR2Phl908jVR6uPXacojQWTg4qRpkxTuGug==",
825+ "dev": true,
826+ "dependencies": {
827+ "@types/prop-types": "*",
828+ "@types/scheduler": "*",
829+ "csstype": "^3.0.2"
830+ }
831+ },
832+ "node_modules/@types/react-dom": {
833+ "version": "18.0.10",
834+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.10.tgz",
835+ "integrity": "sha512-E42GW/JA4Qv15wQdqJq8DL4JhNpB3prJgjgapN3qJT9K2zO5IIAQh4VXvCEDupoqAwnz0cY4RlXeC/ajX5SFHg==",
836+ "dev": true,
837+ "dependencies": {
838+ "@types/react": "*"
839+ }
840+ },
841+ "node_modules/@types/scheduler": {
842+ "version": "0.16.2",
843+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz",
844+ "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==",
845+ "dev": true
846+ },
847+ "node_modules/@vitejs/plugin-react": {
848+ "version": "3.0.0",
849+ "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.0.0.tgz",
850+ "integrity": "sha512-1mvyPc0xYW5G8CHQvJIJXLoMjl5Ct3q2g5Y2s6Ccfgwm45y48LBvsla7az+GkkAtYikWQ4Lxqcsq5RHLcZgtNQ==",
851+ "dev": true,
852+ "dependencies": {
853+ "@babel/core": "^7.20.5",
854+ "@babel/plugin-transform-react-jsx-self": "^7.18.6",
855+ "@babel/plugin-transform-react-jsx-source": "^7.19.6",
856+ "magic-string": "^0.27.0",
857+ "react-refresh": "^0.14.0"
858+ },
859+ "engines": {
860+ "node": "^14.18.0 || >=16.0.0"
861+ },
862+ "peerDependencies": {
863+ "vite": "^4.0.0"
864+ }
865+ },
866+ "node_modules/acorn": {
867+ "version": "7.4.1",
868+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
869+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
870+ "dev": true,
871+ "bin": {
872+ "acorn": "bin/acorn"
873+ },
874+ "engines": {
875+ "node": ">=0.4.0"
876+ }
877+ },
878+ "node_modules/acorn-node": {
879+ "version": "1.8.2",
880+ "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
881+ "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
882+ "dev": true,
883+ "dependencies": {
884+ "acorn": "^7.0.0",
885+ "acorn-walk": "^7.0.0",
886+ "xtend": "^4.0.2"
887+ }
888+ },
889+ "node_modules/acorn-walk": {
890+ "version": "7.2.0",
891+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
892+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
893+ "dev": true,
894+ "engines": {
895+ "node": ">=0.4.0"
896+ }
897+ },
898+ "node_modules/ansi-styles": {
899+ "version": "3.2.1",
900+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
901+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
902+ "dev": true,
903+ "dependencies": {
904+ "color-convert": "^1.9.0"
905+ },
906+ "engines": {
907+ "node": ">=4"
908+ }
909+ },
910+ "node_modules/anymatch": {
911+ "version": "3.1.3",
912+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
913+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
914+ "dev": true,
915+ "dependencies": {
916+ "normalize-path": "^3.0.0",
917+ "picomatch": "^2.0.4"
918+ },
919+ "engines": {
920+ "node": ">= 8"
921+ }
922+ },
923+ "node_modules/arg": {
924+ "version": "5.0.2",
925+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
926+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
927+ "dev": true
928+ },
929+ "node_modules/autoprefixer": {
930+ "version": "10.4.13",
931+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
932+ "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==",
933+ "dev": true,
934+ "funding": [
935+ {
936+ "type": "opencollective",
937+ "url": "https://opencollective.com/postcss/"
938+ },
939+ {
940+ "type": "tidelift",
941+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"
942+ }
943+ ],
944+ "dependencies": {
945+ "browserslist": "^4.21.4",
946+ "caniuse-lite": "^1.0.30001426",
947+ "fraction.js": "^4.2.0",
948+ "normalize-range": "^0.1.2",
949+ "picocolors": "^1.0.0",
950+ "postcss-value-parser": "^4.2.0"
951+ },
952+ "bin": {
953+ "autoprefixer": "bin/autoprefixer"
954+ },
955+ "engines": {
956+ "node": "^10 || ^12 || >=14"
957+ },
958+ "peerDependencies": {
959+ "postcss": "^8.1.0"
960+ }
961+ },
962+ "node_modules/binary-extensions": {
963+ "version": "2.2.0",
964+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
965+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
966+ "dev": true,
967+ "engines": {
968+ "node": ">=8"
969+ }
970+ },
971+ "node_modules/braces": {
972+ "version": "3.0.2",
973+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
974+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
975+ "dev": true,
976+ "dependencies": {
977+ "fill-range": "^7.0.1"
978+ },
979+ "engines": {
980+ "node": ">=8"
981+ }
982+ },
983+ "node_modules/browserslist": {
984+ "version": "4.21.4",
985+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz",
986+ "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==",
987+ "dev": true,
988+ "funding": [
989+ {
990+ "type": "opencollective",
991+ "url": "https://opencollective.com/browserslist"
992+ },
993+ {
994+ "type": "tidelift",
995+ "url": "https://tidelift.com/funding/github/npm/browserslist"
996+ }
997+ ],
998+ "dependencies": {
999+ "caniuse-lite": "^1.0.30001400",
1000+ "electron-to-chromium": "^1.4.251",
1001+ "node-releases": "^2.0.6",
1002+ "update-browserslist-db": "^1.0.9"
1003+ },
1004+ "bin": {
1005+ "browserslist": "cli.js"
1006+ },
1007+ "engines": {
1008+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1009+ }
1010+ },
1011+ "node_modules/camelcase-css": {
1012+ "version": "2.0.1",
1013+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1014+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1015+ "dev": true,
1016+ "engines": {
1017+ "node": ">= 6"
1018+ }
1019+ },
1020+ "node_modules/caniuse-lite": {
1021+ "version": "1.0.30001441",
1022+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001441.tgz",
1023+ "integrity": "sha512-OyxRR4Vof59I3yGWXws6i908EtGbMzVUi3ganaZQHmydk1iwDhRnvaPG2WaR0KcqrDFKrxVZHULT396LEPhXfg==",
1024+ "dev": true,
1025+ "funding": [
1026+ {
1027+ "type": "opencollective",
1028+ "url": "https://opencollective.com/browserslist"
1029+ },
1030+ {
1031+ "type": "tidelift",
1032+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
1033+ }
1034+ ]
1035+ },
1036+ "node_modules/chalk": {
1037+ "version": "2.4.2",
1038+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1039+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1040+ "dev": true,
1041+ "dependencies": {
1042+ "ansi-styles": "^3.2.1",
1043+ "escape-string-regexp": "^1.0.5",
1044+ "supports-color": "^5.3.0"
1045+ },
1046+ "engines": {
1047+ "node": ">=4"
1048+ }
1049+ },
1050+ "node_modules/chokidar": {
1051+ "version": "3.5.3",
1052+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
1053+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
1054+ "dev": true,
1055+ "funding": [
1056+ {
1057+ "type": "individual",
1058+ "url": "https://paulmillr.com/funding/"
1059+ }
1060+ ],
1061+ "dependencies": {
1062+ "anymatch": "~3.1.2",
1063+ "braces": "~3.0.2",
1064+ "glob-parent": "~5.1.2",
1065+ "is-binary-path": "~2.1.0",
1066+ "is-glob": "~4.0.1",
1067+ "normalize-path": "~3.0.0",
1068+ "readdirp": "~3.6.0"
1069+ },
1070+ "engines": {
1071+ "node": ">= 8.10.0"
1072+ },
1073+ "optionalDependencies": {
1074+ "fsevents": "~2.3.2"
1075+ }
1076+ },
1077+ "node_modules/chokidar/node_modules/glob-parent": {
1078+ "version": "5.1.2",
1079+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1080+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1081+ "dev": true,
1082+ "dependencies": {
1083+ "is-glob": "^4.0.1"
1084+ },
1085+ "engines": {
1086+ "node": ">= 6"
1087+ }
1088+ },
1089+ "node_modules/color-convert": {
1090+ "version": "1.9.3",
1091+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1092+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1093+ "dev": true,
1094+ "dependencies": {
1095+ "color-name": "1.1.3"
1096+ }
1097+ },
1098+ "node_modules/color-name": {
1099+ "version": "1.1.3",
1100+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1101+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1102+ "dev": true
1103+ },
1104+ "node_modules/convert-source-map": {
1105+ "version": "1.9.0",
1106+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
1107+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
1108+ "dev": true
1109+ },
1110+ "node_modules/cssesc": {
1111+ "version": "3.0.0",
1112+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1113+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1114+ "dev": true,
1115+ "bin": {
1116+ "cssesc": "bin/cssesc"
1117+ },
1118+ "engines": {
1119+ "node": ">=4"
1120+ }
1121+ },
1122+ "node_modules/csstype": {
1123+ "version": "3.1.1",
1124+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz",
1125+ "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==",
1126+ "dev": true
1127+ },
1128+ "node_modules/debug": {
1129+ "version": "4.3.4",
1130+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
1131+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
1132+ "dev": true,
1133+ "dependencies": {
1134+ "ms": "2.1.2"
1135+ },
1136+ "engines": {
1137+ "node": ">=6.0"
1138+ },
1139+ "peerDependenciesMeta": {
1140+ "supports-color": {
1141+ "optional": true
1142+ }
1143+ }
1144+ },
1145+ "node_modules/defined": {
1146+ "version": "1.0.1",
1147+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
1148+ "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
1149+ "dev": true,
1150+ "funding": {
1151+ "url": "https://github.com/sponsors/ljharb"
1152+ }
1153+ },
1154+ "node_modules/detective": {
1155+ "version": "5.2.1",
1156+ "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz",
1157+ "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==",
1158+ "dev": true,
1159+ "dependencies": {
1160+ "acorn-node": "^1.8.2",
1161+ "defined": "^1.0.0",
1162+ "minimist": "^1.2.6"
1163+ },
1164+ "bin": {
1165+ "detective": "bin/detective.js"
1166+ },
1167+ "engines": {
1168+ "node": ">=0.8.0"
1169+ }
1170+ },
1171+ "node_modules/didyoumean": {
1172+ "version": "1.2.2",
1173+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1174+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1175+ "dev": true
1176+ },
1177+ "node_modules/dlv": {
1178+ "version": "1.1.3",
1179+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1180+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1181+ "dev": true
1182+ },
1183+ "node_modules/electron-to-chromium": {
1184+ "version": "1.4.284",
1185+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz",
1186+ "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==",
1187+ "dev": true
1188+ },
1189+ "node_modules/esbuild": {
1190+ "version": "0.16.12",
1191+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.12.tgz",
1192+ "integrity": "sha512-eq5KcuXajf2OmivCl4e89AD3j8fbV+UTE9vczEzq5haA07U9oOTzBWlh3+6ZdjJR7Rz2QfWZ2uxZyhZxBgJ4+g==",
1193+ "dev": true,
1194+ "hasInstallScript": true,
1195+ "bin": {
1196+ "esbuild": "bin/esbuild"
1197+ },
1198+ "engines": {
1199+ "node": ">=12"
1200+ },
1201+ "optionalDependencies": {
1202+ "@esbuild/android-arm": "0.16.12",
1203+ "@esbuild/android-arm64": "0.16.12",
1204+ "@esbuild/android-x64": "0.16.12",
1205+ "@esbuild/darwin-arm64": "0.16.12",
1206+ "@esbuild/darwin-x64": "0.16.12",
1207+ "@esbuild/freebsd-arm64": "0.16.12",
1208+ "@esbuild/freebsd-x64": "0.16.12",
1209+ "@esbuild/linux-arm": "0.16.12",
1210+ "@esbuild/linux-arm64": "0.16.12",
1211+ "@esbuild/linux-ia32": "0.16.12",
1212+ "@esbuild/linux-loong64": "0.16.12",
1213+ "@esbuild/linux-mips64el": "0.16.12",
1214+ "@esbuild/linux-ppc64": "0.16.12",
1215+ "@esbuild/linux-riscv64": "0.16.12",
1216+ "@esbuild/linux-s390x": "0.16.12",
1217+ "@esbuild/linux-x64": "0.16.12",
1218+ "@esbuild/netbsd-x64": "0.16.12",
1219+ "@esbuild/openbsd-x64": "0.16.12",
1220+ "@esbuild/sunos-x64": "0.16.12",
1221+ "@esbuild/win32-arm64": "0.16.12",
1222+ "@esbuild/win32-ia32": "0.16.12",
1223+ "@esbuild/win32-x64": "0.16.12"
1224+ }
1225+ },
1226+ "node_modules/escalade": {
1227+ "version": "3.1.1",
1228+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
1229+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
1230+ "dev": true,
1231+ "engines": {
1232+ "node": ">=6"
1233+ }
1234+ },
1235+ "node_modules/escape-string-regexp": {
1236+ "version": "1.0.5",
1237+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1238+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1239+ "dev": true,
1240+ "engines": {
1241+ "node": ">=0.8.0"
1242+ }
1243+ },
1244+ "node_modules/fast-glob": {
1245+ "version": "3.2.12",
1246+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
1247+ "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
1248+ "dev": true,
1249+ "dependencies": {
1250+ "@nodelib/fs.stat": "^2.0.2",
1251+ "@nodelib/fs.walk": "^1.2.3",
1252+ "glob-parent": "^5.1.2",
1253+ "merge2": "^1.3.0",
1254+ "micromatch": "^4.0.4"
1255+ },
1256+ "engines": {
1257+ "node": ">=8.6.0"
1258+ }
1259+ },
1260+ "node_modules/fast-glob/node_modules/glob-parent": {
1261+ "version": "5.1.2",
1262+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1263+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1264+ "dev": true,
1265+ "dependencies": {
1266+ "is-glob": "^4.0.1"
1267+ },
1268+ "engines": {
1269+ "node": ">= 6"
1270+ }
1271+ },
1272+ "node_modules/fastq": {
1273+ "version": "1.14.0",
1274+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz",
1275+ "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==",
1276+ "dev": true,
1277+ "dependencies": {
1278+ "reusify": "^1.0.4"
1279+ }
1280+ },
1281+ "node_modules/fill-range": {
1282+ "version": "7.0.1",
1283+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
1284+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
1285+ "dev": true,
1286+ "dependencies": {
1287+ "to-regex-range": "^5.0.1"
1288+ },
1289+ "engines": {
1290+ "node": ">=8"
1291+ }
1292+ },
1293+ "node_modules/fraction.js": {
1294+ "version": "4.2.0",
1295+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz",
1296+ "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==",
1297+ "dev": true,
1298+ "engines": {
1299+ "node": "*"
1300+ },
1301+ "funding": {
1302+ "type": "patreon",
1303+ "url": "https://www.patreon.com/infusion"
1304+ }
1305+ },
1306+ "node_modules/fsevents": {
1307+ "version": "2.3.2",
1308+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1309+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1310+ "dev": true,
1311+ "hasInstallScript": true,
1312+ "optional": true,
1313+ "os": [
1314+ "darwin"
1315+ ],
1316+ "engines": {
1317+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
1318+ }
1319+ },
1320+ "node_modules/function-bind": {
1321+ "version": "1.1.1",
1322+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1323+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1324+ "dev": true
1325+ },
1326+ "node_modules/gensync": {
1327+ "version": "1.0.0-beta.2",
1328+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
1329+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
1330+ "dev": true,
1331+ "engines": {
1332+ "node": ">=6.9.0"
1333+ }
1334+ },
1335+ "node_modules/glob-parent": {
1336+ "version": "6.0.2",
1337+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1338+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1339+ "dev": true,
1340+ "dependencies": {
1341+ "is-glob": "^4.0.3"
1342+ },
1343+ "engines": {
1344+ "node": ">=10.13.0"
1345+ }
1346+ },
1347+ "node_modules/globals": {
1348+ "version": "11.12.0",
1349+ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
1350+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
1351+ "dev": true,
1352+ "engines": {
1353+ "node": ">=4"
1354+ }
1355+ },
1356+ "node_modules/has": {
1357+ "version": "1.0.3",
1358+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1359+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1360+ "dev": true,
1361+ "dependencies": {
1362+ "function-bind": "^1.1.1"
1363+ },
1364+ "engines": {
1365+ "node": ">= 0.4.0"
1366+ }
1367+ },
1368+ "node_modules/has-flag": {
1369+ "version": "3.0.0",
1370+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1371+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1372+ "dev": true,
1373+ "engines": {
1374+ "node": ">=4"
1375+ }
1376+ },
1377+ "node_modules/is-binary-path": {
1378+ "version": "2.1.0",
1379+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
1380+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
1381+ "dev": true,
1382+ "dependencies": {
1383+ "binary-extensions": "^2.0.0"
1384+ },
1385+ "engines": {
1386+ "node": ">=8"
1387+ }
1388+ },
1389+ "node_modules/is-core-module": {
1390+ "version": "2.11.0",
1391+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
1392+ "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
1393+ "dev": true,
1394+ "dependencies": {
1395+ "has": "^1.0.3"
1396+ },
1397+ "funding": {
1398+ "url": "https://github.com/sponsors/ljharb"
1399+ }
1400+ },
1401+ "node_modules/is-extglob": {
1402+ "version": "2.1.1",
1403+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1404+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
1405+ "dev": true,
1406+ "engines": {
1407+ "node": ">=0.10.0"
1408+ }
1409+ },
1410+ "node_modules/is-glob": {
1411+ "version": "4.0.3",
1412+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1413+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1414+ "dev": true,
1415+ "dependencies": {
1416+ "is-extglob": "^2.1.1"
1417+ },
1418+ "engines": {
1419+ "node": ">=0.10.0"
1420+ }
1421+ },
1422+ "node_modules/is-number": {
1423+ "version": "7.0.0",
1424+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
1425+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
1426+ "dev": true,
1427+ "engines": {
1428+ "node": ">=0.12.0"
1429+ }
1430+ },
1431+ "node_modules/js-tokens": {
1432+ "version": "4.0.0",
1433+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1434+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1435+ },
1436+ "node_modules/jsesc": {
1437+ "version": "2.5.2",
1438+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
1439+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
1440+ "dev": true,
1441+ "bin": {
1442+ "jsesc": "bin/jsesc"
1443+ },
1444+ "engines": {
1445+ "node": ">=4"
1446+ }
1447+ },
1448+ "node_modules/json5": {
1449+ "version": "2.2.2",
1450+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz",
1451+ "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==",
1452+ "dev": true,
1453+ "bin": {
1454+ "json5": "lib/cli.js"
1455+ },
1456+ "engines": {
1457+ "node": ">=6"
1458+ }
1459+ },
1460+ "node_modules/lilconfig": {
1461+ "version": "2.0.6",
1462+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz",
1463+ "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
1464+ "dev": true,
1465+ "engines": {
1466+ "node": ">=10"
1467+ }
1468+ },
1469+ "node_modules/loose-envify": {
1470+ "version": "1.4.0",
1471+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1472+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1473+ "dependencies": {
1474+ "js-tokens": "^3.0.0 || ^4.0.0"
1475+ },
1476+ "bin": {
1477+ "loose-envify": "cli.js"
1478+ }
1479+ },
1480+ "node_modules/lru-cache": {
1481+ "version": "5.1.1",
1482+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
1483+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
1484+ "dev": true,
1485+ "dependencies": {
1486+ "yallist": "^3.0.2"
1487+ }
1488+ },
1489+ "node_modules/magic-string": {
1490+ "version": "0.27.0",
1491+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",
1492+ "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==",
1493+ "dev": true,
1494+ "dependencies": {
1495+ "@jridgewell/sourcemap-codec": "^1.4.13"
1496+ },
1497+ "engines": {
1498+ "node": ">=12"
1499+ }
1500+ },
1501+ "node_modules/merge2": {
1502+ "version": "1.4.1",
1503+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1504+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1505+ "dev": true,
1506+ "engines": {
1507+ "node": ">= 8"
1508+ }
1509+ },
1510+ "node_modules/micromatch": {
1511+ "version": "4.0.5",
1512+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
1513+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
1514+ "dev": true,
1515+ "dependencies": {
1516+ "braces": "^3.0.2",
1517+ "picomatch": "^2.3.1"
1518+ },
1519+ "engines": {
1520+ "node": ">=8.6"
1521+ }
1522+ },
1523+ "node_modules/minimist": {
1524+ "version": "1.2.7",
1525+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
1526+ "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
1527+ "dev": true,
1528+ "funding": {
1529+ "url": "https://github.com/sponsors/ljharb"
1530+ }
1531+ },
1532+ "node_modules/ms": {
1533+ "version": "2.1.2",
1534+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1535+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1536+ "dev": true
1537+ },
1538+ "node_modules/nanoid": {
1539+ "version": "3.3.4",
1540+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz",
1541+ "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
1542+ "dev": true,
1543+ "bin": {
1544+ "nanoid": "bin/nanoid.cjs"
1545+ },
1546+ "engines": {
1547+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1548+ }
1549+ },
1550+ "node_modules/node-releases": {
1551+ "version": "2.0.8",
1552+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
1553+ "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==",
1554+ "dev": true
1555+ },
1556+ "node_modules/normalize-path": {
1557+ "version": "3.0.0",
1558+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1559+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1560+ "dev": true,
1561+ "engines": {
1562+ "node": ">=0.10.0"
1563+ }
1564+ },
1565+ "node_modules/normalize-range": {
1566+ "version": "0.1.2",
1567+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
1568+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
1569+ "dev": true,
1570+ "engines": {
1571+ "node": ">=0.10.0"
1572+ }
1573+ },
1574+ "node_modules/object-assign": {
1575+ "version": "4.1.1",
1576+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1577+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1578+ "engines": {
1579+ "node": ">=0.10.0"
1580+ }
1581+ },
1582+ "node_modules/object-hash": {
1583+ "version": "3.0.0",
1584+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1585+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1586+ "dev": true,
1587+ "engines": {
1588+ "node": ">= 6"
1589+ }
1590+ },
1591+ "node_modules/path-parse": {
1592+ "version": "1.0.7",
1593+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1594+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1595+ "dev": true
1596+ },
1597+ "node_modules/picocolors": {
1598+ "version": "1.0.0",
1599+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
1600+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
1601+ "dev": true
1602+ },
1603+ "node_modules/picomatch": {
1604+ "version": "2.3.1",
1605+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1606+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1607+ "dev": true,
1608+ "engines": {
1609+ "node": ">=8.6"
1610+ },
1611+ "funding": {
1612+ "url": "https://github.com/sponsors/jonschlinkert"
1613+ }
1614+ },
1615+ "node_modules/pify": {
1616+ "version": "2.3.0",
1617+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1618+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1619+ "dev": true,
1620+ "engines": {
1621+ "node": ">=0.10.0"
1622+ }
1623+ },
1624+ "node_modules/postcss": {
1625+ "version": "8.4.20",
1626+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.20.tgz",
1627+ "integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
1628+ "dev": true,
1629+ "funding": [
1630+ {
1631+ "type": "opencollective",
1632+ "url": "https://opencollective.com/postcss/"
1633+ },
1634+ {
1635+ "type": "tidelift",
1636+ "url": "https://tidelift.com/funding/github/npm/postcss"
1637+ }
1638+ ],
1639+ "dependencies": {
1640+ "nanoid": "^3.3.4",
1641+ "picocolors": "^1.0.0",
1642+ "source-map-js": "^1.0.2"
1643+ },
1644+ "engines": {
1645+ "node": "^10 || ^12 || >=14"
1646+ }
1647+ },
1648+ "node_modules/postcss-import": {
1649+ "version": "14.1.0",
1650+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz",
1651+ "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==",
1652+ "dev": true,
1653+ "dependencies": {
1654+ "postcss-value-parser": "^4.0.0",
1655+ "read-cache": "^1.0.0",
1656+ "resolve": "^1.1.7"
1657+ },
1658+ "engines": {
1659+ "node": ">=10.0.0"
1660+ },
1661+ "peerDependencies": {
1662+ "postcss": "^8.0.0"
1663+ }
1664+ },
1665+ "node_modules/postcss-js": {
1666+ "version": "4.0.0",
1667+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz",
1668+ "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==",
1669+ "dev": true,
1670+ "dependencies": {
1671+ "camelcase-css": "^2.0.1"
1672+ },
1673+ "engines": {
1674+ "node": "^12 || ^14 || >= 16"
1675+ },
1676+ "funding": {
1677+ "type": "opencollective",
1678+ "url": "https://opencollective.com/postcss/"
1679+ },
1680+ "peerDependencies": {
1681+ "postcss": "^8.3.3"
1682+ }
1683+ },
1684+ "node_modules/postcss-load-config": {
1685+ "version": "3.1.4",
1686+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz",
1687+ "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==",
1688+ "dev": true,
1689+ "dependencies": {
1690+ "lilconfig": "^2.0.5",
1691+ "yaml": "^1.10.2"
1692+ },
1693+ "engines": {
1694+ "node": ">= 10"
1695+ },
1696+ "funding": {
1697+ "type": "opencollective",
1698+ "url": "https://opencollective.com/postcss/"
1699+ },
1700+ "peerDependencies": {
1701+ "postcss": ">=8.0.9",
1702+ "ts-node": ">=9.0.0"
1703+ },
1704+ "peerDependenciesMeta": {
1705+ "postcss": {
1706+ "optional": true
1707+ },
1708+ "ts-node": {
1709+ "optional": true
1710+ }
1711+ }
1712+ },
1713+ "node_modules/postcss-nested": {
1714+ "version": "6.0.0",
1715+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz",
1716+ "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==",
1717+ "dev": true,
1718+ "dependencies": {
1719+ "postcss-selector-parser": "^6.0.10"
1720+ },
1721+ "engines": {
1722+ "node": ">=12.0"
1723+ },
1724+ "funding": {
1725+ "type": "opencollective",
1726+ "url": "https://opencollective.com/postcss/"
1727+ },
1728+ "peerDependencies": {
1729+ "postcss": "^8.2.14"
1730+ }
1731+ },
1732+ "node_modules/postcss-selector-parser": {
1733+ "version": "6.0.11",
1734+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz",
1735+ "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==",
1736+ "dev": true,
1737+ "dependencies": {
1738+ "cssesc": "^3.0.0",
1739+ "util-deprecate": "^1.0.2"
1740+ },
1741+ "engines": {
1742+ "node": ">=4"
1743+ }
1744+ },
1745+ "node_modules/postcss-value-parser": {
1746+ "version": "4.2.0",
1747+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1748+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
1749+ "dev": true
1750+ },
1751+ "node_modules/prop-types": {
1752+ "version": "15.8.1",
1753+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
1754+ "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
1755+ "dependencies": {
1756+ "loose-envify": "^1.4.0",
1757+ "object-assign": "^4.1.1",
1758+ "react-is": "^16.13.1"
1759+ }
1760+ },
1761+ "node_modules/queue-microtask": {
1762+ "version": "1.2.3",
1763+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1764+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1765+ "dev": true,
1766+ "funding": [
1767+ {
1768+ "type": "github",
1769+ "url": "https://github.com/sponsors/feross"
1770+ },
1771+ {
1772+ "type": "patreon",
1773+ "url": "https://www.patreon.com/feross"
1774+ },
1775+ {
1776+ "type": "consulting",
1777+ "url": "https://feross.org/support"
1778+ }
1779+ ]
1780+ },
1781+ "node_modules/quick-lru": {
1782+ "version": "5.1.1",
1783+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
1784+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
1785+ "dev": true,
1786+ "engines": {
1787+ "node": ">=10"
1788+ },
1789+ "funding": {
1790+ "url": "https://github.com/sponsors/sindresorhus"
1791+ }
1792+ },
1793+ "node_modules/react": {
1794+ "version": "18.2.0",
1795+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
1796+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
1797+ "dependencies": {
1798+ "loose-envify": "^1.1.0"
1799+ },
1800+ "engines": {
1801+ "node": ">=0.10.0"
1802+ }
1803+ },
1804+ "node_modules/react-dom": {
1805+ "version": "18.2.0",
1806+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
1807+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
1808+ "dependencies": {
1809+ "loose-envify": "^1.1.0",
1810+ "scheduler": "^0.23.0"
1811+ },
1812+ "peerDependencies": {
1813+ "react": "^18.2.0"
1814+ }
1815+ },
1816+ "node_modules/react-fast-compare": {
1817+ "version": "3.2.0",
1818+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz",
1819+ "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA=="
1820+ },
1821+ "node_modules/react-helmet": {
1822+ "version": "6.1.0",
1823+ "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz",
1824+ "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==",
1825+ "dependencies": {
1826+ "object-assign": "^4.1.1",
1827+ "prop-types": "^15.7.2",
1828+ "react-fast-compare": "^3.1.1",
1829+ "react-side-effect": "^2.1.0"
1830+ },
1831+ "peerDependencies": {
1832+ "react": ">=16.3.0"
1833+ }
1834+ },
1835+ "node_modules/react-is": {
1836+ "version": "16.13.1",
1837+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
1838+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
1839+ },
1840+ "node_modules/react-refresh": {
1841+ "version": "0.14.0",
1842+ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.0.tgz",
1843+ "integrity": "sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==",
1844+ "dev": true,
1845+ "engines": {
1846+ "node": ">=0.10.0"
1847+ }
1848+ },
1849+ "node_modules/react-side-effect": {
1850+ "version": "2.1.2",
1851+ "resolved": "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz",
1852+ "integrity": "sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==",
1853+ "peerDependencies": {
1854+ "react": "^16.3.0 || ^17.0.0 || ^18.0.0"
1855+ }
1856+ },
1857+ "node_modules/read-cache": {
1858+ "version": "1.0.0",
1859+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1860+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1861+ "dev": true,
1862+ "dependencies": {
1863+ "pify": "^2.3.0"
1864+ }
1865+ },
1866+ "node_modules/readdirp": {
1867+ "version": "3.6.0",
1868+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1869+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1870+ "dev": true,
1871+ "dependencies": {
1872+ "picomatch": "^2.2.1"
1873+ },
1874+ "engines": {
1875+ "node": ">=8.10.0"
1876+ }
1877+ },
1878+ "node_modules/resolve": {
1879+ "version": "1.22.1",
1880+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1881+ "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1882+ "dev": true,
1883+ "dependencies": {
1884+ "is-core-module": "^2.9.0",
1885+ "path-parse": "^1.0.7",
1886+ "supports-preserve-symlinks-flag": "^1.0.0"
1887+ },
1888+ "bin": {
1889+ "resolve": "bin/resolve"
1890+ },
1891+ "funding": {
1892+ "url": "https://github.com/sponsors/ljharb"
1893+ }
1894+ },
1895+ "node_modules/reusify": {
1896+ "version": "1.0.4",
1897+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1898+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1899+ "dev": true,
1900+ "engines": {
1901+ "iojs": ">=1.0.0",
1902+ "node": ">=0.10.0"
1903+ }
1904+ },
1905+ "node_modules/rollup": {
1906+ "version": "3.9.0",
1907+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.9.0.tgz",
1908+ "integrity": "sha512-nGGylpmblyjTpF4lEUPgmOw6OVxRvnI6Iuuh6Lz4O/X66cVOX1XJSsqP1YamxQ+mPuFE7qJxLFDSCk8rNv5dDw==",
1909+ "dev": true,
1910+ "bin": {
1911+ "rollup": "dist/bin/rollup"
1912+ },
1913+ "engines": {
1914+ "node": ">=14.18.0",
1915+ "npm": ">=8.0.0"
1916+ },
1917+ "optionalDependencies": {
1918+ "fsevents": "~2.3.2"
1919+ }
1920+ },
1921+ "node_modules/run-parallel": {
1922+ "version": "1.2.0",
1923+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1924+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1925+ "dev": true,
1926+ "funding": [
1927+ {
1928+ "type": "github",
1929+ "url": "https://github.com/sponsors/feross"
1930+ },
1931+ {
1932+ "type": "patreon",
1933+ "url": "https://www.patreon.com/feross"
1934+ },
1935+ {
1936+ "type": "consulting",
1937+ "url": "https://feross.org/support"
1938+ }
1939+ ],
1940+ "dependencies": {
1941+ "queue-microtask": "^1.2.2"
1942+ }
1943+ },
1944+ "node_modules/scheduler": {
1945+ "version": "0.23.0",
1946+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
1947+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
1948+ "dependencies": {
1949+ "loose-envify": "^1.1.0"
1950+ }
1951+ },
1952+ "node_modules/semver": {
1953+ "version": "6.3.0",
1954+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
1955+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
1956+ "dev": true,
1957+ "bin": {
1958+ "semver": "bin/semver.js"
1959+ }
1960+ },
1961+ "node_modules/source-map-js": {
1962+ "version": "1.0.2",
1963+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1964+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1965+ "dev": true,
1966+ "engines": {
1967+ "node": ">=0.10.0"
1968+ }
1969+ },
1970+ "node_modules/supports-color": {
1971+ "version": "5.5.0",
1972+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1973+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1974+ "dev": true,
1975+ "dependencies": {
1976+ "has-flag": "^3.0.0"
1977+ },
1978+ "engines": {
1979+ "node": ">=4"
1980+ }
1981+ },
1982+ "node_modules/supports-preserve-symlinks-flag": {
1983+ "version": "1.0.0",
1984+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1985+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1986+ "dev": true,
1987+ "engines": {
1988+ "node": ">= 0.4"
1989+ },
1990+ "funding": {
1991+ "url": "https://github.com/sponsors/ljharb"
1992+ }
1993+ },
1994+ "node_modules/tailwindcss": {
1995+ "version": "3.2.4",
1996+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.2.4.tgz",
1997+ "integrity": "sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==",
1998+ "dev": true,
1999+ "dependencies": {
2000+ "arg": "^5.0.2",
2001+ "chokidar": "^3.5.3",
2002+ "color-name": "^1.1.4",
2003+ "detective": "^5.2.1",
2004+ "didyoumean": "^1.2.2",
2005+ "dlv": "^1.1.3",
2006+ "fast-glob": "^3.2.12",
2007+ "glob-parent": "^6.0.2",
2008+ "is-glob": "^4.0.3",
2009+ "lilconfig": "^2.0.6",
2010+ "micromatch": "^4.0.5",
2011+ "normalize-path": "^3.0.0",
2012+ "object-hash": "^3.0.0",
2013+ "picocolors": "^1.0.0",
2014+ "postcss": "^8.4.18",
2015+ "postcss-import": "^14.1.0",
2016+ "postcss-js": "^4.0.0",
2017+ "postcss-load-config": "^3.1.4",
2018+ "postcss-nested": "6.0.0",
2019+ "postcss-selector-parser": "^6.0.10",
2020+ "postcss-value-parser": "^4.2.0",
2021+ "quick-lru": "^5.1.1",
2022+ "resolve": "^1.22.1"
2023+ },
2024+ "bin": {
2025+ "tailwind": "lib/cli.js",
2026+ "tailwindcss": "lib/cli.js"
2027+ },
2028+ "engines": {
2029+ "node": ">=12.13.0"
2030+ },
2031+ "peerDependencies": {
2032+ "postcss": "^8.0.9"
2033+ }
2034+ },
2035+ "node_modules/tailwindcss/node_modules/color-name": {
2036+ "version": "1.1.4",
2037+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
2038+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
2039+ "dev": true
2040+ },
2041+ "node_modules/to-fast-properties": {
2042+ "version": "2.0.0",
2043+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
2044+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
2045+ "dev": true,
2046+ "engines": {
2047+ "node": ">=4"
2048+ }
2049+ },
2050+ "node_modules/to-regex-range": {
2051+ "version": "5.0.1",
2052+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
2053+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
2054+ "dev": true,
2055+ "dependencies": {
2056+ "is-number": "^7.0.0"
2057+ },
2058+ "engines": {
2059+ "node": ">=8.0"
2060+ }
2061+ },
2062+ "node_modules/typescript": {
2063+ "version": "4.9.4",
2064+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
2065+ "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
2066+ "dev": true,
2067+ "bin": {
2068+ "tsc": "bin/tsc",
2069+ "tsserver": "bin/tsserver"
2070+ },
2071+ "engines": {
2072+ "node": ">=4.2.0"
2073+ }
2074+ },
2075+ "node_modules/update-browserslist-db": {
2076+ "version": "1.0.10",
2077+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz",
2078+ "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==",
2079+ "dev": true,
2080+ "funding": [
2081+ {
2082+ "type": "opencollective",
2083+ "url": "https://opencollective.com/browserslist"
2084+ },
2085+ {
2086+ "type": "tidelift",
2087+ "url": "https://tidelift.com/funding/github/npm/browserslist"
2088+ }
2089+ ],
2090+ "dependencies": {
2091+ "escalade": "^3.1.1",
2092+ "picocolors": "^1.0.0"
2093+ },
2094+ "bin": {
2095+ "browserslist-lint": "cli.js"
2096+ },
2097+ "peerDependencies": {
2098+ "browserslist": ">= 4.21.0"
2099+ }
2100+ },
2101+ "node_modules/util-deprecate": {
2102+ "version": "1.0.2",
2103+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
2104+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
2105+ "dev": true
2106+ },
2107+ "node_modules/vite": {
2108+ "version": "4.0.3",
2109+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.0.3.tgz",
2110+ "integrity": "sha512-HvuNv1RdE7deIfQb8mPk51UKjqptO/4RXZ5yXSAvurd5xOckwS/gg8h9Tky3uSbnjYTgUm0hVCet1cyhKd73ZA==",
2111+ "dev": true,
2112+ "dependencies": {
2113+ "esbuild": "^0.16.3",
2114+ "postcss": "^8.4.20",
2115+ "resolve": "^1.22.1",
2116+ "rollup": "^3.7.0"
2117+ },
2118+ "bin": {
2119+ "vite": "bin/vite.js"
2120+ },
2121+ "engines": {
2122+ "node": "^14.18.0 || >=16.0.0"
2123+ },
2124+ "optionalDependencies": {
2125+ "fsevents": "~2.3.2"
2126+ },
2127+ "peerDependencies": {
2128+ "@types/node": ">= 14",
2129+ "less": "*",
2130+ "sass": "*",
2131+ "stylus": "*",
2132+ "sugarss": "*",
2133+ "terser": "^5.4.0"
2134+ },
2135+ "peerDependenciesMeta": {
2136+ "@types/node": {
2137+ "optional": true
2138+ },
2139+ "less": {
2140+ "optional": true
2141+ },
2142+ "sass": {
2143+ "optional": true
2144+ },
2145+ "stylus": {
2146+ "optional": true
2147+ },
2148+ "sugarss": {
2149+ "optional": true
2150+ },
2151+ "terser": {
2152+ "optional": true
2153+ }
2154+ }
2155+ },
2156+ "node_modules/xtend": {
2157+ "version": "4.0.2",
2158+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
2159+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
2160+ "dev": true,
2161+ "engines": {
2162+ "node": ">=0.4"
2163+ }
2164+ },
2165+ "node_modules/yallist": {
2166+ "version": "3.1.1",
2167+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
2168+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
2169+ "dev": true
2170+ },
2171+ "node_modules/yaml": {
2172+ "version": "1.10.2",
2173+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
2174+ "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
2175+ "dev": true,
2176+ "engines": {
2177+ "node": ">= 6"
2178+ }
2179+ }
2180+ }
2181+}
+26-0package.json
@@ -0,0 +1,26 @@
1+{
2+ "name": "vflcountdown",
3+ "private": true,
4+ "version": "0.0.0",
5+ "type": "module",
6+ "scripts": {
7+ "dev": "vite",
8+ "build": "tsc && vite build",
9+ "preview": "vite preview"
10+ },
11+ "dependencies": {
12+ "react": "^18.2.0",
13+ "react-dom": "^18.2.0",
14+ "react-helmet": "^6.1.0"
15+ },
16+ "devDependencies": {
17+ "@types/react": "^18.0.26",
18+ "@types/react-dom": "^18.0.9",
19+ "@vitejs/plugin-react": "^3.0.0",
20+ "autoprefixer": "^10.4.13",
21+ "postcss": "^8.4.20",
22+ "tailwindcss": "^3.2.4",
23+ "typescript": "^4.9.3",
24+ "vite": "^4.0.0"
25+ }
26+}
+6-0postcss.config.cjs
@@ -0,0 +1,6 @@
1+module.exports = {
2+ plugins: {
3+ tailwindcss: {},
4+ autoprefixer: {},
5+ },
6+};
+0-0public/favicon.ico

Binary file changed.

+0-0public/goalpost.mp4

Binary file changed.

+0-0public/neyland.jpg

Binary file changed.

+17-0src/App.tsx
@@ -0,0 +1,17 @@
1+import { useState } from "react";
2+import reactLogo from "./assets/react.svg";
3+import Hero from "./components/Hero";
4+import Card from "./components/Card";
5+import video from "./assets/goalpost.mp4";
6+
7+function App() {
8+ return (
9+ <div>
10+ <Hero src={video}>
11+ <Card>hello</Card>
12+ </Hero>
13+ </div>
14+ );
15+}
16+
17+export default App;
+0-0src/assets/goalpost.mp4

Binary file changed.

+860-0src/assets/schedule.json
@@ -0,0 +1,860 @@
1+{
2+ "settings": {
3+ "schedule_score_display": "standard",
4+ "opponent_history_page_enabled": true,
5+ "seo_accessibility_h2_heading": true
6+ },
7+ "schedule": {
8+ "id": 2823,
9+ "title": "2023 Football Schedule",
10+ "content_template": "schedule_template_default",
11+ "show_at_vs": true,
12+ "hidden": false,
13+ "download": null,
14+ "print": null,
15+ "note": null,
16+ "default_view": null,
17+ "school_name": "Tennessee",
18+ "season": {
19+ "id": 47,
20+ "title": "2023",
21+ "shortname": "2023",
22+ "startdate": "2023-01-01T00:00:00"
23+ },
24+ "sport": {
25+ "id": 2,
26+ "global_id": 5,
27+ "title": "Football",
28+ "abbreviation": "FB",
29+ "shortname": "football",
30+ "short_display": "Football",
31+ "global_sport_shortname": "football",
32+ "global_sport_name_slug": "football",
33+ "is_a_stat_sport": false,
34+ "display_next_event": true,
35+ "display_opponent_history": true,
36+ "season": {
37+ "id": 45,
38+ "title": "2022",
39+ "shortname": null,
40+ "startdate": "2022-01-01T00:00:00"
41+ }
42+ },
43+ "conference": {
44+ "id": 1,
45+ "title": "SEC",
46+ "logo": null,
47+ "abbreviation": "SEC",
48+ "website": null,
49+ "notation": "*",
50+ "prefix": "a"
51+ },
52+ "record": {
53+ "overall": "0-0",
54+ "overall_percentage": ".000",
55+ "conference": "0-0",
56+ "conference_percentage": ".000",
57+ "conference_points": "0",
58+ "streak": "",
59+ "home": "0-0",
60+ "away": "0-0",
61+ "neutral": "0-0"
62+ },
63+ "games": [
64+ {
65+ "id": 28015,
66+ "date": "2023-09-02T00:00:00",
67+ "enddate": null,
68+ "time": "TBA",
69+ "conference": false,
70+ "location": "Nashville, Tenn.",
71+ "location_venue": null,
72+ "location_indicator": "N",
73+ "neutral_hometeam": null,
74+ "at_vs": "vs",
75+ "status": "A",
76+ "noplay_text": null,
77+ "type": "R",
78+ "promotion": null,
79+ "promotion_link": null,
80+ "promotion_image_link": null,
81+ "promotion_image": null,
82+ "event_image": null,
83+ "promotion_caption": null,
84+ "is_a_doubleheader": false,
85+ "opponent_history_path": "/sports/football/opponent-history/university-of-virginia/58",
86+ "display_vsat_indicator": true,
87+ "pac_tickets": null,
88+ "game_program_link": null,
89+ "opponent": {
90+ "id": 58,
91+ "title": "Virginia",
92+ "prefix": null,
93+ "website": "http://virginiasports.com/",
94+ "website_label": "Virginia on September 2 TBA",
95+ "location": "Charlottesville, VA",
96+ "conference": false,
97+ "mascot": "Cavaliers",
98+ "image": {
99+ "filename": "nav_logo.png",
100+ "path": "/images/logos",
101+ "title": "University of Virginia Logo",
102+ "alt": "University of Virginia Logo",
103+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/nav_logo.png"
104+ }
105+ },
106+ "media": {
107+ "tv": null,
108+ "tv_image": "",
109+ "tv_image_link": null,
110+ "radio": null,
111+ "video": null,
112+ "audio": null,
113+ "stats": null,
114+ "tickets": null,
115+ "preview": null,
116+ "gamefiles": null,
117+ "custom_display_fields": [],
118+ "pac_12_networks": null
119+ },
120+ "result": null,
121+ "facility": { "id": 81, "title": "Nissan Stadium", "url": "" },
122+ "tournament": null,
123+ "tournament_startdate": null,
124+ "galleries": [],
125+ "game_program": "Program"
126+ },
127+ {
128+ "id": 28016,
129+ "date": "2023-09-09T00:00:00",
130+ "enddate": null,
131+ "time": "TBA",
132+ "conference": false,
133+ "location": "Knoxville, Tenn.",
134+ "location_venue": null,
135+ "location_indicator": "H",
136+ "neutral_hometeam": null,
137+ "at_vs": "vs",
138+ "status": "A",
139+ "noplay_text": null,
140+ "type": "R",
141+ "promotion": null,
142+ "promotion_link": null,
143+ "promotion_image_link": null,
144+ "promotion_image": null,
145+ "event_image": null,
146+ "promotion_caption": null,
147+ "is_a_doubleheader": false,
148+ "opponent_history_path": "/sports/football/opponent-history/austin-peay-state-university/33",
149+ "display_vsat_indicator": true,
150+ "pac_tickets": null,
151+ "game_program_link": null,
152+ "opponent": {
153+ "id": 33,
154+ "title": "Austin Peay",
155+ "prefix": null,
156+ "website": "http://letsgopeay.com/",
157+ "website_label": "Austin Peay on September 9 TBA",
158+ "location": "Clarksville, TN",
159+ "conference": false,
160+ "mascot": null,
161+ "image": {
162+ "filename": "ap_monicle_gentleman.png",
163+ "path": "/images/logos",
164+ "title": "Austin Peay State University Logo",
165+ "alt": "Austin Peay State University Logo",
166+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/ap_monicle_gentleman.png"
167+ }
168+ },
169+ "media": {
170+ "tv": null,
171+ "tv_image": "",
172+ "tv_image_link": null,
173+ "radio": null,
174+ "video": null,
175+ "audio": null,
176+ "stats": null,
177+ "tickets": null,
178+ "preview": null,
179+ "gamefiles": null,
180+ "custom_display_fields": [],
181+ "pac_12_networks": null
182+ },
183+ "result": null,
184+ "facility": {
185+ "id": 54,
186+ "title": "Neyland Stadium",
187+ "url": "/facilities/?id=54"
188+ },
189+ "tournament": null,
190+ "tournament_startdate": null,
191+ "galleries": [],
192+ "game_program": "Program"
193+ },
194+ {
195+ "id": 28017,
196+ "date": "2023-09-16T00:00:00",
197+ "enddate": null,
198+ "time": "TBA",
199+ "conference": true,
200+ "location": "Gainesville, Fla.",
201+ "location_venue": null,
202+ "location_indicator": "A",
203+ "neutral_hometeam": null,
204+ "at_vs": "at",
205+ "status": "A",
206+ "noplay_text": null,
207+ "type": "R",
208+ "promotion": null,
209+ "promotion_link": null,
210+ "promotion_image_link": null,
211+ "promotion_image": null,
212+ "event_image": null,
213+ "promotion_caption": null,
214+ "is_a_doubleheader": false,
215+ "opponent_history_path": "/sports/football/opponent-history/university-of-florida/19",
216+ "display_vsat_indicator": true,
217+ "pac_tickets": null,
218+ "game_program_link": null,
219+ "opponent": {
220+ "id": 19,
221+ "title": "Florida",
222+ "prefix": null,
223+ "website": "http://www.floridagators.com/",
224+ "website_label": "Florida on September 16 TBA",
225+ "location": "Gainesville, FL",
226+ "conference": false,
227+ "mascot": "Gators",
228+ "image": {
229+ "filename": "Florida.png",
230+ "path": "/images/logos",
231+ "title": "University of Florida Logo",
232+ "alt": "University of Florida Logo",
233+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Florida.png"
234+ }
235+ },
236+ "media": {
237+ "tv": null,
238+ "tv_image": "",
239+ "tv_image_link": null,
240+ "radio": null,
241+ "video": null,
242+ "audio": null,
243+ "stats": null,
244+ "tickets": null,
245+ "preview": null,
246+ "gamefiles": null,
247+ "custom_display_fields": [],
248+ "pac_12_networks": null
249+ },
250+ "result": null,
251+ "facility": null,
252+ "tournament": null,
253+ "tournament_startdate": null,
254+ "galleries": [],
255+ "game_program": "Program"
256+ },
257+ {
258+ "id": 28018,
259+ "date": "2023-09-23T00:00:00",
260+ "enddate": null,
261+ "time": "TBA",
262+ "conference": false,
263+ "location": "Knoxville, Tenn.",
264+ "location_venue": null,
265+ "location_indicator": "H",
266+ "neutral_hometeam": null,
267+ "at_vs": "vs",
268+ "status": "A",
269+ "noplay_text": null,
270+ "type": "R",
271+ "promotion": null,
272+ "promotion_link": null,
273+ "promotion_image_link": null,
274+ "promotion_image": null,
275+ "event_image": null,
276+ "promotion_caption": null,
277+ "is_a_doubleheader": false,
278+ "opponent_history_path": "/sports/football/opponent-history/utsa/288",
279+ "display_vsat_indicator": true,
280+ "pac_tickets": null,
281+ "game_program_link": null,
282+ "opponent": {
283+ "id": 288,
284+ "title": "UTSA",
285+ "prefix": null,
286+ "website": "http://www.goutsa.com/",
287+ "website_label": "UTSA on September 23 TBA",
288+ "location": "San Antonio, TX",
289+ "conference": false,
290+ "mascot": "Roadrunners",
291+ "image": {
292+ "filename": "UTSA.png",
293+ "path": "/images/logos",
294+ "title": "UTSA Logo",
295+ "alt": "",
296+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/UTSA.png"
297+ }
298+ },
299+ "media": {
300+ "tv": null,
301+ "tv_image": "",
302+ "tv_image_link": null,
303+ "radio": null,
304+ "video": null,
305+ "audio": null,
306+ "stats": null,
307+ "tickets": null,
308+ "preview": null,
309+ "gamefiles": null,
310+ "custom_display_fields": [],
311+ "pac_12_networks": null
312+ },
313+ "result": null,
314+ "facility": {
315+ "id": 54,
316+ "title": "Neyland Stadium",
317+ "url": "/facilities/?id=54"
318+ },
319+ "tournament": null,
320+ "tournament_startdate": null,
321+ "galleries": [],
322+ "game_program": "Program"
323+ },
324+ {
325+ "id": 28019,
326+ "date": "2023-09-30T00:00:00",
327+ "enddate": null,
328+ "time": "TBA",
329+ "conference": true,
330+ "location": "Knoxville, Tenn.",
331+ "location_venue": null,
332+ "location_indicator": "H",
333+ "neutral_hometeam": null,
334+ "at_vs": "vs",
335+ "status": "A",
336+ "noplay_text": null,
337+ "type": "R",
338+ "promotion": null,
339+ "promotion_link": null,
340+ "promotion_image_link": null,
341+ "promotion_image": null,
342+ "event_image": null,
343+ "promotion_caption": null,
344+ "is_a_doubleheader": false,
345+ "opponent_history_path": "/sports/football/opponent-history/university-of-south-carolina/68",
346+ "display_vsat_indicator": true,
347+ "pac_tickets": null,
348+ "game_program_link": null,
349+ "opponent": {
350+ "id": 68,
351+ "title": "South Carolina",
352+ "prefix": null,
353+ "website": "http://www.gamecocksonline.com/",
354+ "website_label": "South Carolina on September 30 TBA",
355+ "location": "Columbia, SC",
356+ "conference": false,
357+ "mascot": "Gamecocks",
358+ "image": {
359+ "filename": "south_carolina.png",
360+ "path": "/images/logos",
361+ "title": "University of South Carolina Logo",
362+ "alt": "University of South Carolina Logo",
363+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/south_carolina.png"
364+ }
365+ },
366+ "media": {
367+ "tv": null,
368+ "tv_image": "",
369+ "tv_image_link": null,
370+ "radio": null,
371+ "video": null,
372+ "audio": null,
373+ "stats": null,
374+ "tickets": null,
375+ "preview": null,
376+ "gamefiles": null,
377+ "custom_display_fields": [],
378+ "pac_12_networks": null
379+ },
380+ "result": null,
381+ "facility": {
382+ "id": 54,
383+ "title": "Neyland Stadium",
384+ "url": "/facilities/?id=54"
385+ },
386+ "tournament": null,
387+ "tournament_startdate": null,
388+ "galleries": [],
389+ "game_program": "Program"
390+ },
391+ {
392+ "id": 28020,
393+ "date": "2023-10-14T00:00:00",
394+ "enddate": null,
395+ "time": "TBA",
396+ "conference": true,
397+ "location": "Knoxville, Tenn.",
398+ "location_venue": null,
399+ "location_indicator": "H",
400+ "neutral_hometeam": null,
401+ "at_vs": "vs",
402+ "status": "A",
403+ "noplay_text": null,
404+ "type": "R",
405+ "promotion": null,
406+ "promotion_link": null,
407+ "promotion_image_link": null,
408+ "promotion_image": null,
409+ "event_image": null,
410+ "promotion_caption": null,
411+ "is_a_doubleheader": false,
412+ "opponent_history_path": "/sports/football/opponent-history/texas-am-university/137",
413+ "display_vsat_indicator": true,
414+ "pac_tickets": null,
415+ "game_program_link": null,
416+ "opponent": {
417+ "id": 137,
418+ "title": "Texas A&M",
419+ "prefix": null,
420+ "website": "http://www.12thman.com/",
421+ "website_label": "Texas A&M on October 14 TBA",
422+ "location": "College Station, TX",
423+ "conference": false,
424+ "mascot": "Aggies",
425+ "image": {
426+ "filename": "Texas_AM_2022.png",
427+ "path": "/images/logos",
428+ "title": "Texas A&M University Logo",
429+ "alt": "Texas A&M University Logo",
430+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Texas_AM_2022.png"
431+ }
432+ },
433+ "media": {
434+ "tv": null,
435+ "tv_image": "",
436+ "tv_image_link": null,
437+ "radio": null,
438+ "video": null,
439+ "audio": null,
440+ "stats": null,
441+ "tickets": null,
442+ "preview": null,
443+ "gamefiles": null,
444+ "custom_display_fields": [],
445+ "pac_12_networks": null
446+ },
447+ "result": null,
448+ "facility": {
449+ "id": 54,
450+ "title": "Neyland Stadium",
451+ "url": "/facilities/?id=54"
452+ },
453+ "tournament": null,
454+ "tournament_startdate": null,
455+ "galleries": [],
456+ "game_program": "Program"
457+ },
458+ {
459+ "id": 28021,
460+ "date": "2023-10-21T00:00:00",
461+ "enddate": null,
462+ "time": "TBA",
463+ "conference": true,
464+ "location": "Tuscaloosa, Ala.",
465+ "location_venue": null,
466+ "location_indicator": "A",
467+ "neutral_hometeam": null,
468+ "at_vs": "at",
469+ "status": "A",
470+ "noplay_text": null,
471+ "type": "R",
472+ "promotion": null,
473+ "promotion_link": null,
474+ "promotion_image_link": null,
475+ "promotion_image": null,
476+ "event_image": null,
477+ "promotion_caption": null,
478+ "is_a_doubleheader": false,
479+ "opponent_history_path": "/sports/football/opponent-history/university-of-alabama/3",
480+ "display_vsat_indicator": true,
481+ "pac_tickets": null,
482+ "game_program_link": null,
483+ "opponent": {
484+ "id": 3,
485+ "title": "Alabama",
486+ "prefix": null,
487+ "website": "http://www.rolltide.com/",
488+ "website_label": "Alabama on October 21 TBA",
489+ "location": "Tuscaloosa, AL",
490+ "conference": false,
491+ "mascot": "Crimson Tide",
492+ "image": {
493+ "filename": "alabama_logo.png",
494+ "path": "/images/logos",
495+ "title": "University of Alabama Logo",
496+ "alt": "University of Alabama Logo",
497+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/alabama_logo.png"
498+ }
499+ },
500+ "media": {
501+ "tv": null,
502+ "tv_image": "",
503+ "tv_image_link": null,
504+ "radio": null,
505+ "video": null,
506+ "audio": null,
507+ "stats": null,
508+ "tickets": null,
509+ "preview": null,
510+ "gamefiles": null,
511+ "custom_display_fields": [],
512+ "pac_12_networks": null
513+ },
514+ "result": null,
515+ "facility": null,
516+ "tournament": null,
517+ "tournament_startdate": null,
518+ "galleries": [],
519+ "game_program": "Program"
520+ },
521+ {
522+ "id": 28022,
523+ "date": "2023-10-28T00:00:00",
524+ "enddate": null,
525+ "time": "TBA",
526+ "conference": true,
527+ "location": "Lexington, Ky.",
528+ "location_venue": null,
529+ "location_indicator": "A",
530+ "neutral_hometeam": null,
531+ "at_vs": "at",
532+ "status": "A",
533+ "noplay_text": null,
534+ "type": "R",
535+ "promotion": null,
536+ "promotion_link": null,
537+ "promotion_image_link": null,
538+ "promotion_image": null,
539+ "event_image": null,
540+ "promotion_caption": null,
541+ "is_a_doubleheader": false,
542+ "opponent_history_path": "/sports/football/opponent-history/university-of-kentucky/32",
543+ "display_vsat_indicator": true,
544+ "pac_tickets": null,
545+ "game_program_link": null,
546+ "opponent": {
547+ "id": 32,
548+ "title": "Kentucky",
549+ "prefix": null,
550+ "website": "https://ukathletics.com/",
551+ "website_label": "Kentucky on October 28 TBA",
552+ "location": "Lexington, KY",
553+ "conference": false,
554+ "mascot": "Wildcats",
555+ "image": {
556+ "filename": "Kentucky.png",
557+ "path": "/images/logos",
558+ "title": "University of Kentucky Logo",
559+ "alt": "University of Kentucky Logo",
560+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Kentucky.png"
561+ }
562+ },
563+ "media": {
564+ "tv": null,
565+ "tv_image": "",
566+ "tv_image_link": null,
567+ "radio": null,
568+ "video": null,
569+ "audio": null,
570+ "stats": null,
571+ "tickets": null,
572+ "preview": null,
573+ "gamefiles": null,
574+ "custom_display_fields": [],
575+ "pac_12_networks": null
576+ },
577+ "result": null,
578+ "facility": null,
579+ "tournament": null,
580+ "tournament_startdate": null,
581+ "galleries": [],
582+ "game_program": "Program"
583+ },
584+ {
585+ "id": 28023,
586+ "date": "2023-11-04T00:00:00",
587+ "enddate": null,
588+ "time": "TBA",
589+ "conference": false,
590+ "location": "Knoxville, Tenn.",
591+ "location_venue": null,
592+ "location_indicator": "H",
593+ "neutral_hometeam": null,
594+ "at_vs": "vs",
595+ "status": "A",
596+ "noplay_text": null,
597+ "type": "R",
598+ "promotion": null,
599+ "promotion_link": null,
600+ "promotion_image_link": null,
601+ "promotion_image": null,
602+ "event_image": null,
603+ "promotion_caption": null,
604+ "is_a_doubleheader": false,
605+ "opponent_history_path": "/sports/football/opponent-history/university-of-connecticut/141",
606+ "display_vsat_indicator": true,
607+ "pac_tickets": null,
608+ "game_program_link": null,
609+ "opponent": {
610+ "id": 141,
611+ "title": "UConn",
612+ "prefix": null,
613+ "website": "http://www.uconnhuskies.com/",
614+ "website_label": "UConn on November 4 TBA",
615+ "location": "Storrs, CT",
616+ "conference": false,
617+ "mascot": "Huskies",
618+ "image": {
619+ "filename": "Husky_.png",
620+ "path": "/images/logos",
621+ "title": "University of Connecticut Logo",
622+ "alt": "University of Connecticut Logo",
623+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Husky_.png"
624+ }
625+ },
626+ "media": {
627+ "tv": null,
628+ "tv_image": "",
629+ "tv_image_link": null,
630+ "radio": null,
631+ "video": null,
632+ "audio": null,
633+ "stats": null,
634+ "tickets": null,
635+ "preview": null,
636+ "gamefiles": null,
637+ "custom_display_fields": [],
638+ "pac_12_networks": null
639+ },
640+ "result": null,
641+ "facility": {
642+ "id": 54,
643+ "title": "Neyland Stadium",
644+ "url": "/facilities/?id=54"
645+ },
646+ "tournament": null,
647+ "tournament_startdate": null,
648+ "galleries": [],
649+ "game_program": "Program"
650+ },
651+ {
652+ "id": 28024,
653+ "date": "2023-11-11T00:00:00",
654+ "enddate": null,
655+ "time": "TBA",
656+ "conference": true,
657+ "location": "Columbia, Mo.",
658+ "location_venue": null,
659+ "location_indicator": "A",
660+ "neutral_hometeam": null,
661+ "at_vs": "at",
662+ "status": "A",
663+ "noplay_text": null,
664+ "type": "R",
665+ "promotion": null,
666+ "promotion_link": null,
667+ "promotion_image_link": null,
668+ "promotion_image": null,
669+ "event_image": null,
670+ "promotion_caption": null,
671+ "is_a_doubleheader": false,
672+ "opponent_history_path": "/sports/football/opponent-history/university-of-missouri/111",
673+ "display_vsat_indicator": true,
674+ "pac_tickets": null,
675+ "game_program_link": null,
676+ "opponent": {
677+ "id": 111,
678+ "title": "Missouri",
679+ "prefix": null,
680+ "website": "http:///www.mutigers.com",
681+ "website_label": "Missouri on November 11 TBA",
682+ "location": "Columbia, MO",
683+ "conference": false,
684+ "mascot": "Tigers",
685+ "image": {
686+ "filename": "mizzou.png",
687+ "path": "/images/logos",
688+ "title": "University of Missouri Logo",
689+ "alt": "University of Missouri Logo",
690+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/mizzou.png"
691+ }
692+ },
693+ "media": {
694+ "tv": null,
695+ "tv_image": "",
696+ "tv_image_link": null,
697+ "radio": null,
698+ "video": null,
699+ "audio": null,
700+ "stats": null,
701+ "tickets": null,
702+ "preview": null,
703+ "gamefiles": null,
704+ "custom_display_fields": [],
705+ "pac_12_networks": null
706+ },
707+ "result": null,
708+ "facility": null,
709+ "tournament": null,
710+ "tournament_startdate": null,
711+ "galleries": [],
712+ "game_program": "Program"
713+ },
714+ {
715+ "id": 28025,
716+ "date": "2023-11-18T00:00:00",
717+ "enddate": null,
718+ "time": "TBA",
719+ "conference": true,
720+ "location": "Knoxville, Tenn.",
721+ "location_venue": null,
722+ "location_indicator": "H",
723+ "neutral_hometeam": null,
724+ "at_vs": "vs",
725+ "status": "A",
726+ "noplay_text": null,
727+ "type": "R",
728+ "promotion": null,
729+ "promotion_link": null,
730+ "promotion_image_link": null,
731+ "promotion_image": null,
732+ "event_image": null,
733+ "promotion_caption": null,
734+ "is_a_doubleheader": false,
735+ "opponent_history_path": "/sports/football/opponent-history/university-of-georgia/22",
736+ "display_vsat_indicator": true,
737+ "pac_tickets": null,
738+ "game_program_link": null,
739+ "opponent": {
740+ "id": 22,
741+ "title": "Georgia",
742+ "prefix": null,
743+ "website": "http://www.georgiadogs.com/",
744+ "website_label": "Georgia on November 18 TBA",
745+ "location": "Athens, Ga.",
746+ "conference": false,
747+ "mascot": "Bulldogs",
748+ "image": {
749+ "filename": "Georgia.png",
750+ "path": "/images/logos",
751+ "title": "University of Georgia Logo",
752+ "alt": "University of Georgia Logo",
753+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Georgia.png"
754+ }
755+ },
756+ "media": {
757+ "tv": null,
758+ "tv_image": "",
759+ "tv_image_link": null,
760+ "radio": null,
761+ "video": null,
762+ "audio": null,
763+ "stats": null,
764+ "tickets": null,
765+ "preview": null,
766+ "gamefiles": null,
767+ "custom_display_fields": [],
768+ "pac_12_networks": null
769+ },
770+ "result": null,
771+ "facility": {
772+ "id": 54,
773+ "title": "Neyland Stadium",
774+ "url": "/facilities/?id=54"
775+ },
776+ "tournament": null,
777+ "tournament_startdate": null,
778+ "galleries": [],
779+ "game_program": "Program"
780+ },
781+ {
782+ "id": 28026,
783+ "date": "2023-11-25T00:00:00",
784+ "enddate": null,
785+ "time": "TBA",
786+ "conference": true,
787+ "location": "Knoxville, Tenn.",
788+ "location_venue": null,
789+ "location_indicator": "H",
790+ "neutral_hometeam": null,
791+ "at_vs": "vs",
792+ "status": "A",
793+ "noplay_text": null,
794+ "type": "R",
795+ "promotion": null,
796+ "promotion_link": null,
797+ "promotion_image_link": null,
798+ "promotion_image": null,
799+ "event_image": null,
800+ "promotion_caption": null,
801+ "is_a_doubleheader": false,
802+ "opponent_history_path": "/sports/football/opponent-history/vanderbilt-university/80",
803+ "display_vsat_indicator": true,
804+ "pac_tickets": null,
805+ "game_program_link": null,
806+ "opponent": {
807+ "id": 80,
808+ "title": "Vanderbilt",
809+ "prefix": null,
810+ "website": "http://www.vucommodores.com/",
811+ "website_label": "Vanderbilt on November 25 TBA",
812+ "location": "Nashville, TN",
813+ "conference": false,
814+ "mascot": "Commodores",
815+ "image": {
816+ "filename": "Vanderbilt.png",
817+ "path": "/images/logos",
818+ "title": "Vanderbilt University Logo",
819+ "alt": "Vanderbilt University Logo",
820+ "fullpath": "https://dudh74xyv196a.cloudfront.net/images/logos/Vanderbilt.png"
821+ }
822+ },
823+ "media": {
824+ "tv": null,
825+ "tv_image": "",
826+ "tv_image_link": null,
827+ "radio": null,
828+ "video": null,
829+ "audio": null,
830+ "stats": null,
831+ "tickets": null,
832+ "preview": null,
833+ "gamefiles": null,
834+ "custom_display_fields": [],
835+ "pac_12_networks": null
836+ },
837+ "result": null,
838+ "facility": {
839+ "id": 54,
840+ "title": "Neyland Stadium",
841+ "url": "/facilities/?id=54"
842+ },
843+ "tournament": null,
844+ "tournament_startdate": null,
845+ "galleries": [],
846+ "game_program": "Program"
847+ }
848+ ],
849+ "display_note_on_top": false,
850+ "is_a_stat_sport": true,
851+ "next_event_enabled": false,
852+ "next_streaming_event_enabled": false,
853+ "pac12_school_id": null,
854+ "redirect_url": null
855+ },
856+ "season": null,
857+ "view": "list",
858+ "loading_stories": true,
859+ "game_filter": "all"
860+}
+64-0src/components/Card.tsx
@@ -0,0 +1,64 @@
1+import React, { useState } from "react";
2+import TimeBlock from "./TimeBlock";
3+import { schedule } from "../assets/schedule.json";
4+import convertMiliseconds from "./convertInterval";
5+const { games } = schedule;
6+
7+const nextGame = () => {
8+ return games[0];
9+};
10+
11+type Props = {
12+ children?: React.ReactNode;
13+};
14+
15+const Card = (props: Props) => {
16+ const game = nextGame();
17+ const date = new Date(game.date);
18+ const time = game.time;
19+ const getDiff = () => {
20+ const now = new Date();
21+ const ms = date.getTime() - now.getTime();
22+ const diff = convertMiliseconds(ms);
23+ document.title = `${diff.d}:${diff.h}:${diff.m}:${diff.s}`;
24+ return diff;
25+ };
26+ const [countdown, setCountdown] = useState(getDiff());
27+
28+ setInterval(() => {
29+ setCountdown(getDiff());
30+ }, 1000);
31+
32+ return (
33+ <div className="h-screen w-screen">
34+ <div className="absolute px-1 mx-auto w-11/12 right-0 left-0 bg-slate-400 top-16 bg-opacity-40 rounded-md shadow-sm">
35+ <div className="flex">
36+ <TimeBlock value={countdown.d} unit="DAYS" />
37+ <TimeBlock value={countdown.h} unit="HOURS" />
38+ <TimeBlock value={countdown.m} unit="MINS" />
39+ <TimeBlock value={countdown.s} unit="SECS" />
40+ </div>
41+ <div className="flex justify-between w-full">
42+ <img
43+ src={game.opponent.image.fullpath}
44+ alt={game.opponent.title}
45+ className="w-16"
46+ />
47+ <div>
48+ <div className="text-center text-xl">
49+ {game.at_vs}{" "}
50+ <span className="text-lg">{game.opponent.title}</span>
51+ </div>
52+ <div className="text-center text-md">
53+ {date.toLocaleDateString() + " - " + time}
54+ </div>
55+ <div className="text-center text-lg">{game.facility?.title}</div>
56+ </div>
57+ <img src="/favicon.ico" alt="Tennessee" className="w-16" />
58+ </div>
59+ </div>
60+ </div>
61+ );
62+};
63+
64+export default Card;
+25-0src/components/Hero.tsx
@@ -0,0 +1,25 @@
1+import React from "react";
2+
3+interface Props {
4+ src: string;
5+ children?: React.ReactNode;
6+ alt?: string;
7+}
8+
9+const Hero = (props: Props) => {
10+ return (
11+ <div className="relative h-screen w-screen">
12+ <video
13+ src={props.src}
14+ className="w-full h-full object-cover"
15+ autoPlay
16+ loop
17+ muted
18+ playsInline
19+ />
20+ <div className="absolute top-0 left-0 h-full">{props?.children}</div>
21+ </div>
22+ );
23+};
24+
25+export default Hero;
+19-0src/components/TimeBlock.tsx
@@ -0,0 +1,19 @@
1+import React from "react";
2+
3+type Props = {
4+ unit: string;
5+ value: number;
6+};
7+
8+const TimeBlock = (props: Props) => {
9+ return (
10+ <div className="w-full my-2 mx-1 bg-slate-400 opacity-90 text-center flex flex-col justify-center rounded-sm">
11+ <div className="text-orange-500 font-mono font-bold text-4xl">
12+ {props.value}
13+ </div>
14+ <div className="text-white font-mono text-xl">{props.unit}</div>
15+ </div>
16+ );
17+};
18+
19+export default TimeBlock;
+16-0src/components/convertInterval.ts
@@ -0,0 +1,16 @@
1+function convertMiliseconds(miliseconds: number) {
2+ var days, hours, minutes, seconds, total_hours, total_minutes, total_seconds;
3+
4+ total_seconds = Math.floor(miliseconds / 1000);
5+ total_minutes = Math.floor(total_seconds / 60);
6+ total_hours = Math.floor(total_minutes / 60);
7+ days = Math.floor(total_hours / 24);
8+
9+ seconds = total_seconds % 60;
10+ minutes = total_minutes % 60;
11+ hours = total_hours % 24;
12+
13+ return { d: days, h: hours, m: minutes, s: seconds };
14+}
15+
16+export default convertMiliseconds;
+3-0src/index.css
@@ -0,0 +1,3 @@
1+@tailwind base;
2+@tailwind components;
3+@tailwind utilities;
+10-0src/main.tsx
@@ -0,0 +1,10 @@
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") as HTMLElement).render(
7+ <>
8+ <App />
9+ </>
10+);
+2-0src/vite-env.d.ts
@@ -0,0 +1,2 @@
1+/// <reference types="vite/client" />
2+declare module "react-helmet";
+8-0tailwind.config.cjs
@@ -0,0 +1,8 @@
1+/** @type {import('tailwindcss').Config} */
2+module.exports = {
3+ content: ["./src/**/*.{html,js,ts,tsx}"],
4+ theme: {
5+ extend: {},
6+ },
7+ plugins: [],
8+};
+21-0tsconfig.json
@@ -0,0 +1,21 @@
1+{
2+ "compilerOptions": {
3+ "target": "ESNext",
4+ "useDefineForClassFields": true,
5+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
6+ "allowJs": false,
7+ "skipLibCheck": true,
8+ "esModuleInterop": false,
9+ "allowSyntheticDefaultImports": true,
10+ "strict": true,
11+ "forceConsistentCasingInFileNames": true,
12+ "module": "ESNext",
13+ "moduleResolution": "Node",
14+ "resolveJsonModule": true,
15+ "isolatedModules": true,
16+ "noEmit": true,
17+ "jsx": "react-jsx"
18+ },
19+ "include": ["src"],
20+ "references": [{ "path": "./tsconfig.node.json" }]
21+}
+9-0tsconfig.node.json
@@ -0,0 +1,9 @@
1+{
2+ "compilerOptions": {
3+ "composite": true,
4+ "module": "ESNext",
5+ "moduleResolution": "Node",
6+ "allowSyntheticDefaultImports": true
7+ },
8+ "include": ["vite.config.ts"]
9+}
+7-0vite.config.ts
@@ -0,0 +1,7 @@
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+})