@feugene/granularity-forms-schema
| Install | |
|---|---|
npm install @feugene/granularity-forms-schema |
|
| Latest Version: | 2.0.2 |
| Vue: | 3 |
| License: | LicenseRef-Granularity-EUC-1.1 |
| Last Updated: | Oct 22, 2026 |
| Links: | GitHub · npm |
@feugene/granularity-forms-schema
Форма из схемы бэкенда для дизайн-системы @feugene/granularity:
zod или JSON Schema на входе — настоящие поля дизайн-системы на выходе. Ни одной
зависимости.
yarn add @feugene/granularity-forms-schema
<script setup lang="ts">
import { GrSchemaForm } from '@feugene/granularity-forms-schema/components/GrSchemaForm'
import { zodAdapter } from '@feugene/granularity-forms-schema/zod'
import { z } from 'zod'
const schema = z.object({
email: z.string().email(),
age: z.number().int().min(18),
})
const model = ref({})
</script>
<template>
<GrSchemaForm v-model="model" :schema="schema" :adapters="[zodAdapter]" @submit="save" />
</template>
Что внутри
| Что | Зачем |
|---|---|
GrSchemaForm |
форма по схеме целиком: поля, правила, разделы, повторители |
GrSchemaField |
одно поле по узлу — для «почти всё сгенерировано, а два поля свои» |
GrSchemaArrayField |
повторяемая секция для массива объектов |
./model |
нейтральная модель схемы — без Vue, ядра и схемных библиотек |
./validation |
компилятор правил и explainRules |
./renderers |
реестр «узел → контрол»; ./renderers/extended и ./renderers/chrono — по желанию |
./ui-schema |
порядок, колонки, условия, подмена виджета |
./server-errors |
разбор 422 и раскладка ошибок по полям |
./zod, ./json-schema |
адаптеры; ставится тот, что нужен |
Пакет ничего не рисует сам
Кроме сетки колонок. Оркестрацию даёт GrForm, обвязку и доступность —
GrFormField, разделы — GrFormSection, ввод — контролы ядра. Поэтому
сгенерированная форма выглядит и ведёт себя ровно как написанная руками.
Вес гранулярного импорта
| Что берут | gzip | от бареля |
|---|---|---|
| весь пакет из корня | 19.4 kB | 100 % |
единственный компонент — GrSchemaForm |
18.6 kB | 96 % |
Числа не складываются: общий код посчитан в каждой строке заново, а платится один раз —
поэтому набор компонентов и показан объединением, а не суммой. Это верхняя граница: gzip всего,
что подпуть тянет из dist, а бандлер приложения трясёт дальше и минифицирует повторно.
Вес каждого компонента — docs/entry-sizes.md.
Документация
Лицензия
См. LICENSE.
Related Packages
Reactive Vue 3 forms generated from JSON, Zod, Yup or Valibot schemas, with vali...
A field's address exists before the component that draws it: typed paths the com...
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 2.0.2 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 2.0.1 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 2.0.0 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.1.1 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.1.0 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.0.4 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.0.3 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.0.2 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.0.1 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 1.0.0 | ^3.5.0 | LicenseRef-Granularity-EUC-1.1 | |
| 0.4.0 | ^3.5.0 | Custom | |
| 0.3.4 | ^3.5.0 | Custom | |
| 0.3.3 | ^3.5.0 | Custom | |
| 0.3.2 | ^3.5.0 | Custom | |
| 0.3.1 | ^3.5.0 | Custom | |
| 0.3.0 | ^3.5.0 | Custom | |
| 0.2.0 | ^3.5.0 | Custom | |
| 0.1.3 | ^3.5.0 | Custom | |
| 0.1.2 | ^3.5.0 | Custom | |
| 0.1.1 | ^3.5.0 | Custom |