فرم
formکامپوننتuseForm شصتخطی: مقدارها، نقشهی خطا، اعتبارسنجهای فارسی (موبایل، شبا، کد ملی) و FormField؛ بدون کتابخانهی فرم.
نصب
با CLI
اگر هنوز init نکردهاید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور قطعه و وابستگیهایش را مینویسد.
$ npx vibefarsi add formنصب دستی
محتوای تب «کد» را در
components/ui/form.tsxبگذارید.$ npm i lucide-reactکپی کل فایلregistry json
استفاده
usage.tsx
1import { useForm, rules, FormField, FormErrors } from "@/components/ui/form"23const form = useForm({4 initial: { name: "", phone: "", nationalId: "" },5 schema: { name: [rules.required()], phone: [rules.required(), rules.mobile()], nationalId: [rules.nationalId()] },6 onSubmit: async (values) => save(values),7})89<form onSubmit={form.handleSubmit} className="space-y-4">10 <FormField label="نام" htmlFor="name" error={form.field("name").error} required>11 <Input {...form.field("name")} />12 </FormField>13 <FormErrors errors={form.errors} labels={{ name: "نام", phone: "موبایل" }} />14 <Button type="submit" disabled={form.submitting}>ثبت</Button>15</form>پراپها
| پراپ | نوع | پیشفرض | توضیح |
|---|---|---|---|
| useForm({ initial, schema, onSubmit }) | hook | - | values، errors، touched، field(name)، handleSubmit، reset، isValid. |
| rules | required · minLength · pattern · mobile · iban · nationalId · email · equals | - | پیامهای فارسی پیشفرض، قابل تغییر. |
| FormField | component | - | برچسب، ستارهی الزامی، پیام خطا با role=alert. |