diff --git a/web/package.json b/web/package.json index e5ab5d0..71cfb6d 100644 --- a/web/package.json +++ b/web/package.json @@ -13,6 +13,7 @@ "@astrojs/tailwind": "^3.1.3", "@unom/style": "^0.2.14", "astro": "^2.5.0", + "astro-icon": "^0.8.1", "autoprefixer": "^10.4.14", "class-variance-authority": "^0.6.0", "clsx": "^1.2.1", diff --git a/web/src/components/Card.astro b/web/src/components/Card.astro index f3599c7..67fade0 100644 --- a/web/src/components/Card.astro +++ b/web/src/components/Card.astro @@ -3,7 +3,7 @@ import type { HTMLAttributes } from "astro/types"; import { VariantProps, cva } from "class-variance-authority"; const card = cva( - "rounded-card transition-colors bg-neutral-accent ring-2 ring-main/10", + "rounded-card transition-colors bg-neutral-accent ring-2 ring-main/10 flex-1", { variants: { interactable: { diff --git a/web/src/components/Cards/CardFeature.astro b/web/src/components/Cards/CardFeature.astro index 65d4033..2d9db1a 100644 --- a/web/src/components/Cards/CardFeature.astro +++ b/web/src/components/Cards/CardFeature.astro @@ -1,18 +1,24 @@ --- import Card from "../Card.astro"; +import { Icon } from "astro-icon"; + export interface Props { title: string; + iconName: string; description: string; } -const { title, description } = Astro.props; +const { title, description, iconName } = Astro.props; --- -

+
+ +
+

{title}

-

+

{description}

diff --git a/web/src/components/Heading.astro b/web/src/components/Heading.astro new file mode 100644 index 0000000..f90ca39 --- /dev/null +++ b/web/src/components/Heading.astro @@ -0,0 +1,52 @@ +--- +import { cn } from "@/lib/utils"; +import type { HTMLAttributes } from "astro/types"; +import { VariantProps, cva } from "class-variance-authority"; + +const heading = cva("max-w-3xl m-[var(--section-heading-margin)]", { + variants: { + main: { + true: "font-bold", + false: "font-semibold", + }, + padding: { + true: "py-4", + false: "p-0", + }, + }, +}); + +export interface Props + extends HTMLAttributes<"h1" | "h2">, + VariantProps { + subtitle?: string; +} + +const { main = false, padding = true, subtitle } = Astro.props; + +const titleClass = cn( + heading({ main, padding }), + subtitle ? "mb-[calc(var(--section_heading-margin-bottom)_/_2)]" : "" +); +--- + +
+ { + main ? ( +

+ +

+ ) : ( +

+ +

+ ) + } + { + subtitle && ( +

+ {subtitle} +

+ ) + } +
diff --git a/web/src/icons/Extensible.svg b/web/src/icons/Extensible.svg new file mode 100644 index 0000000..fd62491 --- /dev/null +++ b/web/src/icons/Extensible.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/icons/Fast.svg b/web/src/icons/Fast.svg new file mode 100644 index 0000000..377952b --- /dev/null +++ b/web/src/icons/Fast.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/web/src/icons/Open.svg b/web/src/icons/Open.svg new file mode 100644 index 0000000..86a6057 --- /dev/null +++ b/web/src/icons/Open.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/src/sections/Features.astro b/web/src/sections/Features.astro index 4e91a66..8872087 100644 --- a/web/src/sections/Features.astro +++ b/web/src/sections/Features.astro @@ -1,26 +1,45 @@ --- import CardFeature from "@/components/Cards/CardFeature.astro"; +import Heading from "@/components/Heading.astro"; type Feature = { title: string; + iconName: string; description: string; }; const features: Array = [ { title: "Fast", + iconName: "Fast", description: "Thanks to rust with multithreading and skia we're really fast!", }, + { + title: "Extensible", + iconName: "Extensible", + description: + "Modular structured and thanks to our dual language approach you even decide in which language you want to extend!", + }, + { + title: "Community driven & Free", + iconName: "Open", + description: + "The project is MIT licensed and we're open to new ideas for further development. Also since this product is not profit driven we won't screw you over!", + }, ]; --- -
- { - features.map((feature) => ( - - )) - } +
+ Core Features & Values +
+ { + features.map((feature) => ( + + )) + } +
diff --git a/web/src/sections/Introduction.astro b/web/src/sections/Introduction.astro index e09e27d..61ce57b 100644 --- a/web/src/sections/Introduction.astro +++ b/web/src/sections/Introduction.astro @@ -1,5 +1,9 @@ +--- +import Heading from "@/components/Heading.astro"; +--- +
-

The next generation motion design tool

+ The Next Generation Open Motion Design Tool

We believe tools for expressing yourself should be accessible to everybody. Not constrained to proprietary operating systems or monthly diff --git a/web/src/sections/Landing.astro b/web/src/sections/Landing.astro index 056d0b3..dd2ecbe 100644 --- a/web/src/sections/Landing.astro +++ b/web/src/sections/Landing.astro @@ -4,22 +4,21 @@ import Button from "@/components/Button.astro";

- +
-

tempblade Creator

-

+

+ tempblade Creator +

+

Rust Based Open Source Motion Design Editor & Toolkit

diff --git a/web/src/sections/bg-voronoi.ts b/web/src/sections/bg-voronoi.ts new file mode 100644 index 0000000..affdd2b --- /dev/null +++ b/web/src/sections/bg-voronoi.ts @@ -0,0 +1,95 @@ +interface Point { + x: number; + y: number; + color: string; +} + +interface VoronoiCell { + site: Point; + vertices: Point[]; +} + +function generateVoronoiPattern( + canvas: HTMLCanvasElement, + points: Array +) { + const ctx = canvas.getContext("2d"); + + if (ctx) { + // Draw Voronoi regions + for (let x = 0; x < canvas.width; x++) { + for (let y = 0; y < canvas.height; y++) { + let closestPointIndex = 0; + let closestDistance = distance(x, y, points[0].x, points[0].y); + + for (let i = 1; i < points.length; i++) { + const dist = distance(x, y, points[i].x, points[i].y); + if (dist < closestDistance) { + closestDistance = dist; + closestPointIndex = i; + } + } + + const { x: px, y: py, color } = points[closestPointIndex]; + ctx.fillStyle = color; + ctx.fillRect(x, y, 1, 1); + } + } + } +} + +function distance(x1: number, y1: number, x2: number, y2: number) { + const dx = x2 - x1; + const dy = y2 - y1; + return Math.sqrt(dx * dx + dy * dy); +} + +// Get canvas element and generate Voronoi pattern +const canvas = document.getElementById("landing-bg") as HTMLCanvasElement; + + +const initialPoints: Array = [{ + x: 200, + y: 200, + color: "#8AFFAD", +}, +{ + x: 800, + y: 500, + color: "#326CCC", +}, +{ + x: 1100, + y: 300, + color: "#95B2F5", +}, +{ + x: 1200, + y: 600, + color: "#32C3E3", +}, +{ + x: 300, + y: 900, + color: "purple", +},] + + +const draw = (time: number) => { + const radius = 200; + + const angle = time % 360; + + const radian = angle * (Math.PI / 180); + + const x = Math.cos(radian) * radius; + const y = Math.sin(radian) * radius; + + const points = initialPoints.map((p) => ({ ...p, x: p.x + x, y: p.y + y })); + + generateVoronoiPattern(canvas, points); + + //requestAnimationFrame(draw); +} + +requestAnimationFrame(draw); \ No newline at end of file diff --git a/web/src/sections/bg.ts b/web/src/sections/bg.ts index 6020d74..e598785 100644 --- a/web/src/sections/bg.ts +++ b/web/src/sections/bg.ts @@ -1,75 +1,126 @@ interface Point { - x: number; - y: number; - color: string; + x: number; + y: number; + color: string; + radius: number; } -interface VoronoiCell { - site: Point; - vertices: Point[]; -} - -function generateVoronoiPattern( - canvas: HTMLCanvasElement, - points: Array -) { - const ctx = canvas.getContext("2d"); - - if (ctx) { - // Draw Voronoi regions - for (let x = 0; x < canvas.width; x++) { - for (let y = 0; y < canvas.height; y++) { - let closestPointIndex = 0; - let closestDistance = distance(x, y, points[0].x, points[0].y); - - for (let i = 1; i < points.length; i++) { - const dist = distance(x, y, points[i].x, points[i].y); - if (dist < closestDistance) { - closestDistance = dist; - closestPointIndex = i; - } - } - - const { x: px, y: py, color } = points[closestPointIndex]; - ctx.fillStyle = color; - ctx.fillRect(x, y, 1, 1); - } - } - } -} - -function distance(x1: number, y1: number, x2: number, y2: number) { - const dx = x2 - x1; - const dy = y2 - y1; - return Math.sqrt(dx * dx + dy * dy); -} - -// Get canvas element and generate Voronoi pattern const canvas = document.getElementById("landing-bg") as HTMLCanvasElement; -generateVoronoiPattern(canvas, [ - { - x: 200, - y: 200, + +const initialPoints: Array = [{ + x: 500, + y: 400, color: "#8AFFAD", - }, - { - x: 800, + radius: Math.random() * 200 +}, +{ + x: 900, y: 500, color: "#326CCC", - }, - { - x: 1100, - y: 300, + radius: Math.random() * 200 +}, +{ + x: 1600, + y: 400, color: "#95B2F5", - }, - { + radius: Math.random() * 200 +}, +{ x: 1200, y: 600, color: "#32C3E3", - }, - { - x: 300, - y: 900, + radius: Math.random() * 200 + +}, +{ + x: 600, + y: 500, + color: "#8AFFAD", + radius: Math.random() * 200 + +}, +{ + x: 900, + y: 300, color: "purple", - }, -]); + radius: Math.random() * 200 + +}, +] + +export class GradientBackground { + context: CanvasRenderingContext2D; + + constructor(context: CanvasRenderingContext2D) { + this.context = context; + this.draw = this.draw.bind(this); + + } + + draw(time: number) { + const { width, height } = this.context.canvas; + + this.context.clearRect(0, 0, width, height * 2); + + + this.context.save(); + + this.context.translate(width * 0.5, height * 0.5); + + + const angle = (time * 0.01) % 360; + const radian = angle * (Math.PI / 180); + + this.context.rotate(radian); + + this.context.translate(width * -0.5, height * -0.5); + + + initialPoints.forEach((point, index) => { + const { color, radius } = point; + + + // Calculate the position/angle on a circle by the time + const angle = time * 0.05 + index * 10 % 360; + + // Convert the angle to radian + const radian = angle * (Math.PI / 180); + + // Calculate the offset based on the radius + const offsetX = Math.cos(radian) * radius; + const offsetY = Math.sin(radian) * radius; + + // Calculate the position based on offset and initial position + const x = offsetX + point.x; + const y = offsetY + point.y; + + // Create the gradient + const gradient = this.context.createRadialGradient(x, y, 0, x, y, 700); + + gradient.addColorStop(0, color); + gradient.addColorStop(1, "rgba(0,0,0,0)"); + + this.context.fillStyle = gradient; + this.context.globalCompositeOperation = "lighten"; + + + // Draw a rect with the gradient + this.context.fillRect(0, 0, width, height); + + + }) + + this.context.restore(); + + return requestAnimationFrame(this.draw); + } +} + +const ctx = canvas.getContext("2d"); + +if (ctx) { + const bg = new GradientBackground(ctx); + + requestAnimationFrame(bg.draw); +} + diff --git a/web/src/styles/global.css b/web/src/styles/global.css index bac0af2..0eceeb6 100644 --- a/web/src/styles/global.css +++ b/web/src/styles/global.css @@ -5,6 +5,7 @@ :root { --color-main: 0 0% 0%; + --color-main: 0 0% 10%; --color-primary: 0 0% 0%; --color-neutral: 0 0% 100%; --color-neutral-accent: 0 0% 93%; @@ -17,12 +18,15 @@ --spacing-main: 20px; + --gap-card: 1rem; + --max-width-section: 100%; } @media (prefers-color-scheme: dark) { :root { --color-main: 0 0% 100%; + --color-secondary: 0 0% 80%; --color-primary: 0 0% 0%; --color-neutral: 264 100% 6%; --color-neutral-accent: 271 100% 10%; @@ -76,5 +80,9 @@ h4 { } p { - @apply max-w-[600px]; + @apply max-w-[600px] text-secondary; } + +[astro-icon] { + fill: currentColor; +} \ No newline at end of file diff --git a/web/yarn.lock b/web/yarn.lock index e8cfc29..3337fc9 100644 --- a/web/yarn.lock +++ b/web/yarn.lock @@ -613,6 +613,11 @@ deepmerge "^4.2.2" escalade "^3.1.1" +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "@types/babel__core@^7.1.19": version "7.20.1" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" @@ -808,6 +813,15 @@ array-iterate@^2.0.0: resolved "https://registry.yarnpkg.com/array-iterate/-/array-iterate-2.0.1.tgz#6efd43f8295b3fee06251d3d62ead4bd9805dd24" integrity sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg== +astro-icon@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/astro-icon/-/astro-icon-0.8.1.tgz#2259640cea3818326957dfba66ae17aa43f1d3cb" + integrity sha512-APk+fbFnoyGdIVSPFrdrOW9YBK96/1fYuVe7ULTGW92+z00RKB8GfLJiUvzNVXUAX2rZJCFmruGVF4rrhcTYsg== + dependencies: + node-fetch "^3.1.0" + resolve-pkg "^2.0.0" + svgo "^2.8.0" + astro@^2.5.0: version "2.6.4" resolved "https://registry.yarnpkg.com/astro/-/astro-2.6.4.tgz#37880a65cca438971643fd6473e7fe8ae2578f11" @@ -917,6 +931,11 @@ bl@^5.0.0: inherits "^2.0.4" readable-stream "^3.4.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + boxen@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" @@ -1135,6 +1154,11 @@ commander@^4.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + common-ancestor-path@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz#4f7d2d1394d91b7abdf51871c62f71eadb0182a7" @@ -1173,16 +1197,52 @@ css-color-converter@^2.0.0: color-name "^1.1.4" css-unit-converter "^1.1.2" +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + css-unit-converter@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/css-unit-converter/-/css-unit-converter-1.1.2.tgz#4c77f5a1954e6dbff60695ecb214e3270436ab21" integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +data-uri-to-buffer@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" + integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== + debug@^4.0.0, debug@^4.1.0, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -1262,6 +1322,36 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + dset@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/dset/-/dset-3.1.2.tgz#89c436ca6450398396dc6538ea00abc0c54cd45a" @@ -1295,6 +1385,11 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + es-module-lexer@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" @@ -1433,6 +1528,14 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fetch-blob@^3.1.2, fetch-blob@^3.1.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" + integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== + dependencies: + node-domexception "^1.0.0" + web-streams-polyfill "^3.0.3" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -1464,6 +1567,13 @@ find-yarn-workspace-root2@1.2.16: micromatch "^4.0.2" pkg-dir "^4.2.0" +formdata-polyfill@^4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" + integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== + dependencies: + fetch-blob "^3.1.2" + fraction.js@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" @@ -2080,6 +2190,11 @@ mdast-util-to-string@^3.0.0, mdast-util-to-string@^3.1.0: dependencies: "@types/mdast" "^3.0.0" +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -2436,6 +2551,20 @@ nlcst-to-string@^3.0.0: dependencies: "@types/nlcst" "^1.0.0" +node-domexception@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" + integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== + +node-fetch@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.1.tgz#b3eea7b54b3a48020e46f4f88b9c5a7430d20b2e" + integrity sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow== + dependencies: + data-uri-to-buffer "^4.0.0" + fetch-blob "^3.1.4" + formdata-polyfill "^4.0.10" + node-releases@^2.0.12: version "2.0.12" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" @@ -2465,6 +2594,13 @@ npm-run-path@^5.1.0: dependencies: path-key "^4.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -2847,6 +2983,18 @@ remark-smartypants@^2.0.0: retext-smartypants "^5.1.0" unist-util-visit "^4.1.0" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg/-/resolve-pkg-2.0.0.tgz#ac06991418a7623edc119084edc98b0e6bf05a41" + integrity sha512-+1lzwXehGCXSeryaISr6WujZzowloigEofRB+dj75y9RRa/obVcYgbHJd53tdYw8pvZj8GojXaaENws8Ktw/hQ== + dependencies: + resolve-from "^5.0.0" + resolve@^1.1.7, resolve@^1.17.0, resolve@^1.22.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" @@ -3020,6 +3168,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + space-separated-tokens@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz#1ecd9d2350a3844572c3f4a312bceb018348859f" @@ -3030,6 +3183,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stdin-discarder@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/stdin-discarder/-/stdin-discarder-0.1.0.tgz#22b3e400393a8e28ebf53f9958f3880622efde21" @@ -3160,6 +3318,19 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svgo@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + synckit@^0.8.4: version "0.8.5" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" @@ -3515,6 +3686,11 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== +web-streams-polyfill@^3.0.3: + version "3.2.1" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" + integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== + which-pm-runs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz#35ccf7b1a0fce87bd8b92a478c9d045785d3bf35"