Field types

Every primitive field type Jaina supports, with storage shape and editor.

Order 0: atomic primitives

TypeStorageEditor
textstringtext input / textarea (multiline config)
numbernumbernumber input (min, max, step, integer config)
booleanbooleanswitch
dateISO 8601 stringdate + time picker
fileURL stringfile uploader
referenceUUID stringrecord selector (targetSchema config)
selectstringdropdown (options config)

Order 0.5: semantic file variants

These store the same way as file (URL string) but render specialized previews:

TypeAcceptPreview
imageimage/*image with dimensions
videovideo/*video player with duration
audioaudio/*audio player with waveform
svgimage/svg+xmlinline SVG render
pdfapplication/pdfPDF viewer
model3d.gltf,.glb,.usdz,.obj3D viewer
lottie.json (Lottie)Lottie player
font.woff2,.ttf,.otffont sample

Order 0.5: semantic string variants

These store as strings but validate and render specifically:

TypeValidationEditor
urlURL formatURL input
emailemail formatemail input
colorhex formatcolor picker
richtextHTMLrich-text editor (Tiptap)
codevariescode editor (CodeMirror, syntax-highlighted)

Collections

TypeStorageEditor
array[...]repeatable field group
json{...}arbitrary JSON object editor
vector<T>[T, T, ...]typed repeatable
map<T>{ key: T, ... }key-value pairs

Choosing a type

  • Use the most specific type that fits. Prefer image over file for images so the preview renders correctly and codegen knows.
  • Use reference for one-to-many relationships, array of reference for many-to-many.
  • Use select over text when the set of valid values is known.
  • Use json only as an escape hatch. If you're using json a lot, you probably need more schemas.