ZenStack плагин для генерации Zod схем с UI метаданными из schema.zmodel.
📖 Forms Documentation · 🎮 Live Examples · 📦 @letar/forms
Before: describe entity 3 times (Prisma model + Zod schema + JSX form)
After: describe once in schema.zmodel with @form.* directives → everything is generated
npm install -D @letar/zenstack-form-pluginДобавьте плагин в schema.zmodel:
plugin formSchema {
provider = '@letar/zenstack-form-plugin'
output = './src/generated/form-schemas'
}model Product {
id String @id @default(cuid())
/// @form.title("Название продукта")
/// @form.placeholder("Введите название")
title String
/// @form.title("Цена")
/// @form.fieldType("currency")
/// @form.props({ min: 0, currency: "RUB" })
price Int
}→ Генерирует ProductCreateFormSchema и ProductUpdateFormSchema с Zod v4 + .meta({ ui }).
| Директива | Описание | Пример |
|---|---|---|
@form.title("...") |
Заголовок поля | /// @form.title("Название") |
@form.placeholder("...") |
Placeholder | /// @form.placeholder("Введите...") |
@form.description("...") |
Описание поля | /// @form.description("Подсказка") |
@form.fieldType("...") |
Тип компонента | /// @form.fieldType("tags") |
@form.props({...}) |
Constraints + props | /// @form.props({ min: 1, max: 100 }) |
@form.relation({...}) |
Настройки relation | /// @form.relation({ labelField: "name" }) |
@form.exclude |
Исключить из формы | /// @form.exclude |
Полная документация директив: forms.letar.best/docs/guides/zenstack-plugin
MCP сервер @letar/form-mcp предоставляет AI-ассистентам доступ к документации всех @form.* директив через tool get_directives.
v2.1.0