autoform-svelte
v0.2.2
Published
Schema-first generated forms for Svelte 5. Supports zod, shadcn-svelte and more!
Readme
autoform-svelte
Schema-first generated forms for Svelte 5 with adapter-based schema support.
Install
bun install autoform-svelteIf you use Zod schemas:
bun install zodUsage
<script lang="ts">
import { Autoform } from "autoform-svelte";
import { zodAdapter } from "autoform-svelte/adapters/zod";
import { z } from "zod";
const schema = z.object({
query: z.string().min(1),
enabled: z.boolean().default(true),
});
let data = $state({
query: "",
enabled: true,
});
</script>
<Autoform
{schema}
adapter={zodAdapter}
bind:data
onsubmit={(e) => console.log("submit", e.detail.data)}
oncancel={() => console.log("cancel")}
/>Adapters
zodAdapterfromautoform-svelte/adapters/zodjsonSchemaAdapter(default) fromautoform-sveltecreateCustomAdapter()for custom libraries
import { createCustomAdapter } from "autoform-svelte";
const myAdapter = createCustomAdapter((schema) => schema.toJSON());Field metadata
Use schema metadata to customize form rendering:
z.string().meta({
form: {
label: "Message",
widget: "textarea",
placeholder: "Write your message",
},
});
z.object({
title: z.string(),
details: z.string(),
}).meta({
form: {
reorderable: true,
},
});Supported keys:
form.widget:"input" | "textarea"(string fields only, default is"input")form.label: field label overrideform.placeholder: placeholder text for supported controls (input/textarea/select/date/number)form.reorderable: enable object key reordering controls (default is disabled)
Component API
schema:unknown(required)adapter?:SchemaAdapter(default:jsonSchemaAdapter)data:Record<string, any>(bindable)title?:stringsubmitLabel?:string(default:"Save")cancelLabel?:string(default:"Cancel")
Events
submit:{ data: Record<string, any> }cancelerror:{ errors: string[] }
