diff --git a/nuxt-ui-tips.md b/nuxt-ui-tips.md index d9bbef9..835ace9 100644 --- a/nuxt-ui-tips.md +++ b/nuxt-ui-tips.md @@ -170,4 +170,209 @@ const handleSubmit = () => { --- +## UTabs - Componente de Pestañas + +### Cambios de API en v4 + +#### 1. v-model usa valores string + +En Nuxt UI v4, los valores de los tabs deben ser strings, no números. + +**❌ Incorrecto:** +```vue + + + +``` + +**✅ Correcto:** +```vue + + + +``` + +#### 2. Propiedad `value` en items + +Cada item debe tener una propiedad `value` que coincida con el nombre del slot. Si no se especifica, Nuxt UI usa el índice como string ("0", "1", etc.). + +**Props de TabsItem:** +```typescript +interface TabsItem { + label?: string + icon?: string + avatar?: AvatarProps + badge?: string | number | BadgeProps + content?: string + value?: string | number // ⚠️ Importante: debe coincidir con el nombre del slot + disabled?: boolean + slot?: string // Nombre del slot personalizado + class?: any + ui?: { ... } +} +``` + +#### 3. Uso de slots con nombres personalizados + +Usa la propiedad `slot` en el item para definir un slot personalizado: + +```vue + + + +``` + +### Ejemplo completo + +```vue + + + +``` + +--- + +## Auto-import de Componentes en Nuxt + +### Convención de nombres para subdirectorios + +Cuando organizas componentes en subdirectorios dentro de `app/components/`, Nuxt genera automáticamente nombres prefijados: + +**Estructura de archivos:** +``` +app/components/ +├── lotes/ +│ ├── LotesTable.vue +│ ├── LoteForm.vue +│ └── LoteCard.vue +└── operaciones/ + ├── OperacionesTable.vue + └── OperacionForm.vue +``` + +**Nombres de componentes generados:** +```vue + + + + + + + + + + +``` + +**Patrón:** +``` + +``` + +### NO se requieren imports explícitos + +Nuxt hace auto-import automáticamente. **NO** necesitas importar componentes manualmente: + +**❌ Incorrecto:** +```vue + + + +``` + +**✅ Correcto:** +```vue + + + +``` + +### Verificación con analiticaNucleo + +Verificado en el proyecto analiticaNucleo que funciona correctamente: +- `app/components/comercios/TablaComerciosResumen.vue` → `` +- `app/components/comercios/TotalesMonetariosComercio.vue` → `` + +--- + **Última actualización:** 2025-11-21