diff --git a/benchmark.js b/benchmark.js index 964e80d27..abe9a0f67 100644 --- a/benchmark.js +++ b/benchmark.js @@ -76,6 +76,8 @@ let result = [] result.push(benchmark('tailwind')) result.push(benchmark('stylex')) +result.push(benchmark('stylex-turbo')) +result.push(benchmark('stylex-turbo-devup-ui')) result.push(benchmark('vanilla-extract')) result.push(benchmark('kuma-ui')) result.push(benchmark('panda-css')) diff --git a/benchmark/next-stylex-turbo-devup-ui/.gitignore b/benchmark/next-stylex-turbo-devup-ui/.gitignore new file mode 100644 index 000000000..0d46fad00 --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/.gitignore @@ -0,0 +1,3 @@ +/.next/ +next-env.d.ts +df/ diff --git a/benchmark/next-stylex-turbo-devup-ui/app/layout.tsx b/benchmark/next-stylex-turbo-devup-ui/app/layout.tsx new file mode 100644 index 000000000..45e0ac1be --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/app/layout.tsx @@ -0,0 +1,18 @@ +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'StyleX Turbopack Devup UI benchmark', + description: 'StyleX benchmark built with Next.js Turbopack and Devup UI', +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + {children} + + ) +} diff --git a/benchmark/next-stylex-turbo-devup-ui/app/page.tsx b/benchmark/next-stylex-turbo-devup-ui/app/page.tsx new file mode 100644 index 000000000..c590de33c --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/app/page.tsx @@ -0,0 +1,81 @@ +'use client' + +import { Box, globalCss } from '@devup-ui/react' +import * as stylex from '@stylexjs/stylex' +import { useState } from 'react' + +const styles = stylex.create({ + base: { + fontSize: 32, + position: 'relative', + paddingTop: '28px', + paddingBottom: '28px', + backgroundColor: { + default: 'blue', + ':hover': 'yellow', + }, + cursor: { + default: 'pointer', + ':hover': 'cell', + }, + }, + typo: { + color: 'var(--text)', + }, + conditional: { + color: 'green', + }, + conditional1: { + color: 'blue', + }, + hello: { + fontSize: 32, + paddingRight: '20px', + }, + hello2: { + fontSize: 12, + }, +}) + +globalCss({ + '*': { + boxSizing: 'border-box', + p: 0, + m: 0, + }, +}) + +export default function HomePage() { + const [_, setColor] = useState('yellow') + const [enabled, setEnabled] = useState(false) + + return ( +
+ + Track & field champions: + + +
hello
+
hello
+
+ text + + hello + + hello + +
+ ) +} diff --git a/benchmark/next-stylex-turbo-devup-ui/next.config.mjs b/benchmark/next-stylex-turbo-devup-ui/next.config.mjs new file mode 100644 index 000000000..ca6aae5d6 --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/next.config.mjs @@ -0,0 +1,3 @@ +import { DevupUI } from '@devup-ui/next-plugin' + +export default DevupUI({}, { singleCss: true }) diff --git a/benchmark/next-stylex-turbo-devup-ui/package.json b/benchmark/next-stylex-turbo-devup-ui/package.json new file mode 100644 index 000000000..398b2e55b --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/package.json @@ -0,0 +1,28 @@ +{ + "name": "next-stylex-turbo-devup-ui-benchmark", + "version": "0.1.0", + "type": "module", + "private": true, + "scripts": { + "predev": "rimraf .next df", + "prebuild": "rimraf .next df", + "dev": "next dev", + "build": "next build --experimental-debug-memory-usage", + "start": "next start" + }, + "dependencies": { + "@devup-ui/react": "workspace:^", + "@stylexjs/stylex": "^0.19", + "next": "16.3", + "react": "19.2", + "react-dom": "19.2" + }, + "devDependencies": { + "@devup-ui/next-plugin": "workspace:^", + "@types/node": "^26.2", + "@types/react": "^19.2", + "@types/react-dom": "^19.2", + "rimraf": "^6.1", + "typescript": "^7.0" + } +} diff --git a/benchmark/next-stylex-turbo-devup-ui/tsconfig.json b/benchmark/next-stylex-turbo-devup-ui/tsconfig.json new file mode 100644 index 000000000..9c0670fe9 --- /dev/null +++ b/benchmark/next-stylex-turbo-devup-ui/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "es2024", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": ["node_modules"] +} diff --git a/benchmark/next-stylex-turbo/.gitignore b/benchmark/next-stylex-turbo/.gitignore new file mode 100644 index 000000000..bbe08e8be --- /dev/null +++ b/benchmark/next-stylex-turbo/.gitignore @@ -0,0 +1,2 @@ +/.next/ +next-env.d.ts diff --git a/benchmark/next-stylex-turbo/app/globals.css b/benchmark/next-stylex-turbo/app/globals.css new file mode 100644 index 000000000..b24a54dbe --- /dev/null +++ b/benchmark/next-stylex-turbo/app/globals.css @@ -0,0 +1,7 @@ +@stylex; + +* { + box-sizing: border-box; + padding: 0; + margin: 0; +} diff --git a/benchmark/next-stylex-turbo/app/layout.tsx b/benchmark/next-stylex-turbo/app/layout.tsx new file mode 100644 index 000000000..97e6490da --- /dev/null +++ b/benchmark/next-stylex-turbo/app/layout.tsx @@ -0,0 +1,20 @@ +import './globals.css' + +import type { Metadata } from 'next' + +export const metadata: Metadata = { + title: 'StyleX Turbopack benchmark', + description: 'StyleX benchmark built with Next.js Turbopack', +} + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode +}>) { + return ( + + {children} + + ) +} diff --git a/benchmark/next-stylex-turbo/app/page.tsx b/benchmark/next-stylex-turbo/app/page.tsx new file mode 100644 index 000000000..5cfba2de6 --- /dev/null +++ b/benchmark/next-stylex-turbo/app/page.tsx @@ -0,0 +1,70 @@ +'use client' + +import * as stylex from '@stylexjs/stylex' +import { useState } from 'react' + +const styles = stylex.create({ + base: { + fontSize: 32, + position: 'relative', + paddingTop: '28px', + paddingBottom: '28px', + backgroundColor: { + default: 'blue', + ':hover': 'yellow', + }, + cursor: { + default: 'pointer', + ':hover': 'cell', + }, + }, + typo: { + color: 'var(--text)', + }, + conditional: { + color: 'green', + }, + conditional1: { + color: 'blue', + }, + hello: { + fontSize: 32, + paddingRight: '20px', + }, + hello2: { + fontSize: 12, + }, +}) + +export default function HomePage() { + const [_, setColor] = useState('yellow') + const [enabled, setEnabled] = useState(false) + + return ( +
+

