@feugene/granularity-forms-schema

Schema-driven forms for the @feugene/granularity design system — zod and JSON Schema into real form fields, zero dependencies.
2,546 1
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
Maintainer: efureev

@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

@macrulez/vue-form-schema

Reactive Vue 3 forms generated from JSON, Zod, Yup or Valibot schemas, with vali...

2,714 0
@vue-formily/formily

Simple, lightweight, and flexible schema-based form for Vue.js

3,654 29
@maroonedog/waypoint

A field's address exists before the component that draws it: typed paths the com...

308 1
@volverjs/form-vue

Vue 3 Forms with @volverjs/ui-vue

8,780 14
vue-formor

Form validation for Vue in composition functions with Valibot.

1,556 5

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