Skip to content

AdminField

AdminField<TFieldMeta> = TextField<TFieldMeta> | NumberField<TFieldMeta> | CheckboxField<TFieldMeta> | DateField<TFieldMeta> | SelectField<TFieldMeta> | UrlField<TFieldMeta> | ColorField<TFieldMeta> | ArrayField<ArrayType, TFieldMeta> | RelationshipField<TFieldMeta> | UploadField<TFieldMeta> | BlocksField<TFieldMeta> | GroupField<TFieldMeta>

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

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;
}
}