Composables
useFormKitInput
Helper composable for binding FormKit context to Nuxt UI input props.
typescript
import { useFormKitInput } from '@sfxcode/nuxt-ui-formkit'
const props = useFormKitInput(context, {
color: 'primary',
size: 'md'
})1
2
3
4
5
6
2
3
4
5
6
Parameters:
context- FormKit node contextdefaults- Default props for the component
Returns: Reactive props object with FormKit bindings
useFormKitOutput
Helper composable for output components.
typescript
import { useFormKitOutput } from '@sfxcode/nuxt-ui-formkit'
const props = useFormKitOutput(context, {
color: 'neutral'
})1
2
3
4
5
2
3
4
5
useFormKitSchema
Schema builder utilities for creating FormKit schemas programmatically.
typescript
import { useFormKitSchema } from '@sfxcode/nuxt-ui-formkit'
const { addList, addElement, addListGroup, addComponent } = useFormKitSchema()
const schema = [
addElement('div', [
addList('items', [
addListGroup([
addComponent('UButton', { label: 'Click Me' })
])
])
])
]1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
Methods:
addComponent(component, props, render, formKitAttrs)- Add a Vue componentaddElement(element, children, attrs, render, formKitAttrs)- Add an HTML elementaddGroup(name, children, render, formKitAttrs)- Add a FormKit groupaddList(name, children, dynamic, render, formKitAttrs)- Add a FormKit listaddListGroup(children, render, formKitAttrs)- Add a repeating list group
Components
FUDataEdit
Form component for editing data with schema-based configuration.
vue
<FUDataEdit
:data="formData"
:schema="schema"
:debug-data="false"
@data-saved="handleSubmit"
/>1
2
3
4
5
6
2
3
4
5
6
Props:
data- Reactive data object to editschema- FormKit schema definitiondebugData- Show debug panel (default: false)
Events:
data-saved- Emitted when form is submitted with valid data
FUDataView
Display component for read-only data presentation.
vue
<FUDataView
:data="displayData"
:schema="schema"
/>1
2
3
4
2
3
4
Props:
data- Data object to displayschema- Schema definition using output components
FUDataDebug
Development tool for debugging form data and state.
vue
<FUDataDebug
:data="formData"
:show-json="true"
/>1
2
3
4
2
3
4
Props:
data- Data object to debugshowJson- Display formatted JSON (default: true)
Type Definitions
FormKit Schema Types
typescript
import type { FormKitSchemaNode } from '@formkit/core'
// Schema node definition
interface SchemaNode {
$formkit?: string
$el?: string
$cmp?: string
name?: string
label?: string
validation?: string
children?: SchemaNode[]
if?: string
attrs?: Record<string, any>
props?: Record<string, any>
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Component Props Types
typescript
// Input component props
interface NuxtUIInputProps {
name: string
label?: string
help?: string
placeholder?: string
validation?: string
disabled?: boolean
required?: boolean
inputType?: 'text' | 'email' | 'password' | 'url' | 'tel' | 'number' | 'search'
leadingIcon?: string
trailingIcon?: string
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'
color?: string
}
// Output component props
interface NuxtUIOutputProps {
name: string
label?: string
help?: string
color?: string
size?: string
leadingIcon?: string
trailingIcon?: string
}1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Utilities
Color Conversion
Convert between color formats (hex, rgb, hsl).
typescript
import { hexToRgb, rgbToHex, hslToRgb } from '@sfxcode/nuxt-ui-formkit'
// Convert hex to RGB
const rgb = hexToRgb('#ff0000') // { r: 255, g: 0, b: 0 }
// Convert RGB to hex
const hex = rgbToHex(255, 0, 0) // '#ff0000'
// Convert HSL to RGB
const rgb2 = hslToRgb(0, 100, 50) // { r: 255, g: 0, b: 0 }1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Duration Conversion
Convert time durations between formats.
typescript
import { parseDuration, formatDuration } from '@sfxcode/nuxt-ui-formkit'
// Parse duration string
const seconds = parseDuration('1h 30m') // 5400
// Format seconds to readable string
const formatted = formatDuration(5400) // '1h 30m'1
2
3
4
5
6
7
2
3
4
5
6
7
External Module Usage
Import Definitions
Import FormKit definitions in your own modules:
typescript
// Import all definitions
import { nuxtUIInputs, nuxtUIOutputs } from '@sfxcode/nuxt-ui-formkit/formkit'
export default defineFormKitConfig({
inputs: {
...nuxtUIInputs,
...nuxtUIOutputs
}
})1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
typescript
// Import specific definitions
import {
nuxtUIInputDefinition,
nuxtUISelectDefinition
} from '@sfxcode/nuxt-ui-formkit/definitions'
export default defineFormKitConfig({
inputs: {
nuxtUIInput: nuxtUIInputDefinition,
nuxtUISelect: nuxtUISelectDefinition
}
})1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Available Exports
From @sfxcode/nuxt-ui-formkit/formkit:
nuxtUIInputs- All input component definitionsnuxtUIOutputs- All output component definitions
From @sfxcode/nuxt-ui-formkit/definitions:
- Individual component definitions (e.g.,
nuxtUIInputDefinition,nuxtUISelectDefinition)
From @sfxcode/nuxt-ui-formkit/plugins:
- FormKit plugins (e.g.,
addNuxtAsteriskPlugin)
Best Practices
- ✅
- Use
useFormKitInputfor consistent prop binding - Leverage schema builders for complex forms
- Utilize TypeScript types for better IDE support
- Import only needed definitions in external modules
- Use
FUDataDebugduring development :::