Skip to content

AdminField

AdminField<TFieldMeta> = TextField<VexResourceSlug, TFieldMeta> | EmailField<VexResourceSlug, TFieldMeta> | TextareaField<VexResourceSlug, TFieldMeta> | NumberField<VexResourceSlug, TFieldMeta> | CheckboxField<VexResourceSlug, TFieldMeta> | DateField<VexResourceSlug, TFieldMeta> | CommitTsField<VexResourceSlug, TFieldMeta> | SelectField<VexResourceSlug, TFieldMeta> | UrlField<VexResourceSlug, TFieldMeta> | ColorField<VexResourceSlug, TFieldMeta> | ArrayField<VexResourceSlug, ArrayType, TFieldMeta> | RelationshipField<VexResourceSlug, TFieldMeta> | UploadField<VexResourceSlug, TFieldMeta> | BlocksField<VexResourceSlug, TFieldMeta> | GroupField<VexResourceSlug, TFieldMeta> | RichTextField<VexResourceSlug, TFieldMeta> | JsonField<VexResourceSlug, TFieldMeta> | TabsField<VexResourceSlug, TFieldMeta> | CollapsibleField<VexResourceSlug, TFieldMeta> | RowField<VexResourceSlug, TFieldMeta> | UIField<VexResourceSlug, TFieldMeta>

Defined in: packages/core/src/fields/types.ts:84

Discriminated union of all field types in VexCMS.

Switch on field.type to narrow to a specific field type and access its type-specific properties.

Currently includes:

  • TextField — single-line text input
  • NumberField — numeric value (price, quantity, rating, etc.)
  • CheckboxField — boolean toggle (published state, feature flag, opt-in, etc.)
  • DateField — Unix ms timestamp (publish date, expiry date, event time, etc.)
  • SelectField — single-choice from a predefined set of options
  • UrlField — validated URL string
  • ColorField — CSS colour string, or a var(--token) reference when themeColors is on
  • RelationshipField — Convex Id reference to a document in another collection

TFieldMeta extends BaseFieldMeta = BaseFieldMeta

function handleField(field: AdminField) {
switch (field.type) {
case "text":
// field is TextField
break;
}
}