Components Reference
Complete reference for all available components with detailed specifications, properties, and examples.
Dynamic Custom Component Bindings
Section titled “Dynamic Custom Component Bindings”Built-in components use static properties. Dynamic prop_* bindings apply when a component is inside define Component or define Layout.
define Component "MyMenu" { component SidebarMenu items: "Home,Users,Settings" active: prop_active}
screen Main { layout stack { component MyMenu active: 1 }}If a binding argument is missing:
- required target field: semantic error
- optional target field: omitted + warning
Text Components
Section titled “Text Components”Heading
Section titled “Heading”Large, bold text for page titles and section headers.
Properties:
text(string): The heading textlevel(enum): Visual heading level -h1|h2|h3|h4|h5|h6(default:h2)spacing(enum): Vertical inner spacing around heading text -none|xs|sm|md|lg|xl(optional)variant(string): Color variant -default| built-ins (primary,danger, etc.) | custom key incolors
Example:
component Heading text: "Dashboard" level: h1component Heading text: "User Management" level: h2component Heading text: "Section title" level: h3component Heading text: "Card Title" level: h4 spacing: nonecomponent Heading text: "Brand Title" variant: primaryRendering: Bold text with size based on level
Standard body text for content and descriptions.
Properties:
text(string): The text contentsize(enum, optional): Font size —xs|sm|md|lg|xl(default:md, ~14px)bold(boolean, optional): Render text in bold (default:false)italic(boolean, optional): Render text in italic (default:false)
Example:
component Text text: "This is body text"component Text text: "Important notice" bold: truecomponent Text text: "Side note" size: sm italic: trueRendering: Regular text at the specified size, with optional bold and italic styling
Paragraph
Section titled “Paragraph”Multi-line body text block with alignment control. Suitable for longer prose content.
Properties:
text(string): The text content (may wrap across multiple lines)align(enum, optional): Text alignment —left|center|right(default:left)size(enum, optional): Font size —xs|sm|md|lg|xl(default:md)bold(boolean, optional): Render text in bold (default:false)italic(boolean, optional): Render text in italic (default:false)
Example:
component Paragraph text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."component Paragraph text: "Centered caption" align: center size: smcomponent Paragraph text: "Quote text" italic: true align: centerRendering: Wrapped text block respecting alignment and font styling options
Small, often bold text used for form field labels.
Properties:
text(string): Label text
Example:
component Label text: "Email Address"component Label text: "Password"Rendering: Small bold text at 12-14px font size
Input Components
Section titled “Input Components”Single-line text input field.
Properties:
label(string): Field labeltype(enum): Placeholder textsize(enum): Control size -sm|md|lg(default:md)iconLeft(enum, optional): Icon name rendered on the left side of the field (e.g.,search,mail)iconRight(enum, optional): Icon name rendered on the right side of the field (e.g.,eye,x)
Both
iconLeftandiconRightcan be active simultaneously.
Example:
component Input label: "Email" placeholder: "you@example.com"component Input label: "Search" placeholder: "Type to search..." iconLeft: "search"component Input label: "Password" placeholder: "••••••••" iconLeft: "lock" iconRight: "eye"component Input label: "Compact" placeholder: "..." size: smRendering: Rectangular input box with border and optional label above
Textarea
Section titled “Textarea”Multi-line text input field.
Properties:
label(string): Field labeltype(enum): Placeholder textrows(number): Number of visible rows (default: 4)
Example:
component Textarea label: "Comments" rows: 5component Textarea label: "Message" placeholder: "Type your message here" rows: 3Rendering: Tall rectangular input box with scrolling capability
Select
Section titled “Select”Dropdown selection field.
Properties:
label(string): Field labelitems(string, CSV): Comma-separated list of optionssize(enum): Control size -sm|md|lg(default:md)iconLeft(enum, optional): Icon name rendered on the left side of the fieldiconRight(enum, optional): Icon name rendered to the left of the chevron, on the right side
Both
iconLeftandiconRightcan be active simultaneously.
Example:
component Select label: "Role" items: "Admin,User,Guest"component Select label: "Status" items: "Active,Inactive,Pending"component Select label: "Country" iconLeft: "globe" items: "Spain,France,Germany"component Select label: "Category" iconLeft: "tag" iconRight: "filter" items: "A,B,C"component Select label: "Size" items: "S,M,L" size: lgRendering: Dropdown button with list of options
Checkbox
Section titled “Checkbox”Boolean checkbox input.
Properties:
label(string): Checkbox labelchecked(boolean, optional): Whether checkbox is checked (default: false)
Example:
component Checkbox label: "I agree to terms" checked: truecomponent Checkbox label: "Subscribe to newsletter"component Checkbox label: "Remember me" checked: falseRendering: Small square checkbox with label text
Single-select radio button (typically used in groups).
Properties:
label(string): Radio button labelchecked(boolean, optional): Whether radio is selected (default: false)
Example:
component Radio label: "Option A" checked: truecomponent Radio label: "Option B"component Radio label: "Personal" checked: falseRendering: Circular radio button with label text
Toggle
Section titled “Toggle”Boolean toggle switch.
Properties:
label(string): Toggle labelenabled(boolean, optional): Whether toggle is enabled (default: false)
Example:
component Toggle label: "Dark Mode" enabled: truecomponent Toggle label: "Enable notifications"component Toggle label: "Auto-save" enabled: falseRendering: Sliding toggle switch with label
Button Components
Section titled “Button Components”Button
Section titled “Button”Clickable action button.
Properties:
text(string): Button labelvariant(string): Visual style -default|primary|secondary|success|warning|danger|info(default:default)size(enum):xs|sm|md|lg|xl(default:md)icon(enum, optional): Icon name to render alongside the text (e.g.,check,trash-2,plus)iconAlign(enum, optional): Icon placement -left|right(default:left)labelSpace(boolean): Adds top offset to align with labeledInput/Selectcontrolspadding(enum): Horizontal inset -none|xs|sm|md|lg|xlblock(boolean): Expands button width in compatible horizontal layouts
Variants:
default: Neutral button styleprimary: Prominent filled button (usually blue)secondary: Neutral actionsuccess: Positive actionwarning: Caution actiondanger: Destructive actioninfo: Informational action
Example:
component Button text: "Save" variant: primarycomponent Button text: "Cancel" variant: secondarycomponent Button text: "Delete" variant: dangercomponent Button text: "Confirm" variant: success icon: "check"component Button text: "Remove" variant: danger icon: "trash-2" iconAlign: rightcomponent Button text: "Add Item" icon: "plus"component Button text: "Tiny" size: xscomponent Button text: "Aligned" size: md labelSpace: true padding: mdcomponent Button text: "Wide" size: xlRendering: Rectangular button with text (and optional leading/trailing icon), styled according to variant
Size note: xs/xl extend the scale below/above the standard sm–lg range. For action controls, lg aligns with the base Input/Select height.
IconButton
Section titled “IconButton”Button with icon instead of text.
Properties:
icon(enum): Icon name (from built-in icon catalog)size(enum):xs|sm|md|lg|xl(default:md)variant(enum):default|primary|secondary|success|warning|danger|infodisabled(boolean): disabled state (true|false, default:false)labelSpace(boolean): Adds top offset to align with labeled form controlspadding(enum): Horizontal inset -none|xs|sm|md|lg|xl
Example:
component IconButton icon: "search" size: xs variant: defaultcomponent IconButton icon: "search" size: sm variant: defaultcomponent IconButton icon: "menu" size: md variant: primarycomponent IconButton icon: "settings" size: lg variant: info disabled: truecomponent IconButton icon: "check" size: xl variant: primarycomponent IconButton icon: "check" size: md labelSpace: true padding: mdRendering: Square button containing icon symbol
Size note: xs/xl extend the scale below/above the standard sm–lg range. Uses the same action size scale as Button and Link.
Navigation Components
Section titled “Navigation Components”Topbar
Section titled “Topbar”Top navigation bar/header.
Properties:
title(string): Main titlesubtitle(string, optional): Secondary subtitlesize(enum, optional): Bar height -sm(44 px) |md(56 px) |lg(72 px) (default:md)icon(string, optional): Left icon name (e.g.,menu,search)avatar(boolean, optional): Show avatar circle on the right (true/false)user(string, optional): User name or identifier for badgeactions(string, optional): Action items (comma-separated)variant(string, optional): Accent color variant for left icon/actions (defaultor custom/built-in key)border(boolean, optional): Draws container border (default:false)background(color, optional): Background fill. Acceptstrue(card background), a hex value (e.g.,#1565C0), a Material color name (e.g.,indigo), or omit/falsefor transparent.radius(enum, optional): Corner radius -none|sm|md|lg|xl(default:md)
Example:
component Topbar title: "Dashboard"component Topbar title: "Dashboard" subtitle: "Welcome back" size: smcomponent Topbar title: "Settings" user: "john_doe" size: lgcomponent Topbar title: "Admin" actions: "Help,Logout"component Topbar title: "Workspace" subtitle: "Overview" icon: "menu" actions: "Help,Logout" user: "john_doe" avatar: truecomponent Topbar title: "Workspace" icon: "menu" actions: "Save,Export" variant: primarycomponent Topbar title: "Styled" background: "indigo" border: true radius: lgcomponent Topbar title: "Hex BG" background: "#FF5722"Rendering: Horizontal bar at top of screen with optional left icon, title/subtitle, right actions, user badge, and avatar. When user is present, actions are shifted left to avoid overlap. background accepts boolean legacy values as well as any color string.
SidebarMenu
Section titled “SidebarMenu”Vertical menu for navigation.
Properties:
items(string, CSV): Menu item labelsactive(number): Index of active item (default: 0)icons(string, CSV, optional): Icon names per menu item (same order asitems)variant(string, optional): Color applied to the active item and its icon. If omitted, falls back to theaccentcolor. Accepts semantic variants (primary,success, etc.) or custom color names from thecolorsblock.
When
iconsare set, the active item’s icon is automatically colored using the same active color as the text.
Example:
component SidebarMenu items: "Home,Users,Settings,Help" active: 0component SidebarMenu items: "Dashboard,Analytics,Reports,Admin" active: 1component SidebarMenu items: "Dashboard,Users,Settings" icons: "home,users,settings" active: 0component SidebarMenu items: "Dashboard,Users,Settings" icons: "home,users,settings" active: 1 variant: primaryRendering: Vertical list of menu items with one highlighted as active; icons (if provided) match the active color for the selected item
Sidebar
Section titled “Sidebar”Side navigation panel.
Properties:
title(string): Sidebar titleitems(string, CSV): Navigation item labels
Example:
component Sidebar title: "Navigation" items: "Home,Profile,Settings"component Sidebar title: "Dashboard" items: "Overview,Users,Reports,Logs"Rendering: Vertical panel with title and navigation items
Breadcrumbs
Section titled “Breadcrumbs”Navigation hierarchy showing current page location.
Properties:
items(string, CSV): Breadcrumb labels (required)separator(string, optional): Separator character between items (default: ”/”)
Example:
component Breadcrumbs items: "Home,Users,Detail"component Breadcrumbs items: "Dashboard,Products,Electronics,Laptops" separator: ">"component Breadcrumbs items: "Admin,Settings,Preferences" separator: " > "Rendering: Horizontal path showing navigation hierarchy
Tabbed interface with multiple panels.
Properties:
items(string, CSV): Tab labelsinitialActive(number, optional): Starting tab index for editors and play testers (default:0). Design-time default.active(number, optional): Runtime active tab index. Managed bysetTabevents during play test.tabsId(identifier, optional): Links to alayout tabs(id: ...)container on the same screen.variant(string, optional): Active tab color -default|primary|secondary|success|warning|danger|info(default:default)size(enum, optional): Tab bar height -sm(32 px) |md(44 px) |lg(52 px) (default:md)radius(enum, optional): Active tab corner radius -none|sm|md|lg|full(default:md)icons(string, CSV, optional): Icon names per tab in the same order asitems(e.g.,"home,users,settings")flat(boolean, optional): Removes filled tab backgrounds; active tab is indicated by a colored underline only (default:false)
Example:
component Tabs items: "Overview,Details,Comments" active: 0component Tabs items: "Profile,Settings,Privacy,Security" active: 1component Tabs items: "Dashboard,Analytics,Reports" active: 0 variant: primarycomponent Tabs items: "Home,Users,Settings" active: 0 icons: "home,users,settings"component Tabs items: "Home,Profile,Settings" active: 1 flat: truecomponent Tabs items: "Overview,Details" active: 0 size: sm radius: full
// Linked to a layout tabs containercomponent Tabs items: "Profile,Settings,Billing" active: 0 tabsId: mainTabsRendering: Horizontal tabs with one highlighted as active. flat: true replaces filled active background with a slim underline indicator. icons embeds SVG icon symbols next to each tab label.
Data Components
Section titled “Data Components”Data table with rows and columns.
Properties:
columns(string, CSV): Column headers (required)rows(number): Number of rows to display (default: 5)rowsMock(number): Alias forrowsmock(string, CSV): Mock type by column position (for example:"name,city,amount")random(boolean): Iftrue, mock values vary on each render (default: deterministic)pagination(boolean): Enables pager controlspages(number): Total page count whenpaginationis enabledpaginationAlign(enum):left|center|right(default:right)actions(string, CSV): Action icon names (e.g."eye,edit,trash") rendered in right action columncaption(string): Footer caption textcaptionAlign(enum):left|center|right(auto-default based on pagination alignment)border(boolean): Draws the outer table border (default:false)background(boolean): Draws outer table background fill (default:false)
Example:
component Table columns: "Name,Email,Status" rows: 8component Table columns: "ID,Name,Email,Role" rows: 10component Table columns: "Date,Amount,Status,Notes" rows: 15component Table columns: "User,City,Amount" rows: 6 mock: "name,city,amount"component Table columns: "User,City,Amount" rows: 6 random: truecomponent Table columns: "User,Status" rows: 5 actions: "eye,edit,trash" caption: "Show 1 - 5 of 20" pagination: truecomponent Table columns: "User,Status" rows: 5 border: true background: trueRendering: Grid table with header row and mock data rows
Footer behavior:
captionandpaginationcan render together- if
captionAlignandpaginationAlignresolve to the same side, both render (stacked) and a semantic warning is emitted - when
captionorpaginationis enabled, extra bottom spacing is reserved so footer content is not glued to the table edge actionsadds a right-aligned action column with icon buttons and empty header text
Simple list of items.
Properties:
items(string, CSV): List item labelstitle(string, optional): List title/headeritemsMock(number, optional): Number of mock items to generatemock(string, optional): Mock type used whenitemsis not providedrandom(boolean): Iftrue, mock values vary on each render (default: deterministic)
Example:
component List items: "JavaScript,TypeScript,Python,Java"component List items: "Feature 1,Feature 2,Feature 3,Feature 4"component List title: "Recent Activity" items: "Login,Purchase,Invite,Export"component List title: "Cities" itemsMock: 5 mock: "city"component List title: "Cities" itemsMock: 5 mock: "city" random: trueRendering: Vertical list with bullet points or numbers
Media Components
Section titled “Media Components”Placeholder for image content.
Properties:
type(enum): Shape -square|landscape|portrait|avatar|iconicon(enum, optional): Icon name used whentype: icon. The icon fills the component area directly, without an inner border box.variant(string, optional): whentype: icon, tints the background and icon with the specified color (e.g.,primary,success,danger, or a custom key fromcolors). Behaves similarly toIconButtonvariants.height(number, optional): Explicit height in pixels. When set, the placeholder is rendered in cover mode — the image fills the entire area and is clipped to the bounding box via<clipPath>.circle(boolean, optional): Clips the image into a circle shape using a circular<clipPath>. Useful for avatars. Implies cover mode (default:false)
The background color adapts to the active theme — light gray in
lightmode, dark gray indarkmode.
Example:
component Image type: square height: 250component Image type: landscape height: 300component Image type: avatar height: 100 circle: truecomponent Image type: avatar height: 80 circle: truecomponent Image type: icon icon: "image" height: 120component Image type: icon icon: "user" variant: primary height: 80component Image type: icon icon: "shield" variant: success height: 80Rendering: Rectangular placeholder with appropriate aspect ratio. When height is set, the placeholder uses cover-mode clipping. When circle: true, the image is clipped to a circle; when type: icon, the specified icon is centered and fills the available space.
Icon symbol.
Properties:
type(enum): Icon identifier (built-in icon catalog)size(enum):xs|sm|md|lg|xl(default:md)variant(string): Color variant (default, built-ins, or custom key incolors)circle(boolean, optional): Renders the icon inside a tinted circular background badge (default:false)
Example:
component Icon type: "search"component Icon type: "settings"component Icon type: "download"component Icon type: "home" variant: primarycomponent Icon type: "user" size: lg circle: true variant: primarycomponent Icon type: "bell" size: xl circle: true variant: warningRendering: Small icon symbol inline with text. When circle: true, the icon is displayed inside a colored circular badge matching the variant tint.
Display Components
Section titled “Display Components”Divider
Section titled “Divider”Horizontal or vertical separator line.
Properties:
- None required
Example:
component DividerRendering: Thin horizontal line for visual separation
Separate
Section titled “Separate”Invisible spacer used to separate nearby elements without drawing a line.
Properties:
size(enum): Space token -none|xs|sm|md|lg|xl(default:md)
Example:
component Separate size: smcomponent Separate size: lgRendering: Adds vertical/horizontal blank space only
Small label/tag for status or categorization.
Properties:
text(string): Badge labelvariant(string): Style -default|primary|secondary|success|warning|danger|info(default:default)size(enum, optional): Badge size —xs(16 px) |sm(20 px) |md(22 px) |lg(26 px) |xl(32 px) (default:md)padding(number, optional): Custom horizontal padding in pixels, overriding the size-derived default
Example:
component Badge text: "New" variant: primarycomponent Badge text: "Active" variant: successcomponent Badge text: "Alert" variant: warningcomponent Badge text: "xs" variant: info size: xscomponent Badge text: "Large" variant: danger size: xlcomponent Badge text: "Wide" variant: primary padding: 20Rendering: Small rounded label with colored background. size controls the overall height and font scale. padding overrides horizontal inset when fine-tuning label width.
Hyperlink text.
Properties:
text(string): Link textvariant(string): Link color variant -primary|secondary|success|warning|danger|info(default:primary)size(enum):xs|sm|md|lg|xl(default:md)
Example:
component Link text: "Click here" variant: primarycomponent Link text: "Learn more" variant: infocomponent Link text: "Read docs" variant: primary size: lgcomponent Link text: "Tiny link" variant: secondary size: xsRendering: Underlined text using the selected variant color
Size note: xs/xl extend the scale below/above the standard sm–lg range. Uses the same action size scale as Button and IconButton.
Alert/notification message box.
Properties:
variant(string): Visual variant -primary|secondary|success|warning|danger|info(default:info)title(string, optional): Bold title shown above texttext(string): Alert body message
Example:
component Alert variant: "success" title: "Saved" text: "Changes saved successfully"component Alert variant: "danger" title: "Error" text: "Something went wrong"component Alert variant: "warning" title: "Warning" text: "This action cannot be undone"component Alert variant: "info" title: "Info" text: "New updates available"Rendering: Colored box with icon, title, and message
Information Display
Section titled “Information Display”Statistics card displaying metric and value.
Properties:
title(string): Metric label/titlevalue(string): Metric value to displaycaption(string, optional): Secondary text shown below valueicon(string, optional): Icon name rendered in the top-right badge
Example:
component Stat title: "Total Users" value: "1,234"component Stat title: "Revenue" value: "$45,678" caption: "vs last month"component Stat title: "Growth" value: "+12.5%" icon: "trending-up"Rendering: Card with large value and small label below
Generic content card placeholder component.
Properties:
title(string): Card titletext(string): Card text content
Example:
component Card title: "Plan" text: "Summary details"component Card title: "Profile" text: "Account information"Rendering: Generic bordered placeholder block
Code block display.
Properties:
code(string): Code content to display
Example:
component Code code: "const x = 10; console.log(x);"component Code code: "function sum(a, b) { return a + b; }"component Code code: "SELECT * FROM users WHERE active = true;"Rendering: Monospace text in gray background box
Placeholder for various chart types.
Properties:
type(string): Chart type -bar|line|pie|area(default:bar)height(number): Height in pixels (default: 200) Example:
component Chart type: "bar" height: 250component Chart type: "line" height: 300component Chart type: "pie" height: 200Rendering: Deterministic chart placeholders with upward trend and subtle fluctuations
Modal & Overlay
Section titled “Modal & Overlay”Modal dialog overlay with optional title header, body content, and footer actions.
Parameters (on layout modal):
id(identifier, optional): Forshow/hide/toggletargetingtitle(string, optional): Header textvisible(boolean, optional): Initial visibility (default:true)closable(boolean, optional): Show close button (default:true, requirestitle)size(enum, optional):sm|md|lg(default:md)onClose(action, optional): Fires when close button is clicked
Example:
layout modal(id: confirmModal, title: "Delete?", closable: true) { body { component Text text: "This cannot be undone." } footer { component Button text: "Cancel" onClick: hide(self) component Button text: "Delete" variant: danger onClick: hide(self) }}component Button text: "Delete Item" variant: danger onClick: show(confirmModal)Rendering: Centered overlay with backdrop, header, and body/footer content
Component Summary
Section titled “Component Summary”| Component | Type | Use Case |
|---|---|---|
| Heading | Text | Page titles |
| Text | Text | Body content |
| Label | Text | Form labels |
| Input | Input | Single-line input |
| Textarea | Input | Multi-line input |
| Select | Input | Dropdown choice |
| Checkbox | Input | Multiple choice |
| Radio | Input | Single choice |
| Toggle | Input | Boolean toggle |
| Button | Button | Clickable action |
| IconButton | Button | Icon-based action |
| Topbar | Navigation | Header bar |
| SidebarMenu | Navigation | Vertical menu |
| Sidebar | Navigation | Side panel |
| Breadcrumbs | Navigation | Navigation path |
| Tabs | Navigation | Tabbed content |
| Table | Data | Data grid |
| List | Data | Item list |
| Image | Media | image type |
| Icon | Media | Icon symbol |
| Divider | Display | Visual separator |
| Separate | Display | Invisible spacer |
| Badge | Display | Status label |
| Link | Display | Underlined action |
| Alert | Display | Alert message |
| Stat | Info | Metric display |
| Card | Info | Generic content card |
| Code | Info | Code block |
| Chart | Info | Chart area |
| Modal | Overlay | Dialog box |
Total: 30 Components