All 44 field types available in FieldCraft.
Each question in a schema has a type that determines which component renders and what config options are available.
Text Fields
| Type | Component | Description |
|---|
short_text | ShortTextField | Single-line text input |
long_text | LongTextField | Multi-line textarea |
email | EmailField | Email with built-in validation |
phone | PhoneField | Phone number input |
phone_international | PhoneInternationalField | International phone with country code |
url | UrlField | URL input with validation |
legal_name | LegalNameField | First / middle / last name |
Numeric Fields
| Type | Component | Description |
|---|
number | NumberField | Numeric input with min/max |
slider | SliderField | Range slider |
rating | RatingField | Star rating (1–N) |
nps | NpsField | Net Promoter Score (0–10) |
likert | LikertField | Likert scale (Strongly Disagree → Strongly Agree) |
opinion_scale | OpinionScaleField | Numbered scale (1–N) |
Selection Fields
| Type | Component | Description |
|---|
single_select | SingleSelectField | Radio buttons / card select |
multi_select | MultiSelectField | Checkboxes / multi-card |
dropdown | DropdownField | Dropdown / combobox |
boolean | BooleanField | Yes/No toggle |
country_select | CountrySelectField | Country picker with flags |
ranking | RankingField | Drag-to-rank list |
Date & Time Fields
| Type | Component | Description |
|---|
date | DateField | Date picker |
date_range | DateRangeField | Start + end date picker |
time | TimeField | Time input |
appointment | AppointmentField | Date + time slot picker |
Media Fields
| Type | Component | Description |
|---|
file_upload | FileUploadField | File upload with drag & drop |
signature | SignatureField | Signature pad (draw to sign) |
image_capture | ImageCaptureField | Camera capture / image upload |
Advanced Fields
| Type | Component | Description |
|---|
address | AddressField | Structured address (street, city, state, zip) |
payment | PaymentField | Payment card input |
matrix | MatrixField | Grid of radio/checkbox questions |
repeater | RepeaterField | Dynamic add/remove field groups |
calculated | CalculatedField | Auto-computed value from expression |
hidden | HiddenField | Hidden field with default value |
scoring | ScoringField | Computed score with color ranges |
Structural Fields
| Type | Component | Description |
|---|
consent | ConsentField | Checkbox with consent text |
info_block | InfoBlockField | Read-only content block (no input) |
section_header | SectionHeaderField | Section divider with title and description |
page_break | PageBreakField | Visual page break separator |
Content & Visual Fields
| Type | Component | Description |
|---|
welcome-screen | WelcomeScreenField | Welcome/intro screen before form starts |
thank-you-screen | ThankYouScreenField | Completion screen after submission |
rich-text | RichTextField | Rich HTML content block (read-only) |
image | ImageField | Display image with optional caption |
video | VideoField | Embedded video (YouTube, Vimeo, or native) |
divider | DividerField | Horizontal divider/separator |
spacer | SpacerField | Vertical spacing between fields |
Type-Specific Config
Each field type accepts an optional config object with type-specific settings:
// Rating with 10 stars
{
id: "satisfaction",
type: "rating",
label: "Overall Satisfaction",
config: { maxStars: 10 },
}
// Slider with range and step
{
id: "budget",
type: "slider",
label: "Monthly Budget",
config: { min: 0, max: 10000, step: 100 },
}
// Matrix with rows and columns
{
id: "feedback_matrix",
type: "matrix",
label: "Rate each area",
config: {
rows: ["Speed", "Quality", "Support"],
columns: ["Poor", "Fair", "Good", "Excellent"],
inputType: "radio",
},
}