- {#each ratioPresets as p (p.value)}
-
+
Modular scale ratio
+
+ {#each [
+ { side: minLabel, value: ratioMin, active: activeRatioMin, onChange: onRatioMinChange },
+ { side: maxLabel, value: ratioMax, active: activeRatioMax, onChange: onRatioMaxChange },
+ ] as row (row.side)}
+
+ {row.side}
+
+ { const n = parseFloat((e.target as HTMLInputElement).value); if (Number.isFinite(n)) row.onChange?.(clampRatio(n)); }}
+ class="w-16 shrink-0 bg-white/5 border border-white/10 rounded text-[11px] font-mono text-slate-200 text-right px-1.5 py-0.5 focus:outline-none focus:border-indigo-500"
+ />
+
{/each}
- {#if customRatioOpen}
-
-
-
-
- {/if}
{/if}
diff --git a/configurator/src/components/inputs/ColorInput.svelte b/configurator/src/components/inputs/ColorInput.svelte
index 87af50b3..d4b82f01 100644
--- a/configurator/src/components/inputs/ColorInput.svelte
+++ b/configurator/src/components/inputs/ColorInput.svelte
@@ -1,4 +1,5 @@
diff --git a/configurator/src/components/panels/ShadowsPanel.svelte b/configurator/src/components/panels/ShadowsPanel.svelte
index 0300475e..0f3da6ad 100644
--- a/configurator/src/components/panels/ShadowsPanel.svelte
+++ b/configurator/src/components/panels/ShadowsPanel.svelte
@@ -119,6 +119,7 @@