diff --git a/polaris-icons/package.json b/polaris-icons/package.json
index a6a8e0b8b3b..66b740457ce 100644
--- a/polaris-icons/package.json
+++ b/polaris-icons/package.json
@@ -61,7 +61,6 @@
"hast-util-select": "^3.0.0",
"js-yaml": "^4.0.0",
"rehype-parse": "^7.0.1",
- "svgo": "^2.8.0",
"unified": "^9.2.1"
}
}
diff --git a/polaris.shopify.com/content/components/index.mdx b/polaris.shopify.com/content/components/index.mdx
index eff9fb7b251..a2773b0afea 100644
--- a/polaris.shopify.com/content/components/index.mdx
+++ b/polaris.shopify.com/content/components/index.mdx
@@ -2,7 +2,6 @@
title: Components
order: 7
icon: AppsMajor
-previewImg: /images/components.png
---
# {frontmatter.title}
diff --git a/polaris.shopify.com/package.json b/polaris.shopify.com/package.json
index 4744d9364e1..357b9109062 100644
--- a/polaris.shopify.com/package.json
+++ b/polaris.shopify.com/package.json
@@ -20,7 +20,7 @@
"create-component": "generact --root src/components src/components/Template/Template.tsx",
"gen-sitemap": "yarn next-sitemap",
"get-props": "./scripts/get-props/src/get-props.ts",
- "gen-assets": "yarn get-props && node scripts/gen-cache-json.mjs && ts-node scripts/gen-site-map.ts && ts-node scripts/gen-og-images.ts",
+ "gen-assets": "yarn get-props && node scripts/gen-cache-json.mjs && ts-node scripts/gen-site-map.ts && ts-node scripts/gen-og-images.tsx",
"gen-colors": "ts-node ./scripts/gen-colors.ts"
},
"dependencies": {
@@ -64,6 +64,7 @@
},
"devDependencies": {
"@esm2cjs/p-map": "^5.5.0",
+ "@napi-rs/image": "^1.7.0",
"@types/base-64": "^1.0.0",
"@types/gtag.js": "^0.0.10",
"@types/js-yaml": "^4.0.5",
@@ -84,6 +85,7 @@
"generact": "^0.4.0",
"get-site-urls": "3.0.0-alpha.1",
"globby": "^11.1.0",
+ "inter-ui": "3.19.3",
"is-ci": "^3.0.1",
"js-yaml": "^4.1.0",
"lodash.set": "^4.3.2",
@@ -91,8 +93,8 @@
"ora": "^5.4.1",
"p-map": "^5.5.0",
"playroom": "^0.28.0",
- "puppeteer": "^16.0.0",
"sass": "^1.49.9",
+ "satori": "^0.10.11",
"style-loader": "^3.3.1",
"ts-node": "^10.7.0",
"typescript": "^4.9.3"
diff --git a/polaris.shopify.com/scripts/gen-og-images.ts b/polaris.shopify.com/scripts/gen-og-images.ts
deleted file mode 100644
index 4a51c2259fe..00000000000
--- a/polaris.shopify.com/scripts/gen-og-images.ts
+++ /dev/null
@@ -1,200 +0,0 @@
-import * as polarisIcons from '@shopify/polaris-icons';
-import puppeteer from 'puppeteer';
-import {existsSync} from 'fs';
-import path from 'path';
-import {writeFile, readFile, mkdir, rm} from 'fs/promises';
-import pMap from '@esm2cjs/p-map';
-import ora from 'ora';
-import typedSiteJSON from '../.cache/site';
-
-const imgDir = path.join(process.cwd(), 'public/og-images');
-
-const shopifyLogo = `
-`;
-
-const defaultImage = `
-`;
-
-const generateHTML = async (data, url) => {
- const {frontMatter} = data[url];
- const title = frontMatter.title;
-
- let htmlImg = `
${defaultImage}
`;
-
- if (url.startsWith('/components/')) {
- const imgPath = path.join(process.cwd(), `public/images${url}.png`);
- const image = await readFile(imgPath);
- const base64 = Buffer.from(image).toString('base64');
- htmlImg = ``;
- }
-
- if (
- url.startsWith('/foundations/') ||
- url.startsWith('/design/') ||
- url.startsWith('/content/')
- ) {
- if (frontMatter?.icon && frontMatter?.icon in polarisIcons) {
- const iconFilePath = path.join(
- process.cwd(),
- `../polaris-icons/dist/svg/${frontMatter.icon}.svg`,
- );
- const iconData = await readFile(iconFilePath);
-
- htmlImg = `${iconData}
`;
- }
- }
-
- const html = `
-
-
-
- ${title}
- ${htmlImg}
-
- ${shopifyLogo} Polaris
-
-`;
-
- return Buffer.from(html).toString('base64');
-};
-
-const genOgImages = async () => {
- const spinner = ora('Generating Open Graph images from sitemap').start();
- if (existsSync(imgDir)) {
- await rm(imgDir, {recursive: true});
- }
-
- await mkdir(imgDir, {recursive: true});
- const urls = Object.keys(typedSiteJSON);
- const browser = await puppeteer.launch({
- defaultViewport: {width: 1200, height: 630},
- args: ['--no-sandbox', '--disable-setuid-sandbox'],
- });
-
- let completed = 0;
-
- const getPNG = async (url) => {
- try {
- const imgPath =
- url === ''
- ? 'home'
- : new URL(url, 'https://polaris.shopify.com').pathname;
- const html = await generateHTML(typedSiteJSON, url);
- const encodedUrl = `data:text/html;charset=utf-8;base64,${html}`;
- const page = await browser.newPage();
- await page.goto(encodedUrl, {waitUntil: 'networkidle0'});
- const image = await page.screenshot();
- if (!existsSync(`${imgDir}${imgPath}`)) {
- await mkdir(`${imgDir}${imgPath}`, {recursive: true});
- }
- await writeFile(`${imgDir}${imgPath}.png`, image);
- await page.close();
- completed++;
- spinner.text = `Generated ${completed} of ${urls.length} Open Graph images from sitemap`;
- } catch (error) {
- spinner.fail(`Failed to generate Open Graph png for ${url}`);
- throw error;
- }
- };
-
- const generateImages = await pMap(urls, getPNG, {concurrency: 30});
-
- await Promise.all(generateImages);
-
- await browser.close();
- spinner.succeed(
- `Generated ${urls.length} of ${urls.length} Open Graph images from sitemap`,
- );
-};
-
-genOgImages().then(() => {
- console.log('✅ OG Image creation done');
-});
diff --git a/polaris.shopify.com/scripts/gen-og-images.tsx b/polaris.shopify.com/scripts/gen-og-images.tsx
new file mode 100644
index 00000000000..084cc3f9603
--- /dev/null
+++ b/polaris.shopify.com/scripts/gen-og-images.tsx
@@ -0,0 +1,212 @@
+import React from 'react';
+import * as polarisIcons from '@shopify/polaris-icons';
+import {Transformer, ResizeFilterType} from '@napi-rs/image';
+
+import fs from 'node:fs';
+import path from 'node:path';
+import {writeFile, mkdir, rm} from 'fs/promises';
+import ora from 'ora';
+import satori, {type SatoriOptions} from 'satori';
+import typedSiteJSON from '../.cache/site';
+
+const WIDTH = 1200;
+const HEIGHT = 630;
+const PADDING = 60;
+const LOGO_SCALE = 0.9;
+// To maintain a 1:1 aspect ratio, we can't use regular CSS (we're using a
+// limited set of yoga), so we calculate it manually here.
+const IMG_SIZE = (HEIGHT - PADDING * 2) * LOGO_SCALE;
+
+const interDir = path.join(
+ path.dirname(require.resolve('inter-ui')),
+ 'Inter (web)',
+);
+
+const imgDir = path.join(process.cwd(), 'public/og-images');
+
+const shopifyLogo = (
+
+);
+
+const defaultImage = (
+
+);
+
+const generateSvg = async (url, frontMatter, satoriConfig: SatoriOptions) => {
+ const title = frontMatter.title;
+ let logo = shopifyLogo;
+
+ return satori(
+
+ {defaultImage}
+
+
+
+ {title}
+
+
+
+ {logo} Polaris
+
+
+
,
+
+ satoriConfig,
+ );
+};
+
+const genOgImages = async () => {
+ const spinner = ora(
+ 'Generating Open Graph images from .cache/site.ts',
+ ).start();
+ if (fs.existsSync(imgDir)) {
+ await rm(imgDir, {recursive: true});
+ }
+
+ const interMedium = fs.readFileSync(path.join(interDir, 'Inter-Medium.woff'));
+ const interBold = fs.readFileSync(path.join(interDir, 'Inter-Bold.woff'));
+
+ const satoriConfig: SatoriOptions = {
+ width: WIDTH,
+ height: HEIGHT,
+ fonts: [
+ {
+ name: 'Inter',
+ data: interMedium,
+ weight: 500,
+ style: 'normal',
+ },
+ {
+ name: 'Inter',
+ data: interBold,
+ weight: 700,
+ style: 'normal',
+ },
+ ],
+ };
+
+ let completed = 0;
+ return Promise.all(
+ Object.entries({
+ '/home': {
+ frontMatter: {
+ title: 'Polaris',
+ },
+ },
+ ...typedSiteJSON,
+ }).map(async ([url, {frontMatter}]) => {
+ try {
+ const imgPath =
+ url === ''
+ ? '/home'
+ : new URL(url, 'https://polaris.shopify.com').pathname;
+ const svg = await generateSvg(url, frontMatter, satoriConfig);
+
+ const imgFile = `${imgDir}${imgPath}.png`;
+ await mkdir(path.dirname(imgFile), {recursive: true});
+
+ const pngData = await Transformer.fromSvg(svg)
+ // svg comes in at 2x size for some reason.
+ .crop(0, 0, WIDTH, HEIGHT)
+ .png();
+ await writeFile(imgFile, pngData);
+ completed++;
+ } catch (error) {
+ spinner.fail(`Failed to generate Open Graph png for ${url}`);
+ throw error;
+ }
+ }),
+ ).then(() => {
+ spinner.succeed(
+ `Generated ${completed} Open Graph images from .cache/site.ts`,
+ );
+ });
+};
+
+genOgImages().then(() => {});
diff --git a/polaris.shopify.com/tsconfig.json b/polaris.shopify.com/tsconfig.json
index 3de738d3376..bc5caac466b 100644
--- a/polaris.shopify.com/tsconfig.json
+++ b/polaris.shopify.com/tsconfig.json
@@ -37,7 +37,8 @@
"transpileOnly": true,
"files": true,
"compilerOptions": {
- "module": "CommonJS"
+ "module": "CommonJS",
+ "jsx": "react"
}
}
}
diff --git a/yarn.lock b/yarn.lock
index a6832eb758c..01cef283955 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2200,6 +2200,84 @@
call-me-maybe "^1.0.1"
glob-to-regexp "^0.3.0"
+"@napi-rs/image-android-arm-eabi@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-android-arm-eabi/-/image-android-arm-eabi-1.7.0.tgz#cc0a09aef43e4b529e9116d6305c683a936b26de"
+ integrity sha512-lpyqxaIYUrdk096xoJjvPGin5jY1Ehor0RxryqDvowGUhVU3TDgolsjjuFPEki3cfvV6zzAm7bWUkmxIci2zaw==
+
+"@napi-rs/image-android-arm64@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-android-arm64/-/image-android-arm64-1.7.0.tgz#57d38856946348eeabf1b907a09610be83573523"
+ integrity sha512-ojzi1ORsFZ53upLh0YVF1J8Qxvq+V2s6Xwbi4p4+ZLgk3MMd9ephERxxNExOf3/nyj4k+izEz6C/RbJwnSJXpw==
+
+"@napi-rs/image-darwin-arm64@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-darwin-arm64/-/image-darwin-arm64-1.7.0.tgz#972e8e6443e7e84b0f66c3b71dc7dfb350e8a10a"
+ integrity sha512-SadObhsP0E/og6FGDzwafWFEwePSkdEKmwh7ssWePopwN2PfTnIyQq4MfVE/iSLgHfiHgQwwwssY6j815P8YwA==
+
+"@napi-rs/image-darwin-x64@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-darwin-x64/-/image-darwin-x64-1.7.0.tgz#dfd58c53b3b0c50d35805ff6d50d75e811c87b3a"
+ integrity sha512-lbUpy3deqxsbGMZRRwkSAMs4uWN+f8RER4BI7kwVK9rjUwvmnI+JMC+TCD03j+AMviANhsR/umDjSTS4HAbKdQ==
+
+"@napi-rs/image-freebsd-x64@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-freebsd-x64/-/image-freebsd-x64-1.7.0.tgz#02c508296beca1acdd532ce23844c20ecd9e783f"
+ integrity sha512-DCFov4Ibk7pNUI30dBAR2SqtBSKTEtlsqkOJGWRiqGlTSqt7xPR3YcdM3N8JYN1lFHCN2SoJnInV3/p3yiKVLQ==
+
+"@napi-rs/image-linux-arm-gnueabihf@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-linux-arm-gnueabihf/-/image-linux-arm-gnueabihf-1.7.0.tgz#c3a6c978fa89874d92abbace684ca63bf356314a"
+ integrity sha512-392foWTx3vIsBs5lNDZt0H0qn/x3PLR92GCbY1SWNtbE11+D47IDxHauLqcU/18IVule9nODFZ6KLLhuLjdqJA==
+
+"@napi-rs/image-linux-arm64-gnu@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-linux-arm64-gnu/-/image-linux-arm64-gnu-1.7.0.tgz#4fee6e9a95fd85e5bf891ee0f462fa3e894c2a23"
+ integrity sha512-oYTCK6VsyywMPjcOJh5hk8vTA7i2coekXnkfHErBbyKm7v5F+3pdOXrhmKQHYojENHT/LkWWKlkr0jF8QB4U3w==
+
+"@napi-rs/image-linux-arm64-musl@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-linux-arm64-musl/-/image-linux-arm64-musl-1.7.0.tgz#4be9b48ad8d9336540bc80952964c305fee840d2"
+ integrity sha512-x3Z3YmhdMut2ULdXSjxAihp3rGcTvxUG5bhHMVc7bfezhGOViqfPJ5Qknra8egEZpXe6C0PKkBcIBm7hSlaubg==
+
+"@napi-rs/image-linux-x64-gnu@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-linux-x64-gnu/-/image-linux-x64-gnu-1.7.0.tgz#a528578a6e46a6ba2a3b2451c0c5412c4dae45c0"
+ integrity sha512-5+FEzLr7yNGljdXXPyMJLJAQG8z9c1rawFTnT4dUidFjtpP/C4AP923eWDeo7B2Zz2psT7A8hgXhK+uAqyj4WQ==
+
+"@napi-rs/image-linux-x64-musl@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-linux-x64-musl/-/image-linux-x64-musl-1.7.0.tgz#592abcf1b0ff9e19f6e3026f9011e7ffe4d193a8"
+ integrity sha512-LhzaYQ/z3axPUDPZefdyvgHz1qQ3NF2oDUHHFkVgpWNLJ3wGxa4GpM5TD+/jJCOChACAGYcZPpx96XLJGKNZfQ==
+
+"@napi-rs/image-win32-ia32-msvc@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-win32-ia32-msvc/-/image-win32-ia32-msvc-1.7.0.tgz#62ce6b1426656d093ee633c1236d2ce7b6ae66ea"
+ integrity sha512-taCxMQTssuZW2hviOzJxo1iji0cAwjXY9m7CkiAAM8KftVUxAbmDGkPyEGRyt43ftYJ/rXRMz1vEEz/gxiZ5rQ==
+
+"@napi-rs/image-win32-x64-msvc@1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image-win32-x64-msvc/-/image-win32-x64-msvc-1.7.0.tgz#238b3f1d1e239335fd2253a6bf86325b0698a3a9"
+ integrity sha512-hfnpTipEv6mrvhaNHRHBdYoVPUPyWnJ5KDpPAabJbTcsVb4x2TUiVI54r5GzF8zQ0RJc5mGtWdu9KFvyEBVJkg==
+
+"@napi-rs/image@^1.7.0":
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/@napi-rs/image/-/image-1.7.0.tgz#b66e8f406d5300c7e1fb5fb874ee0638dc38f9f8"
+ integrity sha512-UI8bJKz4MwYsf2toiyxodbXeyHNe9yxhXz0KJdiDgliYs7ObCiu7DatPA899yuNscOApkweKV6yx2ag1lpVbbw==
+ optionalDependencies:
+ "@napi-rs/image-android-arm-eabi" "1.7.0"
+ "@napi-rs/image-android-arm64" "1.7.0"
+ "@napi-rs/image-darwin-arm64" "1.7.0"
+ "@napi-rs/image-darwin-x64" "1.7.0"
+ "@napi-rs/image-freebsd-x64" "1.7.0"
+ "@napi-rs/image-linux-arm-gnueabihf" "1.7.0"
+ "@napi-rs/image-linux-arm64-gnu" "1.7.0"
+ "@napi-rs/image-linux-arm64-musl" "1.7.0"
+ "@napi-rs/image-linux-x64-gnu" "1.7.0"
+ "@napi-rs/image-linux-x64-musl" "1.7.0"
+ "@napi-rs/image-win32-ia32-msvc" "1.7.0"
+ "@napi-rs/image-win32-x64-msvc" "1.7.0"
+
"@next/env@13.0.6":
version "13.0.6"
resolved "https://registry.yarnpkg.com/@next/env/-/env-13.0.6.tgz#3fcab11ffbe95bff127827d9f7f3139bc5e6adff"
@@ -2800,6 +2878,14 @@
resolved "https://registry.yarnpkg.com/@shopify/useful-types/-/useful-types-5.0.0.tgz#1a06976ecff33de9b36c822c4f2f89a92940f27b"
integrity sha512-3T9AZNKK3Tjxz++Z10DFtNnAXfdoE9kPkJTiCfsRcxZ3IVfFORzAUKTv4mgKT5P8IyRbIRtmxfzZzRCxn4fIgQ==
+"@shuding/opentype.js@1.4.0-beta.0":
+ version "1.4.0-beta.0"
+ resolved "https://registry.yarnpkg.com/@shuding/opentype.js/-/opentype.js-1.4.0-beta.0.tgz#5d1e7e9e056f546aad41df1c5043f8f85d39e24b"
+ integrity sha512-3NgmNyH3l/Hv6EvsWJbsvpcpUba6R8IREQ83nH83cyakCw7uM1arZKNfHwv1Wz6jgqrF/j4x5ELvR6PnK9nTcA==
+ dependencies:
+ fflate "^0.7.3"
+ string.prototype.codepointat "^0.2.1"
+
"@sinclair/typebox@^0.23.3":
version "0.23.4"
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.23.4.tgz#6ff93fd2585ce44f7481c9ff6af610fbb5de98a4"
@@ -5901,6 +5987,11 @@ base-64@^1.0.0:
resolved "https://registry.yarnpkg.com/base-64/-/base-64-1.0.0.tgz#09d0f2084e32a3fd08c2475b973788eee6ae8f4a"
integrity sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==
+base64-js@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
+ integrity sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==
+
base64-js@^1.0.2, base64-js@^1.3.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
@@ -6600,6 +6691,11 @@ camelcase@^6.2.0, camelcase@^6.3.0:
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
+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-api@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
@@ -7181,7 +7277,7 @@ color-name@1.1.3:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
-color-name@^1.0.0, color-name@~1.1.4:
+color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
@@ -7714,6 +7810,21 @@ crypto-random-string@^4.0.0:
dependencies:
type-fest "^1.0.1"
+css-background-parser@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/css-background-parser/-/css-background-parser-0.1.0.tgz#48a17f7fe6d4d4f1bca3177ddf16c5617950741b"
+ integrity sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==
+
+css-box-shadow@1.0.0-3:
+ version "1.0.0-3"
+ resolved "https://registry.yarnpkg.com/css-box-shadow/-/css-box-shadow-1.0.0-3.tgz#9eaeb7140947bf5d649fc49a19e4bbaa5f602713"
+ integrity sha512-9jaqR6e7Ohds+aWwmhe6wILJ99xYQbfmK9QQB9CcMjDbTxPZjwEmUQpU91OG05Xgm8BahT5fW+svbsQGjS/zPg==
+
+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-declaration-sorter@^6.2.2:
version "6.2.2"
resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02"
@@ -7783,6 +7894,15 @@ css-selector-parser@^1.3.0:
resolved "https://registry.yarnpkg.com/css-selector-parser/-/css-selector-parser-1.4.1.tgz#03f9cb8a81c3e5ab2c51684557d5aaf6d2569759"
integrity sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==
+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"
+
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"
@@ -8253,11 +8373,6 @@ devtools-protocol@0.0.1001819:
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1001819.tgz#0a98f44cefdb02cc684f3d5e6bd898a1690231d9"
integrity sha512-G6OsIFnv/rDyxSqBa2lDLR6thp9oJioLsb2Gl+LbQlyoA9/OBAkrTU9jiCcQ8Pnh7z4d6slDiLaogR5hzgJLmQ==
-devtools-protocol@0.0.1019158:
- version "0.0.1019158"
- resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz#4b08d06108a784a2134313149626ba55f030a86f"
- integrity sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==
-
devtools-protocol@0.0.981744:
version "0.0.981744"
resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf"
@@ -8538,6 +8653,11 @@ emittery@^0.8.1:
resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+emoji-regex@^10.2.1:
+ version "10.3.0"
+ resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-10.3.0.tgz#76998b9268409eb3dae3de989254d456e70cfe23"
+ integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
@@ -9676,6 +9796,11 @@ fetch-retry@^5.0.2:
resolved "https://registry.yarnpkg.com/fetch-retry/-/fetch-retry-5.0.3.tgz#edfa3641892995f9afee94f25b168827aa97fe3d"
integrity sha512-uJQyMrX5IJZkhoEUBQ3EjxkeiZkppBd5jS/fMTJmfZxLSiaQjv2zD0kTvuvkSH89uFvgSlB6ueGpjD3HWN7Bxw==
+fflate@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50"
+ integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==
+
figgy-pudding@^3.5.1:
version "3.5.2"
resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -11097,6 +11222,11 @@ header-case@^2.0.4:
capital-case "^1.0.4"
tslib "^2.0.3"
+hex-rgb@^4.1.0:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/hex-rgb/-/hex-rgb-4.3.0.tgz#af5e974e83bb2fefe44d55182b004ec818c07776"
+ integrity sha512-Ox1pJVrDCyGHMG9CFg1tmrRUMRPRsAWYc/PinY0XzJU4K7y7vjNoLKIQ7BR5UJMCxNN8EM1MNDmHWA/B3aZUuw==
+
hey-listen@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/hey-listen/-/hey-listen-1.0.8.tgz#8e59561ff724908de1aa924ed6ecc84a56a9aa68"
@@ -11719,6 +11849,11 @@ inquirer@^8.2.2, inquirer@^8.2.4:
through "^2.3.6"
wrap-ansi "^7.0.0"
+inter-ui@3.19.3:
+ version "3.19.3"
+ resolved "https://registry.yarnpkg.com/inter-ui/-/inter-ui-3.19.3.tgz#cf4b4b6d30de8d5463e2462588654b325206488c"
+ integrity sha512-5FG9fjuYOXocIfjzcCBhICL5cpvwEetseL3FU6tP3d6Bn7g8wODhB+I9RNGRTizCT7CUG4GOK54OPxqq3msQgg==
+
internal-slot@^1.0.3, internal-slot@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
@@ -13490,6 +13625,14 @@ lilconfig@^2.0.3:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25"
integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==
+linebreak@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/linebreak/-/linebreak-1.1.0.tgz#831cf378d98bced381d8ab118f852bd50d81e46b"
+ integrity sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==
+ dependencies:
+ base64-js "0.0.8"
+ unicode-trie "^2.0.0"
+
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -16228,6 +16371,11 @@ pacote@^2.7.36:
unique-filename "^1.1.0"
which "^1.2.12"
+pako@^0.2.5:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+ integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
+
pako@~1.0.5:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@@ -16275,6 +16423,14 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.6:
pbkdf2 "^3.0.3"
safe-buffer "^5.1.1"
+parse-css-color@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/parse-css-color/-/parse-css-color-0.2.1.tgz#b687a583f2e42e66ffdfce80a570706966e807c9"
+ integrity sha512-bwS/GGIFV3b6KS4uwpzCFj4w297Yl3uqnSgIPsoQkx7GMLROXfMnWvxfNkL0oh8HVhZA4hvJoEoEIqonfJ3BWg==
+ dependencies:
+ color-name "^1.1.4"
+ hex-rgb "^4.1.0"
+
parse-entities@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8"
@@ -17209,7 +17365,7 @@ postcss-unique-selectors@^5.1.1:
dependencies:
postcss-selector-parser "^6.0.5"
-postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+postcss-value-parser@^4.0.2, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
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==
@@ -17611,24 +17767,6 @@ puppeteer@^14.4.1:
unbzip2-stream "1.4.3"
ws "8.7.0"
-puppeteer@^16.0.0:
- version "16.0.0"
- resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-16.0.0.tgz#9efb6cdb57e3e51cf060a33f6289e88200dd4672"
- integrity sha512-FgSe21IHNHkqv1SiJiob4ANsxVujcINa4p3MaDEMyoZsocbgSgwYE0c9lnF8eoinw4id3vx4DOXwhFdOOwVlDg==
- dependencies:
- cross-fetch "3.1.5"
- debug "4.3.4"
- devtools-protocol "0.0.1019158"
- extract-zip "2.0.1"
- https-proxy-agent "5.0.1"
- pkg-dir "4.2.0"
- progress "2.0.3"
- proxy-from-env "1.1.0"
- rimraf "3.0.2"
- tar-fs "2.1.1"
- unbzip2-stream "1.4.3"
- ws "8.8.1"
-
qs@6.11.0, qs@^6.10.0, qs@^6.9.1:
version "6.11.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
@@ -18778,6 +18916,22 @@ sass@^1.49.9:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
+satori@^0.10.11:
+ version "0.10.11"
+ resolved "https://registry.yarnpkg.com/satori/-/satori-0.10.11.tgz#4d198beef405668120566d29a554411c534d8a5d"
+ integrity sha512-yLm1xPRPZUaKcBZJ6nmezoJjHB4MqV8x7Mu0PyZUJodRWRDD27UbeMwzuY9LEGG57WYLO4CQsGPlbHWV1Ex9TQ==
+ dependencies:
+ "@shuding/opentype.js" "1.4.0-beta.0"
+ css-background-parser "^0.1.0"
+ css-box-shadow "1.0.0-3"
+ css-to-react-native "^3.0.0"
+ emoji-regex "^10.2.1"
+ escape-html "^1.0.3"
+ linebreak "^1.1.0"
+ parse-css-color "^0.2.1"
+ postcss-value-parser "^4.2.0"
+ yoga-wasm-web "^0.3.3"
+
sax@>=0.6.0:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
@@ -19720,6 +19874,11 @@ string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1:
is-fullwidth-code-point "^2.0.0"
strip-ansi "^4.0.0"
+string.prototype.codepointat@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc"
+ integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==
+
"string.prototype.matchall@^4.0.0 || ^3.0.1", string.prototype.matchall@^4.0.7:
version "4.0.7"
resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d"
@@ -20089,7 +20248,7 @@ svg-tags@^1.0.0:
resolved "https://registry.yarnpkg.com/svg-tags/-/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764"
integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=
-svgo@^2.7.0, svgo@^2.8.0:
+svgo@^2.7.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
@@ -20431,6 +20590,11 @@ timers-browserify@^2.0.4:
dependencies:
setimmediate "^1.0.4"
+tiny-inflate@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4"
+ integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==
+
tiny-lru@^10.0.0:
version "10.3.0"
resolved "https://registry.yarnpkg.com/tiny-lru/-/tiny-lru-10.3.0.tgz#2ddc88bbe8d9a2c761df673ebef52a82182a64b3"
@@ -20944,6 +21108,14 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8"
integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==
+unicode-trie@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-2.0.0.tgz#8fd8845696e2e14a8b67d78fa9e0dd2cad62fec8"
+ integrity sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==
+ dependencies:
+ pako "^0.2.5"
+ tiny-inflate "^1.0.0"
+
unified@9.2.0:
version "9.2.0"
resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.0.tgz#67a62c627c40589edebbf60f53edfd4d822027f8"
@@ -22175,16 +22347,16 @@ ws@8.7.0:
resolved "https://registry.yarnpkg.com/ws/-/ws-8.7.0.tgz#eaf9d874b433aa00c0e0d8752532444875db3957"
integrity sha512-c2gsP0PRwcLFzUiA8Mkr37/MI7ilIlHQxaEAtd0uNMbVMoy8puJyafRlm0bV9MbGSabUPeLrRRaqIBcFcA2Pqg==
-ws@8.8.1, ws@^8.2.3, ws@^8.4.2:
- version "8.8.1"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
- integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
-
ws@^7.3.1, ws@^7.4.6:
version "7.5.7"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67"
integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==
+ws@^8.2.3, ws@^8.4.2:
+ version "8.8.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
+ integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
+
x-default-browser@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/x-default-browser/-/x-default-browser-0.4.0.tgz#70cf0da85da7c0ab5cb0f15a897f2322a6bdd481"
@@ -22361,6 +22533,11 @@ yocto-queue@^1.0.0:
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+yoga-wasm-web@^0.3.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz#eb8e9fcb18e5e651994732f19a220cb885d932ba"
+ integrity sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==
+
zip-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/zip-stream/-/zip-stream-4.1.0.tgz#51dd326571544e36aa3f756430b313576dc8fc79"