ComponentDefinition
Interface: ComponentDefinition
Defined in: components/types.ts:167
Описание одного типа компонента в DSL.
Эти данные не зависят от React, HTML или ui-kit, и могут использоваться в компиляторе, редакторе и runtime.
Properties
canHaveChildren?
optionalcanHaveChildren:boolean
Defined in: components/types.ts:196
Разрешено ли компоненту иметь дочерние ноды.
Если false, то любые children в ComponentNode считаются
ошибкой и должны либо игнорироваться, либо подсвечиваться
валидатором / редактором.
Если не указано, по умолчанию считаем, что дети разрешены.
category?
optionalcategory:string
Defined in: components/types.ts:185
Опциональная категория компонента (группа в палитре).
Например: "layout", "basic", "forms".
contentProp?
optionalcontentProp:string
Defined in: components/types.ts:226
Optional name of the prop that represents the primary "content" of this component (for example, "text" for Text, "label" for Button).
Code generators may use this information to map that prop into React children instead of passing it as a regular prop. This field is purely semantic and does not affect DSL validation.
displayName?
optionaldisplayName:string
Defined in: components/types.ts:178
Опциональное человекочитаемое имя компонента для палитры, инспектора и документации.
events?
optionalevents:Record<string,ComponentEventDefinition>
Defined in: components/types.ts:216
Описание всех поддерживаемых событий компонента.
Ключи — технические имена событий (onClick, onChange и т.п.),
значения — метаданные для редактора и документации.
Если поле не указано или пустое, считаем, что компонент "не умеет" событий в терминах DSL.
props
props:
Record<string,ComponentPropDefinition>
Defined in: components/types.ts:205
Описание всех поддерживаемых пропов компонента.
Ключи объекта должны совпадать с полем name каждого пропа,
однако в реальном ComponentNode могут встречаться и "лишние"
пропы — редактор/валидатор сам решает, как с ними работать.
type
type:
string
Defined in: components/types.ts:172
Тип компонента, совпадающий с ComponentNode.type
(например, "Button", "Text").