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

react-native-ruler-view

v0.0.4

Published

⚡ Lightning-fast and customizable Ruler Picker component for React Native

Readme

react-native-ruler-view

A customizable, interactive ruler picker component for React Native. Perfect for selecting values in a range using a ruler-style interface. This library is a fork and modification of react-native-ruler-picker, with added enhancements and improved functionality.

Full credits to the original author of react-native-ruler-picker.

Preview

Features

  • Vertical and horizontal orientations.
  • Highly customizable step sizes, unit labels, and themes.
  • Animated step movement with support for spring or timing animations.
  • Haptic feedback and accessibility support.
  • Supports both integer and fractional values.
  • Fine-tuned customization for step heights, widths, and gaps.
  • Ability to configure a range of values with min, max, and step parameters.
  • Option to show labels and unit names next to the value.
  • Full customization over the ruler's theme (colors, text style, background, etc.).

Installation

To install react-native-ruler-view into your project, use the following command:

npm install react-native-ruler-view or if you're using yarn yarn add react-native-ruler-view

For iOS:

Make sure to install the necessary CocoaPods dependencies: cd ios; pod install; cd ..

Usage

Basic Examples

import * as React from 'react';
import { ScrollView, StyleSheet } from 'react-native';
import { RulerPicker } from 'react-native-ruler-view';

export default function App() {
  return (
    <ScrollView
      style={styles.container}
      contentContainerStyle={{ alignItems: 'center', justifyContent: 'center' }}
    >
      {/* Basic Ruler */}
      <RulerPicker
        min={0}
        unit="cm"
        max={240}
        step={1}
        width={300}
        height={300}
        fractionDigits={0}
        initialValue={0}
        onValueChange={(number) => console.log('onValueChange', number)}
        onValueChangeEnd={(number) => console.log('onValueChangeEnd', number)}
      />

      {/* Vertical Ruler */}
      <RulerPicker
        min={0}
        max={200}
        height={300}
        width={300}
        step={1}
        initialValue={0}
        vertical
      />

      {/* Ruler with Custom Theme */}
      <RulerPicker
        min={0}
        max={200}
        step={2}
        width={240}
        indicatorHeight={70}
        height={400}
        vertical
        showLabels={false}
        containerStyle={{
          backgroundColor: '#876796'
        }}
        accessibility={{
          enabled: true,
          labelFormat: 'Value: ${value} centimeters',
          announceValues: true,
        }}
        animationConfig={{
          type: 'spring',
          springConfig: {
            tension: 40,
            friction: 7,
          },
        }}
      />

      {/* Custom themed ruler with haptic feedback */}
      <RulerPicker
        min={0}
        max={200}
        step={1}
        hapticFeedback
        width={300}
        height={200}
        containerStyle={{
          backgroundColor: 'red'
        }}
        theme={{
          indicatorColor: 'green',
          shortStepColor: 'green',
          longStepColor: 'blue',
          textColor: 'green',
          backgroundColor: 'light',
        }}
      />
    </ScrollView>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    paddingTop: 20,
  },
});

Props

RulerPickerProps

| Name | Type | Required | Default Value | Description | |---------------------|---------------------------------|----------|---------------|------------------------------------------| | width | number | No | windowWidth | Width of the ruler picker | | height | number | No | 300 | Height of the ruler picker | | min | number | Yes | - | Minimum value of the ruler picker | | max | number | Yes | - | Maximum value of the ruler picker | | step | number | No | 1 | Step of the ruler picker | | initialValue | number | No | min | Initial value of the ruler picker | | fractionDigits | number | No | 1 | Number of digits after the decimal point | | unit | string | No | 'cm' | Unit of the ruler picker | | indicatorHeight | number | No | 80 | Height of the indicator | | vertical | boolean | No | false | Enables vertical orientation | | theme | RulerTheme or ThemeName | No | 'light' | Theme for the ruler picker | | hapticFeedback | boolean | No | false | Enables haptic feedback | | animated | boolean | No | true | Enables animation | | valueTextStyle | TextStyle | No | - | Text style of the value | | unitTextStyle | TextStyle | No | - | Text style of the unit | | decelerationRate | 'fast' | 'normal' | number | No | 'normal' | Deceleration rate of the ruler picker | | accessibility | RulerAccessibilityConfig | No | - | Accessibility configuration | | showLabels | boolean | No | true | Show labels | | onValueChange | (value: number) => void | No | - | Callback when the value changes | | onValueChangeEnd | (value: string) => void | No | - | Callback when the value changes end |

RulerPickerItemProps

| Name | Type | Required | Default Value | Description | |--------------------|---------------------------------|----------|---------------|------------------------------------------| | gapBetweenSteps | number | No | 10 | Gap between steps | | shortStepHeight | number | No | 20 | Height of the short step | | longStepHeight | number | No | 40 | Height of the long step | | stepWidth | number | No | 2 | Width of the steps | | shortStepColor | string | No | 'lightgray' | Color of the short steps | | longStepColor | string | No | 'darkgray' | Color of the long steps | | vertical | boolean | No | false | Enables vertical orientation | | containerStyle | ViewStyle | No | - | Style of the container | | stepStyle | ViewStyle | No | - | Style of the steps |

RulerTheme

| Name | Type | Required | Default Value | Description | |-------------------|--------|----------|---------------|--------------------------------------| | indicatorColor | string | No | 'black' | Color of the center line | | shortStepColor | string | No | 'lightgray' | Color of the short steps | | longStepColor | string | No | 'darkgray' | Color of the long steps | | textColor | string | No | 'black' | Text color | | backgroundColor | string | No | 'white' | Background color |

RulerAccessibilityConfig

| Name | Type | Required | Default Value | Description | |----------------------|---------------------------------|----------|---------------|------------------------------------------| | enabled | boolean | No | false | Enables accessibility | | labelFormat | string | No | - | Format for accessibility labels | | announceValues | boolean | No | false | Announce values during adjustment | | minimumAdjustment | number | No | - | Minimum adjustment value | | incrementAnnouncement| string | No | - | Announcement for increment action | | decrementAnnouncement| string | No | - | Announcement for decrement action |

Contributing

Contributions are welcome! Please fork the repository, make your changes, and submit a pull request.

This library is forked from the original react-native-ruler-picker repository, and full credit goes to them. This is my first npm package, so there might be bugs. Let’s use it, find and fix issues, and add new features together!

See the contributing guide to learn how to contribute to the repository and the development workflow.

License

MIT

This project is licensed under the MIT License. See the LICENSE file for details.

Made with create-react-native-ruler-view