('[data-flat-toggle="true"]');
+ expect(pill?.disabled).toBe(true);
+ act(() => pill?.dispatchEvent(new MouseEvent("click", { bubbles: true })));
+ expect(onChange).not.toHaveBeenCalled();
+ act(() => root.unmount());
+ });
+});
diff --git a/packages/studio/src/components/editor/propertyPanelFlatPrimitives.tsx b/packages/studio/src/components/editor/propertyPanelFlatPrimitives.tsx
index 6cc221735..e6dc9f1f7 100644
--- a/packages/studio/src/components/editor/propertyPanelFlatPrimitives.tsx
+++ b/packages/studio/src/components/editor/propertyPanelFlatPrimitives.tsx
@@ -375,3 +375,49 @@ export function FlatSelectRow({
);
}
+
+/* ------------------------------------------------------------------ */
+/* FlatToggle — 24×14 pill switch */
+/* ------------------------------------------------------------------ */
+
+export function FlatToggle({
+ label,
+ checked,
+ disabled,
+ onChange,
+}: {
+ label: string;
+ checked: boolean;
+ disabled?: boolean;
+ onChange: (next: boolean) => void;
+}) {
+ return (
+
+
+ {label}
+
+
+
+ );
+}