{ "name": "opsxsql-frontend", "private": true, "version": "0.4.0", "type": "module", "scripts": { "dev": "vite", "build": "vite build", "lint": "eslint .", "lint:fix": "eslint . --fix", "typecheck": "tsc --noEmit -p tsconfig.app.json", "format": "prettier --write \"src/**/*.{ts,tsx,css}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,css}\"", "test": "vitest run", "audit:pages": "node scripts/audit-page-size.mjs 700", "preview": "vite preview", "prepare": "git config core.hooksPath frontend/.husky" }, "dependencies": { "@codemirror/autocomplete": "^6.20.2", "@codemirror/commands": "^6.10.3", "@codemirror/lang-sql": "^6.10.0", "@codemirror/language": "^6.12.3", "@codemirror/lint": "^6.9.6", "@codemirror/search": "^6.7.0", "@codemirror/state": "^6.6.0", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.43.0", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-slot": "^1.2.4", "axios": "^1.16.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.562.0", "react": "^19.2.0", "react-dom": "^19.2.0", "react-router": "^7.6.1", "react-router-dom": "^7.15.0", "recharts": "^2.15.4", "tailwind-merge": "^3.4.0" }, "devDependencies": { "@commitlint/cli": "^21.2.4", "@commitlint/config-conventional": "^21.2.4", "@eslint/js": "^9.39.1", "@types/node": "^24.10.1", "@types/react": "^19.2.5", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "autoprefixer": "^10.4.23", "eslint": "^9.39.1", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "globals": "^16.5.0", "jsdom": "^30.1.3", "lint-staged": "^17.6.0", "postcss": "^8.5.6", "prettier": "^3.9.10", "tailwindcss": "^3.4.19", "tailwindcss-animate": "^1.0.7", "typescript": "~5.9.3", "typescript-eslint": "^8.46.4", "vite": "^7.2.4", "vitest": "^5.0.5" }, "lint-staged": { "*.{ts,tsx}": [ "prettier --write", "bash -c 'eslint --fix \"$@\" || true' --" ], "*.css": [ "prettier --write" ] } }