diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/Inspector/Transform/TransformEditor.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/Inspector/Transform/TransformEditor.tsx index ba9de6cff..f1cb9dda2 100644 --- a/apps/ai-game-creator-shell/src/view/ui-editor/components/Inspector/Transform/TransformEditor.tsx +++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/Inspector/Transform/TransformEditor.tsx @@ -1,6 +1,7 @@ import { AlertTriangle, ChevronDown, + ChevronUp, Crosshair, LockKeyhole, Maximize2, @@ -170,7 +171,7 @@ function formatValue(value: number): string { if (Object.is(value, -0)) { return '0'; } - return String(Number(value.toFixed(4))); + return String(Number(value.toFixed(2))); } function VectorInputRow({ @@ -234,6 +235,17 @@ function ScalarInput({ setDraft(formatValue(next)); }; + const adjust = (direction: -1 | 1) => { + if (readOnly) { + return; + } + const current = Number(draft); + const base = Number.isFinite(current) ? current : value; + const next = Number((base + direction * step).toFixed(4)); + setDraft(formatValue(next)); + onCommit(next); + }; + return ( @@ -246,7 +258,7 @@ function ScalarInput({ value={draft} aria-label={ariaLabel} readOnly={readOnly} - className="h-9 w-full rounded-lg border border-(--platform-subpanel-border) bg-white/75 pl-6 pr-2 text-xs tabular-nums text-(--platform-text-strong) outline-none transition focus:ring-2 focus:ring-orange-100 read-only:cursor-default" + className="h-11 w-full appearance-none rounded-lg border border-(--platform-subpanel-border) bg-white/75 pl-6 pr-8 text-sm tabular-nums text-(--platform-text-strong) outline-none transition focus:ring-2 focus:ring-orange-100 read-only:cursor-default read-only:bg-slate-100 [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none [-moz-appearance:textfield]" onChange={(event) => setDraft(event.target.value)} onBlur={commit} onKeyDown={(event) => { @@ -255,9 +267,34 @@ function ScalarInput({ } else if (event.key === 'Escape') { setDraft(formatValue(value)); event.currentTarget.blur(); + } else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') { + event.preventDefault(); + adjust(event.key === 'ArrowUp' ? 1 : -1); } }} /> + + event.preventDefault()} + onClick={() => adjust(1)} + > + + + event.preventDefault()} + onClick={() => adjust(-1)} + > + + + ); } @@ -314,7 +351,10 @@ export function TransformEditor({ geometry?.invalid; return ( - + @@ -328,17 +368,15 @@ export function TransformEditor({ {readOnly ? ( - + + + Read only + ) : ( - + + + Editable + )} @@ -374,12 +412,12 @@ export function TransformEditor({ {presetOpen ? ( - + Anchor @@ -498,17 +536,6 @@ export function TransformEditor({ ) : null} - - - {AXIS_LABELS.map((axis) => ( - - {axis} - - ))} -