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 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-router-screen

v1.0.5-0.1

Published

React Native Router Screen is a powerful and flexible navigation library for React Native applications. It provides a comprehensive and customizable navigation solution for building complex navigation structures in your mobile apps. Below is a description

Downloads

310

Readme

react-native-router-screen

Version npm

Npm install

npm i react-native-router-screen

NB: Close the project and start anew

Example

Import

import { NavigationContainer,RenderScreen, useRouter, useNavigation,useParamsScreenProps, DrawerContainer, userDrawer, useTheme} from 'react-native-router-screen';

import {
  Checkbox,Link,Pagination,PressableButton,Ratings,StyledText,Toast,Input,TouchableOpacityButton} from 'react-native-router-screen'

How Setup it

Wrap the whole project with NavigationContainer

| Property | Description | |------------|------------------------------------------------------| | scheme | An optional string with dark and default. Default default | | theme | An optional object with dark and default themes. | | - dark | An optional property for the dark theme. | | - default | An optional property for the default theme. | | basePath | A required string representing the base path or URL. | | children | A required prop for passing child React elements. | | config | An optional prop for passing child React elements. |

| Configuration | Type | | --- | --- | | homeNavbar | React.JSX.Element| |navbar | React.JSX.Element | | footer | React.JSX.Element` |

Example Navbar

homeNavbar

import and use. | Property | Type | Description | |-------------|--------------------|----------------------------------------------------------------------| | title | string | The title to be displayed in the main navigation bar. | | children | React.ReactNode | (Optional) Additional React elements that can be included in the main navigation bar. |

const MainNavbar = ({ title }) => {
    const { colors } = useTheme();

    const styles = StyleSheet.create({
        navbar: {
            display: 'flex',
            backgroundColor: colors.primary,
            flexDirection: 'row',
            alignItems: 'center',
            width: '100%',
            justifyContent: 'space-between',
            color: 'black',
            height: 64,
            paddingHorizontal: 10,
            alignContent: 'space-between',

            shadowColor: "#000",
            shadowOffset: {
                width: 0,
                height: 1,
            },
            shadowOpacity: 0.15,
            shadowRadius: 1.00,
            elevation: 3,
        },
        navbar_button: {
            padding: 8,
        },
    });

    return (
        <View style={styles.navbar}>
            <View>
                <Text style={{
                    fontSize: 24,
                    fontWeight: '600',
                    color: colors.primary_text
                }}>
                    {title}
                </Text>
            </View>

            <View style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', gap: 8 }}>
                {/* 
        <View>
          <Pressable onPress={() => setIsVisible(true)}>
            <View
              style={styles.navbar_button}
            >
              <Image
                source={assets_images.search_white}
                style={{ height: 28, width: 28 }}
              />
            </View>
          </Pressable>
        </View> */}
            </View>
        </View>
    );
};

export default MainNavbar;

navbar

import and use. | Property | Type | Description | |-------------------|-----------------------------------------|-------------------------------------------------------------------------------------| | title | string | The title to be displayed in the navbar. | | clickAbleFunction| () => void | (Optional) Function to be executed when the title is clicked. | | style | ViewStyle or TextStyle or ImageStyle or object | (Optional) Style object or React Native style type to customize the appearance of the title component. | | children | React.ReactNode | (Optional) Additional React elements that can be included as children of the title component. |

const NavbarTitleBackButton = ({
    title,
    clickAbleFunction,
    style,
    children
}: {
    title: string
    backward: string,
    clickAbleFunction?: () => void,
    children?: React.ReactNode,
    style?: ViewStyle | TextStyle | ImageStyle | object,
}) => {
    const { push, history, basePath } = useRouter()
    const { colors, dark } = useTheme()

    const styles = StyleSheet.create({
        navbar: {
            paddingHorizontal: 20,
            display: 'flex',
            backgroundColor: colors.card,
            flexDirection: 'row',
            alignItems: 'center',
            width: '100%',
            justifyContent: 'space-between',
            color: 'black',
            height: 64,
            paddingLeft: 10,
            paddingRight: 10,
            alignContent: 'space-between',

            shadowColor: "#000",
            shadowOffset: {
                width: 0,
                height: 1,
            },
            shadowOpacity: 0.15,
            shadowRadius: 1.00,
            elevation: 3,

        },
        navbar_button: {
            padding: 8,
        },
    });
    return (
        <View style={[styles.navbar, style]}>
            {/* <Image source={{ uri: svgBase64 }} /> */}
            <View>
                <TouchableOpacityButton
                    key={title}
                    imageStyle={{
                        width: 24,
                        height: 24,
                    }}
                    onPress={() => {
                        if (clickAbleFunction) {
                            clickAbleFunction()
                        }
                        else {
                            if (history.get().length) {
                                history.back()
                            }
                            else {
                                push(basePath)
                            }
                        }
                    }}
                    image={assets_images.arrow_left_indicate}
                    containerStyle={{
                        backgroundColor: 'transparent',
                        width: 36,
                        height: 36,
                        borderWidth: 0,
                    }}
                />
            </View>
            <View style={{
                flex: 1,
                alignItems: 'center',
                left: children ? 0 : -18
            }}>
                <StyledText
                    style={
                        [
                            global_styles.text_xl,
                            global_styles.font_bold,
                            {
                                color: colors.primary
                            }
                        ]
                    }
                >
                    {
                        title
                    }
                </StyledText>
            </View>
            <View>
                {
                    children
                }
            </View>

        </View>
    );
};

export default NavbarTitleBackButton;

Footer

import { Image, Pressable, StyleSheet, View } from 'react-native';
import { StyledText, useRouter, useTheme } from 'react-native-router-screen';
import { assets_images } from '../../assets/assets_images';
import { useTranslate } from '../../context/TranslateContext';
import navigate_link from '../../navigate_link';


export default function Footer() {
    const router = useRouter();
    const { colors, dark } = useTheme()
    const { wishlist, home, cart, shopping, profile } = useTranslate()
    const footerMenuButton = [
        {
            select: assets_images.home_primary,
            default: assets_images.home,
            title: home,
            link: navigate_link.home,
        },
        {
            select: assets_images.shopping_primary,
            default: assets_images.shopping,
            title: shopping,
            link: navigate_link.shopping
        },
        {
            select: assets_images.wishlist_primary,
            default: assets_images.wishlist,
            title: wishlist,
            link: navigate_link.wishlists
        },
        {
            select: assets_images.carts_primary,
            default: assets_images.carts,
            title: cart,
            link: navigate_link.carts
        },
        {
            select: assets_images.profile_primary,
            default: assets_images.profile,
            title: profile,
            link: navigate_link.account
        }
    ]
    const styles = StyleSheet.create({
        footer: {
            backgroundColor: colors.card,
            // borderTopEndRadius: 20,
            // borderTopStartRadius: 20,
            padding: 16,
            paddingHorizontal: 20,
            display: 'flex',
            flexDirection: 'row',
            justifyContent: 'space-between',
            alignItems: 'center',
            borderColor: colors.border,
            borderWidth: 0.5,
            shadowColor: "#000",
            height: 64,
            width: '100%',
        },
        button: {
            gap: 2,
            display: 'flex',
            alignItems: 'center',
            justifyContent: 'space-between',
            flexDirection: 'column',
            height: 48,
            minWidth: 48,
            padding: 4,
        },
        buttonGPlusStyle: {
            flexDirection: 'row',
            alignItems: 'center',
            backgroundColor: '#dc4e41',
            borderWidth: 0.5,
            borderColor: '#fff',
            height: 40,
            borderRadius: 5,
            margin: 5,
        },
        buttonFacebookStyle: {
            flexDirection: 'row',
            alignItems: 'center',
            backgroundColor: '#485a96',
            borderWidth: 0.5,
            borderColor: '#fff',
            height: 40,
            borderRadius: 5,
            margin: 5,
        },
        buttonImageIconStyle: {
            padding: 10,
            margin: 5,
            height: 25,
            width: 25,
            resizeMode: 'stretch',
        },
        buttonTextStyle: {
            color: '#fff',
            marginBottom: 4,
            marginLeft: 10,
        },
        buttonIconSeparatorStyle: {
            backgroundColor: '#fff',
            width: 1,
            height: 40,
        },
    });
    return (
        <View style={styles.footer}>
            {
                footerMenuButton?.map((r, index) => {
                    const check = router.path === r.link;
                    return (
                        <View key={index}>
                            <Pressable
                                // style={{
                                //     paddingVertical: 10,
                                //     paddingHorizontal: 4
                                // }}
                                // underlayColor={colors?.background}
                                onPress={() => router.push(r?.link)}
                                disabled={check}
                            >
                                <View style={styles.button}>
                                    <View>
                                        <Image
                                            source={
                                                check ? r?.select : r?.default
                                            }
                                            style={{
                                                height: 24, width: 24, objectFit: 'contain',
                                            }}
                                        />
                                    </View>
                                    <StyledText style={{
                                        fontSize: 10,
                                        color: check ? colors?.primary : colors.grey
                                    }}>
                                        {
                                            r?.title
                                        }
                                    </StyledText>
                                </View>
                            </Pressable>
                        </View>
                    )
                })
            }

        </View>
    );
}

const theme = {
  dark: {
    background: 'red'
  },
  default: {
    background: 'green',
    primary: 'gold'
  }
}

function App(): JSX.Element {
  const [isDarkTheme, setDarkTheme] = useState<boolean>(false);

  return (
    <NavigationContainer
      scheme={isDarkTheme ? 'dark' : 'default'}
      // scheme={scheme !== 'dark' ? 'dark' : 'default'}
      basePath={home_path}
      config={{
        footer: <Footer />
      }}
    >
      <WrapScreen />
    </NavigationContainer>
  );
}

WrapScreen:

const WrapScreen = () => {
  const { dark, colors } = useTheme();
  return (
    <AuthenticationCheckProvider>
      <TranslateProvider>
        <DrawerContainer>
          <StatusBar
            animated={true}
            barStyle={dark ? "light-content" : 'dark-content'}
            backgroundColor={colors.card}
            showHideTransition={'slide'}
            hidden={false}
          />
          <Screen />
        </DrawerContainer>
      </TranslateProvider>
    </AuthenticationCheckProvider>

  )
}

Drawer

Wrap the whole project with DrawerContainer

function App(): JSX.Element {
  return (
    <NavigationContainer
      theme={theme}
      basePath='/home'
    >
      <DrawerContainer>
        <StatusBar
          animated={true}
          barStyle='light-content'
          backgroundColor={colors.primary}
          showHideTransition={'slide'}
          hidden={false}
        />
        <Screen />
      </DrawerContainer>
    </NavigationContainer>
  );
}

props: | Property | Description | | ------------------- | ------------------------------------------------ | | drawerConfig | Configuration for a drawer component. | | drawerWidth | The width of the drawer . Default 300 | | drawerPosition | The position of the drawer (left, right, or undefined). Default left | | renderNavigationView | Content to render inside the drawer. |

How to use drawer and deferent content

<Render.screen
        title='home'
        drawerConfig={{
          drawerPosition: 'left',
          drawerWidth: 300,
          renderNavigationView: <DrawerHome/>
        }}
        hasFooter={true}
        path='/home'
        screen={HomeScreen}
/>

Note: If you use the navigation drawer in the parent container it will nest in all pages. If you don't want to see any screen then follow the example below

<Render.screen
        title='home'
        drawerConfig={{
          renderNavigationView: undefined
        }}
        hasFooter={true}
        path='/home'
        screen={HomeScreen}
/>

Or if you want to add it manually inside the screen component

const Home = (props: ScreenProps) => {
  const router = useRouter()
    const drawer = userDrawer()
    useEffect(() => {
      drawer.setDrawerConfig({
        renderNavigationView: <HomeDrawer />
      })
    }, [])
  return (
    <View>
      <Text>
        Home
      </Text>
      <Link href='/about'>
        About
      </Link>
      <Button
        title='Home'
        onPress={() => {
          router.push('/settings/435345')
        }}
      />
    </View>
  )
}

| Property | Type | Description | |--------------------------|------------------------------------------------------------------|---------------------------------------------------------------| | loadingComponent | boolean | Represents whether a loading component should be displayed. | | setTitle | (title: string) => void | Function to set the title of the component or page. | | setLoadingComponent | React.Dispatch<React.SetStateAction<boolean>> | Setter function for updating the loadingComponent state. | | customDynamicNavbar | React.ReactNode | Custom React node representing a dynamic navigation bar. | | setCustomDynamicNavbar | React.Dispatch<React.SetStateAction<React.ReactNode>> | Setter function for updating the customDynamicNavbar state. | | params | { [key: string]: any } | An object containing key-value pairs for additional parameters. |

Open drawer handler

  const {drawerRef} = userDrawer()
  const openDrawer = () => {
        return drawerRef.current?.openDrawer()
    }

Close drawer handler

  const {drawerRef} = userDrawer()
  const closeDrawer = () => {
        return drawerRef.current?.closeDrawer()
    }

Theme color

Here's a breakdown of the themeColorNameProps type properties and their descriptions:

  • primary: The primary color used for elements like buttons and highlighting.
  • background: The background color of the UI.
  • card: The color of cards or containers in the UI.
  • text: The text color.
  • link: The color used for hyperlinks or links.
  • border: The color of borders and separators.
  • notification: The color used for notifications or alerts.
  • transparent: A transparent color.
  • primary_text: The text color for primary elements.
  • secondary: A secondary color for elements like secondary buttons.
  • secondary_text: The text color for secondary elements.
  • success: The color used to indicate success.
  • success_text: The text color for success messages.
  • danger: The color used to indicate danger or errors.
  • danger_text: The text color for error messages.
  • warning: The color used to indicate warnings.
  • warning_text: The text color for warning messages.
  • info: The color used for informational messages.
  • info_text: The text color for informational messages.
  • grey: A general grey color.
  • light_grey: A lighter shade of grey.
  • dark_grey: A darker shade of grey.

Using the operating system preferences

import { useColorScheme } from 'react-native';

function App(): JSX.Element {
  const scheme = useColorScheme();
  return (
    <NavigationContainer
      theme={theme}
      scheme={scheme == 'dark' ? 'dark' : 'default'}
      basePath='/home'
    >
      <DrawerContainer   >
        <StatusBar
          animated={true}
          barStyle='light-content'
          backgroundColor={colors.primary}
          showHideTransition={'slide'}
          hidden={false}
        />
        <N />
      </DrawerContainer>
    </NavigationContainer>
  );
}

Add Screen

Import the RenderScreen class and declare it in a new variable using the new keyword

  const Render = new RenderScreen()
function Screen(): JSX.Element {
  const Render = new RenderScreen()
  return (
    <Render.Render>
          <Render.screen
            path={'/home'}
            title='Home'
            navbar={<Navbar/>}
            // hasNavbar={true}
            isPrivate={true}
            privateState={true}
            screen={Home}
          />

          <Render.screen
            title='Settings'
            // hasNavbar={true}
            path={'/settings'}
            screen={Settings}
          />
          <Render.screen
            title='About'
            // hasNavbar={true}
            path={'/about'}
            screen={About}
          />
    </Render.Render>
  );
}

How loading component work in screen


function SignUpScreen(props: ScreenProps) {
    const router = useRouter()
    const translate = useTranslate()
    const { colors } = useTheme()
    const { push, history, basePath } = useRouter()

    const { isLoading, refetch, role, isLoggedIn, user_info } = useAuth();

    useEffect(() => {
        if (isLoggedIn) {
            props.setLoadingComponent(true)
            setTimeout(() => {
                history.back()
                props.setLoadingComponent(false)
            }, 100);
        }
        else {
            props.setLoadingComponent(false)
        }
        return () => {
        }
    }, [isLoading, isLoggedIn, refetch])

    const {
        sign_in,
        password_error,
        sign_up,
        password,
        name,
     } = translate

    const [loading, setLoading] = useState(false);
    const [error, setError] = useState<string>()

    const signupHandle = async () => {
       
    }

    return (
        <ScrollView>
          //-----------------------------------------------
          //-----------------------------------------------
          //-----------------------------------------------
          //-----------------------------------------------
          //-----------------------------------------------
        </ScrollView>
    );
}

export default SignUpScreen;
export const translate = {
   en: {
        incomplete_order_message: "You have an incomplete order.",
        view_order: "View order",
        discount_high_to_low: "Discount: high to low",
        discount_low_to_high: "Discount: low to high",
        price_high_to_low: "Price: High to low",
        price_low_to_high: "Price: Low to high",
    },
    bn:{
      // ---------------------------------
      // ---------------------------------
      // ---------------------------------
      // ---------------------------------
      // ---------------------------------
    },
    in:{
      // ------------------------------------
      // ------------------------------------
      // ------------------------------------
      // ------------------------------------
      // ------------------------------------
    }
}
import React, { useContext, createContext } from 'react';
import { translate, TranslateInterface } from './translate'

const TranslateContext = createContext<TranslateInterface>(translate.bn)
function TranslateProvider({ children }: { children: React.ReactNode }) {
    const bn = translate.bn
    return (
        <TranslateContext.Provider value={bn}>
            {
                children
            }
        </TranslateContext.Provider>
    );
}
export function useTranslate() {
    const translate: TranslateInterface = useContext(TranslateContext);
    return translate
}
export default TranslateProvider;

pass parameter:

| Property | Description | |-----------------|--------------------------------------------------------------------| | path | A string representing a path or identifier for the component. | | screen | A function that takes props and returns a React element. Used to define the content or component to be rendered in the screen. | | title | A string representing the title or heading for the component. | | navbar | (Optional) A function that renders a navigation bar or header component. It takes props and returns a React element. Default: Prebuilt navbar| | footer | (Optional) A function for rendering a footer component. It takes props and returns a React element. | | isPrivate | A boolean flag that may indicate whether this component requires authentication or authorization to access. It can be used to control access to the component. | | privateState | A boolean flag that represents the private state of the component. It could be used to determine if the user is currently authenticated or authorized to access the component. | | hasFooter | A boolean flag that controls whether the component should include a footer. It can be used to toggle the presence of a footer. | | hasNavbar | A boolean flag that controls whether the component should include a navigation bar or header. It can be used to toggle the presence of a navigation bar. | | drawerConfig | Drawer configure |

How to Create a 404 screen

Use at the end:

      <Render.screen
        title='Not Found'
        hasFooter={true}
        hasNavbar={true}
        path='*'
        screen={NotFound}
      />

How to redirect to other


export default function NotFound(props: ScreenProps) {
    const router = useRouter();
    const navigation = useNavigation()
    useEffect(() => {
        navigation.setLoadingComponent(true)
        router.push('/home')
        navigation.setLoadingComponent(false)
        return () => {
        }
    }, [])

    return (
        <View>
        </View>
    )
}
const Home = (props: ScreenProps) => {
  const router = useRouter()
  return (
    <View>
      <Text>
        Home
      </Text>
      <Link href='/about'>
        About
      </Link>
      <Button
        title='Home'
        onPress={() => {
          router.push('/settings/435345')
        }}
      />
    </View>
  )
}

Dynamic screen

const Navigate = () => {
  const Render = new RenderScreen();
  const navigation = useNavigation();
  const params = useParams()
  const searchparams = useSearchparams()
  return (
    <Render.Render>
      <Render.screen
        title='home'
        // hasNavbar={true}
        path='/settings/:settingID'
        screen={Settings}
      />
      <Render.screen
        title='home'
        // hasNavbar={true}
        path={'/blog/:blogID/:title'}
        screen={About}
      />
    </Render.Render>
  )
}

Note: Avoid using slashes at the end of path

Bad/not working: /blog/:blogID/:title/ Use: /blog/:blogID/:title

Params

const params = useParams()
 const Home = (props: ScreenProps) => {
  const params = props?.params;
  console.log(params)
  const router = useRouter()
  return (
    <View>
      <Text>
        Home
      </Text>
      <Link href="/settings/435345?search=5435&query=45435&done=true#done">
        Settings
      </Link>
      <Button
        title='Settings'
        onPress={() => {
          router.push('/settings/435345?search=5435&query=45435&done=true#done')
        }}
      />
    </View>
  )
}
{
  blogID:53455,
  title:"Title"
}

| Property | Details | |----------------|--------------------------------------| | key | Keys of type string. | | values | Values of type string or number. |

Screen component props

| Property | Details | |------------------------|------------------------------------------------| | loadingComponent | Indicates whether a loading component is displayed. | | setLoadingComponent | Function to set the loading component state. | | customDynamicNavbar | Custom dynamic navigation bar component. | | setCustomDynamicNavbar | Function to set the custom dynamic navbar component. | | params | Parameters for the screen. |

Router properties

  const router = useRouter()
  console.log(router)
navigate a link
 const Home = (props: ScreenProps) => {
  const params = props?.params
  const router = useRouter()
  return (
    <View>
      <Text>
        Home
      </Text>
      <Link href="/settings/435345?search=5435&query=45435&done=true#done">
        Settings
      </Link>
      <Button
        title='Settings'
        onPress={() => {
          router.push('/settings/435345?search=5435&query=45435&done=true#done')
        }}
      />
    </View>
  )
}

Searchparams

  const router = useRouter()
  const searchparams = router?.query

with query: https://example.com/path?name=Branch&product=5345 | Property | Details | |----------------|--------------------------------------| | key | Keys of type string. | | values | Values of type string or number. |

Note: Avoid using slashes at the end of link/url

Bad/not working: /settings/435345/?search=5435&query=45435&done=true#done Use: /settings/435345?search=5435&query=45435&done=true#done

| Property | Description | |-----------------|----------------------------------------------------------------------| | path | A string or null representing the path. | | basePath | A string representing the base path. | | hash | A string or null representing the hash. | | protocol | A string or null representing the protocol. | | asPath | A string representing the asPath. | | origin | A string or null representing the origin. | | username | A string or null representing the username. | | password | A string or null representing the password. | | hostname | A string or null representing the hostname. | | port | A string or null representing the port. | | query | An object with keys as strings and values of any type. | | push | A function for navigating with options, returning a promise. | | history | An object with methods for navigating history and retrieving history stack. | | title | Current screen title |

Navigation Provider

 const navigation = useNavigation();

Navigation properties:

| Property | Details | |----------------|----------------------------------------------| | loadingComponent | Indicates whether a loading component is displayed. | | setLoadingComponent | Function to set the loading component state. | | customDynamicNavbar | Custom dynamic navigation bar component. | | setCustomDynamicNavbar | Function to set the custom dynamic navbar component. |

Modal

https://reactnative.dev/docs/modal

Components

  • StyledText
  • PressableButton
  • TouchableOpacityButton
  • Link
  • checkbox
  • input
  • Toast
  • Ratings
  • Pagination
  • Dropdown picker

StyledText

<StyledText>
        Home
</StyledText>

| Property | Description | | --------------- | ------------------------------------------------ | | children | Child elements or content to be rendered. | | style (optional) | Styling information for the component. | | numberOfLines (optional) Number of lines to limit the content (used in text components). |

PressableButton or TouchableOpacityButton

    <PressableButton onPress={()=>{}} text={'Home'} />

| Property | Description | | --------------- | -------------------------------------------------------------------------------------------------------------------- | | text (optional) | The text or label to be displayed on the button. | | onPress (optional) | A function to be executed when the button is pressed. | | disableStyle (optional) | Styling for the button when it's disabled. | | containerStyle (optional) | Additional container style for the button. | | disabled (optional) | If true, the button is in a disabled state. | | image (optional) | An image component or source to be displayed on the button. | | image_url (optional) | URL or source for the image to be displayed on the button. | | imageStyle (optional) | Styling for the image component. | | textStyle (optional) | Styling for the text on the button. |

These descriptions provide a detailed explanation of each property, its data type, and the role it plays in the buttonPropsType type definition. You can use this table to better understand the purpose of each property and how to use them in your code or documentation.

Link

     <Link href='/path?name=Branch&products=[Journeys,Email,Universal%20Ads]'>
        lorem
      </Link>

| Property Description | | --------- | ------------------------------------------------ | | href | The URL or link destination. | | children | Child elements or content to be displayed as the link text. | | style (optional) | Styling information for the link. |

Checkbox

 <Checkbox isChecked={isChecked} setChecked={setChecked}/>

| Property | Description | | --------------| ------------------------------------------------- | | isChecked | Indicates whether the checkbox is checked. | | setChecked | A function to update the isChecked state. | | style (optional) | Styling information for the checkbox. | | asset (optional) | Defines assets for the checked and unchecked image. |

Ratings

<Ratings rating={10} size={10} />

| Property | Description | | --------- | ------------------------------------------------ | | size (optional) | Specifies the size of the component. | | rating | Represents the rating value. | | asset (optional)| Defines assets for the filled and empty image. |

Toast

  Toast({ text: noResultsFoundPlaceholder })

| Property | Description | | --------- | ------------------------------------------------ | | type (optional)| Specifies the type of the component. | | text | Contains the text content. |

Input

 <Input
          setValue={setEmail}
          value={email}
          placeholder={"emailTr"}
          toast={"email_error"}
          pattern={/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|.(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/}
        />

| Property |Description | | -------------------| ----------------------------------------------------- | | autoFocus (optional) | Determines if the input should receive focus automatically. | | containerStyle (optional) | Styling information for the container of the input. | | style (optional) | Styling information for the input component. | | asset (optional) | Specifies an asset associated with the input. | | value | Contains the current value of the input. | | multiline (optional) | Indicates if the input allows multiple lines of text. | | setValue | A function to set or update the input value. | | defaultValue (optional) | Provides a default value for the input. | | placeholder (optional) | Displays a placeholder text in the input field. | | pattern (optional) | Defines a regular expression pattern for input validation. | | toast (optional) | A message or toast to display as feedback for the input. | | type (optional) | password or text |

Pagination

 <Pagination
        currentPage={10}
        getLastPage={100} pageHandle={() => { }}
        disableButton={{
          bg: 'red',
          text: 'white'
        }}
        button={{
          bg: 'gold',
          text: "white",
          borderWidth: 1,
          borderColor: 'red',
        }}
      />

| Property | Description | | --------------------- --------------------------------------------- | | disableButton (optional) | Configurations for a disabled button. | | button (optional) | Configurations for an enabled button. | | pageHandle | A function or handler for page management. | | currentPage | Represents the current page or state. | | getLastPage | A function or handler to retrieve the last page. |

Dropdown picker

<View>
        <DropDownPicker
          multipleConfig={{
            hasMultiple: true,
            storeValue: storeValue,
            resetTitle: "Reset",
            selectedTitle: "Selected",
            setStoreValue: setStoreValue
          }}

          items={[
            { label: '4545', value: "FFFFFFsFF" },
            { label: '4545', value: "FFFFFfFFF" },
            { label: '4545', value: "FFFFsfFFFF" },
            { label: '4545', value: "FFFFFFFF" },
            { label: '4545', value: "FFFFfFFFF" },
          ]}
        />
      </View>

type DropDownPickerProps = {
    placeholderConfig?: {
        noResultsFoundPlaceholder?: string,
        searchPlaceholder?: string,
        placeholder?: string,
    },

    multipleConfig?: {
        asset?: {
            checked?: number,
            unchecked?: number
        }
        hasMultiple: boolean,
        setStoreValue: React.Dispatch<any[]>,
        storeValue: any[],
        selectedTitle: string,
        resetTitle: string,
    }
    singleConfig?: {
        value: {
            id?: number | string,
            label: string;
            value: string;
        },
        defaultValue: {
            id?: number | string,
            label: string;
            value: string;
        },
        setValue: React.Dispatch<React.SetStateAction<{
            id?: number | string,
            label: string;
            value: string;
        }>>
    }

    hiddenArrow?: boolean,
    imageStyle?: ViewStyle | TextStyle | ImageStyle | object,
    textStyle?: ViewStyle | TextStyle | ImageStyle | object,
    width?: number,
    disable?: boolean,
    disableStyle?: ViewStyle | TextStyle | ImageStyle | object,
    containerStyle?: ViewStyle | TextStyle | ImageStyle | object,
    items: {
        id?: number | string,
        label: string;
        value: string;
    }[],
    animationType?: "slide" | "fade"
    asset?: number,
}

| Property | Description | | ------------------------ | ----------------------------------------------------------------------------------------------------- | | placeholderConfig | Configuration for the placeholder text, including noResultsFoundPlaceholder, searchPlaceholder, and placeholder. | | multipleConfig | Configuration for multiple selections, including asset, hasMultiple, setStoreValue, storeValue, selectedTitle, and resetTitle. | | singleConfig | Configuration for single selection, including value, defaultValue, and setValue. | | hiddenArrow | A boolean indicating whether the arrow icon is hidden. | | imageStyle | Styling for the image within the component. | | textStyle | Styling for the text within the component. | | width | The width of the component. | | disable | A boolean indicating whether the component is disabled. | | disableStyle | Styling for the disabled component. | | containerStyle | Styling for the component container. | | items | An array of objects representing selectable items with properties id, label, and value. | | animationType | The type of animation for the dropdown, either 'slide' or 'fade'. | | asset | An optional asset for customization, including checked and unchecked properties. |