Skip to content

๐Ÿ‘‰ Screens swiper lib. fully cross platform(IOS, Android) created for building best UI in your app. swipeable navigation, user profile(like instagram), and many more. ๐Ÿ‘ˆ Just take and try. โœŒ๏ธ

License

Notifications You must be signed in to change notification settings

GeorgeHop/react-native-screens-swiper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-screens-swiper

Simple screens' swiper library with scrollable or static tab navigation. Fully supported on iOS and Android.

Scrollable Pills Static Pills
drawing drawing

Installation

expo: expo install react-native-screens-swiper
npm: npm i react-native-screens-swiper
yarn: yarn add react-native-screens-swiper

Basic usage

import Swiper from "react-native-screens-swiper";
import FirstScreen from "./FirstScreen";
import SecondScreen from "./SecondScreen";

export default function YourComponent() {
    /**
     * Create an array with your screens' data - title, component and additional props.
     * Title is a string to be put inside of pill.
     * Props is an object with additional data for a particular screen.
     * Component can be either React component, render function or JSX element.
     * If it is a component or function, it will receive above-mentioned props and additional 'index' props
     */
    const data = [
        {
            tabLabel: 'Valid component in form of JSX element',
            component: <FirstScreen/>,
        },
        {
            tabLabel: 'Valid component in form of React component',
            component: SecondScreen,
            props: {}, // (optional) additional props
        },
        {
            tabLabel: 'Valid component in form of render function',
            component: ({index, ...props}) => {
                return null;
            },
            props: {}, // (optional) additional props
        },
    ];

    return (
        <Swiper
            data={data}
            isStaticPills={true}
            style={styles}
            // FlatList props
        />
    );
}

// more about styling below
const styles = {};

Custom styling

export default function App() {
    return (
        <Swiper 
            data={data}
            style={styles}
        />
    );
}

const styles = {
    // [View] Pills container
    pillContainer: {},

    // [View] Button
    pillButton: {},

    // [View] Active button
    pillActive: {},
    
    // [Text] Button's text
    pillLabel: {},
    
    // [Text] Active button's text
    activeLabel: {},
    
    // [View] Border of active pill (:warning: opacity will override animation's opacity)
    borderActive: {},
};

Example for scrollable pills

const styles = {
    pillButton: {
        backgroundColor: 'white',
    },
    pillActive: {
        backgroundColor: 'yellow',
    },
    pillLabel: {
        color: 'gray',
    },
    activeLabel: {
        color: 'white',
    },
};
drawing

Example for static pills

const styles = {
    borderActive: {
        borderColor: 'pink',
    },
    pillLabel: {
        color: 'gray',
    },
    activeLabel: {
        color: '#ba2d65',
    },
};
drawing

Sticky header and children

You can use sticky header only when scrollableContainer={true} so you need to pass it first. And after adding stickyHeaderEnabled={true} you can see the magic !

<Swiper 
    data={Screens} 
    style={styles} 
    isStaticPills={true} 
    stickyHeaderEnabled={true}
    scrollableContainer={true}
>
    <View
        style={{
          height: 350,
          backgroundColor: 'white',
        }}
    >
        // other childrens here

    </View>
</Swiper>
drawing

Props

Below are the props you can pass to the React Component.

Prop Type Default Example Description
data array [{component: 'your first screen component', tabLabel: 'first screen tabLabel'}, {component: 'your second screen component', tabLabel: 'second screen tabLabel'}] Put array of screens with tab labels for displaying inside the component
isStaticPills boolean false isStaticPills={true} When you need static navigation without scroll
stickyHeaderEnabled boolean false stickyHeaderEnabled={true} Can used only with scrollableContainer={true}. Give header possibility to stick to top of the screen.
scrollableContainer boolean false scrollableContainer={true} Added scrollable container.
children component <Swiper><YourComponent/></Swiper> You can add your own top component in swiper. For example profile info.
style object {pillContainer: {backgroundColor: 'black', height: 50}} The styles object for styling the swiper details. More about styling in Custom styling step.

About

๐Ÿ‘‰ Screens swiper lib. fully cross platform(IOS, Android) created for building best UI in your app. swipeable navigation, user profile(like instagram), and many more. ๐Ÿ‘ˆ Just take and try. โœŒ๏ธ

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published