diff --git a/packages/@tailwindcss-compatibility/README.md b/packages/@tailwindcss-compatibility/README.md new file mode 100644 index 000000000..95ec9d87d --- /dev/null +++ b/packages/@tailwindcss-compatibility/README.md @@ -0,0 +1,40 @@ +

+ + + + + Tailwind CSS + + +

+ +

+ A utility-first CSS framework for rapidly building custom user interfaces. +

+ +

+ Build Status + Total Downloads + Latest Release + License +

+ +--- + +## Documentation + +For full documentation, visit [tailwindcss.com](https://tailwindcss.com). + +## Community + +For help, discussion about best practices, or any other conversation that would benefit from being searchable: + +[Discuss Tailwind CSS on GitHub](https://github.com/tailwindcss/tailwindcss/discussions) + +For chatting with others using the framework: + +[Join the Tailwind CSS Discord Server](https://discord.gg/7NF8GNe) + +## Contributing + +If you're interested in contributing to Tailwind CSS, please read our [contributing docs](https://github.com/tailwindcss/tailwindcss/blob/next/.github/CONTRIBUTING.md) **before submitting a pull request**. diff --git a/packages/@tailwindcss-compatibility/package.json b/packages/@tailwindcss-compatibility/package.json new file mode 100644 index 000000000..a69f778b7 --- /dev/null +++ b/packages/@tailwindcss-compatibility/package.json @@ -0,0 +1,50 @@ +{ + "name": "@tailwindcss/compatibility", + "version": "4.0.15", + "description": "PostCSS plugin for Tailwind CSS, a utility-first CSS framework for rapidly building custom user interfaces", + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/tailwindlabs/tailwindcss.git", + "directory": "packages/@tailwindcss-postcss" + }, + "bugs": "https://github.com/tailwindlabs/tailwindcss/issues", + "homepage": "https://tailwindcss.com", + "scripts": { + "lint": "tsc --noEmit", + "build": "tsup-node", + "dev": "pnpm run build -- --watch" + }, + "files": [ + "dist/" + ], + "publishConfig": { + "provenance": true, + "access": "public" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } + }, + "dependencies": { + "@csstools/postcss-cascade-layers": "^5.0.1", + "@csstools/postcss-color-mix-function": "^3.0.8", + "@csstools/postcss-oklab-function": "^4.0.8", + "@tailwindcss/node": "workspace:*", + "@tailwindcss/oxide": "workspace:*", + "autoprefixer": "^10.4.21", + "lightningcss": "catalog:", + "postcss": "^8.4.41", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^13.0.1" + }, + "devDependencies": { + "@types/node": "catalog:", + "dedent": "1.5.3", + "@tailwindcss/postcss": "workspace:*", + "tailwindcss": "workspace:*" + } +} diff --git a/packages/@tailwindcss-compatibility/src/at-property-polyfill.ts b/packages/@tailwindcss-compatibility/src/at-property-polyfill.ts new file mode 100644 index 000000000..f40d7f0b3 --- /dev/null +++ b/packages/@tailwindcss-compatibility/src/at-property-polyfill.ts @@ -0,0 +1,78 @@ +import postcss from 'postcss' + +export default () => { + return { + postcssPlugin: '@tailwindcss/postcss-at-property-polyfill', + Once(root: postcss.Root) { + const propertyRules = new Map() + const initialValues = new Map() + const nonInheritableValues = new Map() + + // Collect @property rules + root.walkAtRules('property', (rule: postcss.AtRule) => { + const name = rule.params.trim() + + propertyRules.set(name, rule) + + let value: string | null = null + rule.walkDecls('initial-value', (decl: postcss.Declaration) => { + if (decl.value) { + value = decl.value + } + }) + + rule.walkDecls('inherits', (decl: postcss.Declaration) => { + if (decl.value === 'false') { + nonInheritableValues.set(name, value ? value : 'initial') + } + }) + + if (value && !nonInheritableValues.has(name)) { + initialValues.set(name, value) + } + + rule.remove() + }) + + // Add initial values to :root in a layer + if (initialValues.size > 0 || nonInheritableValues.size > 0) { + const layer = postcss.atRule({ + name: 'layer', + params: '', + }) + + if (initialValues.size > 0) { + const rootRule = postcss.rule({ + selector: ':root', + }) + + for (const [name, value] of initialValues) { + rootRule.append({ + prop: name, + value: value, + }) + } + layer.append(rootRule) + } + + if (nonInheritableValues.size > 0) { + const rootRule = postcss.rule({ + selector: '*, *:before, *:after, *:backdrop', + }) + + for (const [name, value] of nonInheritableValues) { + rootRule.append({ + prop: name, + value: value, + }) + } + layer.append(rootRule) + } + + root.prepend(layer) + } + }, + } +} + +export const postcssPlugin = 'postcss-at-property-polyfill' diff --git a/packages/@tailwindcss-compatibility/src/index.cts b/packages/@tailwindcss-compatibility/src/index.cts new file mode 100644 index 000000000..065423471 --- /dev/null +++ b/packages/@tailwindcss-compatibility/src/index.cts @@ -0,0 +1,7 @@ +import compatibility from './index.ts' + +// This is used instead of `export default` to work around a bug in +// `postcss-load-config` + +// @ts-ignore +export = compatibility diff --git a/packages/@tailwindcss-compatibility/src/index.test.ts b/packages/@tailwindcss-compatibility/src/index.test.ts new file mode 100644 index 000000000..93380b95b --- /dev/null +++ b/packages/@tailwindcss-compatibility/src/index.test.ts @@ -0,0 +1,58 @@ +import tailwindcss from '@tailwindcss/postcss' +import dedent from 'dedent' +import postcss from 'postcss' +import { expect, test } from 'vitest' +import compatibility from './index' + +const css = dedent + +test('does the thing', async () => { + let processor = postcss([tailwindcss(), compatibility()]) + + let result = await processor.process( + css` + @layer theme, base, components, utilities; + + @import 'tailwindcss/theme.css' layer(theme) theme(inline); + /* @import 'tailwindcss/preflight.css' layer(base); */ + @import 'tailwindcss/utilities.css' layer(utilities) source(none); + + @source inline("h-14 bg-linear-to-bl from-violet-500/50 to-fuchsia-500/50"); + `, + { from: `${__dirname}/input.css` }, + ) + + expect(result.css.trim()).toMatchInlineSnapshot(` + "@layer { + *, *:before, *:after, *:backdrop { + --tw-gradient-position: initial; + --tw-gradient-from: #0000; + --tw-gradient-via: #0000; + --tw-gradient-to: #0000; + --tw-gradient-stops: initial; + --tw-gradient-via-stops: initial; + --tw-gradient-from-position: 0%; + --tw-gradient-via-position: 50%; + --tw-gradient-to-position: 100%; + } + } + @layer theme, base, components, utilities; + @layer utilities { + .h-14 { + height: calc(0.25rem * 14); + } + .bg-linear-to-bl { + --tw-gradient-position: to bottom left in oklab; + background-image: linear-gradient(var(--tw-gradient-stops)); + } + .from-violet-500\\/50 { + --tw-gradient-from: color-mix(in oklab, oklch(0.606 0.25 292.717) 50%, transparent); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + .to-fuchsia-500\\/50 { + --tw-gradient-to: color-mix(in oklab, oklch(0.667 0.295 322.15) 50%, transparent); + --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position)); + } + }" + `) +}) diff --git a/packages/@tailwindcss-compatibility/src/index.ts b/packages/@tailwindcss-compatibility/src/index.ts new file mode 100644 index 000000000..a764b7cbe --- /dev/null +++ b/packages/@tailwindcss-compatibility/src/index.ts @@ -0,0 +1,30 @@ +// import postcssCascadeLayers from '@csstools/postcss-cascade-layers' +import postcssColorMixFunction from '@csstools/postcss-color-mix-function' +import postcssOklabFunction from '@csstools/postcss-oklab-function' +import autoprefixer from 'autoprefixer' +import type { AcceptedPlugin, PluginCreator } from 'postcss' +// @ts-ignore +import postcssMediaMinmax from 'postcss-media-minmax' +import postcssNesting from 'postcss-nesting' +import atPropertyPolyfill from './at-property-polyfill' + +// TODO: +// - [ ] Replace `calc(infinity)` stuff +// - tbd + +function compatibility(): AcceptedPlugin { + return { + postcssPlugin: '@tailwindcss/compatibility', + plugins: [ + // postcssCascadeLayers(), + atPropertyPolyfill(), + postcssMediaMinmax(), + postcssOklabFunction(), + postcssColorMixFunction(), + postcssNesting(), + autoprefixer(), + ], + } +} + +export default Object.assign(compatibility, { postcss: true }) as PluginCreator<{}> diff --git a/packages/@tailwindcss-compatibility/tsconfig.json b/packages/@tailwindcss-compatibility/tsconfig.json new file mode 100644 index 000000000..6ae022f65 --- /dev/null +++ b/packages/@tailwindcss-compatibility/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.base.json", +} diff --git a/packages/@tailwindcss-compatibility/tsup.config.ts b/packages/@tailwindcss-compatibility/tsup.config.ts new file mode 100644 index 000000000..684c072ac --- /dev/null +++ b/packages/@tailwindcss-compatibility/tsup.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'tsup' + +export default defineConfig([ + { + format: ['esm'], + minify: true, + cjsInterop: true, + dts: true, + entry: ['src/index.ts'], + }, + { + format: ['cjs'], + minify: true, + cjsInterop: true, + dts: true, + entry: ['src/index.cts'], + }, +]) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c945d884..efeac8bfd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,6 +198,52 @@ importers: specifier: workspace:* version: link:../tailwindcss + packages/@tailwindcss-compatibility: + dependencies: + '@csstools/postcss-cascade-layers': + specifier: ^5.0.1 + version: 5.0.1(postcss@8.5.3) + '@csstools/postcss-color-mix-function': + specifier: ^3.0.8 + version: 3.0.8(postcss@8.5.3) + '@csstools/postcss-oklab-function': + specifier: ^4.0.8 + version: 4.0.8(postcss@8.5.3) + '@tailwindcss/node': + specifier: workspace:* + version: link:../@tailwindcss-node + '@tailwindcss/oxide': + specifier: workspace:* + version: link:../../crates/node + autoprefixer: + specifier: ^10.4.21 + version: 10.4.21(postcss@8.5.3) + lightningcss: + specifier: 'catalog:' + version: 1.29.2(patch_hash=tzyxy3asfxcqc7ihrooumyi5fm) + postcss: + specifier: ^8.4.41 + version: 8.5.3 + postcss-media-minmax: + specifier: ^5.0.0 + version: 5.0.0(postcss@8.5.3) + postcss-nesting: + specifier: ^13.0.1 + version: 13.0.1(postcss@8.5.3) + devDependencies: + '@tailwindcss/postcss': + specifier: workspace:* + version: link:../@tailwindcss-postcss + '@types/node': + specifier: 'catalog:' + version: 20.14.13 + dedent: + specifier: 1.5.3 + version: 1.5.3 + tailwindcss: + specifier: workspace:* + version: link:../tailwindcss + packages/@tailwindcss-node: dependencies: enhanced-resolve: @@ -486,7 +532,7 @@ importers: version: 19.0.4(@types/react@19.0.10) autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.4.47) + version: 10.4.21(postcss@8.5.3) eslint: specifier: ^9.22.0 version: 9.22.0(jiti@2.4.2) @@ -617,6 +663,76 @@ packages: resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==} engines: {node: '>=6.9.0'} + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + + '@csstools/postcss-cascade-layers@5.0.1': + resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-function@3.0.8': + resolution: {integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.8': + resolution: {integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-progressive-custom-properties@4.0.0': + resolution: {integrity: sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/selector-resolve-nested@3.0.0': + resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/utilities@2.0.0': + resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@emnapi/runtime@1.3.1': resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} @@ -3334,12 +3450,24 @@ packages: yaml: optional: true + postcss-media-minmax@5.0.0: + resolution: {integrity: sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + postcss: ^8.1.0 + postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} engines: {node: '>=12.0'} peerDependencies: postcss: ^8.2.14 + postcss-nesting@13.0.1: + resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + postcss-selector-parser@6.0.10: resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} engines: {node: '>=4'} @@ -3363,10 +3491,6 @@ packages: resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.4.47: - resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.3: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} @@ -4135,6 +4259,67 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@csstools/utilities@2.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.0 @@ -4921,7 +5106,7 @@ snapshots: '@types/postcss-import@14.0.3': dependencies: - postcss: 8.4.41 + postcss: 8.5.3 '@types/react-dom@19.0.4(@types/react@19.0.10)': dependencies: @@ -5234,14 +5419,14 @@ snapshots: ast-types-flow@0.0.8: {} - autoprefixer@10.4.21(postcss@8.4.47): + autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.24.4 caniuse-lite: 1.0.30001705 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.4.47 + postcss: 8.5.3 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -5721,7 +5906,7 @@ snapshots: eslint: 9.22.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.22.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.22.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: 6.10.1(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-react: 7.37.2(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-react-hooks: 5.0.0(eslint@9.22.0(jiti@2.4.2)) @@ -5741,7 +5926,7 @@ snapshots: eslint: 9.22.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@9.22.0(jiti@2.4.2)) - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-jsx-a11y: 6.10.1(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-react: 7.37.2(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-react-hooks: 5.0.0(eslint@9.22.0(jiti@2.4.2)) @@ -5772,7 +5957,7 @@ snapshots: is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.22.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -5791,7 +5976,7 @@ snapshots: is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.22.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node @@ -5820,7 +6005,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint@9.22.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.5.4))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -5849,7 +6034,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@9.22.0(jiti@2.4.2)): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.11.0(eslint@9.22.0(jiti@2.4.2))(typescript@5.6.3))(eslint@9.22.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -6724,9 +6909,9 @@ snapshots: possible-typed-array-names@1.0.0: {} - postcss-import@15.1.0(postcss@8.4.47): + postcss-import@15.1.0(postcss@8.5.3): dependencies: - postcss: 8.4.47 + postcss: 8.5.3 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 @@ -6745,17 +6930,17 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.8 - postcss-js@4.0.1(postcss@8.4.47): + postcss-js@4.0.1(postcss@8.5.3): dependencies: camelcase-css: 2.0.1 - postcss: 8.4.47 + postcss: 8.5.3 - postcss-load-config@4.0.2(postcss@8.4.47): + postcss-load-config@4.0.2(postcss@8.5.3): dependencies: lilconfig: 3.1.2 yaml: 2.6.0 optionalDependencies: - postcss: 8.4.47 + postcss: 8.5.3 postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.3)(tsx@4.19.1)(yaml@2.6.0): dependencies: @@ -6766,11 +6951,22 @@ snapshots: tsx: 4.19.1 yaml: 2.6.0 - postcss-nested@6.2.0(postcss@8.4.47): + postcss-media-minmax@5.0.0(postcss@8.5.3): dependencies: - postcss: 8.4.47 + postcss: 8.5.3 + + postcss-nested@6.2.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 postcss-selector-parser: 6.1.2 + postcss-nesting@13.0.1(postcss@8.5.3): + dependencies: + '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-selector-parser@6.0.10: dependencies: cssesc: 3.0.0 @@ -6800,12 +6996,6 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.0 - postcss@8.4.47: - dependencies: - nanoid: 3.3.7 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.3: dependencies: nanoid: 3.3.8 @@ -7150,11 +7340,11 @@ snapshots: normalize-path: 3.0.0 object-hash: 3.0.0 picocolors: 1.1.1 - postcss: 8.4.47 - postcss-import: 15.1.0(postcss@8.4.47) - postcss-js: 4.0.1(postcss@8.4.47) - postcss-load-config: 4.0.2(postcss@8.4.47) - postcss-nested: 6.2.0(postcss@8.4.47) + postcss: 8.5.3 + postcss-import: 15.1.0(postcss@8.5.3) + postcss-js: 4.0.1(postcss@8.5.3) + postcss-load-config: 4.0.2(postcss@8.5.3) + postcss-nested: 6.2.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 resolve: 1.22.8 sucrase: 3.35.0