diff --git a/.cursorrules b/.cursorrules index 2fb568aa..a9ccab07 100644 --- a/.cursorrules +++ b/.cursorrules @@ -1,7 +1,11 @@ # Crewli Cursor Rules +> Migration phase: this file is updated in F2 of RFC-WS-FRONTEND-PRIMEVUE +> and continues to evolve as F4 progresses. Authoritative UI-framework +> reference is `dev-docs/PRIMEVUE_COMPONENTS.md`. + ## Stack -PHP 8.2 + Laravel 12 | TypeScript + Vue 3 + Vuexy/Vuetify | Pinia + TanStack Query +PHP 8.2 + Laravel 12 | TypeScript + Vue 3 + PrimeVue + Tailwind v4 (target) / Vuetify (legacy, un-migrated surfaces) | Pinia + TanStack Query ## Laravel - Resource controllers, form requests, API resources — always @@ -9,15 +13,22 @@ PHP 8.2 + Laravel 12 | TypeScript + Vue 3 + Vuexy/Vuetify | Pinia + TanStack Que - Global scope `OrganisationScope` on event-related models - Policies for authorization — never inline role checks -## Vuexy reference path (mandatory) -- When looking at Vuexy examples, demos, or patterns, ALWAYS reference: +## UI framework strategy (migration-aware) +- Always read `dev-docs/PRIMEVUE_COMPONENTS.md` first — it's the authoritative reference for component selection, theming, forms, and DataTable conventions +- On migrated / new surfaces: PrimeVue + Tailwind v4; forms via `@primevue/forms` + Zod resolver through `` (RFC-WS-FRONTEND-PRIMEVUE Appendix A) +- On un-migrated surfaces (during F4): match surrounding Vuetify code; pre-F2 Vuexy reference recoverable via `git show 1c449ff6204cae6371da08c34ea8934d6b2ffcb8:dev-docs/VUEXY_COMPONENTS.md` +- Never mix PrimeVue and Vuetify inside one form or one surface ("no back-porting") + +## Vuexy reference path (legacy surfaces only) +- When extending an un-migrated surface, the Vuexy template reference is at: `resources/vuexy-admin-v10.11.1/vue-version/typescript-version/full-version/` - Never reference `javascript-version/` or `starter-kit/` variants ## Vue 3 - `