From 4fef3a72f177caed708336e5137a33a8d7b7b67c Mon Sep 17 00:00:00 2001 From: Benjamin Sehl Date: Mon, 13 May 2024 11:58:45 -0400 Subject: [PATCH] Adds boilerplate --- .gitignore | 2 +- app/assets/synchro.woff2 | Bin 0 -> 23924 bytes app/components/hydrogen/elements/Button.jsx | 0 app/components/hydrogen/elements/Text.jsx | 0 app/root.jsx | 20 +- app/routes/products.$handle.jsx | 295 +- app/styles/app.css | 4 + app/styles/reset.css | 129 - jsconfig.json | 5 +- package-lock.json | 2923 ++++++++++++++++--- package.json | 6 + postcss.config.js | 10 + tailwind.config.js | 8 + 13 files changed, 2653 insertions(+), 749 deletions(-) create mode 100644 app/assets/synchro.woff2 create mode 100644 app/components/hydrogen/elements/Button.jsx create mode 100644 app/components/hydrogen/elements/Text.jsx delete mode 100644 app/styles/reset.css create mode 100644 postcss.config.js create mode 100644 tailwind.config.js diff --git a/.gitignore b/.gitignore index 456cb3d..b28f294 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ node_modules -/.DS_Store +.DS_Store /.cache /build /dist diff --git a/app/assets/synchro.woff2 b/app/assets/synchro.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..93bb25fa7ea09966b7f8bf0245f35005b6abefde GIT binary patch literal 23924 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

m_abh@Cf7B@#V;aMTMO1zZ68QHJO) zZS~a)YjBp=*G9sPo?w#Qbx>TLBCqo+2^1TIuYh%{>t+&%vV_({0#qGn$&J&3`Xh)Y zNcH}RsP=$Kr!Ne4I&GXlQ0sZQiW9f9=Mi3r#Xm+AlxQ`xx&&YoZZ!NlIf!GJ(?_JV z)x@cqdgZ_ zB?J*LZ`mPpjF`W8id`qr#VGX&0}cZx#or6L$GcK}M-+D)rv!G1qo(cA00Ixo2Wjs; z$Bpx7uN zft8)Nv?xFER;+f5w{~gS@;0)o8QM1aiA7?nSxP%Vcte&kUP$#5FO`QA4}6iyqf4Wi zC%*X1D_^7?Z}PPTyk%3X{y^dHlA}yM zof4oYO#%T3mB8Omcq{|wF(Mk9(Cv=n@@SkrG*1094@d{M((TA;IRLOXsMWVaH5KPg03;Eb!3W&%kG&Vm9q?lh~O8o^Y*kz%IH%z4TL7&f3s z&zF?8EEiqN@#(a_;uON1j6#?_7=DJj;Ju$7tLkUCHSArk+J85&Q{eMdCzIKaQ7|Y0 zLH*6}GnVKhj@iXoiKkRYP;Mn!fiumeP{RpA^%{AKbP+K}0Gn%QHjS7O6h<%?o87Vk z(y{((AZ*@bRc~}il7(IPPvz|gq2d8IDg1wFk zXkyPYBreD(s9d?3!`)mo9wET|^26kf zg^hy?!UIF_2?&XZNl2k&YVkawcDjXEbP=~$Zoy%x#p_@6*K&D`ObX;Hw9O*Lib9zAVQW^dLZ!v3RI63vr0wd}Y0&7j#|}E=jGe~3 z@FZ{^ao7>Zop97KS1h&1i1RKu8~7NW2ulwd)T7(yAjZsdR@-Dihqc!E${8qatn)Ht z%EDj)5C`G;_+@)aj=`QbL~g!SXyo(N{0ST27pdjAP`h`F&o`P&vaG^AiYl53g#rng zryO4j>+;RkYMs8Uu+97LYf@o8{%rNIhKa*Rk5-TUgW6!s8iYvOP8H0?e1l}A4kjs@ zNqB#fZtJhlN|N&Pb?Y=>#0E3b<5))v+ClVAMejJeKy)HLmaxe*RjM7OCKI!bsyi%a TY-Nc;V_}9x_ClkPd;kCd17t@U literal 0 HcmV?d00001 diff --git a/app/components/hydrogen/elements/Button.jsx b/app/components/hydrogen/elements/Button.jsx new file mode 100644 index 0000000..e69de29 diff --git a/app/components/hydrogen/elements/Text.jsx b/app/components/hydrogen/elements/Text.jsx new file mode 100644 index 0000000..e69de29 diff --git a/app/root.jsx b/app/root.jsx index 06a69e0..af61bdb 100644 --- a/app/root.jsx +++ b/app/root.jsx @@ -13,8 +13,7 @@ import { Links, } from '@remix-run/react'; -import './styles/reset.css'; -import './styles/app.css'; +import appStyles from './styles/app.css?url'; import {Layout} from '~/components/Layout'; @@ -38,8 +37,7 @@ export const shouldRevalidate = ({formMethod, currentUrl, nextUrl}) => { export function links() { return [ - // {rel: 'stylesheet', href: resetStyles}, - // {rel: 'stylesheet', href: appStyles}, + {rel: 'stylesheet', href: appStyles}, { rel: 'preconnect', href: 'https://cdn.shopify.com', @@ -120,19 +118,8 @@ export default function App() { function Root({children}) { const nonce = useNonce(); return ( - + - - - - @@ -142,7 +129,6 @@ function Root({children}) { {children} - ); diff --git a/app/routes/products.$handle.jsx b/app/routes/products.$handle.jsx index 0b8df75..106ecbd 100644 --- a/app/routes/products.$handle.jsx +++ b/app/routes/products.$handle.jsx @@ -10,45 +10,24 @@ import { } from '@shopify/hydrogen'; import {getVariantUrl} from '~/lib/variants'; -/** - * @type {MetaFunction} - */ -export const meta = ({data, location}) => { +export const meta = ({data}) => { return [{title: `Hydrogen | ${data?.product.title ?? ''}`}]; }; -/** - * @param {LoaderFunctionArgs} - */ export async function loader({params, request, context}) { const {handle} = params; const {storefront} = context; - const selectedOptions = getSelectedProductOptions(request).filter( - (option) => - // Filter out Shopify predictive search query params - !option.name.startsWith('_sid') && - !option.name.startsWith('_pos') && - !option.name.startsWith('_psq') && - !option.name.startsWith('_ss') && - !option.name.startsWith('_v') && - // Filter out third party tracking params - !option.name.startsWith('fbclid'), - ); - - if (!handle) { - throw new Error('Expected product handle to be defined'); - } - - // await the query for the critical product data const {product} = await storefront.query(PRODUCT_QUERY, { - variables: {handle, selectedOptions}, + variables: {handle, selectedOptions: getSelectedProductOptions(request)}, }); if (!product?.id) { throw new Response(null, {status: 404}); } + // TODO: Package up all this stuff into a utility function + // setDefaultSelectedVariant(product, 'first'); Also handle "available" for first available variant as well const firstVariant = product.variants.nodes[0]; const firstVariantIsDefault = Boolean( firstVariant.selectedOptions.find( @@ -59,18 +38,27 @@ export async function loader({params, request, context}) { if (firstVariantIsDefault) { product.selectedVariant = firstVariant; } else { - // if no selected variant was returned from the selected options, - // we redirect to the first variant's url with it's selected options applied if (!product.selectedVariant) { - throw redirectToFirstVariant({product, request}); + throw function ({product, request}) { + const url = new URL(request.url); + const firstVariant = product.variants.nodes[0]; + + return redirect( + getVariantUrl({ + pathname: url.pathname, + handle: product.handle, + selectedOptions: firstVariant.selectedOptions, + searchParams: new URLSearchParams(url.search), + }), + { + status: 302, + }, + ); + }; } } + // END TODO - // In order to show which variants are available in the UI, we need to query - // all of them. But there might be a *lot*, so instead separate the variants - // into it's own separate query that is deferred. So there's a brief moment - // where variant options might show as available when they're not, but after - // this deffered query resolves, the UI will update. const variants = storefront.query(VARIANTS_QUERY, { variables: {handle}, }); @@ -78,135 +66,70 @@ export async function loader({params, request, context}) { return defer({product, variants}); } -/** - * @param {{ - * product: ProductFragment; - * request: Request; - * }} - */ -function redirectToFirstVariant({product, request}) { - const url = new URL(request.url); - const firstVariant = product.variants.nodes[0]; - - return redirect( - getVariantUrl({ - pathname: url.pathname, - handle: product.handle, - selectedOptions: firstVariant.selectedOptions, - searchParams: new URLSearchParams(url.search), - }), - { - status: 302, - }, - ); -} - export default function Product() { /** @type {LoaderReturnData} */ const {product, variants} = useLoaderData(); - const {selectedVariant} = product; + const {selectedVariant, title, descriptionHtml} = product; return (

