Files
bookorbit/client/package.json
T
neon 515f7b89e9 feat(client): redesign sidebar navigation, settings, and user management
Rework the app shell around a customizable sidebar: reorderable sections, sidebar zones, entity
popovers, and per-user preference persistence, backed by a dedicated browse counts endpoint so
entity totals stay cheap on large libraries.

Redesign the file naming settings with pattern fields, a token helper sheet, and a debounced live
preview. Rebuild the admin users table with server-side pagination, search, and filter DTOs, status
pills, confirmation dialogs, and magic link actions. Group notification preferences by category and
refine the account and privacy settings layouts.

Update theme tokens, icon references, and template event handler bindings across client features for
consistency, extend all locale catalogs, and add unit coverage for the new composables, components,
and server modules.
2026-07-28 16:12:36 +00:00

130 lines
4.3 KiB
JSON

{
"name": "client",
"version": "0.0.0",
"description": "BookOrbit client - self-hosted library management and reading platform",
"author": "neonsolstice",
"private": true,
"license": "AGPL-3.0",
"homepage": "https://bookorbit.app",
"repository": {
"type": "git",
"url": "https://github.com/bookorbit/bookorbit"
},
"bugs": {
"url": "https://github.com/bookorbit/bookorbit/issues"
},
"type": "module",
"scripts": {
"dev": "vite",
"build": "run-p type-check \"build-only {@}\" --",
"preview": "vite preview",
"test:unit": "vitest",
"test:cov": "vitest --coverage",
"build-only": "vite build",
"pretype-check": "pnpm --filter @bookorbit/types build",
"type-check": "vue-tsc --build",
"lint": "pnpm run lint:check",
"lint:check": "run-s validate:locales validate:styles lint:oxlint:check lint:eslint:check",
"lint:fix": "run-s lint:oxlint:fix lint:eslint:fix",
"lint:oxlint:check": "oxlint src",
"lint:oxlint:fix": "oxlint src --fix",
"lint:eslint:check": "eslint src --cache",
"lint:eslint:fix": "eslint src --fix --cache",
"validate:locales": "node ./scripts/validate-locales.mjs",
"validate:styles": "node ./scripts/validate-styles.mjs",
"format": "prettier --write --experimental-cli src/",
"format:check": "prettier --check src/",
"generate-pwa-icons": "pwa-assets-generator --config pwa-assets.config.ts"
},
"dependencies": {
"@bookorbit/types": "workspace:*",
"@embedpdf/core": "2.14.4",
"@embedpdf/engines": "2.14.4",
"@embedpdf/models": "2.14.4",
"@embedpdf/pdfium": "2.14.4",
"@embedpdf/plugin-annotation": "2.14.4",
"@embedpdf/plugin-bookmark": "2.14.4",
"@embedpdf/plugin-document-manager": "2.14.4",
"@embedpdf/plugin-history": "2.14.4",
"@embedpdf/plugin-interaction-manager": "2.14.4",
"@embedpdf/plugin-pan": "2.14.4",
"@embedpdf/plugin-render": "2.14.4",
"@embedpdf/plugin-rotate": "2.14.4",
"@embedpdf/plugin-scroll": "2.14.4",
"@embedpdf/plugin-search": "2.14.4",
"@embedpdf/plugin-selection": "2.14.4",
"@embedpdf/plugin-spread": "2.14.4",
"@embedpdf/plugin-thumbnail": "2.14.4",
"@embedpdf/plugin-tiling": "2.14.4",
"@embedpdf/plugin-viewport": "2.14.4",
"@embedpdf/plugin-zoom": "2.14.4",
"@fontsource-variable/fraunces": "^5.3.0",
"@fontsource-variable/inter": "^5.3.0",
"@formatjs/icu-messageformat-parser": "^3.5.15",
"@lucide/vue": "1.24.0",
"@tailwindcss/vite": "^4.3.3",
"@tanstack/vue-table": "^8.21.3",
"@tanstack/vue-virtual": "^3.13.34",
"@tiptap/extension-link": "^3.29.0",
"@tiptap/pm": "^3.29.0",
"@tiptap/starter-kit": "^3.29.0",
"@tiptap/vue-3": "^3.29.0",
"@types/howler": "^2.2.13",
"@vueuse/core": "^14.3.0",
"canvas-confetti": "^1.9.4",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cronstrue": "^3.24.0",
"dompurify": "^3.4.12",
"driver.js": "^1.8.0",
"echarts": "^6.1.0",
"howler": "^2.2.4",
"intl-messageformat": "^11.2.12",
"pinia": "^3.0.4",
"reka-ui": "^2.10.1",
"socket.io-client": "^4.8.3",
"tailwind-merge": "^3.6.0",
"tailwindcss": "^4.3.3",
"vite-plugin-pwa": "^1.3.0",
"vue": "^3.5.40",
"vue-draggable-plus": "^0.6.1",
"vue-echarts": "8.1.0-beta.2",
"vue-i18n": "^11.4.8",
"vue-router": "^5.2.0",
"vue-sonner": "^2.0.9",
"vue-virtual-scroller": "^3.0.4"
},
"devDependencies": {
"@intlify/message-compiler": "^11.4.8",
"@tsconfig/node24": "^24.0.4",
"@types/canvas-confetti": "^1.9.0",
"@types/jsdom": "^28.0.3",
"@types/node": "^26.1.1",
"@vite-pwa/assets-generator": "^1.0.2",
"@vitejs/plugin-vue": "^6.0.8",
"@vitest/coverage-v8": "^4.1.10",
"@vitest/eslint-plugin": "^1.6.24",
"@vue/eslint-config-typescript": "^14.9.0",
"@vue/test-utils": "^2.4.11",
"@vue/tsconfig": "^0.9.1",
"eslint": "^10.8.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-oxlint": "~1.73.0",
"eslint-plugin-vue": "~10.9.2",
"jiti": "^2.7.0",
"jsdom": "^29.1.1",
"npm-run-all2": "^9.0.2",
"oxlint": "~1.73.0",
"prettier": "3.9.5",
"tw-animate-css": "^1.4.0",
"typescript": "~6.0.3",
"vite": "^8.1.5",
"vite-plugin-vue-devtools": "^8.2.1",
"vitest": "^4.1.10",
"vue-tsc": "^3.3.8"
},
"engines": {
"node": "^20.19.0 || >=22.12.0"
}
}