{ "name": "qitech-control-electron", "productName": "QiTech Control", "version": "1.0.0", "description": "", "main": ".vite/build/main.js", "private": true, "scripts": { "start": "electron-forge start", "package": "electron-forge package", "make": "electron-forge make", "publish": "electron-forge publish", "lint": "eslint .", "format": "prettier --check .", "format:write": "prettier --write .", "test": "vitest run", "test:watch": "vitest watch", "test:unit": "vitest", "test:e2e": "playwright test", "test:all": "vitest run && playwright test" }, "author": "", "devDependencies": { "@electron-forge/cli": "^7.6.1", "@electron-forge/maker-deb": "^7.6.1", "@electron-forge/maker-rpm": "^7.6.1", "@electron-forge/maker-squirrel": "^7.6.1", "@electron-forge/maker-zip": "^7.6.1", "@electron-forge/plugin-auto-unpack-natives": "^7.6.1", "@electron-forge/plugin-fuses": "^7.6.1", "@electron-forge/plugin-vite": "^7.6.1", "@electron-forge/shared-types": "^7.4.0", "@electron/fuses": "^1.8.0", "@eslint/compat": "^1.2.6", "@eslint/js": "^9.18.0", "@playwright/test": "^1.50.1", "@tailwindcss/postcss": "^4.0.6", "@testing-library/jest-dom": "^6.6.3", "@testing-library/react": "^16.2.0", "@testing-library/user-event": "^14.6.1", "@types/electron-squirrel-startup": "^1.0.2", "@types/eslint-config-prettier": "^6.11.3", "@types/node": "^22.13.4", "@types/react": "^19.0.10", "@types/react-dom": "^19.0.4", "electron": "34.0.2", "electron-devtools-installer": "^4.0.0", "electron-playwright-helpers": "^1.7.1", "eslint": "^9.20.1", "eslint-config-prettier": "^10.0.1", "eslint-plugin-prettier": "^5.2.3", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-compiler": "^19.0.0-beta-714736e-20250131", "globals": "^15.15.0", "jsdom": "^26.0.0", "postcss": "^8.5.2", "prettier": "^3.5.1", "prettier-plugin-tailwindcss": "^0.6.11", "tailwindcss": "^4.0.0", "ts-node": "^10.9.2", "typescript": "^5.7.3", "typescript-eslint": "^8.24.1", "vite": "^6.1.0", "vitest": "^3.0.6" }, "dependencies": { "@hookform/resolvers": "^4.1.2", "@icons-pack/react-simple-icons": "^11.2.0", "@radix-ui/react-dialog": "^1.1.6", "@radix-ui/react-label": "^2.1.2", "@radix-ui/react-navigation-menu": "^1.2.5", "@radix-ui/react-popover": "^1.1.6", "@radix-ui/react-select": "^2.1.6", "@radix-ui/react-separator": "^1.1.2", "@radix-ui/react-slider": "^1.2.3", "@radix-ui/react-slot": "^1.1.2", "@radix-ui/react-toggle": "^1.1.1", "@radix-ui/react-toggle-group": "^1.1.2", "@tanstack/react-query": "^5.66.7", "@tanstack/react-router": "^1.105.0", "@tanstack/react-table": "^8.21.2", "@tanstack/router-devtools": "^1.105.0", "@vitejs/plugin-react": "^4.3.4", "babel-plugin-react-compiler": "^19.0.0-beta-714736e-20250131", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "electron-squirrel-startup": "^1.0.1", "i18next": "^24.2.2", "immer": "^10.1.1", "lucide-react": "^0.475.0", "next-themes": "^0.4.4", "react": "^19.0.0", "react-dom": "^19.0.0", "react-hook-form": "^7.54.2", "react-i18next": "^15.4.1", "socket.io-client": "^4.8.1", "sonner": "^2.0.1", "tailwind-merge": "^3.0.1", "tailwindcss-animate": "^1.0.7", "zod": "^3.24.2", "zod-validation-error": "^3.4.0", "zustand": "^5.0.3" } }