diff --git a/apps/web/components/chain/ChainStarter.tsx b/apps/web/components/chain/ChainStarter.tsx
index 4e56fdd..78cfe65 100644
--- a/apps/web/components/chain/ChainStarter.tsx
+++ b/apps/web/components/chain/ChainStarter.tsx
@@ -5,6 +5,7 @@ import { Play } from "lucide-react";
import { Button } from "@/components/ui/Button";
import { Field } from "@/components/ui/Field";
+import { Radio } from "@/components/ui/Radio";
import { SectionHeader } from "@/components/ui/SectionHeader";
import { TextInput } from "@/components/ui/TextInput";
import { CHAIN_KINDS, type ChainKind } from "@/lib/chain/chain";
@@ -58,8 +59,7 @@ export function ChainStarter({ onStart, disabled }: ChainStarterProps) {
key={kind.key}
className="flex items-start gap-2 text-sm text-ink"
>
-
-
{onEdit ? (
{selectable ? (
- onToggle(index)}
className="mt-1"
diff --git a/apps/web/components/ui/Checkbox.tsx b/apps/web/components/ui/Checkbox.tsx
new file mode 100644
index 0000000..f6cf0b9
--- /dev/null
+++ b/apps/web/components/ui/Checkbox.tsx
@@ -0,0 +1,20 @@
+import type { InputHTMLAttributes, ReactNode } from "react";
+
+import { checkboxClass } from "@/lib/ui/variants";
+
+interface CheckboxProps extends Omit, "type"> {
+ label?: ReactNode;
+}
+
+// 勾选框:无 label 时只渲染受控原生 input(供已有