From 3d554fdbfb49d85d2945b7775825f7d9ace959ce Mon Sep 17 00:00:00 2001 From: Ben Holmes Date: Wed, 22 Jun 2022 19:52:32 -0400 Subject: [PATCH] Fix: pass Astro config postcss to Svelte preprocess (#3685) * fix: pass Astro config postcss to Svelte preprocess * test: preset env for nested styles * chore: changeset --- .changeset/empty-chicken-refuse.md | 6 + .../astro/test/fixtures/postcss/package.json | 3 + .../test/fixtures/postcss/postcss.config.cjs | 15 +- .../postcss/src/components/Astro.astro | 8 +- .../fixtures/postcss/src/components/Solid.css | 4 +- .../fixtures/postcss/src/components/Solid.jsx | 4 +- .../postcss/src/components/Svelte.svelte | 8 +- .../fixtures/postcss/src/components/Vue.vue | 8 +- .../fixtures/postcss/src/pages/index.astro | 6 +- packages/astro/test/postcss.test.js | 11 +- packages/integrations/svelte/src/index.ts | 24 +- pnpm-lock.yaml | 498 +++++++++++++++++- 12 files changed, 565 insertions(+), 30 deletions(-) create mode 100644 .changeset/empty-chicken-refuse.md diff --git a/.changeset/empty-chicken-refuse.md b/.changeset/empty-chicken-refuse.md new file mode 100644 index 000000000000..b473aa7b4d72 --- /dev/null +++ b/.changeset/empty-chicken-refuse.md @@ -0,0 +1,6 @@ +--- +'astro': patch +'@astrojs/svelte': patch +--- + +Fix PostCSS config not applied to Svelte component by default diff --git a/packages/astro/test/fixtures/postcss/package.json b/packages/astro/test/fixtures/postcss/package.json index ff4f0e14d6ae..417914c1225c 100644 --- a/packages/astro/test/fixtures/postcss/package.json +++ b/packages/astro/test/fixtures/postcss/package.json @@ -9,5 +9,8 @@ "astro": "workspace:*", "autoprefixer": "^10.4.7", "postcss": "^8.4.14" + }, + "devDependencies": { + "postcss-preset-env": "^7.7.1" } } diff --git a/packages/astro/test/fixtures/postcss/postcss.config.cjs b/packages/astro/test/fixtures/postcss/postcss.config.cjs index 019f40040028..7ed7dd7e2dd9 100644 --- a/packages/astro/test/fixtures/postcss/postcss.config.cjs +++ b/packages/astro/test/fixtures/postcss/postcss.config.cjs @@ -1,7 +1,12 @@ +const postcssPresetEnv = require('postcss-preset-env') +const autoPrefixer = require('autoprefixer') + module.exports = { - plugins: { - autoprefixer: { + plugins: [ + // included to ensure public/ CSS resources are NOT transformed + autoPrefixer({ overrideBrowserslist: ['> 0.1%', 'IE 11'] // enforce `appearance: none;` is prefixed with -webkit and -moz - } - } -}; + }), + postcssPresetEnv({ features: { 'nesting-rules': true } }), + ] +} diff --git a/packages/astro/test/fixtures/postcss/src/components/Astro.astro b/packages/astro/test/fixtures/postcss/src/components/Astro.astro index c85cd0415db6..5563e477865d 100644 --- a/packages/astro/test/fixtures/postcss/src/components/Astro.astro +++ b/packages/astro/test/fixtures/postcss/src/components/Astro.astro @@ -1,9 +1,11 @@ -
- Astro +
+ Astro
diff --git a/packages/astro/test/fixtures/postcss/src/components/Solid.css b/packages/astro/test/fixtures/postcss/src/components/Solid.css index 9c4272b56c3b..6d06e4d89148 100644 --- a/packages/astro/test/fixtures/postcss/src/components/Solid.css +++ b/packages/astro/test/fixtures/postcss/src/components/Solid.css @@ -1,3 +1,5 @@ .solid { - appearance: none; + &.nested { + color: red; + } } diff --git a/packages/astro/test/fixtures/postcss/src/components/Solid.jsx b/packages/astro/test/fixtures/postcss/src/components/Solid.jsx index 9f172eb3b676..63ee46a522e6 100644 --- a/packages/astro/test/fixtures/postcss/src/components/Solid.jsx +++ b/packages/astro/test/fixtures/postcss/src/components/Solid.jsx @@ -3,8 +3,8 @@ import './Solid.css'; export default function Counter() { return ( -
- Solid +
+ Solid
); } diff --git a/packages/astro/test/fixtures/postcss/src/components/Svelte.svelte b/packages/astro/test/fixtures/postcss/src/components/Svelte.svelte index 0b55ab627542..031146443958 100644 --- a/packages/astro/test/fixtures/postcss/src/components/Svelte.svelte +++ b/packages/astro/test/fixtures/postcss/src/components/Svelte.svelte @@ -1,9 +1,11 @@ -
- Svelte +
+ Svelte
diff --git a/packages/astro/test/fixtures/postcss/src/components/Vue.vue b/packages/astro/test/fixtures/postcss/src/components/Vue.vue index 20b928e0857b..103eda0aaa5f 100644 --- a/packages/astro/test/fixtures/postcss/src/components/Vue.vue +++ b/packages/astro/test/fixtures/postcss/src/components/Vue.vue @@ -1,12 +1,14 @@ diff --git a/packages/astro/test/fixtures/postcss/src/pages/index.astro b/packages/astro/test/fixtures/postcss/src/pages/index.astro index 2f73d045b058..c239cff64320 100644 --- a/packages/astro/test/fixtures/postcss/src/pages/index.astro +++ b/packages/astro/test/fixtures/postcss/src/pages/index.astro @@ -12,13 +12,15 @@ import Vue from '../components/Vue.vue'; -
+
diff --git a/packages/astro/test/postcss.test.js b/packages/astro/test/postcss.test.js index d5360ba1db16..1cf06bee1029 100644 --- a/packages/astro/test/postcss.test.js +++ b/packages/astro/test/postcss.test.js @@ -23,24 +23,25 @@ describe('PostCSS', () => { .replace('/n', ''); }); + /** All test cases check whether nested styles (i.e. &.nested {}) are correctly transformed */ it('works in Astro page styles', () => { - expect(bundledCSS).to.match(new RegExp(`.astro-page.astro-[^{]+${PREFIXED_CSS}`)); + expect(bundledCSS).to.match(new RegExp(`\.astro-page(\.(\w|-)*)*\.nested`)); }); it('works in Astro component styles', () => { - expect(bundledCSS).to.match(new RegExp(`.astro-component.astro-[^{]+${PREFIXED_CSS}`)); + expect(bundledCSS).to.match(new RegExp(`\.astro-component(\.(\w|-)*)*\.nested`)); }); it('works in JSX', () => { - expect(bundledCSS).to.match(new RegExp(`.solid[^{]*${PREFIXED_CSS}`)); + expect(bundledCSS).to.match(new RegExp(`\.solid(\.(\w|-)*)*\.nested`)); }); it('works in Vue', () => { - expect(bundledCSS).to.match(new RegExp(`.vue[^{]*${PREFIXED_CSS}`)); + expect(bundledCSS).to.match(new RegExp(`\.vue(\.(\w|-)*)*\.nested`)); }); it('works in Svelte', () => { - expect(bundledCSS).to.match(new RegExp(`.svelte.s[^{]+${PREFIXED_CSS}`)); + expect(bundledCSS).to.match(new RegExp(`\.svelte(\.(\w|-)*)*\.nested`)); }); it('ignores CSS in public/', async () => { diff --git a/packages/integrations/svelte/src/index.ts b/packages/integrations/svelte/src/index.ts index 340e2def0a7f..268d5a59027e 100644 --- a/packages/integrations/svelte/src/index.ts +++ b/packages/integrations/svelte/src/index.ts @@ -1,6 +1,7 @@ import type { Options } from '@sveltejs/vite-plugin-svelte'; +import type { AstroIntegration, AstroRenderer, AstroConfig } from 'astro'; +import type { UserConfig } from 'vite' import { svelte } from '@sveltejs/vite-plugin-svelte'; -import type { AstroIntegration, AstroRenderer } from 'astro'; import preprocess from 'svelte-preprocess'; function getRenderer(): AstroRenderer { @@ -11,13 +12,20 @@ function getRenderer(): AstroRenderer { }; } -function getViteConfiguration(isDev: boolean, options?: Options | OptionsCallback) { - const defaultOptions = { +type ViteConfigurationArgs = { + isDev: boolean; + options?: Options | OptionsCallback; + postcssConfig: AstroConfig['style']['postcss']; +} + +function getViteConfiguration({ options, postcssConfig, isDev }: ViteConfigurationArgs): UserConfig { + const defaultOptions: Partial = { emitCss: true, compilerOptions: { dev: isDev, hydratable: true }, preprocess: [ preprocess({ less: true, + postcss: postcssConfig, sass: { renderSync: true }, scss: { renderSync: true }, stylus: true, @@ -61,9 +69,15 @@ export default function (options?: Options | OptionsCallback): AstroIntegration name: '@astrojs/svelte', hooks: { // Anything that gets returned here is merged into Astro Config - 'astro:config:setup': ({ command, updateConfig, addRenderer }) => { + 'astro:config:setup': ({ command, updateConfig, addRenderer, config }) => { addRenderer(getRenderer()); - updateConfig({ vite: getViteConfiguration(command === 'dev', options) }); + updateConfig({ + vite: getViteConfiguration({ + options, + isDev: command === 'dev', + postcssConfig: config.style.postcss, + }) + }); }, }, }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 05c6e0f56d17..c5690fe4e308 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1474,6 +1474,7 @@ importers: astro: workspace:* autoprefixer: ^10.4.7 postcss: ^8.4.14 + postcss-preset-env: ^7.7.1 dependencies: '@astrojs/solid-js': link:../../../../integrations/solid '@astrojs/svelte': link:../../../../integrations/svelte @@ -1481,6 +1482,8 @@ importers: astro: link:../../.. autoprefixer: 10.4.7_postcss@8.4.14 postcss: 8.4.14 + devDependencies: + postcss-preset-env: 7.7.1_postcss@8.4.14 packages/astro/test/fixtures/preact-component: specifiers: @@ -3996,6 +3999,141 @@ packages: prettier: 1.19.1 dev: true + /@csstools/postcss-cascade-layers/1.0.3_postcss@8.4.14: + resolution: {integrity: sha512-fvXP0+dcllGtRKAjA5n5tBr57xWQalKky09hSiXAZ9qqjHn0sDuQV2Jz0Y5zHRQ6iGrAjJZOf2+xQj3yuXfLwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + '@csstools/selector-specificity': 2.0.1_444rcjjorr3kpoqtvoodsr46pu + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /@csstools/postcss-color-function/1.1.0_postcss@8.4.14: + resolution: {integrity: sha512-5D5ND/mZWcQoSfYnSPsXtuiFxhzmhxt6pcjrFLJyldj+p0ZN2vvRpYNX+lahFTtMhAYOa2WmkdGINr0yP0CvGA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-font-format-keywords/1.0.0_postcss@8.4.14: + resolution: {integrity: sha512-oO0cZt8do8FdVBX8INftvIA4lUrKUSCcWUf9IwH9IPWOgKT22oAZFXeHLoDK7nhB2SmkNycp5brxfNMRLIhd6Q==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-hwb-function/1.0.1_postcss@8.4.14: + resolution: {integrity: sha512-AMZwWyHbbNLBsDADWmoXT9A5yl5dsGEBeJSJRUJt8Y9n8Ziu7Wstt4MC8jtPW7xjcLecyfJwtnUTNSmOzcnWeg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-ic-unit/1.0.0_postcss@8.4.14: + resolution: {integrity: sha512-i4yps1mBp2ijrx7E96RXrQXQQHm6F4ym1TOD0D69/sjDjZvQ22tqiEvaNw7pFZTUO5b9vWRHzbHzP9+UKuw+bA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-is-pseudo-class/2.0.5_postcss@8.4.14: + resolution: {integrity: sha512-Ek+UFI4UP2hB9u0N1cJd6KgSF1rL0J3PT4is0oSStuus8+WzbGGPyJNMOKQ0w/tyPjxiCnOI4RdSMZt3nks64g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.0.1_444rcjjorr3kpoqtvoodsr46pu + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /@csstools/postcss-normalize-display-values/1.0.0_postcss@8.4.14: + resolution: {integrity: sha512-bX+nx5V8XTJEmGtpWTO6kywdS725t71YSLlxWt78XoHUbELWgoCXeOFymRJmL3SU1TLlKSIi7v52EWqe60vJTQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-oklab-function/1.1.0_postcss@8.4.14: + resolution: {integrity: sha512-e/Q5HopQzmnQgqimG9v3w2IG4VRABsBq3itOcn4bnm+j4enTgQZ0nWsaH/m9GV2otWGQ0nwccYL5vmLKyvP1ww==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-progressive-custom-properties/1.3.0_postcss@8.4.14: + resolution: {integrity: sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-stepped-value-functions/1.0.0_postcss@8.4.14: + resolution: {integrity: sha512-q8c4bs1GumAiRenmFjASBcWSLKrbzHzWl6C2HcaAxAXIiL2rUlUWbqQZUjwVG5tied0rld19j/Mm90K3qI26vw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-trigonometric-functions/1.0.1_postcss@8.4.14: + resolution: {integrity: sha512-G78CY/+GePc6dDCTUbwI6TTFQ5fs3N9POHhI6v0QzteGpf6ylARiJUNz9HrRKi4eVYBNXjae1W2766iUEFxHlw==} + engines: {node: ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /@csstools/postcss-unset-value/1.0.1_postcss@8.4.14: + resolution: {integrity: sha512-f1G1WGDXEU/RN1TWAxBPQgQudtLnLQPyiWdtypkPC+mVYNKFKH/HYXSxH4MVNqwF8M0eDsoiU7HumJHCg/L/jg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + dev: true + + /@csstools/selector-specificity/2.0.1_444rcjjorr3kpoqtvoodsr46pu: + resolution: {integrity: sha512-aG20vknL4/YjQF9BSV7ts4EWm/yrjagAN7OWBNmlbEOUiu0llj4OGrFoOKK3g2vey4/p2omKCoHrWtPxSwV3HA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + postcss-selector-parser: ^6.0.10 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + /@docsearch/css/3.1.0: resolution: {integrity: sha512-bh5IskwkkodbvC0FzSg1AxMykfDl95hebEKwxNoq4e5QaGzOXSBgW8+jnMFZ7JU4sTBiB04vZWoUSzNrPboLZA==} dev: false @@ -8186,6 +8324,38 @@ packages: engines: {node: '>=8'} dev: true + /css-blank-pseudo/3.0.3_postcss@8.4.14: + resolution: {integrity: sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /css-has-pseudo/3.0.4_postcss@8.4.14: + resolution: {integrity: sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /css-prefers-color-scheme/6.0.3_postcss@8.4.14: + resolution: {integrity: sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==} + engines: {node: ^12 || ^14 || >=16} + hasBin: true + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + dev: true + /css-select/5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} dependencies: @@ -8204,6 +8374,10 @@ packages: engines: {node: '>= 6'} dev: true + /cssdb/6.6.3: + resolution: {integrity: sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==} + dev: true + /cssesc/3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -11742,6 +11916,172 @@ packages: hasBin: true dev: true + /postcss-attribute-case-insensitive/5.0.1_postcss@8.4.14: + resolution: {integrity: sha512-wrt2VndqSLJpyBRNz9OmJcgnhI9MaongeWgapdBuUMu2a/KNJ8SENesG4SdiTnQwGO9b1VKbTWYAfCPeokLqZQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-clamp/4.1.0_postcss@8.4.14: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-functional-notation/4.2.3_postcss@8.4.14: + resolution: {integrity: sha512-5fbr6FzFzjwHXKsVnkmEYrJYG8VNNzvD1tAXaPPWR97S6rhKI5uh2yOfV5TAzhDkZoq4h+chxEplFDc8GeyFtw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-hex-alpha/8.0.4_postcss@8.4.14: + resolution: {integrity: sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-color-rebeccapurple/7.1.0_postcss@8.4.14: + resolution: {integrity: sha512-1jtE5AKnZcKq4pjOrltFHcbEM2/IvtbD1OdhZ/wqds18//bh0UmQkffcCkzDJU+/vGodfIsVQeKn+45CJvX9Bw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-media/8.0.2_postcss@8.4.14: + resolution: {integrity: sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-properties/12.1.8_postcss@8.4.14: + resolution: {integrity: sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-custom-selectors/6.0.3_postcss@8.4.14: + resolution: {integrity: sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-dir-pseudo-class/6.0.4_postcss@8.4.14: + resolution: {integrity: sha512-I8epwGy5ftdzNWEYok9VjW9whC4xnelAtbajGv4adql4FIF09rnrxnA9Y8xSHN47y7gqFIv10C5+ImsLeJpKBw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-double-position-gradients/3.1.1_postcss@8.4.14: + resolution: {integrity: sha512-jM+CGkTs4FcG53sMPjrrGE0rIvLDdCrqMzgDC5fLI7JHDO7o6QG8C5TQBtExb13hdBdoH9C2QVbG4jo2y9lErQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-env-function/4.0.6_postcss@8.4.14: + resolution: {integrity: sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-focus-visible/6.0.4_postcss@8.4.14: + resolution: {integrity: sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-focus-within/5.0.4_postcss@8.4.14: + resolution: {integrity: sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-font-variant/5.0.0_postcss@8.4.14: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-gap-properties/3.0.3_postcss@8.4.14: + resolution: {integrity: sha512-rPPZRLPmEKgLk/KlXMqRaNkYTUpE7YC+bOIQFN5xcu1Vp11Y4faIXv6/Jpft6FMnl6YRxZqDZG0qQOW80stzxQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-image-set-function/4.0.6_postcss@8.4.14: + resolution: {integrity: sha512-KfdC6vg53GC+vPd2+HYzsZ6obmPqOk6HY09kttU19+Gj1nC3S3XBVEXDHxkhxTohgZqzbUb94bKXvKDnYWBm/A==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-initial/4.0.1_postcss@8.4.14: + resolution: {integrity: sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.14 + dev: true + /postcss-js/4.0.0_postcss@8.4.14: resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==} engines: {node: ^12 || ^14 || >= 16} @@ -11751,6 +12091,17 @@ packages: camelcase-css: 2.0.1 postcss: 8.4.14 + /postcss-lab-function/4.2.0_postcss@8.4.14: + resolution: {integrity: sha512-Zb1EO9DGYfa3CP8LhINHCcTTCTLI+R3t7AX2mKsDzdgVQ/GkCpHOTgOr6HBHslP7XDdVbqgHW5vvRPMdVANQ8w==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + /postcss-load-config/3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -11783,6 +12134,24 @@ packages: postcss: 8.4.14 yaml: 1.10.2 + /postcss-logical/5.0.4_postcss@8.4.14: + resolution: {integrity: sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-media-minmax/5.0.0_postcss@8.4.14: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + dependencies: + postcss: 8.4.14 + dev: true + /postcss-nested/5.0.6_postcss@8.4.14: resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==} engines: {node: '>=12.0'} @@ -11792,6 +12161,133 @@ packages: postcss: 8.4.14 postcss-selector-parser: 6.0.10 + /postcss-nesting/10.1.8_postcss@8.4.14: + resolution: {integrity: sha512-txdb3/idHYsBbNDFo1PFY0ExCgH5nfWi8G5lO49e6iuU42TydbODTzJgF5UuL5bhgeSlnAtDgfFTDG0Cl1zaSQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 2.0.1_444rcjjorr3kpoqtvoodsr46pu + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-opacity-percentage/1.1.2: + resolution: {integrity: sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==} + engines: {node: ^12 || ^14 || >=16} + dev: true + + /postcss-overflow-shorthand/3.0.3_postcss@8.4.14: + resolution: {integrity: sha512-CxZwoWup9KXzQeeIxtgOciQ00tDtnylYIlJBBODqkgS/PU2jISuWOL/mYLHmZb9ZhZiCaNKsCRiLp22dZUtNsg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-page-break/3.0.4_postcss@8.4.14: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-place/7.0.4_postcss@8.4.14: + resolution: {integrity: sha512-MrgKeiiu5OC/TETQO45kV3npRjOFxEHthsqGtkh3I1rPbZSbXGD/lZVi9j13cYh+NA8PIAPyk6sGjT9QbRyvSg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-preset-env/7.7.1_postcss@8.4.14: + resolution: {integrity: sha512-1sx6+Nl1wMVJzaYLVaz4OAR6JodIN/Z1upmVqLwSPCLT6XyxrEoePgNMHPH08kseLe3z06i9Vfkt/32BYEKDeA==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/postcss-cascade-layers': 1.0.3_postcss@8.4.14 + '@csstools/postcss-color-function': 1.1.0_postcss@8.4.14 + '@csstools/postcss-font-format-keywords': 1.0.0_postcss@8.4.14 + '@csstools/postcss-hwb-function': 1.0.1_postcss@8.4.14 + '@csstools/postcss-ic-unit': 1.0.0_postcss@8.4.14 + '@csstools/postcss-is-pseudo-class': 2.0.5_postcss@8.4.14 + '@csstools/postcss-normalize-display-values': 1.0.0_postcss@8.4.14 + '@csstools/postcss-oklab-function': 1.1.0_postcss@8.4.14 + '@csstools/postcss-progressive-custom-properties': 1.3.0_postcss@8.4.14 + '@csstools/postcss-stepped-value-functions': 1.0.0_postcss@8.4.14 + '@csstools/postcss-trigonometric-functions': 1.0.1_postcss@8.4.14 + '@csstools/postcss-unset-value': 1.0.1_postcss@8.4.14 + autoprefixer: 10.4.7_postcss@8.4.14 + browserslist: 4.20.4 + css-blank-pseudo: 3.0.3_postcss@8.4.14 + css-has-pseudo: 3.0.4_postcss@8.4.14 + css-prefers-color-scheme: 6.0.3_postcss@8.4.14 + cssdb: 6.6.3 + postcss: 8.4.14 + postcss-attribute-case-insensitive: 5.0.1_postcss@8.4.14 + postcss-clamp: 4.1.0_postcss@8.4.14 + postcss-color-functional-notation: 4.2.3_postcss@8.4.14 + postcss-color-hex-alpha: 8.0.4_postcss@8.4.14 + postcss-color-rebeccapurple: 7.1.0_postcss@8.4.14 + postcss-custom-media: 8.0.2_postcss@8.4.14 + postcss-custom-properties: 12.1.8_postcss@8.4.14 + postcss-custom-selectors: 6.0.3_postcss@8.4.14 + postcss-dir-pseudo-class: 6.0.4_postcss@8.4.14 + postcss-double-position-gradients: 3.1.1_postcss@8.4.14 + postcss-env-function: 4.0.6_postcss@8.4.14 + postcss-focus-visible: 6.0.4_postcss@8.4.14 + postcss-focus-within: 5.0.4_postcss@8.4.14 + postcss-font-variant: 5.0.0_postcss@8.4.14 + postcss-gap-properties: 3.0.3_postcss@8.4.14 + postcss-image-set-function: 4.0.6_postcss@8.4.14 + postcss-initial: 4.0.1_postcss@8.4.14 + postcss-lab-function: 4.2.0_postcss@8.4.14 + postcss-logical: 5.0.4_postcss@8.4.14 + postcss-media-minmax: 5.0.0_postcss@8.4.14 + postcss-nesting: 10.1.8_postcss@8.4.14 + postcss-opacity-percentage: 1.1.2 + postcss-overflow-shorthand: 3.0.3_postcss@8.4.14 + postcss-page-break: 3.0.4_postcss@8.4.14 + postcss-place: 7.0.4_postcss@8.4.14 + postcss-pseudo-class-any-link: 7.1.4_postcss@8.4.14 + postcss-replace-overflow-wrap: 4.0.0_postcss@8.4.14 + postcss-selector-not: 6.0.0_postcss@8.4.14 + postcss-value-parser: 4.2.0 + dev: true + + /postcss-pseudo-class-any-link/7.1.4_postcss@8.4.14: + resolution: {integrity: sha512-JxRcLXm96u14N3RzFavPIE9cRPuOqLDuzKeBsqi4oRk4vt8n0A7I0plFs/VXTg7U2n7g/XkQi0OwqTO3VWBfEg==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.4 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + + /postcss-replace-overflow-wrap/4.0.0_postcss@8.4.14: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + dependencies: + postcss: 8.4.14 + dev: true + + /postcss-selector-not/6.0.0_postcss@8.4.14: + resolution: {integrity: sha512-i/HI/VNd3V9e1WOLCwJsf9nePBRXqcGtVibcJ9FsVo0agfDEfsLSlFt94aYjY35wUNcdG0KrvdyjEr7It50wLQ==} + engines: {node: ^12 || ^14 || >=16} + peerDependencies: + postcss: ^8.3 + dependencies: + postcss: 8.4.14 + postcss-selector-parser: 6.0.10 + dev: true + /postcss-selector-parser/6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} @@ -13687,7 +14183,7 @@ packages: dev: true /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /util/0.12.4: resolution: {integrity: sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==}