JSPM

@react-native-paper-abstracted/cli

0.1.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q40504F

React Native Paper Abstracted is a package that allows you to use only the components you need from [React Native Paper](https://reactnativepaper.com). Thus allowing users to keep their app size small, and provides endless customization.

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@react-native-paper-abstracted/cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    React Native Paper Abstracted (RNPA)

    Introduction

    React Native Paper Abstracted (RNPA) is a package that allows you to use only the components you need from React Native Paper. This helps keep your app size small while providing endless customization options.


    Installation

    Using the CLI

    The command-line interface (CLI) tool lets you set up and install components effortlessly.

    npm install @react-native-paper-abstracted/cli
    npx rnpa init

    Manual Installation

    RNPA can be used without installing the CLI tool.

    npm i @callstack/react-theme-provider color react-native-safe-area-context

    Navigate to the Explorer tab and add the following folders/files to your project while maintaining the correct file structure:

    • /core
    • /styles
    • /utils
    • /types.tsx
    • /constants.tsx

    Non-Expo Projects

    For non-Expo projects, install and link react-native-vector-icons (specifically, MaterialCommunityIcons):

    npm install @react-native-vector-icons/material-icons
    npm i @types/react-native-vector-icons

    Expo Projects

    If you use Expo, vector icons are already included. However, ensure your babel.config.js or .babelrc file (if they exist) includes babel-preset-expo:

    .babelrc

    module.exports = {
      presets: ['module:metro-react-native-babel-preset'],
    };

    babel.config.js

    module.exports = function(api) {
      api.cache(true);
      return {
        presets: ['babel-preset-expo'],
      };
    };

    How to Use

    Using the CLI

    To initialize the project, run:

    npx rnpa init

    To add components, use the add command followed by the component name:

    npx rnpa add <component-name>

    You can find available components and their commands in the Explorer tab.


    Manual Usage

    Visit the Explorer tab and copy the desired component.


    Wrap your root layout with the PaperProvider component:

    import { Stack } from 'expo-router';
    import PaperProvider from '@/components/core/PaperProvider';
    
    export default function RootLayout() {
      return (
        <PaperProvider>
          <Stack>
            <Stack.Screen name="index" options={{headerShown: false}}/>
          </Stack>
        </PaperProvider>
      );
    }

    Now, you can import and use components as usual:

    import * as React from 'react';
    import Button from '@/components/Button/Button';
    import { View } from 'react-native';
    
    const HomeScreen = () => (
      <View style={{ flexDirection: 'row', gap: 16, flexWrap: 'wrap' }}>
        <Button style={{ width: 'auto' }} mode="contained">
          Press me
        </Button>  
      </View>
    );
    
    export default HomeScreen;