🚨 Shai-Hulud Strikes Again:More than 500 packages and 700+ versions compromised.Technical Analysis →
Socket
Book a DemoInstallSign in
Socket

@bento/pressable

Package Overview
Dependencies
Maintainers
3
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bento/pressable

Pressable primitive provides consistent press interactions and accessibility features for building interactive components

latest
Source
npmnpm
Version
0.1.2
Version published
Maintainers
3
Created
Source

Pressable

The @bento/pressable package provides a standardized foundation for interactive elements in the Bento library. It exports the Pressable primitive, which provides consistent press interactions and accessibility features for building interactive components.

Installation

npm install --save @bento/pressable

Props

The @bento/pressable package exports the Pressable primitive:

import { Pressable } from '@bento/pressable';

<Pressable onPress={() => console.log('Div pressed!')}>
  <div>Press me</div>
</Pressable>

The following properties are available to be used on the Pressable primitive:

PropTypeRequiredDescription
childrenReactElement<any, string | JSXElementConstructor<any>>YesA single React element that will be made pressable.
onPress(e: PressEvent) => voidNoHandler that is called when the pressable is pressed.
Similar to the standard onClick event, but normalized to handle all interaction methods consistently.
onPressStart(e: PressEvent) => voidNoHandler that is called when a press interaction starts.
onPressEnd(e: PressEvent) => voidNoHandler that is called when a press interaction ends, either
over the target or when the pointer leaves the target.
onPressChange(isPressed: boolean) => voidNoHandler that is called when the press state changes.
onPressUp(e: PressEvent) => voidNoHandler that is called when a press is released over the target, regardless of
whether it started on the target or not.
slotstringNoA named part of a component that can be customized. This is implemented by the consuming component.
The exposed slot names of a component are available in the components documentation.
slotsRecord<string, object | Function>NoAn object that contains the customizations for the slots.
The main way you interact with the slot system as a consumer.

For all other properties specified on the Pressable primitive, the component will pass them down to the direct child element of the component. Which would be the equivalent of you adding them directly to the child element.

import { Pressable } from '@bento/pressable';

function MyComponent() {
  return (
    <Pressable onPress={() => console.log('Pressed!')}>
      <div>Press me</div>
    </Pressable>
  );
}

Examples

Basic Div Element

The simplest way to use Pressable is to wrap a div element. The component will handle all the necessary accessibility features and interaction states.

<Source language='tsx' code={ DivExample } />

You can also make link elements pressable while maintaining their semantic meaning and default browser behavior.

<Source language='tsx' code={ LinkExample } />

Custom Component

For custom components, you need to forward the ref and pass props to the underlying element to ensure proper functionality.

<Source language='tsx' code={ CustomExample } />

Accessibility

The Pressable component automatically handles accessibility features:

  • Keyboard Navigation: Supports Enter and Space key activation
  • Focus Management: Proper focus handling and focus-visible states
  • ARIA Attributes: Automatically applies appropriate ARIA attributes
  • Screen Reader Support: Works seamlessly with assistive technologies

Data Attributes

The following data attributes are exposed and can be used for styling:

  • data-pressed - True when the button is being pressed
  • data-hovered - True when the button is hovered
  • data-focused - True when the button has focus
  • data-focus-visible - True when focus should be visible (keyboard navigation)
[data-pressed='true'] {
  background-color: #ccc;
}

[data-focus-visible='true'] {
  outline: 2px solid blue;
}

Keywords

accessibility

FAQs

Package last updated on 06 Nov 2025

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts