diff --git a/asset-manifest.json b/asset-manifest.json index ba721ef..ca09877 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,19 +1,19 @@ { "files": { - "main.css": "/static/css/main.a1eede8d.chunk.css", - "main.js": "/static/js/main.50d18f32.chunk.js", - "main.js.map": "/static/js/main.50d18f32.chunk.js.map", + "main.css": "/static/css/main.9e8e1106.chunk.css", + "main.js": "/static/js/main.91576fd0.chunk.js", + "main.js.map": "/static/js/main.91576fd0.chunk.js.map", "runtime-main.js": "/static/js/runtime-main.63efa834.js", "runtime-main.js.map": "/static/js/runtime-main.63efa834.js.map", "static/css/2.85610714.chunk.css": "/static/css/2.85610714.chunk.css", - "static/js/2.8c603c54.chunk.js": "/static/js/2.8c603c54.chunk.js", - "static/js/2.8c603c54.chunk.js.map": "/static/js/2.8c603c54.chunk.js.map", + "static/js/2.032a3ef4.chunk.js": "/static/js/2.032a3ef4.chunk.js", + "static/js/2.032a3ef4.chunk.js.map": "/static/js/2.032a3ef4.chunk.js.map", "static/js/3.40aa4c12.chunk.js": "/static/js/3.40aa4c12.chunk.js", "static/js/3.40aa4c12.chunk.js.map": "/static/js/3.40aa4c12.chunk.js.map", "index.html": "/index.html", "static/css/2.85610714.chunk.css.map": "/static/css/2.85610714.chunk.css.map", - "static/css/main.a1eede8d.chunk.css.map": "/static/css/main.a1eede8d.chunk.css.map", - "static/js/2.8c603c54.chunk.js.LICENSE.txt": "/static/js/2.8c603c54.chunk.js.LICENSE.txt", + "static/css/main.9e8e1106.chunk.css.map": "/static/css/main.9e8e1106.chunk.css.map", + "static/js/2.032a3ef4.chunk.js.LICENSE.txt": "/static/js/2.032a3ef4.chunk.js.LICENSE.txt", "static/media/HashiCorp_Logo_no_text.344aecaa.png": "/static/media/HashiCorp_Logo_no_text.344aecaa.png", "static/media/SanDiego.35f8cc09.svg": "/static/media/SanDiego.35f8cc09.svg", "static/media/distest.6bf47b83.svg": "/static/media/distest.6bf47b83.svg", @@ -22,8 +22,8 @@ "entrypoints": [ "static/js/runtime-main.63efa834.js", "static/css/2.85610714.chunk.css", - "static/js/2.8c603c54.chunk.js", - "static/css/main.a1eede8d.chunk.css", - "static/js/main.50d18f32.chunk.js" + "static/js/2.032a3ef4.chunk.js", + "static/css/main.9e8e1106.chunk.css", + "static/js/main.91576fd0.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 3cf106a..e10b33c 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Jake Cover
\ No newline at end of file +Jake Cover
\ No newline at end of file diff --git a/static/css/main.a1eede8d.chunk.css b/static/css/main.9e8e1106.chunk.css similarity index 99% rename from static/css/main.a1eede8d.chunk.css rename to static/css/main.9e8e1106.chunk.css index 6e0cba7..433d3be 100644 --- a/static/css/main.a1eede8d.chunk.css +++ b/static/css/main.9e8e1106.chunk.css @@ -1,2 +1,2 @@ @import url(https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;500;600;700&display=swap);body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{-webkit-animation:App-logo-spin 20s linear infinite;animation:App-logo-spin 20s linear infinite}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:#fff}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.site-footer{background:#a9a9a9;margin:10px;border-radius:5px}.site-footer h2{font-family:"Fira Code",monospace;margin:0}.site-footer p{font-family:"Montserrat",sans-serif}@media screen and (min-width:900px){.site-footer p{font-size:16px}}.footer-grid{display:flex;justify-content:space-evenly}.footer-grid .blurb{flex:9 1}.footer-grid .links-container{flex:4 1}.footer-grid .footer-links{padding-left:0;margin:0;-webkit-columns:100px 2;columns:100px 2}.footer-grid .footer-links li{list-style:none}.footer-grid .footer-links a{font-family:"Montserrat",sans-serif;text-decoration:underline}header{display:flex;flex-direction:row;margin:10px;padding:10px;border-radius:5px;background:#66bb6a;font-family:"Fira Code",monospace}header h1{font-weight:600;margin:0 0 0 5px}header .headerLinks{display:flex;flex-direction:row;align-content:center;margin-left:auto}header .headerLinks h2{margin:0;border-radius:5px;line-height:normal}header .headerLinks h2:hover{background:#ddd}header .headerLinks h2.active{background-color:#4caf50;color:#fff}header .headerLinks h2:last-of-type{margin-right:5px}header .icon{display:none}@media screen and (max-width:660px){header h2{display:none}header .icon{margin-left:auto;display:block;position:absolute;top:19px;right:24px;font-size:30px;border:none}header .headerLinks{visibility:hidden;transition:visibility 0s,opacity .5s linear}}@media screen and (max-width:660px){header.responsive{display:block}header.responsive .headerLinks{visibility:visible;display:flex;flex-direction:column;align-items:flex-start}header.responsive h1{text-align:left}header.responsive h2{display:block;margin-left:5px}}#project-grid-parent{margin:10px;background:#ffd43b;border-radius:5px}#project-grid-parent>#project-header{background:grey;border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header h2{margin-bottom:0;font-family:"Fira Code",monospace;font-size:24px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:"Montserrat",sans-serif;font-size:18px}@media (max-width:430px){#project-grid .FourByOne .Medium,#project-grid .GridSizer,#project-grid .OneWide{width:100%}}@media (min-width:431px) and (max-width:659px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:49%}#project-grid .FourByOne{width:100%}}@media (min-width:660px) and (max-width:899px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:33%}#project-grid .FourByOne{width:99%}}@media (min-width:900px) and (max-width:1299px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width:1300px) and (max-width:1559px){#project-grid .GridSizer,#project-grid .OneWide{max-width:300px;width:19.9%}#project-grid .Medium{max-width:600px;width:39.8%}#project-grid .FourByOne{width:59.5%;max-width:900px}}@media (min-width:1560px){#project-grid .GridSizer,#project-grid .OneWide{width:300px}#project-grid .Medium{width:600px}#project-grid .FourByOne{width:900px}}.GridElement{padding:5px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;background:#e0ffff;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:box-shadow .3s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px rgba(0,0,0,.3)}.GridElement h2{font-family:"Fira Code",monospace;font-weight:400;margin-bottom:0;line-height:normal}.GridElement h3{line-height:normal;color:#a9a9a9;margin-bottom:3px}.GridElement p{font-family:"Montserrat",sans-serif;font-size:16px;color:#000;margin-bottom:0}.OneWide{display:flex;flex-direction:column;width:available}.Medium img,.OneWide img{width:100%;margin-bottom:5px}@media (max-width:899px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width:900px){.Medium .image{float:left;width:50%;-webkit-shape-outside:inset(0);shape-outside:inset(0)}.Medium .image img{margin-bottom:0}.Medium .description{display:inline}.Medium .description p{text-align:justify}.Medium .description h2 h3{display:inline}}@media (min-width:1561px){.Medium .image{width:40%}}.FourByOne .GridElementInternal{display:flex;align-items:center}.FourByOne .GridElementInternal .image{flex:1 1}.FourByOne .GridElementInternal .image img{width:100%;max-width:100%}.FourByOne .GridElementInternal .description{min-width:20ch;width:30ch}@media (min-width:661px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width:660px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:12px;top:12px;font-size:24px;color:#000;background:rgba(224,255,255,.7);border-radius:5px}#about-me-parent{margin-left:10px;margin-right:10px;display:flex;flex-direction:row;justify-content:center}#about-me-parent b{font-weight:500}#about-me-parent .about-me-card{margin:0 5px;padding:10px}#about-me-parent #about-me,#about-me-parent .about-me-card{background:#61dafb;border-radius:5px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}#about-me-parent #about-me{padding:15px}#about-me-parent #about-me #info-parent{display:flex;flex-direction:row}#about-me-parent #about-me #info-parent #fun-info,#about-me-parent #about-me #info-parent #specific-info{flex:1 1}@media screen and (max-width:660px){#about-me-parent #about-me #info-parent{flex-direction:column}}#about-me-parent #about-me h1{font-family:"Fira Code",monospace;font-weight:500}#about-me-parent #about-me h2{font-family:"Fira Code",monospace;line-height:normal;margin-bottom:0;font-weight:400;text-align:left}#about-me-parent #about-me p{font-family:"Montserrat",sans-serif;font-size:16px;margin:0}#about-me-parent #about-me ul{text-align:left;padding-left:40px;margin-bottom:0}#about-me-parent #about-me li{font-family:"Montserrat",sans-serif;font-size:18px;list-style-type:symbols("+");list-style-position:inside}button{background:none!important;border:none;padding:0!important;color:#1890ff;cursor:pointer} -/*# sourceMappingURL=main.a1eede8d.chunk.css.map */ \ No newline at end of file +/*# sourceMappingURL=main.9e8e1106.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.9e8e1106.chunk.css.map b/static/css/main.9e8e1106.chunk.css.map new file mode 100644 index 0000000..907fb0f --- /dev/null +++ b/static/css/main.9e8e1106.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["main.9e8e1106.chunk.css","webpack://src/index.scss","webpack://src/App.scss","webpack://src/components/Footer.scss","webpack://src/components/Header.scss","webpack://src/components/ProjectGrid.scss","webpack://node_modules/include-media/dist/_include-media.scss","webpack://src/components/AboutMe/AboutMe.scss"],"names":[],"mappings":"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","file":"main.9e8e1106.chunk.css","sourcesContent":["@import url(https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;500;600;700&display=swap);\nbody{margin:0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace}\n\n\n\n.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion: no-preference){.App-logo{-webkit-animation:App-logo-spin infinite 20s linear;animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:white}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\n\n.site-footer{background:darkgrey;margin:10px;border-radius:5px}.site-footer h2{font-family:\"Fira Code\", monospace;margin:0}.site-footer p{font-family:\"Montserrat\", sans-serif}@media screen and (min-width: 900px){.site-footer p{font-size:16px}}.footer-grid{display:flex;justify-content:space-evenly}.footer-grid .blurb{flex:9 1}.footer-grid .links-container{flex:4 1}.footer-grid .footer-links{padding-left:0;margin:0;-webkit-columns:100px 2;columns:100px 2}.footer-grid .footer-links li{list-style:none}.footer-grid .footer-links a{font-family:\"Montserrat\", sans-serif;text-decoration:underline}\n\nheader{display:flex;flex-direction:row;margin:10px;padding:10px;border-radius:5px;background:#66bb6a;font-family:\"Fira Code\", monospace}header h1{font-weight:600;margin:0 0 0 5px}header .headerLinks{display:flex;flex-direction:row;align-content:center;margin-left:auto}header .headerLinks h2{margin:0;border-radius:5px;line-height:normal}header .headerLinks h2:hover{background:#ddd}header .headerLinks h2.active{background-color:#4CAF50;color:white}header .headerLinks h2:last-of-type{margin-right:5px}header .icon{display:none}@media screen and (max-width: 660px){header h2{display:none}header .icon{margin-left:auto;display:block;position:absolute;top:19px;right:24px;font-size:30px;border:none}header .headerLinks{visibility:hidden;transition:visibility 0s, opacity 0.5s linear}}@media screen and (max-width: 660px){header.responsive{display:block}header.responsive .headerLinks{visibility:visible;display:flex;flex-direction:column;align-items:flex-start}header.responsive h1{text-align:left}header.responsive h2{display:block;margin-left:5px}}\n\n\n#project-grid-parent{margin:10px;background:#FFD43B;border-radius:5px}#project-grid-parent>#project-header{background:grey;border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header h2{margin-bottom:0;font-family:\"Fira Code\", monospace;font-size:24px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:\"Montserrat\", sans-serif;font-size:18px}@media (max-width: 430px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .FourByOne .Medium{width:100%}}@media (min-width: 431px) and (max-width: 659px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:49%}#project-grid .FourByOne{width:100%}}@media (min-width: 660px) and (max-width: 899px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:33%}#project-grid .FourByOne{width:99%}}@media (min-width: 900px) and (max-width: 1299px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width: 1300px) and (max-width: 1559px){#project-grid .GridSizer,#project-grid .OneWide{max-width:300px;width:19.9%}#project-grid .Medium{max-width:600px;width:39.8%}#project-grid .FourByOne{width:59.5%;max-width:900px}}@media (min-width: 1560px){#project-grid .GridSizer,#project-grid .OneWide{width:300px}#project-grid .Medium{width:600px}#project-grid .FourByOne{width:900px}}.GridElement{padding:5px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;background:lightcyan;box-shadow:0 1px 2px rgba(0,0,0,0.15);transition:box-shadow 0.3s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px rgba(0,0,0,0.3)}.GridElement h2{font-family:\"Fira Code\", monospace;font-weight:400;margin-bottom:0px;line-height:normal}.GridElement h3{line-height:normal;color:darkgrey;margin-bottom:3px}.GridElement p{font-family:\"Montserrat\", sans-serif;font-size:16px;color:black;margin-bottom:0}.OneWide{display:flex;flex-direction:column;width:available}.OneWide img{width:100%;margin-bottom:5px}.Medium img{width:100%;margin-bottom:5px}@media (max-width: 899px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width: 900px){.Medium .image{float:left;width:50%;-webkit-shape-outside:inset(0);shape-outside:inset(0)}.Medium .image img{margin-bottom:0}.Medium .description{display:inline}.Medium .description p{text-align:justify}.Medium .description h2 h3{display:inline}}@media (min-width: 1561px){.Medium .image{width:40%}}.FourByOne .GridElementInternal{display:flex;align-items:center}.FourByOne .GridElementInternal .image{flex:1 1}.FourByOne .GridElementInternal .image img{width:100%;max-width:100%}.FourByOne .GridElementInternal .description{min-width:20ch;width:30ch}@media (min-width: 661px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width: 660px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:12px;top:12px;font-size:24px;color:black;background:rgba(224,255,255,0.7);border-radius:5px}\n\n#about-me-parent{margin-left:10px;margin-right:10px;display:flex;flex-direction:row;justify-content:center}#about-me-parent b{font-weight:500}#about-me-parent .about-me-card{background:#61dafb;border-radius:5px;margin:0 5px 0;padding:10px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}#about-me-parent #about-me{background:#61dafb;border-radius:5px;padding:15px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}#about-me-parent #about-me #info-parent{display:flex;flex-direction:row}#about-me-parent #about-me #info-parent #specific-info{flex:1 1}#about-me-parent #about-me #info-parent #fun-info{flex:1 1}@media screen and (max-width: 660px){#about-me-parent #about-me #info-parent{flex-direction:column}}#about-me-parent #about-me h1{font-family:\"Fira Code\", monospace;font-weight:500}#about-me-parent #about-me h2{font-family:\"Fira Code\", monospace;line-height:normal;margin-bottom:0;font-weight:400;text-align:left}#about-me-parent #about-me p{font-family:\"Montserrat\", sans-serif;font-size:16px;margin:0}#about-me-parent #about-me ul{text-align:left;padding-left:40px;margin-bottom:0}#about-me-parent #about-me li{font-family:\"Montserrat\", sans-serif;font-size:18px;list-style-type:symbols(\"+\");list-style-position:inside}button{background:none !important;border:none;padding:0 !important;color:#1890ff;cursor:pointer}\n\n","body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n","@import '~antd/dist/antd.css';\n\n.App {\n text-align: center;\n}\n\n.App-logo {\n height: 40vmin;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .App-logo {\n animation: App-logo-spin infinite 20s linear;\n }\n}\n\n.App-header {\n background-color: #282c34;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: calc(10px + 2vmin);\n color: white;\n}\n\n.App-link {\n color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n",".site-footer {\n background: darkgrey;\n margin: 10px;\n border-radius: 5px;\n\n h2 {\n font-family: \"Fira Code\", monospace;\n margin: 0;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n\n @media screen and (min-width: 900px) {\n font-size: 16px;\n }\n }\n}\n\n.footer-grid {\n display: flex;\n justify-content: space-evenly;\n\n .blurb {\n flex: 9;\n }\n\n .links-container {\n flex: 4;\n }\n\n .footer-links {\n padding-left: 0;\n margin: 0;\n\n columns: 100px 2;\n\n li {\n list-style: none;\n }\n\n a {\n //color: black;\n font-family: \"Montserrat\", sans-serif;\n text-decoration: underline;\n }\n }\n\n}\n","header {\n display: flex;\n flex-direction: row;\n\n margin: 10px;\n padding: 10px;\n border-radius: 5px;\n background: #66bb6a;\n font-family: \"Fira Code\", monospace;\n\n h1 {\n font-weight: 600;\n margin: 0 0 0 5px;\n }\n\n .headerLinks {\n display: flex;\n flex-direction: row;\n align-content: center;\n margin-left: auto;\n\n h2 {\n margin: 0;\n border-radius: 5px;\n line-height: normal;\n\n &:hover {\n background: #ddd;\n }\n\n &.active {\n background-color: #4CAF50;\n color: white;\n }\n }\n\n h2:last-of-type {\n margin-right: 5px;\n }\n }\n\n /* Hide the link that should open and close the topnav on small screens */\n .icon {\n display: none;\n }\n\n @media screen and (max-width: 660px) {\n h2 {\n display: none;\n }\n\n .icon {\n margin-left: auto;\n display: block;\n position: absolute;\n top: 19px;\n right: 24px;\n font-size: 30px;\n border: none;\n }\n\n .headerLinks {\n visibility: hidden;\n transition: visibility 0s, opacity 0.5s linear;\n }\n }\n\n @media screen and (max-width: 660px) {\n &.responsive {\n display: block;\n\n .headerLinks {\n visibility: visible;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n\n h1 {\n text-align: left;\n }\n\n h2 {\n display: block;\n margin-left: 5px;\n }\n }\n }\n}\n","@import \"~include-media/dist/_include-media.scss\";\n\n$breakpoints: (x-small: 430px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px);\n\n// Override Sass min()\n@function min($numbers...) {\n @return m#{i}n(#{$numbers});\n}\n\n// Override Sass max()\n@function max($numbers...) {\n @return m#{a}x(#{$numbers});\n}\n\n#project-grid-parent {\n margin: 10px;\n background: #FFD43B;\n border-radius: 5px;\n\n & > #project-header {\n background: grey;\n border-radius: 5px 5px 0 0;\n margin-bottom: 2px;\n\n padding: 5px;\n\n h2 {\n margin-bottom: 0;\n font-family: \"Fira Code\", monospace;\n font-size: 24px;\n }\n\n p {\n margin: 0 0 3px;\n font-family: \"Montserrat\", sans-serif;\n font-size: 18px;\n }\n\n }\n}\n\n\n#project-grid {\n\n //padding: 10px;\n\n @include media(\"<=x-small\") {\n .GridSizer, .OneWide, .FourByOne .Medium {\n width: 100%;\n }\n }\n\n @include media(\">x-small\", \"=small\", \"=medium\", \"=large\", \"=x-large\") {\n .GridSizer, .OneWide {\n width: 300px;\n }\n .Medium {\n width: 600px;\n }\n .FourByOne {\n width: 900px;\n }\n }\n}\n\n.GridElement {\n padding: 5px;\n\n .GridElementInternal {\n padding: 9px;\n border-radius: 5px;\n background: lightcyan;\n\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n transition: box-shadow 0.3s ease-in-out;\n }\n\n .GridElementInternal:hover {\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n font-weight: 400;\n margin-bottom: 0px;\n line-height: normal;\n }\n\n h3 {\n line-height: normal;\n color: darkgrey;\n margin-bottom: 3px;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n font-size: 16px;\n color: black;\n margin-bottom: 0;\n }\n}\n\n.OneWide {\n display: flex;\n flex-direction: column;\n width: available;\n\n img {\n width: 100%;\n margin-bottom: 5px;\n }\n}\n\n.Medium {\n img {\n width: 100%;\n margin-bottom: 5px;\n }\n\n @include media(\"=medium\") {\n // Two column sort of layout\n .image {\n float: left;\n width: 50%;\n shape-outside: inset(0);\n\n img {\n margin-bottom: 0;\n }\n }\n\n .description {\n display: inline;\n\n p {\n text-align: justify;\n }\n\n h2 h3 {\n display: inline;\n }\n }\n }\n\n @include media(\">x-large\") {\n .image {\n width: 40%;\n }\n }\n}\n\n.FourByOne {\n .GridElementInternal {\n display: flex;\n align-items: center;\n\n .image {\n flex: 1;\n\n img {\n width: 100%;\n max-width: 100%;\n }\n }\n\n .description {\n min-width: 20ch;\n width: 30ch;\n }\n\n @include media(\">small\") {\n flex-direction: row;\n\n }\n @include media(\"<=small\") {\n flex-direction: column;\n .description {\n width: 95%;\n }\n }\n }\n}\n\n.LinkIcon {\n position: absolute;\n right: 12px;\n top: 12px;\n font-size: 24px;\n color: black;\n\n background: rgba(224, 255, 255, 0.7);\n border-radius: 5px;\n}\n","@charset \"UTF-8\";\n\n// _ _ _ _ _\n// (_) | | | | | (_)\n// _ _ __ ___| |_ _ __| | ___ _ __ ___ ___ __| |_ __ _\n// | | '_ \\ / __| | | | |/ _` |/ _ \\ | '_ ` _ \\ / _ \\/ _` | |/ _` |\n// | | | | | (__| | |_| | (_| | __/ | | | | | | __/ (_| | | (_| |\n// |_|_| |_|\\___|_|\\__,_|\\__,_|\\___| |_| |_| |_|\\___|\\__,_|_|\\__,_|\n//\n// Simple, elegant and maintainable media queries in Sass\n// v1.4.9\n//\n// http://include-media.com\n//\n// Authors: Eduardo Boucas (@eduardoboucas)\n// Hugo Giraudel (@hugogiraudel)\n//\n// This project is licensed under the terms of the MIT license\n\n\n////\n/// include-media library public configuration\n/// @author Eduardo Boucas\n/// @access public\n////\n\n\n///\n/// Creates a list of global breakpoints\n///\n/// @example scss - Creates a single breakpoint with the label `phone`\n/// $breakpoints: ('phone': 320px);\n///\n$breakpoints: (\n 'phone': 320px,\n 'tablet': 768px,\n 'desktop': 1024px\n) !default;\n\n\n///\n/// Creates a list of static expressions or media types\n///\n/// @example scss - Creates a single media type (screen)\n/// $media-expressions: ('screen': 'screen');\n///\n/// @example scss - Creates a static expression with logical disjunction (OR operator)\n/// $media-expressions: (\n/// 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)'\n/// );\n///\n$media-expressions: (\n 'screen': 'screen',\n 'print': 'print',\n 'handheld': 'handheld',\n 'landscape': '(orientation: landscape)',\n 'portrait': '(orientation: portrait)',\n 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)',\n 'retina3x': '(-webkit-min-device-pixel-ratio: 3), (min-resolution: 350dpi), (min-resolution: 3dppx)'\n) !default;\n\n\n///\n/// Defines a number to be added or subtracted from each unit when declaring breakpoints with exclusive intervals\n///\n/// @example scss - Interval for pixels is defined as `1` by default\n/// @include media('>128px') {}\n///\n/// /* Generates: */\n/// @media (min-width: 129px) {}\n///\n/// @example scss - Interval for ems is defined as `0.01` by default\n/// @include media('>20em') {}\n///\n/// /* Generates: */\n/// @media (min-width: 20.01em) {}\n///\n/// @example scss - Interval for rems is defined as `0.1` by default, to be used with `font-size: 62.5%;`\n/// @include media('>2.0rem') {}\n///\n/// /* Generates: */\n/// @media (min-width: 2.1rem) {}\n///\n$unit-intervals: (\n 'px': 1,\n 'em': 0.01,\n 'rem': 0.1,\n '': 0\n) !default;\n\n///\n/// Defines whether support for media queries is available, useful for creating separate stylesheets\n/// for browsers that don't support media queries.\n///\n/// @example scss - Disables support for media queries\n/// $im-media-support: false;\n/// @include media('>=tablet') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n$im-media-support: true !default;\n\n///\n/// Selects which breakpoint to emulate when support for media queries is disabled. Media queries that start at or\n/// intercept the breakpoint will be displayed, any others will be ignored.\n///\n/// @example scss - This media query will show because it intercepts the static breakpoint\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// @include media('>=tablet') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n/// @example scss - This media query will NOT show because it does not intercept the desktop breakpoint\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'tablet';\n/// @include media('>=desktop') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* No output */\n///\n$im-no-media-breakpoint: 'desktop' !default;\n\n///\n/// Selects which media expressions are allowed in an expression for it to be used when media queries\n/// are not supported.\n///\n/// @example scss - This media query will show because it intercepts the static breakpoint and contains only accepted media expressions\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// $im-no-media-expressions: ('screen');\n/// @include media('>=tablet', 'screen') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n/// @example scss - This media query will NOT show because it intercepts the static breakpoint but contains a media expression that is not accepted\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// $im-no-media-expressions: ('screen');\n/// @include media('>=tablet', 'retina2x') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* No output */\n///\n$im-no-media-expressions: ('screen', 'portrait', 'landscape') !default;\n\n////\n/// Cross-engine logging engine\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Log a message either with `@error` if supported\n/// else with `@warn`, using `feature-exists('at-error')`\n/// to detect support.\n///\n/// @param {String} $message - Message to log\n///\n@function im-log($message) {\n @if feature-exists('at-error') {\n @error $message;\n } @else {\n @warn $message;\n $_: noop();\n }\n\n @return $message;\n}\n\n\n///\n/// Wrapper mixin for the log function so it can be used with a more friendly\n/// API than `@if im-log('..') {}` or `$_: im-log('..')`. Basically, use the function\n/// within functions because it is not possible to include a mixin in a function\n/// and use the mixin everywhere else because it's much more elegant.\n///\n/// @param {String} $message - Message to log\n///\n@mixin log($message) {\n @if im-log($message) {}\n}\n\n\n///\n/// Function with no `@return` called next to `@warn` in Sass 3.3\n/// to trigger a compiling error and stop the process.\n///\n@function noop() {}\n\n///\n/// Determines whether a list of conditions is intercepted by the static breakpoint.\n///\n/// @param {Arglist} $conditions - Media query conditions\n///\n/// @return {Boolean} - Returns true if the conditions are intercepted by the static breakpoint\n///\n@function im-intercepts-static-breakpoint($conditions...) {\n $no-media-breakpoint-value: map-get($breakpoints, $im-no-media-breakpoint);\n\n @if not $no-media-breakpoint-value {\n @if im-log('`#{$im-no-media-breakpoint}` is not a valid breakpoint.') {}\n }\n\n @each $condition in $conditions {\n @if not map-has-key($media-expressions, $condition) {\n $operator: get-expression-operator($condition);\n $prefix: get-expression-prefix($operator);\n $value: get-expression-value($condition, $operator);\n\n // scss-lint:disable SpaceAroundOperator\n @if ($prefix == 'max' and $value <= $no-media-breakpoint-value) or\n ($prefix == 'min' and $value > $no-media-breakpoint-value) {\n @return false;\n }\n } @else if not index($im-no-media-expressions, $condition) {\n @return false;\n }\n }\n\n @return true;\n}\n\n////\n/// Parsing engine\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Get operator of an expression\n///\n/// @param {String} $expression - Expression to extract operator from\n///\n/// @return {String} - Any of `>=`, `>`, `<=`, `<`, `≥`, `≤`\n///\n@function get-expression-operator($expression) {\n @each $operator in ('>=', '>', '<=', '<', '≥', '≤') {\n @if str-index($expression, $operator) {\n @return $operator;\n }\n }\n\n // It is not possible to include a mixin inside a function, so we have to\n // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because\n // functions cannot be called anywhere in Sass, we need to hack the call in\n // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with\n // Sass 3.3, change this line in `@if im-log(..) {}` instead.\n $_: im-log('No operator found in `#{$expression}`.');\n}\n\n\n///\n/// Get dimension of an expression, based on a found operator\n///\n/// @param {String} $expression - Expression to extract dimension from\n/// @param {String} $operator - Operator from `$expression`\n///\n/// @return {String} - `width` or `height` (or potentially anything else)\n///\n@function get-expression-dimension($expression, $operator) {\n $operator-index: str-index($expression, $operator);\n $parsed-dimension: str-slice($expression, 0, $operator-index - 1);\n $dimension: 'width';\n\n @if str-length($parsed-dimension) > 0 {\n $dimension: $parsed-dimension;\n }\n\n @return $dimension;\n}\n\n\n///\n/// Get dimension prefix based on an operator\n///\n/// @param {String} $operator - Operator\n///\n/// @return {String} - `min` or `max`\n///\n@function get-expression-prefix($operator) {\n @return if(index(('<', '<=', '≤'), $operator), 'max', 'min');\n}\n\n\n///\n/// Get value of an expression, based on a found operator\n///\n/// @param {String} $expression - Expression to extract value from\n/// @param {String} $operator - Operator from `$expression`\n///\n/// @return {Number} - A numeric value\n///\n@function get-expression-value($expression, $operator) {\n $operator-index: str-index($expression, $operator);\n $value: str-slice($expression, $operator-index + str-length($operator));\n\n @if map-has-key($breakpoints, $value) {\n $value: map-get($breakpoints, $value);\n } @else {\n $value: to-number($value);\n }\n\n $interval: map-get($unit-intervals, unit($value));\n\n @if not $interval {\n // It is not possible to include a mixin inside a function, so we have to\n // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because\n // functions cannot be called anywhere in Sass, we need to hack the call in\n // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with\n // Sass 3.3, change this line in `@if im-log(..) {}` instead.\n $_: im-log('Unknown unit `#{unit($value)}`.');\n }\n\n @if $operator == '>' {\n $value: $value + $interval;\n } @else if $operator == '<' {\n $value: $value - $interval;\n }\n\n @return $value;\n}\n\n\n///\n/// Parse an expression to return a valid media-query expression\n///\n/// @param {String} $expression - Expression to parse\n///\n/// @return {String} - Valid media query\n///\n@function parse-expression($expression) {\n // If it is part of $media-expressions, it has no operator\n // then there is no need to go any further, just return the value\n @if map-has-key($media-expressions, $expression) {\n @return map-get($media-expressions, $expression);\n }\n\n $operator: get-expression-operator($expression);\n $dimension: get-expression-dimension($expression, $operator);\n $prefix: get-expression-prefix($operator);\n $value: get-expression-value($expression, $operator);\n\n @return '(#{$prefix}-#{$dimension}: #{$value})';\n}\n\n///\n/// Slice `$list` between `$start` and `$end` indexes\n///\n/// @access private\n///\n/// @param {List} $list - List to slice\n/// @param {Number} $start [1] - Start index\n/// @param {Number} $end [length($list)] - End index\n///\n/// @return {List} Sliced list\n///\n@function slice($list, $start: 1, $end: length($list)) {\n @if length($list) < 1 or $start > $end {\n @return ();\n }\n\n $result: ();\n\n @for $i from $start through $end {\n $result: append($result, nth($list, $i));\n }\n\n @return $result;\n}\n\n////\n/// String to number converter\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Casts a string into a number\n///\n/// @param {String | Number} $value - Value to be parsed\n///\n/// @return {Number}\n///\n@function to-number($value) {\n @if type-of($value) == 'number' {\n @return $value;\n } @else if type-of($value) != 'string' {\n $_: im-log('Value for `to-number` should be a number or a string.');\n }\n\n $first-character: str-slice($value, 1, 1);\n $result: 0;\n $digits: 0;\n $minus: ($first-character == '-');\n $numbers: ('0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9);\n\n // Remove +/- sign if present at first character\n @if ($first-character == '+' or $first-character == '-') {\n $value: str-slice($value, 2);\n }\n\n @for $i from 1 through str-length($value) {\n $character: str-slice($value, $i, $i);\n\n @if not (index(map-keys($numbers), $character) or $character == '.') {\n @return to-length(if($minus, -$result, $result), str-slice($value, $i))\n }\n\n @if $character == '.' {\n $digits: 1;\n } @else if $digits == 0 {\n $result: $result * 10 + map-get($numbers, $character);\n } @else {\n $digits: $digits * 10;\n $result: $result + map-get($numbers, $character) / $digits;\n }\n }\n\n @return if($minus, -$result, $result);\n}\n\n\n///\n/// Add `$unit` to `$value`\n///\n/// @param {Number} $value - Value to add unit to\n/// @param {String} $unit - String representation of the unit\n///\n/// @return {Number} - `$value` expressed in `$unit`\n///\n@function to-length($value, $unit) {\n $units: ('px': 1px, 'cm': 1cm, 'mm': 1mm, '%': 1%, 'ch': 1ch, 'pc': 1pc, 'in': 1in, 'em': 1em, 'rem': 1rem, 'pt': 1pt, 'ex': 1ex, 'vw': 1vw, 'vh': 1vh, 'vmin': 1vmin, 'vmax': 1vmax);\n\n @if not index(map-keys($units), $unit) {\n $_: im-log('Invalid unit `#{$unit}`.');\n }\n\n @return $value * map-get($units, $unit);\n}\n\n///\n/// This mixin aims at redefining the configuration just for the scope of\n/// the call. It is helpful when having a component needing an extended\n/// configuration such as custom breakpoints (referred to as tweakpoints)\n/// for instance.\n///\n/// @author Hugo Giraudel\n///\n/// @param {Map} $tweakpoints [()] - Map of tweakpoints to be merged with `$breakpoints`\n/// @param {Map} $tweak-media-expressions [()] - Map of tweaked media expressions to be merged with `$media-expression`\n///\n/// @example scss - Extend the global breakpoints with a tweakpoint\n/// @include media-context(('custom': 678px)) {\n/// .foo {\n/// @include media('>phone', '<=custom') {\n/// // ...\n/// }\n/// }\n/// }\n///\n/// @example scss - Extend the global media expressions with a custom one\n/// @include media-context($tweak-media-expressions: ('all': 'all')) {\n/// .foo {\n/// @include media('all', '>phone') {\n/// // ...\n/// }\n/// }\n/// }\n///\n/// @example scss - Extend both configuration maps\n/// @include media-context(('custom': 678px), ('all': 'all')) {\n/// .foo {\n/// @include media('all', '>phone', '<=custom') {\n/// // ...\n/// }\n/// }\n/// }\n///\n@mixin media-context($tweakpoints: (), $tweak-media-expressions: ()) {\n // Save global configuration\n $global-breakpoints: $breakpoints;\n $global-media-expressions: $media-expressions;\n\n // Update global configuration\n $breakpoints: map-merge($breakpoints, $tweakpoints) !global;\n $media-expressions: map-merge($media-expressions, $tweak-media-expressions) !global;\n\n @content;\n\n // Restore global configuration\n $breakpoints: $global-breakpoints !global;\n $media-expressions: $global-media-expressions !global;\n}\n\n////\n/// include-media public exposed API\n/// @author Eduardo Boucas\n/// @access public\n////\n\n\n///\n/// Generates a media query based on a list of conditions\n///\n/// @param {Arglist} $conditions - Media query conditions\n///\n/// @example scss - With a single set breakpoint\n/// @include media('>phone') { }\n///\n/// @example scss - With two set breakpoints\n/// @include media('>phone', '<=tablet') { }\n///\n/// @example scss - With custom values\n/// @include media('>=358px', '<850px') { }\n///\n/// @example scss - With set breakpoints with custom values\n/// @include media('>desktop', '<=1350px') { }\n///\n/// @example scss - With a static expression\n/// @include media('retina2x') { }\n///\n/// @example scss - Mixing everything\n/// @include media('>=350px', ' 0) {\n @media #{unquote(parse-expression(nth($conditions, 1)))} {\n // Recursive call\n @include media(slice($conditions, 2)...) {\n @content;\n }\n }\n }\n}\n","#about-me-parent {\n margin-left: 10px;\n margin-right: 10px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n\n b {\n font-weight: 500;\n }\n\n .about-me-card {\n background: #61dafb;\n border-radius: 5px;\n margin: 0 5px 0;\n padding: 10px;\n width: fit-content;\n }\n\n #about-me {\n background: #61dafb;\n border-radius: 5px;\n padding: 15px;\n width: fit-content;\n\n #info-parent {\n display: flex;\n flex-direction: row;\n\n #specific-info {\n flex: 1 1 0;\n }\n\n #fun-info {\n flex: 1 1 0;\n }\n\n @media screen and (max-width: 660px) {\n flex-direction: column;\n }\n }\n\n h1 {\n font-family: \"Fira Code\", monospace;\n font-weight: 500;\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n line-height: normal;\n margin-bottom: 0;\n font-weight: 400;\n\n text-align: left;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n font-size: 16px;\n margin: 0;\n }\n\n ul {\n text-align: left;\n padding-left: 40px;\n margin-bottom: 0;\n }\n\n li {\n font-family: \"Montserrat\", sans-serif;\n font-size: 18px;\n list-style-type: symbols(\"+\");\n list-style-position: inside;\n\n }\n }\n\n}\n\nbutton {\n background: none!important;\n border: none;\n padding: 0!important;\n color: #1890ff;\n cursor: pointer;\n}\n"]} \ No newline at end of file diff --git a/static/css/main.a1eede8d.chunk.css.map b/static/css/main.a1eede8d.chunk.css.map deleted file mode 100644 index 0dccfa1..0000000 --- a/static/css/main.a1eede8d.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["main.a1eede8d.chunk.css","webpack://src/index.scss","webpack://src/App.scss","webpack://src/components/Footer.scss","webpack://src/components/Header.scss","webpack://src/components/ProjectGrid.scss","webpack://node_modules/include-media/dist/_include-media.scss","webpack://src/components/AboutMe.scss"],"names":[],"mappings":"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","file":"main.a1eede8d.chunk.css","sourcesContent":["@import url(https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;500;600;700&display=swap);\nbody{margin:0;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace}\n\n\n\n.App{text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion: no-preference){.App-logo{-webkit-animation:App-logo-spin infinite 20s linear;animation:App-logo-spin infinite 20s linear}}.App-header{background-color:#282c34;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:calc(10px + 2vmin);color:white}.App-link{color:#61dafb}@-webkit-keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes App-logo-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}\n\n.site-footer{background:darkgrey;margin:10px;border-radius:5px}.site-footer h2{font-family:\"Fira Code\", monospace;margin:0}.site-footer p{font-family:\"Montserrat\", sans-serif}@media screen and (min-width: 900px){.site-footer p{font-size:16px}}.footer-grid{display:flex;justify-content:space-evenly}.footer-grid .blurb{flex:9 1}.footer-grid .links-container{flex:4 1}.footer-grid .footer-links{padding-left:0;margin:0;-webkit-columns:100px 2;columns:100px 2}.footer-grid .footer-links li{list-style:none}.footer-grid .footer-links a{font-family:\"Montserrat\", sans-serif;text-decoration:underline}\n\nheader{display:flex;flex-direction:row;margin:10px;padding:10px;border-radius:5px;background:#66bb6a;font-family:\"Fira Code\", monospace}header h1{font-weight:600;margin:0 0 0 5px}header .headerLinks{display:flex;flex-direction:row;align-content:center;margin-left:auto}header .headerLinks h2{margin:0;border-radius:5px;line-height:normal}header .headerLinks h2:hover{background:#ddd}header .headerLinks h2.active{background-color:#4CAF50;color:white}header .headerLinks h2:last-of-type{margin-right:5px}header .icon{display:none}@media screen and (max-width: 660px){header h2{display:none}header .icon{margin-left:auto;display:block;position:absolute;top:19px;right:24px;font-size:30px;border:none}header .headerLinks{visibility:hidden;transition:visibility 0s, opacity 0.5s linear}}@media screen and (max-width: 660px){header.responsive{display:block}header.responsive .headerLinks{visibility:visible;display:flex;flex-direction:column;align-items:flex-start}header.responsive h1{text-align:left}header.responsive h2{display:block;margin-left:5px}}\n\n\n#project-grid-parent{margin:10px;background:#FFD43B;border-radius:5px}#project-grid-parent>#project-header{background:grey;border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header h2{margin-bottom:0;font-family:\"Fira Code\", monospace;font-size:24px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:\"Montserrat\", sans-serif;font-size:18px}@media (max-width: 430px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .FourByOne .Medium{width:100%}}@media (min-width: 431px) and (max-width: 659px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:49%}#project-grid .FourByOne{width:100%}}@media (min-width: 660px) and (max-width: 899px){#project-grid .GridSizer,#project-grid .OneWide .Medium{width:33%}#project-grid .FourByOne{width:99%}}@media (min-width: 900px) and (max-width: 1299px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width: 1300px) and (max-width: 1559px){#project-grid .GridSizer,#project-grid .OneWide{max-width:300px;width:19.9%}#project-grid .Medium{max-width:600px;width:39.8%}#project-grid .FourByOne{width:59.5%;max-width:900px}}@media (min-width: 1560px){#project-grid .GridSizer,#project-grid .OneWide{width:300px}#project-grid .Medium{width:600px}#project-grid .FourByOne{width:900px}}.GridElement{padding:5px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;background:lightcyan;box-shadow:0 1px 2px rgba(0,0,0,0.15);transition:box-shadow 0.3s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px rgba(0,0,0,0.3)}.GridElement h2{font-family:\"Fira Code\", monospace;font-weight:400;margin-bottom:0px;line-height:normal}.GridElement h3{line-height:normal;color:darkgrey;margin-bottom:3px}.GridElement p{font-family:\"Montserrat\", sans-serif;font-size:16px;color:black;margin-bottom:0}.OneWide{display:flex;flex-direction:column;width:available}.OneWide img{width:100%;margin-bottom:5px}.Medium img{width:100%;margin-bottom:5px}@media (max-width: 899px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width: 900px){.Medium .image{float:left;width:50%;-webkit-shape-outside:inset(0);shape-outside:inset(0)}.Medium .image img{margin-bottom:0}.Medium .description{display:inline}.Medium .description p{text-align:justify}.Medium .description h2 h3{display:inline}}@media (min-width: 1561px){.Medium .image{width:40%}}.FourByOne .GridElementInternal{display:flex;align-items:center}.FourByOne .GridElementInternal .image{flex:1 1}.FourByOne .GridElementInternal .image img{width:100%;max-width:100%}.FourByOne .GridElementInternal .description{min-width:20ch;width:30ch}@media (min-width: 661px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width: 660px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:12px;top:12px;font-size:24px;color:black;background:rgba(224,255,255,0.7);border-radius:5px}\n\n#about-me-parent{margin-left:10px;margin-right:10px;display:flex;flex-direction:row;justify-content:center}#about-me-parent b{font-weight:500}#about-me-parent .about-me-card{background:#61dafb;border-radius:5px;margin:0 5px 0;padding:10px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}#about-me-parent #about-me{background:#61dafb;border-radius:5px;padding:15px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content}#about-me-parent #about-me #info-parent{display:flex;flex-direction:row}#about-me-parent #about-me #info-parent #specific-info{flex:1 1}#about-me-parent #about-me #info-parent #fun-info{flex:1 1}@media screen and (max-width: 660px){#about-me-parent #about-me #info-parent{flex-direction:column}}#about-me-parent #about-me h1{font-family:\"Fira Code\", monospace;font-weight:500}#about-me-parent #about-me h2{font-family:\"Fira Code\", monospace;line-height:normal;margin-bottom:0;font-weight:400;text-align:left}#about-me-parent #about-me p{font-family:\"Montserrat\", sans-serif;font-size:16px;margin:0}#about-me-parent #about-me ul{text-align:left;padding-left:40px;margin-bottom:0}#about-me-parent #about-me li{font-family:\"Montserrat\", sans-serif;font-size:18px;list-style-type:symbols(\"+\");list-style-position:inside}button{background:none !important;border:none;padding:0 !important;color:#1890ff;cursor:pointer}\n\n","body {\n margin: 0;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',\n 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n","@import '~antd/dist/antd.css';\n\n.App {\n text-align: center;\n}\n\n.App-logo {\n height: 40vmin;\n pointer-events: none;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n .App-logo {\n animation: App-logo-spin infinite 20s linear;\n }\n}\n\n.App-header {\n background-color: #282c34;\n min-height: 100vh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n font-size: calc(10px + 2vmin);\n color: white;\n}\n\n.App-link {\n color: #61dafb;\n}\n\n@keyframes App-logo-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n",".site-footer {\n background: darkgrey;\n margin: 10px;\n border-radius: 5px;\n\n h2 {\n font-family: \"Fira Code\", monospace;\n margin: 0;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n\n @media screen and (min-width: 900px) {\n font-size: 16px;\n }\n }\n}\n\n.footer-grid {\n display: flex;\n justify-content: space-evenly;\n\n .blurb {\n flex: 9;\n }\n\n .links-container {\n flex: 4;\n }\n\n .footer-links {\n padding-left: 0;\n margin: 0;\n\n columns: 100px 2;\n\n li {\n list-style: none;\n }\n\n a {\n //color: black;\n font-family: \"Montserrat\", sans-serif;\n text-decoration: underline;\n }\n }\n\n}\n","header {\n display: flex;\n flex-direction: row;\n\n margin: 10px;\n padding: 10px;\n border-radius: 5px;\n background: #66bb6a;\n font-family: \"Fira Code\", monospace;\n\n h1 {\n font-weight: 600;\n margin: 0 0 0 5px;\n }\n\n .headerLinks {\n display: flex;\n flex-direction: row;\n align-content: center;\n margin-left: auto;\n\n h2 {\n margin: 0;\n border-radius: 5px;\n line-height: normal;\n\n &:hover {\n background: #ddd;\n }\n\n &.active {\n background-color: #4CAF50;\n color: white;\n }\n }\n\n h2:last-of-type {\n margin-right: 5px;\n }\n }\n\n /* Hide the link that should open and close the topnav on small screens */\n .icon {\n display: none;\n }\n\n @media screen and (max-width: 660px) {\n h2 {\n display: none;\n }\n\n .icon {\n margin-left: auto;\n display: block;\n position: absolute;\n top: 19px;\n right: 24px;\n font-size: 30px;\n border: none;\n }\n\n .headerLinks {\n visibility: hidden;\n transition: visibility 0s, opacity 0.5s linear;\n }\n }\n\n @media screen and (max-width: 660px) {\n &.responsive {\n display: block;\n\n .headerLinks {\n visibility: visible;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n }\n\n h1 {\n text-align: left;\n }\n\n h2 {\n display: block;\n margin-left: 5px;\n }\n }\n }\n}\n","@import \"~include-media/dist/_include-media.scss\";\n\n$breakpoints: (x-small: 430px, small: 660px, medium: 900px, large: 1300px, x-large: 1560px);\n\n// Override Sass min()\n@function min($numbers...) {\n @return m#{i}n(#{$numbers});\n}\n\n// Override Sass max()\n@function max($numbers...) {\n @return m#{a}x(#{$numbers});\n}\n\n#project-grid-parent {\n margin: 10px;\n background: #FFD43B;\n border-radius: 5px;\n\n & > #project-header {\n background: grey;\n border-radius: 5px 5px 0 0;\n margin-bottom: 2px;\n\n padding: 5px;\n\n h2 {\n margin-bottom: 0;\n font-family: \"Fira Code\", monospace;\n font-size: 24px;\n }\n\n p {\n margin: 0 0 3px;\n font-family: \"Montserrat\", sans-serif;\n font-size: 18px;\n }\n\n }\n}\n\n\n#project-grid {\n\n //padding: 10px;\n\n @include media(\"<=x-small\") {\n .GridSizer, .OneWide, .FourByOne .Medium {\n width: 100%;\n }\n }\n\n @include media(\">x-small\", \"=small\", \"=medium\", \"=large\", \"=x-large\") {\n .GridSizer, .OneWide {\n width: 300px;\n }\n .Medium {\n width: 600px;\n }\n .FourByOne {\n width: 900px;\n }\n }\n}\n\n.GridElement {\n padding: 5px;\n\n .GridElementInternal {\n padding: 9px;\n border-radius: 5px;\n background: lightcyan;\n\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);\n transition: box-shadow 0.3s ease-in-out;\n }\n\n .GridElementInternal:hover {\n box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n font-weight: 400;\n margin-bottom: 0px;\n line-height: normal;\n }\n\n h3 {\n line-height: normal;\n color: darkgrey;\n margin-bottom: 3px;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n font-size: 16px;\n color: black;\n margin-bottom: 0;\n }\n}\n\n.OneWide {\n display: flex;\n flex-direction: column;\n width: available;\n\n img {\n width: 100%;\n margin-bottom: 5px;\n }\n}\n\n.Medium {\n img {\n width: 100%;\n margin-bottom: 5px;\n }\n\n @include media(\"=medium\") {\n // Two column sort of layout\n .image {\n float: left;\n width: 50%;\n shape-outside: inset(0);\n\n img {\n margin-bottom: 0;\n }\n }\n\n .description {\n display: inline;\n\n p {\n text-align: justify;\n }\n\n h2 h3 {\n display: inline;\n }\n }\n }\n\n @include media(\">x-large\") {\n .image {\n width: 40%;\n }\n }\n}\n\n.FourByOne {\n .GridElementInternal {\n display: flex;\n align-items: center;\n\n .image {\n flex: 1;\n\n img {\n width: 100%;\n max-width: 100%;\n }\n }\n\n .description {\n min-width: 20ch;\n width: 30ch;\n }\n\n @include media(\">small\") {\n flex-direction: row;\n\n }\n @include media(\"<=small\") {\n flex-direction: column;\n .description {\n width: 95%;\n }\n }\n }\n}\n\n.LinkIcon {\n position: absolute;\n right: 12px;\n top: 12px;\n font-size: 24px;\n color: black;\n\n background: rgba(224, 255, 255, 0.7);\n border-radius: 5px;\n}\n","@charset \"UTF-8\";\n\n// _ _ _ _ _\n// (_) | | | | | (_)\n// _ _ __ ___| |_ _ __| | ___ _ __ ___ ___ __| |_ __ _\n// | | '_ \\ / __| | | | |/ _` |/ _ \\ | '_ ` _ \\ / _ \\/ _` | |/ _` |\n// | | | | | (__| | |_| | (_| | __/ | | | | | | __/ (_| | | (_| |\n// |_|_| |_|\\___|_|\\__,_|\\__,_|\\___| |_| |_| |_|\\___|\\__,_|_|\\__,_|\n//\n// Simple, elegant and maintainable media queries in Sass\n// v1.4.9\n//\n// http://include-media.com\n//\n// Authors: Eduardo Boucas (@eduardoboucas)\n// Hugo Giraudel (@hugogiraudel)\n//\n// This project is licensed under the terms of the MIT license\n\n\n////\n/// include-media library public configuration\n/// @author Eduardo Boucas\n/// @access public\n////\n\n\n///\n/// Creates a list of global breakpoints\n///\n/// @example scss - Creates a single breakpoint with the label `phone`\n/// $breakpoints: ('phone': 320px);\n///\n$breakpoints: (\n 'phone': 320px,\n 'tablet': 768px,\n 'desktop': 1024px\n) !default;\n\n\n///\n/// Creates a list of static expressions or media types\n///\n/// @example scss - Creates a single media type (screen)\n/// $media-expressions: ('screen': 'screen');\n///\n/// @example scss - Creates a static expression with logical disjunction (OR operator)\n/// $media-expressions: (\n/// 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)'\n/// );\n///\n$media-expressions: (\n 'screen': 'screen',\n 'print': 'print',\n 'handheld': 'handheld',\n 'landscape': '(orientation: landscape)',\n 'portrait': '(orientation: portrait)',\n 'retina2x': '(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx)',\n 'retina3x': '(-webkit-min-device-pixel-ratio: 3), (min-resolution: 350dpi), (min-resolution: 3dppx)'\n) !default;\n\n\n///\n/// Defines a number to be added or subtracted from each unit when declaring breakpoints with exclusive intervals\n///\n/// @example scss - Interval for pixels is defined as `1` by default\n/// @include media('>128px') {}\n///\n/// /* Generates: */\n/// @media (min-width: 129px) {}\n///\n/// @example scss - Interval for ems is defined as `0.01` by default\n/// @include media('>20em') {}\n///\n/// /* Generates: */\n/// @media (min-width: 20.01em) {}\n///\n/// @example scss - Interval for rems is defined as `0.1` by default, to be used with `font-size: 62.5%;`\n/// @include media('>2.0rem') {}\n///\n/// /* Generates: */\n/// @media (min-width: 2.1rem) {}\n///\n$unit-intervals: (\n 'px': 1,\n 'em': 0.01,\n 'rem': 0.1,\n '': 0\n) !default;\n\n///\n/// Defines whether support for media queries is available, useful for creating separate stylesheets\n/// for browsers that don't support media queries.\n///\n/// @example scss - Disables support for media queries\n/// $im-media-support: false;\n/// @include media('>=tablet') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n$im-media-support: true !default;\n\n///\n/// Selects which breakpoint to emulate when support for media queries is disabled. Media queries that start at or\n/// intercept the breakpoint will be displayed, any others will be ignored.\n///\n/// @example scss - This media query will show because it intercepts the static breakpoint\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// @include media('>=tablet') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n/// @example scss - This media query will NOT show because it does not intercept the desktop breakpoint\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'tablet';\n/// @include media('>=desktop') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* No output */\n///\n$im-no-media-breakpoint: 'desktop' !default;\n\n///\n/// Selects which media expressions are allowed in an expression for it to be used when media queries\n/// are not supported.\n///\n/// @example scss - This media query will show because it intercepts the static breakpoint and contains only accepted media expressions\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// $im-no-media-expressions: ('screen');\n/// @include media('>=tablet', 'screen') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* Generates: */\n/// .foo {\n/// color: tomato;\n/// }\n///\n/// @example scss - This media query will NOT show because it intercepts the static breakpoint but contains a media expression that is not accepted\n/// $im-media-support: false;\n/// $im-no-media-breakpoint: 'desktop';\n/// $im-no-media-expressions: ('screen');\n/// @include media('>=tablet', 'retina2x') {\n/// .foo {\n/// color: tomato;\n/// }\n/// }\n///\n/// /* No output */\n///\n$im-no-media-expressions: ('screen', 'portrait', 'landscape') !default;\n\n////\n/// Cross-engine logging engine\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Log a message either with `@error` if supported\n/// else with `@warn`, using `feature-exists('at-error')`\n/// to detect support.\n///\n/// @param {String} $message - Message to log\n///\n@function im-log($message) {\n @if feature-exists('at-error') {\n @error $message;\n } @else {\n @warn $message;\n $_: noop();\n }\n\n @return $message;\n}\n\n\n///\n/// Wrapper mixin for the log function so it can be used with a more friendly\n/// API than `@if im-log('..') {}` or `$_: im-log('..')`. Basically, use the function\n/// within functions because it is not possible to include a mixin in a function\n/// and use the mixin everywhere else because it's much more elegant.\n///\n/// @param {String} $message - Message to log\n///\n@mixin log($message) {\n @if im-log($message) {}\n}\n\n\n///\n/// Function with no `@return` called next to `@warn` in Sass 3.3\n/// to trigger a compiling error and stop the process.\n///\n@function noop() {}\n\n///\n/// Determines whether a list of conditions is intercepted by the static breakpoint.\n///\n/// @param {Arglist} $conditions - Media query conditions\n///\n/// @return {Boolean} - Returns true if the conditions are intercepted by the static breakpoint\n///\n@function im-intercepts-static-breakpoint($conditions...) {\n $no-media-breakpoint-value: map-get($breakpoints, $im-no-media-breakpoint);\n\n @if not $no-media-breakpoint-value {\n @if im-log('`#{$im-no-media-breakpoint}` is not a valid breakpoint.') {}\n }\n\n @each $condition in $conditions {\n @if not map-has-key($media-expressions, $condition) {\n $operator: get-expression-operator($condition);\n $prefix: get-expression-prefix($operator);\n $value: get-expression-value($condition, $operator);\n\n // scss-lint:disable SpaceAroundOperator\n @if ($prefix == 'max' and $value <= $no-media-breakpoint-value) or\n ($prefix == 'min' and $value > $no-media-breakpoint-value) {\n @return false;\n }\n } @else if not index($im-no-media-expressions, $condition) {\n @return false;\n }\n }\n\n @return true;\n}\n\n////\n/// Parsing engine\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Get operator of an expression\n///\n/// @param {String} $expression - Expression to extract operator from\n///\n/// @return {String} - Any of `>=`, `>`, `<=`, `<`, `≥`, `≤`\n///\n@function get-expression-operator($expression) {\n @each $operator in ('>=', '>', '<=', '<', '≥', '≤') {\n @if str-index($expression, $operator) {\n @return $operator;\n }\n }\n\n // It is not possible to include a mixin inside a function, so we have to\n // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because\n // functions cannot be called anywhere in Sass, we need to hack the call in\n // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with\n // Sass 3.3, change this line in `@if im-log(..) {}` instead.\n $_: im-log('No operator found in `#{$expression}`.');\n}\n\n\n///\n/// Get dimension of an expression, based on a found operator\n///\n/// @param {String} $expression - Expression to extract dimension from\n/// @param {String} $operator - Operator from `$expression`\n///\n/// @return {String} - `width` or `height` (or potentially anything else)\n///\n@function get-expression-dimension($expression, $operator) {\n $operator-index: str-index($expression, $operator);\n $parsed-dimension: str-slice($expression, 0, $operator-index - 1);\n $dimension: 'width';\n\n @if str-length($parsed-dimension) > 0 {\n $dimension: $parsed-dimension;\n }\n\n @return $dimension;\n}\n\n\n///\n/// Get dimension prefix based on an operator\n///\n/// @param {String} $operator - Operator\n///\n/// @return {String} - `min` or `max`\n///\n@function get-expression-prefix($operator) {\n @return if(index(('<', '<=', '≤'), $operator), 'max', 'min');\n}\n\n\n///\n/// Get value of an expression, based on a found operator\n///\n/// @param {String} $expression - Expression to extract value from\n/// @param {String} $operator - Operator from `$expression`\n///\n/// @return {Number} - A numeric value\n///\n@function get-expression-value($expression, $operator) {\n $operator-index: str-index($expression, $operator);\n $value: str-slice($expression, $operator-index + str-length($operator));\n\n @if map-has-key($breakpoints, $value) {\n $value: map-get($breakpoints, $value);\n } @else {\n $value: to-number($value);\n }\n\n $interval: map-get($unit-intervals, unit($value));\n\n @if not $interval {\n // It is not possible to include a mixin inside a function, so we have to\n // rely on the `im-log(..)` function rather than the `log(..)` mixin. Because\n // functions cannot be called anywhere in Sass, we need to hack the call in\n // a dummy variable, such as `$_`. If anybody ever raise a scoping issue with\n // Sass 3.3, change this line in `@if im-log(..) {}` instead.\n $_: im-log('Unknown unit `#{unit($value)}`.');\n }\n\n @if $operator == '>' {\n $value: $value + $interval;\n } @else if $operator == '<' {\n $value: $value - $interval;\n }\n\n @return $value;\n}\n\n\n///\n/// Parse an expression to return a valid media-query expression\n///\n/// @param {String} $expression - Expression to parse\n///\n/// @return {String} - Valid media query\n///\n@function parse-expression($expression) {\n // If it is part of $media-expressions, it has no operator\n // then there is no need to go any further, just return the value\n @if map-has-key($media-expressions, $expression) {\n @return map-get($media-expressions, $expression);\n }\n\n $operator: get-expression-operator($expression);\n $dimension: get-expression-dimension($expression, $operator);\n $prefix: get-expression-prefix($operator);\n $value: get-expression-value($expression, $operator);\n\n @return '(#{$prefix}-#{$dimension}: #{$value})';\n}\n\n///\n/// Slice `$list` between `$start` and `$end` indexes\n///\n/// @access private\n///\n/// @param {List} $list - List to slice\n/// @param {Number} $start [1] - Start index\n/// @param {Number} $end [length($list)] - End index\n///\n/// @return {List} Sliced list\n///\n@function slice($list, $start: 1, $end: length($list)) {\n @if length($list) < 1 or $start > $end {\n @return ();\n }\n\n $result: ();\n\n @for $i from $start through $end {\n $result: append($result, nth($list, $i));\n }\n\n @return $result;\n}\n\n////\n/// String to number converter\n/// @author Hugo Giraudel\n/// @access private\n////\n\n\n///\n/// Casts a string into a number\n///\n/// @param {String | Number} $value - Value to be parsed\n///\n/// @return {Number}\n///\n@function to-number($value) {\n @if type-of($value) == 'number' {\n @return $value;\n } @else if type-of($value) != 'string' {\n $_: im-log('Value for `to-number` should be a number or a string.');\n }\n\n $first-character: str-slice($value, 1, 1);\n $result: 0;\n $digits: 0;\n $minus: ($first-character == '-');\n $numbers: ('0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9);\n\n // Remove +/- sign if present at first character\n @if ($first-character == '+' or $first-character == '-') {\n $value: str-slice($value, 2);\n }\n\n @for $i from 1 through str-length($value) {\n $character: str-slice($value, $i, $i);\n\n @if not (index(map-keys($numbers), $character) or $character == '.') {\n @return to-length(if($minus, -$result, $result), str-slice($value, $i))\n }\n\n @if $character == '.' {\n $digits: 1;\n } @else if $digits == 0 {\n $result: $result * 10 + map-get($numbers, $character);\n } @else {\n $digits: $digits * 10;\n $result: $result + map-get($numbers, $character) / $digits;\n }\n }\n\n @return if($minus, -$result, $result);\n}\n\n\n///\n/// Add `$unit` to `$value`\n///\n/// @param {Number} $value - Value to add unit to\n/// @param {String} $unit - String representation of the unit\n///\n/// @return {Number} - `$value` expressed in `$unit`\n///\n@function to-length($value, $unit) {\n $units: ('px': 1px, 'cm': 1cm, 'mm': 1mm, '%': 1%, 'ch': 1ch, 'pc': 1pc, 'in': 1in, 'em': 1em, 'rem': 1rem, 'pt': 1pt, 'ex': 1ex, 'vw': 1vw, 'vh': 1vh, 'vmin': 1vmin, 'vmax': 1vmax);\n\n @if not index(map-keys($units), $unit) {\n $_: im-log('Invalid unit `#{$unit}`.');\n }\n\n @return $value * map-get($units, $unit);\n}\n\n///\n/// This mixin aims at redefining the configuration just for the scope of\n/// the call. It is helpful when having a component needing an extended\n/// configuration such as custom breakpoints (referred to as tweakpoints)\n/// for instance.\n///\n/// @author Hugo Giraudel\n///\n/// @param {Map} $tweakpoints [()] - Map of tweakpoints to be merged with `$breakpoints`\n/// @param {Map} $tweak-media-expressions [()] - Map of tweaked media expressions to be merged with `$media-expression`\n///\n/// @example scss - Extend the global breakpoints with a tweakpoint\n/// @include media-context(('custom': 678px)) {\n/// .foo {\n/// @include media('>phone', '<=custom') {\n/// // ...\n/// }\n/// }\n/// }\n///\n/// @example scss - Extend the global media expressions with a custom one\n/// @include media-context($tweak-media-expressions: ('all': 'all')) {\n/// .foo {\n/// @include media('all', '>phone') {\n/// // ...\n/// }\n/// }\n/// }\n///\n/// @example scss - Extend both configuration maps\n/// @include media-context(('custom': 678px), ('all': 'all')) {\n/// .foo {\n/// @include media('all', '>phone', '<=custom') {\n/// // ...\n/// }\n/// }\n/// }\n///\n@mixin media-context($tweakpoints: (), $tweak-media-expressions: ()) {\n // Save global configuration\n $global-breakpoints: $breakpoints;\n $global-media-expressions: $media-expressions;\n\n // Update global configuration\n $breakpoints: map-merge($breakpoints, $tweakpoints) !global;\n $media-expressions: map-merge($media-expressions, $tweak-media-expressions) !global;\n\n @content;\n\n // Restore global configuration\n $breakpoints: $global-breakpoints !global;\n $media-expressions: $global-media-expressions !global;\n}\n\n////\n/// include-media public exposed API\n/// @author Eduardo Boucas\n/// @access public\n////\n\n\n///\n/// Generates a media query based on a list of conditions\n///\n/// @param {Arglist} $conditions - Media query conditions\n///\n/// @example scss - With a single set breakpoint\n/// @include media('>phone') { }\n///\n/// @example scss - With two set breakpoints\n/// @include media('>phone', '<=tablet') { }\n///\n/// @example scss - With custom values\n/// @include media('>=358px', '<850px') { }\n///\n/// @example scss - With set breakpoints with custom values\n/// @include media('>desktop', '<=1350px') { }\n///\n/// @example scss - With a static expression\n/// @include media('retina2x') { }\n///\n/// @example scss - Mixing everything\n/// @include media('>=350px', ' 0) {\n @media #{unquote(parse-expression(nth($conditions, 1)))} {\n // Recursive call\n @include media(slice($conditions, 2)...) {\n @content;\n }\n }\n }\n}\n","#about-me-parent {\n margin-left: 10px;\n margin-right: 10px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n\n b {\n font-weight: 500;\n }\n\n .about-me-card {\n background: #61dafb;\n border-radius: 5px;\n margin: 0 5px 0;\n padding: 10px;\n width: fit-content;\n }\n\n #about-me {\n background: #61dafb;\n border-radius: 5px;\n padding: 15px;\n width: fit-content;\n\n #info-parent {\n display: flex;\n flex-direction: row;\n\n #specific-info {\n flex: 1 1 0;\n }\n\n #fun-info {\n flex: 1 1 0;\n }\n\n @media screen and (max-width: 660px) {\n flex-direction: column;\n }\n }\n\n h1 {\n font-family: \"Fira Code\", monospace;\n font-weight: 500;\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n line-height: normal;\n margin-bottom: 0;\n font-weight: 400;\n\n text-align: left;\n }\n\n p {\n font-family: \"Montserrat\", sans-serif;\n font-size: 16px;\n margin: 0;\n }\n\n ul {\n text-align: left;\n padding-left: 40px;\n margin-bottom: 0;\n }\n\n li {\n font-family: \"Montserrat\", sans-serif;\n font-size: 18px;\n list-style-type: symbols(\"+\");\n list-style-position: inside;\n\n }\n }\n\n}\n\nbutton {\n background: none!important;\n border: none;\n padding: 0!important;\n color: #1890ff;\n cursor: pointer;\n}\n"]} \ No newline at end of file diff --git a/static/js/2.8c603c54.chunk.js b/static/js/2.032a3ef4.chunk.js similarity index 97% rename from static/js/2.8c603c54.chunk.js rename to static/js/2.032a3ef4.chunk.js index 5ed7420..9c9f6f2 100644 --- a/static/js/2.8c603c54.chunk.js +++ b/static/js/2.032a3ef4.chunk.js @@ -1,3 +1,3 @@ -/*! For license information please see 2.8c603c54.chunk.js.LICENSE.txt */ -(this["webpackJsonppersonal-website-static"]=this["webpackJsonppersonal-website-static"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(97)},function(e,t,n){"use strict";e.exports=n(96)},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(9);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0;d--){var p=a[d];"."===p?i(a,d):".."===p?(i(a,d),f++):f&&(i(a,d),f--)}if(!s)for(;f--;f)a.unshift("..");!s||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function u(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"===typeof t||"object"===typeof n){var r=u(t),o=u(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},s=n(15);function c(e){return"/"===e.charAt(0)?e:"/"+e}function f(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var i;"string"===typeof e?(i=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var i=t.indexOf("?");return-1!==i&&(n=t.substr(i),t=t.substr(0,i)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(i=Object(r.a)({},e)).pathname&&(i.pathname=""),i.search?"?"!==i.search.charAt(0)&&(i.search="?"+i.search):i.search="",i.hash?"#"!==i.hash.charAt(0)&&(i.hash="#"+i.hash):i.hash="",void 0!==t&&void 0===i.state&&(i.state=t));try{i.pathname=decodeURI(i.pathname)}catch(u){throw u instanceof URIError?new URIError('Pathname "'+i.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):u}return n&&(i.key=n),o?i.pathname?"/"!==i.pathname.charAt(0)&&(i.pathname=a(i.pathname,o.pathname)):i.pathname=o.pathname:i.pathname||(i.pathname="/"),i}function v(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var i="function"===typeof e?e(t,n):e;"string"===typeof i?"function"===typeof r?r(i,o):o(!0):o(!1!==i)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),f({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,d(),w.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,f({action:r,location:o}))}))},go:b,goBack:function(){b(-1)},goForward:function(){b(1)},canGo:function(e){var t=w.index+e;return t>=0&&t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}},function(e,t,n){"use strict";n.d(t,"b",(function(){return i})),n.d(t,"a",(function(){return a})),n.d(t,"c",(function(){return u}));var r=n(28);function o(e){return(o="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t){"function"===typeof e?e(t):"object"===o(e)&&e&&"current"in e&&(e.current=t)}function a(){for(var e=arguments.length,t=new Array(e),n=0;n=0||(o[n]=e[n]);return o}n.d(t,"a",(function(){return r}))},,function(e,t,n){"use strict";var r=n(9),o=n(2),i=n(4),a=n(10),u=n(0),l=n(42),s=n(19),c=n(6),f=n.n(c),d=n(25);function p(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit".concat(e)]="webkit".concat(t),n["Moz".concat(e)]="moz".concat(t),n["ms".concat(e)]="MS".concat(t),n["O".concat(e)]="o".concat(t.toLowerCase()),n}var h=function(e,t){var n={animationend:p("Animation","AnimationEnd"),transitionend:p("Transition","TransitionEnd")};return e&&("AnimationEvent"in t||delete n.animationend.animation,"TransitionEvent"in t||delete n.transitionend.transition),n}(Object(d.a)(),"undefined"!==typeof window?window:{}),m={};if(Object(d.a)()){var v=document.createElement("div");m=v.style}var g={};function y(e){if(g[e])return g[e];var t=h[e];if(t)for(var n=Object.keys(t),r=n.length,o=0;o1&&void 0!==arguments[1]?arguments[1]:2;t();var i=Object(z.a)((function(){o<=1?r({isCanceled:function(){return i!==e.current}}):n(r,o-1)}));e.current=i},t]}(),s=Object(i.a)(l,2),c=s[0],f=s[1];return A((function(){if(o!==P&&o!==L){var e=I.indexOf(o),n=I[e+1],r=t(o);false===r?a(n):c((function(e){function t(){e.isCanceled()||a(n)}!0===r?t():Promise.resolve(r).then(t)}))}}),[e,o]),u.useEffect((function(){return function(){f()}}),[]),[function(){a(j)},o]};function H(e,t,n,a){var l=a.motionEnter,s=void 0===l||l,c=a.motionAppear,f=void 0===c||c,d=a.motionLeave,p=void 0===d||d,h=a.motionDeadline,m=a.motionLeaveImmediately,v=a.onAppearPrepare,g=a.onEnterPrepare,y=a.onLeavePrepare,b=a.onAppearStart,w=a.onEnterStart,x=a.onLeaveStart,O=a.onAppearActive,P=a.onEnterActive,L=a.onLeaveActive,z=a.onAppearEnd,I=a.onEnterEnd,H=a.onLeaveEnd,B=a.onVisibleChanged,W=R(),U=Object(i.a)(W,2),V=U[0],$=U[1],q=R(S),Y=Object(i.a)(q,2),Q=Y[0],X=Y[1],K=R(null),G=Object(i.a)(K,2),J=G[0],Z=G[1],ee=Object(u.useRef)(!1),te=Object(u.useRef)(null),ne=Object(u.useRef)(!1),re=Object(u.useRef)(null);function oe(){return n()||re.current}var ie=Object(u.useRef)(!1);function ae(e){var t,n=oe();e&&!e.deadline&&e.target!==n||(Q===C&&ie.current?t=null===z||void 0===z?void 0:z(n,e):Q===_&&ie.current?t=null===I||void 0===I?void 0:I(n,e):Q===T&&ie.current&&(t=null===H||void 0===H?void 0:H(n,e)),!1===t||ne.current||(X(S),Z(null)))}var ue=function(e){var t=Object(u.useRef)(),n=Object(u.useRef)(e);n.current=e;var r=u.useCallback((function(e){n.current(e)}),[]);function o(e){e&&(e.removeEventListener(k,r),e.removeEventListener(E,r))}return u.useEffect((function(){return function(){o(t.current)}}),[]),[function(e){t.current&&t.current!==e&&o(t.current),e&&e!==t.current&&(e.addEventListener(k,r),e.addEventListener(E,r),t.current=e)},o]}(ae),le=Object(i.a)(ue,1)[0],se=u.useMemo((function(){var e,t,n;switch(Q){case"appear":return e={},Object(r.a)(e,j,v),Object(r.a)(e,N,b),Object(r.a)(e,M,O),e;case"enter":return t={},Object(r.a)(t,j,g),Object(r.a)(t,N,w),Object(r.a)(t,M,P),t;case"leave":return n={},Object(r.a)(n,j,y),Object(r.a)(n,N,x),Object(r.a)(n,M,L),n;default:return{}}}),[Q]),ce=F(Q,(function(e){if(e===j){var t=se.prepare;return!!t&&t(oe())}var n;pe in se&&Z((null===(n=se[pe])||void 0===n?void 0:n.call(se,oe(),null))||null);return pe===M&&(le(oe()),h>0&&(clearTimeout(te.current),te.current=setTimeout((function(){ae({deadline:!0})}),h))),true})),fe=Object(i.a)(ce,2),de=fe[0],pe=fe[1],he=D(pe);ie.current=he,A((function(){if($(t),e){var n,r=ee.current;ee.current=!0,!r&&t&&f&&(n=C),r&&t&&s&&(n=_),(r&&!t&&p||!r&&m&&!t&&p)&&(n=T),n&&(X(n),de())}}),[t]),Object(u.useEffect)((function(){(Q===C&&!f||Q===_&&!s||Q===T&&!p)&&X(S)}),[f,s,p]),Object(u.useEffect)((function(){return function(){clearTimeout(te.current),ne.current=!0}}),[]),Object(u.useEffect)((function(){void 0!==V&&Q===S&&(null===B||void 0===B||B(V))}),[V,Q]);var me=J;return se.prepare&&pe===N&&(me=Object(o.a)({transition:"none"},me)),[Q,pe,me,null!==V&&void 0!==V?V:t]}var B=n(31),W=n(32),U=n(33),V=n(34),$=function(e){Object(U.a)(n,e);var t=Object(V.a)(n);function n(){return Object(B.a)(this,n),t.apply(this,arguments)}return Object(W.a)(n,[{key:"render",value:function(){return this.props.children}}]),n}(u.Component);var q=function(e){var t=e;function n(e){return!(!e.motionName||!t)}"object"===Object(a.a)(e)&&(t=e.transitionSupport);var c=u.forwardRef((function(e,t){var a=e.visible,c=void 0===a||a,d=e.removeOnLeave,p=void 0===d||d,h=e.forceRender,m=e.children,v=e.motionName,g=e.leavedClassName,y=e.eventProps,b=n(e),w=Object(u.useRef)(),x=Object(u.useRef)();var E=H(b,c,(function(){try{return Object(l.a)(w.current||x.current)}catch(e){return null}}),e),k=Object(i.a)(E,4),C=k[0],_=k[1],T=k[2],P=k[3],M=Object(u.useRef)(t);M.current=t;var L,R=u.useCallback((function(e){w.current=e,Object(s.b)(M.current,e)}),[]),A=Object(o.a)(Object(o.a)({},y),{},{visible:c});if(m)if(C!==S&&n(e)){var z,I;_===j?I="prepare":D(_)?I="active":_===N&&(I="start"),L=m(Object(o.a)(Object(o.a)({},A),{},{className:f()(O(v,C),(z={},Object(r.a)(z,O(v,"".concat(C,"-").concat(I)),I),Object(r.a)(z,v,"string"===typeof v),z)),style:T}),R)}else L=P?m(Object(o.a)({},A),R):p?h?m(Object(o.a)(Object(o.a)({},A),{},{style:{display:"none"}}),R):null:m(Object(o.a)(Object(o.a)({},A),{},{className:g}),R);else L=null;return u.createElement($,{ref:x},L)}));return c.displayName="CSSMotion",c}(x),Y=n(18),Q="add",X="keep",K="remove",G="removed";function J(e){var t;return t=e&&"object"===Object(a.a)(e)&&"key"in e?e:{key:e},Object(o.a)(Object(o.a)({},t),{},{key:String(t.key)})}function Z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.map(J)}function ee(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=[],r=0,i=t.length,a=Z(e),u=Z(t);a.forEach((function(e){for(var t=!1,a=r;a1}));return s.forEach((function(e){(n=n.filter((function(t){var n=t.key,r=t.status;return n!==e||r!==K}))).forEach((function(t){t.key===e&&(t.status=X)}))})),n}var te=["eventProps","visible","children","motionName","motionAppear","motionEnter","motionLeave","motionLeaveImmediately","motionDeadline","removeOnLeave","leavedClassName","onAppearStart","onAppearActive","onAppearEnd","onEnterStart","onEnterActive","onEnterEnd","onLeaveStart","onLeaveActive","onLeaveEnd"];(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:q,n=function(e){Object(U.a)(r,e);var n=Object(V.a)(r);function r(){var e;return Object(B.a)(this,r),(e=n.apply(this,arguments)).state={keyEntities:[]},e.removeKey=function(t){e.setState((function(e){return{keyEntities:e.keyEntities.map((function(e){return e.key!==t?e:Object(o.a)(Object(o.a)({},e),{},{status:G})}))}}))},e}return Object(W.a)(r,[{key:"render",value:function(){var e=this,n=this.state.keyEntities,r=this.props,o=r.component,i=r.children,a=r.onVisibleChanged,l=Object(Y.a)(r,["component","children","onVisibleChanged"]),s=o||u.Fragment,c={};return te.forEach((function(e){c[e]=l[e],delete l[e]})),delete l.keys,u.createElement(s,Object.assign({},l),n.map((function(n){var r=n.status,o=Object(Y.a)(n,["status"]),l=r===Q||r===X;return u.createElement(t,Object.assign({},c,{key:o.key,visible:l,eventProps:o,onVisibleChanged:function(t){null===a||void 0===a||a(t,{key:o.key}),t||e.removeKey(o.key)}}),i)})))}}],[{key:"getDerivedStateFromProps",value:function(e,t){var n=e.keys,r=t.keyEntities,o=Z(n);return{keyEntities:ee(r,o).filter((function(e){var t=r.find((function(t){var n=t.key;return e.key===n}));return!t||t.status!==G||e.status!==K}))}}}]),r}(u.Component);n.defaultProps={component:"div"}})(x),t.a=q},function(e,t,n){"use strict";n.d(t,"b",(function(){return o})),n.d(t,"a",(function(){return i}));var r=n(0),o=r.isValidElement;function i(e,t){return function(e,t,n){return o(e)?r.cloneElement(e,"function"===typeof n?n(e.props||{}):n):t}(e,e,t)}},function(e,t,n){"use strict";function r(){return!("undefined"===typeof window||!window.document||!window.document.createElement)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return r}));var r=function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r=e[n];switch(n){case"class":t.className=r,delete t.class;break;default:t[n]=r}return t}),{})}function g(e,t,n){return n?u.a.createElement(e.tag,Object(c.a)(Object(c.a)({key:t},v(e.attrs)),n),(e.children||[]).map((function(n,r){return g(n,"".concat(t,"-").concat(e.tag,"-").concat(r))}))):u.a.createElement(e.tag,Object(c.a)({key:t},v(e.attrs)),(e.children||[]).map((function(n,r){return g(n,"".concat(t,"-").concat(e.tag,"-").concat(r))})))}function y(e){return Object(d.generate)(e)[0]}function b(e){return e?Array.isArray(e)?e:[e]:[]}var w="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n",x=!1,E={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};var k=function(e){var t,n,r=e.icon,o=e.className,u=e.onClick,l=e.style,s=e.primaryColor,f=e.secondaryColor,d=Object(i.a)(e,["icon","className","onClick","style","primaryColor","secondaryColor"]),v=E;if(s&&(v={primaryColor:s,secondaryColor:f||y(s)}),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:w;Object(a.useEffect)((function(){x||(Object(h.insertCss)(e,{prepend:!0}),x=!0)}),[])}(),t=m(r),n="icon should be icon definiton, but got ".concat(r),Object(p.a)(t,"[@ant-design/icons] ".concat(n)),!m(r))return null;var b=r;return b&&"function"===typeof b.icon&&(b=Object(c.a)(Object(c.a)({},b),{},{icon:b.icon(v.primaryColor,v.secondaryColor)})),g(b.icon,"svg-".concat(b.name),Object(c.a)({className:o,onClick:u,style:l,"data-icon":b.name,width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true"},d))};k.displayName="IconReact",k.getTwoToneColors=function(){return Object(c.a)({},E)},k.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;E.primaryColor=t,E.secondaryColor=n||y(t),E.calculated=!!n};var O=k;function S(e){var t=b(e),n=Object(r.a)(t,2),o=n[0],i=n[1];return O.setTwoToneColors({primaryColor:o,secondaryColor:i})}S("#1890ff");var C=a.forwardRef((function(e,t){var n=e.className,u=e.icon,l=e.spin,c=e.rotate,f=e.tabIndex,d=e.onClick,p=e.twoToneColor,h=Object(i.a)(e,["className","icon","spin","rotate","tabIndex","onClick","twoToneColor"]),m=s()("anticon",Object(o.a)({},"anticon-".concat(u.name),Boolean(u.name)),{"anticon-spin":!!l||"loading"===u.name},n),v=f;void 0===v&&d&&(v=-1);var g=c?{msTransform:"rotate(".concat(c,"deg)"),transform:"rotate(".concat(c,"deg)")}:void 0,y=b(p),w=Object(r.a)(y,2),x=w[0],E=w[1];return a.createElement("span",Object.assign({role:"img","aria-label":u.name},h,{ref:t,tabIndex:v,onClick:d,className:m}),a.createElement(O,{icon:u,primaryColor:x,secondaryColor:E,style:g}))}));C.displayName="AntdIcon",C.getTwoToneColor=function(){var e=O.getTwoToneColors();return e.calculated?[e.primaryColor,e.secondaryColor]:e.primaryColor},C.setTwoToneColor=S;t.a=C},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(e).reduce((function(t,n){var r=e[n];switch(n){case"class":t.className=r,delete t.class;break;default:t[n]=r}return t}),{})}t.svgBaseProps={width:"1em",height:"1em",fill:"currentColor","aria-hidden":"true",focusable:"false"};var d="\n.anticon {\n display: inline-block;\n color: inherit;\n font-style: normal;\n line-height: 0;\n text-align: center;\n text-transform: none;\n vertical-align: -0.125em;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.anticon > * {\n line-height: 1;\n}\n\n.anticon svg {\n display: inline-block;\n}\n\n.anticon::before {\n display: none;\n}\n\n.anticon .anticon-icon {\n display: block;\n}\n\n.anticon[tabindex] {\n cursor: pointer;\n}\n\n.anticon-spin::before,\n.anticon-spin {\n display: inline-block;\n -webkit-animation: loadingCircle 1s infinite linear;\n animation: loadingCircle 1s infinite linear;\n}\n\n@-webkit-keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes loadingCircle {\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n";t.iconStyles=d;var p=!1;t.useInsertStyles=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:d;(0,l.useEffect)((function(){p||((0,c.insertCss)(e,{prepend:!0}),p=!0)}),[])}},function(e,t,n){var r,o;"undefined"!=typeof window&&window,void 0===(o="function"===typeof(r=function(){"use strict";function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var n=this._events=this._events||{},r=n[e]=n[e]||[];return-1==r.indexOf(t)&&r.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var n=this._onceEvents=this._onceEvents||{};return(n[e]=n[e]||{})[t]=!0,this}},t.off=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){var r=n.indexOf(t);return-1!=r&&n.splice(r,1),this}},t.emitEvent=function(e,t){var n=this._events&&this._events[e];if(n&&n.length){n=n.slice(0),t=t||[];for(var r=this._onceEvents&&this._onceEvents[e],o=0;o