Timeline Block
The Timeline block renders a list of events along a vertical or horizontal axis. Each node on the timeline has a marker, a date/label, and a content area. It is ideal for showing chronological history, project milestones, or case activity logs.
Content Properties
| Property | Required | Description |
| Data Source | Required (required) | The array of records to render as timeline events. Each record becomes one node. |
| Title Field | Required (required) | The field displayed as the bold event title on each node. |
| Date Field | Optional (optional) | A date or date-time field shown on the timeline axis. If omitted, no date label is shown. |
| Description Field | Optional (optional) | A text field shown below the title in each node card. |
| Icon / Color Field | Optional (optional) | Field(s) to drive the marker icon or color for each node. Useful for visual differentiation by event type. |
| Slots → Node Content | Optional (optional) | Replace the default card layout with a custom block in the node content slot. Useful for rich, branded event cards. |
Appearance Properties
| Property | Options | Description |
| Orientation | vertical (default), horizontal | Whether the timeline line runs top-to-bottom or left-to-right. |
| Alternate | toggle | When enabled in vertical orientation, event cards alternate left/right of the central line for a "zigzag" layout. |
| Node Position | left, right, alternate | Controls which side the content card renders relative to the timeline axis. |
| Connector Style | line style options | Visual style of the connecting line between nodes: solid, dashed, or dotted. |
Events Timeline Block
The Events Timeline block is a scrollable activity-feed style list. Unlike the Timeline block, it does not render a connector line — instead it shows a compact stacked list of events with icons, timestamps, and descriptions. Common use cases: audit trails, activity logs, comment histories, notification feeds.
Content Properties
| Property | Required | Description |
| Data Source | Required (required) | The array of event records. |
| Title Field | Required (required) | Main label for each event row. |
| Timestamp Field | Optional (optional) | A date-time field shown as a relative or absolute timestamp beside each event. |
| Description Field | Optional (optional) | Secondary text below the event title. |
| Icon Field | Optional (optional) | Field driving the icon shown for each event. Can be a static icon name or a data-driven value. |
| Slots → Event Content | Optional (optional) | Replace the default row layout with a fully custom block in the slot. |
Stepper Block
The Stepper block renders a wizard-style step indicator. It shows a series of named steps with status indicators, guiding users through a multi-step flow. It is primarily a navigation and status display component — it does not manage page routing or form validation itself.
Tip: Stepper provides a fixed, pre-designed step indicator. Stepper V2 exposes composable slot-based steps, giving you full control over each step's icon, label, and content area. Use Stepper for quick setup; use Stepper V2 for custom step designs.
Content Properties
| Property | Required | Description |
| Steps | Required (required) | An array of step definitions. Each step has a Label, an optional Description, and a Status. Can be configured statically or bound to a data source. |
| Current Step | Required (required) | A 0-indexed or 1-indexed number indicating the currently active step. Bind to a page variable to programmatically control the active step. |
Step Statuses
Each step in the Stepper has a Status that controls its visual state:
| Status | Visual | Meaning |
| pending | Empty circle / gray | Step has not been started yet. |
| active | Filled circle / primary color | Step is currently in progress. Usually only one step is active at a time. |
| complete | Checkmark / success color | Step has been completed successfully. |
| error | X mark / error color | Step completed with an error or requires attention. |
Tip: Bind the Steps array to a computed value or data source that returns step objects with a status field. Use expressions to map your domain states (e.g., "submitted" → "complete") to the four Stepper status values.
Stepper Events & Methods
| Event / Method | Description |
| On Step Click | Fires when the user clicks a step indicator. Payload includes the step index and the step object. Use to navigate to the clicked step or validate before advancing. |
| goToStep(index) | Method that programmatically navigates the Stepper to a specific step index. Call from a Next/Previous button's Click event. |
| nextStep() | Advances to the next step. Equivalent to goToStep(currentStep + 1). |
| prevStep() | Returns to the previous step. |
Stepper Exposed State
| State Property | Type | Description |
| currentStep | number | The index of the currently active step (0-indexed). |
| steps | array | The current step definitions including their statuses. |
Stepper V2 (Composable Slots)
Stepper V2 allows you to define steps using composable slots rather than a configuration array. Each step is a slot inside the Stepper V2 block. This gives you full design control over individual step indicators — you can drop in custom icons, styled labels, and content sections per step.
Key Differences from Stepper V1
| Feature | Stepper | Stepper V2 |
| Step definition | Config array or data-bound | Slot-based (one slot per step) |
| Custom step icons/layout | Limited | Full control per-slot |
| Setup speed | Fast (config-driven) | Slower (requires slot composition) |
| Status tracking | Built-in | Manual (you bind status per slot) |
| Best for | Standard wizard flows | Branded or highly customized steppers |
Behavior & Gotchas
⚠ Stepper does not validate or route automatically
The Stepper block is a display and navigation indicator only. It does not validate form fields on a step, prevent navigation to future steps, or manage which "page content" is shown for each step. You must implement those behaviors yourself using page variables, conditional visibility, and event actions on the Next/Previous buttons.
⚠ Timeline data row order determines display order
Timeline and Events Timeline blocks render nodes in the order records appear in the data source. To show events chronologically, sort your data source by the date field before binding. The blocks do not auto-sort.
⚠ Events Timeline is not paginated
The Events Timeline block renders all records from the bound data source without pagination. For large activity logs, limit the data source query (e.g., return only the last 50 events), or implement a "Load More" pattern using a variable-driven offset.
Common Patterns
Case Activity Log (Events Timeline)
Fetch activity events: Query your data source for activity records filtered to the current case ID. Include title (action taken), timestamp, and actor (agent name).
Bind to Events Timeline: Set Title Field = action label, Timestamp Field = created_at, and Description Field = actor name. Use Icon Field to show different icons by action type.
Sort descending: Sort the data source by timestamp descending so the most recent activity appears at the top.
Multi-Step Wizard (Stepper + Conditional Content)
Create step definitions: Configure the Steps array with labels like "Basic Info", "Permissions", "Review". Set all initial statuses to
pendingexcept the first which isactive.Add a page variable for current step: Create a page variable
currentStepIndexinitialized to 0. Bind the Stepper's Current Step to this variable.Show step content conditionally: Create three Container blocks — one per step. Set each Container's visibility condition to
currentStepIndex == 0,== 1, etc.Wire Next / Previous buttons: On each "Next" button's Click event, increment
currentStepIndexand update the step's status tocomplete. On "Previous", decrement the index.
Frequently Asked Questions
What is the difference between Timeline and Events Timeline?
The Timeline block renders events along a visual axis line (vertical or horizontal) with connectors between nodes — it emphasizes the progression from one event to the next. The Events Timeline is a compact stacked list (activity feed style) without connector lines — it emphasizes the event content and is better for dense activity logs. Use Timeline for milestone-style displays; use Events Timeline for audit trails or notification feeds.
Can the Stepper block prevent users from skipping steps?
Not natively. The Stepper block fires On Step Click when a user clicks a step, but it does not block navigation on its own. To prevent skipping, handle On Step Click with an event action that checks whether the preceding steps are complete (using your page variable state) and only calls goToStep if validation passes.
How do I programmatically advance the Stepper when the user submits a form?
On your "Next" button's Click event (or after a successful API call action), add a Call Block Method action targeting the Stepper block and call nextStep(). Also update the Steps array's statuses — mark the just-completed step as complete and the new step as active — by updating the page variable holding the steps configuration.
How do I show the most recent event at the top of an Events Timeline?
Sort your data source query by the timestamp field in descending order before binding it to the Events Timeline block. The block renders records in the order they appear in the array — it does not sort independently.
When should I use Stepper V2 instead of Stepper?
Use Stepper V2 when you need fully custom step indicator designs — different icons, colors, or layouts per individual step — that cannot be achieved with the Stepper's configuration options. Use the original Stepper for standard wizard flows where the default status-driven step indicator design is acceptable, as it requires far less setup.