Skip to content

UI Tags Reference (ui:) ​

Complete reference for all ui: namespace tags in the Quantum Framework. These tags are used to build user interfaces that compile to HTML, Desktop (pywebview), or Terminal (Textual) targets.

Layout Containers ​

ui:window ​

Top-level window container for UI applications.

xml
<ui:window title="My Application">
  <ui:vbox padding="lg">
    <ui:text>Hello World</ui:text>
  </ui:vbox>
</ui:window>
AttributeTypeDefaultDescription
titlestring-Window title
+ Layout Attributes

ui:vbox ​

Vertical flex container. Children are stacked vertically.

xml
<ui:vbox gap="md" padding="lg" align="center">
  <ui:text>Item 1</ui:text>
  <ui:text>Item 2</ui:text>
  <ui:text>Item 3</ui:text>
</ui:vbox>
AttributeTypeDefaultDescription
+ Layout Attributes

ui:hbox ​

Horizontal flex container. Children are arranged horizontally.

xml
<ui:hbox gap="md" justify="between">
  <ui:button>Left</ui:button>
  <ui:spacer />
  <ui:button>Right</ui:button>
</ui:hbox>
AttributeTypeDefaultDescription
+ Layout Attributes

ui:grid ​

CSS grid container for complex layouts.

xml
<ui:grid columns="3" gap="md">
  <ui:card>1</ui:card>
  <ui:card>2</ui:card>
  <ui:card>3</ui:card>
</ui:grid>

<!-- Custom column template -->
<ui:grid columns="1fr 2fr 1fr" gap="lg">
  <ui:panel>Sidebar</ui:panel>
  <ui:panel>Main</ui:panel>
  <ui:panel>Sidebar</ui:panel>
</ui:grid>
AttributeTypeDefaultDescription
columnsstring-Column definition (number or CSS template)
+ Layout Attributes

ui:panel ​

Bordered container with optional title.

xml
<ui:panel title="Settings" collapsible="true">
  <ui:input bind="name" />
  <ui:input bind="email" />
</ui:panel>
AttributeTypeDefaultDescription
titlestring-Panel title
collapsiblebooleanfalseAllow collapsing
+ Layout Attributes

ui:tabpanel ​

Tabbed content container.

xml
<ui:tabpanel>
  <ui:tab title="General">
    <ui:text>General settings</ui:text>
  </ui:tab>
  <ui:tab title="Advanced">
    <ui:text>Advanced settings</ui:text>
  </ui:tab>
</ui:tabpanel>
AttributeTypeDefaultDescription
+ Layout Attributes

Children: ui:tab


ui:tab ​

Individual tab inside a tabpanel.

xml
<ui:tab title="Settings">
  <ui:form>...</ui:form>
</ui:tab>
AttributeTypeDefaultDescription
titlestringrequiredTab title
+ Layout Attributes

Parent: ui:tabpanel


ui:accordion ​

Collapsible sections container.

xml
<ui:accordion>
  <ui:section title="Section 1" expanded="true">
    Content for section 1
  </ui:section>
  <ui:section title="Section 2">
    Content for section 2
  </ui:section>
</ui:accordion>
AttributeTypeDefaultDescription
+ Layout Attributes

Children: ui:section


ui:section ​

Collapsible section inside an accordion.

xml
<ui:section title="Details" expanded="true">
  <ui:text>Section content here</ui:text>
</ui:section>
AttributeTypeDefaultDescription
titlestringrequiredSection title
expandedbooleanfalseInitial expanded state
+ Layout Attributes

Parent: ui:accordion


ui:spacer ​

Flexible space filler.

xml
<ui:hbox>
  <ui:text>Left</ui:text>
  <ui:spacer />
  <ui:text>Right</ui:text>
</ui:hbox>

<!-- Fixed size spacer -->
<ui:spacer size="20px" />
AttributeTypeDefaultDescription
sizecss-size-Fixed size (flexible if not set)
+ Layout Attributes

ui:rule ​

Horizontal rule/separator.

xml
<ui:vbox>
  <ui:text>Above</ui:text>
  <ui:rule />
  <ui:text>Below</ui:text>
</ui:vbox>

Form Components ​

ui:form ​

Form container with validation support.

xml
<ui:form on-submit="handleSubmit" validation="both" error-display="inline">
  <ui:formitem label="Email">
    <ui:input bind="email" type="email" required="true" />
  </ui:formitem>
  <ui:button type="submit" variant="primary">Submit</ui:button>
</ui:form>
AttributeTypeDefaultDescription
on-submitexpression-Submit handler
validationModeenumbothValidation: client, server, both
errorDisplayenuminlineError display: inline, summary, both
novalidatebooleanfalseDisable HTML5 validation
+ Layout Attributes

Children: ui:formitem, ui:input, ui:select, ui:button, ui:validator


