10 — Interaction Specification (Payments)
- Tap
- Long press
- Double tap
- Swipe
- Pull-to-refresh
- Scroll & infinite scroll
- Back / hardware back / ESC
- Hover / mouse / desktop
- Gamepad
- Haptics
- Motion
Interaction detail for the payments module. Base gestures from 00-shared/08.
Tap
- Row tap → detail push (
m-base). FAB tap → new payment. Action buttons tap → submit/confirm. - Copy reference → clipboard + snackbar "Copied".
Long press
- Payments row → context menu (View, Receipt, Refund, Reconcile).
- Receipt summary → copy menu.
Double tap
- Not used (amounts/cards are static; enabling double-tap has no value).
Swipe
- Right-swipe on COMPLETED row: quick "New receipt view"; swipe on PENDING row:
"Reconcile"
(proposed). - No destructive left-swipe (refund is deliberate, not a swipe).
Pull-to-refresh
- Payments list, Receipts list, Payment detail — re-fetch
{data,total}/ payment / receipt;primaryspinner.
Scroll & infinite scroll
- Payments list is paged (Load more footer). No auto infinite scroll.
- FAB hides on scroll-down, reappears scroll-up.
Back / hardware back / ESC
- Detail → list; form → previous; sheets/dialogs: back/ESC = cancel (no discard warning on sheets).
- On root payments tab: Android back → previous shell branch.
Hover / mouse / desktop
- Row hover tint
surfaceContainerHigh; destructive action hovererrorContainer. - Right-click = context menu (same as long-press).
- Focus ring
primaryon all interactive; Enter activates focused control.
Gamepad
- Not relevant (mobile/desktop ERP client).
Haptics
- Success record →
lightImpact; refund confirmed →heavyImpact; error →mediumImpact.
Motion
- Success transition: sheet→inline success with
m-entranceslide; receipt cardAnimatedSwitcher150 ms. - Money updates:
AnimatedDefaultTextStyleorAnimatedSwitcher(fast, 150 ms).