DEVELOPER GUIDE / COMPONENT LAB

The Octoscript–Makepad component library

Component kits connect generated source to real controls. Cards name titles, fields, choices and actions; kits supply themes and reusable compositions; Makepad draws and handles input on native platforms and in browser WebAssembly. Start the real Makepad / WASM lab below.

Three component contracts

FamilyInputPurpose
L0 semantic rolesTextTitle(text: copy.title), Field(…), Chip(…)Cards with explicit data origins, finite transitions and bounded realization.
Material semantic objects{t: "button", variant: "filled", label: "Confirm", …}Compose Material 3 roles, states and variants; the renderer owns styling.
Source-derived design kitsTaskplanButton, AtroFormField, CamoTrackRowReuse extracted Sketch tokens, named parts and whole compositions while preserving source IDs.

Flutter examples are designs and interactions recreated with Octoscript–Makepad. They do not embed Flutter Engine or promise a widget-for-widget Flutter SDK port. Every kit needs an explicit input contract and support scope.

A Material button that changes state

{t: "button", variant: "filled", label: "Confirm selection",
 key: "lab_confirm", tap: 1}
{t: "text", variant: "titleMedium",
 text: "Confirmed: " + N("lab_confirm", 0)}

These are two nodes in the same children array. The button writes 1 to lab_confirm; the host reevaluates and the label reads that slot. A key names the destination but still needs tap: 1 or an explicit action. A painted button without state wiring does not establish interaction. A different kit can retain meaning, values and events while changing presentation.

Catalog and support scope

The catalog below groups actual constructors, the Material vocabulary and registered kits. A declared name, correct rendering and working interaction are separate findings. The browser lab demonstrates the operations verified here. Sensors, permissions, system dialogs and external services still require their platform hosts.

Material’s documented state writers include button, chip, checkbox, segmented and tabs. Wiring for radio, toggle, trailing switches, fab, dropdown and slider differs between hosts. Input, search and date/time pickers also need platform-specific keyboard and dialog checks. A catalog entry does not imply equal behavior across backends.

The Flutter kit includes Material 3, Cupertino Gallery, Form App, Date Planner, Compass, Platform Design, Photo Search, Testing, navigation, animation and more. Some visual elements offer only navigation or illustration. Device-capability examples report unavailable in the browser instead of inventing phone data. The Material lab deliberately uses existing state-wired controls.

Reusing a source-derived component

A registered kit has four pieces: tokens.json contains measured colors, fonts, spacing and effects; components.l0 holds repeated structures; roles.l0 provides public names; kit.json defines semantic roles, types, child slots and source receipts.

CamoTrackRow reuses artwork, title, artist and play actions. TaskplanProjectCard reuses title, date, status and card activation. Original Sketch IDs bind to named part children inside a complete composition. Unknown parts, mismatched root identities and duplicate realized IDs fail. A host registers both octoscript-widgets::design and octoscript-widgets::kit.

Try it in the browser

The demo draws its content and controls through Rust → WebAssembly → Makepad WebGL. The surrounding page only selects examples, sets a theme and reports actual runtime state. Choose delivery speed, toggle preferences and confirm in Material; navigate subpages and color/type examples in Flutter. State lives only in the current demo instance and resets on reload.

This Rust widget state is separate from an app database or agent memory. The app and agent guide explains those stores and their access rules.

The renderer loads on demand. WebAssembly and WebGL are required; a failed start exposes a retry action. Canvas assistive-technology support differs from HTML forms, so the catalog, syntax and instructions remain accessible HTML.

Maintenance and sources

Syntax and the four layers define generation boundaries. Pixels to components shows concrete source mapping. The catalog is derived from the Material vocabulary, Flutter notes and native kit contract. Download pinned source revisions and a build digest from the demo panel.

RUST → WASM → MAKEPAD

Designs you can operate.

Explore Material components and Flutter example designs, drawn by the real Makepad renderer.

WebAssembly / WebGL

Choose a delivery speed, tap Gift wrap, check Send updates and confirm. The state below comes from real slots inside WASM.

Runtime
Not started
Last action
—
Component nodes
—
Start to inspect state

Loads on demand. State lasts for this instance. Flutter designs are Octoscript recreations; some nodes only illustrate or navigate. Device capabilities are not simulated.

Makepad component lab

Start the lab to interact here.

MATERIAL 3 · FLUTTER DESIGNS

Requires WebAssembly and WebGL. The component catalog and instructions remain readable HTML; canvas accessibility differs from HTML forms. Full catalog and support scope →

COMPONENT INDEX

Find a component by role

12 groups

L0

Layout & structure

SurfacePanelCardColRowGridRevealRuleSpaceBandBubbleTabBarTab

Themes own presentation; cards declare structure and meaning.

L0

Text & data

TextHeroTextTitleTextBodyTextStatTextRowTextEyebrowTextCaptionTextValueTile

Business values bind sources; copy declares origin and language.

L0

Input, actions & media

FieldChipFabIconAvatarPhotoThumbMap

Events bind total transitions; maps and images need host data.

L0

Charts & environment

WeatherIconTempBarSunArcMoonPhaseSatelliteAqiContourIndicatorPlotStockPlot

Resolve declared locations, periods or identifiers through host capabilities.

Material

State-wired controls

buttonchipcheckboxsegmentedtabs

Write and read state slots. The lab exercises buttons, chips, checkbox and segmented selection.

Material

Content & layout

scrollcolrowflowstackspacertextcarddividerbadgeiconimage

Material 3 roles and variants; the renderer supplies geometry, color and weight.

Material

Verify per host

toggleradiosliderinputlistitemfabprogresssearchbardropdowndatepickertimepickernavbarnavrailcarousel

Names and visuals do not guarantee complete event wiring; see the support notes.

Design kits

Complete native compositions

KitButtonKitFormFieldKitTabBarKitBottomNavigationTaskplanProjectCardCamoTrackRow

Native buttons, text input, selection and navigation retain named source parts.

Design kits

Public theme roles

TaskplanButtonAtroButtonCamoButtonTaskplanFormFieldAtroFormFieldCamoFormFieldTaskplanTabBarAtroTabBarCamoTabBarCamoBottomNavigation

Registered theme families; kit contracts validate props, slots and tokens.

Flutter

Example designs

material_3_democupertino_galleryform_appdate_plannercompass_appplatform_designdesktop_photo_searchtesting_appnavigation_and_routinganimationsdynamic_themeveggieseasons

Octoscript recreations with varying interaction coverage; no Flutter Engine.

Flutter

Capability & technical examples

google_mapsplatform_channelspedometerbackground_isolate_channelsasset_transformationplatform_view_swiftweb_embeddingsimple_shadersimple_sdfadd_to_app

Some require a device bridge; browser-unavailable capabilities are identified.

Charts

Chart extensions

makepad-plotmakepad-d3

Chart types and D3-style composition in separate namespaces.

←All documentation