Safe Triangle
The menu predicts where your cursor is going, not only where it is.
POINTER INTENTSmall interface decisions you feel before you notice.
A collection of interactive experiments exposing the hidden geometry, timing, physics, and system behavior behind interfaces that feel natural.
Download every behavior as an AI agent skill and let your tools apply these mechanics for you.
The menu predicts where your cursor is going, not only where it is.
POINTER INTENTPassing over is not the same as choosing.
POINTER INTENTThe control can help the cursor arrive.
TARGET ACQUISITIONWhat you see does not have to be all you can hit.
TARGET ACQUISITIONThe interface can respond before the server does.
PERCEIVED PERFORMANCEThe page protects the thing you were looking at.
SCROLL BEHAVIORReversibility can replace interruption.
ERROR RECOVERYPrecision can be supplied by the interface.
GESTURE PHYSICSNew intent should not wait for old motion.
MOTIONMotion should remember where the action came from.
FLOATING GEOMETRYOne action should stay one action.
INPUTThe network sends points. The interface creates motion.
COLLABORATIONResistance tells your finger how far is far enough.
GESTURE PHYSICSThe edge can push back instead of just stopping.
GESTURE PHYSICSHow fast you let go is part of what you meant.
GESTURE PHYSICSAn action should arm before it fires.
GESTURE PHYSICSThe thing you drag should not be trapped by its container.
GESTURE PHYSICSItems should slide to their new place, not teleport.
GESTURE PHYSICSBe fast when you can, honest when you can't.
PERCEIVED PERFORMANCEShow the shape of what's coming.
PERCEIVED PERFORMANCEA blurry hint beats an empty box.
PERCEIVED PERFORMANCEStay pinned to the latest — unless you're reading history.
SCROLL BEHAVIORRender a little beyond the edge so scrolling never blanks.
SCROLL BEHAVIORScrolling should stop somewhere on purpose.
SCROLL BEHAVIOREvery action, one keystroke away.
NAVIGATIONFormatting without leaving the keyboard.
NAVIGATIONSearch should react to every keystroke.
NAVIGATIONA group of controls should feel like one Tab stop.
NAVIGATIONThe label can stay without stealing the space.
INPUTCorrect gently on the way out, not on every keystroke.
INPUTA short pause turns a mistake into a non-event.
ERROR RECOVERYReassure without interrupting.
SYSTEM FEEDBACKLayout changes should be a journey, not a jump cut.
MOTIONThe same object should stay the same object across views.
MOTIONWhere a scale starts changes what it means.
MOTIONPhysics feels alive; fixed curves feel scripted.
MOTIONA control should acknowledge your touch instantly.
MOTIONAdding and removing should never be instantaneous.
MOTIONPresence is felt through movement.
COLLABORATIONShow not just where they are, but what they're on.
COLLABORATIONKnow who's in the room at a glance.
COLLABORATIONA tick at the threshold makes a value feel physical.
SYSTEM FEEDBACKHolding is a different intention than tapping.
GESTURE PHYSICSA right-click menu should open at your finger, then stay on screen.
FLOATING GEOMETRYWhen there's no room below, open above.
FLOATING GEOMETRYThe arrow should point at the anchor, wherever it shifted.
FLOATING GEOMETRYYour pointer moved more times than your interface noticed.
GESTURE PHYSICSThe interface can draw where your pointer has not arrived yet.
GESTURE PHYSICSWhen pressure is missing, motion can impersonate it.
INPUTThe stroke follows your intention, not every shake.
INPUTA stroke can remember where it started and where it is ending.
INPUTRelative movement can replace cursor position.
GESTURE PHYSICSAfter intent is clear, motion can stay on one axis.
GESTURE PHYSICSThe handler waits for proof before claiming the pointer.
GESTURE PHYSICSEntering a state and leaving it need not use the same threshold.
GESTURE PHYSICSThe resting hand should not become input.
INPUTZoom should anchor where the pinch happens.
CAMERA BEHAVIORTwo fingers can mean zoom or pan — the interface must choose.
GESTURE PHYSICSOne notch of the wheel is not the same on every OS.
SCROLL BEHAVIORA new touch can stop scroll that was still gliding.
SCROLL BEHAVIOROnly the grip should pick up the item.
GESTURE PHYSICSInsertion follows the nearest edge, not the pointer center.
GESTURE PHYSICSActive targets should not flicker at boundaries.
GESTURE PHYSICSA modifier can mean copy instead of move.
GESTURE PHYSICSMultiple selections share one bounding box.
TARGET ACQUISITIONShift can lock proportions while resizing.
EDITOR GEOMETRYAlt can mirror growth around the center.
EDITOR GEOMETRYObjects can have a smallest valid size.
EDITOR GEOMETRYConnectors should follow their nodes.
EDITOR GEOMETRYScreen pixels are not canvas units.
CAMERA BEHAVIORFraming leaves intentional breathing room.
CAMERA BEHAVIORZoom can change detail, not only scale.
CAMERA BEHAVIORZoom can settle on deliberate steps.
CAMERA BEHAVIORPan and zoom should stop at the world edge.
CAMERA BEHAVIORThe small map should show where you are.
CAMERA BEHAVIORDeleted gaps should not linger.
MOTIONGrowing one object can politely move its neighbors.
EDITOR GEOMETRYRow height may not be known until rendered.
SCROLL BEHAVIORRemeasured rows above should not jump the reader.
SCROLL BEHAVIORDragging the scrollbar can preview the destination.
SCROLL BEHAVIORClosing a dialog should return focus to where you were.
FOCUS MANAGEMENTFocus should not yank the viewport.
FOCUS MANAGEMENTHighlight can move without moving DOM focus.
NAVIGATIONTab should stay inside the modal.
FOCUS MANAGEMENTThe page behind should not receive input.
FOCUS MANAGEMENTComposing text is not yet committed text.
INPUTYou can place a caret between blocks.
TEXT EDITINGDrag shows where content will land.
TEXT EDITINGMenus can follow the text cursor, not only buttons.
TEXT EDITING