This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is @wgr-sa/nuxt-form, a comprehensive form building module for Nuxt 3 applications. It provides form components, validation, data handling, recaptcha integration, and dynamic form generation capabilities.
npm run dev:prepare- Generate type stubs and prepare development environment (run this first)npm run dev- Start playground development servernpm run dev:build- Build playground for testing
npm run test- Run all tests with Vitestnpm run test:watch- Run tests in watch modenpm run lint- Run ESLint on codebase
npm run docs:dev- Start VitePress documentation servernpm run docs:build- Build documentationnpm run docs:preview- Preview built documentation
npm run release- Full release pipeline (lint, test, build, changelog, publish, push tags)npm run prepack- Build module distribution files
The codebase follows Nuxt module conventions with these key areas:
Core Module (src/module.ts)
- Registers all components globally and auto-imports composables
- Configures CSS assets and transpilation
- Sets up runtime configuration
Runtime Components (src/runtime/components/)
FormBuilder.vue- Main form container componentFormGenerator.vue- Dynamic form generation from configuration- Input components:
FormInput,FormSelect,FormRadio,FormTextarea,FormFile,FormSuggest FormSubmit.vue- Form submission handlingFormAlert.vue- Form error/success messaging
Core Composables (src/runtime/composables/)
useFormBuilder()- Main form initialization and validation orchestrationuseFormValidator()- Field validation handlinguseFormRecaptcha()- Recaptcha integration
Data Layer (src/runtime/utils/)
Formclass - Central form state managementFormDataHandler- Form data manipulation and processingFormValidator- Validation rule managementFormMessageStore- Internationalized message handling- Model layers for TypeORM and class-validator integration
- class-validator - Validation decorators and rules
- maska - Input masking capabilities
- typeorm - Database model integration (optional)
Module accepts these options in nuxt.config.ts:
form: {
format_layers: [], // Custom formatting layers
actions: undefined, // Custom form actions
recaptcha: true, // Enable recaptcha
hide_recaptcha: false, // Hide recaptcha badge
mask: true, // Enable input masking
default_styles: true, // Include default CSS
messages: {}, // Custom messages
lang: 'fr' // Default language
}- Initialize form with
useFormBuilder().initForm(config) - Add fields via
form.addField(config)or useFormGenerator - Validate with
validateForm(form)which runs field validation + recaptcha - Submit via
form.submit()using configured submitter
The playground/ directory contains a working Nuxt app for testing the module. It includes:
- Example entities in
entities/User.ts - Test configuration in
nuxt.config.ts - Sample implementations in
app.vue
- Uses experimental decorators for class-validator integration
- Extends playground's generated tsconfig for proper type resolution
- Strict mode enabled in playground for comprehensive type checking
- Always run
npm run dev:preparebefore starting development - The module auto-registers all components globally
- Validation messages support English and French by default
- CSS can be disabled via configuration for custom styling
- Recaptcha integration is configurable and can be hidden or disabled