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

phoenix-rn-helper

v0.4.4

Published

This is helper library for some quick react-native component.

Readme

phoenix-rn-helper

Notice: Some components relias on the some specific packages. Make sure to install them first to things to work. Full list of packages can be found here.

index

  1. Divider
  2. ColorSelector
  3. CheckBox
  4. ThemeToggler
  5. TouchHere

Divider

This Component adds the pure line throughout the whole width. Example:

<Divider size={2} color="black" margin={10} />

Screenshot TODO://

| Option | Type | Required | Default | Description | | ------ | ------ | -------- | ------------------------------------ | ---------------------------------- | | size | Number | No | StyleSheet.hairlineWidth (Very thin) | Height of Divider | | color | String | No | grey | Color of the Divider | | margin | Number | No | 0 | Space left on both horizontal ends |

ColorSelector

This component provides one little button alike which opens color pallate Model to choose color.

Warning: You need to install react-native-color-picker as a dependancies for this to work.

Example:

<ColorSelector
  value={flowerColor}
  onChange={(color) => setFlowerColor(color)}
  style={
    {
      // Additional styles
    }
  }
/>

Screenshot: TODO://

| Option | Type | Required | Default | Description | | -------- | --------------- | -------- | ------------------------------------ | ------------------------------------------------------ | | value | Color String | Yes | None | The value to represent color | | onChange | Function: color | No? | None | Function to be called each time color changes | | style | style object | No | 30x30 square with some border radius | A style object to change the appearance of the button. |

Although style prop is allowed, backgroundColor will always be current color value.

CheckBox

This component is simple checkbox. By default it gives retro ✔️ and ❌ vibe. But it is completely customizable.

Example:

<CheckBox
  value={check}
  onChange={(e) => setCheck(e)}
  boxStyle={{
    borderRadius: 0,
    borderWidth: 2,
    borderColor: "black",
  }}
  TrueComponent={() => <Text>T</Text>}
  FalseCoponent={() => <Text>F</Text>}
/>

Notice: To render custom components ( TrueComponent & FalseComponent) You have to provide both component. Providing One component will result in default render.

Screenshot: TODO://

| Option | Type | Required | Default | Description | | -------------- | ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | value | Boolean | Yes | none | The boolean value to control the checkbox | | onChange | Function: value | Yes | none | Function that will be called with updated boolean value | | boxStyle | style object | No | { width: 30,height: 30,borderRadius: 10,backgroundColor: "lightgrey", borderWidth: 1, borderColor: "black", alignItems: "center", justifyContent: "center", } | Outer Box styling. Keep in mind that deafult style will be applied first and then custom style | | TrueComponent | React-Native component | No | none | Component to render when checkbox value is true | | FalseComponent | React-Native component | No | none | Component to render when checkbox value is false |

ThemeToggler

This component provides theme toggler with smooth animation inspired from Telegram's theme toggler button.

Warning: You need to install react-native-svg and react-native-reanimated (v2) as a dependancies for this to work.

Example:

<ThemeToggler
  value={theme}
  onChange={(newTheme) => setTheme(newTheme)}
  boxStyle={{ backgroundColor: "blue" }}
  duration={700} // defaults to 1000(1 second)
  sunColor="#ff0"
  moonColor="#fff"
/>

Screenshot: TODO://

| Option | Type | Required | Default | Description | | --------- | ----------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | | value | "light" | "dark" | Yes | none | String value that contains current theme value | | onChange | Function: ("light" | "dark") | Yes | none | Function that will be called each time theme changes | | duration | Number | No | 1000 | Duration of animation | | boxStyle | style object | No | { width: 60, height: 60, borderRadius: 100, backgroundColor: "#2155ff", padding: 5, alignItems: "center", justifyContent: "center" } | Style object for main container. Make sure to have proper backgroundColor reltive to sunColor and moonColor | | sunColor | Color | No | #fff | Color of sun (light theme indicator) | | moonColor | Color | No | #fff | Color of moon (dark theme indicator) |

TouchHere

Warning: This component is not perfect. It is based on Modal component of react-native which is not that much good.

This component shows a hand indicating your user to that they have to touch here. This is generaly used on onboarding page but can be used anywhere.

You have to provide absolute value of point to be shown to click. You generally want to use useLayout hook to calculate where your target element is. This is one of the drawback of this component. I might add custom component based but can't promise.

Warning: You need to install react-native-svg and react-native-reanimated (v2) as a dependancies for this to work.

Example:

<TouchHere
  x={120}
  y={70}
  visible={touchIndicator}
  onRequestClose={() => setTouchIndicator(false)}
  duration={4000}
  delay={2000}
  handColor="white"
  ringColor="black"
/>

Screenshot: TODO://

| Option | Type | Required | Default | Description | | -------------- | -------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | visible | Boolean | Yes | none | The control variable to show the modal. recomended to set true in start and use delay prop to adjust timing | | onRequestClose | Function | Yes | none | Function that will be called on closing of component. | | x | Number | Yes | 100 | X cordination of touch to be shown | | y | Number | Yes | 100 | Y cordination of touch to be shown | | duration | Number | No | 3500 | Duration of the whole animation includes both hand down and waves so make sure to have higher value | | delay | Number | No | 0 | How much time after animation should be shown. Generally you want to wait for the user to touch on desired location and if not touched then show this so you can use delay property for that | | handColor | Color | No | #fff | Color of hand. It is just outline like color. Whole hand won't be filled with this color because it is better to show as much as background to user as possible | | ringColor | Color | No | #fff | Color of waves. Currently 2 waves will be shown. |

External-packages

  • react-native-color-picker (ColorSelector)
  • react-native-reanimated@^2.1.0 (ThemeToggler, TouchHere)
  • react-native-svg (ThemeToggler, TouchHere)

Quick all install

npm i react-native-color-picker react-native-reanimated react-native-svg

OR

yarn add react-native-color-picker react-native-reanimated react-native-svg