Track & field champions:

+
+
hello
+
hello
+
+
text
+
+ hello +
+
hello
+ +
+ ) +} diff --git a/benchmark/next-stylex-turbo/babel.config.js b/benchmark/next-stylex-turbo/babel.config.js new file mode 100644 index 000000000..ca5f32efd --- /dev/null +++ b/benchmark/next-stylex-turbo/babel.config.js @@ -0,0 +1,22 @@ +const path = require('node:path') + +module.exports = { + presets: ['next/babel'], + plugins: [ + [ + '@stylexjs/babel-plugin', + { + dev: process.env.NODE_ENV !== 'production', + runtimeInjection: false, + genConditionalClasses: true, + treeshakeCompensation: true, + aliases: { + '@/*': [path.join(__dirname, '*')], + }, + unstable_moduleResolution: { + type: 'commonJS', + }, + }, + ], + ], +} diff --git a/benchmark/next-stylex-turbo/next.config.js b/benchmark/next-stylex-turbo/next.config.js new file mode 100644 index 000000000..5a877d2db --- /dev/null +++ b/benchmark/next-stylex-turbo/next.config.js @@ -0,0 +1,2 @@ +/** @type {import('next').NextConfig} */ +module.exports = {} diff --git a/benchmark/next-stylex-turbo/package.json b/benchmark/next-stylex-turbo/package.json new file mode 100644 index 000000000..1dd2cc0c8 --- /dev/null +++ b/benchmark/next-stylex-turbo/package.json @@ -0,0 +1,28 @@ +{ + "name": "next-stylex-turbo-benchmark", + "version": "0.1.0", + "private": true, + "scripts": { + "predev": "rimraf .next", + "prebuild": "rimraf .next", + "dev": "next dev", + "build": "next build --experimental-debug-memory-usage", + "start": "next start" + }, + "dependencies": { + "@stylexjs/stylex": "^0.19", + "next": "16.3", + "react": "19.2", + "react-dom": "19.2" + }, + "devDependencies": { + "@stylexjs/babel-plugin": "0.19.0", + "@stylexjs/postcss-plugin": "0.19.0", + "@types/node": "^26.2", + "@types/react": "^19.2", + "@types/react-dom": "^19.2", + "postcss": "^8.5", + "rimraf": "^6.1", + "typescript": "^7.0" + } +} diff --git a/benchmark/next-stylex-turbo/postcss.config.js b/benchmark/next-stylex-turbo/postcss.config.js new file mode 100644 index 000000000..3c74f0eb3 --- /dev/null +++ b/benchmark/next-stylex-turbo/postcss.config.js @@ -0,0 +1,8 @@ +module.exports = { + plugins: { + '@stylexjs/postcss-plugin': { + include: ['app/**/*.{js,jsx,ts,tsx}'], + exclude: ['**/node_modules/**', '**/.next/**'], + }, + }, +} diff --git a/benchmark/next-stylex-turbo/tsconfig.json b/benchmark/next-stylex-turbo/tsconfig.json new file mode 100644 index 000000000..9c0670fe9 --- /dev/null +++ b/benchmark/next-stylex-turbo/tsconfig.json @@ -0,0 +1,34 @@ +{ + "compilerOptions": { + "target": "es2024", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": ["node_modules"] +} diff --git a/bun.lock b/bun.lock index 13270b5f1..8659c8127 100644 --- a/bun.lock +++ b/bun.lock @@ -311,6 +311,45 @@ "typescript": "7.0", }, }, + "benchmark/next-stylex-turbo": { + "name": "next-stylex-turbo-benchmark", + "version": "0.1.0", + "dependencies": { + "@stylexjs/stylex": "^0.19", + "next": "16.3", + "react": "19.2", + "react-dom": "19.2", + }, + "devDependencies": { + "@stylexjs/babel-plugin": "0.19.0", + "@stylexjs/postcss-plugin": "0.19.0", + "@types/node": "^26.2", + "@types/react": "^19.2", + "@types/react-dom": "^19.2", + "postcss": "^8.5", + "rimraf": "^6.1", + "typescript": "^7.0", + }, + }, + "benchmark/next-stylex-turbo-devup-ui": { + "name": "next-stylex-turbo-devup-ui-benchmark", + "version": "0.1.0", + "dependencies": { + "@devup-ui/react": "workspace:^", + "@stylexjs/stylex": "^0.19", + "next": "16.3", + "react": "19.2", + "react-dom": "19.2", + }, + "devDependencies": { + "@devup-ui/next-plugin": "workspace:^", + "@types/node": "^26.2", + "@types/react": "^19.2", + "@types/react-dom": "^19.2", + "rimraf": "^6.1", + "typescript": "^7.0", + }, + }, "benchmark/next-tailwind": { "name": "next-tailwind-benchmark", "version": "0.1.0", @@ -1403,6 +1442,8 @@ "@stylexjs/open-props": ["@stylexjs/open-props@0.11.1", "", { "dependencies": { "@stylexjs/stylex": "0.11.1" } }, "sha512-UYeJV34LOmDZ1igQknB+iM3JMg+lbncHr/zG7i1tBwwQslNNWOMM7iR4hwSUvczQYcW5G8vMAorP/2j4T8XBjA=="], + "@stylexjs/postcss-plugin": ["@stylexjs/postcss-plugin@0.19.0", "", { "dependencies": { "@babel/core": "^7.26.8", "@stylexjs/babel-plugin": "0.19.0", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "postcss": "^8.5.10" } }, "sha512-veURheoAg6LcAOZ7ik9CaBwCRS3dl1AHRYq6X5DnknYjF+vS9HhH3NZDw+dMgdFY0FYWUOwnKKAdi9m/4+2bLQ=="], + "@stylexjs/shared": ["@stylexjs/shared@0.19.0", "", {}, "sha512-7Yym70cQH5sPzJHgzJX3FkL9ZCptbC3IbiRijN9YLYU/5OywB/3c519Xv1DOzvxqjv8urSxh98/9HxLaPG7sDg=="], "@stylexjs/stylex": ["@stylexjs/stylex@0.19.0", "", { "dependencies": { "css-mediaquery": "^0.1.2", "invariant": "^2.2.4", "styleq": "0.2.1" } }, "sha512-CnUFp7YMaDLDeemsWOfJgoC/gKM5P/yBNMcpJaE6ChJmXr7s0DJwSeGTTlHJcqqwN9OW1qGtmARWLFhGZN1pTA=="], @@ -2575,6 +2616,10 @@ "next-stylex-benchmark": ["next-stylex-benchmark@workspace:benchmark/next-stylex"], + "next-stylex-turbo-benchmark": ["next-stylex-turbo-benchmark@workspace:benchmark/next-stylex-turbo"], + + "next-stylex-turbo-devup-ui-benchmark": ["next-stylex-turbo-devup-ui-benchmark@workspace:benchmark/next-stylex-turbo-devup-ui"], + "next-tailwind-benchmark": ["next-tailwind-benchmark@workspace:benchmark/next-tailwind"], "next-tailwind-turbo-benchmark": ["next-tailwind-turbo-benchmark@workspace:benchmark/next-tailwind-turbo"], @@ -3577,6 +3622,8 @@ "@stylexjs/open-props/@stylexjs/stylex": ["@stylexjs/stylex@0.11.1", "", { "dependencies": { "css-mediaquery": "^0.1.2", "invariant": "^2.2.4", "styleq": "0.2.1" } }, "sha512-1OofsiCP2DYV+Cw/iIuHYTAJRy34TtxQt0FDuQGTnNH915hb6NkPmX6iPa++9t4KP3HWR9oVRmAHkpP58BIYbw=="], + "@stylexjs/postcss-plugin/@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], + "@stylistic/eslint-plugin/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], "@stylistic/eslint-plugin/espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], @@ -3687,6 +3734,10 @@ "next-stylex-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + "next-stylex-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + + "next-stylex-turbo-devup-ui-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + "next-tailwind-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], "next-tailwind-turbo-benchmark/typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], @@ -5383,6 +5434,22 @@ "@stylexjs/nextjs-plugin/@stylexjs/babel-plugin/@stylexjs/stylex": ["@stylexjs/stylex@0.11.1", "", { "dependencies": { "css-mediaquery": "^0.1.2", "invariant": "^2.2.4", "styleq": "0.2.1" } }, "sha512-1OofsiCP2DYV+Cw/iIuHYTAJRy34TtxQt0FDuQGTnNH915hb6NkPmX6iPa++9t4KP3HWR9oVRmAHkpP58BIYbw=="], + "@stylexjs/postcss-plugin/@babel/core/@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], + + "@stylexjs/postcss-plugin/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@tailwindcss/node/lightningcss/lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], @@ -6231,6 +6298,14 @@ "@stylexjs/nextjs-plugin/@stylexjs/babel-plugin/@babel/traverse/@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], + "@stylexjs/postcss-plugin/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], + + "@stylexjs/postcss-plugin/@babel/core/@babel/traverse/@babel/helper-globals": ["@babel/helper-globals@7.29.7", "", {}, "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA=="], + "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/code-frame/js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "@vanilla-extract/babel-plugin-debug-ids/@babel/core/@babel/helper-compilation-targets/browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="],