فرم

formکامپوننت

useForm شصت‌خطی: مقدارها، نقشه‌ی خطا، اعتبارسنج‌های فارسی (موبایل، شبا، کد ملی) و FormField؛ بدون کتابخانه‌ی فرم.

اختیاری

نصب

  1. با CLI

    اگر هنوز init نکرده‌اید، اول از راهنمای نصب پروژه را آماده کنید. بعد این دستور قطعه و وابستگی‌هایش را می‌نویسد.

    $ npx vibefarsi add form
  2. نصب دستی

    محتوای تب «کد» را در 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.
rulesrequired · minLength · pattern · mobile · iban · nationalId · email · equals-پیام‌های فارسی پیش‌فرض، قابل تغییر.
FormFieldcomponent-برچسب، ستاره‌ی الزامی، پیام خطا با role=alert.