diff --git a/.cursor/rules/101_vue.mdc b/.cursor/rules/101_vue.mdc index 9235c9ec..4aac4ae8 100644 --- a/.cursor/rules/101_vue.mdc +++ b/.cursor/rules/101_vue.mdc @@ -1,6 +1,6 @@ --- -description: Vue 3, TypeScript, and Vuexy patterns for Crewli platform -globs: ["apps/**/*.{vue,ts,tsx}"] +description: Vue 3, TypeScript, and Vuexy patterns for Crewli +globs: ["apps/app/**/*.{vue,ts,tsx}"] alwaysApply: true --- @@ -8,675 +8,78 @@ alwaysApply: true ## Core Principles -1. **Composition API only** - Always ` - - -``` - -### Navigation Menu (Organizer App) - -```typescript -// src/navigation/vertical/index.ts -import type { VerticalNavItems } from '@/@layouts/types' - -export default [ - { - title: 'Dashboard', - to: { name: 'dashboard' }, - icon: { icon: 'tabler-smart-home' }, - }, - { heading: 'Event Management' }, - { - title: 'Events', - to: { name: 'events' }, - icon: { icon: 'tabler-calendar-event' }, - }, - { - title: 'Festival Sections', - to: { name: 'festival-sections' }, - icon: { icon: 'tabler-layout-grid' }, - }, - { - title: 'Time Slots & Shifts', - to: { name: 'shifts' }, - icon: { icon: 'tabler-clock' }, - }, - { heading: 'People' }, - { - title: 'Persons', - to: { name: 'persons' }, - icon: { icon: 'tabler-users' }, - }, - { - title: 'Artists', - to: { name: 'artists' }, - icon: { icon: 'tabler-music' }, - }, - { - title: 'Volunteers', - to: { name: 'volunteers' }, - icon: { icon: 'tabler-heart-handshake' }, - }, - { heading: 'Operations' }, - { - title: 'Accreditation', - to: { name: 'accreditation' }, - icon: { icon: 'tabler-id-badge-2' }, - }, - { - title: 'Briefings', - to: { name: 'briefings' }, - icon: { icon: 'tabler-mail' }, - }, - { - title: 'Mission Control', - to: { name: 'mission-control' }, - icon: { icon: 'tabler-broadcast' }, - }, - { heading: 'Insights' }, - { - title: 'Reports', - to: { name: 'reports' }, - icon: { icon: 'tabler-chart-bar' }, - }, -] as VerticalNavItems -``` - -## Forms with VeeValidate + Zod - -```vue - - - -``` - -## Best Practices - -### Always Use -- `