feat: add guided onboarding tour

- install driver.js and add 9-step tour covering libraries, lenses,
  collections, search, statistics, appearance, upload, and book bucket
- first step context-aware: points to welcome card on first run, falls
  back to settings nav when libraries already exist
- tour state persisted in user.settings JSONB, survives across devices
- skip on mobile; any dismissal (skip or done) marks tour complete
- theme the tour popover with app design tokens (card, primary, radius)
- add "Take the tour again" button in Settings > Account (desktop only)
This commit is contained in:
neon
2026-04-14 02:54:08 -06:00
parent ad46061db7
commit 0bf0a5b9fa
10 changed files with 370 additions and 18 deletions
+5 -4
View File
@@ -32,12 +32,13 @@
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"dompurify": "^3.3.3",
"driver.js": "^1.4.0",
"echarts": "^6.0.0",
"howler": "^2.2.4",
"lucide-vue-next": "^1.0.0",
"pdfjs-dist": "^5.6.205",
"pinia": "^3.0.4",
"reka-ui": "^2.9.5",
"reka-ui": "^2.9.6",
"socket.io-client": "^4.8.3",
"tailwind-merge": "^3.5.0",
"tailwindcss": "^4.2.2",
@@ -53,7 +54,7 @@
"@types/dompurify": "^3.2.0",
"@types/jsdom": "^28.0.1",
"@types/node": "^25.6.0",
"@vitejs/plugin-vue": "^6.0.5",
"@vitejs/plugin-vue": "^6.0.6",
"@vitest/coverage-v8": "^4.1.4",
"@vitest/eslint-plugin": "^1.6.15",
"@vue/eslint-config-typescript": "^14.7.0",
@@ -61,12 +62,12 @@
"@vue/tsconfig": "^0.9.1",
"eslint": "^10.2.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.59.0",
"eslint-plugin-oxlint": "~1.60.0",
"eslint-plugin-vue": "~10.8.0",
"jiti": "^2.6.1",
"jsdom": "^29.0.2",
"npm-run-all2": "^8.0.4",
"oxlint": "~1.59.0",
"oxlint": "~1.60.0",
"prettier": "3.8.2",
"tw-animate-css": "^1.4.0",
"typescript": "~5.9.3",