diff --git a/200.html b/200.html index 0e7bf65..c5bc640 100644 --- a/200.html +++ b/200.html @@ -1 +1 @@ -Julie Cover
\ No newline at end of file +Julie Cover
\ No newline at end of file diff --git a/asset-manifest.json b/asset-manifest.json index 36e885d..f18e541 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,19 +1,19 @@ { "files": { - "main.css": "/static/css/main.8feef5f1.chunk.css", - "main.js": "/static/js/main.fcb78e61.chunk.js", - "main.js.map": "/static/js/main.fcb78e61.chunk.js.map", - "runtime-main.js": "/static/js/runtime-main.d39da719.js", - "runtime-main.js.map": "/static/js/runtime-main.d39da719.js.map", + "main.css": "/static/css/main.b1b9e387.chunk.css", + "main.js": "/static/js/main.a06d7fb4.chunk.js", + "main.js.map": "/static/js/main.a06d7fb4.chunk.js.map", + "runtime-main.js": "/static/js/runtime-main.e615543c.js", + "runtime-main.js.map": "/static/js/runtime-main.e615543c.js.map", "static/css/2.85610714.chunk.css": "/static/css/2.85610714.chunk.css", - "static/js/2.18e12b66.chunk.js": "/static/js/2.18e12b66.chunk.js", - "static/js/2.18e12b66.chunk.js.map": "/static/js/2.18e12b66.chunk.js.map", - "static/js/3.dd242330.chunk.js": "/static/js/3.dd242330.chunk.js", - "static/js/3.dd242330.chunk.js.map": "/static/js/3.dd242330.chunk.js.map", + "static/js/2.517bf9c9.chunk.js": "/static/js/2.517bf9c9.chunk.js", + "static/js/2.517bf9c9.chunk.js.map": "/static/js/2.517bf9c9.chunk.js.map", + "static/js/3.cd4cd2b8.chunk.js": "/static/js/3.cd4cd2b8.chunk.js", + "static/js/3.cd4cd2b8.chunk.js.map": "/static/js/3.cd4cd2b8.chunk.js.map", "index.html": "/index.html", "static/css/2.85610714.chunk.css.map": "/static/css/2.85610714.chunk.css.map", - "static/css/main.8feef5f1.chunk.css.map": "/static/css/main.8feef5f1.chunk.css.map", - "static/js/2.18e12b66.chunk.js.LICENSE.txt": "/static/js/2.18e12b66.chunk.js.LICENSE.txt", + "static/css/main.b1b9e387.chunk.css.map": "/static/css/main.b1b9e387.chunk.css.map", + "static/js/2.517bf9c9.chunk.js.LICENSE.txt": "/static/js/2.517bf9c9.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/bennu.e9020d82.gif": "/static/media/bennu.e9020d82.gif", @@ -21,10 +21,10 @@ "static/media/scoresaver.3f65e348.svg": "/static/media/scoresaver.3f65e348.svg" }, "entrypoints": [ - "static/js/runtime-main.d39da719.js", + "static/js/runtime-main.e615543c.js", "static/css/2.85610714.chunk.css", - "static/js/2.18e12b66.chunk.js", - "static/css/main.8feef5f1.chunk.css", - "static/js/main.fcb78e61.chunk.js" + "static/js/2.517bf9c9.chunk.js", + "static/css/main.b1b9e387.chunk.css", + "static/js/main.a06d7fb4.chunk.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 9f64c71..6fe8574 100644 --- a/index.html +++ b/index.html @@ -1,4 +1,4 @@ -Julie Cover

Hi! I'm Julie!

A bit about me:

  • Occupation: Student
  • Location: Southern California
  • Pronouns: She/Her
  • 19 and 7/16 years old
  • not listening to anything right now.

Find Me:

</> 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 +Julie Cover

\ No newline at end of file + nothing.

\ No newline at end of file diff --git a/static/css/main.8feef5f1.chunk.css.map b/static/css/main.8feef5f1.chunk.css.map deleted file mode 100644 index 147a69e..0000000 --- a/static/css/main.8feef5f1.chunk.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["main.8feef5f1.chunk.css","webpack://src/index.scss","webpack://src/vars.scss","webpack://src/App.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.8feef5f1.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}:root{color-scheme:dark}\n\n\n\n:root{--text: white;--background: #1f2022;--about-me: #F1F1F1;--grid-background: var(--background);--grid-header-background: var(--background);--grid-header-text: #F1F1F1;--grid-element-background: hsl(218, 24%, 25%);--grid-element-border: #6f6f6f;--grid-element-shadow: rgba(255, 255, 255, 0.3);--grid-element-header: rgb(169 162 228 / 100%);--grid-element-subheader: darkgrey;--chainlink-icon-background: rgba(43, 43, 43, 0.3);--chainlink-icon-color: var(--grid-element-subheader);--link-color: var(--grid-element-header)}\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\n#project-grid-background{background:var(--grid-background)}#project-grid-parent{border-radius:5px;margin:10px;padding-left:5px;padding-right:5px}@media (min-width: 1100px){#project-grid-parent{width:95%;margin:auto}}@media (min-width: 1400px){#project-grid-parent{width:90%;margin:auto}}@media (min-width: 1560px){#project-grid-parent{width:85%;margin:auto}}@media (min-width: 2000px){#project-grid-parent{width:80%;max-width:1900px;margin:auto}}#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:30px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:\"Montserrat\", sans-serif;font-size:18px}#project-grid{margin:auto}@media (max-width: 520px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .FourByOne,#project-grid .Medium{width:100%}}@media (min-width: 521px) and (max-width: 759px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .Medium{width:49.5%}#project-grid .FourByOne{width:100%}}@media (min-width: 760px) and (max-width: 1099px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .Medium{width:33.3%}#project-grid .FourByOne{width:66.6%}}@media (min-width: 1100px) and (max-width: 1399px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width: 1400px) and (max-width: 1559px){#project-grid .GridSizer,#project-grid .OneWide{width:19.9%}#project-grid .Medium{width:39.8%}#project-grid .FourByOne{width:59.5%}}@media (min-width: 1560px) and (max-width: 1999px){#project-grid .GridSizer,#project-grid .OneWide{width:20%}#project-grid .Medium{width:40%}#project-grid .FourByOne{width:60%}}@media (min-width: 2000px){#project-grid .GridSizer,#project-grid .OneWide{width:16.6%}#project-grid .Medium{width:33%}#project-grid .FourByOne{width:49.8%}}.GridElement{padding:10px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;border:var(--grid-element-border);border-width:2px;border-style:solid;background:var(--grid-element-background);box-shadow:0 1px 2px var(--grid-element-shadow);transition:box-shadow 0.2s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px var(--grid-element-shadow)}.GridElement .GridElementInternal:focus{border:2px solid lightblue}.GridElement h2{font-family:\"Fira Code\", monospace;font-weight:400;margin-bottom:0px;text-shadow:0px 0px 1px var(--grid-element-header);color:var(--grid-element-header);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:var(--text);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: 1099px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width: 1100px){.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%;padding-right:10px}}.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: 1101px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width: 1100px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:16px;top:15px;font-size:24px;background:var(--chainlink-icon-background);border-radius:5px}svg{fill:var(--chainlink-icon-color)}\n\n#about-me-parent{margin-left:10px;margin-right:10px;margin-bottom:10px;display:flex;flex-direction:row;justify-content:center}#about-me-parent b{font-weight:500}#about-me-parent .about-me-card{border-radius:5px;margin:0 5px 0;padding:10px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;color:var(--text)}#about-me-parent #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:grid;grid-template-columns:1fr 1fr}@media screen and (max-width: 660px){#about-me-parent #about-me #info-parent{grid-template-columns:1fr}}#about-me-parent #about-me h1{font-family:\"Fira Code\", monospace;font-weight:500;font-size:46px;color:var(--text)}#about-me-parent #about-me h2{font-family:\"Fira Code\", monospace;line-height:normal;margin-bottom:0;font-weight:400;color:var(--text);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}#about-me-parent button{background:none !important;border:none;padding:0 !important;color:var(--link-color);cursor:pointer;text-decoration:underline;text-decoration-thickness:0.15em;-webkit-text-decoration-color:rgba(0,0,0,0);text-decoration-color:rgba(0,0,0,0);transition:-webkit-text-decoration 300ms;transition:text-decoration 300ms;transition:text-decoration 300ms, -webkit-text-decoration 300ms}#about-me-parent button:hover,#about-me-parent button:focus,#about-me-parent button:focus-visible{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color);border:none}#about-me-parent a{color:var(--link-color);text-decoration:underline;text-decoration-thickness:0.15em;-webkit-text-decoration-color:rgba(0,0,0,0);text-decoration-color:rgba(0,0,0,0);transition:-webkit-text-decoration 300ms;transition:text-decoration 300ms;transition:text-decoration 300ms, -webkit-text-decoration 300ms}#about-me-parent a:hover,#about-me-parent a:focus,#about-me-parent a:focus-visible{-webkit-text-decoration-color:var(--link-color);text-decoration-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\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n:root {\n color-scheme: dark;\n}\n",":root {\n --text: white;\n --background: #1f2022;\n --about-me: #F1F1F1;\n --grid-background: var(--background);\n --grid-header-background: var(--background);\n --grid-header-text: #F1F1F1;\n --grid-element-background: hsl(218, 24%, 25%);\n --grid-element-border: #6f6f6f;\n --grid-element-shadow: rgba(255, 255, 255, 0.3);\n --grid-element-header: rgb(169 162 228 / 100%);\n --grid-element-subheader: darkgrey;\n --chainlink-icon-background: rgba(43, 43, 43, 0.3);\n --chainlink-icon-color: var(--grid-element-subheader);\n --link-color: var(--grid-element-header);\n}\n\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// --grid-element-border: var(--grid-element-background);\n// --chainlink-icon-background: rgba(224, 255, 255, 0.7);\n// --link-color: grey;\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","@import \"~include-media/dist/_include-media.scss\";\n\n$breakpoints: (x-small: 520px, small: 760px, medium: 1100px, large: 1400px, x-large: 1560px, xx-large: 2000px);\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-background {\n background: var(--grid-background);\n}\n\n#project-grid-parent {\n border-radius: 5px;\n margin: 10px;\n padding-left: 5px;\n padding-right: 5px;\n //background: var(--grid-background);\n\n\n @include media(\">=medium\") {\n width: 95%;\n margin: auto;\n }\n\n @include media(\">=large\") {\n width: 90%;\n margin: auto;\n }\n\n @include media(\">=x-large\") {\n width: 85%;\n margin: auto;\n }\n\n @include media(\">=xx-large\") {\n width: 80%;\n max-width: 1900px;\n margin: auto;\n }\n\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: 30px;\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 margin: auto;\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\", \"=xx-large\") {\n .GridSizer, .OneWide {\n width: 16.6%;\n }\n .Medium {\n width: 33%;\n }\n .FourByOne {\n width: 49.8%;\n }\n }\n}\n\n.GridElement {\n padding: 10px;\n\n\n .GridElementInternal {\n padding: 9px;\n border-radius: 5px;\n border: var(--grid-element-border);\n border-width: 2px;\n border-style: solid;\n background: var(--grid-element-background);\n\n box-shadow: 0 1px 2px var(--grid-element-shadow);\n transition: box-shadow 0.2s ease-in-out;\n\n &:hover {\n box-shadow: 0 2px 5px var(--grid-element-shadow);\n }\n\n &:focus {\n border: 2px solid lightblue;\n }\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n font-weight: 400;\n margin-bottom: 0px;\n text-shadow: 0px 0px 1px var(--grid-element-header);\n color: var(--grid-element-header);\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: var(--text);\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 padding-right: 10px;\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(\">medium\") {\n flex-direction: row;\n\n }\n @include media(\"<=medium\") {\n flex-direction: column;\n .description {\n width: 95%;\n }\n }\n }\n}\n\n.LinkIcon {\n position: absolute;\n right: 16px;\n top: 15px;\n font-size: 24px;\n\n background: var(--chainlink-icon-background);\n border-radius: 5px;\n}\nsvg {\n fill: var(--chainlink-icon-color);\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 margin-bottom: 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 color: var(--text);\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: grid;\n grid-template-columns: 1fr 1fr;\n\n @media screen and (max-width: 660px) {\n grid-template-columns: 1fr;\n }\n }\n\n h1 {\n font-family: \"Fira Code\", monospace;\n font-weight: 500;\n font-size: 46px;\n color: var(--text);\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n line-height: normal;\n margin-bottom: 0;\n font-weight: 400;\n color: var(--text);\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 button {\n background: none!important;\n border: none;\n padding: 0!important;\n color: var(--link-color);\n cursor: pointer;\n text-decoration: underline;\n text-decoration-thickness: 0.15em;\n text-decoration-color: rgba(0, 0, 0, 0);\n transition: text-decoration 300ms;\n\n &:hover, &:focus, &:focus-visible {\n text-decoration-color: var(--link-color);\n border: none;\n }\n }\n\n a {\n color: var(--link-color);\n text-decoration: underline;\n text-decoration-thickness: 0.15em;\n text-decoration-color: rgba(0, 0, 0, 0);\n transition: text-decoration 300ms;\n\n &:hover, &:focus, &:focus-visible {\n text-decoration-color: var(--link-color);\n }\n\n\n }\n}\n\n\n"]} \ No newline at end of file diff --git a/static/css/main.8feef5f1.chunk.css b/static/css/main.b1b9e387.chunk.css similarity index 83% rename from static/css/main.8feef5f1.chunk.css rename to static/css/main.b1b9e387.chunk.css index 1d268d9..63eb79a 100644 --- a/static/css/main.8feef5f1.chunk.css +++ b/static/css/main.b1b9e387.chunk.css @@ -1,2 +1,2 @@ -@import url(https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Montserrat:wght@400;500;600;700&display=swap);*{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{color-scheme:dark;--text:#fff;--background:#1f2022;--about-me:#f1f1f1;--grid-background:var(--background);--grid-header-background:var(--background);--grid-header-text:#f1f1f1;--grid-element-background:#303c4f;--grid-element-border:#6f6f6f;--grid-element-shadow:hsla(0,0%,100%,0.3);--grid-element-header:rgb(169 162 228/100%);--grid-element-subheader:#a9a9a9;--chainlink-icon-background:rgba(43,43,43,0.3);--chainlink-icon-color:var(--grid-element-subheader);--link-color:var(--grid-element-header)}.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)}}#project-grid-background{background:var(--grid-background)}#project-grid-parent{border-radius:5px;margin:10px;padding-left:5px;padding-right:5px}@media (min-width:1100px){#project-grid-parent{width:95%;margin:auto}}@media (min-width:1400px){#project-grid-parent{width:90%;margin:auto}}@media (min-width:1560px){#project-grid-parent{width:85%;margin:auto}}@media (min-width:2000px){#project-grid-parent{width:80%;max-width:1900px;margin:auto}}#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:30px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:"Montserrat",sans-serif;font-size:18px}#project-grid{margin:auto}@media (max-width:520px){#project-grid .FourByOne,#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:100%}}@media (min-width:521px) and (max-width:759px){#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:49.5%}#project-grid .FourByOne{width:100%}}@media (min-width:760px) and (max-width:1099px){#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:33.3%}#project-grid .FourByOne{width:66.6%}}@media (min-width:1100px) and (max-width:1399px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width:1400px) and (max-width:1559px){#project-grid .GridSizer,#project-grid .OneWide{width:19.9%}#project-grid .Medium{width:39.8%}#project-grid .FourByOne{width:59.5%}}@media (min-width:1560px) and (max-width:1999px){#project-grid .GridSizer,#project-grid .OneWide{width:20%}#project-grid .Medium{width:40%}#project-grid .FourByOne{width:60%}}@media (min-width:2000px){#project-grid .GridSizer,#project-grid .OneWide{width:16.6%}#project-grid .Medium{width:33%}#project-grid .FourByOne{width:49.8%}}.GridElement{padding:10px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;border:var(--grid-element-border);border-width:2px;border-style:solid;background:var(--grid-element-background);box-shadow:0 1px 2px var(--grid-element-shadow);transition:box-shadow .2s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px var(--grid-element-shadow)}.GridElement .GridElementInternal:focus{border:2px solid #add8e6}.GridElement h2{font-family:"Fira Code",monospace;font-weight:400;margin-bottom:0;text-shadow:0 0 1px var(--grid-element-header);color:var(--grid-element-header);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:var(--text);margin-bottom:0}.OneWide{display:flex;flex-direction:column;width:available}.Medium img,.OneWide img{width:100%;margin-bottom:5px}@media (max-width:1099px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width:1100px){.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%;padding-right:10px}}.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:1101px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width:1100px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:16px;top:15px;font-size:24px;background:var(--chainlink-icon-background);border-radius:5px}svg{fill:var(--chainlink-icon-color)}#about-me-parent{margin-left:10px;margin-right:10px;margin-bottom: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;color:var(--text)}#about-me-parent #about-me,#about-me-parent .about-me-card{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:grid;grid-template-columns:1fr 1fr}@media screen and (max-width:660px){#about-me-parent #about-me #info-parent{grid-template-columns:1fr}}#about-me-parent #about-me h1{font-family:"Fira Code",monospace;font-weight:500;font-size:46px;color:var(--text)}#about-me-parent #about-me h2{font-family:"Fira Code",monospace;line-height:normal;margin-bottom:0;font-weight:400;color:var(--text);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}#about-me-parent button{background:none!important;border:none;padding:0!important;color:var(--link-color);cursor:pointer;text-decoration:underline;text-decoration-thickness:.15em;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:-webkit-text-decoration .3s;transition:text-decoration .3s;transition:text-decoration .3s,-webkit-text-decoration .3s}#about-me-parent button:focus,#about-me-parent button:focus-visible,#about-me-parent button:hover{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color);border:none}#about-me-parent a{color:var(--link-color);text-decoration:underline;text-decoration-thickness:.15em;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:-webkit-text-decoration .3s;transition:text-decoration .3s;transition:text-decoration .3s,-webkit-text-decoration .3s}#about-me-parent a:focus,#about-me-parent a:focus-visible,#about-me-parent a:hover{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color)} -/*# sourceMappingURL=main.8feef5f1.chunk.css.map */ \ No newline at end of file +@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{color-scheme:dark;--text:#fff;--background:#1f2022;--about-me:#f1f1f1;--grid-background:var(--background);--grid-header-background:var(--background);--grid-header-text:#f1f1f1;--grid-element-background:#303c4f;--grid-element-border:#6f6f6f;--grid-element-shadow:hsla(0,0%,100%,0.3);--grid-element-header:rgb(169 162 228/100%);--grid-element-subheader:#a9a9a9;--chainlink-icon-background:rgba(43,43,43,0.3);--chainlink-icon-color:var(--grid-element-subheader);--link-color:var(--grid-element-header)}.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)}}#project-grid-background{background:var(--grid-background)}#project-grid-parent{border-radius:5px;margin:10px;padding-left:5px;padding-right:5px}@media (min-width:1100px){#project-grid-parent{width:95%;margin:auto}}@media (min-width:1400px){#project-grid-parent{width:90%;margin:auto}}@media (min-width:1560px){#project-grid-parent{width:85%;margin:auto}}@media (min-width:2000px){#project-grid-parent{width:80%;max-width:1900px;margin:auto}}#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:30px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:"Montserrat",sans-serif;font-size:18px}#project-grid{margin:auto}@media (max-width:520px){#project-grid .FourByOne,#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:100%}}@media (min-width:521px) and (max-width:759px){#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:49.5%}#project-grid .FourByOne{width:100%}}@media (min-width:760px) and (max-width:1099px){#project-grid .GridSizer,#project-grid .Medium,#project-grid .OneWide{width:33.3%}#project-grid .FourByOne{width:66.6%}}@media (min-width:1100px) and (max-width:1399px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width:1400px) and (max-width:1559px){#project-grid .GridSizer,#project-grid .OneWide{width:19.9%}#project-grid .Medium{width:39.8%}#project-grid .FourByOne{width:59.5%}}@media (min-width:1560px) and (max-width:1999px){#project-grid .GridSizer,#project-grid .OneWide{width:20%}#project-grid .Medium{width:40%}#project-grid .FourByOne{width:60%}}@media (min-width:2000px){#project-grid .GridSizer,#project-grid .OneWide{width:16.6%}#project-grid .Medium{width:33%}#project-grid .FourByOne{width:49.8%}}.GridElement{padding:10px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;border:var(--grid-element-border);border-width:2px;border-style:solid;background:var(--grid-element-background);box-shadow:0 1px 2px var(--grid-element-shadow);transition:box-shadow .2s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px var(--grid-element-shadow)}.GridElement .GridElementInternal:focus{border:2px solid #add8e6}.GridElement h2{font-family:"Fira Code",monospace;font-weight:400;margin-bottom:0;text-shadow:0 0 1px var(--grid-element-header);color:var(--grid-element-header);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:var(--text);margin-bottom:0}.OneWide{display:flex;flex-direction:column;width:available}.Medium img,.OneWide img{width:100%;margin-bottom:5px}@media (max-width:1099px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width:1100px){.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%;padding-right:10px}}.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:1101px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width:1100px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:16px;top:15px;font-size:24px;background:var(--chainlink-icon-background);border-radius:5px}svg{fill:var(--chainlink-icon-color)}#about-me-parent{margin-left:10px;margin-right:10px;margin-bottom: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;color:var(--text)}#about-me-parent #about-me,#about-me-parent .about-me-card{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:grid;grid-template-columns:1fr 1fr}@media screen and (max-width:660px){#about-me-parent #about-me #info-parent{grid-template-columns:1fr}}#about-me-parent #about-me h1{font-family:"Fira Code",monospace;font-weight:500;font-size:46px;color:var(--text)}#about-me-parent #about-me h2{font-family:"Fira Code",monospace;line-height:normal;margin-bottom:0;font-weight:400;color:var(--text);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:30px;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}#about-me-parent #about-me li::-moz-list-bullet{content:"+ "}#about-me-parent button{background:none!important;border:none;padding:0!important;color:var(--link-color);cursor:pointer;text-decoration:underline;text-decoration-thickness:.15em;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:-webkit-text-decoration .3s;transition:text-decoration .3s;transition:text-decoration .3s,-webkit-text-decoration .3s}#about-me-parent button:focus,#about-me-parent button:focus-visible,#about-me-parent button:hover{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color);border:none}#about-me-parent a{color:var(--link-color);text-decoration:underline;text-decoration-thickness:.15em;-webkit-text-decoration-color:transparent;text-decoration-color:transparent;transition:-webkit-text-decoration .3s;transition:text-decoration .3s;transition:text-decoration .3s,-webkit-text-decoration .3s}#about-me-parent a:focus,#about-me-parent a:focus-visible,#about-me-parent a:hover{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color)}#about-me-parent #now-playing{max-width:25ch;margin-left:1.2ch;text-indent:-1.2ch} +/*# sourceMappingURL=main.b1b9e387.chunk.css.map */ \ No newline at end of file diff --git a/static/css/main.b1b9e387.chunk.css.map b/static/css/main.b1b9e387.chunk.css.map new file mode 100644 index 0000000..7a6ced7 --- /dev/null +++ b/static/css/main.b1b9e387.chunk.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["main.b1b9e387.chunk.css","webpack://src/index.scss","webpack://src/vars.scss","webpack://src/App.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.b1b9e387.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}:root{color-scheme:dark}\n\n\n\n:root{--text: white;--background: #1f2022;--about-me: #F1F1F1;--grid-background: var(--background);--grid-header-background: var(--background);--grid-header-text: #F1F1F1;--grid-element-background: hsl(218, 24%, 25%);--grid-element-border: #6f6f6f;--grid-element-shadow: rgba(255, 255, 255, 0.3);--grid-element-header: rgb(169 162 228 / 100%);--grid-element-subheader: darkgrey;--chainlink-icon-background: rgba(43, 43, 43, 0.3);--chainlink-icon-color: var(--grid-element-subheader);--link-color: var(--grid-element-header)}\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\n#project-grid-background{background:var(--grid-background)}#project-grid-parent{border-radius:5px;margin:10px;padding-left:5px;padding-right:5px}@media (min-width: 1100px){#project-grid-parent{width:95%;margin:auto}}@media (min-width: 1400px){#project-grid-parent{width:90%;margin:auto}}@media (min-width: 1560px){#project-grid-parent{width:85%;margin:auto}}@media (min-width: 2000px){#project-grid-parent{width:80%;max-width:1900px;margin:auto}}#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:30px}#project-grid-parent>#project-header p{margin:0 0 3px;font-family:\"Montserrat\", sans-serif;font-size:18px}#project-grid{margin:auto}@media (max-width: 520px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .FourByOne,#project-grid .Medium{width:100%}}@media (min-width: 521px) and (max-width: 759px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .Medium{width:49.5%}#project-grid .FourByOne{width:100%}}@media (min-width: 760px) and (max-width: 1099px){#project-grid .GridSizer,#project-grid .OneWide,#project-grid .Medium{width:33.3%}#project-grid .FourByOne{width:66.6%}}@media (min-width: 1100px) and (max-width: 1399px){#project-grid .GridSizer,#project-grid .OneWide{width:24.9%}#project-grid .Medium{width:49.8%}#project-grid .FourByOne{width:74.6%}}@media (min-width: 1400px) and (max-width: 1559px){#project-grid .GridSizer,#project-grid .OneWide{width:19.9%}#project-grid .Medium{width:39.8%}#project-grid .FourByOne{width:59.5%}}@media (min-width: 1560px) and (max-width: 1999px){#project-grid .GridSizer,#project-grid .OneWide{width:20%}#project-grid .Medium{width:40%}#project-grid .FourByOne{width:60%}}@media (min-width: 2000px){#project-grid .GridSizer,#project-grid .OneWide{width:16.6%}#project-grid .Medium{width:33%}#project-grid .FourByOne{width:49.8%}}.GridElement{padding:10px}.GridElement .GridElementInternal{padding:9px;border-radius:5px;border:var(--grid-element-border);border-width:2px;border-style:solid;background:var(--grid-element-background);box-shadow:0 1px 2px var(--grid-element-shadow);transition:box-shadow 0.2s ease-in-out}.GridElement .GridElementInternal:hover{box-shadow:0 2px 5px var(--grid-element-shadow)}.GridElement .GridElementInternal:focus{border:2px solid lightblue}.GridElement h2{font-family:\"Fira Code\", monospace;font-weight:400;margin-bottom:0px;text-shadow:0px 0px 1px var(--grid-element-header);color:var(--grid-element-header);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:var(--text);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: 1099px){.Medium{display:flex;flex-direction:column;width:available}.Medium img{width:100%;margin-bottom:5px}}@media (min-width: 1100px){.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%;padding-right:10px}}.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: 1101px){.FourByOne .GridElementInternal{flex-direction:row}}@media (max-width: 1100px){.FourByOne .GridElementInternal{flex-direction:column}.FourByOne .GridElementInternal .description{width:95%}}.LinkIcon{position:absolute;right:16px;top:15px;font-size:24px;background:var(--chainlink-icon-background);border-radius:5px}svg{fill:var(--chainlink-icon-color)}\n\n#about-me-parent{margin-left:10px;margin-right:10px;margin-bottom:10px;display:flex;flex-direction:row;justify-content:center}#about-me-parent b{font-weight:500}#about-me-parent .about-me-card{border-radius:5px;margin:0 5px 0;padding:10px;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;color:var(--text)}#about-me-parent #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:grid;grid-template-columns:1fr 1fr}@media screen and (max-width: 660px){#about-me-parent #about-me #info-parent{grid-template-columns:1fr}}#about-me-parent #about-me h1{font-family:\"Fira Code\", monospace;font-weight:500;font-size:46px;color:var(--text)}#about-me-parent #about-me h2{font-family:\"Fira Code\", monospace;line-height:normal;margin-bottom:0;font-weight:400;color:var(--text);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:30px;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}#about-me-parent #about-me li::-moz-list-bullet{content:\"+ \"}#about-me-parent button{background:none !important;border:none;padding:0 !important;color:var(--link-color);cursor:pointer;text-decoration:underline;text-decoration-thickness:0.15em;-webkit-text-decoration-color:rgba(0,0,0,0);text-decoration-color:rgba(0,0,0,0);transition:-webkit-text-decoration 300ms;transition:text-decoration 300ms;transition:text-decoration 300ms, -webkit-text-decoration 300ms}#about-me-parent button:hover,#about-me-parent button:focus,#about-me-parent button:focus-visible{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color);border:none}#about-me-parent a{color:var(--link-color);text-decoration:underline;text-decoration-thickness:0.15em;-webkit-text-decoration-color:rgba(0,0,0,0);text-decoration-color:rgba(0,0,0,0);transition:-webkit-text-decoration 300ms;transition:text-decoration 300ms;transition:text-decoration 300ms, -webkit-text-decoration 300ms}#about-me-parent a:hover,#about-me-parent a:focus,#about-me-parent a:focus-visible{-webkit-text-decoration-color:var(--link-color);text-decoration-color:var(--link-color)}#about-me-parent #now-playing{max-width:25ch;margin-left:1.2ch;text-indent:-1.2ch}\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\ncode {\n font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',\n monospace;\n}\n\n:root {\n color-scheme: dark;\n}\n",":root {\n --text: white;\n --background: #1f2022;\n --about-me: #F1F1F1;\n --grid-background: var(--background);\n --grid-header-background: var(--background);\n --grid-header-text: #F1F1F1;\n --grid-element-background: hsl(218, 24%, 25%);\n --grid-element-border: #6f6f6f;\n --grid-element-shadow: rgba(255, 255, 255, 0.3);\n --grid-element-header: rgb(169 162 228 / 100%);\n --grid-element-subheader: darkgrey;\n --chainlink-icon-background: rgba(43, 43, 43, 0.3);\n --chainlink-icon-color: var(--grid-element-subheader);\n --link-color: var(--grid-element-header);\n}\n\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// --grid-element-border: var(--grid-element-background);\n// --chainlink-icon-background: rgba(224, 255, 255, 0.7);\n// --link-color: grey;\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","@import \"~include-media/dist/_include-media.scss\";\n\n$breakpoints: (x-small: 520px, small: 760px, medium: 1100px, large: 1400px, x-large: 1560px, xx-large: 2000px);\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-background {\n background: var(--grid-background);\n}\n\n#project-grid-parent {\n border-radius: 5px;\n margin: 10px;\n padding-left: 5px;\n padding-right: 5px;\n //background: var(--grid-background);\n\n\n @include media(\">=medium\") {\n width: 95%;\n margin: auto;\n }\n\n @include media(\">=large\") {\n width: 90%;\n margin: auto;\n }\n\n @include media(\">=x-large\") {\n width: 85%;\n margin: auto;\n }\n\n @include media(\">=xx-large\") {\n width: 80%;\n max-width: 1900px;\n margin: auto;\n }\n\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: 30px;\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 margin: auto;\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\", \"=xx-large\") {\n .GridSizer, .OneWide {\n width: 16.6%;\n }\n .Medium {\n width: 33%;\n }\n .FourByOne {\n width: 49.8%;\n }\n }\n}\n\n.GridElement {\n padding: 10px;\n\n\n .GridElementInternal {\n padding: 9px;\n border-radius: 5px;\n border: var(--grid-element-border);\n border-width: 2px;\n border-style: solid;\n background: var(--grid-element-background);\n\n box-shadow: 0 1px 2px var(--grid-element-shadow);\n transition: box-shadow 0.2s ease-in-out;\n\n &:hover {\n box-shadow: 0 2px 5px var(--grid-element-shadow);\n }\n\n &:focus {\n border: 2px solid lightblue;\n }\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n font-weight: 400;\n margin-bottom: 0px;\n text-shadow: 0px 0px 1px var(--grid-element-header);\n color: var(--grid-element-header);\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: var(--text);\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 padding-right: 10px;\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(\">medium\") {\n flex-direction: row;\n\n }\n @include media(\"<=medium\") {\n flex-direction: column;\n .description {\n width: 95%;\n }\n }\n }\n}\n\n.LinkIcon {\n position: absolute;\n right: 16px;\n top: 15px;\n font-size: 24px;\n\n background: var(--chainlink-icon-background);\n border-radius: 5px;\n}\nsvg {\n fill: var(--chainlink-icon-color);\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 margin-bottom: 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 color: var(--text);\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: grid;\n grid-template-columns: 1fr 1fr;\n\n @media screen and (max-width: 660px) {\n grid-template-columns: 1fr;\n }\n }\n\n h1 {\n font-family: \"Fira Code\", monospace;\n font-weight: 500;\n font-size: 46px;\n color: var(--text);\n }\n\n h2 {\n font-family: \"Fira Code\", monospace;\n line-height: normal;\n margin-bottom: 0;\n font-weight: 400;\n color: var(--text);\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: 30px;\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 li::-moz-list-bullet {\n content: \"+ \";\n }\n }\n\n button {\n background: none!important;\n border: none;\n padding: 0!important;\n color: var(--link-color);\n cursor: pointer;\n text-decoration: underline;\n text-decoration-thickness: 0.15em;\n text-decoration-color: rgba(0, 0, 0, 0);\n transition: text-decoration 300ms;\n\n &:hover, &:focus, &:focus-visible {\n text-decoration-color: var(--link-color);\n border: none;\n }\n }\n\n a {\n color: var(--link-color);\n text-decoration: underline;\n text-decoration-thickness: 0.15em;\n text-decoration-color: rgba(0, 0, 0, 0);\n transition: text-decoration 300ms;\n\n &:hover, &:focus, &:focus-visible {\n text-decoration-color: var(--link-color);\n }\n }\n\n #now-playing {\n max-width: 25ch;\n margin-left: 1.2ch;\n text-indent: -1.2ch;\n }\n}\n\n\n"]} \ No newline at end of file diff --git a/static/js/2.18e12b66.chunk.js b/static/js/2.18e12b66.chunk.js deleted file mode 100644 index b20c340..0000000 --- a/static/js/2.18e12b66.chunk.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see 2.18e12b66.chunk.js.LICENSE.txt */ -(this["webpackJsonppersonal-website-static"]=this["webpackJsonppersonal-website-static"]||[]).push([[2],[function(e,t,n){"use strict";e.exports=n(69)},function(e,t,n){"use strict";e.exports=n(68)},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(6);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||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=function(e){return+setTimeout(e,16)},o=function(e){return clearTimeout(e)};function i(e){return r(e)}"undefined"!==typeof window&&"requestAnimationFrame"in window&&(r=function(e){return window.requestAnimationFrame(e)},o=function(e){return window.cancelAnimationFrame(e)}),i.cancel=o},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(70)},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 l}));var r=n(55);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;n1&&void 0!==arguments[1]?arguments[1]:2;t();var i=Object(A.a)((function(){o<=1?r({isCanceled:function(){return i!==e.current}}):n(r,o-1)}));e.current=i},t]}(),s=Object(i.a)(u,2),c=s[0],f=s[1];return D((function(){if(o!==P&&o!==L){var e=z.indexOf(o),n=z[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]),l.useEffect((function(){return function(){f()}}),[]),[function(){a(j)},o]};function H(e,t,n,a){var u=a.motionEnter,s=void 0===u||u,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,k=a.onLeaveStart,S=a.onAppearActive,P=a.onEnterActive,L=a.onLeaveActive,A=a.onAppearEnd,z=a.onEnterEnd,H=a.onLeaveEnd,W=a.onVisibleChanged,V=R(),B=Object(i.a)(V,2),U=B[0],$=B[1],q=R(O),Y=Object(i.a)(q,2),Q=Y[0],X=Y[1],G=R(null),K=Object(i.a)(G,2),Z=K[0],J=K[1],ee=Object(l.useRef)(!1),te=Object(l.useRef)(null),ne=Object(l.useRef)(!1),re=Object(l.useRef)(null);function oe(){return n()||re.current}var ie=Object(l.useRef)(!1);function ae(e){var t,n=oe();e&&!e.deadline&&e.target!==n||(Q===C&&ie.current?t=null===A||void 0===A?void 0:A(n,e):Q===_&&ie.current?t=null===z||void 0===z?void 0:z(n,e):Q===T&&ie.current&&(t=null===H||void 0===H?void 0:H(n,e)),!1===t||ne.current||(X(O),J(null)))}var le=function(e){var t=Object(l.useRef)(),n=Object(l.useRef)(e);n.current=e;var r=l.useCallback((function(e){n.current(e)}),[]);function o(e){e&&(e.removeEventListener(E,r),e.removeEventListener(x,r))}return l.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(x,r),t.current=e)},o]}(ae),ue=Object(i.a)(le,1)[0],se=l.useMemo((function(){var e,t,n;switch(Q){case"appear":return e={},Object(r.a)(e,j,v),Object(r.a)(e,M,b),Object(r.a)(e,N,S),e;case"enter":return t={},Object(r.a)(t,j,g),Object(r.a)(t,M,w),Object(r.a)(t,N,P),t;case"leave":return n={},Object(r.a)(n,j,y),Object(r.a)(n,M,k),Object(r.a)(n,N,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&&J((null===(n=se[pe])||void 0===n?void 0:n.call(se,oe(),null))||null);return pe===N&&(ue(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=I(pe);ie.current=he,D((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(l.useEffect)((function(){(Q===C&&!f||Q===_&&!s||Q===T&&!p)&&X(O)}),[f,s,p]),Object(l.useEffect)((function(){return function(){clearTimeout(te.current),ne.current=!0}}),[]),Object(l.useEffect)((function(){void 0!==U&&Q===O&&(null===W||void 0===W||W(U))}),[U,Q]);var me=Z;return se.prepare&&pe===M&&(me=Object(o.a)({transition:"none"},me)),[Q,pe,me,null!==U&&void 0!==U?U:t]}var W=n(16),V=n(17),B=n(19),U=n(20),$=function(e){Object(B.a)(n,e);var t=Object(U.a)(n);function n(){return Object(W.a)(this,n),t.apply(this,arguments)}return Object(V.a)(n,[{key:"render",value:function(){return this.props.children}}]),n}(l.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=l.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(l.useRef)(),k=Object(l.useRef)();var x=H(b,c,(function(){try{return Object(u.a)(w.current||k.current)}catch(e){return null}}),e),E=Object(i.a)(x,4),C=E[0],_=E[1],T=E[2],P=E[3],N=Object(l.useRef)(t);N.current=t;var L,R=l.useCallback((function(e){w.current=e,Object(s.b)(N.current,e)}),[]),D=Object(o.a)(Object(o.a)({},y),{},{visible:c});if(m)if(C!==O&&n(e)){var A,z;_===j?z="prepare":I(_)?z="active":_===M&&(z="start"),L=m(Object(o.a)(Object(o.a)({},D),{},{className:f()(S(v,C),(A={},Object(r.a)(A,S(v,"".concat(C,"-").concat(z)),z),Object(r.a)(A,v,"string"===typeof v),A)),style:T}),R)}else L=P?m(Object(o.a)({},D),R):p?h?m(Object(o.a)(Object(o.a)({},D),{},{style:{display:"none"}}),R):null:m(Object(o.a)(Object(o.a)({},D),{},{className:g}),R);else L=null;return l.createElement($,{ref:k},L)}));return c.displayName="CSSMotion",c}(k),Y=n(9),Q="add",X="keep",G="remove",K="removed";function Z(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 J(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return e.map(Z)}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=J(e),l=J(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(B.a)(r,e);var n=Object(U.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(V.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,u=Object(Y.a)(r,["component","children","onVisibleChanged"]),s=o||l.Fragment,c={};return te.forEach((function(e){c[e]=u[e],delete u[e]})),delete u.keys,l.createElement(s,Object.assign({},u),n.map((function(n){var r=n.status,o=Object(Y.a)(n,["status"]),u=r===Q||r===X;return l.createElement(t,Object.assign({},c,{key:o.key,visible:u,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=J(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}(l.Component);n.defaultProps={component:"div"}})(k),t.a=q},function(e,t,n){"use strict";function r(e,t){return(r=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function o(e,t){if("function"!==typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&r(e,t)}n.d(t,"a",(function(){return o}))},function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var r=n(32);var o=n(54);function i(e){var t=function(){if("undefined"===typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"===typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,i=Object(r.a)(e);if(t){var a=Object(r.a)(this).constructor;n=Reflect.construct(i,arguments,a)}else n=i.apply(this,arguments);return Object(o.a)(this,n)}}},function(e,t,n){"use strict";function r(e,t){return!!e&&e.contains(t)}n.d(t,"a",(function(){return r}))},function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n