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 @@ + 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