ui:formitem ​

Form item wrapper with label.

xml
<ui:formitem label="Username" required="true">
  <ui:input bind="username" placeholder="Enter username" />
</ui:formitem>
AttributeTypeDefaultDescription
labelstring-Field label
+ Layout Attributes

ui:validator ​

Custom validation rule for forms.

xml
<ui:validator name="passwordStrength"
              pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$"
              message="Password must have uppercase, lowercase, and number" />

<ui:validator name="passwordMatch"
              match="password"
              message="Passwords must match" />
AttributeTypeDefaultDescription
namestring-Validator name
patternregex-Regex pattern
matchstring-Field name to match against
minnumber-Minimum value
maxnumber-Maximum value
minlengthinteger-Minimum length
maxlengthinteger-Maximum length
messagestring-Error message
fieldstring-Target field
triggerenumsubmitWhen to validate: blur, change, input, submit
expressionstring-Custom JS expression

ui:input ​

Text input widget with validation support.

xml
<ui:input bind="email" type="email" placeholder="Enter email" required="true" />
<ui:input bind="age" type="number" min="0" max="120" />
<ui:input bind="password" type="password" minlength="8" pattern="(?=.*\d)" />
AttributeTypeDefaultDescription
bindexpression-Two-way binding variable
typeenumtextInput type: text, password, email, number, tel, url, search, date, time, datetime-local
placeholderstring-Placeholder text
on-changeexpression-Change handler
on-submitexpression-Submit handler
requiredbooleanfalseField is required
minnumber-Minimum value
maxnumber-Maximum value
minlengthinteger-Minimum length
maxlengthinteger-Maximum length
patternregex-Validation pattern
errorMessagestring-Custom error message
+ Layout Attributes

ui:select ​

Dropdown select widget.

xml
<ui:select bind="country">
  <ui:option value="">Select country</ui:option>
  <ui:option value="us">United States</ui:option>
  <ui:option value="uk">United Kingdom</ui:option>
</ui:select>

<!-- From data source -->
<ui:select bind="user" source="{users}">
  <ui:option value="{item.id}" label="{item.name}" />
</ui:select>

<!-- Simple options -->
<ui:select bind="size" options="S,M,L,XL" />
AttributeTypeDefaultDescription
bindexpression-Binding variable
optionsstring-Comma-separated options
sourceexpression-Data source for options
+ Layout Attributes

Children: ui:option


ui:option ​

Option for select, menu, or dropdown.

xml
<ui:option value="1" label="Option 1" />
<ui:option value="delete" label="Delete" on-click="handleDelete" />
AttributeTypeDefaultDescription
valuestring-Option value
labelstring-Display label
on-clickexpression-Click handler

ui:checkbox ​

Checkbox widget for boolean values.

xml
<ui:checkbox bind="agreeToTerms" label="I agree to the terms" />
AttributeTypeDefaultDescription
bindexpression-Boolean variable to bind
labelstring-Checkbox label
+ Layout Attributes

ui:switch ​

Toggle switch widget (on/off).

xml
<ui:switch bind="darkMode" label="Dark Mode" />
AttributeTypeDefaultDescription
bindexpression-Boolean variable to bind
labelstring-Switch label
+ Layout Attributes

ui:radio ​

Radio button group.

xml
<ui:radio bind="size" options="S,M,L,XL" />
AttributeTypeDefaultDescription
bindexpression-Binding variable
optionsstring-Comma-separated options
+ Layout Attributes

ui:button ​

Clickable button widget.

xml
<ui:button on-click="handleSave" variant="primary">Save</ui:button>
<ui:button type="submit" variant="success">Submit</ui:button>
<ui:button disabled="{!isValid}" variant="danger">Delete</ui:button>
AttributeTypeDefaultDescription
on-clickexpression-Click handler
variantenum-Style: primary, secondary, danger, success
disabledbooleanfalseDisable the button
+ Layout Attributes

Data Display ​

ui:text ​

Text display widget.

xml
<ui:text size="xl" weight="bold">Title</ui:text>
<ui:text color="muted">Subtitle</ui:text>
AttributeTypeDefaultDescription
sizeenum-Size: xs, sm, md, lg, xl, 2xl
weightenum-Weight: normal, bold, light
+ Layout Attributes

ui:table ​

Data table widget.

xml
<ui:table source="{users}">
  <ui:column key="name" label="Name" />
  <ui:column key="email" label="Email" />
  <ui:column key="role" label="Role" align="center" />
</ui:table>
AttributeTypeDefaultDescription
sourceexpressionrequiredData source binding
+ Layout Attributes

Children: ui:column


ui:column ​

Table column definition.

