Advanced Authoring
Declarative helpers for bindings, metadata, visibility, responsive variants, and author intent.
Advanced authoring helpers in Quire compile to typed IR descriptors. They are not runtime functions, and they do not execute Quire source.
These helpers are pre-release language surface. Treat them as declarative metadata that consumers can preserve, inspect, and map into platform behavior.
Descriptor helpers
computed(key, value) labels a derived value while keeping the type of the underlying expression. bind(source, fallback?) emits an explicit binding descriptor with an optional compatible fallback. when(condition, consequent, alternate) is a named conditional expression helper.
responsive(base, sm?, md?, lg?, xl?) records responsive variant intent. Quire does not define breakpoints or CSS behavior; renderers and themes decide how to interpret the descriptor.
View and block metadata
seo(title, description, canonical?, image?) emits view-level metadata. a11y(label, role?, describedBy?) emits block-level accessibility metadata. The metadata is accepted by the schema, but renderer lanes decide how it maps to platform-specific attributes.
From examples/site/pricing.quire:
quire StretchPressPricing {
model {
page: StretchPressPage
navItems: StandardNavItem[]
legalItems: StandardNavItem[]
plans: StandardPricingPlan[]
faqItems: StandardFAQItem[]
}
route "/pricing"
locale locale("en-US", "ltr")
dir dir("ltr")
title page.metaTitle
seo seo(page.metaTitle, page.seoDescription, page.canonical, page.heroImage.url)
The same file uses token-backed variants and accessibility metadata on a section:
section comparison {
label "Comparison"
variant token("site.pricing.comparison")
a11y a11y("StretchPress plan comparison", "region")
grid comparisonGrid {
columns 4
Visibility
Standard blocks accept a typed Boolean visible prop. It is declarative visibility data for consumers of the IR, not a runtime branch executed by Quire.
When authors need structural branching, use if and else blocks. From examples/product.quire:
if product.available {
button addToCart {
label "Add to cart"
action commerce.cart.add(product.defaultVariant.id)
}
}
Authoring boundary
Advanced helpers do not create a scripting layer. Quire still compiles source to stretchpress.blocks.v1 data, with type checking performed against the active built-in and project schema.