| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Seamless integration between FormKit form handling and Nuxt UI components for Nuxt 4
FormKit Nuxt UI bridges the gap between FormKit's powerful form management and Nuxt UI's beautiful component library, providing a complete solution for building forms in Nuxt applications.
✨ 22 Input Components - Complete set of FormKit-wrapped Nuxt UI input components
🔁 Repeater Component - Dynamic repeatable form sections
🧭 Multi-Step Forms - Wizard-style forms with tab navigation and validation gating
📊 6 Output Components - Display-only components for read-only data
🎯 Form Management - Powerful form utilities
🛡️ Standard Schema Validation - Validate against Zod/Valibot/ArkType instead of hand-written validation strings
⚙️ Config Helper - One-line formkit.config.ts setup
🔧 Composables & Utilities - Reusable form logic
🎨 Full Nuxt UI Integration - All components respect Nuxt UI theming
✅ TypeScript Support - Full type safety with IntelliSense ⚡ SSR Compatible - Works seamlessly with Nuxt's server-side rendering 🔄 Auto-imports - Components and composables auto-imported 📝 Validation - Built-in FormKit validation support
Install the module to your Nuxt application:
# Using pnpm (recommended)
pnpm add @sfxcode/nuxt-ui-formkit
# Using npm
npm install @sfxcode/nuxt-ui-formkit
# Using yarn
yarn add @sfxcode/nuxt-ui-formkitAdd the module to your nuxt.config.ts:
export default defineNuxtConfig({
modules: [
'@nuxt/ui',
'@sfxcode/nuxt-ui-formkit'
]
})That's it! You can now use FormKit Nuxt UI components in your Nuxt app ✨
<template>
<FormKit
type="form"
@submit="handleSubmit"
>
<FormKit
type="nuxtUIInput"
name="email"
label="Email Address"
placeholder="your.email@example.com"
validation="required|email"
/>
<FormKit
type="nuxtUIInput"
name="password"
input-type="password"
label="Password"
validation="required|length:8"
/>
<FormKit
type="nuxtUICheckbox"
name="terms"
label="I agree to the terms and conditions"
validation="accepted"
/>
<UButton type="submit">
Sign Up
</UButton>
</FormKit>
</template>
<script setup lang="ts">
const handleSubmit = (data: any) => {
console.log('Form submitted:', data)
}
</script><template>
<FUDataEdit
:data="formData"
:schema="userSchema"
@submit="handleSubmit"
/>
</template>
<script setup lang="ts">
const formData = ref({
name: '',
email: '',
age: 0,
subscribe: false
})
const userSchema = [
{
$formkit: 'nuxtUIInput',
name: 'name',
label: 'Full Name',
validation: 'required'
},
{
$formkit: 'nuxtUIInput',
name: 'email',
inputType: 'email',
label: 'Email',
validation: 'required|email'
},
{
$formkit: 'nuxtUIInputNumber',
name: 'age',
label: 'Age',
min: 0,
max: 120
},
{
$formkit: 'nuxtUISwitch',
name: 'subscribe',
label: 'Subscribe to newsletter'
}
]
const handleSubmit = (data: any) => {
console.log('Form submitted:', data)
}
</script><FormKit
type="nuxtUIInputNumber"
name="price"
label="Product Price"
:min="0"
:step="0.01"
:format-options="{
style: 'currency',
currency: 'USD'
}"
validation="required|min:0"
/><template>
<FUDataView
:data="userData"
:schema="displaySchema"
/>
</template>
<script setup lang="ts">
const userData = ref({
name: 'John Doe',
email: 'john@example.com',
price: 1234.56,
tags: ['Vue', 'Nuxt', 'TypeScript'],
isActive: true
})
const displaySchema = [
{
$formkit: 'nuxtUIOutputText',
name: 'name',
label: 'Name',
leadingIcon: 'i-heroicons-user'
},
{
$formkit: 'nuxtUIOutputLink',
name: 'email',
label: 'Email',
leadingIcon: 'i-heroicons-envelope'
},
{
$formkit: 'nuxtUIOutputNumber',
name: 'price',
label: 'Price',
formatOptions: {
style: 'currency',
currency: 'USD'
}
},
{
$formkit: 'nuxtUIOutputList',
name: 'tags',
label: 'Technologies',
listType: 'badge',
color: 'primary'
},
{
$formkit: 'nuxtUIOutputBoolean',
name: 'isActive',
label: 'Status',
trueValue: 'Active',
falseValue: 'Inactive'
}
]
</script>All components support their respective Nuxt UI component props plus FormKit-specific props like name, label, help, validation, etc.
Refer to the Nuxt UI documentation for component-specific props and the FormKit documentation for validation and form handling.
The playground includes comprehensive examples for all components:
# Clone the repository
git clone https://github.com/sfxcode/nuxt-ui-formkit.git
cd nuxt-ui-formkit
# Install dependencies (using pnpm)
pnpm install
# Generate type stubs
pnpm dev:prepare
# Start development server with playground
pnpm dev
# Build the playground
pnpm dev:build
# Run ESLint
pnpm lint
# Run tests
pnpm test
pnpm test:watch
# Build the module
pnpm build
# Release new version
pnpm releaseExternal Nuxt modules and applications can import FormKit definitions programmatically.
import { nuxtUIInputs, nuxtUIOutputs } from '@sfxcode/nuxt-ui-formkit/formkit'
// Use in FormKit config
export default defineFormKitConfig({
inputs: {
...nuxtUIInputs,
...nuxtUIOutputs,
},
})import {
nuxtUICheckboxDefinition,
nuxtUIInputDefinition,
nuxtUIListboxDefinition,
nuxtUISelectDefinition
} from '@sfxcode/nuxt-ui-formkit/definitions'
export default defineFormKitConfig({
inputs: {
nuxtUICheckbox: nuxtUICheckboxDefinition,
nuxtUIInput: nuxtUIInputDefinition,
nuxtUIListbox: nuxtUIListboxDefinition,
nuxtUISelect: nuxtUISelectDefinition,
},
})For detailed usage examples, see EXTERNAL_USAGE.md.
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License © 2024-present sfxcode
| Back | FazBrowse Home | New Git URL |