xml
<ui:column key="name" label="Name" width="200px" />
<ui:column key="price" label="Price" align="right" />
AttributeTypeDefaultDescription
keystringrequiredData field key
labelstring-Column header label
widthcss-size-Column width
alignenum-Alignment: left, center, right

Parent: ui:table


ui:list ​

Repeating list widget.

xml
<ui:list source="{items}" as="item">
  <ui:item>
    <ui:text>{item.name}</ui:text>
  </ui:item>
</ui:list>
AttributeTypeDefaultDescription
sourceexpression-Data source binding
asstring-Loop variable name
+ Layout Attributes

Children: ui:item


ui:item ​

List item container.

xml
<ui:item>
  <ui:hbox justify="between">
    <ui:text>{item.name}</ui:text>
    <ui:badge>{item.status}</ui:badge>
  </ui:hbox>
</ui:item>
AttributeTypeDefaultDescription
+ Layout Attributes

Parent: ui:list


ui:card ​

Card container with header, body, and footer sections.

xml
<ui:card title="Product" subtitle="Electronics" image="/product.jpg">
  <ui:card-body>
    <ui:text>Product description</ui:text>
  </ui:card-body>
  <ui:card-footer>
    <ui:button variant="primary">Buy Now</ui:button>
  </ui:card-footer>
</ui:card>
AttributeTypeDefaultDescription
titlestring-Card title
subtitlestring-Card subtitle
imageurl-Header image
variantenum-Style: default, elevated, outlined
+ Layout Attributes

Children: ui:card-header, ui:card-body, ui:card-footer


ui:image ​

Image display widget.

xml
<ui:image src="/images/logo.png" alt="Logo" width="200px" />
AttributeTypeDefaultDescription
srcurlrequiredImage source URL
altstring-Alternative text
+ Layout Attributes

ui:avatar ​

User avatar with image or initials.

xml
<ui:avatar src="/user.jpg" name="John Doe" size="lg" status="online" />
<ui:avatar name="Jane Smith" size="md" shape="circle" />
AttributeTypeDefaultDescription
srcurl-Image URL
namestring-Name for initials fallback
sizeenum-Size: xs, sm, md, lg, xl
shapeenumcircleShape: circle, square
statusenum-Status indicator: online, offline, away, busy
+ Layout Attributes

ui:badge ​

Small status badge.

xml
<ui:badge variant="success">Active</ui:badge>
<ui:badge variant="danger">3</ui:badge>
AttributeTypeDefaultDescription
variantenum-Style: primary, secondary, danger, success, warning
colorcss-color-Custom color
+ Layout Attributes

ui:chart ​

Simple charts (bar, line, pie).

xml
<ui:chart type="bar" labels="Jan,Feb,Mar" values="10,20,30" title="Sales" />
<ui:chart type="pie" source="{distributionData}" colors="red,blue,green" />
AttributeTypeDefaultDescription
typeenumbarChart type: bar, line, pie, doughnut
sourceexpression-Data source
labelsstring-Comma-separated labels
valuesstring-Comma-separated values
titlestring-Chart title
colorsstring-Comma-separated colors
+ Layout Attributes

ui:markdown ​

Markdown rendered content.

xml
<ui:markdown>
# Heading

This is **bold** and *italic* text.

- List item 1
- List item 2
</ui:markdown>
AttributeTypeDefaultDescription
+ Layout Attributes

Feedback Components ​

ui:alert ​

Alert/notification box.

xml
<ui:alert variant="success" dismissible="true">
  Operation completed successfully!
</ui:alert>

<ui:alert variant="danger" title="Error">
  An error occurred while processing your request.
</ui:alert>
AttributeTypeDefaultDescription
titlestring-Alert title
variantenuminfoStyle: info, success, warning, danger
dismissiblebooleanfalseAllow dismissing
iconstring-Icon name
+ Layout Attributes

ui:modal ​

Modal/dialog container.

xml
<ui:modal title="Confirm" id="confirmModal" size="md">
  <ui:text>Are you sure you want to delete this item?</ui:text>
  <ui:hbox gap="md" justify="end">
    <ui:button on-click="closeModal">Cancel</ui:button>
    <ui:button on-click="confirmDelete" variant="danger">Delete</ui:button>
  </ui:hbox>
</ui:modal>
AttributeTypeDefaultDescription
titlestring-Modal title
idstring-Modal ID for targeting
openbooleanfalseInitial open state
closablebooleantrueShow close button
sizeenum-Size: sm, md, lg, xl, full
+ Layout Attributes

ui:tooltip ​

Tooltip on hover.

xml
<ui:tooltip content="Click to save" position="bottom">
  <ui:button>Save</ui:button>
</ui:tooltip>
AttributeTypeDefaultDescription
contentstringrequiredTooltip text
positionenumtopPosition: top, bottom, left, right
+ Layout Attributes

ui:dropdown ​

Dropdown menu.

