This page covers three display blocks: Alert, Loader and Progress.
Alert Block
The Alert block shows a static callout banner — a title, an optional description (plain text or Markdown), an optional icon, and an optional link button — colored by one of five variants. It is display-only: it announces something on the page rather than reacting to user clicks.


Note: Use Alert for persistent, in-page notices that stay visible until the page changes (warnings, success confirmations, setup notices). For transient messages that appear and disappear after an action, use a notification action instead — not a block.
Alert Variants
Variant | Color Scheme | Typical Use |
|---|---|---|
brand | Brand color | Feature announcements, tips |
default | Neutral (used when no variant is set) | General informational notices |
error | Red / destructive | Errors, failures, destructive warnings |
warning | Amber / yellow | Warnings, quota alerts, degraded states |
success | Green | Success confirmations, completion notices |
Alert — Content Properties
| Property | Type | Default | Description |
| title | string (bindable, translatable) | Alert | The alert's heading line |
| description | string (multi-line, bindable) | This is an alert message. | Body text under the title |
| descriptionType | "PLAIN_TEXT" | "MARKDOWN" | PLAIN_TEXT | How the description is rendered — plain text or Markdown (links, bold, lists) |
| linkText | string (bindable) | — | Label of the link button. Only shown when linkUrl is also set |
| linkUrl | string (URL, bindable) | — | Destination the link button opens. Setting this makes the link button appear |
| permissions | permission rule | — | Restrict who sees the alert |
Alert — Appearance Properties
Property | Type | Default | Description |
|---|---|---|---|
variant | brand | default | error | warning | success | default | The alert's color scheme. Falls back to "default" only when no variant is set |
startDecorator (Icon) | icon (supports conditional values) | InfoCircle | Icon at the start of the alert. Can switch based on a condition |
styles | style set | 1px border | Width/min/max, flex layout, visibility, stroke, radius, background color, rotation |
visibility | conditions | — | Show/hide the whole block |
customCSS | CSS | — | Custom styling applied to the block |
Alert — Exposed State
| Binding | Type | Description |
{{ id.content.title }} | string | The current title |
{{ id.content.description }} | string | The current description |
{{ id.appearance.variant }} | string | The current variant |
Alert Behaviors & Gotchas
Warning: Link Text without Link URL shows nothing: The link button only appears when Link URL has a value. Setting Link Text alone is ignored. When Link URL is set but Link Text is empty, the raw URL becomes the button label.
Note: Markdown formatting only applies when both type and description are set: A description with Markdown syntax renders its symbols literally while Type = Plain Text.
Note: Only a missing variant falls back to default: If the variant is empty or bound to a value that isn't one of the five (for example "info" or "danger"), the alert renders as an uncoloured bordered box. Make sure a dynamic binding always resolves to brand, default, error, warning or success.
Loader Block
The Loader block is a loading indicator in three styles: Default (a spinning arc), AI (the animated AI sparkle used in copilot surfaces), and Content (a skeleton placeholder with shimmering bars or a single shimmering box). It has no data or events — you show and hide it with visibility conditions while something else loads.
Warning: The Loader never hides itself. It has no built-in link to any loading state — it spins/shimmers forever until you hide it. Bind its Visibility to the thing that's actually loading (e.g., show while {{ ds_orders.isLoading }} is true).
Loader Types
| Type | Visual | Options | Platform |
| Default | Spinning arc | Size: xxs, xs, sm, md, lg, xl | All |
| AI | AI sparkle animation (fixed 24×24 px) | None (ignores Size setting) | All |
| Content | Skeleton shimmering bars (dashed) or single box (solid) | Style: dashed | solid; Radius; Color | All |
Loader — Appearance Properties
| Property | Type | Default | Appears When | Description |
| type | DEFAULT | AI | CONTENT | DEFAULT | Always | Which indicator to show |
| size | xxs | xs | sm | md | lg | xl | md (theme-dependent) | type = DEFAULT | The spinner's size |
| contentStyle | "dashed" | "solid" | dashed | type = CONTENT | Dashed = shimmer bars; Solid = one shimmer box |
| visibility | conditions | — | Always | Show/hide the block (bind this to a loading state) |
| styles | style set | fits content | Always | Width, height, flex layout, margin, overflow, rotation. Content type also offers Radius and Color |
Loader Behaviors & Gotchas
Note: AI type ignores Size: The AI sparkle always renders at one fixed small size (24×24 px). To make it bigger, there is no setting — choose a different type or scale the surrounding layout.
Note: Dashed skeleton needs a real height: The Content type computes how many shimmer bars fit from the block's actual height (~1 bar per 28 px). If the block has no height, the skeleton renders empty. Give it an explicit height or place it where the layout stretches it.
Note: Last skeleton bar is always shorter: In dashed style, the final row renders at 70% width to mimic a trailing line of text. This is fixed — not configurable.
Note: Skeleton color follows the Styles Color: For Content type, the Color style drives the shimmer's base color (supports theme color tokens).
Progress Block
The Progress block renders a progress indicator — a bar, a gauge or a circle — showing a value between a minimum and maximum. It can display a text label and supports conditional styling. Use it for upload progress, task completion percentages, quota usage, and similar numeric-range indicators.
Progress — Key Properties
Property | Type | Default | Description |
|---|---|---|---|
Type | Bar | Gauge | Circle | Bar | The shape of the indicator |
Value | number (bindable) | — | The current progress value. Should be between Minimum and Maximum |
Label | string (bindable) | value plus % | The text shown with the indicator. Not available for Gauge |
Minimum | number | 0 | The minimum value (0% fill) |
Maximum | number | 100 | The maximum value (100% fill) |
Add ons → Threshold | threshold marker | — | Marks a threshold on the bar. Bar only |
color | theme color token or conditional | brand | The fill bar's color. Supports conditional rules for threshold-based coloring |
Hide Label (Appearance) | boolean | — | Hides the label |
Label Position (Appearance) | Right | Bottom | Inside | — | Where the label sits relative to the indicator. Bar only. Inside needs the largest Thickness. Label color, size and weight are also set here |
Thickness (Appearance) | size | — | The thickness of the track |
Show Value Marker (Appearance) | boolean | — | Shows a marker at the current value. Bar and Gauge only |
Angle (Appearance) | Start Angle, End Angle (in degrees) | — | The arc the gauge draws. Gauge only |
visibility | conditions | — | Show/hide the block |
permissions | permission rule | — | Restrict who sees the block |
Related Blocks
Blocks to use with, or instead of, the Alert:
Block | Relationship |
|---|---|
Card | Free-form container when the Alert's fixed layout is too rigid |
Adds a real action to accompany an alert banner | |
Plain text without the colored banner treatment | |
Inline status chips — use when you need a small marker inside a sentence or row, not a full-width banner | |
How to bind a Loader's visibility to a data source's loading state |