{ "name": "@operation-hope/paper-trail-web", "version": "1.0.0", "description": "Political campaign finance transparency tool for corruptionwatch.us", "author": "Operation-Hope", "license": "MIT", "repository": { "type": "git", "url": "git+https://github.com/Operation-Hope/paper-trail-web.git" }, "homepage": "https://github.com/Operation-Hope/paper-trail-web#readme", "bugs": { "url": "https://github.com/Operation-Hope/paper-trail-web/issues" }, "private": false, "type": "module", "keywords": [ "campaign-finance", "political-transparency", "corruption-watch", "democracy", "politics", "civic-tech", "react", "typescript", "vite", "tailwindcss" ], "scripts": { "dev": "vite", "dev:mocks": "VITE_ENABLE_MOCKS=true vite", "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", "test": "vitest", "test:ui": "vitest --ui", "test:run": "vitest run", "test:coverage": "vitest run --coverage", "knip": "knip", "type-check": "tsc --noEmit", "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,css}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,json,css}\"", "fix:tailwind-data-attr": "node scripts/fix-tailwind-data-attr.js", "prepare": "husky" }, "engines": { "node": ">=24.0.0", "pnpm": ">=9.0.0" }, "dependencies": { "@radix-ui/react-avatar": "^1.1.11", "@radix-ui/react-checkbox": "^1.3.3", "@radix-ui/react-collapsible": "^1.1.12", "@radix-ui/react-dialog": "^1.1.15", "@radix-ui/react-label": "^2.1.8", "@radix-ui/react-popover": "^1.1.15", "@radix-ui/react-select": "^2.2.6", "@radix-ui/react-separator": "^1.1.8", "@radix-ui/react-slot": "^1.2.4", "@radix-ui/react-tabs": "^1.1.13", "@radix-ui/react-toggle-group": "^1.1.11", "@radix-ui/react-tooltip": "^1.2.8", "@tanstack/react-query": "^5.90.12", "chart.js": "^4.5.1", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "date-fns": "^4.1.0", "lucide-react": "^0.562.0", "next-themes": "^0.4.6", "react": "19.2.3", "react-chartjs-2": "^5.3.1", "react-day-picker": "^9.13.0", "react-dom": "19.2.3", "react-router-dom": "^7.11.0", "sonner": "^2.0.7", "tailwind-merge": "^3.4.0" }, "devDependencies": { "@eslint/js": "^9.39.2", "@tailwindcss/vite": "^4.1.18", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.1", "@testing-library/user-event": "^14.6.1", "@types/node": "^25.0.3", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.2", "@vitest/coverage-v8": "^4.0.16", "eslint": "^9.39.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.26", "husky": "^9.1.7", "jsdom": "^27.3.0", "knip": "^5.76.3", "lint-staged": "^16.2.7", "msw": "^2.12.4", "prettier": "^3.7.4", "prettier-plugin-tailwindcss": "^0.7.2", "pretty-quick": "^4.2.2", "tailwindcss": "4.1.18", "tw-animate-css": "^1.4.0", "typescript": "5.9.3", "typescript-eslint": "^8.50.1", "vite": "^7.3.0", "vitest": "^4.0.16" }, "msw": { "workerDirectory": [ "public" ] }, "lint-staged": { "*.{ts,tsx}": "eslint --fix" } }