xml
<ui:dropdown label="Actions" trigger="click" align="left">
  <ui:option label="Edit" on-click="handleEdit" />
  <ui:option label="Duplicate" on-click="handleDuplicate" />
  <ui:option label="Delete" on-click="handleDelete" />
</ui:dropdown>
AttributeTypeDefaultDescription
labelstring-Trigger button label
triggerenumclickTrigger mode: click, hover
alignenumleftMenu alignment: left, right
+ Layout Attributes

Children: ui:option


ui:progress ​

Progress bar widget.

xml
<ui:progress value="{progress}" max="100" />
AttributeTypeDefaultDescription
valueexpression-Current value binding
maxnumber100Maximum value
+ Layout Attributes

ui:loading ​

Loading indicator widget.

xml
<ui:loading text="Loading data..." />
AttributeTypeDefaultDescription
textstring-Loading text
+ Layout Attributes

ui:skeleton ​

Loading skeleton placeholder.

xml
<ui:skeleton variant="text" lines="3" />
<ui:skeleton variant="circle" width="48px" height="48px" />
<ui:skeleton variant="card" width="300px" height="200px" />
AttributeTypeDefaultDescription
variantenumtextShape: text, circle, rect, card
linesinteger1Number of lines for text variant
animatedbooleantrueAnimate the skeleton
+ Layout Attributes

Hyperlink widget.

xml
<ui:link to="/about">About Us</ui:link>
<ui:link to="https://example.com" external="true">External Site</ui:link>
AttributeTypeDefaultDescription
tourlrequiredTarget URL
externalbooleanfalseOpen in new tab
+ Layout Attributes

ui:breadcrumb ​

Navigation breadcrumbs.

xml
<ui:breadcrumb separator="/">
  <ui:breadcrumb-item label="Home" to="/" />
  <ui:breadcrumb-item label="Products" to="/products" />
  <ui:breadcrumb-item label="Details" />
</ui:breadcrumb>
AttributeTypeDefaultDescription
separatorstring/Separator character
+ Layout Attributes

Children: ui:breadcrumb-item


ui:pagination ​

Pagination controls.

xml
<ui:pagination total="{totalItems}" pageSize="20" bind="currentPage" on-change="loadPage" />
AttributeTypeDefaultDescription
totalexpression-Total items
pageSizenumber10Items per page
currentnumber1Current page
bindexpression-Binding for current page
on-changeexpression-Page change handler
showTotalbooleanfalseShow total count
+ Layout Attributes

ui:header ​

Page/window header.

xml
<ui:header title="Dashboard" />
AttributeTypeDefaultDescription
titlestring-Header title
+ Layout Attributes

Page/window footer.

xml
<ui:footer>
  <ui:text>Copyright 2024</ui:text>
</ui:footer>
AttributeTypeDefaultDescription
+ Layout Attributes

Animation ​

ui:animate ​

Animation wrapper container.

xml
<ui:animate type="fade" duration="300ms" trigger="on-load">
  <ui:panel>Animated content</ui:panel>
</ui:animate>

<ui:animate type="slide-up" delay="200ms" easing="ease-out">
  <ui:card>Slides in from bottom</ui:card>
</ui:animate>
AttributeTypeDefaultDescription
typeenum-Animation type (see below)
durationstring300msAnimation duration
delaystring0msStart delay
easingenumeaseEasing: ease, ease-in, ease-out, ease-in-out, linear, spring, bounce
repeatstring1Repeat count or infinite
triggerenumon-loadTrigger: on-load, on-hover, on-click, on-visible, none
+ Layout Attributes

Animation Types:

  • fade, fade-in, fade-out
  • slide, slide-left, slide-right, slide-up, slide-down
  • scale, scale-in, scale-out
  • rotate
  • bounce, pulse, shake

Layout Attributes ​

These attributes are available on most UI components:

AttributeTypeDescription
gapcss-sizeGap between children
paddingcss-sizeInner padding
margincss-sizeOuter margin
alignenumCross-axis alignment: start, center, end, stretch
justifyenumMain-axis alignment: start, center, end, between, around
widthcss-sizeWidth
heightcss-sizeHeight
backgroundcss-colorBackground color
colorcss-colorText color
borderstringBorder style
idstringElement ID
classstringCSS class(es)
visibleexpressionVisibility binding

Size Values ​

Size attributes accept:

  • Pixels: 10px, 100px
  • Rem: 1rem, 2rem
  • Percentage: 50%, 100%
  • Keywords: auto, fill
  • Design tokens: sm, md, lg, xl

Color Values ​

Color attributes accept:

  • Named colors: red, blue, green
  • Hex: #ff0000, #00ff00
  • RGB: rgb(255, 0, 0)
  • Design tokens: primary, secondary, danger, success, warning, muted

Quantum Framework - Simplicity over configuration