Leaderboard Component
The Leaderboard component efficiently displays and manages leaderboards in React, offering customizable styling. Users can easily monitor progress and compete through its clear interface.
Components Visuals

Installation
To install the Quest react-native-sdk into your project, follow these steps:
Open your terminal/command prompt.
Navigate to your project's root directory using the
cdcommand if you're not already there.Run the following command to install the
quest-sdkpackage using npm:
npm install @questlabs/react-native-sdkThis command will download and install the package and its dependencies into your project.
Usage
Root Component
Import the QuestProvider Component: Import the
QuestProvidercomponent from the@questlabs/react-sdkpackage.
import { QuestProvider } from '@questlabs/react-sdk';Pass the Required Props: Pass the required props to the
QuestProvider. The required props areapiKey,entityId,authenticationTokenandfontFamily.
Component Usage
To integrate the useLeaderboard component into your React native application, follow these steps.
Import useLeaderboard Hook: Import the
useLeaderboardcomponent from the@questlabs/react-sdkpackage.Import the Leaderboard Component: Import the
Leaderboardcomponent from the@questlabs/react-sdkpackage.Pass the Required Props: Pass the required props to the
useLeaderboard. The required props arequestUserId, anduserTokenor if user don't have quest User id then they can pass ownuserIdto get questUserId and Token.
import { useLeaderboard , Leaderboard } from "@questlabs/react-native-sdk";Props of Leaderboard Component
The Leaderboard component accepts the following props
leadersData
ITopThree[]
Require
in offline user need to provide the require filed data.
loading
boolean
Optional
don't use in offline mode.
cardTitle
string
Optional
Title for list.
cardDescription
string
Optional
Description for list.
header
string
Optional
Header text for component.
styleConfig
object
Optional
An object containing Styling properties for styling various components within the get started process, including form, topbar, headings, descriptions, and buttons.
Style Props
styleConfig {
Description?: TextStyle;
Footer?: {
FooterStyle?: ViewStyle;
FooterText?: TextStyle;
FooterIcon?: TextStyle;
};
Form?: ViewStyle;
Heading?: TextStyle;
IconStyle?: TextStyle;
IndexBackground?: ViewStyle;
IndexColor?: TextStyle;
InnerBackground?: ViewStyle;
MainHeading?: TextStyle;
PointsBackground?: ViewStyle;
PointsColor?: TextStyle;
ProgressBarColor?: ViewStyle;
}Example Usage
App.js
import { SafeAreaView, StyleSheet, StatusBar } from "react-native";
import React, { useState } from "react";
import { QuestProvider } from "@questlabs/react-native-sdk";
import DemoComponent from "./DemoComponent";
export default function App() {
return (
<SafeAreaView style={styles.container}>
<StatusBar />
<QuestProvider
apiKey="Your-Api-Key"
apiSecret="Your-Api-Secret"
entityId="Your-Api-entityId"
authenticationToken="Your-authentication-token"
fontFamily= "Your-Font-FamFamily"
>
<DemoComponent />
</QuestProvider>
</SafeAreaView>
);
}DemoComponent.tsx
import React from "react";
import {Leaderboard ,useLeaderboard} from "@questlabs/react-native-sdk";
const DemoComponent = () => {
// const LeaderboardItem = useLeaderboard({
// questId: "Your-Quest_ID" ,
// userId:"5235trfet365try67ywry5"
// })
const LeaderboardItem = useLeaderboard({
questUserId: "Your-user-id",
questToken: "Your-Token-id"
});
return (
<>
<Leaderboard
leadersData={LeaderboardItem.leadersData}
loading={LeaderboardItem.loading}
cardDescription="this is new description"
cardTitle="This is new title"
header="My leaderboard"
/* styleConfig={{
Description: { color: "red" },
Footer: {
FooterIcon: { color: "red" },
},
Form: {
backgroundColor: "red",
},
Heading: { color: "orange" },
IconStyle: { color: "black" },
IndexBackground: { backgroundColor: "red" },
IndexColor: { color: "yellow" },
InnerBackground: { backgroundColor: "yellow" },
MainHeading: { color: "yellow" },
PointsBackground: { backgroundColor: "blue" },
PointsColor: { color: "yellow" },
ProgressBarColor: { backgroundColor: "orange" },
}} */
/>
{/* <Leaderboard
leadersData={[
{
name: "ashish",
runningXP: 10000,
userId: "1111",
imageUrl: "siongpsn",
xpLimit:50000
},
{
name: "Vishal",
runningXP: 2000,
userId: "222",
imageUrl: "siongpsn",
xpLimit:5000
},
{
name: "Pankej",
runningXP: 1000,
userId: "3333",
imageUrl: "siongpsn",
xpLimit:1000
},
{
name: "Rohit",
runningXP: 500,
userId: "4444",
imageUrl: "siongpsn",
xpLimit:1000
},
{
name: "paras",
runningXP: 400,
userId: "555",
imageUrl: "siongpsn",
xpLimit:1000
},
]}
/> */}
</>
);
};
export default DemoComponent;Demo
Last updated