initial (sorta) commit

This commit is contained in:
scarlett kadan 2023-08-28 09:35:53 -05:00
commit b74b4afe26
64 changed files with 44211 additions and 0 deletions

25
build/asset-manifest.json Normal file
View File

@ -0,0 +1,25 @@
{
"files": {
"main.css": "/static/css/main.743cd8de.css",
"main.js": "/static/js/main.e4691c9e.js",
"static/js/787.d8522671.chunk.js": "/static/js/787.d8522671.chunk.js",
"static/media/video.mp4": "/static/media/video.5e8658c8eba15fe43d62.mp4",
"static/media/fenrir.png": "/static/media/fenrir.c36a65b36a574bef476e.png",
"static/media/error.jpg": "/static/media/error.627d84472392a479d18d.jpg",
"static/media/LeagueSpartan-ExtraBold.ttf": "/static/media/LeagueSpartan-ExtraBold.313960b9ece03f269643.ttf",
"static/media/LeagueSpartan-Medium.ttf": "/static/media/LeagueSpartan-Medium.e855e0cd01fed78be96f.ttf",
"static/media/github.svg": "/static/media/github.3367ea62e04dfe3c6fad6a88f90ee1ec.svg",
"static/media/facebook.svg": "/static/media/facebook.c524426ad554fc45940d657e219663c9.svg",
"static/media/discord.svg": "/static/media/discord.cec9e1a200bfbe88c1d3a787b0ede95f.svg",
"static/media/instagram.svg": "/static/media/instagram.eca0902ae08f6ebdf1f23da142658f92.svg",
"static/media/twitter.svg": "/static/media/twitter.0ad7f5518b1249fb5ec229971e13807f.svg",
"index.html": "/index.html",
"main.743cd8de.css.map": "/static/css/main.743cd8de.css.map",
"main.e4691c9e.js.map": "/static/js/main.e4691c9e.js.map",
"787.d8522671.chunk.js.map": "/static/js/787.d8522671.chunk.js.map"
},
"entrypoints": [
"static/css/main.743cd8de.css",
"static/js/main.e4691c9e.js"
]
}

1
build/index.html Normal file
View File

@ -0,0 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>ITR - Loading</title><script defer="defer" src="/static/js/main.e4691c9e.js"></script><link href="/static/css/main.743cd8de.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

8
build/manifest.json Normal file
View File

@ -0,0 +1,8 @@
{
"short_name": "ITR",
"name": "ITR React App",
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

3
build/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
"use strict";(self.webpackChunkitr=self.webpackChunkitr||[]).push([[787],{787:function(e,t,n){n.r(t),n.d(t,{getCLS:function(){return y},getFCP:function(){return g},getFID:function(){return C},getLCP:function(){return P},getTTFB:function(){return D}});var i,r,a,o,u=function(e,t){return{name:e,value:void 0===t?-1:t,delta:0,entries:[],id:"v2-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12)}},c=function(e,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){if("first-input"===e&&!("PerformanceEventTiming"in self))return;var n=new PerformanceObserver((function(e){return e.getEntries().map(t)}));return n.observe({type:e,buffered:!0}),n}}catch(e){}},f=function(e,t){var n=function n(i){"pagehide"!==i.type&&"hidden"!==document.visibilityState||(e(i),t&&(removeEventListener("visibilitychange",n,!0),removeEventListener("pagehide",n,!0)))};addEventListener("visibilitychange",n,!0),addEventListener("pagehide",n,!0)},s=function(e){addEventListener("pageshow",(function(t){t.persisted&&e(t)}),!0)},m=function(e,t,n){var i;return function(r){t.value>=0&&(r||n)&&(t.delta=t.value-(i||0),(t.delta||void 0===i)&&(i=t.value,e(t)))}},v=-1,p=function(){return"hidden"===document.visibilityState?0:1/0},d=function(){f((function(e){var t=e.timeStamp;v=t}),!0)},l=function(){return v<0&&(v=p(),d(),s((function(){setTimeout((function(){v=p(),d()}),0)}))),{get firstHiddenTime(){return v}}},g=function(e,t){var n,i=l(),r=u("FCP"),a=function(e){"first-contentful-paint"===e.name&&(f&&f.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=e.startTime,r.entries.push(e),n(!0)))},o=window.performance&&performance.getEntriesByName&&performance.getEntriesByName("first-contentful-paint")[0],f=o?null:c("paint",a);(o||f)&&(n=m(e,r,t),o&&a(o),s((function(i){r=u("FCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,n(!0)}))}))})))},h=!1,T=-1,y=function(e,t){h||(g((function(e){T=e.value})),h=!0);var n,i=function(t){T>-1&&e(t)},r=u("CLS",0),a=0,o=[],v=function(e){if(!e.hadRecentInput){var t=o[0],i=o[o.length-1];a&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(a+=e.value,o.push(e)):(a=e.value,o=[e]),a>r.value&&(r.value=a,r.entries=o,n())}},p=c("layout-shift",v);p&&(n=m(i,r,t),f((function(){p.takeRecords().map(v),n(!0)})),s((function(){a=0,T=-1,r=u("CLS",0),n=m(i,r,t)})))},E={passive:!0,capture:!0},w=new Date,L=function(e,t){i||(i=t,r=e,a=new Date,F(removeEventListener),S())},S=function(){if(r>=0&&r<a-w){var e={entryType:"first-input",name:i.type,target:i.target,cancelable:i.cancelable,startTime:i.timeStamp,processingStart:i.timeStamp+r};o.forEach((function(t){t(e)})),o=[]}},b=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var n=function(){L(e,t),r()},i=function(){r()},r=function(){removeEventListener("pointerup",n,E),removeEventListener("pointercancel",i,E)};addEventListener("pointerup",n,E),addEventListener("pointercancel",i,E)}(t,e):L(t,e)}},F=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,b,E)}))},C=function(e,t){var n,a=l(),v=u("FID"),p=function(e){e.startTime<a.firstHiddenTime&&(v.value=e.processingStart-e.startTime,v.entries.push(e),n(!0))},d=c("first-input",p);n=m(e,v,t),d&&f((function(){d.takeRecords().map(p),d.disconnect()}),!0),d&&s((function(){var a;v=u("FID"),n=m(e,v,t),o=[],r=-1,i=null,F(addEventListener),a=p,o.push(a),S()}))},k={},P=function(e,t){var n,i=l(),r=u("LCP"),a=function(e){var t=e.startTime;t<i.firstHiddenTime&&(r.value=t,r.entries.push(e),n())},o=c("largest-contentful-paint",a);if(o){n=m(e,r,t);var v=function(){k[r.id]||(o.takeRecords().map(a),o.disconnect(),k[r.id]=!0,n(!0))};["keydown","click"].forEach((function(e){addEventListener(e,v,{once:!0,capture:!0})})),f(v,!0),s((function(i){r=u("LCP"),n=m(e,r,t),requestAnimationFrame((function(){requestAnimationFrame((function(){r.value=performance.now()-i.timeStamp,k[r.id]=!0,n(!0)}))}))}))}},D=function(e){var t,n=u("TTFB");t=function(){try{var t=performance.getEntriesByType("navigation")[0]||function(){var e=performance.timing,t={entryType:"navigation",startTime:0};for(var n in e)"navigationStart"!==n&&"toJSON"!==n&&(t[n]=Math.max(e[n]-e.navigationStart,0));return t}();if(n.value=n.delta=t.responseStart,n.value<0||n.value>performance.now())return;n.entries=[t],e(n)}catch(e){}},"complete"===document.readyState?setTimeout(t,0):addEventListener("load",(function(){return setTimeout(t,0)}))}}}]);
//# sourceMappingURL=787.d8522671.chunk.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,74 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
/**
* @license React
* react-dom.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react-jsx-runtime.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* react.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @license React
* scheduler.production.min.js
*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/**
* @remix-run/router v1.3.2
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
/**
* React Router DOM v6.8.1
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/
/**
* React Router v6.8.1
*
* Copyright (c) Remix Software Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE.md file in the root directory of this source tree.
*
* @license MIT
*/

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,28 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M3000 6195 c-309 -68 -597 -158 -877 -275 l-152 -63 -42 -66 c-366
-568 -599 -1105 -728 -1681 -79 -351 -109 -599 -118 -962 -6 -252 10 -612 28
-634 16 -20 267 -187 403 -269 193 -116 468 -252 674 -334 215 -85 393 -144
401 -133 92 127 297 460 304 495 1 4 -34 23 -78 41 -197 81 -406 190 -404 210
0 6 27 30 59 54 l59 43 42 -22 c54 -27 269 -109 391 -148 585 -187 1258 -211
1855 -66 172 42 362 105 542 179 l133 55 57 -45 c31 -26 57 -49 59 -53 3 -10
-268 -148 -394 -201 l-102 -42 66 -117 c68 -122 223 -361 245 -379 10 -8 43
-1 127 27 306 103 684 275 935 426 97 59 361 232 407 268 28 22 41 256 35 616
-5 318 -17 458 -62 726 -110 658 -364 1301 -747 1891 l-78 121 -137 58 c-311
131 -606 221 -947 291 -113 23 -119 23 -132 7 -7 -10 -44 -82 -81 -161 -58
-122 -71 -142 -88 -138 -186 44 -849 57 -1130 23 -82 -10 -158 -19 -168 -20
-14 -2 -36 33 -96 153 -42 85 -84 156 -92 157 -7 1 -84 -14 -169 -32z m155
-1839 c180 -48 338 -216 390 -417 81 -307 -103 -662 -380 -734 -128 -33 -284
-11 -385 53 -192 122 -306 375 -271 601 29 193 113 333 260 434 102 70 262 96
386 63z m1968 -6 c163 -51 297 -191 359 -375 19 -59 23 -89 22 -195 0 -107 -4
-136 -27 -205 -61 -184 -203 -327 -370 -371 -66 -18 -187 -18 -253 0 -179 47
-331 215 -384 422 -63 246 35 522 235 659 120 83 280 108 418 65z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M1077 7210 c-117 -20 -224 -107 -269 -218 l-23 -57 0 -2935 0 -2935
24 -60 c33 -81 115 -163 196 -196 l60 -24 1573 -3 1572 -2 0 1242 0 1243 -420
-3 -420 -2 0 500 0 500 419 -2 419 -3 5 460 c5 495 9 537 63 715 15 47 27 90
28 95 1 6 10 24 19 41 9 17 13 34 10 38 -4 3 -1 6 6 6 7 0 9 5 6 10 -3 6 -1
10 5 10 6 0 8 5 5 10 -3 6 -1 10 5 10 6 0 8 5 5 10 -3 6 -1 10 6 10 7 0 10 3
6 6 -3 3 3 15 13 27 11 11 17 23 15 27 -3 5 2 11 11 14 8 3 13 10 10 15 -3 5
1 12 10 15 9 4 14 9 11 12 -3 3 6 17 21 31 15 13 22 22 15 19 -6 -4 25 30 70
76 45 45 86 82 90 82 5 1 14 9 21 18 7 10 16 15 19 11 4 -3 9 2 13 11 3 9 12
16 20 16 8 0 14 5 14 10 0 6 7 10 15 10 8 0 15 5 15 11 0 5 4 7 10 4 6 -3 10
-1 10 4 0 6 3 10 8 9 4 -1 27 9 52 22 25 13 50 25 55 26 6 1 42 14 80 29 39
15 77 28 85 30 8 2 51 10 95 20 149 31 293 37 575 25 146 -6 308 -15 360 -20
52 -5 105 -10 118 -10 l22 0 0 -444 0 -444 -342 -4 c-322 -4 -347 -6 -410 -26
-37 -13 -74 -29 -82 -38 -8 -8 -18 -14 -21 -14 -3 0 -22 -15 -42 -35 -20 -19
-32 -35 -28 -35 5 0 0 -7 -11 -15 -10 -8 -14 -15 -9 -15 6 0 4 -4 -2 -8 -7 -4
-14 -17 -16 -27 -1 -11 -5 -25 -9 -30 -18 -30 -28 -201 -28 -498 l0 -332 480
3 480 2 0 -24 c0 -13 -27 -232 -60 -487 -33 -255 -60 -470 -60 -477 0 -10 -85
-12 -420 -10 l-420 3 0 -1243 0 -1243 853 3 852 3 60 24 c81 33 163 115 196
196 l24 60 0 2935 0 2935 -24 60 c-33 81 -115 163 -196 196 l-60 24 -2905 1
c-1598 1 -2927 -2 -2953 -6z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB

