UI Component List
Viewing Components via the uiWidgets Tab in Edit Mode
This is the simplest method. In the uiWidgets tab of edit mode, you can browse the UI component list in the middle panel to preview each component's appearance and its corresponding sample object in real time.
See Edit Mode UI Walkthrough for details.
uiWidgets reference
Below is a list of all UI components supported by ToolBake. This content is auto-generated for easy reference.
TextInput (Text Input)
Single-line value capture with optional prefix label and default text. $.props allow "mini"|"normal" size.
- Sample object
- Handler output
{
"id": "guide-text-input",
"type": "TextInput",
"title": "Context Label",
"mode": "input",
"props": {
"prefixLabel": "Title",
"prefixLabelSize": "6em",
"placeholder": "Team sync summary...",
"defaultValue": "Alpha squad sync notes",
"size": "mini",
"delayTrigger": false
}
}
{
"guide-text-input": string;
}
NumberInput (Number Input)
Numeric value field with increment controls and optional bounds. $.props allow "mini"|"normal" size.
- Sample object
- Handler output
{
"id": "guide-number-input",
"type": "NumberInput",
"title": "Batch Size",
"mode": "input",
"props": {
"prefixLabel": "Items",
"min": 1,
"max": 250,
"step": 5,
"defaultValue": 25,
"size": "mini"
}
}
{
"guide-number-input": number;
}
RadioGroupInput (Radio Group)
Pill-style selection for mutually exclusive options.
- Sample object
- Handler output
{
"id": "guide-radio-input",
"type": "RadioGroupInput",
"title": "Execution Profile",
"mode": "input",
"props": {
"orientation": "horizontal",
"defaultValue": "balanced",
"options": [
{
"value": "fast",
"label": "Fast",
"description": "Prioritize speed"
},
{
"value": "balanced",
"label": "Balanced",
"description": "Best effort"
},
{
"value": "precise",
"label": "Precise",
"description": "Max accuracy"
}
]
}
}
{
"guide-radio-input": "fast" | "balanced" | "precise";
}
SelectListInput (Select List)
Dropdown list for picking a single option.
- Sample object
- Handler output
{
"id": "guide-select-input",
"type": "SelectListInput",
"title": "Dataset",
"mode": "input",
"props": {
"placeholder": "Pick dataset",
"defaultValue": "recent",
"options": [
{
"value": "recent",
"label": "Recent"
},
{
"value": "archived",
"label": "Archived"
},
{
"value": "shared",
"label": "Shared"
}
]
}
}
{
"guide-select-input": "recent" | "archived" | "shared";
}
SliderInput (Slider)
Continuous numeric control with live display badge.
- Sample object
- Handler output
{
"id": "guide-slider-input",
"type": "SliderInput",
"title": "Sampling Rate",
"mode": "input",
"props": {
"defaultValue": 60,
"max": 100,
"step": 5,
"valueSuffix": "%"
}
}
{
"guide-slider-input": number;
}
ToggleInput (Toggle)
Switch control for boolean values with helper text.
- Sample object
- Handler output
{
"id": "guide-toggle-input",
"type": "ToggleInput",
"title": "Realtime Sync",
"mode": "input",
"props": {
"defaultValue": true,
"onLabel": "Active",
"description": "Enable live handler execution"
}
}
{
"guide-toggle-input": boolean;
}
ColorInput (Color Picker)
Hex color selector with preview circle and copy action.
- Sample object
- Handler output
{
"id": "guide-color-input",
"type": "ColorInput",
"title": "Accent Color",
"mode": "input",
"props": {
"defaultValue": "#0EA5E9",
"showHex": true
}
}
{
"guide-color-input": string;
}
ColorPickerInput (Color Picker Panel)
Popover color palette powered by Sketch picker with preset swatches and copy action.
- Sample object
- Handler output
{
"id": "guide-color-picker-input",
"type": "ColorPickerInput",
"title": "Brand Gradient",
"mode": "input",
"props": {
"defaultValue": "#4B6E35",
"presetColors": [
"#FDE68A",
"#FCA5A5",
{
"color": "#D8B4FE",
"title": "Soft Lavender"
}
]
}
}
{
"guide-color-picker-input": string;
}
TextareaInput (Textarea)
Multi-line editor for descriptions, logs, or snippets. Supports syntax highlighting. set $.props.highlight to 'highlight:language' to enable.
- Sample object
- Handler output
{
"id": "guide-textarea-input",
"type": "TextareaInput",
"title": "Operator Notes",
"mode": "input",
"props": {
"placeholder": "Document procedures, shortcuts, or caution items...",
"rows": 6,
"highlight": ""
}
}
{
"guide-textarea-input": string;
}
FileUploadInput (File Upload)
Drag and drop zone for optional supporting files. Or paste from clipboard. This component can be used to read content from clipboard.
- Sample object
- Handler output
{
"id": "guide-file-input",
"type": "FileUploadInput",
"title": "Attach Blueprint",
"mode": "input",
"props": {
"description": "Upload diagrams or auxiliary configs",
"mini": false
}
}
{
"guide-file-input": ExtendedFile | null;
}
FilesUploadInput (Files Upload)
Drag and drop multiple files. Or paste from clipboard to upload files. Set allowDirectory to enable folder selection (Chromium only).
- Sample object
- Handler output
{
"id": "guide-files-input",
"type": "FilesUploadInput",
"title": "Attach Files",
"mode": "input",
"props": {
"description": "Upload multiple files to process",
"allowDirectory": false
}
}
{
"guide-files-input": ExtendedFile[] | null;
}
TagInput (Tag Input)
Collect multiple free-form keywords with optional cap.
- Sample object
- Handler output
{
"id": "guide-tag-input",
"type": "TagInput",
"title": "Tag Keywords",
"mode": "input",
"props": {
"placeholder": "Add keywords and press Enter",
"maxTags": 6
}
}
{
"guide-tag-input": string[];
}
ButtonInput (Button)
Action button that triggers a click event with customizable style. Only user clicks trigger the handler, external value changes don't affect button behavior.
- Sample object
- Handler output
{
"id": "guide-button-input",
"type": "ButtonInput",
"title": "Execute Action",
"mode": "input",
"props": {
"label": "Run Process",
"variant": "default",
"size": "default",
"description": "Click to trigger the action"
}
}
{
"guide-button-input": number;
}
LabelInput (Label)
Display-only text label that supports richer HTML tags and optional Tailwind classes.
- Sample object
- Handler output
{
"id": "guide-label-input",
"type": "LabelInput",
"title": "Status",
"mode": "output",
"props": {
"content": "<div class='text-sm leading-relaxed'><div><b>durationStr</b> supports an optional sign (<code>+</code>/<code>-</code>) and one or more <code><int><unit></code> segments like <code>1h30m</code>.</div><div class='text-muted-foreground text-[12px] mt-1'>Units: ms, s, m, h, d, w, M, y.</div></div>",
"tone": "default",
"autoHeight": true
}
}
{
"guide-label-input": string | {
"innerHtml": string | undefined;
"afterHook": unknown | undefined;
"data": Record<string, Record<string, unknown>> | undefined;
};
}
RawHtmlInput (Raw HTML)
Display-only HTML label rendered without sanitization. Use with trusted content only.
- Sample object
- Handler output
{
"id": "guide-raw-html-input",
"type": "RawHtmlInput",
"title": "Unsafe HTML",
"mode": "output",
"props": {
"content": "<div class='text-sm leading-relaxed'><div><b>Warning</b>: HTML renders directly without sanitization.</div><div class='text-muted-foreground text-[12px] mt-1'>Use only with trusted content.</div></div>",
"tone": "default",
"autoHeight": true
}
}
{
"guide-raw-html-input": {
"innerHtml": string | undefined;
"afterHook": unknown | undefined;
"data": Record<string, Record<string, unknown>> | undefined;
};
}
DividerInput (Divider)
Visual separator between widgets with optional inline label.
- Sample object
- Handler output
{
"id": "guide-divider-input",
"type": "DividerInput",
"title": "Divider",
"mode": "output",
"props": {
"label": "Advanced",
"variant": "dashed",
"gap": 8,
"hidden": false
}
}
{
"guide-divider-input": unknown;
}
ProgressBarInput (Progress Bar)
Read-only progress indicator with ratio text, percent badge, and optional custom color.
- Sample object
- Handler output
{
"id": "guide-progress-bar-input",
"type": "ProgressBarInput",
"title": "Data Sync",
"mode": "output",
"props": {
"label": "Sync progress",
"hint": "Server job",
"defaultValue": 32,
"defaultTotal": 100,
"color": "#22c55e"
}
}
{
"guide-progress-bar-input": {
"current": number | undefined;
"total": number | undefined;
"percent": number | undefined;
"label": string | undefined;
"hint": string | undefined;
};
}
MultiTextInput (Multi Text Input)
Stacks several text inputs and returns a nested payload keyed by field ids.
- Sample object
- Handler output
{
"id": "guide-multi-text-input",
"type": "MultiTextInput",
"title": "",
"mode": "input",
"props": {
"gap": "0",
"items": [
{
"id": "host",
"title": "",
"placeholder": "db.internal.local",
"prefixLabel": "Host",
"prefixLabelSize": "5em"
},
{
"id": "port",
"title": "",
"prefixLabel": "Port",
"prefixLabelSize": "5em",
"defaultValue": "5432"
},
{
"id": "username",
"title": "",
"defaultValue": "service-account",
"prefixLabel": "User",
"prefixLabelSize": "5em"
}
]
}
}
{
"guide-multi-text-input": {
"host": string;
"port": string;
"username": string;
};
}
SortableListInput (Sortable List)
Drag to reorder items; handler can return strings or {value,label}[] to build the list.
- Sample object
- Handler output
{
"id": "guide-sortable-list",
"type": "SortableListInput",
"title": "Steps",
"mode": "input",
"props": {
"placeholder": "Add list options to enable drag handles.",
"options": [
{
"value": "plan",
"label": "Planning"
},
{
"value": "draft",
"label": "Draft"
},
{
"value": "review",
"label": "Review"
}
]
}
}
{
"guide-sortable-list": (string | {
"value": string;
"label": string | undefined;
})[];
}
WaveformPlaylistInput (Waveform Playlist)
Upload an audio file to preview its waveform, play it back, and download the current track.
- Sample object
- Handler output
{
"id": "guide-waveform-playlist",
"type": "WaveformPlaylistInput",
"title": "Audio Track",
"mode": "input",
"props": {
"description": "Drop an audio file to visualize and preview the waveform",
"accept": "audio/*",
"waveHeight": 120,
"samplesPerPixel": 512,
"showControls": true
}
}
{
"guide-waveform-playlist": {
"file": unknown | null;
"url": string | null;
"name": string | null;
"type": string | null;
"size": number | null;
"lastModified": number | null;
"clips": (({
"startTime": number;
"duration": number;
"offset": number;
"name": string | null;
})[]) | undefined;
};
}