2.5 KiB
2.5 KiB
AGENTS.md
This file provides guidance to AI when working with code in this repository.
Project Overview
Vue 3 TypeScript application with Vite.
Routing & Layouts
- File-based routing: Uses
unplugin-vue-routerwith.page.vueand.page.mdextensions insrc/pages/ - Route naming: Converts to PascalCase (e.g.,
user-profile.page.vue→UserProfile) - Layouts:
vite-plugin-vue-meta-layoutswith default layoutbase-layout/base-layout
Auto-Import Configuration
Multiple auto-import systems are active:
- Vue APIs: Core Vue, VueUse, Pinia, Vue Router, vue-i18n
- Components: Auto-registered from multiple UI libraries (Naive UI, PrimeVue)
- Icons: Uses
unplugin-iconswithicon-prefix; custom SVGs fromsrc/assets/icons/svgs/available viaicon-svg:filename
IMPORTANT - Auto-Import Limitations:
-
Dynamic components: Auto-imported components cannot be used with
<component :is="..." />syntax- ❌ Avoid:
<component :is="icon-${name}" /> - ✅ Use:
<icon-foo v-if="condition" />withv-if/v-else-if/v-elsedirectives
- ❌ Avoid:
-
In TypeScript/TSX files: Auto-import does NOT work. You must explicitly import icons using the
~icons/prefix:import IconMenuRounded from '~icons/material-symbols/menu-rounded'; // Then use in JSX/TSX const menuOption = { icon: () => <IconMenuRounded />, };
UI Component Libraries
Project has multiple UI frameworks configured:
-
Naive UI
-
Form Layout: When using
NGridfor form layouts, preferNFormItemGiover nestingNFormIteminsideNGridItemfor more concise code.<!-- ❌ Avoid: Verbose nesting --> <NGrid :cols="4"> <NGridItem> <NFormItem label="Username"> <NInput /> </NFormItem> </NGridItem> </NGrid> <!-- ✅ Use: Concise and direct --> <NGrid :cols="4"> <NFormItemGi label="Username"> <NInput /> </NFormItemGi> </NGrid>
-
-
PrimeVue:
Styling
- UnoCSS: Wind preset
- SCSS: Modern compiler API with global imports from
@/styles/scss/global.scss
State Management
Pinia stores
Cloudflare Workers Integration
- Server entry:
server/index.tshandles/api/*routes with KV storage - KV binding: Named
KV
Vite Plugins (notable)
- vue-macros: Enhanced Vue features
- unplugin-vue-markdown:
.mdfiles as Vue components with frontmatter
Path Aliases
@/maps tosrc/directory