Chilled color scheme as swappable tokens, Fredoka wordmark with a configurable tagline, genre categories, search and random hotkeys. The homepage offers a Game of the Day, a Time Machine with a date picker, recently played games and Flashpoint playlist shelves. Mature games are hidden unless opted in from the user menu, stored in the browser and the account. Browse lists default to a seeded shuffle and accept release date ranges.
95 lines
3.2 KiB
JSON
95 lines
3.2 KiB
JSON
{
|
|
"name": "flashpoint-web-frontend",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "tsc && vite build",
|
|
"build:analyze": "VITE_ANALYZE=true tsc && vite build",
|
|
"preview": "vite preview",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest run --coverage",
|
|
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
|
|
"typecheck": "tsc --noEmit",
|
|
"format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,css,json}\"",
|
|
"format:check": "prettier --check \"src/**/*.{ts,tsx,js,jsx,css,json}\"",
|
|
"check-bundle": "VITE_ANALYZE=true vite build"
|
|
},
|
|
"dependencies": {
|
|
"@fontsource-variable/fredoka": "^5.3.0",
|
|
"@hookform/resolvers": "^5.2.2",
|
|
"@radix-ui/react-alert-dialog": "^1.1.15",
|
|
"@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-dropdown-menu": "^2.1.16",
|
|
"@radix-ui/react-label": "^2.1.8",
|
|
"@radix-ui/react-popover": "^1.1.15",
|
|
"@radix-ui/react-radio-group": "^1.3.8",
|
|
"@radix-ui/react-scroll-area": "^1.2.10",
|
|
"@radix-ui/react-select": "^2.2.6",
|
|
"@radix-ui/react-separator": "^1.1.8",
|
|
"@radix-ui/react-slot": "^1.2.4",
|
|
"@radix-ui/react-switch": "^1.2.6",
|
|
"@radix-ui/react-tabs": "^1.1.13",
|
|
"@radix-ui/react-toast": "^1.2.15",
|
|
"@radix-ui/react-toggle": "^1.1.10",
|
|
"@radix-ui/react-toggle-group": "^1.1.11",
|
|
"@radix-ui/react-tooltip": "^1.2.8",
|
|
"@tanstack/react-query": "^5.28.9",
|
|
"@tanstack/react-table": "^8.21.3",
|
|
"@tanstack/react-virtual": "^3.13.18",
|
|
"axios": "^1.6.8",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.0",
|
|
"date-fns": "^3.6.0",
|
|
"framer-motion": "^12.27.0",
|
|
"lucide-react": "^0.358.0",
|
|
"lz-string": "^1.5.0",
|
|
"react": "^18.3.1",
|
|
"react-day-picker": "^9.13.0",
|
|
"react-dom": "^18.3.1",
|
|
"react-hook-form": "^7.71.1",
|
|
"react-markdown": "^10.1.0",
|
|
"react-router-dom": "^6.22.3",
|
|
"recharts": "^3.6.0",
|
|
"remark-gfm": "^4.0.1",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.4.0",
|
|
"tailwindcss-animate": "^1.0.7",
|
|
"zod": "^4.3.5",
|
|
"zustand": "^4.5.2"
|
|
},
|
|
"devDependencies": {
|
|
"@tailwindcss/typography": "^0.5.19",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/lz-string": "^1.3.34",
|
|
"@types/react": "^18.2.66",
|
|
"@types/react-dom": "^18.2.22",
|
|
"@typescript-eslint/eslint-plugin": "^7.2.0",
|
|
"@typescript-eslint/parser": "^7.2.0",
|
|
"@vitejs/plugin-react": "^4.2.1",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"@vitest/ui": "^4.0.18",
|
|
"autoprefixer": "^10.4.19",
|
|
"eslint": "^8.57.0",
|
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
"eslint-plugin-react-refresh": "^0.4.6",
|
|
"fake-indexeddb": "^6.2.5",
|
|
"jsdom": "^27.4.0",
|
|
"msw": "^2.12.7",
|
|
"postcss": "^8.4.38",
|
|
"rollup-plugin-visualizer": "^6.0.5",
|
|
"tailwindcss": "^3.4.1",
|
|
"typescript": "^5.4.2",
|
|
"vite": "^5.2.0",
|
|
"vitest": "^4.0.18"
|
|
}
|
|
}
|