heartwood every commit a ring

Add styles and animations for various components and pages

1ff531fe by Isaac Bythewood · 7 months ago

Add styles and animations for various components and pages

- Created jsconfig.json for path aliasing.
- Added canvas, grid, loader, menu, mouse, page, sidebar, and various page styles (about, art, code, contact, index) with responsive design and animations.
- Implemented keyframe animations for transitions and effects across components.
- Established a grid layout for the sidebar and main content areas.
- Enhanced button styles with hover effects and transitions.
- Introduced custom cursor styles for enhanced user interaction.
modified .babelrc
@@ -1,14 +1,3 @@{  "presets": ["next/babel"],  "plugins": [    [      "styled-components",      {        "ssr": true,        "minify": true,        "transpileTemplateLiterals": true,        "pure": true      }    ]  ]  "presets": ["next/babel"]}
modified components/constellations.js
@@ -1,5 +1,5 @@import React, { useEffect, useRef } from "react";import styles from "./canvas.module.css";import styles from "@styles/components/canvas.module.css";import PropTypes from "prop-types";const Constellations = ({ options }) => {
modified components/grid.js
@@ -1,5 +1,5 @@import React from "react";import styles from "./grid.module.css";import styles from "@styles/components/grid.module.css";import PropTypes from "prop-types";const Grid = (props) => {
modified components/loader.js
@@ -1,5 +1,5 @@import React from "react";import styles from "./loader.module.css";import styles from "@styles/components/loader.module.css";const Loader = () => {  return (
modified components/menu.js
@@ -3,7 +3,7 @@ import React, { useState } from "react";import { CSSTransition } from "react-transition-group";import Image from "next/image";import Link from "next/link";import styles from "./menu.module.css";import styles from "@styles/components/menu.module.css";const Menu = () => {  const [open, setOpen] = useState(false);
modified components/mouse.js
@@ -1,5 +1,5 @@import React, { useEffect, useRef } from "react";import styles from "./mouse.module.css";import styles from "@styles/components/mouse.module.css";const Mouse = () => {  const cursorRef = useRef(null);
modified components/page.js
@@ -1,7 +1,7 @@import React from "react";import Head from "next/head";import PropTypes from "prop-types";import styles from "./page.module.css";import styles from "@styles/components/page.module.css";import { strings } from "../site.config";
modified components/particleflow.js
@@ -1,5 +1,5 @@import React, { useEffect, useRef } from "react";import styles from "./canvas.module.css";import styles from "@styles/components/canvas.module.css";import PropTypes from "prop-types";const ParticleFlow = ({ options }) => {
modified components/retrostars.js
@@ -1,5 +1,5 @@import React, { useEffect, useRef, useState } from "react";import styles from "./canvas.module.css";import styles from "@styles/components/canvas.module.css";import PropTypes from "prop-types";const RetroStars = ({ options }) => {
modified components/sidebar.js
@@ -1,6 +1,6 @@import React, { useState, useEffect } from "react";import PropTypes from "prop-types";import styles from "./sidebar.module.css";import styles from "@styles/components/sidebar.module.css";import Link from "next/link";import { withRouter } from "next/router";
modified components/synthwave.js
@@ -1,5 +1,5 @@import React, { useEffect, useRef } from "react";import styles from "./canvas.module.css";import styles from "@styles/components/canvas.module.css";const Synthwave = () => {  const canvas = useRef(null);
added jsconfig.json
@@ -0,0 +1,8 @@{  "compilerOptions": {    "baseUrl": ".",    "paths": {      "@styles/*": ["styles/*"]    }  }}
modified pages/about.js
@@ -2,7 +2,7 @@ import React, { useState, useEffect, useRef } from "react";import { TransitionGroup, CSSTransition } from "react-transition-group";import Page from "../components/page";import styles from "./about.module.css";import styles from "@styles/pages/about.module.css";const About = () => {  const [words, setWords] = useState([
modified pages/art.js
@@ -1,5 +1,5 @@import React, { useState } from "react";import styles from "./art.module.css";import styles from "@styles/pages/art.module.css";import Image from "next/image";import Page from "../components/page";
modified pages/code.js
@@ -1,6 +1,6 @@import React from "react";import PropTypes from "prop-types";import styles from "./code.module.css";import styles from "@styles/pages/code.module.css";import Page from "../components/page";
modified pages/contact.js
@@ -1,6 +1,6 @@import React from "react";import { TransitionGroup, CSSTransition } from "react-transition-group";import styles from "./contact.module.css";import styles from "@styles/pages/contact.module.css";import Image from "next/image";import Page from "../components/page";
modified pages/index.js
@@ -3,7 +3,7 @@ import { TransitionGroup, CSSTransition } from "react-transition-group";import Image from "next/image";import Page from "../components/page";import styles from "./index.module.css";import styles from "@styles/pages/index.module.css";const Index = () => {  const words = ["Developer", "SysAdmin", "DevOps", "Consultant"];
renamed components/canvas.module.css → styles/components/canvas.module.css
renamed components/grid.module.css → styles/components/grid.module.css
renamed components/loader.module.css → styles/components/loader.module.css
renamed components/menu.module.css → styles/components/menu.module.css
renamed components/mouse.module.css → styles/components/mouse.module.css
renamed components/page.module.css → styles/components/page.module.css
@@ -1,5 +1,4 @@.main {  /* dynamic grid-area added inline via style prop */  display: flex;  flex-direction: column;  align-items: flex-start;
renamed components/sidebar.module.css → styles/components/sidebar.module.css
modified styles/globals.css
@@ -1,5 +1,4 @@:root {  /* Design tokens (used by CSS Modules as var(--token)) */  --color-primary: #20232e;  --color-blue: #0e3ff4;  --color-purple: #842bff;
@@ -8,7 +7,6 @@  --animation-1500: 1500ms;}/* Base global styles (migrated from styled-components GlobalStyle) */body {  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,    sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
@@ -30,7 +28,6 @@ button {  cursor: none;}/* React Transition Group classes (global) */.transition {  position: absolute;  top: 0;
renamed pages/about.module.css → styles/pages/about.module.css
@@ -1,5 +1,3 @@/* About page styles migrated from styled-components */@keyframes slideLeft {  0% {    left: -100%;
renamed pages/art.module.css → styles/pages/art.module.css
@@ -1,5 +1,3 @@/* Art page styles migrated from styled-components */@keyframes transformRight {  from {    transform: scaleX(0);
renamed pages/code.module.css → styles/pages/code.module.css
@@ -1,5 +1,3 @@/* Code page styles migrated from styled-components */@keyframes transformRight {  from {    transform: scaleX(0);
renamed pages/contact.module.css → styles/pages/contact.module.css
@@ -1,5 +1,3 @@/* Contact page styles migrated from styled-components */@keyframes transformRight {  from {    transform: scaleX(0);
renamed pages/index.module.css → styles/pages/index.module.css
@@ -1,5 +1,3 @@/* Landing page styles migrated from styled-components */@keyframes fadeStart {  from {    opacity: 0;
modified yarn.lock
@@ -56,13 +56,6 @@    "@jridgewell/trace-mapping" "^0.3.25"    jsesc "^3.0.2""@babel/helper-annotate-as-pure@^7.22.5":  version "7.27.3"  resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5"  integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==  dependencies:    "@babel/types" "^7.27.3""@babel/helper-compilation-targets@^7.27.2":  version "7.27.2"  resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
@@ -74,7 +67,7 @@    lru-cache "^5.1.1"    semver "^6.3.1""@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.5", "@babel/helper-module-imports@^7.27.1":"@babel/helper-module-imports@^7.27.1":  version "7.27.1"  resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"  integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
@@ -91,11 +84,6 @@    "@babel/helper-validator-identifier" "^7.27.1"    "@babel/traverse" "^7.27.3""@babel/helper-plugin-utils@^7.27.1":  version "7.27.1"  resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"  integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="@babel/helper-string-parser@^7.27.1":  version "7.27.1"  resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
@@ -126,13 +114,6 @@  dependencies:    "@babel/types" "^7.27.3""@babel/plugin-syntax-jsx@^7.22.5":  version "7.27.1"  resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"  integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==  dependencies:    "@babel/helper-plugin-utils" "^7.27.1""@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":  version "7.27.4"  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.4.tgz#a91ec580e6c00c67118127777c316dfd5a5a6abf"
@@ -147,7 +128,7 @@    "@babel/parser" "^7.27.2"    "@babel/types" "^7.27.1""@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4", "@babel/traverse@^7.4.5":"@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.27.4":  version "7.27.4"  resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.4.tgz#b0045ac7023c8472c3d35effd7cc9ebd638da6ea"  integrity sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==
@@ -168,28 +149,6 @@    "@babel/helper-string-parser" "^7.27.1"    "@babel/helper-validator-identifier" "^7.27.1""@emotion/is-prop-valid@^1.1.0":  version "1.3.1"  resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"  integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==  dependencies:    "@emotion/memoize" "^0.9.0""@emotion/memoize@^0.9.0":  version "0.9.0"  resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102"  integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ=="@emotion/stylis@^0.8.4":  version "0.8.5"  resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04"  integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ=="@emotion/unitless@^0.7.4":  version "0.7.5"  resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"  integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg=="@eslint-community/eslint-utils@^4.2.0":  version "4.7.0"  resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a"
@@ -806,17 +765,6 @@ available-typed-arrays@^1.0.7:  dependencies:    possible-typed-array-names "^1.0.0""babel-plugin-styled-components@>= 1.12.0":  version "2.1.4"  resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.1.4.tgz#9a1f37c7f32ef927b4b008b529feb4a2c82b1092"  integrity sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==  dependencies:    "@babel/helper-annotate-as-pure" "^7.22.5"    "@babel/helper-module-imports" "^7.22.5"    "@babel/plugin-syntax-jsx" "^7.22.5"    lodash "^4.17.21"    picomatch "^2.3.1"balanced-match@^1.0.0:  version "1.0.2"  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
@@ -929,11 +877,6 @@ callsites@^3.0.0:  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==camelize@^1.0.0:  version "1.0.1"  resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3"  integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==caniuse-lite@^1.0.30001406, caniuse-lite@^1.0.30001718:  version "1.0.30001720"  resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz#c138cb6026d362be9d8d7b0e4bcd0183a850edfd"
@@ -1034,20 +977,6 @@ cross-spawn@^7.0.2:    shebang-command "^2.0.0"    which "^2.0.1"css-color-keywords@^1.0.0:  version "1.0.0"  resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"  integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==css-to-react-native@^3.0.0:  version "3.2.0"  resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32"  integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==  dependencies:    camelize "^1.0.0"    css-color-keywords "^1.0.0"    postcss-value-parser "^4.0.2"csstype@^3.0.2:  version "3.1.3"  resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
@@ -1756,11 +1685,6 @@ has-bigints@^1.0.2:  resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe"  integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==has-flag@^3.0.0:  version "3.0.0"  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"  integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==has-flag@^4.0.0:  version "4.0.0"  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
@@ -1804,13 +1728,6 @@ hasown@^2.0.2:  dependencies:    function-bind "^1.1.2"hoist-non-react-statics@^3.0.0:  version "3.3.2"  resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"  integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==  dependencies:    react-is "^16.7.0"http-cache-semantics@^4.1.0:  version "4.2.0"  resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5"
@@ -2674,21 +2591,11 @@ picocolors@^1.0.0, picocolors@^1.1.1:  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==picomatch@^2.3.1:  version "2.3.1"  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==possible-typed-array-names@^1.0.0:  version "1.1.0"  resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"  integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==postcss-value-parser@^4.0.2:  version "4.2.0"  resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"  integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==postcss@8.4.14:  version "8.4.14"  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf"
@@ -2798,7 +2705,7 @@ react-dom@^18.2.0:    loose-envify "^1.1.0"    scheduler "^0.23.2"react-is@^16.13.1, react-is@^16.7.0:react-is@^16.13.1:  version "16.13.1"  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"  integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -3043,11 +2950,6 @@ set-proto@^1.0.0:    es-errors "^1.3.0"    es-object-atoms "^1.0.0"shallowequal@^1.1.0:  version "1.1.0"  resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"  integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==sharp@^0.30.7:  version "0.30.7"  resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.30.7.tgz#7862bda98804fdd1f0d5659c85e3324b90d94c7c"
@@ -3313,34 +3215,11 @@ strip-json-comments@~2.0.1:  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"  integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==styled-components@^5.2.3:  version "5.3.11"  resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.11.tgz#9fda7bf1108e39bf3f3e612fcc18170dedcd57a8"  integrity sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==  dependencies:    "@babel/helper-module-imports" "^7.0.0"    "@babel/traverse" "^7.4.5"    "@emotion/is-prop-valid" "^1.1.0"    "@emotion/stylis" "^0.8.4"    "@emotion/unitless" "^0.7.4"    babel-plugin-styled-components ">= 1.12.0"    css-to-react-native "^3.0.0"    hoist-non-react-statics "^3.0.0"    shallowequal "^1.1.0"    supports-color "^5.5.0"styled-jsx@5.0.7:  version "5.0.7"  resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.7.tgz#be44afc53771b983769ac654d355ca8d019dff48"  integrity sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==supports-color@^5.5.0:  version "5.5.0"  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==  dependencies:    has-flag "^3.0.0"supports-color@^7.1.0:  version "7.2.0"  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"