{ "name": "raspiblesk-web", "version": "1.4.0", "license": "MIT", "type": "module", "author": { "name": "Christoph Stenglein", "email": "christoph@cstenglein.com", "url": "https://cstenglein.com/" }, "scripts": { "start": "vite", "dev": "npm run start", "dev:local": "concurrently \"npm run backend\" \"npm run start\"", "backend": "npm start --prefix ./backend-mock", "build": "vite build", "tsc": "tsc --noEmit", "test": "vitest run --exclude 'tests'", "test:watch": "vitest watch --exclude 'tests'", "coverage": "vitest run --coverage --exclude 'tests'", "prepare": "husky", "lint": "biome check src" }, "config": { "port": "3000" }, "lint-staged": { "{src}/**/*.{js,jsx,ts,tsx,json,css,scss,md}": [ "biome check --write" ] }, "dependencies": { "@bitcoin-design/bitcoin-icons-react": "^0.1.10", "@heroicons/react": "^2.2.0", "@heroui/react": "^2.8.2", "@heroui/system": "^2.4.20", "@heroui/theme": "^2.4.20", "@tailwindcss/vite": "^4.1.17", "axios": "^1.13.2", "framer-motion": "^12.23.12", "i18next": "^25.6.3", "qrcode.react": "^4.2.0", "react": "^19.1.1", "react-dom": "^19.1.1", "react-hook-form": "^7.66.1", "react-i18next": "^16.3.5", "react-router": "^7.9.6", "react-toastify": "^11.0.5", "react-tooltip": "^5.28.1", "tailwind-merge": "^3.4.0" }, "devDependencies": { "@biomejs/biome": "^2.3.7", "@playwright/test": "^1.52.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.3.0", "@testing-library/user-event": "^14.6.1", "@types/node": "^24.10.1", "@types/react": "^19.2.6", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^5.1.1", "@vitest/coverage-v8": "^4.0.12", "concurrently": "^9.1.2", "husky": "^9.1.7", "jsdom": "^27.2.0", "lint-staged": "^16.2.7", "msw": "^2.12.2", "resize-observer-polyfill": "^1.5.1", "tailwindcss": "^4.1.17", "typescript": "^5.9.3", "vite": "^7.2.4", "vite-plugin-svgr": "^4.3.0", "vite-tsconfig-paths": "^6.0.5", "vitest": "^4.0.12" } }