Installs Storybook 10.4 in apps/app/ as a component-development and autodoc tool. Configures viteFinal with all seven SPA aliases so stories resolve imports identically to the dev/build pipeline. preview.ts reuses @/plugins/primevue's installPrimeVue() so Storybook stays in lock-step with main.ts whenever the PrimeVue config changes. Only the addons we need are wired: addon-docs (autodocs) and addon-a11y (axe-core checks). addon-interactions is intentionally omitted — interaction testing stays in Playwright CT per the testing architecture. Seed stories: PrimeVue Button (Primary/Secondary/Danger), Tailwind utility box, and FormField (Default/WithError/Disabled) wrapped in @primevue/forms Form + Zod resolver. Adds make storybook target alongside make app / make docs.
192 lines
6.4 KiB
JSON
192 lines
6.4 KiB
JSON
{
|
|
"name": "crewli-app",
|
|
"version": "9.5.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"build": "vite build",
|
|
"preview": "vite preview --port 5050",
|
|
"typecheck": "vue-tsc --noEmit",
|
|
"lint": "eslint . -c .eslintrc.cjs --ext .ts,.js,.cjs,.vue,.tsx,.jsx",
|
|
"lint:fix": "eslint . -c .eslintrc.cjs --fix --ext .ts,.js,.cjs,.vue,.tsx,.jsx",
|
|
"build:icons": "tsx src/plugins/iconify/build-icons.ts",
|
|
"msw:init": "msw init public/ --save",
|
|
"postinstall": "npm run build:icons && npm run msw:init",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:component": "playwright test --config=playwright-ct.config.ts",
|
|
"test:e2e": "playwright test --config=playwright.config.ts",
|
|
"test:visual": "playwright test --config=playwright-ct.config.ts --grep @visual",
|
|
"test:visual:update": "playwright test --config=playwright-ct.config.ts --grep @visual --update-snapshots",
|
|
"storybook": "storybook dev --port 6006",
|
|
"build-storybook": "storybook build --output-dir storybook-static"
|
|
},
|
|
"dependencies": {
|
|
"@casl/ability": "6.7.3",
|
|
"@casl/vue": "2.2.2",
|
|
"@floating-ui/dom": "1.6.8",
|
|
"@primeuix/themes": "^2.0.3",
|
|
"@primevue/forms": "^4.5.5",
|
|
"@sentry/vue": "10.52.0",
|
|
"@sindresorhus/is": "7.1.0",
|
|
"@tailwindcss/vite": "^4.3.0",
|
|
"@tanstack/vue-query": "^5.95.2",
|
|
"@tiptap/extension-highlight": "^2.27.1",
|
|
"@tiptap/extension-image": "^2.27.1",
|
|
"@tiptap/extension-link": "^2.27.1",
|
|
"@tiptap/extension-text-align": "^2.27.1",
|
|
"@tiptap/pm": "^2.27.1",
|
|
"@tiptap/starter-kit": "^2.27.1",
|
|
"@tiptap/vue-3": "^2.27.1",
|
|
"@vueuse/core": "10.11.1",
|
|
"@vueuse/math": "10.11.1",
|
|
"apexcharts": "3.54.1",
|
|
"axios": "^1.15.0",
|
|
"chart.js": "4.5.1",
|
|
"cookie-es": "1.2.2",
|
|
"destr": "2.0.5",
|
|
"eslint-plugin-regexp": "2.10.0",
|
|
"flatpickr": "^4.6.13",
|
|
"jwt-decode": "4.0.0",
|
|
"mapbox-gl": "3.5.2",
|
|
"ofetch": "1.5.0",
|
|
"pinia": "3.0.3",
|
|
"primelocale": "^1.6.0",
|
|
"primevue": "^4.5.5",
|
|
"prismjs": "1.30.0",
|
|
"qrcode": "^1.5.4",
|
|
"roboto-fontface": "0.10.0",
|
|
"shepherd.js": "13.0.3",
|
|
"tailwindcss": "^4.3.0",
|
|
"tailwindcss-primeui": "^0.6.1",
|
|
"ufo": "1.6.1",
|
|
"unplugin-vue-define-options": "1.5.5",
|
|
"vue": "3.5.22",
|
|
"vue-chartjs": "5.3.2",
|
|
"vue-flatpickr-component": "11.0.5",
|
|
"vue-i18n": "11.1.12",
|
|
"vue-prism-component": "2.0.0",
|
|
"vue-router": "4.5.1",
|
|
"vue3-apexcharts": "1.5.3",
|
|
"vue3-perfect-scrollbar": "2.0.0",
|
|
"vuedraggable": "^4.1.0",
|
|
"vuetify": "3.10.8",
|
|
"webfontloader": "1.6.28",
|
|
"zod": "3"
|
|
},
|
|
"devDependencies": {
|
|
"@antfu/eslint-config-basic": "0.43.1",
|
|
"@antfu/eslint-config-ts": "0.43.1",
|
|
"@antfu/eslint-config-vue": "0.43.1",
|
|
"@antfu/utils": "0.7.10",
|
|
"@axe-core/playwright": "^4.11.3",
|
|
"@fullcalendar/core": "6.1.19",
|
|
"@fullcalendar/daygrid": "6.1.19",
|
|
"@fullcalendar/interaction": "6.1.19",
|
|
"@fullcalendar/list": "6.1.19",
|
|
"@fullcalendar/timegrid": "6.1.19",
|
|
"@fullcalendar/vue3": "6.1.19",
|
|
"@iconify-json/fa": "1.2.2",
|
|
"@iconify-json/mdi": "1.2.3",
|
|
"@iconify-json/tabler": "1.2.23",
|
|
"@iconify/tools": "4.1.4",
|
|
"@iconify/types": "^2.0.0",
|
|
"@iconify/utils": "2.3.0",
|
|
"@iconify/vue": "4.1.2",
|
|
"@intlify/unplugin-vue-i18n": "11.0.1",
|
|
"@pinia/testing": "^1.0.3",
|
|
"@playwright/experimental-ct-vue": "^1.59.1",
|
|
"@playwright/test": "^1.59.1",
|
|
"@storybook/addon-a11y": "^10.4.0",
|
|
"@storybook/addon-docs": "^10.4.0",
|
|
"@storybook/vue3-vite": "^10.4.0",
|
|
"@stylistic/eslint-plugin-js": "0.0.4",
|
|
"@stylistic/eslint-plugin-ts": "0.0.4",
|
|
"@stylistic/stylelint-config": "1.0.1",
|
|
"@stylistic/stylelint-plugin": "2.1.3",
|
|
"@testing-library/vue": "^8.1.0",
|
|
"@tiptap/extension-character-count": "^2.27.1",
|
|
"@tiptap/extension-placeholder": "^2.27.1",
|
|
"@tiptap/extension-subscript": "^2.27.1",
|
|
"@tiptap/extension-superscript": "^2.27.1",
|
|
"@tiptap/extension-underline": "^2.27.1",
|
|
"@total-typescript/ts-reset": "^0.6.1",
|
|
"@types/mapbox-gl": "3.4.1",
|
|
"@types/node": "24.9.2",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/webfontloader": "1.6.38",
|
|
"@typescript-eslint/eslint-plugin": "7.18.0",
|
|
"@typescript-eslint/parser": "7.18.0",
|
|
"@vitejs/plugin-vue": "6.0.1",
|
|
"@vitejs/plugin-vue-jsx": "5.1.1",
|
|
"@vue/compiler-dom": "^3.5.34",
|
|
"@vue/test-utils": "^2.4.9",
|
|
"axe-core": "^4.11.4",
|
|
"baseline-browser-mapping": "^2.10.16",
|
|
"eslint": "8.57.1",
|
|
"eslint-config-airbnb-base": "15.0.0",
|
|
"eslint-import-resolver-typescript": "3.10.1",
|
|
"eslint-plugin-antfu": "0.43.1",
|
|
"eslint-plugin-boundaries": "6.0.2",
|
|
"eslint-plugin-case-police": "0.6.1",
|
|
"eslint-plugin-es-x": "7.8.0",
|
|
"eslint-plugin-eslint-comments": "3.2.0",
|
|
"eslint-plugin-html": "7.1.0",
|
|
"eslint-plugin-i": "2.28.1",
|
|
"eslint-plugin-import": "2.32.0",
|
|
"eslint-plugin-jest": "27.9.0",
|
|
"eslint-plugin-jsdoc": "46.10.1",
|
|
"eslint-plugin-jsonc": "2.21.0",
|
|
"eslint-plugin-markdown": "3.0.1",
|
|
"eslint-plugin-n": "16.6.2",
|
|
"eslint-plugin-no-only-tests": "3.3.0",
|
|
"eslint-plugin-promise": "6.6.0",
|
|
"eslint-plugin-regex": "1.10.0",
|
|
"eslint-plugin-sonarjs": "0.24.0",
|
|
"eslint-plugin-unicorn": "51.0.1",
|
|
"eslint-plugin-unused-imports": "3.2.0",
|
|
"eslint-plugin-vue": "9.33.0",
|
|
"eslint-plugin-yml": "1.19.0",
|
|
"happy-dom": "^20.9.0",
|
|
"jsdom": "^29.1.1",
|
|
"msw": "2.6.8",
|
|
"postcss-html": "1.8.0",
|
|
"postcss-scss": "4.0.9",
|
|
"sass": "1.76.0",
|
|
"shiki": "1.29.2",
|
|
"storybook": "^10.4.0",
|
|
"stylelint": "16.8.0",
|
|
"stylelint-config-idiomatic-order": "10.0.0",
|
|
"stylelint-config-standard-scss": "13.1.0",
|
|
"stylelint-use-logical-spec": "5.0.1",
|
|
"tsx": "4.20.6",
|
|
"type-fest": "5.1.0",
|
|
"typescript": "5.9.3",
|
|
"unplugin-auto-import": "0.18.6",
|
|
"unplugin-vue-components": "0.27.5",
|
|
"unplugin-vue-router": "0.8.8",
|
|
"vite": "7.1.12",
|
|
"vite-plugin-vue-devtools": "8.0.2",
|
|
"vite-plugin-vue-meta-layouts": "0.6.1",
|
|
"vite-plugin-vuetify": "2.1.2",
|
|
"vite-svg-loader": "5.1.0",
|
|
"vitest": "^4.1.5",
|
|
"vitest-axe": "^0.1.0",
|
|
"vue-eslint-parser": "9.4.3",
|
|
"vue-shepherd": "3.0.0",
|
|
"vue-tsc": "3.1.2"
|
|
},
|
|
"resolutions": {
|
|
"postcss": "^8",
|
|
"@tiptap/core": "^2"
|
|
},
|
|
"overrides": {
|
|
"postcss": "^8",
|
|
"@tiptap/core": "^2"
|
|
},
|
|
"msw": {
|
|
"workerDirectory": "public"
|
|
}
|
|
}
|