This PR extends the build pipeline of the www service to support locale-prefixed static builds (EN/RU) with build-time SSG output injection, while also refactoring UI typography to a tokenized Tailwind v4 @theme-driven approach. Changes: - Add build-time SSG plugin to @ermnvldmr/rsbuild-config and wire multi-locale builds (/en/, /ru/) into services/www. - Introduce new @ermnvldmr/i18n package (locale constants, path helpers, keysets, pluralization) and apply it to www navigation/text. - Refactor ui typography to a shared getTypographyClassNames utility + Tailwind token definitions, with stl/cn updated for correct Tailwind-merge behavior.
98 lines
3.2 KiB
JSON
98 lines
3.2 KiB
JSON
{
|
|
"name": "@ermnvldmr/ui",
|
|
"version": "1.0.0",
|
|
"description": "Shared UI components and design system",
|
|
"type": "module",
|
|
"main": "./dist/index.js",
|
|
"types": "./dist/index.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/index.js",
|
|
"style": "./dist/styles/*.css",
|
|
"types": "./dist/ui/src/index.d.ts",
|
|
"default": "./src/index.ts"
|
|
},
|
|
"./testing": {
|
|
"import": "./dist/testing.js",
|
|
"types": "./dist/ui/src/testing.d.ts",
|
|
"default": "./src/testing.ts"
|
|
},
|
|
"./dev": {
|
|
"import": "./dist/dev.js",
|
|
"types": "./dist/ui/src/dev.d.ts",
|
|
"default": "./src/dev.ts"
|
|
}
|
|
},
|
|
"files": [
|
|
"dist"
|
|
],
|
|
"scripts": {
|
|
"dev": "rsbuild dev",
|
|
"build": "rsbuild build",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:coverage": "vitest run --coverage",
|
|
"storybook": "storybook dev -p 6007 -c .config/storybook",
|
|
"build-storybook": "storybook build -c .config/storybook",
|
|
"test:storybook": "test-storybook --config-dir .config/storybook",
|
|
"test:storybook:ci": "concurrently -k -s first -n \"SB,TEST\" -c \"magenta,blue\" \"http-server storybook-static --port 6006 --silent\" \"wait-on tcp:127.0.0.1:6006 && test-storybook --coverage --config-dir .config/storybook --url http://127.0.0.1:6006\"",
|
|
"lint": "eslint src --max-warnings 0",
|
|
"typecheck": "tsc --noEmit",
|
|
"clean": "rm -rf dist coverage storybook-static"
|
|
},
|
|
"dependencies": {
|
|
"@ermnvldmr/i18n": "workspace:*",
|
|
"@ermnvldmr/stl": "workspace:*",
|
|
"@radix-ui/react-dialog": "^1.1.15",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.12",
|
|
"@radix-ui/react-navigation-menu": "^1.2.10",
|
|
"@radix-ui/react-slot": "^1.2.0",
|
|
"class-variance-authority": "^0.7.1",
|
|
"lucide-react": "^0.503.0",
|
|
"react-aria": "^3.45.0",
|
|
"react-icons": "^5.5.0",
|
|
"react-stately": "^3.44.0",
|
|
"shiki": "^4.0.1",
|
|
"tw-animate-css": "^1.2.8"
|
|
},
|
|
"devDependencies": {
|
|
"@ermnvldmr/eslint-config": "workspace:*",
|
|
"@ermnvldmr/rsbuild-config": "workspace:*",
|
|
"@ermnvldmr/storybook-config": "workspace:*",
|
|
"@rsbuild/core": "^1.2.11",
|
|
"@rsbuild/plugin-babel": "^1.1.0",
|
|
"@storybook/addon-a11y": "^8.6.15",
|
|
"@storybook/addon-coverage": "^3.0.0",
|
|
"@storybook/addon-essentials": "^8.6.15",
|
|
"@storybook/addon-interactions": "^8.6.15",
|
|
"@storybook/addon-themes": "^8.6.15",
|
|
"@storybook/react": "^8.6.15",
|
|
"@storybook/test": "^8.6.15",
|
|
"@storybook/test-runner": "^0.19.1",
|
|
"@tailwindcss/postcss": "^4.1.18",
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.1",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/react": "^19.1.2",
|
|
"@types/react-dom": "^19.1.2",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"babel-plugin-istanbul": "^7.0.1",
|
|
"concurrently": "^9.1.2",
|
|
"http-server": "^14.1.1",
|
|
"jsdom": "^28.0.0",
|
|
"playwright": "^1.57.0",
|
|
"postcss": "^8.5.6",
|
|
"storybook": "^8.6.17",
|
|
"storybook-react-rsbuild": "^1.0.3",
|
|
"typescript": "^5.8.3",
|
|
"vitest": "^4.0.18",
|
|
"wait-on": "^8.0.3"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "^19.1.0",
|
|
"react-dom": "^19.1.0",
|
|
"tailwindcss": "^4.1.4"
|
|
}
|
|
}
|