{ "name": "@janhq/web-app", "private": true, "version": "0.6.6", "type": "module", "scripts": { "dev": "vite", "build": "tsc -b && vite build", "lint": "eslint .", "preview": "vite preview", "test": "vitest --run", "test:coverage": "vitest --coverage --run", "dev:web": "vite --config vite.config.web.ts", "build:web": "yarn tsc -b tsconfig.web.json && vite build --config vite.config.web.ts", "preview:web": "vite preview --config vite.config.web.ts --outDir dist-web", "serve:web": "npx serve dist-web -p 3001 -s", "serve:web:alt": "npx http-server dist-web -p 3001 --proxy http://localhost:3001? -o", "build:serve:web": "yarn build:web && yarn serve:web" }, "dependencies": { "@dnd-kit/core": "6.3.1", "@dnd-kit/modifiers": "9.0.0", "@dnd-kit/sortable": "10.0.0", "@jan/extensions-web": "workspace:*", "@janhq/core": "workspace:*", "@radix-ui/react-accordion": "1.2.11", "@radix-ui/react-avatar": "1.1.10", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-dropdown-menu": "2.1.16", "@radix-ui/react-hover-card": "1.1.14", "@radix-ui/react-popover": "1.1.14", "@radix-ui/react-progress": "1.1.4", "@radix-ui/react-radio-group": "1.3.8", "@radix-ui/react-slider": "1.3.2", "@radix-ui/react-slot": "1.2.0", "@radix-ui/react-switch": "1.2.2", "@radix-ui/react-tooltip": "1.2.4", "@tabler/icons-react": "3.34.0", "@tailwindcss/vite": "4.1.4", "@tanstack/react-router": "1.117.0", "@tanstack/react-router-devtools": "1.121.34", "@tanstack/react-virtual": "3.13.12", "@tauri-apps/api": "2.8.0", "@tauri-apps/plugin-deep-link": "2.4.3", "@tauri-apps/plugin-dialog": "2.2.2", "@tauri-apps/plugin-http": "2.5.0", "@tauri-apps/plugin-opener": "2.3.0", "@tauri-apps/plugin-os": "2.2.1", "@tauri-apps/plugin-updater": "2.8.1", "@types/react-syntax-highlighter": "15.5.13", "@types/uuid": "10.0.0", "@uiw/react-textarea-code-editor": "3.1.1", "class-variance-authority": "0.7.1", "culori": "4.0.1", "emoji-picker-react": "4.12.2", "framer-motion": "12.23.12", "fuse.js": "7.1.0", "fzf": "0.5.2", "i18next": "25.0.2", "katex": "0.16.22", "lodash.clonedeep": "4.5.0", "lodash.debounce": "4.0.8", "lucide-react": "0.536.0", "motion": "12.18.1", "next-themes": "0.4.6", "posthog-js": "1.255.1", "react": "19.0.0", "react-colorful": "5.6.1", "react-dom": "19.0.0", "react-i18next": "15.5.1", "react-joyride": "2.9.3", "react-markdown": "10.1.0", "react-resizable-panels": "3.0.5", "react-syntax-highlighter": "15.6.1", "react-syntax-highlighter-virtualized-renderer": "1.1.0", "react-textarea-autosize": "8.5.9", "rehype-katex": "7.0.1", "rehype-raw": "7.0.0", "remark-breaks": "4.0.0", "remark-emoji": "5.0.1", "remark-gfm": "4.0.1", "remark-math": "6.0.0", "sonner": "2.0.5", "tailwindcss": "4.1.4", "token.js": "npm:token.js-fork@0.7.29", "tw-animate-css": "1.2.8", "ulidx": "2.4.1", "unified": "11.0.5", "uuid": "11.1.0", "vaul": "1.1.2", "zustand": "5.0.3" }, "devDependencies": { "@eslint/js": "8.57.0", "@tanstack/router-plugin": "1.117.0", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.8.0", "@testing-library/react": "16.3.0", "@testing-library/user-event": "14.6.1", "@types/culori": "2.1.1", "@types/istanbul-lib-report": "3.0.3", "@types/istanbul-reports": "3.0.4", "@types/lodash.clonedeep": "4.5.9", "@types/lodash.debounce": "4.0.9", "@types/node": "22.14.1", "@types/react": "19.1.2", "@types/react-dom": "19.1.2", "@vitejs/plugin-react": "4.4.1", "@vitest/coverage-v8": "3.2.4", "clsx": "2.1.1", "eslint": "9.25.1", "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-react-refresh": "0.4.20", "globals": "16.0.0", "istanbul-api": "3.0.0", "istanbul-lib-coverage": "2.0.5", "istanbul-lib-report": "2.0.8", "istanbul-reports": "3.1.7", "jsdom": "26.1.0", "serve": "14.2.5", "tailwind-merge": "3.3.1", "typescript": "5.9.2", "typescript-eslint": "8.31.0", "vite": "6.3.2", "vite-plugin-node-polyfills": "0.23.0", "vite-plugin-pwa": "1.0.3", "vitest": "3.2.4" } }