开发者指南 / COMPONENT LAB

Octoscript–Makepad 组件库

组件库连接生成源码与实际控件。卡片声明“标题、输入框、选择、操作”;kit 提供主题与可复用组合,Makepad 在原生平台或浏览器 WebAssembly 中绘制并处理输入。下方可直接启动真实 Makepad / WASM 演示。

三组组件契约

组件族输入形态适合什么
L0 语义角色TextTitle(text: copy.title)、Field(…)、Chip(…)生成有明确数据来源、有限状态与有界展开的卡片。
Material 语义对象{t: "button", variant: "filled", label: "Confirm", …}按 Material 3 的角色、状态、变体组合页面;renderer 负责样式。
来源设计 kitTaskplanButton、AtroFormField、CamoTrackRow 等复用 Sketch 中提取的 token、命名子部件与完整组件组合,保留来源 ID。

Flutter 示例是用 Octoscript–Makepad 重建的设计与交互,没有把 Flutter Engine 嵌进来,也不等于 Flutter SDK 的逐控件移植。所有 kit 都必须说明自己的输入契约与支持范围。

一个能改变状态的 Material 按钮

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

这是同一屏 children 数组中的两个节点。点击按钮向 lab_confirm 写入 1,宿主重新求值,下一节点从同一 slot 读出状态。key 只是写入目标,还需要 tap: 1 或显式 action;只有外观没有状态绑定的按钮不能算交互完成。更换 kit 时保持语义、值和事件,样式交给新的 renderer。

组件目录与支持范围

下方目录按实际 constructor、Material 词汇表和注册 kit 分类。声明存在、绘制正确、交互可用,是三个不同的验证结果。 WASM 演示只对本页实际验证的操作作承诺;设备传感器、权限、系统对话框和外部服务仍由相应宿主提供。

Material 当前已记录可写状态的控件包括 button、chip、checkbox、segmented 和 tabs。radio、toggle、尾部 switch、fab、dropdown、slider 在不同宿主的状态接线存在差异;input、searchbar、日期和时间选择等还需要对应平台的输入与对话框验证。不能因为目录中有名称就假定所有后端都具备同样行为。

Flutter kit 覆盖 Material 3、Cupertino Gallery、Form App、Date Planner、Compass、Platform Design、Photo Search、Testing、导航、动画等示例。部分视觉节点只有导航或展示;设备能力示例在浏览器中返回不可用说明,不伪造手机数据。此处的 Material 交互页特意使用已有可写状态的控件。

来源设计组件怎么复用?

一个注册 kit 包含四项:tokens.json 保存测量后的颜色、字体、间距与效果;components.l0 保存重复结构;roles.l0 提供易生成的公共名称;kit.json 声明语义角色、类型、子槽与来源凭据。

例如 CamoTrackRow 复用封面、曲名、艺人和播放操作,TaskplanProjectCard 复用标题、日期、状态与卡片点击。原始 Sketch part ID 绑定到完整组件内部的 part 名称,而不是把每个像素重新猜成一块矩形。未知 part、根 ID 不匹配或重复 realized ID 都应拒绝。宿主必须注册 octoscript-widgets::design 与 octoscript-widgets::kit。

在浏览器里体验

启动后,演示中的内容和控件由 Rust → WebAssembly → Makepad WebGL 绘制。页面外侧的选择器只负责选示例、切主题与显示实际运行状态。Material 页可选择配送方式、勾选偏好并确认;Flutter 页可进入子页面、切换颜色和排版示例。交互状态仅保留在当前演示实例,重载即清除。

演示按需加载,以免阅读文档时下载整个渲染器。需要浏览器支持 WebAssembly 与 WebGL;启动失败会显示重试入口。canvas 的辅助技术支持不同于网页表单,目录、语法和说明始终保留为可访问的 HTML 文本。

此处 Rust 组件状态与应用数据库、Agent 记忆分开。应用与 Agent 导读说明这些存储及其访问规则。

维护与来源

语言与四层链路定义生成边界;像素到组件的流程展示实际来源映射。组件依据 Material 词汇表、Flutter 示例说明 和 原生 kit 契约整理;演示的固定源码版本与构建摘要可在演示面板下载。

RUST → WASM → MAKEPAD

设计可以直接运行。

在浏览器里体验 Material 组件与 Flutter 示例设计。控件由真实 Makepad 渲染器绘制。

WebAssembly / WebGL

选择配送方式、点击 Gift wrap、勾选 Send updates,再点 Confirm selection。下方状态来自 WASM 内部的真实 slot。

运行状态
尚未启动
最近的动作
—
组件节点
—
启动后显示状态

按需加载。状态仅在当前实例中保留。Flutter 设计由 Octoscript 重建,部分节点只提供展示或导航;设备能力不在网页中模拟。

Makepad component lab

启动后,在这里直接操作。

MATERIAL 3 · FLUTTER DESIGNS

浏览器需要支持 WebAssembly 与 WebGL。组件目录与说明可直接阅读;canvas 控件的辅助技术支持不同于网页表单。 完整组件库与支持范围 →

COMPONENT INDEX

按能力找组件

12 个分组

L0

布局与结构

SurfacePanelCardColRowGridRevealRuleSpaceBandBubbleTabBarTab

主题决定外观;卡片声明结构与语义。

L0

文本与数据

TextHeroTextTitleTextBodyTextStatTextRowTextEyebrowTextCaptionTextValueTile

业务值绑定数据源;文案声明来源与语言。

L0

输入、操作与媒体

FieldChipFabIconAvatarPhotoThumbMap

事件绑定有限转换;地图和图片需要宿主数据。

L0

图表与环境

WeatherIconTempBarSunArcMoonPhaseSatelliteAqiContourIndicatorPlotStockPlot

按声明的地点、时间或标识获取数据;需要后端能力。

Material

已接线的状态控件

buttonchipcheckboxsegmentedtabs

既写 slot,也读回状态。本页演示其中的按钮、chip、checkbox 与分段选择。

Material

内容与布局

scrollcolrowflowstackspacertextcarddividerbadgeiconimage

Material 3 角色与变体;尺寸、颜色、字重由 renderer 管理。

Material

需要逐宿主验证

toggleradiosliderinputlistitemfabprogresssearchbardropdowndatepickertimepickernavbarnavrailcarousel

名称和视觉实现不保证完整事件接线;详见本页支持说明。

Design kits

原生完整组件

KitButtonKitFormFieldKitTabBarKitBottomNavigationTaskplanProjectCardCamoTrackRow

绑定原生 Button、TextInput、选择与导航事件,保留命名子部件。

Design kits

公共主题角色

TaskplanButtonAtroButtonCamoButtonTaskplanFormFieldAtroFormFieldCamoFormFieldTaskplanTabBarAtroTabBarCamoTabBarCamoBottomNavigation

注册的主题族;props、槽位与 token 由 kit 契约校验。

Flutter

示例设计

material_3_democupertino_galleryform_appdate_plannercompass_appplatform_designdesktop_photo_searchtesting_appnavigation_and_routinganimationsdynamic_themeveggieseasons

Octoscript 重建示例,交互覆盖各不相同;不是 Flutter Engine。

Flutter

能力与技术示例

google_mapsplatform_channelspedometerbackground_isolate_channelsasset_transformationplatform_view_swiftweb_embeddingsimple_shadersimple_sdfadd_to_app

部分依赖设备桥接,浏览器没有相应能力时会说明不可用。

Charts

扩展图表库

makepad-plotmakepad-d3

分别提供图表和 D3 风格组合,使用独立命名空间。

←全部文档