Files
matrix-authentication-service/frontend/package.json
T
Quentin Gliech 8e65bf198e frontend: migrate to Tailwind 4
Tailwind 4 ships its own Vite plugin and no longer needs PostCSS plumbing.
Drop postcss/autoprefixer/postcss-import/postcss-nesting and the .postcssrc.json,
wire @tailwindcss/vite into vite.config.ts, replace the @tailwind directives
with @import "tailwindcss", and convert the JS tailwind.config.cjs theme
into a CSS @theme block in shared.css. An @source directive points back at
the SSR templates so the Jinja-rendered HTML in templates/ still gets scanned
for utility classes.

The third-party CSS (compound design tokens, compound-web, fontsource) moves
into a new vendor.css entrypoint, loaded ahead of shared.css from main.tsx,
storybook, and base.html. Tailwind v4's @import bundler silently drops the
nested `@import url(...) layer(cpd-base) screen` statements inside the
compound-design-tokens.css barrel, so we have to keep those imports out of
any file that contains Tailwind directives and let Vite's normal CSS pipeline
resolve them instead.
2026-05-25 16:31:36 +02:00

87 lines
2.7 KiB
JSON

{
"name": "mas-frontend",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"generate": "graphql-codegen && i18next-cli extract",
"lint": "graphql-codegen && biome check && tsc && i18next-cli extract --ci",
"format": "biome format --write",
"build": "rimraf ./dist/ && vite build",
"preview": "vite preview",
"test": "vitest",
"coverage": "vitest run --coverage",
"storybook": "storybook dev -p 6006",
"build-storybook": "storybook build",
"i18n": "i18next-cli",
"knip": "knip"
},
"dependencies": {
"@fontsource/inconsolata": "^5.2.8",
"@fontsource/inter": "^5.2.8",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
"@tanstack/react-query": "^5.100.14",
"@tanstack/react-router": "^1.170.8",
"@vector-im/compound-design-tokens": "6.10.1",
"@vector-im/compound-web": "^8.3.5",
"@zxcvbn-ts/core": "^3.0.4",
"@zxcvbn-ts/language-common": "^3.0.4",
"classnames": "^2.5.1",
"date-fns": "^4.3.0",
"i18next": "^26.2.0",
"react": "^19.2.6",
"react-dom": "^19.2.6",
"react-i18next": "^17.0.8",
"swagger-ui-dist": "^5.32.6",
"valibot": "^1.4.0",
"vaul": "^1.1.2"
},
"devDependencies": {
"@biomejs/biome": "^2.4.15",
"@browser-logos/chrome": "^2.0.0",
"@browser-logos/firefox": "^3.0.10",
"@browser-logos/safari": "^2.1.0",
"@graphql-codegen/cli": "^7.0.0",
"@graphql-codegen/client-preset": "^6.0.0",
"@graphql-codegen/typescript-msw": "^4.0.1",
"@graphql-typed-document-node/core": "^3.2.0",
"@storybook/addon-docs": "^10.4.1",
"@storybook/react-vite": "^10.4.1",
"@tailwindcss/vite": "^4.3.0",
"@tanstack/react-query-devtools": "^5.100.14",
"@tanstack/react-router-devtools": "^1.167.0",
"@tanstack/router-plugin": "^1.168.11",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/node": "^25.9.1",
"@types/react": "19.2.15",
"@types/react-dom": "19.2.3",
"@types/swagger-ui-dist": "^3.30.6",
"@vitejs/plugin-react": "^6.0.2",
"@vitest/coverage-v8": "^4.1.7",
"browserslist-to-esbuild": "^2.1.1",
"graphql": "^16.14.0",
"happy-dom": "^20.9.0",
"i18next-cli": "^1.58.0",
"knip": "^6.14.2",
"msw": "^2.14.6",
"msw-storybook-addon": "^2.0.7",
"rimraf": "^6.1.3",
"storybook": "^10.4.1",
"tailwindcss": "^4.3.0",
"tinyglobby": "^0.2.16",
"typescript": "^6.0.3",
"vite": "8.0.14",
"vite-plugin-graphql-codegen": "^3.9.1",
"vitest": "^4.1.7"
},
"msw": {
"workerDirectory": [
".storybook/public"
]
}
}