- - -
- ); -} +
+ {selectedVariant?.image.altText +
+
+

{title}

-/** - * @param {{image: ProductVariantFragment['image']}} - */ -function ProductImage({image}) { - if (!image) { - return
; - } - return ( -
- {image.altText -
- ); -} +
+ {selectedVariant?.compareAtPrice ? ( + <> +

Sale

-/** - * @param {{ - * product: ProductFragment; - * selectedVariant: ProductFragment['selectedVariant']; - * variants: Promise; - * }} - */ -function ProductMain({selectedVariant, product, variants}) { - const {title, descriptionHtml} = product; - return ( -
-

{title}

- -
- - } - > - - {(data) => ( +
+ {selectedVariant ? ( + + ) : null} + + + +
+ + ) : ( + selectedVariant?.price && + )} +
+ + - )} - - -
-
-

- Description -

-
-
-
-
- ); -} - -/** - * @param {{ - * selectedVariant: ProductFragment['selectedVariant']; - * }} - */ -function ProductPrice({selectedVariant}) { - return ( -
- {selectedVariant?.compareAtPrice ? ( - <> -

Sale

-
-
- {selectedVariant ? : null} - - - -
- - ) : ( - selectedVariant?.price && - )} + } + > + + {(data) => ( + + )} + + +

+ Description +

+
+
); } @@ -226,9 +149,35 @@ function ProductForm({product, selectedVariant, variants}) { options={product.options} variants={variants} > - {({option}) => } + {({option}) => ( +
+
{option.name}
+
+ {option.values.map(({value, isAvailable, isActive, to}) => { + return ( + + {value} + + ); + })} +
+
+ )} -
+ { @@ -251,37 +200,9 @@ function ProductForm({product, selectedVariant, variants}) { ); } -/** - * @param {{option: VariantOption}} - */ -function ProductOptions({option}) { - return ( -
-
{option.name}
-
- {option.values.map(({value, isAvailable, isActive, to}) => { - return ( - - {value} - - ); - })} -
-
-
- ); -} +/*********************** + * ELEMENTS: TODO: Abstract + ***********************/ /** * @param {{ @@ -315,6 +236,10 @@ function AddToCartButton({analytics, children, disabled, lines, onClick}) { ); } +/*********************** + * DATA + ***********************/ + const PRODUCT_VARIANT_FRAGMENT = `#graphql fragment ProductVariant on ProductVariant { availableForSale @@ -406,7 +331,6 @@ const PRODUCT_VARIANTS_FRAGMENT = `#graphql `; const VARIANTS_QUERY = `#graphql - ${PRODUCT_VARIANTS_FRAGMENT} query ProductVariants( $country: CountryCode $language: LanguageCode @@ -416,6 +340,7 @@ const VARIANTS_QUERY = `#graphql ...ProductVariants } } + ${PRODUCT_VARIANTS_FRAGMENT} `; /** @typedef {import('@shopify/remix-oxygen').LoaderFunctionArgs} LoaderFunctionArgs */ diff --git a/app/styles/app.css b/app/styles/app.css index 5f58f32..818e12e 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -1,3 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + :root { --aside-width: 400px; --cart-aside-summary-height-with-discount: 300px; diff --git a/app/styles/reset.css b/app/styles/reset.css deleted file mode 100644 index 451a9a5..0000000 --- a/app/styles/reset.css +++ /dev/null @@ -1,129 +0,0 @@ -body { - font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, - Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; - margin: 0; - padding: 0; -} - -h1, -h2, -p { - margin: 0; - padding: 0; -} - -h1 { - font-size: 1.6rem; - font-weight: 700; - line-height: 1.4; - margin-bottom: 2rem; - margin-top: 2rem; -} - -h2 { - font-size: 1.2rem; - font-weight: 700; - line-height: 1.4; - margin-bottom: 1rem; -} - -h4 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -h5 { - margin-bottom: 1rem; - margin-top: 0.5rem; -} - -p { - font-size: 1rem; - line-height: 1.4; -} - -a { - color: #000; - text-decoration: none; -} - -a:hover { - text-decoration: underline; - cursor: pointer; -} - -hr { - border-bottom: none; - border-top: 1px solid #000; - margin: 0; -} - -pre { - white-space: pre-wrap; -} - -body { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -body > main { - margin: 0 1rem 1rem 1rem; -} - -section { - padding: 1rem 0; - @media (min-width: 768px) { - padding: 2rem 0; - } -} - -fieldset { - display: flex; - flex-direction: column; - margin-bottom: 0.5rem; - padding: 1rem; -} - -form { - max-width: 100%; - @media (min-width: 768px) { - max-width: 400px; - } -} - -input { - border-radius: 4px; - border: 1px solid #000; - font-size: 1rem; - margin-bottom: 0.5rem; - margin-top: 0.25rem; - padding: 0.5rem; -} - -legend { - font-weight: 600; - margin-bottom: 0.5rem; -} - -ul { - list-style: none; - margin: 0; - padding: 0; -} - -li { - margin-bottom: 0.5rem; -} - -dl { - margin: 0.5rem 0; -} - -code { - background: #ddd; - border-radius: 4px; - font-family: monospace; - padding: 0.25rem; -} diff --git a/jsconfig.json b/jsconfig.json index b602185..9c06d76 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -8,6 +8,9 @@ "paths": { "~/*": [ "app/*" + ], + "@h2/*": [ + "app/components/hydrogen/*" ] } }, @@ -16,4 +19,4 @@ "./**/*.js", "./**/*.jsx" ] -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index 1e63b0d..9129fca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,9 +14,12 @@ "@shopify/cli-hydrogen": "^8.0.3", "@shopify/hydrogen": "2024.4.1", "@shopify/remix-oxygen": "^2.0.4", + "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "graphql": "^16.6.0", "graphql-tag": "^2.12.6", "isbot": "^3.8.0", + "postcss-import": "^16.1.0", + "postcss-preset-env": "^9.5.12", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -28,6 +31,8 @@ "@shopify/mini-oxygen": "^3.0.1", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.13", "@total-typescript/ts-reset": "^0.4.2", "@types/eslint": "^8.4.10", "@types/react": "^18.2.22", @@ -35,6 +40,7 @@ "eslint": "^8.20.0", "eslint-plugin-hydrogen": "0.12.2", "prettier": "^2.8.4", + "tailwindcss": "^3.4.3", "typescript": "^5.2.2", "vite": "^5.1.0", "vite-tsconfig-paths": "^4.3.1" @@ -66,6 +72,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1540,186 +1558,1127 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@emotion/hash": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", - "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", - "devOptional": true - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", - "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.11.tgz", + "integrity": "sha512-yhsonEAhaWRQvHFYhSzOUobH2Ev++fMci+ppFRagw0qVSPlcPV4FnNmlwpM/b2BM10ZeMRkVV4So6YRswD0O0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.6.tgz", - "integrity": "sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" + "node_modules/@csstools/color-helpers": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.0.tgz", + "integrity": "sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz", - "integrity": "sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" + "node_modules/@csstools/css-calc": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.2.2.tgz", + "integrity": "sha512-0owrl7AruDRKAxoSIW8XzJdz7GnuW3AOj4rYLfmXsoKIX2ZZzttzGXoiC8n8V08X7wIBlEWWVB4C8fAN18+I6Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.6.tgz", - "integrity": "sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" + "node_modules/@csstools/css-color-parser": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-2.0.2.tgz", + "integrity": "sha512-Agx2YmxTcZ7TfB7KNZQ+iekaxbWSdblvtA35aTwE3KfuYyjOlCg3P4KGGdQF/cjm1pHWVSBo5duF/BRfZ8s07A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/color-helpers": "^4.2.0", + "@csstools/css-calc": "^1.2.2" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz", - "integrity": "sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.3.tgz", + "integrity": "sha512-xI/tL2zxzEbESvnSxwFgwvy5HS00oCXxL4MLs6HUiDcYfwowsoQaABKxUElp1ARITrINzBnsECOc1q0eg2GOrA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.3.1" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz", - "integrity": "sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" + "node_modules/@csstools/css-tokenizer": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.3.1.tgz", + "integrity": "sha512-iMNHTyxLbBlWIfGtabT157LH9DUx9X8+Y3oymFEuMj8HNc+rpE3dPFGFgHjpKfjeFDjLjYIAIhXPGvS2lKxL9g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz", - "integrity": "sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.11.tgz", + "integrity": "sha512-uox5MVhvNHqitPP+SynrB1o8oPxPMt2JLgp5ghJOWf54WGQ5OKu47efne49r1SWqs3wRP8xSWjnO9MBKxhB1dA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz", - "integrity": "sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" + "node_modules/@csstools/postcss-cascade-layers": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.5.tgz", + "integrity": "sha512-nAI2ToT2G/E4XEwJitVjCr2V2SluE9Eaiski+xfRbKSGxFmDUtua7SCG1AtMbjteIVqGDRw7uBd7qXqCZq2b1Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/selector-specificity": "^3.1.0", + "postcss-selector-parser": "^6.0.13" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz", - "integrity": "sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" + "node_modules/@csstools/postcss-color-function": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.16.tgz", + "integrity": "sha512-KtmXfckANSKsLBoTQCzggvKft1cmmmDKYjFO4yVlB23nWUgGInVBTE9T5JLmH29NNdTWSEPLWPUxoQ6XiIEn2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz", - "integrity": "sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" + "node_modules/@csstools/postcss-color-mix-function": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.16.tgz", + "integrity": "sha512-BJnD1M5Pdypl1cJuwGuzVC52PqgzaObsDLu34jgf+QU7daVFqz432PvpqvXTmfTSNt4OckOT1QIzWexEFlDNXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz", - "integrity": "sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" + "node_modules/@csstools/postcss-exponential-functions": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.7.tgz", + "integrity": "sha512-9usBPQX74OhiF/VuaVrp44UAPzqbKNyoaxEa6tbEXiFp+OAm3yB/TLRKyPUWg5tvvHGCduGJVdJJB3w8c8NBtA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } ], + "dependencies": { + "@csstools/css-calc": "^1.2.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" + }, "engines": { - "node": ">=12" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.2.tgz", + "integrity": "sha512-E0xz2sjm4AMCkXLCFvI/lyl4XO6aN1NCSMMVEOngFDJ+k2rDwfr6NDjWljk1li42jiLNChVX+YFnmfGCigZKXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.9.tgz", + "integrity": "sha512-JmOeiBJj1RJriAkr+aLBaiYUpEqdNOIo3ERQ5a4uNzy18upzrQ6tz7m2Vt1GQpJ62zQj7rC5PjAhCoZCoyE31g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.17.tgz", + "integrity": "sha512-qSNIqzLPKd2SadfWwHZv42lDRyYlLaM+Vx5rRIsnYCZbQxzFfe1XAwssrcCsHgba5bA6bi5oDoFCx0W+PRCpfw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.15.tgz", + "integrity": "sha512-l34fRiZ7o5+pULv7OplXniBTU4TuKYNNOv0abuvUanddWGSy3+YHlMKUSgcVFo0d1DorxPAhJSTCrugl+4OmMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.6.tgz", + "integrity": "sha512-fHaU9C/sZPauXMrzPitZ/xbACbvxbkPpHoUgB9Kw5evtsBWdVkVrajOyiT9qX7/c+G1yjApoQjP1fQatldsy9w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz", + "integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.7.tgz", + "integrity": "sha512-snT/fL6V0I/4AiObPtk2mzJ/eSvpqnf3Kyx9Mc0rI6VskjRkkrEME+kH3aMKBKwjstBrgrYUMoI+vXw2HRi9CQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.1.0", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-light-dark-function": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-1.0.5.tgz", + "integrity": "sha512-kKM9dtEaVmSTb3scL2pgef62KyWv6SK19JiAnCCuiDhlRE6PADKzaPPBXmP3qj4IEgIH+cQhdEosB0eroU6Fnw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz", + "integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz", + "integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz", + "integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz", + "integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.9.tgz", + "integrity": "sha512-iBBJuExgHwedFH9AqNOHWzZFgYnt17zhu1qWjmSihu1P5pw0lIG9q5t3uIgJJFDNmYoOGfBKan66z9u1QH8yBQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.6.tgz", + "integrity": "sha512-bc0frf2Lod53j6wEHVsaVElfvCf6uhc96v99M/wUfer4MmNYfO3YLx1kFuB8xXvb0AXiWx4fohCJqemHV3bfRg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.2.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/media-query-list-parser": "^2.1.11" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.9.tgz", + "integrity": "sha512-PR0s3tFSxPoKoPLoKuiZuYhwQC5bQxq/gFfywX2u/kh8rMzesARPZYKxE71I3jHWi6KDHGZl9Xb5xcFPwtvLiQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/media-query-list-parser": "^2.1.11" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.2.tgz", + "integrity": "sha512-ySUmPyawiHSmBW/VI44+IObcKH0v88LqFe0d09Sb3w4B1qjkaROc6d5IA3ll9kjD46IIX/dbO5bwFN/swyoyZA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz", + "integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.16.tgz", + "integrity": "sha512-zm8nND+EraZrmbO4mgcT8FrJrAQUfWNfMmbV5uTCpWtAcO5ycX3E3bO8T1TjczKYRxC5QMM/91n9YExYCF4Mvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.2.0.tgz", + "integrity": "sha512-BZlirVxCRgKlE7yVme+Xvif72eTn1MYXj8oZ4Knb+jwaH4u3AN1DjbhM7j86RP5vvuAOexJ4JwfifYYKWMN/QQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.16.tgz", + "integrity": "sha512-TSM8fVqJkT8JZDranZPnkpxjU/Q1sNR192lXMND+EcKOUjYa6uYpGSfHgjnWjCRiBSciettS+sL7y9wmnas7qQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz", + "integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.8.tgz", + "integrity": "sha512-X76+thsvsmH/SkqVbN+vjeFKe1ABGLRx8/Wl68QTb/zvJWdzgx5S/nbszZP5O3nTRc5eI8NxIOrQUiy30fR+0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.2.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.6.tgz", + "integrity": "sha512-Q8HEu4AEiwNVZBD6+DpQ8M9SajpMow4+WtmndWIAv8qxDtDYL4JK1xXWkhOGk28PrcJawOvkrEZ8Ri59UN1TJw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^4.2.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.8.tgz", + "integrity": "sha512-zEzyGriPqoIYFgHJqWNy8bmoxjM4+ONyTap1ZzQK/Lll/VsCYvx0IckB33W/u89uLSVeeB8xC7uTrkoQ7ogKyQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.2.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz", + "integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/selector-resolve-nested": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-1.1.0.tgz", + "integrity": "sha512-uWvSaeRcHyeNenKg8tp17EVDRkpflmdyvbE0DHo6D/GdBb6PDnCYYU6gRpXhtICMGMcahQmj2zGxwFM/WC8hCg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.0.tgz", + "integrity": "sha512-tGDFEHZ4XJeIt5NF7/nAfLGqPckmDZSnYne5gl67p4agQolE5s4rofdQ3e+VkeukfR91lVtSQ/Jt9DqM1ICiIQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@csstools/utilities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/utilities/-/utilities-1.0.0.tgz", + "integrity": "sha512-tAgvZQe/t2mlvpNosA4+CkMiZ2azISW5WPAcdSalZlEjQvUfghHxfQcrCiK/7/CrfAWVxyM88kGFYO82heIGDg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==", + "devOptional": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz", + "integrity": "sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.6.tgz", + "integrity": "sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.6.tgz", + "integrity": "sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.6.tgz", + "integrity": "sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.6.tgz", + "integrity": "sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.6.tgz", + "integrity": "sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.6.tgz", + "integrity": "sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.6.tgz", + "integrity": "sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.6.tgz", + "integrity": "sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.6.tgz", + "integrity": "sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.6.tgz", + "integrity": "sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { @@ -6095,6 +7054,75 @@ "node": ">=14.16" } }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz", + "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@tailwindcss/nesting": { + "version": "0.0.0-insiders.565cd3e", + "resolved": "https://registry.npmjs.org/@tailwindcss/nesting/-/nesting-0.0.0-insiders.565cd3e.tgz", + "integrity": "sha512-WhHoFBx19TnH/c+xLwT/sxei6+4RpdfiyG3MYXfmLaMsADmVqBkF7B6lDalgZD9YdM459MF7DtxVbWkOrV7IaQ==", + "dependencies": { + "postcss-nested": "^5.0.5" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/@tailwindcss/nesting/node_modules/postcss-nested": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", + "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", + "dependencies": { + "postcss-selector-parser": "^6.0.6" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.13.tgz", + "integrity": "sha512-ADGcJ8dX21dVVHIwTRgzrcunY6YY9uSlAHHGVKvkA+vLc5qLwEszvKts40lx7z0qc4clpjclwLeK5rVCV2P/uw==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@testing-library/dom": { "version": "8.20.1", "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", @@ -7030,6 +8058,12 @@ "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==" }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -7388,6 +8422,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/autoprefixer": { + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -7596,7 +8666,6 @@ "version": "4.23.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "devOptional": true, "funding": [ { "type": "opencollective", @@ -7874,11 +8943,19 @@ "node": ">=6" } }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/caniuse-lite": { "version": "1.0.30001614", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", - "devOptional": true, "funding": [ { "type": "opencollective", @@ -8694,6 +9771,77 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/css-blank-pseudo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.2.tgz", + "integrity": "sha512-J/6m+lsqpKPqWHOifAFtKFeGLOzw3jR92rxQcwRUfA/eTuZzKfKlxOmYDx2+tqOPQAueNvBiY8WhAeHu5qNmTg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.4.tgz", + "integrity": "sha512-u9vuyeksska4OMRC061xTQb2RJZv7T1JJjnZbaQpNhZRPF1UqGpBqHnlcwRS/1vv+QOpD4NVsaFT4U1zmkciuA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.1.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz", + "integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -8706,11 +9854,25 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/cssdb": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.0.1.tgz", + "integrity": "sha512-diegY/vnOYmPXY0bOBj5jeHaiK8MMpjgPuipirY8pF9AthtqEXgqVdKF5tnb6RTc/ZdhQqG0TBnInQ5CbbUW7Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "devOptional": true, "bin": { "cssesc": "bin/cssesc" }, @@ -9102,6 +10264,12 @@ "node": ">=0.10" } }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", @@ -9121,6 +10289,12 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -9264,8 +10438,7 @@ "node_modules/electron-to-chromium": { "version": "1.4.751", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", - "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", - "devOptional": true + "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==" }, "node_modules/emoji-regex": { "version": "9.2.2", @@ -9578,7 +10751,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "devOptional": true, "engines": { "node": ">=6" } @@ -11158,6 +12330,18 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -11221,7 +12405,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "devOptional": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11758,7 +12941,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "devOptional": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -12595,7 +13777,6 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "devOptional": true, "dependencies": { "hasown": "^2.0.0" }, @@ -13587,6 +14768,12 @@ "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "devOptional": true }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -14767,6 +15954,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, "node_modules/miniflare": { "version": "3.20240304.2", "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20240304.2.tgz", @@ -15035,11 +16231,21 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "devOptional": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "devOptional": true, "funding": [ { "type": "github", @@ -15151,8 +16357,7 @@ "node_modules/node-releases": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "devOptional": true + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-package-data": { "version": "5.0.0", @@ -15210,6 +16415,14 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/normalize-url": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", @@ -15553,6 +16766,15 @@ "node": ">=0.10.0" } }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -16123,374 +17345,801 @@ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dependencies": { - "type-fest": "^0.21.3" + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/password-prompt/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/patch-console": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "node_modules/path-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", + "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "devOptional": true, + "dependencies": { + "path-root-regex": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "devOptional": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "devOptional": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "devOptional": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==" + }, + "node_modules/peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dependencies": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "devOptional": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pid-from-port": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pid-from-port/-/pid-from-port-1.1.3.tgz", + "integrity": "sha512-OlE82n3yMOE5dY9RMOwxhoWefeMlxwk5IVxoj0sSzSFIlmvhN4obzTvO3s/d/b5JhcgXikjaspsy/HuUDTqbBg==", + "dependencies": { + "execa": "^0.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pid-from-port/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/pid-from-port/node_modules/execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dependencies": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pid-from-port/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/pid-from-port/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pid-from-port/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/pid-from-port/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dependencies": { + "path-key": "^2.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/password-prompt/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/pid-from-port/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/patch-console": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", - "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "node_modules/pid-from-port/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dependencies": { + "shebang-regex": "^1.0.0" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "node_modules/pid-from-port/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", + "node_modules/pid-from-port/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/pid-from-port/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "devOptional": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=0.10" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "engines": { "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "node_modules/pkg-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz", + "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==", "devOptional": true, "dependencies": { - "path-root-regex": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "confbox": "^0.1.7", + "mlly": "^1.6.1", + "pathe": "^1.1.2" } }, - "node_modules/path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==", + "node_modules/pkg-types/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "devOptional": true + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "devOptional": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "devOptional": true, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^10 || ^12 || >=14" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", - "devOptional": true, + "node_modules/postcss-attribute-case-insensitive": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.3.tgz", + "integrity": "sha512-KHkmCILThWBRtg+Jn1owTnHPnFit4OkqS+eKiGEOPIGke54DCeYGJ6r0Fx/HjfE9M9kznApCLcU0DvnPchazMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, "engines": { - "node": "14 || >=16.14" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", - "devOptional": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=8" + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" } }, - "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==" - }, - "node_modules/peek-stream": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", - "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "node_modules/postcss-color-functional-notation": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.11.tgz", + "integrity": "sha512-gJ+hAtAsgBF4w7eh28Pg7EA60lx7vE5xO/B/yZawaI6FYHky+5avA9YSe73nJHnAMEVFpCMeJc6Wts5g+niksg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "buffer-from": "^1.0.0", - "duplexify": "^3.5.0", - "through2": "^2.0.3" + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "devOptional": true, + "node_modules/postcss-color-hex-alpha": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.4.tgz", + "integrity": "sha512-XQZm4q4fNFqVCYMGPiBjcqDhuG7Ey2xrl99AnDJMyr5eDASsAGalndVgHZF8i97VFNy1GQeZc4q2ydagGmhelQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "devOptional": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/postcss-color-rebeccapurple": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.3.tgz", + "integrity": "sha512-ruBqzEFDYHrcVq3FnW3XHgwRqVMrtEPLBtD7K2YmsLKVc2jbkxzzNEctJKsPCpDZ+LeMHLKRDoSShVefGc+CkQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=8.6" + "node": "^14 || ^16 || >=18" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pid-from-port/-/pid-from-port-1.1.3.tgz", - "integrity": "sha512-OlE82n3yMOE5dY9RMOwxhoWefeMlxwk5IVxoj0sSzSFIlmvhN4obzTvO3s/d/b5JhcgXikjaspsy/HuUDTqbBg==", + "node_modules/postcss-custom-media": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.6.tgz", + "integrity": "sha512-BjihQoIO4Wjqv9fQNExSJIim8UAmkhLxuJnhJsLTRFSba1y1MhxkJK5awsM//6JJ+/Tu5QUxf624RQAvKHv6SA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "execa": "^0.9.0" + "@csstools/cascade-layer-name-parser": "^1.0.11", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/media-query-list-parser": "^2.1.11" }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "node_modules/postcss-custom-properties": { + "version": "13.3.10", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.10.tgz", + "integrity": "sha512-ejaalIpl7p0k0L5ngIZ86AZGmp3m1KdeOCbSQTK4gQcB1ncaoPTHorw206+tsZRIhIDYvh5ZButEje6740YDXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "@csstools/cascade-layer-name-parser": "^1.0.11", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "node_modules/postcss-custom-selectors": { + "version": "7.1.10", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.10.tgz", + "integrity": "sha512-bV/6+IExyT2J4kMzX6c+ZMlN1xDfjcC4ePr1ywKezcTgwgUn11qQN3jdzFBpo8Dk1K7vO/OYOwMb5AtJP4JZcg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "@csstools/cascade-layer-name-parser": "^1.0.11", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "postcss-selector-parser": "^6.0.13" }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "node_modules/postcss-dir-pseudo-class": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz", + "integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "devOptional": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pid-from-port/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/pid-from-port/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/postcss-double-position-gradients": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.6.tgz", + "integrity": "sha512-QJ+089FKMaqDxOhhIHsJrh4IP7h4PIHNC5jZP5PMmnfUScNu8Hji2lskqpFWCvu+5sj+2EJFyzKd13sLEWOZmQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "path-key": "^2.0.0" + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/postcss-focus-visible": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz", + "integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/postcss-focus-within": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz", + "integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "dependencies": { - "shebang-regex": "^1.0.0" + "postcss-selector-parser": "^6.0.13" }, "engines": { - "node": ">=0.10.0" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/pid-from-port/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" + "node_modules/postcss-gap-properties": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz", + "integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" }, - "bin": { - "which": "bin/which" + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pid-from-port/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" - }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "devOptional": true, - "bin": { - "pidtree": "bin/pidtree.js" + "node_modules/postcss-image-set-function": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.3.tgz", + "integrity": "sha512-i2bXrBYzfbRzFnm+pVuxVePSTCRiNmlfssGI4H0tJQvDue+yywXwUxe68VyzXs7cGtMaH6MCLY6IbCShrSroCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/utilities": "^1.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=0.10" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/pkg-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz", - "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==", - "devOptional": true, + "node_modules/postcss-import": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.1.0.tgz", + "integrity": "sha512-7hsAZ4xGXl4MW+OKEWCnF6T5jqBw80/EE9aXg1r2yyn1RsVEU8EtKXbijEODa+rg7iih4bKf7vlvTGYR4CnPNg==", "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.6.1", - "pathe": "^1.1.2" + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "devOptional": true - }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "devOptional": true, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, "engines": { - "node": ">= 0.4" + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" } }, - "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, + "node_modules/postcss-lab-function": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.16.tgz", + "integrity": "sha512-QWv0VxfjgIl8jBR/wuQcm/o31jn4P/LwzYuVKzNQoO5t7HPcU0d3RfWUiDrHN3frmSv+YYZppr3P81tKFTDyqg==", + "funding": [ { "type": "github", - "url": "https://github.com/sponsors/ai" + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" } ], "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "@csstools/css-color-parser": "^2.0.2", + "@csstools/css-parser-algorithms": "^2.6.3", + "@csstools/css-tokenizer": "^2.3.1", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/utilities": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-discard-duplicates": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", - "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", - "devOptional": true, - "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "postcss": "^8.2.15" + "postcss": "^8.4" } }, "node_modules/postcss-load-config": { @@ -16528,6 +18177,30 @@ } } }, + "node_modules/postcss-logical": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz", + "integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-modules": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.0.tgz", @@ -16606,11 +18279,271 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.3.tgz", + "integrity": "sha512-8XVmgNNYlmIg1qxSP7O5n76nm0I71noCzlSCl7oqaL2opJ5nSB7r8/726yObKrUTRt6ipjiqHB1wYrMVTM66Sg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-resolve-nested": "^1.1.0", + "@csstools/selector-specificity": "^3.1.0", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz", + "integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz", + "integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz", + "integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.5.12.tgz", + "integrity": "sha512-aSeT8hNFKAgywopQE9MINFR5rZjRoA1MKv/Z09aLNlF3ki7Es3oeoFDx52po1QbBVvFuU9wSH/IosqqAa3oJow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-cascade-layers": "^4.0.5", + "@csstools/postcss-color-function": "^3.0.16", + "@csstools/postcss-color-mix-function": "^2.0.16", + "@csstools/postcss-exponential-functions": "^1.0.7", + "@csstools/postcss-font-format-keywords": "^3.0.2", + "@csstools/postcss-gamut-mapping": "^1.0.9", + "@csstools/postcss-gradients-interpolation-method": "^4.0.17", + "@csstools/postcss-hwb-function": "^3.0.15", + "@csstools/postcss-ic-unit": "^3.0.6", + "@csstools/postcss-initial": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^4.0.7", + "@csstools/postcss-light-dark-function": "^1.0.5", + "@csstools/postcss-logical-float-and-clear": "^2.0.1", + "@csstools/postcss-logical-overflow": "^1.0.1", + "@csstools/postcss-logical-overscroll-behavior": "^1.0.1", + "@csstools/postcss-logical-resize": "^2.0.1", + "@csstools/postcss-logical-viewport-units": "^2.0.9", + "@csstools/postcss-media-minmax": "^1.1.6", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.9", + "@csstools/postcss-nested-calc": "^3.0.2", + "@csstools/postcss-normalize-display-values": "^3.0.2", + "@csstools/postcss-oklab-function": "^3.0.16", + "@csstools/postcss-progressive-custom-properties": "^3.2.0", + "@csstools/postcss-relative-color-syntax": "^2.0.16", + "@csstools/postcss-scope-pseudo-class": "^3.0.1", + "@csstools/postcss-stepped-value-functions": "^3.0.8", + "@csstools/postcss-text-decoration-shorthand": "^3.0.6", + "@csstools/postcss-trigonometric-functions": "^3.0.8", + "@csstools/postcss-unset-value": "^3.0.1", + "autoprefixer": "^10.4.19", + "browserslist": "^4.22.3", + "css-blank-pseudo": "^6.0.2", + "css-has-pseudo": "^6.0.4", + "css-prefers-color-scheme": "^9.0.1", + "cssdb": "^8.0.0", + "postcss-attribute-case-insensitive": "^6.0.3", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^6.0.11", + "postcss-color-hex-alpha": "^9.0.4", + "postcss-color-rebeccapurple": "^9.0.3", + "postcss-custom-media": "^10.0.6", + "postcss-custom-properties": "^13.3.10", + "postcss-custom-selectors": "^7.1.10", + "postcss-dir-pseudo-class": "^8.0.1", + "postcss-double-position-gradients": "^5.0.6", + "postcss-focus-visible": "^9.0.1", + "postcss-focus-within": "^8.0.1", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^5.0.1", + "postcss-image-set-function": "^6.0.3", + "postcss-lab-function": "^6.0.16", + "postcss-logical": "^7.0.1", + "postcss-nesting": "^12.1.3", + "postcss-opacity-percentage": "^2.0.0", + "postcss-overflow-shorthand": "^5.0.1", + "postcss-page-break": "^3.0.4", + "postcss-place": "^9.0.1", + "postcss-pseudo-class-any-link": "^9.0.2", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^7.0.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.2.tgz", + "integrity": "sha512-HFSsxIqQ9nA27ahyfH37cRWGk3SYyQLpk0LiWw/UGMV4VKT5YG2ONee4Pz/oFesnK0dn2AjcyequDbIjKJgB0g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.2.tgz", + "integrity": "sha512-/SSxf/90Obye49VZIfc0ls4H0P6i6V1iHv0pzZH8SdgvZOPFkF37ef1r5cyWcMflJSFJ5bfuoluTnFnBBFiuSA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, "node_modules/postcss-selector-parser": { "version": "6.0.16", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", - "devOptional": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -16622,8 +18555,7 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "devOptional": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -17024,6 +18956,14 @@ "react-dom": ">=16.8" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -17329,7 +19269,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -17873,7 +19812,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "devOptional": true, "engines": { "node": ">=0.10.0" } @@ -18305,6 +20243,59 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.3.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.15.tgz", + "integrity": "sha512-0c6RlJt1TICLyvJYIApxb8GsXoai0KUP7AxKKAtsYXdgJR1mGEUa7DgwShbdk1nly0PYoZj01xd4hzbq3fsjpw==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.11.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -18346,7 +20337,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -18363,6 +20353,81 @@ "tslib": "^2.0.3" } }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/tailwindcss/node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -18552,6 +20617,27 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/three": { "version": "0.139.2", "resolved": "https://registry.npmjs.org/three/-/three-0.139.2.tgz", @@ -18704,6 +20790,12 @@ "resolved": "https://registry.npmjs.org/ts-error/-/ts-error-1.0.6.tgz", "integrity": "sha512-tLJxacIQUM82IR7JO1UUkKlYuUTmoY9HBJAmNWFzheSlDS5SPMcNIepejHJa4BpPQLAcbRhRf3GDJzyj6rbKvA==" }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/ts-log": { "version": "2.2.5", "resolved": "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz", @@ -19192,7 +21284,6 @@ "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "devOptional": true, "funding": [ { "type": "opencollective", diff --git a/package.json b/package.json index 16d2595..8cf392e 100644 --- a/package.json +++ b/package.json @@ -19,9 +19,12 @@ "@shopify/cli-hydrogen": "^8.0.3", "@shopify/hydrogen": "2024.4.1", "@shopify/remix-oxygen": "^2.0.4", + "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e", "graphql": "^16.6.0", "graphql-tag": "^2.12.6", "isbot": "^3.8.0", + "postcss-import": "^16.1.0", + "postcss-preset-env": "^9.5.12", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -33,6 +36,8 @@ "@shopify/mini-oxygen": "^3.0.1", "@shopify/oxygen-workers-types": "^4.0.0", "@shopify/prettier-config": "^1.1.2", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/typography": "^0.5.13", "@total-typescript/ts-reset": "^0.4.2", "@types/eslint": "^8.4.10", "@types/react": "^18.2.22", @@ -40,6 +45,7 @@ "eslint": "^8.20.0", "eslint-plugin-hydrogen": "0.12.2", "prettier": "^2.8.4", + "tailwindcss": "^3.4.3", "typescript": "^5.2.2", "vite": "^5.1.0", "vite-tsconfig-paths": "^4.3.1" diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..2f259ef --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,10 @@ +export default { + plugins: { + 'postcss-import': {}, + 'tailwindcss/nesting': {}, + tailwindcss: {}, + 'postcss-preset-env': { + features: {'nesting-rules': false}, + }, + }, +}; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..3b960b8 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,8 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ['./app/**/*.{js,jsx,ts,tsx}'], + theme: { + extend: {}, + }, + plugins: [], +};