View File

@ -0,0 +1,31 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M3692 7010 c-498 -52 -992 -234 -1407 -519 -326 -223 -654 -569 -860
-905 -212 -347 -342 -700 -416 -1136 -21 -121 -23 -168 -24 -450 0 -333 10
-434 66 -680 204 -883 813 -1644 1634 -2040 207 -100 346 -150 414 -150 77 0
106 12 131 52 19 31 20 51 20 317 l0 284 -47 -7 c-289 -41 -487 -21 -653 65
-78 40 -105 60 -172 125 -71 70 -115 135 -158 234 -78 179 -186 329 -293 405
-34 25 -79 57 -100 72 -108 78 -78 144 66 144 168 0 349 -112 468 -289 107
-161 173 -228 275 -280 145 -74 343 -73 552 1 51 18 64 27 68 47 33 161 75
255 145 328 23 23 39 45 36 48 -2 3 -36 10 -73 15 -207 29 -445 98 -595 173
-381 191 -590 499 -666 982 -24 156 -24 460 0 572 46 210 127 380 258 543 l21
27 -20 58 c-35 99 -45 186 -39 343 5 145 30 278 72 378 l15 36 108 -5 c84 -4
128 -12 202 -37 116 -39 329 -142 430 -210 41 -28 84 -51 95 -51 11 0 58 9
105 21 228 54 562 83 806 68 169 -10 377 -38 504 -68 47 -12 93 -21 103 -21
10 0 62 27 116 60 125 77 323 171 431 205 59 19 116 28 187 32 l103 6 15 -36
c42 -100 67 -233 72 -378 6 -155 -3 -232 -37 -338 l-21 -62 64 -80 c103 -128
175 -290 214 -476 25 -121 24 -442 -1 -598 -54 -340 -167 -577 -360 -763 -139
-134 -289 -220 -503 -290 -107 -36 -314 -82 -437 -97 l-48 -7 20 -21 c35 -39
90 -133 116 -198 57 -142 59 -173 65 -724 6 -554 5 -539 64 -575 59 -37 89
-31 352 70 152 59 422 212 605 344 256 184 523 460 712 736 454 662 625 1520
463 2329 -25 124 -30 143 -75 291 -192 628 -628 1209 -1188 1583 -373 249
-767 401 -1232 478 -100 17 -182 21 -405 24 -154 2 -317 0 -363 -5z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M2465 7213 c-778 -51 -1420 -574 -1619 -1317 -64 -238 -61 -152 -61
-1896 0 -1744 -3 -1658 61 -1896 165 -616 641 -1093 1255 -1257 242 -65 153
-62 1899 -62 1746 0 1657 -3 1899 62 613 164 1090 641 1254 1254 65 242 62
153 62 1899 0 1746 3 1657 -62 1899 -162 606 -634 1083 -1239 1251 -43 12
-131 31 -194 43 -113 21 -136 21 -1660 22 -850 1 -1567 0 -1595 -2z m3172
-578 c327 -53 627 -246 808 -519 104 -158 161 -303 190 -479 22 -138 22 -3136
0 -3274 -83 -510 -488 -915 -998 -998 -138 -22 -3136 -22 -3274 0 -510 83
-915 488 -998 998 -22 138 -22 3136 0 3274 82 506 486 913 989 997 126 22
3152 22 3283 1z" />
<path
d="M5620 6121 c-259 -70 -377 -353 -250 -600 74 -146 285 -239 448 -197
199 51 322 204 322 401 0 193 -124 350 -317 400 -73 19 -122 18 -203 -4z" />
<path
d="M3890 5649 c-644 -44 -1193 -449 -1434 -1057 -96 -242 -133 -583 -91
-837 61 -365 203 -650 454 -908 421 -433 1028 -598 1618 -441 555 148 1009
602 1157 1157 78 293 78 581 0 874 -121 454 -456 854 -884 1055 -259 122 -543
176 -820 157z m295 -575 c226 -39 424 -142 586 -304 425 -425 425 -1115 -1
-1540 -295 -296 -733 -396 -1129 -259 -566 196 -867 819 -670 1388 173 501
692 806 1214 715z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M5170 6790 c-323 -40 -610 -179 -835 -405 -337 -337 -471 -780 -389
-1277 l7 -37 -69 5 c-924 74 -1737 421 -2416 1030 -113 101 -279 274 -374 388
l-41 49 -45 -94 c-96 -197 -138 -386 -138 -614 0 -352 114 -659 345 -928 60
-70 220 -212 252 -224 30 -12 9 -20 -40 -16 -160 13 -339 61 -485 129 l-94 44
7 -93 c10 -138 32 -250 70 -364 72 -215 177 -385 340 -549 176 -177 375 -295
608 -361 54 -15 92 -30 85 -34 -7 -4 -56 -14 -108 -24 -106 -20 -347 -23 -440
-7 -30 6 -57 8 -58 7 -7 -6 36 -112 79 -197 150 -298 412 -542 720 -667 150
-61 308 -97 442 -102 31 -1 57 -5 57 -9 0 -9 -136 -106 -245 -175 -127 -80
-360 -194 -511 -250 -165 -60 -393 -118 -570 -145 -171 -26 -469 -36 -619 -22
-60 6 -111 9 -113 8 -7 -7 233 -142 383 -216 592 -290 1231 -427 1895 -406
1013 31 1890 386 2595 1050 616 580 1054 1399 1209 2261 40 220 57 402 62 645
l4 225 90 71 c203 161 374 338 531 550 38 51 69 95 69 97 0 3 -35 -10 -78 -28
-105 -44 -282 -101 -408 -131 -111 -26 -294 -57 -300 -51 -2 2 29 26 69 53
148 100 326 294 413 451 39 69 114 236 114 253 0 5 -55 -20 -123 -55 -212
-111 -558 -236 -720 -260 l-47 -7 -73 69 c-180 171 -434 298 -696 347 -104 20
-312 28 -411 16z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

