Switch
ui.widgets.SwitchUn interrupteur pour les réglages qui s'appliquent immédiatement.
BEHAVIOR CONTRACT
États off, on et disabled bien distincts, avec sémantique clavier et accessibilité.
RECORDED INTERACTION
Le harness bascule le switch Off ; la piste et le texte d'état changent ensemble.
pub fn buildSwitch(scope: *ui.Scope, cx: *ui.Cx) anyerror!*ui.Node {
const a = cx.allocator;
const c = try col(cx, 12);
const status = try ui.text(cx, "toggled → (none)", .{ .font_size = 13, .color = light.color.fg_secondary });
status.meta.ownership.meta.test_id = "story.switch.status";
try c.appendChild(a, status);
const story = try cx.bindState(SwitchStory, .{ .status = status });
const off_switch = try W.Switch(.{
.label_text = "Off",
.initial_checked = false,
.on_change = ui.Cx.boolHandlerFrom(SwitchStory, story, SwitchStory.onChange),
}).mount(scope, cx);
off_switch.meta.ownership.meta.test_id = "story.switch.off";
try c.appendChild(a, off_switch);
try c.appendChild(a, try W.Switch(.{ .label_text = "On", .initial_checked = true }).mount(scope, cx));
try c.appendChild(a, try W.Switch(.{ .label_text = "Disabled", .disabled = true }).mount(scope, cx));
return c;
}Le code source tel quel de la story dans le Storybook (zenit 5f9add5+wip 2026-09-30). W désigne ui.widgets ; col / row / label sont de petits helpers de mise en page du Storybook.
SwitchProps
ui.widgets.Switchfn Switch(props: SwitchProps) SwitchBuilderChamp
Type
Défaut
Description
initial_checkedboolfalse初始开关态。**只在 mount 时读取一次**(语义同 CheckboxProps.initial_checked)。
label_text?[]const u8null—
disabledboolfalse—
on_change?core.HandlerRefnull—
state_id?u64null—
*Node
ui.widgets.Switchmount renvoie directement *Node : ajoutez-le à un parent.