npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lunacap/bottom-sheet-modal

v2.0.1

Published

A react-native bottom sheet modal library for an easy and optimized implementation.

Readme

React Native Bottom Sheet Modal Library

A simple, easy to use and performant bottom sheet library for react-native.

Installation

Install by running

npm install @lunacap/bottom-sheet-modal

yarn add @lunacap/bottom-sheet-modal

In the libraries dependencies, react-native-reanimated and react-native-safe-area-context packages are utilized so if they are not installed in your project you need to install these packages and add their native components as well.

Usage

The modal utilizes states for displaying. It can be connected to redux or you can use local states.

The BottomSheetProps type is the definition for the visible modal and the BottomSheetModalProps type is the definiton for the container component.

This library allows you to stack two bottom sheets on top of each other.

const App = () => {
  const bottomSheetRef = useRef<BottomSheetModalRef>(null);
  return (
    <View style={{flex: 1, alignItems: 'center', justifyContent: 'center'}}>
      <Button
        title={'Open First Bottom Sheet'}
        onPress={() => {
          bottomSheetRef.current?.expandFirst();
        }}
      />
      <BottomSheetModal
        ref={bottomSheetRef}
        firstPaperProps={{
          header: (
            <View
              style={{
                width: '100%',
                paddingHorizontal: 12,
                paddingVertical: 16,
                backgroundColor: 'black',
                borderTopLeftRadius: 16,
                borderTopRightRadius: 16,
              }}>
              <Text style={{fontSize: 16, lineHeight: 24, color: 'white'}}>
                Header First
              </Text>
            </View>
          ),
          children: (
            <View
              style={{
                width: '100%',
                height: 300,
                backgroundColor: 'black',
              }}>
              <Button
                title={'OPEN SECOND'}
                onPress={() => {
                  bottomSheetRef.current?.expandSecond();
                }}
              />
            </View>
          ),
        }}
        secondPaperProps={{
          children: (
            <View
              style={{
                backgroundColor: 'yellow',
                borderRadius: 16,
                width: '100%',
                height: 200,
              }}>
              <Button
                title={'Disable overlay'}
                onPress={() => bottomSheetRef.current?.disableOverlay()}
              />
            </View>
          ),
        }}
      />
    </View>
  );
};

BottomSheetModal Component Props

| Prop Name | Type | Required | Description | |-------------------|:-----------------------:|:--------:|:--------------------------------------------------------| | firstPaperProps | BottomSheetPaperProps | ✓ | Configuration for the primary bottom sheet | | secondPaperProps | BottomSheetPaperProps | - | Configuration for the secondary (stacked) bottom sheet | | onOverlayPress | () => void | - | Callback function triggered when the overlay is pressed | | overlay | React.ReactNode | - | Custom overlay component to replace the default overlay | | isOverlayDisabled | boolean | - | When true, disables overlay interaction |

BottomSheetPaperProps

| Prop Name | Type | Required | Description | |-----------|:-----------------:|:--------:|:---------------------------------------------------------| | children | React.ReactNode | ✓ | Content to be rendered inside the bottom sheet | | header | React.ReactNode | - | Custom header component rendered at the top of the sheet |

BottomSheetModalRef Methods

| Method Name | Parameters | Description | |----------------|:-------------------:|:-------------------------------------------------------------------------| | expandFirst | (target?: number) | Opens the first bottom sheet. Optional target position can be specified | | expandSecond | (target?: number) | Opens the second bottom sheet. Optional target position can be specified | | collapseFirst | - | Closes the first bottom sheet | | collapseSecond | - | Closes the second bottom sheet | | enableOverlay | - | Enables overlay interaction | | disableOverlay | - | Disables overlay interaction |

Properties Available Through Ref

| Property Name | Type | Description | |---------------|:-----------------------:|:------------------------------------------------| | paperState | BottomSheetPaperState | Current state of the bottom sheet papers | | overlayState | boolean | Current state of the overlay (enabled/disabled) |