mirror of
https://github.com/warmbly/warmbly.git
synced 2026-10-03 08:02:04 +00:00
feat: rebuild two-factor setup in Settings > Security as a three-step wizard with a QR code, manual setup key and TOTP parameters, inline code errors, and recovery codes with download, copy and print; show enable date and remaining recovery codes, add POST /auth/2fa/recovery-codes to regenerate them, return two_fa_invalid_code on a mismatched code, and update the security guide, API reference, error codes and OpenAPI
134 lines
4.8 KiB
JSON
134 lines
4.8 KiB
JSON
{
|
|
"name": "vite-project",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"typecheck": "tsc -b",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"preview": "vite preview",
|
|
"test": "vitest",
|
|
"test:run": "vitest run",
|
|
"test:coverage": "vitest run --coverage",
|
|
"build:pages": "vite build && pnpm sourcemaps:maybe && WARMBLY_CONFIG_OUT=dist/config.js sh ./docker-entrypoint.sh",
|
|
"sourcemaps:posthog": "pnpm dlx @posthog/cli@0.18.2 sourcemap inject --directory dist && pnpm dlx @posthog/cli@0.18.2 sourcemap upload --directory dist --delete-after",
|
|
"sourcemaps:maybe": "sh -c 'if [ -n \"$POSTHOG_CLI_PROJECT_ID\" ] && [ -n \"$POSTHOG_CLI_API_KEY\" ]; then pnpm sourcemaps:posthog; else echo \"no PostHog CLI credentials; skipping the source map upload\"; fi'"
|
|
},
|
|
"dependencies": {
|
|
"@dagrejs/dagre": "^3.1.1",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@floating-ui/dom": "^1.8.0",
|
|
"@fontsource/inter": "^5.3.0",
|
|
"@fontsource/poppins": "^5.3.0",
|
|
"@hookform/resolvers": "^5.9.1",
|
|
"@radix-ui/react-accordion": "^1.2.20",
|
|
"@radix-ui/react-alert-dialog": "^1.1.23",
|
|
"@radix-ui/react-avatar": "^1.2.6",
|
|
"@radix-ui/react-checkbox": "^1.3.11",
|
|
"@radix-ui/react-collapsible": "^1.1.20",
|
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
"@radix-ui/react-hover-card": "^1.1.23",
|
|
"@radix-ui/react-label": "^2.1.15",
|
|
"@radix-ui/react-popover": "^1.1.23",
|
|
"@radix-ui/react-progress": "^1.1.16",
|
|
"@radix-ui/react-scroll-area": "^1.2.18",
|
|
"@radix-ui/react-select": "^2.3.7",
|
|
"@radix-ui/react-separator": "^1.1.15",
|
|
"@radix-ui/react-slot": "^1.3.3",
|
|
"@radix-ui/react-switch": "^1.3.7",
|
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
"@radix-ui/react-toggle": "^1.1.18",
|
|
"@radix-ui/react-toggle-group": "^1.1.19",
|
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
"@remixicon/react": "^4.9.0",
|
|
"@sentry/react": "^10.75.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@tailwindcss/vite": "^4.3.3",
|
|
"@tanstack/react-query": "^5.103.1",
|
|
"@tanstack/react-query-devtools": "^5.103.1",
|
|
"@tiptap/core": "^3.31.3",
|
|
"@tiptap/extension-bold": "^3.31.3",
|
|
"@tiptap/extension-color": "^3.31.3",
|
|
"@tiptap/extension-document": "^3.31.3",
|
|
"@tiptap/extension-hard-break": "^3.31.3",
|
|
"@tiptap/extension-heading": "^3.31.3",
|
|
"@tiptap/extension-highlight": "^3.31.3",
|
|
"@tiptap/extension-image": "^3.31.3",
|
|
"@tiptap/extension-italic": "^3.31.3",
|
|
"@tiptap/extension-link": "^3.31.3",
|
|
"@tiptap/extension-list": "^3.31.3",
|
|
"@tiptap/extension-list-item": "^3.31.3",
|
|
"@tiptap/extension-paragraph": "^3.31.3",
|
|
"@tiptap/extension-strike": "^3.31.3",
|
|
"@tiptap/extension-subscript": "^3.31.3",
|
|
"@tiptap/extension-superscript": "^3.31.3",
|
|
"@tiptap/extension-table": "^3.31.3",
|
|
"@tiptap/extension-text": "^3.31.3",
|
|
"@tiptap/extension-text-style": "^3.31.3",
|
|
"@tiptap/extension-underline": "^3.31.3",
|
|
"@tiptap/extensions": "^3.31.3",
|
|
"@tiptap/pm": "^3.31.3",
|
|
"@tiptap/react": "^3.31.3",
|
|
"@types/papaparse": "^5.5.2",
|
|
"@xyflow/react": "^12.11.6",
|
|
"@zxcvbn-ts/core": "^3.0.4",
|
|
"@zxcvbn-ts/language-common": "^3.0.4",
|
|
"@zxcvbn-ts/language-en": "^3.0.2",
|
|
"axios": "^1.20.0",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"date-fns": "^4.4.0",
|
|
"dompurify": "^3.4.15",
|
|
"framer-motion": "^12.43.0",
|
|
"html-to-image": "^1.11.13",
|
|
"immer": "^11.1.18",
|
|
"input-otp": "^1.5.0",
|
|
"lucide-react": "^0.563.0",
|
|
"motion": "^12.43.0",
|
|
"next-themes": "^0.4.6",
|
|
"papaparse": "^5.7.0",
|
|
"posthog-js": "^1.434.0",
|
|
"qrcode.react": "4.2.0",
|
|
"react": "^19.3.0",
|
|
"react-dom": "^19.3.0",
|
|
"react-hook-form": "^7.88.0",
|
|
"react-hot-toast": "^2.6.1",
|
|
"react-router-dom": "^7.18.4",
|
|
"react-turnstile": "^1.1.5",
|
|
"sonner": "^2.0.8",
|
|
"tailwind-merge": "^3.7.0",
|
|
"tailwindcss": "^4.3.3",
|
|
"tailwindv4-colors": "^1.0.1",
|
|
"zod": "^4.6.5",
|
|
"zustand": "^5.0.15"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^9.39.5",
|
|
"@sentry/vite-plugin": "^5.4.0",
|
|
"@testing-library/jest-dom": "^6.10.0",
|
|
"@testing-library/react": "^16.3.3",
|
|
"@types/node": "^24.13.5",
|
|
"@types/react": "^19.3.0",
|
|
"@types/react-dom": "^19.3.0",
|
|
"@vitejs/plugin-react": "^5.2.0",
|
|
"@vitest/coverage-v8": "^4.1.11",
|
|
"eslint": "^9.39.5",
|
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
"eslint-plugin-react-refresh": "^0.4.26",
|
|
"globals": "^16.5.0",
|
|
"jsdom": "^27.4.0",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "~5.9.3",
|
|
"typescript-eslint": "^8.70.0",
|
|
"vite": "^7.3.6",
|
|
"vitest": "^4.1.11"
|
|
}
|
|
}
|