diff --git a/200.html b/200.html index 4f2be34..7a46a4b 100644 --- a/200.html +++ b/200.html @@ -1 +1 @@ -Jake Cover
\ No newline at end of file +Jake Cover
\ No newline at end of file diff --git a/asset-manifest.json b/asset-manifest.json index 000a840..6f74860 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,29 +1,29 @@ { "files": { - "main.css": "/static/css/main.65ff46dc.chunk.css", - "main.js": "/static/js/main.87e4c7eb.chunk.js", - "main.js.map": "/static/js/main.87e4c7eb.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.8021122e.js", - "runtime-main.js.map": "/static/js/runtime-main.8021122e.js.map", + "main.css": "/static/css/main.b63ce666.chunk.css", + "main.js": "/static/js/main.f3d9322c.chunk.js", + "main.js.map": "/static/js/main.f3d9322c.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.835a4521.js", + "runtime-main.js.map": "/static/js/runtime-main.835a4521.js.map", "static/css/2.85610714.chunk.css": "/static/css/2.85610714.chunk.css", - "static/js/2.5502687c.chunk.js": "/static/js/2.5502687c.chunk.js", - "static/js/2.5502687c.chunk.js.map": "/static/js/2.5502687c.chunk.js.map", - "static/js/3.ea284f50.chunk.js": "/static/js/3.ea284f50.chunk.js", - "static/js/3.ea284f50.chunk.js.map": "/static/js/3.ea284f50.chunk.js.map", + "static/js/2.a75657ec.chunk.js": "/static/js/2.a75657ec.chunk.js", + "static/js/2.a75657ec.chunk.js.map": "/static/js/2.a75657ec.chunk.js.map", + "static/js/3.2e21e00f.chunk.js": "/static/js/3.2e21e00f.chunk.js", + "static/js/3.2e21e00f.chunk.js.map": "/static/js/3.2e21e00f.chunk.js.map", "index.html": "/index.html", "static/css/2.85610714.chunk.css.map": "/static/css/2.85610714.chunk.css.map", - "static/css/main.65ff46dc.chunk.css.map": "/static/css/main.65ff46dc.chunk.css.map", - "static/js/2.5502687c.chunk.js.LICENSE.txt": "/static/js/2.5502687c.chunk.js.LICENSE.txt", + "static/css/main.b63ce666.chunk.css.map": "/static/css/main.b63ce666.chunk.css.map", + "static/js/2.a75657ec.chunk.js.LICENSE.txt": "/static/js/2.a75657ec.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", "static/media/scoresaver.3f65e348.svg": "/static/media/scoresaver.3f65e348.svg" }, "entrypoints": [ - "static/js/runtime-main.8021122e.js", + "static/js/runtime-main.835a4521.js", "static/css/2.85610714.chunk.css", - "static/js/2.5502687c.chunk.js", - "static/css/main.65ff46dc.chunk.css", - "static/js/main.87e4c7eb.chunk.js" + "static/js/2.a75657ec.chunk.js", + "static/css/main.b63ce666.chunk.css", + "static/js/main.f3d9322c.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 5b4621f..1995afa 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Jake Cover

Jake Cover

Hi! I'm Jake!

A bit about me:

  • Name: Jake Cover
  • Occupation: Student
  • Location: Southern California
  • Projects:
  • Resume: Over here
  • Find Me:

I'm:

  • 18 and 20/27 years old
  • not listening to anything right now.
  • doing (general stuff - in class, projects, sleeping, games)
  • rather colorblind

</> My Projects

A gallery of some of my most interesting projects. Look for , click those projects for more information!

ElaticMatch

CodeDay

A set of tools, including a custom suggestion and weighting system, as well as a custom matching +Jake Cover

Jake Cover

Hi! I'm Jake!

A bit about me:

  • Name: Jake Cover
  • Occupation: Student
  • Location: Southern California
  • Projects:
  • Resume: Over here
  • Find Me:

I'm:

  • 18 and 20/27 years old
  • not listening to anything right now.
  • doing (general stuff - in class, projects, sleeping, games)
  • rather colorblind
\ No newline at end of file + easily.

\ No newline at end of file diff --git a/static/css/main.65ff46dc.chunk.css b/static/css/main.65ff46dc.chunk.css deleted file mode 100644 index 1d5b6fc..0000000 --- a/static/css/main.65ff46dc.chunk.css +++ /dev/null @@ -1,2 +0,0 @@ -@import url(https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;500;600;700&display=swap);*{color:#2a363b}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;background-color:#3767a8!important}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:#84b7db;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:#84b7db;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:#fecea8;border-radius:5px}#project-grid-parent>#project-header{background:#1c1c1c;border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header *{color:#fff}#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:#f1f1f1;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:#f1f1f1;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.65ff46dc.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.65ff46dc.chunk.css.map b/static/css/main.65ff46dc.chunk.css.map deleted file mode 100644 index 326272b..0000000 --- a/static/css/main.65ff46dc.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["main.65ff46dc.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.65ff46dc.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);\n*{color:#2A363B}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;background-color:#3767A8 !important}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:#84B7DB;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:#84B7DB;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:#FECEA8;border-radius:5px}#project-grid-parent>#project-header{background:#1C1C1C;border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header *{color:white}#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:#F1F1F1;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:#F1F1F1;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:#F1F1F1;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","* {\n color: #2A363B;\n}\n\nbody {\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 //background: url(\"./images/y-so-serious-white.png\") repeat;\n background-color: #3767A8 !important;\n}\n\n#root {\n}\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: #84B7DB;\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: #84B7DB;\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: #FECEA8;\n border-radius: 5px;\n\n & > #project-header {\n background: #1C1C1C;\n border-radius: 5px 5px 0 0;\n margin-bottom: 2px;\n\n\n padding: 5px;\n\n * {\n color: white;\n }\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: #F1F1F1;\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: #F1F1F1;\n border-radius: 5px;\n margin: 0 5px 0;\n padding: 10px;\n width: fit-content;\n }\n\n #about-me {\n background: #F1F1F1;\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.b63ce666.chunk.css b/static/css/main.b63ce666.chunk.css new file mode 100644 index 0000000..62ae8d5 --- /dev/null +++ b/static/css/main.b63ce666.chunk.css @@ -0,0 +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);*{color:var(--text)}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;background-color:var(--background)!important}code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace}:root{--text:#000;--background:#3767a8;--header:#84b7db;--footer:var(--header);--about-me:#f1f1f1;--grid-background:#fecea8;--grid-header-background:#1c1c1c;--grid-header-text:#f1f1f1;--grid-element-background:#f1f1f1;--chainlink-icon-background:rgba(224,255,255,0.7);--link-color:#1890ff;--grid-element-subheader:#a9a9a9}.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:var(--footer);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:var(--header);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:var(--grid-background);border-radius:5px}#project-grid-parent>#project-header{background:var(--grid-header-background);border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header *{color:var(--grid-header-text)}#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:var(--grid-element-background);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:var(--grid-element-subheader);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:var(--chainlink-icon-background);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:var(--about-me);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;cursor:pointer}a,button{color:var(--link-color)} +/*# sourceMappingURL=main.b63ce666.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.b63ce666.chunk.css.map b/static/css/main.b63ce666.chunk.css.map new file mode 100644 index 0000000..3e39e72 --- /dev/null +++ b/static/css/main.b63ce666.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["main.b63ce666.chunk.css","webpack://src/index.scss","webpack://src/vars.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.b63ce666.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);\n*{color:var(--text)}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;background-color:var(--background) !important}code{font-family:source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace}\n\n\n\n:root{--text: black;--background: #3767a8;--header: #84B7DB;--footer: var(--header);--about-me: #F1F1F1;--grid-background: #FECEA8;--grid-header-background: #1C1C1c;--grid-header-text: #F1F1F1;--grid-element-background: #F1F1F1;--chainlink-icon-background: rgba(224, 255, 255, 0.7);--link-color: #1890ff;--grid-element-subheader: darkgrey}\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:var(--footer);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:var(--header);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:var(--grid-background);border-radius:5px}#project-grid-parent>#project-header{background:var(--grid-header-background);border-radius:5px 5px 0 0;margin-bottom:2px;padding:5px}#project-grid-parent>#project-header *{color:var(--grid-header-text)}#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:var(--grid-element-background);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:var(--grid-element-subheader);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:var(--chainlink-icon-background);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:var(--about-me);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:var(--about-me);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:var(--link-color);cursor:pointer}a{color:var(--link-color)}\n\n","* {\n color: var(--text);\n}\n\nbody {\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 //background: url(\"./images/y-so-serious-white.png\") repeat;\n background-color: var(--background) !important;\n}\n\n#root {\n}\n\n\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n",":root {\n --text: black;\n --background: #3767a8;\n --header: #84B7DB;\n --footer: var(--header);\n --about-me: #F1F1F1;\n --grid-background: #FECEA8;\n --grid-header-background: #1C1C1c;\n --grid-header-text: #F1F1F1;\n --grid-element-background: #F1F1F1;\n --chainlink-icon-background: rgba(224, 255, 255, 0.7);\n --link-color: #1890ff;\n --grid-element-subheader: darkgrey;\n}\n//:root {\n// --text: black;\n// --background: #FFFFFF;\n// --header: #55CDFC;\n// --footer: #55CDFC;\n// --about-me: #F7A8B8;\n// --grid-background: #F7A8B8;\n// --grid-header-background: #55CDFC;\n// --grid-header-text: black;\n// --grid-element-background: #FFFFFF;\n// --chainlink-icon-background: rgba(224, 255, 255, 0.7);\n// --link-color: white;\n// --grid-element-subheader: #F7A8B8;\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: var(--footer);\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: var(--header);\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: var(--grid-background);\n border-radius: 5px;\n\n & > #project-header {\n background: var(--grid-header-background);\n border-radius: 5px 5px 0 0;\n margin-bottom: 2px;\n\n\n padding: 5px;\n\n * {\n color: var(--grid-header-text);\n }\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: var(--grid-element-background);\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: var(--grid-element-subheader);\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: var(--chainlink-icon-background);\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: var(--about-me);\n border-radius: 5px;\n margin: 0 5px 0;\n padding: 10px;\n width: fit-content;\n }\n\n #about-me {\n background: var(--about-me);\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: var(--link-color);\n cursor: pointer;\n}\n\na {\n color: var(--link-color);\n}\n"]} \ No newline at end of file diff --git a/static/js/2.5502687c.chunk.js b/static/js/2.a75657ec.chunk.js similarity index 83% rename from static/js/2.5502687c.chunk.js rename to static/js/2.a75657ec.chunk.js index 9f13e69..5cd569f 100644 --- a/static/js/2.5502687c.chunk.js +++ b/static/js/2.a75657ec.chunk.js @@ -1,3 +1,3 @@ -/*! For license information please see 2.5502687c.chunk.js.LICENSE.txt */ -(this["webpackJsonppersonal-website-static"]=this["webpackJsonppersonal-website-static"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(98)},function(e,t,n){"use strict";e.exports=n(97)},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";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(99)},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(44),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(I.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=D.indexOf(o),n=D[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,I=a.onAppearEnd,D=a.onEnterEnd,H=a.onLeaveEnd,W=a.onVisibleChanged,B=R(),U=Object(i.a)(B,2),V=U[0],$=U[1],q=R(S),Y=Object(i.a)(q,2),Q=Y[0],X=Y[1],G=R(null),K=Object(i.a)(G,2),J=K[0],Z=K[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===I||void 0===I?void 0:I(n,e):Q===_&&ie.current?t=null===D||void 0===D?void 0:D(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(E,r),e.removeEventListener(k,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(E,r),e.addEventListener(k,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=z(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===W||void 0===W||W(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 W=n(31),B=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(W.a)(this,n),t.apply(this,arguments)}return Object(B.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 k=H(b,c,(function(){try{return Object(l.a)(w.current||x.current)}catch(e){return null}}),e),E=Object(i.a)(k,4),C=E[0],_=E[1],T=E[2],P=E[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 I,D;_===j?D="prepare":z(_)?D="active":_===N&&(D="start"),L=m(Object(o.a)(Object(o.a)({},A),{},{className:f()(O(v,C),(I={},Object(r.a)(I,O(v,"".concat(C,"-").concat(D)),D),Object(r.a)(I,v,"string"===typeof v),I)),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(17),Q="add",X="keep",G="remove",K="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!==G}))).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(W.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:K})}))}}))},e}return Object(B.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!==K||e.status!==G}))}}}]),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;ne.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}),{})}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,k={primaryColor:"#333",secondaryColor:"#E6E6E6",calculated:!1};var E=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=k;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))};E.displayName="IconReact",E.getTwoToneColors=function(){return Object(c.a)({},k)},E.setTwoToneColors=function(e){var t=e.primaryColor,n=e.secondaryColor;k.primaryColor=t,k.secondaryColor=n||y(t),k.calculated=!!n};var O=E;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],k=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:k,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){var r=n(29);function o(){if("function"!==typeof WeakMap)return null;var e=new WeakMap;return o=function(){return e},e}e.exports=function(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&"function"!==typeof e)return{default:e};var t=o();if(t&&t.has(e))return t.get(e);var n={},i=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a)){var u=i?Object.getOwnPropertyDescriptor(e,a):null;u&&(u.get||u.set)?Object.defineProperty(n,a,u):n[a]=e[a]}return n.default=e,t&&t.set(e,n),n}},function(e,t,n){"use strict";var r=n(49),o=n(36);Object.defineProperty(t,"__esModule",{value:!0}),t.warning=function(e,t){(0,s.default)(e,"[@ant-design/icons] ".concat(t))},t.isIconDefinition=function(e){return"object"===(0,a.default)(e)&&"string"===typeof e.name&&"string"===typeof e.theme&&("object"===(0,a.default)(e.icon)||"function"===typeof e.icon)},t.normalizeAttrs=f,t.generate=function e(t,n,r){if(!r)return l.default.createElement(t.tag,(0,i.default)({key:n},f(t.attrs)),(t.children||[]).map((function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))})));return l.default.createElement(t.tag,(0,i.default)((0,i.default)({key:n},f(t.attrs)),r),(t.children||[]).map((function(r,o){return e(r,"".concat(n,"-").concat(t.tag,"-").concat(o))})))},t.getSecondaryColor=function(e){return(0,u.generate)(e)[0]},t.normalizeTwoToneColors=function(e){if(!e)return[];return Array.isArray(e)?e:[e]},t.useInsertStyles=t.iconStyles=t.svgBaseProps=void 0;var i=o(n(66)),a=o(n(29)),u=n(55),l=r(n(0)),s=o(n(126)),c=n(54);function f(){var e=arguments.length>0&&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