diff --git a/web/src/lib/components/kit/SchemaFields.svelte b/web/src/lib/components/kit/SchemaFields.svelte
index 576cca8..9597fce 100644
--- a/web/src/lib/components/kit/SchemaFields.svelte
+++ b/web/src/lib/components/kit/SchemaFields.svelte
@@ -1,6 +1,11 @@
{#each Object.entries(schema.fields) as [id, field] (id)}
- {#if field.spec.kind === "number" || field.spec.kind === "slider"}
-
- {:else if field.spec.kind === "color"}
-
- {:else if field.spec.kind === "select"}
-
- {:else if field.spec.kind === "checkbox"}
-
- {:else if field.spec.kind === "dimension"}
-
- onchange(id, v)}
- />
-
- {/if}
+ {@const Control = FIELDS[field.spec.kind]}
+ onchange(id, v)}
+ />
{/each}
diff --git a/web/src/lib/components/kit/fields/schema/CheckboxControl.svelte b/web/src/lib/components/kit/fields/schema/CheckboxControl.svelte
new file mode 100644
index 0000000..ea9df92
--- /dev/null
+++ b/web/src/lib/components/kit/fields/schema/CheckboxControl.svelte
@@ -0,0 +1,47 @@
+
+
+
+
+
diff --git a/web/src/lib/components/kit/fields/schema/ColorControl.svelte b/web/src/lib/components/kit/fields/schema/ColorControl.svelte
new file mode 100644
index 0000000..b33f0ac
--- /dev/null
+++ b/web/src/lib/components/kit/fields/schema/ColorControl.svelte
@@ -0,0 +1,59 @@
+
+
+
+
+
diff --git a/web/src/lib/components/kit/fields/schema/RangeControl.svelte b/web/src/lib/components/kit/fields/schema/RangeControl.svelte
new file mode 100644
index 0000000..4502554
--- /dev/null
+++ b/web/src/lib/components/kit/fields/schema/RangeControl.svelte
@@ -0,0 +1,58 @@
+
+
+
+
+
diff --git a/web/src/lib/components/kit/fields/schema/SelectControl.svelte b/web/src/lib/components/kit/fields/schema/SelectControl.svelte
new file mode 100644
index 0000000..a4dce31
--- /dev/null
+++ b/web/src/lib/components/kit/fields/schema/SelectControl.svelte
@@ -0,0 +1,51 @@
+
+
+
+
+
diff --git a/web/src/lib/components/kit/fields/schema/TextControl.svelte b/web/src/lib/components/kit/fields/schema/TextControl.svelte
new file mode 100644
index 0000000..bce062e
--- /dev/null
+++ b/web/src/lib/components/kit/fields/schema/TextControl.svelte
@@ -0,0 +1,45 @@
+
+
+
+
+