42099
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

49
package.json Normal file
View File

@ -0,0 +1,49 @@
{
"name": "itr",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"animate.css": "^4.1.1",
"axios": "^1.3.2",
"nodemon": "^2.0.20",
"nth-check": "^2.1.1",
"react": "^18.2.0",
"react-animation-on-scroll": "^5.1.0",
"react-dom": "^18.2.0",
"react-router-dom": "^6.8.1",
"react-scripts": "^5.0.1",
"react-scroll": "^1.8.9",
"react-spring": "^9.6.1",
"react-toastify": "^9.1.1",
"sass": "^1.58.0",
"uuid": "^9.0.0",
"web-vitals": "^2.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}

42
public/index.html Normal file
View File

@ -0,0 +1,42 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<!--
manifest.json provides metadata used when your web app is installed on a
user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
-->
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<!--
Notice the use of %PUBLIC_URL% in the tags above.
It will be replaced with the URL of the `public` folder during the build.
Only files inside the `public` folder can be referenced from the HTML.
Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>ITR - Loading</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
<div id="root"></div>
<!--
This HTML file is a template.
If you open it directly in the browser, you will see an empty page.
You can add webfonts, meta tags, or analytics to this file.
The build step will place the bundled scripts into the <body> tag.
To begin the development, run `npm start` or `yarn start`.
To create a production bundle, use `npm run build` or `yarn build`.
-->
</body>
</html>

8
public/manifest.json Normal file
View File

@ -0,0 +1,8 @@
{
"short_name": "ITR",
"name": "ITR React App",
"start_url": ".",
"display": "standalone",
"theme_color": "#000000",
"background_color": "#ffffff"
}

3
public/robots.txt Normal file
View File

@ -0,0 +1,3 @@
# https://www.robotstxt.org/robotstxt.html
User-agent: *
Disallow:

Binary file not shown.

Binary file not shown.

BIN
src/assets/pics/error.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
src/assets/pics/fenrir.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 KiB

View File

@ -0,0 +1,143 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.about {
background-color: #232323;
width: 100%;
min-height: 100vh;
height: auto;
opacity: 100%;
overflow-x: hidden;
display: flex;
-webkit-animation: fade 0.9s ease-in;
-moz-animation: fade 0.9s ease-in;
-ms-animation: fade 0.9s ease-in;
-o-animation: fade 0.9s ease-in;
animation: fade 0.9s ease-in;
background: linear-gradient(#3b3b3b, #1a1a1a);
}
.about__content {
position: relative;
margin-top: 70px;
width: 100%;
height: auto;
overflow: hidden;
}
.about__content__main {
width: 100vw;
height: auto;
margin-top: 5vh;
display: flex;
justify-content: center;
align-items: center;
}
.about__content__main__container {
padding: 10px 10px 20px 10px;
border-radius: 10px;
background-color: rgb(66, 66, 66);
width: 80vw;
height: auto;
display: flex;
flex-direction: column;
transition: 0.3s;
cursor: default;
}
.about__content__main__container h1,
.about__content__blocks_block h1 {
color: white;
opacity: 100%;
font-size: 40px;
font-weight: bold;
font-family: "itrFont";
padding: 10px;
}
.about__content__main__container span,
.about__content__blocks_block span {
color: rgb(238, 238, 238);
opacity: 100%;
font-size: 20px;
font-family: "itrFontMedium";
padding: 10px;
line-height: 32px;
border-radius: 10px;
}
.about__content__blocks_block span {
margin-bottom: 30px;
}
.about__content__blocks {
margin-top: 6vh;
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: auto;
margin-right: calc(-1 * (100vw - 100%));
}
.about__content__blocks_block {
position: relative;
border-radius: 10px;
background-color: rgb(66, 66, 66);
width: 25vw;
margin-left: 3vw;
margin-right: 3vw;
min-height: 38vh;
height: auto;
padding: 10px;
display: flex;
flex-direction: column;
transition: 0.3s;
cursor: pointer;
}
.about__content__blocks_block p {
position: absolute;
bottom: 0;
color: rgb(136, 136, 136);
opacity: 100%;
font-size: 20px;
font-family: "itrFontMedium";
padding: 10px;
line-height: 32px;
border-radius: 10px;
}
.about__content__blocks_block:hover,
.about__content__main__container:hover {
background-color: #666666;
}
@media screen and (max-width: 1550px) {
.about__content__blocks {
flex-direction: column;
}
.about__content__blocks_block {
margin-bottom: 6vh;
width: 80vw;
}
.about__content__blocks_block h1 {
font-size: 35px;
}
}
@keyframes fade {
0% {
opacity: 0;
}
}

View File

@ -0,0 +1,18 @@
* {
padding: 0px;
margin: 0px;
background-color: transparent;
}
.container {
padding: 0px;
margin: 0px;
display: flex;
flex-direction: column;
height: 100%;
background-color: #232323;
}
html {
overflow-y: scroll;
}

View File

@ -0,0 +1,41 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.awards {
position: relative;
width: 100vw;
height: 100vh;
background-color: rgb(54, 54, 54);
display: flex;
justify-content: center;
align-items: center;
}
.awards__content {
background-color: red;
width: 80%;
height: auto;
padding: 10px;
}
.awards__content__title {
font-weight: bold;
font-size: 300%;
color: rgb(255, 255, 255);
font-family: "itrFont";
margin-bottom: 1%;
}
.awards__content__list_item {
border-top: 1px solid black;
border-bottom: 1px solid black;
width: 100%;
height: 100px;
}

View File

@ -0,0 +1,78 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.bubble {
color: rgb(255, 255, 255);
font-family: "itrFontMedium";
display: flex;
flex-direction: column;
position: relative;
padding-bottom: 50px;
}
.bubble_main {
width: 40vw;
}
.bubble_main h1 {
font-weight: bold;
font-size: 300%;
border-left: 5px solid rgb(255, 142, 142);
padding-left: 15px;
border-top-left-radius: 10px;
margin-bottom: -5px;
}
.bubble_main h2 {
font-weight: bold;
font-size: 400%;
border-left: 5px solid rgb(255, 142, 142);
padding-left: 15px;
border-bottom-left-radius: 10px;
margin-bottom: 25px;
}
.bubble_main div {
height: auto;
display: flex;
overflow-wrap: break-word;
font-weight: normal;
font-size: 150%;
color: #d6d6d6;
background-color: rgb(59, 59, 59);
border-radius: 10px;
line-height: 35px;
padding: 15px;
flex-direction: column;
}
.bubble_main a {
color: rgb(141, 238, 255);
}
@media screen and (max-width: 650px) {
// Phones
.bubble_main {
width: 80vw;
}
.bubble_main h1 {
font-size: 150%;
}
.bubble_main h2 {
font-size: 250%;
}
.bubble_main div {
font-size: 100%;
line-height: 25px;
}
}

View File

@ -0,0 +1,124 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
@media screen and (max-width: 650px) {
.c {
position: fixed;
width: 100%;
height: 100%;
background: linear-gradient(#353535, #232323);
z-index: 10000000;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
// animation: slide .6s ease;
// animation-iteration-count: 1;
}
.dd {
display: flex;
flex-direction: column;
width: 95%;
margin-top: 10%;
}
li {
margin-bottom: 10%;
margin-left: 8px;
}
.dd__link {
color: white;
font-size: 40px;
padding: 0;
width: 100%;
display: flex;
}
.dd__link_label {
position: relative;
width: 90%;
cursor: pointer;
}
.dd__link_arrow {
text-align: center;
color: white;
padding-top: 7px;
width: 10%;
font-size: 30px;
cursor: pointer;
opacity: 0%;
transition: 0.2s;
}
.dd__link_arrow:hover:focus {
opacity: 100%;
}
.dd__link_label:hover + .dd__link_arrow {
opacity: 100%;
}
.header {
margin-top: 10px;
display: inline-block;
flex-direction: row;
width: 90%;
}
.header__text {
color: white;
font-size: 50px;
font-family: "itrFont";
}
.header__x {
color: white;
font-size: 25px;
font-family: "itrFont";
border: none;
float: right;
margin-top: 13px;
margin-right: 5px;
cursor: pointer;
}
}
.slideIn{
animation: slideIn .6s ease;
}
.slideOut{
animation: slideOut .6s ease;
}
@keyframes slideIn {
0% {
margin-top: 100vh;
opacity: 0%;
}
100% {
margin-top: 0vh;
opacity: 100%;
}
}
@keyframes slideOut {
0% {
margin-top: 0vh;
opacity: 100%;
}
100% {
margin-top: 100vh;
opacity: 0%;
}
}

View File

@ -0,0 +1,12 @@
.error {
background-color: #232323;
width: 100%;
height: calc(100vh - 166px);
overflow: hidden;
display: flex;
}
.error__photo {
width: 100%;
min-width: 900px;
}

View File

@ -0,0 +1,105 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.footer {
position: relative;
background-color: #232323;
bottom: 0px;
width: 100%;
height: 150px;
overflow: hidden;
border-top: 1px solid rgb(46, 46, 46);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding-top: 15px;
}
.footer__links {
margin-right: 0px;
width: 100vw;
height: 6vh;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
.footer__links_svg {
width: 40px;
margin-left: 0.8vw;
margin-right: 0.8vw;
filter: invert(100%) sepia(10%) saturate(1000%) hue-rotate(10deg)
brightness(100%) contrast(100%);
opacity: 20%;
transition: 0.3s;
}
.footer__links_svg:hover {
opacity: 50%;
}
.footer__toes {
display: flex;
width: 100vw;
height: 100px;
justify-content: center;
align-items: center;
}
.footer__toes_logo {
color: rgb(197, 197, 197);
text-decoration: none;
font-size: 50px;
font-family: "itrFont";
transition: 0.3s;
text-align: center;
margin-left: 30px;
margin-right: 30px;
text-align: center;
padding-left: 5px;
}
.footer__toes_logo:hover {
color: white;
}
.footer__toes__links_left,
.footer__toes__links_right {
margin-bottom: 9px;
margin-bottom: 9px;
}
@media screen and (max-width: 650px) {
// Phones
.footer__links_svg {
width: 10vw;
background-color: transparent;
margin-left: -4vw;
margin-right: -4vw;
}
.footer__toes {
zoom: 80%;
}
.footer__toes_logo {
font-size: 40px;
font-family: "itrFont";
transition: 0.3s;
padding-left: 5px;
}
.footer__toes__links_left,
.footer__toes__links_right {
visibility: hidden;
}
}

View File

@ -0,0 +1,157 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.home {
width: 100%;
opacity: 100%;
-webkit-animation: fade 0.9s ease-in;
-moz-animation: fade 0.9s ease-in;
-ms-animation: fade 0.9s ease-in;
-o-animation: fade 0.9s ease-in;
animation: fade 0.9s ease-in;
}
.home__content__panel {
background-color: transparent;
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
overflow: hidden;
}
.home__content__panel__title {
position: absolute;
color: white;
text-align: center;
font-size: 500%;
font-family: "itrFont";
animation: textSlide 1s ease;
animation-iteration-count: 1;
opacity: 100%;
width: 100%;
padding-top: 20px;
padding-bottom: 10px;
letter-spacing: 5px;
filter: drop-shadow(0 0 0.75rem rgb(77, 77, 77));
z-index: 1;
}
.home__content__panel__button {
position: absolute;
color: white;
text-align: center;
font-size: 300%;
animation: textSlide 1s ease, textBreathe 10s ease;
animation-iteration-count: 1, infinite;
opacity: 100%;
filter: drop-shadow(0 0 0.75rem rgb(77, 77, 77));
z-index: 1;
margin-top: 70vh;
border: none;
transition: 0.3s;
cursor: pointer;
overflow: hidden;
}
.home__content__panel__button:hover {
font-size: 370%;
}
.home__content__info {
min-height: 100vh;
height: auto;
width: 100%;
margin: 0px;
padding: 0px;
background: linear-gradient(#353535, #232323);
}
.home__content__info__image {
position: absolute;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
right: 0;
margin-top: 20vh;
width: 45vw;
height: 40vw;
}
.home__content__info__image img {
margin-right: 5vw;
width: 30vw;
animation: glow;
animation-duration: 1s;
animation-timing-function: ease;
animation-delay: 2s;
animation-fill-mode: forwards;
}
@media screen and (max-width: 912px) {
// Tablets
.home__content__panel__video {
zoom: 130%;
}
}
@media screen and (max-width: 650px) {
// Phones
.home__content__info__image {
opacity: 0%;
}
.home__content__panel__title {
color: rgb(255, 255, 255);
font-size: 250%;
padding-top: 20px;
padding-bottom: 10px;
letter-spacing: 5px;
filter: drop-shadow(0 0 0.75rem rgb(77, 77, 77));
z-index: 1;
}
.home__content__panel__button {
margin-top: 80vh;
}
.home__content__panel__video {
zoom: 100%;
}
}
// Animations
@keyframes glow {
0% {
filter: drop-shadow(0vw 0vw 0vw #ff6767c0);
}
100% {
filter: drop-shadow(0vw 0vw 3vw #ff6767c0);
}
}
@keyframes textSlide {
0% {
margin-top: 50vw;
}
0% {
opacity: 0%;
}
}
@keyframes fade {
0% {
opacity: 0;
}
}

View File

@ -0,0 +1,203 @@
@font-face {
font-family: itrFont;
src: url(../font/LeagueSpartan-ExtraBold.ttf);
}
@font-face {
font-family: itrFontMedium;
src: url(../font/LeagueSpartan-Medium.ttf);
}
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
height: 70px;
background-color: transparent;
position: fixed;
width: 100%;
overflow-y: hidden;
transition: 0.5s;
z-index: 1000;
}
.navbar__logotext {
color: white;
font-size: 50px;
font-family: "itrFont";
margin-top: 6px;
margin-left: 50px;
transition: 0.5s;
background: linear-gradient(
to right,
#ff0000,
#ff7300,
#fffb00,
#48ff00,
#00ffd5,
#002bff,
#7a00ff,
#ff00c8,
#ff0000
);
-webkit-background-clip: text;
background-clip: text;
animation: navbar__logotext 6s ease-in-out infinite;
background-size: 400% 100%;
cursor: pointer;
}
#logo {
text-decoration: none;
}
.navbar__logotext:hover {
color: transparent;
}
@keyframes navbar__logotext {
0%,
100% {
background-position: 0 0;
}
50% {
background-position: 100% 0;
}
}
li {
display: inline;
}
li a {
color: rgb(216, 216, 216);
text-decoration: none;
font-family: "itrFontMedium";
font-size: 20px;
margin-left: 3px;
margin-right: 3px;
padding-left: 20px;
padding-right: 20px;
padding-top: 5px;
padding-bottom: 5px;
transition: 0.3s;
}
li a:hover {
color: white;
}
.nav__placeholder {
padding: 10px;
width: 70px;
height: 20px;
border: none;
outline: none;
background: transparent;
position: relative;
z-index: 0;
border-radius: 10px;
margin-right: 50px;
}
.nav__login {
padding: 10px;
text-decoration: none;
font-size: 20px;
text-align: center;
font-family: "itrFontMedium";
width: 70px;
height: 20px;
border: none;
outline: none;
color: #ffffff;
background: #111;
cursor: pointer;
position: relative;
z-index: 0;
border-radius: 10px;
margin-right: 50px;
}
.nav__login::before {
content: "";
background: linear-gradient(
to right,
#ff0000,
#ff7300,
#fffb00,
#48ff00,
#00ffd5,
#002bff,
#7a00ff,
#ff00c8,
#ff0000
);
position: absolute;
top: -2px;
left: -2px;
background-size: 400%;
z-index: -1;
width: calc(100% + 4px);
height: calc(100% + 4px);
animation: glow 30s linear infinite;
opacity: 0;
transition: opacity 0.3s ease-in-out;
border-radius: 10px;
}
@keyframes glow {
0% {
background-position: 0 0;
}
50% {
background-position: 400% 0;
}
100% {
background-position: 0 0;
}
}
.nav__login:active {
color: #000;
}
.nav__login:active:after {
background: transparent;
}
.nav__login:hover:before {
opacity: 1;
}
.navbar__hamburger {
display: none;
}
@media screen and (max-width: 912px) {
// Tablets
}
@media screen and (max-width: 650px) {
// Phones
.navbar__logotext {
margin-top: 6px;
margin-left: 20px;
}
ul {
display: none;
}
.navbar__hamburger {
display: flex;
flex-direction: column;
margin-right: 20px;
cursor: pointer;
}
.navbar__hamburger_line {
background-color: rgb(255, 255, 255);
width: 30px;
height: 3px;
margin: 2px;
border: none;
border-radius: 10px;
}
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M3000 6195 c-309 -68 -597 -158 -877 -275 l-152 -63 -42 -66 c-366
-568 -599 -1105 -728 -1681 -79 -351 -109 -599 -118 -962 -6 -252 10 -612 28
-634 16 -20 267 -187 403 -269 193 -116 468 -252 674 -334 215 -85 393 -144
401 -133 92 127 297 460 304 495 1 4 -34 23 -78 41 -197 81 -406 190 -404 210
0 6 27 30 59 54 l59 43 42 -22 c54 -27 269 -109 391 -148 585 -187 1258 -211
1855 -66 172 42 362 105 542 179 l133 55 57 -45 c31 -26 57 -49 59 -53 3 -10
-268 -148 -394 -201 l-102 -42 66 -117 c68 -122 223 -361 245 -379 10 -8 43
-1 127 27 306 103 684 275 935 426 97 59 361 232 407 268 28 22 41 256 35 616
-5 318 -17 458 -62 726 -110 658 -364 1301 -747 1891 l-78 121 -137 58 c-311
131 -606 221 -947 291 -113 23 -119 23 -132 7 -7 -10 -44 -82 -81 -161 -58
-122 -71 -142 -88 -138 -186 44 -849 57 -1130 23 -82 -10 -158 -19 -168 -20
-14 -2 -36 33 -96 153 -42 85 -84 156 -92 157 -7 1 -84 -14 -169 -32z m155
-1839 c180 -48 338 -216 390 -417 81 -307 -103 -662 -380 -734 -128 -33 -284
-11 -385 53 -192 122 -306 375 -271 601 29 193 113 333 260 434 102 70 262 96
386 63z m1968 -6 c163 -51 297 -191 359 -375 19 -59 23 -89 22 -195 0 -107 -4
-136 -27 -205 -61 -184 -203 -327 -370 -371 -66 -18 -187 -18 -253 0 -179 47
-331 215 -384 422 -63 246 35 522 235 659 120 83 280 108 418 65z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M1077 7210 c-117 -20 -224 -107 -269 -218 l-23 -57 0 -2935 0 -2935
24 -60 c33 -81 115 -163 196 -196 l60 -24 1573 -3 1572 -2 0 1242 0 1243 -420
-3 -420 -2 0 500 0 500 419 -2 419 -3 5 460 c5 495 9 537 63 715 15 47 27 90
28 95 1 6 10 24 19 41 9 17 13 34 10 38 -4 3 -1 6 6 6 7 0 9 5 6 10 -3 6 -1
10 5 10 6 0 8 5 5 10 -3 6 -1 10 5 10 6 0 8 5 5 10 -3 6 -1 10 6 10 7 0 10 3
6 6 -3 3 3 15 13 27 11 11 17 23 15 27 -3 5 2 11 11 14 8 3 13 10 10 15 -3 5
1 12 10 15 9 4 14 9 11 12 -3 3 6 17 21 31 15 13 22 22 15 19 -6 -4 25 30 70
76 45 45 86 82 90 82 5 1 14 9 21 18 7 10 16 15 19 11 4 -3 9 2 13 11 3 9 12
16 20 16 8 0 14 5 14 10 0 6 7 10 15 10 8 0 15 5 15 11 0 5 4 7 10 4 6 -3 10
-1 10 4 0 6 3 10 8 9 4 -1 27 9 52 22 25 13 50 25 55 26 6 1 42 14 80 29 39
15 77 28 85 30 8 2 51 10 95 20 149 31 293 37 575 25 146 -6 308 -15 360 -20
52 -5 105 -10 118 -10 l22 0 0 -444 0 -444 -342 -4 c-322 -4 -347 -6 -410 -26
-37 -13 -74 -29 -82 -38 -8 -8 -18 -14 -21 -14 -3 0 -22 -15 -42 -35 -20 -19
-32 -35 -28 -35 5 0 0 -7 -11 -15 -10 -8 -14 -15 -9 -15 6 0 4 -4 -2 -8 -7 -4
-14 -17 -16 -27 -1 -11 -5 -25 -9 -30 -18 -30 -28 -201 -28 -498 l0 -332 480
3 480 2 0 -24 c0 -13 -27 -232 -60 -487 -33 -255 -60 -470 -60 -477 0 -10 -85
-12 -420 -10 l-420 3 0 -1243 0 -1243 853 3 852 3 60 24 c81 33 163 115 196
196 l24 60 0 2935 0 2935 -24 60 c-33 81 -115 163 -196 196 l-60 24 -2905 1
c-1598 1 -2927 -2 -2953 -6z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

31
src/assets/svg/github.svg Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M3692 7010 c-498 -52 -992 -234 -1407 -519 -326 -223 -654 -569 -860
-905 -212 -347 -342 -700 -416 -1136 -21 -121 -23 -168 -24 -450 0 -333 10
-434 66 -680 204 -883 813 -1644 1634 -2040 207 -100 346 -150 414 -150 77 0
106 12 131 52 19 31 20 51 20 317 l0 284 -47 -7 c-289 -41 -487 -21 -653 65
-78 40 -105 60 -172 125 -71 70 -115 135 -158 234 -78 179 -186 329 -293 405
-34 25 -79 57 -100 72 -108 78 -78 144 66 144 168 0 349 -112 468 -289 107
-161 173 -228 275 -280 145 -74 343 -73 552 1 51 18 64 27 68 47 33 161 75
255 145 328 23 23 39 45 36 48 -2 3 -36 10 -73 15 -207 29 -445 98 -595 173
-381 191 -590 499 -666 982 -24 156 -24 460 0 572 46 210 127 380 258 543 l21
27 -20 58 c-35 99 -45 186 -39 343 5 145 30 278 72 378 l15 36 108 -5 c84 -4
128 -12 202 -37 116 -39 329 -142 430 -210 41 -28 84 -51 95 -51 11 0 58 9
105 21 228 54 562 83 806 68 169 -10 377 -38 504 -68 47 -12 93 -21 103 -21
10 0 62 27 116 60 125 77 323 171 431 205 59 19 116 28 187 32 l103 6 15 -36
c42 -100 67 -233 72 -378 6 -155 -3 -232 -37 -338 l-21 -62 64 -80 c103 -128
175 -290 214 -476 25 -121 24 -442 -1 -598 -54 -340 -167 -577 -360 -763 -139
-134 -289 -220 -503 -290 -107 -36 -314 -82 -437 -97 l-48 -7 20 -21 c35 -39
90 -133 116 -198 57 -142 59 -173 65 -724 6 -554 5 -539 64 -575 59 -37 89
-31 352 70 152 59 422 212 605 344 256 184 523 460 712 736 454 662 625 1520
463 2329 -25 124 -30 143 -75 291 -192 628 -628 1209 -1188 1583 -373 249
-767 401 -1232 478 -100 17 -182 21 -405 24 -154 2 -317 0 -363 -5z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,30 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M2465 7213 c-778 -51 -1420 -574 -1619 -1317 -64 -238 -61 -152 -61
-1896 0 -1744 -3 -1658 61 -1896 165 -616 641 -1093 1255 -1257 242 -65 153
-62 1899 -62 1746 0 1657 -3 1899 62 613 164 1090 641 1254 1254 65 242 62
153 62 1899 0 1746 3 1657 -62 1899 -162 606 -634 1083 -1239 1251 -43 12
-131 31 -194 43 -113 21 -136 21 -1660 22 -850 1 -1567 0 -1595 -2z m3172
-578 c327 -53 627 -246 808 -519 104 -158 161 -303 190 -479 22 -138 22 -3136
0 -3274 -83 -510 -488 -915 -998 -998 -138 -22 -3136 -22 -3274 0 -510 83
-915 488 -998 998 -22 138 -22 3136 0 3274 82 506 486 913 989 997 126 22
3152 22 3283 1z" />
<path
d="M5620 6121 c-259 -70 -377 -353 -250 -600 74 -146 285 -239 448 -197
199 51 322 204 322 401 0 193 -124 350 -317 400 -73 19 -122 18 -203 -4z" />
<path
d="M3890 5649 c-644 -44 -1193 -449 -1434 -1057 -96 -242 -133 -583 -91
-837 61 -365 203 -650 454 -908 421 -433 1028 -598 1618 -441 555 148 1009
602 1157 1157 78 293 78 581 0 874 -121 454 -456 854 -884 1055 -259 122 -543
176 -820 157z m295 -575 c226 -39 424 -142 586 -304 425 -425 425 -1115 -1
-1540 -295 -296 -733 -396 -1129 -259 -566 196 -867 819 -670 1388 173 501
692 806 1214 715z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="100%" height="100%" viewBox="0 0 800.000000 800.000000"
preserveAspectRatio="xMidYMid meet">
<g transform="translate(0.000000,800.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path
d="M5170 6790 c-323 -40 -610 -179 -835 -405 -337 -337 -471 -780 -389
-1277 l7 -37 -69 5 c-924 74 -1737 421 -2416 1030 -113 101 -279 274 -374 388
l-41 49 -45 -94 c-96 -197 -138 -386 -138 -614 0 -352 114 -659 345 -928 60
-70 220 -212 252 -224 30 -12 9 -20 -40 -16 -160 13 -339 61 -485 129 l-94 44
7 -93 c10 -138 32 -250 70 -364 72 -215 177 -385 340 -549 176 -177 375 -295
608 -361 54 -15 92 -30 85 -34 -7 -4 -56 -14 -108 -24 -106 -20 -347 -23 -440
-7 -30 6 -57 8 -58 7 -7 -6 36 -112 79 -197 150 -298 412 -542 720 -667 150
-61 308 -97 442 -102 31 -1 57 -5 57 -9 0 -9 -136 -106 -245 -175 -127 -80
-360 -194 -511 -250 -165 -60 -393 -118 -570 -145 -171 -26 -469 -36 -619 -22
-60 6 -111 9 -113 8 -7 -7 233 -142 383 -216 592 -290 1231 -427 1895 -406
1013 31 1890 386 2595 1050 616 580 1054 1399 1209 2261 40 220 57 402 62 645
l4 225 90 71 c203 161 374 338 531 550 38 51 69 95 69 97 0 3 -35 -10 -78 -28
-105 -44 -282 -101 -408 -131 -111 -26 -294 -57 -300 -51 -2 2 29 26 69 53
148 100 326 294 413 451 39 69 114 236 114 253 0 5 -55 -20 -123 -55 -212
-111 -558 -236 -720 -260 l-47 -7 -73 69 c-180 171 -434 298 -696 347 -104 20
-312 28 -411 16z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
src/assets/videos/video.mp4 Normal file

Binary file not shown.

110
src/components/About.js Normal file
View File

@ -0,0 +1,110 @@
import React, { Component } from "react";
import { AnimationOnScroll } from "react-animation-on-scroll";
import "../assets/stylesheets/about.scss";
export default class About extends Component {
componentDidMount() {
window.scrollTo(0, 0);
}
click() {}
render() {
return (
<div className="about">
<div className="about__content">
<div className="about__content__main">
<AnimationOnScroll
animateIn="animate__fadeInDown"
animateOnce="true"
duration={1}
delay={0}
>
<div className="about__content__main__container">
<h1>About Us 📌</h1>
<span>
The Illinois Tech Robotics Club at IIT is a student-run
organization dedicated to promoting the development and
application of robotics technology. We aim to provide a
platform for students to learn, design, build, and compete
with robots. Our members come from a variety of disciplines
and backgrounds, including computer science, electrical
engineering, mechanical engineering, and beyond. We host
regular meetings, workshops, and events to encourage hands-on
experience and collaboration among members. Our club also
participates in various national and international robotics
competitions, providing opportunities for members to showcase
their skills and put their knowledge to the test. Whether you
are a seasoned robotics enthusiast or just starting out, the
Illinois Tech Robotics Club is a welcoming community for
anyone interested in the field. Join us in exploring the
exciting world of robotics and pushing the boundaries of what
is possible.
</span>
</div>
</AnimationOnScroll>
</div>
<div className="about__content__blocks">
<AnimationOnScroll
animateIn="animate__fadeInUp"
animateOnce="true"
duration={1}
delay={500}
>
<div className="about__content__blocks_block">
<h1>Awards 🏆</h1>
<span>
Illinois Tech Robotics has received numerous awards for our
contributions to the field of robotics. Our team has been
recognized at local competitions for our commitment to
innovation and excellence. We take pride in our recognition
and continue to push the boundaries of robotics technology.
</span>
<p>(Click for more info)</p>
</div>
</AnimationOnScroll>
<AnimationOnScroll
animateIn="animate__fadeInUp"
animateOnce="true"
duration={1.2}
delay={500}
>
<div className="about__content__blocks_block">
<h1>Officers 👩💼</h1>
<span>
Illinois Tech Robotics is led by a team of student officers
committed to advancing robotics. Our diverse officers bring
unique skills and perspectives, leading events and projects.
We are proud to have a talented and passionate group guiding
us forward.
</span>
<p>(Click for more info)</p>
</div>
</AnimationOnScroll>
<AnimationOnScroll
animateIn="animate__fadeInUp"
animateOnce="true"
duration={1.4}
delay={500}
>
<div
className="about__content__blocks_block"
onClick={this.click}
>
<h1>Constitution 📜</h1>
<span>
Illinois Tech Robotics operates under a Constitution outlining
our purpose, rules, and processes. It outlines
responsibilities, decision-making, and governance to maintain
fairness, transparency, and accountability within our team.
</span>
<p>(Click for more info)</p>
</div>
</AnimationOnScroll>
</div>
</div>
</div>
);
}
}

21
src/components/Awards.js Normal file
View File

@ -0,0 +1,21 @@
import React, { Component } from "react";
import "../assets/stylesheets/awards.scss";
export default class Awards extends Component {
render() {
return (
<div className="awards">
<div className="awards__content">
<h1 className="awards__content__title">Awards & Recognition 🏆</h1>
<ol className="awards__content__list">
<i>
<div className="awards__content__list_item">
<h2>2019</h2>
</div>
</i>
</ol>
</div>
</div>
);
}
}

46
src/components/Bubble.js Normal file
View File

@ -0,0 +1,46 @@
import React, { Component } from "react";
import "../assets/stylesheets/bubble.scss";
import { AnimationOnScroll } from "react-animation-on-scroll";
export default class Bubble extends Component {
render() {
return (
<div
style={{
marginLeft: `${this.props.left}`,
paddingTop: `${this.props.top}`,
}}
>
<div className="bubble">
<AnimationOnScroll
className="bubble_main"
animateIn="animate__fadeInUp"
animateOnce="true"
duration={1}
delay={0}
>
<h1>{this.props.h1}</h1>
</AnimationOnScroll>
<AnimationOnScroll
className="bubble_main"
animateIn="animate__fadeInUp"
animateOnce="true"
duration={1.2}
delay={0}
>
<h2>{this.props.h2}</h2>
</AnimationOnScroll>
<AnimationOnScroll
className="bubble_main"
animateIn="animate__fadeIn"
animateOnce="true"
duration={3}
delay={500}
>
<div>{this.props.children}</div>
</AnimationOnScroll>
</div>
</div>
);
}
}

View File

@ -0,0 +1,54 @@
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import "../assets/stylesheets/dropdown.scss";
export default class DropdownContainer extends Component {
constructor(props){
super(props);
this.container = React.createRef();
}
toggleHamburger() {
this.container.current.className = "slideOut c";
setTimeout(() => {this.props.hamburgerToggle();}
, 500);
}
render() {
return (
<nav ref={this.container} className="c slideIn">
<div className="header">
<label className="header__text">ITR</label>
<button className="header__x" onClick={() => this.toggleHamburger()}>X</button>
</div>
<div className="dd">
<li>
<NavLink className="dd__link" to="/">
<label className="dd__link_label">Home</label>
<label className="dd__link_arrow">{">"}</label>
</NavLink>
</li>
<li>
<NavLink className="dd__link" to="/about">
<label className="dd__link_label">About</label>
<label className="dd__link_arrow">{">"}</label>
</NavLink>
</li>
<li>
<NavLink className="dd__link" to="/projects">
<label className="dd__link_label">Projects</label>
<label className="dd__link_arrow">{">"}</label>
</NavLink>
</li>
<li>
<NavLink className="dd__link" to="/gallery">
<label className="dd__link_label">Gallery</label>
<label className="dd__link_arrow">{">"}</label>
</NavLink>
</li>
</div>
</nav>
);
}
}

23
src/components/Error.js Normal file
View File

@ -0,0 +1,23 @@
import React, { Component } from "react";
import NavBar from "../components/NavBar";
import "../assets/stylesheets/error.scss";
export default class Error extends Component {
status = this.props.err.item.status;
statusText = this.props.err.item.statusText;
message = this.props.err.item.message;
render() {
return (
<div>
<div className="error">
<img
className="error__photo"
src={require("../assets/pics/error.jpg")}
alt="background"
></img>
</div>
</div>
);
}
}

87
src/components/Footer.js Normal file
View File

@ -0,0 +1,87 @@
import React, { Component } from "react";
import "../assets/stylesheets/footer.scss";
import { ReactComponent as DiscordSVG } from "../assets/svg/discord.svg";
import { ReactComponent as TwitterSVG } from "../assets/svg/twitter.svg";
import { ReactComponent as FacebookSVG } from "../assets/svg/facebook.svg";
import { ReactComponent as InstagramSVG } from "../assets/svg/instagram.svg";
import { ReactComponent as GithubSVG } from "../assets/svg/github.svg";
export default class Footer extends Component {
render() {
return (
<div className="footer">
<div className="footer__links">
<ul>
<li>
<a
href="https://discord.gg/GA6mvMEzSu"
target="_blank"
rel="noreferrer"
>
<DiscordSVG className="footer__links_svg"></DiscordSVG>
</a>
</li>
<li>
<a
href="https://twitter.com/ILTech_Robotics"
target="_blank"
rel="noreferrer"
>
<TwitterSVG className="footer__links_svg"></TwitterSVG>
</a>
</li>
<li>
<a
href="https://www.facebook.com/IllinoisTechRobotics/"
target="_blank"
rel="noreferrer"
>
<FacebookSVG className="footer__links_svg"></FacebookSVG>
</a>
</li>
<li>
<a
href="https://www.instagram.com/illinoistechrobotics/"
target="_blank"
rel="noreferrer"
>
<InstagramSVG className="footer__links_svg"></InstagramSVG>
</a>
</li>
<li>
<a
href="https://github.com/illinoistechrobotics"
target="_blank"
rel="noreferrer"
>
<GithubSVG className="footer__links_svg"></GithubSVG>
</a>
</li>
</ul>
</div>
<div className="footer__toes">
<ul className="footer__toes__links_left">
<li>
<a href="http://localhost:3000/about">About</a>
</li>
<li>
<a href="http://localhost:3000/contact">Contact</a>
</li>
</ul>
<a className="footer__toes_logo" href="http://localhost:3000/">
ITR
</a>
<ul className="footer__toes__links_right">
<li>
<a href="http://localhost:3000/projects">Projects</a>
</li>
<li>
<a href="http://localhost:3000/gallery">Gallery</a>
</li>
</ul>
</div>
</div>
);
}
}

22
src/components/Gallery.js Normal file
View File

@ -0,0 +1,22 @@
import React, { Component } from "react";
import backgroundVideo from "../assets/video.mp4";
import "../assets/stylesheets/home.scss";
export default class Gallery extends Component {
render() {
return (
<div className="home">
<video autoPlay loop muted className="home__video">
<source src={backgroundVideo} type="video/mp4" />
</video>
<div className="home__content">
<label className="home__content__title">
ILLINOIS TECH
<br />
ROBOTICS
</label>
</div>
</div>
);
}
}

90
src/components/Home.js Normal file
View File

@ -0,0 +1,90 @@
import React, { Component } from "react";
import backgroundVideo from "../assets/videos/video.mp4";
import "../assets/stylesheets/home.scss";
import { AnimationOnScroll } from "react-animation-on-scroll";
import Bubble from "./Bubble";
import * as Scroll from "react-scroll";
import "animate.css";
export default class Home extends Component {
scrollToContent() {
var scroll = require("react-scroll");
scroll = Scroll.animateScroll;
scroll.scrollTo(920);
}
componentDidMount() {
window.scrollTo(0, 0);
}
render() {
return (
<div className="home">
<div className="home__content">
<div className="home__content__panel">
<label className="home__content__panel__title">
<p>ILLINOIS TECH</p>
<p>ROBOTICS</p>
</label>
<button
className="home__content__panel__button"
onClick={this.scrollToContent}
>
</button>
<video autoPlay loop muted className="home__content__panel__video">
<source src={backgroundVideo} type="video/mp4" />
</video>
</div>
<div className="home__content__info">
<div className="home__content__info__image">
<AnimationOnScroll
className="home__content__info_join"
animateIn="animate__fadeInRight"
animateOnce="true"
duration={1}
delay={1200}
>
<img
src={require("../assets/pics/fenrir.png")}
alt="Fenrir"
></img>
</AnimationOnScroll>
</div>
<Bubble top="10vh" left="10vw" h1="Join us at our" h2="GBMs 🤝">
<span>
Welcome to the Illinois Tech Robotics Club! We are a student-run
organization that promotes the field of robotics through
hands-on projects, competitions and events. Open to students of
all majors and skill levels, we meet every week at 6:30pm CST to
work on exciting robotics projects.
</span>
</Bubble>
<Bubble
top="5vh"
left="10vw"
h1="Directions to the"
h2="ITR Lab 🗺️"
>
<span>
1. Enter through the{" "}
<a href="https://goo.gl/maps/NJW5LzDDBYoHiD5X6">IIT Tower</a>{" "}
located at 10 W 35 St, Chicago, IL.
<br />
2. Sign in with the front desk, and then take the elevator to
the basement.
<br />
3. Once in the basement, take a right from the elevator and
enter the last door on the left.
<br />
4. Finally, sign in to the Elevate Underground Lab with the CLA
on guard!
</span>
</Bubble>
</div>
</div>
</div>
);
}
}

52
src/components/NavBar.js Normal file
View File

@ -0,0 +1,52 @@
import React, { Component } from "react";
import { NavLink } from "react-router-dom";
import "../assets/stylesheets/navbar.scss";
export default class NavBar extends Component {
constructor(props) {
super(props);
this.state = { navBackground: { backgroundColor: "transparent" }, hamburger: false };
document.addEventListener("scroll", (event) => {
if (window.scrollY < 10)
this.setState({ navBackground: { backgroundColor: "transparent" } });
else this.setState({ navBackground: { backgroundColor: "#232323" } });
});
}
toggleHamburger() {
this.props.hamburgerToggle();
}
render() {
return (
<nav className="navbar" style={this.state.navBackground}>
<a id="logo" href="http://localhost:3000">
<h2 className="navbar__logotext">ITR</h2>
</a>
<ul>
<li>
<NavLink to="/">Home</NavLink>
</li>
<li>
<NavLink to="/about">About</NavLink>
</li>
<li>
<NavLink to="/projects">Projects</NavLink>
</li>
<li>
<NavLink to="/gallery">Gallery</NavLink>
</li>
</ul>
{/* <NavLink className="nav__login" to="/login">
Login
</NavLink> */}
<div className="nav__placeholder"></div>
<div className="navbar__hamburger" onClick={() => this.toggleHamburger()}>
<div className="navbar__hamburger_line"></div>
<div className="navbar__hamburger_line"></div>
<div className="navbar__hamburger_line"></div>
</div>
</nav>
);
}
}

View File

@ -0,0 +1,22 @@
import React, { Component } from "react";
import backgroundVideo from "../assets/video.mp4";
import "../assets/stylesheets/home.scss";
export default class Projects extends Component {
render() {
return (
<div className="home">
<video autoPlay loop muted className="home__video">
<source src={backgroundVideo} type="video/mp4" />
</video>
<div className="home__content">
<label className="home__content__title">
ILLINOIS TECH
<br />
ROBOTICS
</label>
</div>
</div>
);
}
}

32
src/index.js Normal file
View File

@ -0,0 +1,32 @@
import React from "react";
import ReactDOM from "react-dom/client";
import HomeRoute from "./routes/HomeRoute";
import AboutRoute from "./routes/AboutRoute";
import AwardsRoute from "./routes/AwardsRoute";
import reportWebVitals from "./reportWebVitals";
import { createBrowserRouter, RouterProvider } from "react-router-dom";
import ErrorRoute from "./routes/ErrorRoute";
const root = ReactDOM.createRoot(document.getElementById("root"));
const router = createBrowserRouter([
{
path: "/",
element: <HomeRoute></HomeRoute>,
errorElement: <ErrorRoute></ErrorRoute>,
},
{
path: "/about",
element: <AboutRoute></AboutRoute>,
errorElement: <ErrorRoute></ErrorRoute>,
},
{
path: "/awards",
element: <AwardsRoute></AwardsRoute>,
errorElement: <ErrorRoute></ErrorRoute>,
}
]);
root.render(<RouterProvider router={router}></RouterProvider>);
reportWebVitals();

13
src/reportWebVitals.js Normal file
View File

@ -0,0 +1,13 @@
const reportWebVitals = (onPerfEntry) => {
if (onPerfEntry && onPerfEntry instanceof Function) {
import("web-vitals").then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {
getCLS(onPerfEntry);
getFID(onPerfEntry);
getFCP(onPerfEntry);
getLCP(onPerfEntry);
getTTFB(onPerfEntry);
});
}
};
export default reportWebVitals;

31
src/routes/AboutRoute.js Normal file
View File

@ -0,0 +1,31 @@
import React, { Component } from "react";
import NavBar from "../components/NavBar";
import About from "../components/About";
import Footer from "../components/Footer";
import DropdownContainer from "../components/DropdownContainer";
import "../assets/stylesheets/app.scss";
export default class AboutRoute extends Component {
constructor(props) {
super(props);
this.state = {
hamburger: false
};
document.title = "ITR - About";
}
hamburgerToggle = () => {
this.setState({ hamburger: !this.state.hamburger });
}
render() {
return (
<div className="container">
{this.state.hamburger ? <DropdownContainer hamburgerToggle={this.hamburgerToggle}/> : null}
<About></About>
<NavBar hamburgerToggle={this.hamburgerToggle}></NavBar>
<Footer></Footer>
</div>
);
}
}

27
src/routes/AwardsRoute.js Normal file
View File

@ -0,0 +1,27 @@
import React, { Component } from "react";
import NavBar from "../components/NavBar";
import Awards from "../components/Awards";
import Footer from "../components/Footer";
import DropdownContainer from "../components/DropdownContainer";
import "../assets/stylesheets/app.scss";
export default class AboutRoute extends Component {
constructor(props) {
super(props);
document.title = "ITR - Awards";
}
hamburgerToggle = () => {
this.setState({ hamburger: !this.state.hamburger });
}
render() {
return (
<div className="container">
<Awards></Awards>
<NavBar></NavBar>
<Footer></Footer>
</div>
);
}
}

28
src/routes/ErrorRoute.js Normal file
View File

@ -0,0 +1,28 @@
import { useRouteError } from "react-router-dom";
import React, { useState } from "react";
import NavBar from "../components/NavBar";
import Error from "../components/Error";
import Footer from "../components/Footer";
import DropdownContainer from "../components/DropdownContainer";
import "../assets/stylesheets/app.scss";
export default function ErrorRoute() {
const error = useRouteError();
console.error(error);
// create state for hamburger
const [hamburger, setHamburger] = useState(false);
// create function to toggle hamburger
const hamburgerToggle = () => {
setHamburger(!hamburger);
}
return (
<div id="container">
{hamburger ? <DropdownContainer hamburgerToggle={hamburgerToggle}/> : null}
<NavBar hamburgerToggle={hamburgerToggle}></NavBar>
<Error err={{ item: error }}></Error>
<Footer></Footer>
</div>
);
}

View File

47
src/routes/HomeRoute.js Normal file
View File

@ -0,0 +1,47 @@
import React, { Component } from "react";
import NavBar from "../components/NavBar";
import DropdownContainer from "../components/DropdownContainer";
import Home from "../components/Home";
import Footer from "../components/Footer";
import "../assets/stylesheets/app.scss";
import { ToastContainer, toast } from "react-toastify";
import "react-toastify/dist/ReactToastify.css";
export default class HomeRoute extends Component {
constructor(props) {
super(props);
this.state = {
text: "",
hamburger: false
};
toast("The new ITR Webpage! 🎉");
document.title = "ITR - Home";
}
hamburgerToggle = () => {
this.setState({ hamburger: !this.state.hamburger });
}
render() {
return (
<div className="container">
{this.state.hamburger ? <DropdownContainer hamburgerToggle={this.hamburgerToggle}/> : null}
<Home></Home>
<NavBar hamburgerToggle={this.hamburgerToggle}></NavBar>
<ToastContainer
position="bottom-right"
autoClose={5000}
hideProgressBar={false}
newestOnTop={false}
closeOnClick
rtl={false}
pauseOnFocusLoss
draggable
pauseOnHover
theme="dark"
/>
<Footer></Footer>
</div>
);
}
}

View File

5
src/setupTests.js Normal file
View File

@ -0,0 +1,5 @@
// jest-dom adds custom jest matchers for asserting on DOM nodes.
// allows you to do things like:
// expect(element).toHaveTextContent(/react/i)
// learn more: https://github.com/testing-library/jest-dom
import "@testing-library/jest-dom";