diff --git a/common/shared/eslint/index.js b/common/shared/eslint/index.js index 89f4c7e63e..fa3376b1c9 100644 --- a/common/shared/eslint/index.js +++ b/common/shared/eslint/index.js @@ -1,5 +1,7 @@ +const os = require('node:os'); +const path = require('node:path'); +const eslintPluginBetterTailwindcss = require('eslint-plugin-better-tailwindcss'); const jsdoc = require('eslint-plugin-jsdoc'); -const eslintPluginReadableTailwind = require('eslint-plugin-readable-tailwind'); const noExternalImportsInFacade = require('./plugins/no-external-imports-in-facade'); const noFacadeImportsOutsideFacade = require('./plugins/no-facade-imports-outside-facade'); const noSelfPackageImports = require('./plugins/no-self-package-imports'); @@ -224,6 +226,9 @@ exports.facadePreset = () => { }; exports.tailwindcssPreset = () => { + const isWindows = os.platform() === 'win32'; + const lineBreakStyle = isWindows ? 'windows' : 'unix'; + return { files: ['**/*.{jsx,tsx}'], languageOptions: { @@ -234,14 +239,25 @@ exports.tailwindcssPreset = () => { }, }, plugins: { - 'readable-tailwind': eslintPluginReadableTailwind, + 'better-tailwindcss': eslintPluginBetterTailwindcss, + }, + settings: { + 'better-tailwindcss': { + tailwindConfig: path.resolve(__dirname, '../tailwind/tailwind.config.ts'), + }, }, rules: { - ...eslintPluginReadableTailwind.configs.warning.rules, - ...eslintPluginReadableTailwind.configs.error.rules, - 'jsonc/sort-keys': ['warn'], - 'readable-tailwind/multiline': ['warn', { printWidth: 120, group: 'newLine' }], - 'react-hooks/rules-of-hooks': 'off', + // enable all recommended rules to warn + ...eslintPluginBetterTailwindcss.configs['recommended-warn'].rules, + // enable all recommended rules to error + ...eslintPluginBetterTailwindcss.configs['recommended-error'].rules, + 'better-tailwindcss/multiline': ['warn', { + printWidth: 120, + group: 'newLine', + lineBreakStyle, + }], + 'better-tailwindcss/no-unregistered-classes': 'off', + 'better-tailwindcss/no-conflicting-classes': 'off', }, }; }; diff --git a/common/shared/package.json b/common/shared/package.json index f91c0b5dc2..9b679de4db 100644 --- a/common/shared/package.json +++ b/common/shared/package.json @@ -25,16 +25,16 @@ "univer-cli": "bin/index.ts" }, "dependencies": { - "@typescript-eslint/parser": "^8.32.1", - "@vitejs/plugin-react": "^4.5.0", + "@typescript-eslint/parser": "^8.34.0", + "@vitejs/plugin-react": "^4.5.2", "@vitejs/plugin-vue": "^5.2.4", "@vitest/coverage-istanbul": "^3.1.4", "autoprefixer": "^10.4.21", - "eslint-plugin-readable-tailwind": "^1.9.1", + "eslint-plugin-better-tailwindcss": "^3.1.0", "fs-extra": "^11.3.0", - "happy-dom": "17.4.7", + "happy-dom": "18.0.1", "javascript-obfuscator": "^4.1.1", - "postcss-preset-env": "^10.1.6", + "postcss-preset-env": "^10.2.2", "sort-keys": "^5.1.0", "tailwind-scrollbar": "^4.0.2", "tailwindcss": "^3.4.17", diff --git a/package.json b/package.json index 7cb40ebd59..0f0b566bd4 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@commitlint/cli": "^19.8.1", "@commitlint/config-conventional": "^19.8.1", "@eslint-react/eslint-plugin": "^1.51.3", - "@playwright/test": "^1.52.0", + "@playwright/test": "^1.53.0", "@release-it-plugins/workspaces": "^4.2.0", "@release-it/conventional-changelog": "^9.0.4", "@storybook/react": "8.6.14", @@ -77,6 +77,7 @@ "react-dom": "^19.1.0", "release-it": "^17.11.0", "serve": "^14.2.4", + "tailwindcss": "^3.4.17", "tsx": "^4.19.4", "turbo": "^2.5.4", "typescript": "^5.8.3", diff --git a/packages-experimental/debugger/src/views/Fab.tsx b/packages-experimental/debugger/src/views/Fab.tsx index 0b1648f4ab..21bd4e2f88 100644 --- a/packages-experimental/debugger/src/views/Fab.tsx +++ b/packages-experimental/debugger/src/views/Fab.tsx @@ -79,8 +79,8 @@ export function Fab() { univer-flex univer-size-9 univer-cursor-pointer univer-items-center univer-justify-center univer-rounded-full univer-bg-white univer-text-base univer-text-gray-900 univer-shadow univer-outline-none univer-transition-shadow - dark:!univer-bg-gray-900 dark:!univer-text-gray-200 hover:univer-ring-1 hover:univer-ring-primary-400 + dark:!univer-bg-gray-900 dark:!univer-text-gray-200 `, borderClassName)} type="button" > diff --git a/packages-experimental/debugger/src/views/watermark/WatermarkTextSetting.tsx b/packages-experimental/debugger/src/views/watermark/WatermarkTextSetting.tsx index 7dda53986a..681ce3dd76 100644 --- a/packages-experimental/debugger/src/views/watermark/WatermarkTextSetting.tsx +++ b/packages-experimental/debugger/src/views/watermark/WatermarkTextSetting.tsx @@ -101,8 +101,8 @@ export function WatermarkTextSetting(props: IWatermarkTextSettingProps) { > @@ -110,8 +110,8 @@ export function WatermarkTextSetting(props: IWatermarkTextSettingProps) { handleSheetActiveChange(item.sheetId)} > @@ -131,12 +131,12 @@ export function UniSheetBar() {