Touch ergonomics: bigger handles + on-screen nudge pad (#104)
Two touch gaps the audit named: - Resize/rotate handles were a fixed 12px — fine for a mouse, hard for a fingertip. HANDLE_PX is now 22px on a coarse pointer (touch), 12px otherwise. Read once at load. - Fine positioning was keyboard-only (arrow-nudge), which a phone can't reach and a drag can't do at single-cm precision. Added an on-screen NudgePad — a ↑←→↓ d-pad (~40px targets) shown while something's selected on a touch layout (md:hidden). To share behaviour without duplicating the intricate part, extracted nudgeSelected(dx, dy) from the keyboard handler — the live-geometry update + one debounced PATCH (so a burst of nudges from either surface commits once) + the plop-bounds clamp. The keyboard handler and the pad both call it. Verified live: the pad moves a selected bed 1cm/tap on mobile, and the keyboard arrows still nudge on desktop after the refactor. (The rail-vs-toast layering the issue also lists was resolved by #101 — the rail is now an in-flow peek, not a fixed sheet the toast could cover.) Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01H3zbym8Doka2d7D48maSgZ
This commit is contained in:
@@ -3,7 +3,12 @@
|
||||
// one place instead of drifting between files.
|
||||
|
||||
export const SELECT_COLOR = '#2f7a3e' // selection stroke/handles
|
||||
export const HANDLE_PX = 12 // on-screen size of a drag/resize handle
|
||||
// On-screen size of a drag/resize handle. Bigger on a coarse pointer (touch) so
|
||||
// a fingertip can actually grab a resize corner or the rotate knob — 12px is fine
|
||||
// for a mouse but frustrating for a thumb (#104). Read once at load; a device
|
||||
// doesn't switch its primary pointer mid-session.
|
||||
export const HANDLE_PX =
|
||||
typeof window !== 'undefined' && window.matchMedia?.('(pointer: coarse)').matches ? 22 : 12
|
||||
export const MIN_RADIUS_CM = 1 // smallest plop radius
|
||||
export const DIMMED_OPACITY = 0.4 // non-focused objects/plops in focus mode
|
||||
|
||||
|
||||
Reference in New Issue
Block a user