diff --git a/playground/tailwind-v3/App.vue b/playground/tailwind-v3/App.vue
new file mode 100644
index 00000000..68af8449
--- /dev/null
+++ b/playground/tailwind-v3/App.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/playground/tailwind-v3/PugTemplate.vue b/playground/tailwind-v3/PugTemplate.vue
new file mode 100644
index 00000000..4169b534
--- /dev/null
+++ b/playground/tailwind-v3/PugTemplate.vue
@@ -0,0 +1,3 @@
+
+.bg-red-400.pug Pug template
+
diff --git a/playground/tailwind-v3/__tests__/tailwind.spec.ts b/playground/tailwind-v3/__tests__/tailwind.spec.ts
new file mode 100644
index 00000000..c372c37e
--- /dev/null
+++ b/playground/tailwind-v3/__tests__/tailwind.spec.ts
@@ -0,0 +1,27 @@
+import { expect, test } from 'vitest'
+import {
+ editFile,
+ getBgColor,
+ isServe,
+ page,
+ untilBrowserLogAfter,
+ untilUpdated,
+} from '~utils'
+
+test.runIf(isServe)('regenerate CSS and HMR (pug template)', async () => {
+ const el = await page.$('.pug')
+ expect(await getBgColor(el)).toBe('rgb(248, 113, 113)')
+
+ await untilBrowserLogAfter(
+ () =>
+ editFile('PugTemplate.vue', (code) =>
+ code.replace('bg-red-400', 'bg-red-600'),
+ ),
+ [
+ '[vite] css hot updated: /index.css',
+ '[vite] hot updated: /PugTemplate.vue?vue&type=template&lang.js',
+ ],
+ false,
+ )
+ await untilUpdated(() => getBgColor(el), 'rgb(220, 38, 38)')
+})
diff --git a/playground/tailwind-v3/index.css b/playground/tailwind-v3/index.css
new file mode 100644
index 00000000..b5c61c95
--- /dev/null
+++ b/playground/tailwind-v3/index.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/playground/tailwind-v3/index.html b/playground/tailwind-v3/index.html
new file mode 100644
index 00000000..78b06123
--- /dev/null
+++ b/playground/tailwind-v3/index.html
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/playground/tailwind-v3/package.json b/playground/tailwind-v3/package.json
new file mode 100644
index 00000000..f95f1d25
--- /dev/null
+++ b/playground/tailwind-v3/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@vitejs/test-tailwind-v3",
+ "private": true,
+ "version": "0.0.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "debug": "node --inspect-brk ../../packages/vite/bin/vite",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "autoprefixer": "^10.4.21",
+ "tailwindcss": "^3.4.17",
+ "vue": "catalog:",
+ "vue-router": "catalog:"
+ },
+ "devDependencies": {
+ "@types/node": "^22.14.1",
+ "@vitejs/plugin-vue": "workspace:*",
+ "ts-node": "^10.9.2"
+ }
+}
diff --git a/playground/tailwind/postcss.config.cts b/playground/tailwind-v3/postcss.config.cts
similarity index 100%
rename from playground/tailwind/postcss.config.cts
rename to playground/tailwind-v3/postcss.config.cts
diff --git a/playground/tailwind/tailwind.config.js b/playground/tailwind-v3/tailwind.config.js
similarity index 100%
rename from playground/tailwind/tailwind.config.js
rename to playground/tailwind-v3/tailwind.config.js
diff --git a/playground/tailwind-v3/vite.config.ts b/playground/tailwind-v3/vite.config.ts
new file mode 100644
index 00000000..30207fe6
--- /dev/null
+++ b/playground/tailwind-v3/vite.config.ts
@@ -0,0 +1,10 @@
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+export default defineConfig({
+ plugins: [vue()],
+ build: {
+ // to make tests faster
+ minify: false,
+ },
+})
diff --git a/playground/tailwind/__tests__/tailwind.spec.ts b/playground/tailwind/__tests__/tailwind.spec.ts
index c372c37e..9cf5cb8b 100644
--- a/playground/tailwind/__tests__/tailwind.spec.ts
+++ b/playground/tailwind/__tests__/tailwind.spec.ts
@@ -10,7 +10,7 @@ import {
test.runIf(isServe)('regenerate CSS and HMR (pug template)', async () => {
const el = await page.$('.pug')
- expect(await getBgColor(el)).toBe('rgb(248, 113, 113)')
+ expect(await getBgColor(el)).toBe('oklch(0.704 0.191 22.216)')
await untilBrowserLogAfter(
() =>
@@ -23,5 +23,5 @@ test.runIf(isServe)('regenerate CSS and HMR (pug template)', async () => {
],
false,
)
- await untilUpdated(() => getBgColor(el), 'rgb(220, 38, 38)')
+ await untilUpdated(() => getBgColor(el), 'oklch(0.577 0.245 27.325)')
})
diff --git a/playground/tailwind/index.css b/playground/tailwind/index.css
index b5c61c95..d4b50785 100644
--- a/playground/tailwind/index.css
+++ b/playground/tailwind/index.css
@@ -1,3 +1 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
+@import 'tailwindcss';
diff --git a/playground/tailwind/package.json b/playground/tailwind/package.json
index b0866f27..3e612796 100644
--- a/playground/tailwind/package.json
+++ b/playground/tailwind/package.json
@@ -10,14 +10,13 @@
"preview": "vite preview"
},
"dependencies": {
- "autoprefixer": "^10.4.21",
- "tailwindcss": "^3.4.17",
+ "@tailwindcss/vite": "^4.1.4",
+ "tailwindcss": "^4.1.4",
"vue": "catalog:",
"vue-router": "catalog:"
},
"devDependencies": {
"@types/node": "^22.14.1",
- "@vitejs/plugin-vue": "workspace:*",
- "ts-node": "^10.9.2"
+ "@vitejs/plugin-vue": "workspace:*"
}
}
diff --git a/playground/tailwind/vite.config.ts b/playground/tailwind/vite.config.ts
index 30207fe6..24223171 100644
--- a/playground/tailwind/vite.config.ts
+++ b/playground/tailwind/vite.config.ts
@@ -1,8 +1,9 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
+import tailwind from '@tailwindcss/vite'
export default defineConfig({
- plugins: [vue()],
+ plugins: [vue(), tailwind()],
build: {
// to make tests faster
minify: false,
diff --git a/playground/test-utils.ts b/playground/test-utils.ts
index 05ec1a34..325f82b5 100644
--- a/playground/test-utils.ts
+++ b/playground/test-utils.ts
@@ -53,7 +53,7 @@ function componentToHex(c: number): string {
return hex.length === 1 ? '0' + hex : hex
}
-function rgbToHex(rgb: string): string {
+function rgbToHex(rgb: string): string | undefined {
const match = rgb.match(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/)
if (match) {
const [_, rs, gs, bs] = match
@@ -63,9 +63,8 @@ function rgbToHex(rgb: string): string {
componentToHex(parseInt(gs, 10)) +
componentToHex(parseInt(bs, 10))
)
- } else {
- return '#000000'
}
+ return undefined
}
const timeout = (n: number) => new Promise((r) => setTimeout(r, n))
diff --git a/playground/tsconfig.json b/playground/tsconfig.json
index 7e125f86..54fb5cd9 100644
--- a/playground/tsconfig.json
+++ b/playground/tsconfig.json
@@ -9,7 +9,7 @@
"allowJs": true,
"esModuleInterop": true,
"resolveJsonModule": true,
- "moduleResolution": "Node",
+ "moduleResolution": "bundler",
"skipLibCheck": true,
"noUnusedLocals": true,
"jsx": "preserve",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e7299742..c314dd21 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -103,10 +103,10 @@ importers:
version: 3.5.0(sass@1.87.0)(typescript@5.8.3)(vue@3.5.13(typescript@5.8.3))
vite:
specifier: 'catalog:'
- version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
vitest:
specifier: ^3.1.2
- version: 3.1.2(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 3.1.2(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
vue:
specifier: 'catalog:'
version: 3.5.13(typescript@5.8.3)
@@ -133,7 +133,7 @@ importers:
version: 1.2.1
vite:
specifier: 'catalog:'
- version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
vue:
specifier: 'catalog:'
version: 3.5.13(typescript@5.8.3)
@@ -152,7 +152,7 @@ importers:
devDependencies:
vite:
specifier: 'catalog:'
- version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ version: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
playground:
devDependencies:
@@ -214,6 +214,28 @@ importers:
playground/ssr-vue/example-external-component: {}
playground/tailwind:
+ dependencies:
+ '@tailwindcss/vite':
+ specifier: ^4.1.4
+ version: 4.1.4(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))
+ tailwindcss:
+ specifier: ^4.1.4
+ version: 4.1.4
+ vue:
+ specifier: 'catalog:'
+ version: 3.5.13(typescript@5.8.3)
+ vue-router:
+ specifier: 'catalog:'
+ version: 4.5.0(vue@3.5.13(typescript@5.8.3))
+ devDependencies:
+ '@types/node':
+ specifier: ^22.14.1
+ version: 22.14.1
+ '@vitejs/plugin-vue':
+ specifier: workspace:*
+ version: link:../../packages/plugin-vue
+
+ playground/tailwind-v3:
dependencies:
autoprefixer:
specifier: ^10.4.21
@@ -307,7 +329,7 @@ importers:
devDependencies:
'@vitejs/plugin-legacy':
specifier: ^6.0.2
- version: 6.0.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))
+ version: 6.0.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitejs/plugin-vue':
specifier: workspace:*
version: link:../../packages/plugin-vue
@@ -1552,6 +1574,96 @@ packages:
resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==}
engines: {node: '>=18'}
+ '@tailwindcss/node@4.1.4':
+ resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==}
+
+ '@tailwindcss/oxide-android-arm64@4.1.4':
+ resolution: {integrity: sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.4':
+ resolution: {integrity: sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-darwin-x64@4.1.4':
+ resolution: {integrity: sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.4':
+ resolution: {integrity: sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4':
+ resolution: {integrity: sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.4':
+ resolution: {integrity: sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.4':
+ resolution: {integrity: sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.4':
+ resolution: {integrity: sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.4':
+ resolution: {integrity: sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@tailwindcss/oxide-wasm32-wasi@4.1.4':
+ resolution: {integrity: sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+ bundledDependencies:
+ - '@napi-rs/wasm-runtime'
+ - '@emnapi/core'
+ - '@emnapi/runtime'
+ - '@tybys/wasm-util'
+ - '@emnapi/wasi-threads'
+ - tslib
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.4':
+ resolution: {integrity: sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.4':
+ resolution: {integrity: sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@tailwindcss/oxide@4.1.4':
+ resolution: {integrity: sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==}
+ engines: {node: '>= 10'}
+
+ '@tailwindcss/vite@4.1.4':
+ resolution: {integrity: sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==}
+ peerDependencies:
+ vite: ^5.2.0 || ^6
+
'@trysound/sax@0.2.0':
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
@@ -2330,6 +2442,10 @@ packages:
engines: {node: '>=0.10'}
hasBin: true
+ detect-libc@2.0.4:
+ resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
+ engines: {node: '>=8'}
+
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
@@ -2394,6 +2510,10 @@ packages:
resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==}
engines: {node: '>=10.13.0'}
+ enhanced-resolve@5.18.1:
+ resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==}
+ engines: {node: '>=10.13.0'}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -2972,6 +3092,70 @@ packages:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
+ lightningcss-darwin-arm64@1.29.2:
+ resolution: {integrity: sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ lightningcss-darwin-x64@1.29.2:
+ resolution: {integrity: sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ lightningcss-freebsd-x64@1.29.2:
+ resolution: {integrity: sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ resolution: {integrity: sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.29.2:
+ resolution: {integrity: sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-arm64-musl@1.29.2:
+ resolution: {integrity: sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ lightningcss-linux-x64-gnu@1.29.2:
+ resolution: {integrity: sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-linux-x64-musl@1.29.2:
+ resolution: {integrity: sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ lightningcss-win32-arm64-msvc@1.29.2:
+ resolution: {integrity: sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ resolution: {integrity: sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ lightningcss@1.29.2:
+ resolution: {integrity: sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==}
+ engines: {node: '>= 12.0.0'}
+
lilconfig@3.1.3:
resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
engines: {node: '>=14'}
@@ -3351,8 +3535,8 @@ packages:
typescript:
optional: true
- pirates@4.0.6:
- resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ pirates@4.0.7:
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
engines: {node: '>= 6'}
pkg-types@1.3.1:
@@ -3987,6 +4171,9 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
+ tailwindcss@4.1.4:
+ resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==}
+
tapable@2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
@@ -5473,6 +5660,71 @@ snapshots:
'@sindresorhus/merge-streams@4.0.0': {}
+ '@tailwindcss/node@4.1.4':
+ dependencies:
+ enhanced-resolve: 5.18.1
+ jiti: 2.4.2
+ lightningcss: 1.29.2
+ tailwindcss: 4.1.4
+
+ '@tailwindcss/oxide-android-arm64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-arm64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-darwin-x64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-freebsd-x64@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-gnu@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-arm64-musl@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-gnu@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-linux-x64-musl@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-wasm32-wasi@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-win32-arm64-msvc@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide-win32-x64-msvc@4.1.4':
+ optional: true
+
+ '@tailwindcss/oxide@4.1.4':
+ optionalDependencies:
+ '@tailwindcss/oxide-android-arm64': 4.1.4
+ '@tailwindcss/oxide-darwin-arm64': 4.1.4
+ '@tailwindcss/oxide-darwin-x64': 4.1.4
+ '@tailwindcss/oxide-freebsd-x64': 4.1.4
+ '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.4
+ '@tailwindcss/oxide-linux-arm64-gnu': 4.1.4
+ '@tailwindcss/oxide-linux-arm64-musl': 4.1.4
+ '@tailwindcss/oxide-linux-x64-gnu': 4.1.4
+ '@tailwindcss/oxide-linux-x64-musl': 4.1.4
+ '@tailwindcss/oxide-wasm32-wasi': 4.1.4
+ '@tailwindcss/oxide-win32-arm64-msvc': 4.1.4
+ '@tailwindcss/oxide-win32-x64-msvc': 4.1.4
+
+ '@tailwindcss/vite@4.1.4(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))':
+ dependencies:
+ '@tailwindcss/node': 4.1.4
+ '@tailwindcss/oxide': 4.1.4
+ tailwindcss: 4.1.4
+ vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+
'@trysound/sax@0.2.0': {}
'@tsconfig/node10@1.0.11': {}
@@ -5669,7 +5921,7 @@ snapshots:
'@unrs/resolver-binding-win32-x64-msvc@1.6.4':
optional: true
- '@vitejs/plugin-legacy@6.0.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitejs/plugin-legacy@6.0.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@babel/core': 7.26.10
'@babel/preset-env': 7.26.9(@babel/core@7.26.10)
@@ -5679,7 +5931,7 @@ snapshots:
magic-string: 0.30.17
regenerator-runtime: 0.14.1
systemjs: 6.15.1
- vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- supports-color
@@ -5699,13 +5951,13 @@ snapshots:
chai: 5.2.0
tinyrainbow: 2.0.0
- '@vitest/mocker@3.1.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))':
+ '@vitest/mocker@3.1.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))':
dependencies:
'@vitest/spy': 3.1.2
estree-walker: 3.0.3
magic-string: 0.30.17
optionalDependencies:
- vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
'@vitest/pretty-format@3.1.2':
dependencies:
@@ -6342,6 +6594,8 @@ snapshots:
detect-libc@1.0.3:
optional: true
+ detect-libc@2.0.4: {}
+
didyoumean@1.2.2: {}
diff@4.0.2: {}
@@ -6397,6 +6651,11 @@ snapshots:
graceful-fs: 4.2.11
tapable: 2.2.1
+ enhanced-resolve@5.18.1:
+ dependencies:
+ graceful-fs: 4.2.11
+ tapable: 2.2.1
+
entities@4.5.0: {}
environment@1.1.0: {}
@@ -7083,6 +7342,51 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
+ lightningcss-darwin-arm64@1.29.2:
+ optional: true
+
+ lightningcss-darwin-x64@1.29.2:
+ optional: true
+
+ lightningcss-freebsd-x64@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm-gnueabihf@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-arm64-musl@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-gnu@1.29.2:
+ optional: true
+
+ lightningcss-linux-x64-musl@1.29.2:
+ optional: true
+
+ lightningcss-win32-arm64-msvc@1.29.2:
+ optional: true
+
+ lightningcss-win32-x64-msvc@1.29.2:
+ optional: true
+
+ lightningcss@1.29.2:
+ dependencies:
+ detect-libc: 2.0.4
+ optionalDependencies:
+ lightningcss-darwin-arm64: 1.29.2
+ lightningcss-darwin-x64: 1.29.2
+ lightningcss-freebsd-x64: 1.29.2
+ lightningcss-linux-arm-gnueabihf: 1.29.2
+ lightningcss-linux-arm64-gnu: 1.29.2
+ lightningcss-linux-arm64-musl: 1.29.2
+ lightningcss-linux-x64-gnu: 1.29.2
+ lightningcss-linux-x64-musl: 1.29.2
+ lightningcss-win32-arm64-msvc: 1.29.2
+ lightningcss-win32-x64-msvc: 1.29.2
+
lilconfig@3.1.3: {}
lines-and-columns@1.2.4: {}
@@ -7405,7 +7709,7 @@ snapshots:
optionalDependencies:
typescript: 5.8.3
- pirates@4.0.6: {}
+ pirates@4.0.7: {}
pkg-types@1.3.1:
dependencies:
@@ -8081,7 +8385,7 @@ snapshots:
glob: 10.4.5
lines-and-columns: 1.2.4
mz: 2.7.0
- pirates: 4.0.6
+ pirates: 4.0.7
ts-interface-checker: 0.1.13
superjson@2.2.2:
@@ -8133,6 +8437,8 @@ snapshots:
transitivePeerDependencies:
- ts-node
+ tailwindcss@4.1.4: {}
+
tapable@2.2.1: {}
temp-dir@3.0.0: {}
@@ -8346,13 +8652,13 @@ snapshots:
vary@1.1.2: {}
- vite-node@3.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
+ vite-node@3.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
cac: 6.7.14
debug: 4.4.0
es-module-lexer: 1.6.0
pathe: 2.0.3
- vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
transitivePeerDependencies:
- '@types/node'
- jiti
@@ -8367,7 +8673,7 @@ snapshots:
- tsx
- yaml
- vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
+ vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
esbuild: 0.25.2
postcss: 8.5.3
@@ -8377,15 +8683,16 @@ snapshots:
fsevents: 2.3.3
jiti: 2.4.2
less: 4.3.0
+ lightningcss: 1.29.2
sass: 1.87.0
stylus: 0.64.0
tsx: 4.19.3
yaml: 2.7.0
- vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
+ vitest@3.1.2(@types/debug@4.1.12)(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0):
dependencies:
'@vitest/expect': 3.1.2
- '@vitest/mocker': 3.1.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))
+ '@vitest/mocker': 3.1.2(vite@6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0))
'@vitest/pretty-format': 3.1.2
'@vitest/runner': 3.1.2
'@vitest/snapshot': 3.1.2
@@ -8402,8 +8709,8 @@ snapshots:
tinyglobby: 0.2.13
tinypool: 1.0.2
tinyrainbow: 2.0.0
- vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
- vite-node: 3.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite: 6.2.5(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
+ vite-node: 3.1.2(@types/node@22.14.1)(jiti@2.4.2)(less@4.3.0)(lightningcss@1.29.2)(sass@1.87.0)(stylus@0.64.0)(tsx@4.19.3)(yaml@2.7.0)
why-is-node-running: 2.3.0
optionalDependencies:
'@types/debug': 4.1.12