usePressFeedback@astryxdesign/core v0.6.5 · usePressFeedback

Usage

The touch press model every Astryx pressable uses, for a local component that paints its own press. Under a finger, CSS :active paints on the touch itself and can outlive the start of a scroll; the press model instead waits 150 ms before believing a press, cancels it the moment the finger travels 10 px or a scroll claims the gesture, never brings it back inside that gesture, answers a quick tap at the lift, and fades the release over 200 ms — the clocks a native list uses. One document-level controller does this for every marked element (installed by the first pressable to mount, removed by the last to unmount), so calling the hook adds no listener or state to your element. Under a mouse nothing changes: keep your :active rule, and drop it under @media (pointer: coarse) the way the built-in components do.

ts
import {usePressFeedback} from '@astryxdesign/core/hooks'

Best practices

GuidancePractices
Do

Spread the result on the element whose background paints the press and compose one of interactionOverlayStyles on it; the composed style is the instant onset, the hold and the fade, and it is themed through --color-overlay-pressed.

Do

Let the composed style own the press on every pointer: it keeps :active for a mouse and drops it under @media (pointer: coarse), so a finger sees only the press model. A rule of your own that paints :active would paint under a finger too, on the touch and through a scroll.

Don't

Add a pointer listener or React state to the element to track the press; the controller already writes the attribute, and per-element listeners are what a long list cannot afford.

Don't

Call it for a control rendered by an Astryx component; those are marked already, and the innermost marked element takes the press.

Returns

FieldTypeDescription
pressableProps{'data-astryx-pressable': ''}

The marker attribute to spread on the element that paints the press. Compose one of interactionOverlayStyles (from @astryxdesign/core/utils) on the same element — backgroundColor or backgroundImage for a surface whose hover and press are the system's overlays, pressedBackgroundColor for one whose hover is its own — and it paints the pressed token at the press's strength on the first frame of a believed press and fades it over the release, keeping :active for a mouse. A press is themed through --color-overlay-pressed.

Use with shadcn

Already using the shadcn registry workflow? Install the real Astryx package and a local public re-export. Component implementation source stays in Astryx. How compatibility works.

This install URL expires with the draft preview.
bash
npx shadcn@4.19.0 add https://astryx-bda82r898-fbopensource.vercel.app/shadcn/hooks/use-press-feedback.json