Endless React Admin Theme is pure React theme, Yes! you read correct, it's No Jquery React admin theme including all feature and functionality with ease of integration for your project.Endless theme document will help you to understand React from scratch to making perfect real time dream application.
We aslo includes React Hooks and Redux which is manage applications data in easy way. It's user freindlly to learn the application.
Follow the documentation carefully for solving your issues in minutes, Apart from that if you don't find solution when you following the docs you can raise a support ticket for your issue from pixelstrap.freshdesk.com
DependanciesYes! again No Jquery dependency.
Welcome to React! React helps you build modern applications for the web, mobile, or desktop.
For getting started an React application you needs two things as Prerequisites.
Before you begin, make sure your development environment includes Node and an npm package manager.
Download latest version of node.js from nodejs.org.
React CLI, and React apps depend on features and functionality provided by libraries that are available as npm packages. To download and install npm packages, you must have an npm package manager. This Quick Start uses the npm client command line interface, which is installed with Node.js by default. To check that you have the npm client installed, run npm -v in a terminal/console window.
For better understanding Vue we suggest you to once go through official documentation of Vue from ReactJS.org
If you want Endless theme setup then directly follow next endless setup section
You use the React CLI to create projects, generate application and library code, and perform a variety of ongoing development tasks as it is a progressive framework for building user interfaces.
Install the React CLI globally.
To install the CLI using npm, open a terminal/console window and enter the following command:
npm install -g create-react-app
npm create-react-app my-app
cd my-app
npm start
If you have already download and install node.js and React CLI then ignore prerequisites accordingly.
Download latest version of node.js from nodejs.org.
Install React CLI Using:
npm install -g create-react-app
cd theme
npm install
npm start
Once you serve your application by default it will take their defalult port so you can open port using localhost://3000
Make sure you are not running any other react project in local if so then use new generated port from terminal with label called app running at:
npm run build
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]
Here we represent Vue Folder Structure and Style Customize
Remove design of loader from src >> components >> common >> loader.js between comment of Loader starts to Loader ends
<!-- Loader starts -->
<div className={`loader-wrapper ${show ? '' : 'loderhide'}`}>
<div className="loader bg-white">
<div className="whirly-loader"></div>
</div>
</div>
correspondingly remove methods of useEffect from script tag in loader.js
const [show, setShow] = useState(true);
useEffect(() => {
setTimeout(() => {
setShow(false)
}, 1000);
},[show]);
Your complete route structure is place at index.js
Suppose you are creating a new component (For creating a new component refer create new component ) then you have to add new routes for that components.
Import that component in index.js
/* Dashboards */
import Default from './components/dashboard/defaultCompo/default';
import Ecommerce from './components/dashboard/ecommerce';
import University from './components/dashboard/university';
import Crypto from './components/dashboard/crypto/crypto-component';
import ServerComponent from './components/dashboard/server/server-component';
import Project from './components/dashboard/project/project';
Use that component name with path in routes array in index.js
%process.env.PUBLIC_URL% :- When you run npm run build, Create React App will substitute %PUBLIC_URL% with a correct absolute path so your project works even if you use client-side routing or host it at a non-root URL.
<Route exact path={`${process.env.PUBLIC_URL}/`} component={Default} />
<Routeexactpath={`${process.env.PUBLIC_URL}/dashboard/default`}component={Default}/>
<Routepath={`${process.env.PUBLIC_URL}/dashboard/ecommerce`}component={Ecommerce}/>
<Routepath={`${process.env.PUBLIC_URL}/dashboard/university`}component={University}/>
<Routepath={`${process.env.PUBLIC_URL}/dashboard/crypto`}component={Crypto}/>
<Routepath={`${process.env.PUBLIC_URL}/dashboard/server`}component={ServerComponent}/>
<Routepath={`${process.env.PUBLIC_URL}/dashboard/project`}component={Project}/>
Suppose you want to change in your menu sidebar or want to add new menu in your menu section then you just need to open constant >> menu.js and
{
title: 'Dashboard', icon: Home, type: 'sub', badgeType: 'primary', active: false, children: [
{ path: '/dashboard/default', title: 'Default', type: 'link' },
{ path: '/dashboard/ecommerce', title: 'E-Commerce', type: 'link' },
{ path: '/dashboard/university', title: 'University', type: 'link' },
{ path: '/dashboard/crypto', title: 'Crypto', type: 'link' },
{ path: '/dashboard/server', title: 'Server', type: 'link' },
{ path: '/dashboard/project', title: 'Project', type: 'link' }
]
},
Path : Here you have to give path name same as you have given in index.js
title : Title is the name that you can see on frontside so here you can give attractive title to showcase your menu item
type : It denote how you want to open your particular routes means on same page, or on new page on live application. Means suppose you want to open "ecommerce" dashboard on new page then write "extTabLink" in type attribute. Here we have four type attribute:
Now, Suppose you want to add New Menu in your menu.js then you just need to add it in same way like if it has no any child then no need to give children attribute and if your menu item have sub menu then you can add children attribute accordingly in your menu.js. For more refer constant >> menu.js.
Suppose if you want to create a new class component then you just need to create a folder in src >> pages and then create a react file with .js extension and then paste code as per your needs.
import React, { Component } from 'react';
class Demo extends Component {
render() {
return (
<div>
//write Html code or structure
</div>
);
}
}
export default Demo;
Suppose if you want to create a new class component then you just need to create a folder in src >> pages and then create a react file with .js extension and then paste code as per your needs.
import React from 'react';
const Demo = () => {
return (
<div>
//write Html code or structure
></div>
);
};
export default Demo;
Suppose you want to use widget then you need to integrate a particular widget in your existing file. Suppose you want to use calneder components in your dashboard then you need to import that widget in your dashboard
import React, { Component } from 'react';
import Datepicker from './datepicker'; //import external dependacy
class Demo extends Component {
render() {
return (
<Datepicker>
//declare like this here
</Datepicker>
);
}
}
export default Demo;
Suppose you want to customize color and font as per your project then you can change it by:
Suppose you want to customize your theme primary and secondary color:
@import "theme/variables";
$primary-color: #0288d1;
$secondary-color :#26c6da;
Then you have to create in assets >> scss >> theme >> _color-1.scss and then place your theme primary color in $primary-color and your secondary color in $secondary-color and then create color-1.scss import all scss in your color-1.scss.
Suppose you want to change color and size of card-body, Alert, Badge, Form input, breadcrumb,buttons, footer, sidebar and many more then you just need to change that particular color from _variable.scss in assets >> scss >> theme >> _variable.scss
You can change font of your theme from index.html
<link rel="icon" href="<%= BASE_URL %>favicon.png">
<link href="https://fonts.googleapis.com/css?family=Work+Sans:100,200,300,400,500,600,700,800,900" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Poppins:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
We have provided a bunch of page layouts and menu layouts that can be implemented with just a options change to body!
For creating your dream layout open customizer by click on setting icon
You can change your theme by clicking particular setting
Then you just need to click on configuration button
Configuration popup will be open then just click on copy json button which will copy configuration of theme which you want
Now go to our theme >> src >> data >> customizer >> config.js and then just replace complete config.js with your new configuration and re-run theme using npm start.
{ "settings":
{
"layout_type":"ltr",
"sidebar":{
"type":"default",
"body_type":"default"
},
"sidebar_setting":"default-sidebar",
"sidebar_backround":"dark-sidebar"
},
"color":
{
"layout_version":"light",
"color":"color-1",
"primary_color":"#4466f2",
"secondary_color":"#1ea6ec",
"mix_layout":"default"
},
"router_animation":"fade"
}
Please refer the below table for corresponding classes. it is just for your inforamation you do not need to bother about this it's dynamically take particular classes according to your needs.
| Layout | Options |
|---|---|
| RTL Layout | Attribute: main-theme-layout="rtl" |
| Light layout | class: light-only |
| Dark Page-body | class: dark-body-only |
| Dark Page-body & Sidebar | class: dark-sidebar-body-mix |
| Dark Layout | class: dark-only |
We have some inbuilt themes for sidebar that can be switched with just a class change
| Sidebar | Options |
|---|---|
| Default Sidebar layout | Attribute: sidebar-layout="default-sidebar" |
| Bordered Navigation | Attribute: sidebar-layout="border-sidebar" |
| Sidebar icons color | Attribute: sidebar-layout="iconcolor-sidebar" |
| Background Image | class: sidebar-img* |
| Light Sidebar layout | class: light-sidebar |
Suppose you want to add RTL in your application then you just need to set "layout_type" as RTL so application will be converted in RTL layout.
Suppose you want to change Colors from config.js then you have to first clear localStorage then you will get your color in theme.
{ "settings":
{
"layout_type":"rtl",
"sidebar":{
"type":"default",
"body_type":"default"
},
"sidebar_setting":"default-sidebar",
"sidebar_backround":"dark-sidebar"
},
"color":
{
"layout_version":"light",
"color":"color-1",
"primary_color":"#4466f2",
"secondary_color":"#1ea6ec",
"mix_layout":"default"
},
"router_animation":"fade"
}
<button class="btn btn-primary" type="button">Primary</button>
<button class="btn btn-secondary" type="button">Secondary</button>
<button class="btn btn-success" type="button">Success</button>
<button class="btn btn-info" type="button">Info</button>
<button class="btn btn-warning" type="button">Warning</button>
<button class="btn btn-danger" type="button">Danger</button>
<span class="badge badge-primary">Primary</span>
<span class="badge badge-secondary">Secondary</span>
<span class="badge badge-success">Success</span>
<span class="badge badge-info">Info</span>
<span class="badge badge-warning">Warning</span>
<span class="badge badge-danger">Danger</span>
<span class="badge badge-light">Light</span>
<span class="badge badge-dark tag-pills-sm-mb">Dark</span>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
</div>
<div class="progress">
<div class="progress-bar bg-primary" role="progressbar" style="width: 25%" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100">
</div>
<div class="progress">
<div class="progress-bar bg-secondary" role="progressbar" style="width: 50%" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100">
</div>
<div class="progress">
<div class="progress-bar bg-success" role="progressbar" style="width: 75%" aria-valuenow="75" aria-valuemin="0" aria-valuemax="100">
</div>
<div class="progress">
<div class="progress-bar bg-info" role="progressbar" style="width: 100%" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100">
</div>
<div class="alert alert-primary dark" role="alert">This is a info alert—check it out!</div>
<div class="alert alert-secondary dark" role="alert">This is a light alert—check it out!</div>
<div class="alert alert-success dark" role="alert">This is a success alert—check it out!</div>
<div class="alert alert-info dark" role="alert">This is a danger alert—check it out!</div>
<div class="alert alert-warning dark" role="alert">This is a secondary alert—check it out!</div>
<div class="alert alert-danger dark" role="alert">This is a warning alert—check it out!</div>
<div class="alert alert-light dark" role="alert">This is a dark alert—check it out!</div>
<div class="alert alert-dark dark" role="alert">This is a dark alert—check it out!</div>
import { Popover, PopoverHeader, PopoverBody} from 'reactstrap';
const Example = () => {
const [popoverOpen, setPopoverOpen] = useState(false);
const Toggle = () => {
setPopoverOpen(!popoverOpen)
}
return(
<button id="Popover1" type="button" className="btn btn-primary">
Click to toggle popover
</button>
<Popover placement="top" isOpen={popoverOpen} target="Popover1" toggle={Toggle}>
<PopoverHeader>Popover Title</PopoverHeader>
<PopoverBody>And here's some amazing content. It's very engaging. Right?</PopoverBody>
</Popover>
)
}
<UncontrolledTooltip placement="right" target="UncontrolledTooltipExample">
Hello world!
</UncontrolledTooltip>
const DropdownComponent = () => {
const [dropdownOpen, setDropdownOpen] = useState(false);
const toggle = () => setDropdownOpen(!dropdownOpen);
return(
<Dropdown isOpen={dropdownOpen} toggle={toggle}>
<DropdownToggle caret color="primary">
Dropdown
</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Header</DropdownItem>
<DropdownItem>Some Action</DropdownItem>
<DropdownItem disabled>Action (disabled)</DropdownItem>
<DropdownItem divider />
<DropdownItem>Bar Action</DropdownItem>
</DropdownMenu>
</Dropdown>
)
}
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages,and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting,remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages,and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum
import { TabContent, TabPane, Nav, NavItem, NavLink } from 'reactstrap';
const TabsSet = () => {
const [activeTab, setActiveTab] = useState('1');
return(
<Nav tabs className="border-tab-primary">
<NavItem className="nav nav-tabs" id="myTab" role="tablist">
<NavLink className={activeTab === '1' ? 'active' : ''} onClick={() => setActiveTab('1')}>
Home
</NavLink>
</NavItem>
<NavItem className="nav nav-tabs" id="myTab" role="tablist">
<NavLink className={activeTab === '2' ? 'active' : ''} onClick={() => setActiveTab('2')}>
Profile
</NavLink>
</NavItem>
<NavItem className="nav nav-tabs" id="myTab" role="tablist">
<NavLink className={activeTab === '3' ? 'active' : ''} onClick={() => setActiveTab('3')}>
Contact
</NavLink>
</NavItem>
</Nav>
<TabContent activeTab={activeTab}>
<TabPane tabId="1">
<p className="mb-0 m-t-30">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum</p>
</TabPane>
<TabPane tabId="2">
<p className="mb-0 m-t-30">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages</p>
</TabPane>
<TabPane tabId="3">
<p className="mb-0 m-t-30">Lorem Ipsum is simply dummy text of the printing and typesetting industry. when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum</p>
</TabPane>
</TabContent>
)
}
npm i react-light-accordion
import { Accordion, AccordionItem } from 'react-light-accordion';
import 'react-light-accordion/demo/css/index.css';
const AccordionComponent = () => {
const DummyContent1 = () => (
<div className="collapse show" id="collapseicon" aria-labelledby="collapseicon" data-parent="#accordionoc">
<div className="card">
<p>
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</p>
</div>
</div>
);
const DummyContent2 = () => (
<div className="collapse show" id="collapseicon1" aria-labelledby="collapseicon1" data-parent="#accordionoc">
<p>
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et.
</p>
</div>
);
const DummyContent3 = () => (
<div className="collapse show" id="collapseicon2" data-parent="#accordionoc">
<p>
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et.
</p>
</div>
);
return (
<div>
<div className="card">
<Accordion atomic={true}>
<AccordionItem className="card-header bg-primary" title="Collapsible Group Item #1">
<DummyContent1 />
</AccordionItem>
<AccordionItem className="card-header bg-primary" title="Collapsible Group Item #2">
<DummyContent2 />
</AccordionItem>
<AccordionItem className="card-header bg-primary" title="Collapsible Group Item #3">
<DummyContent3 />
</AccordionItem>
</Accordion>
</div>
</div>
);
}
<h6 class="sub-title mb-5 mt-5">Regular shadow</h6>
<div class="shadow-lg p-25 shadow-showcase text-center">
<h6 class="m-0 f-18">Larger shadow</h5>
</div>
<h6 class="sub-title mb-5 mt-5">Regular shadow</h6>
<div class="shadow shadow-showcase p-25 text-center">
<h6 class="m-0 f-18">Regular shadow</h5>
</div>
<h6 class="sub-title mb-5 mt-5">small shadow</h6>
<div class="shadow-sm shadow-showcase p-25 text-center mb-5">
<h6 class="m-0 f-18">Small shadow</h5>
</div>
This is an React wrapper library for the React Scrollbar. To use this library you should get familiar with the Perfect Scrollbar documentation as well since this documentation only explains details specific to this wrapper.
npm i react-scrollbar
import ScrollBars from 'react-scrollbar';
const scrollbarStyles = { borderRadius: 5 }
const Scrollable = () => {
return (
<div className="card-body">
<ScrollBars horizontal autoHide={false} >
<div> <img src = {require('../../assets/images/banner/3.jpg')} alt="girl" className="img-fluid" /></div>
</ScrollBars>
</div>
)
}
npm i react-toastify
<div className="card-body btn-showcase">
<button type="button" className="btn btn-success" onClick={() => toast.success("Success Notification !")}>
Success Notification
</button>
</div>
<ToastContainer />
npm i reactour
import Tour from 'reactour';
const TourComponent = () => {
const [isTourOpen, setIsTourOpen] = useState(true);
const closeTour = () => {
setIsTourOpen(false);
}
const steps = [
{
selector: '.pro',
content: 'This is Profile Image',
},
]
render(
<Tour steps={steps} isOpen={isTourOpen} onRequestClose={closeTour} />
)
}
npm i react-ratings-declarative
import Ratings from 'react-ratings-declarative';
const RatingComponent = () => {
const [rating, setRating] = useState();
const changeRating = (newRating) => {
setRating1(newRating)
}
return (
<Ratings
rating={rating}
widgetRatedColors="blue"
changeRating={changeRating}
>
<Ratings.Widget />
<Ratings.Widget />
<Ratings.Widget />
<Ratings.Widget widgetHoverColor="black" />
<Ratings.Widget />
<Ratings.Widget />
<Ratings />
);
}
npm i reactstrap
import { Pagination, PaginationItem, PaginationLink } from 'reactstrap';
<Pagination aria-label="Page navigation" className="pagination-primary">
<PaginationItem>
<PaginationLink href="#">
Previous
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
3
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
Next
</PaginationLink>
</PaginationItem>
</Pagination>
npm i sweetalert2
import SweetAlert from 'sweetalert2'
const Sweetalert = (props) => {
const Showalert = () => {
SweetAlert.fire({title:"Hello world!"})
}
return (
<button class="btn btn-primary" onClick={Showalert}>Basic</button>
)
}
npm i react-input-range
import React from 'react'
import InputRange from 'react-input-range'
const RangeSlider = () => {
const initialslider = {
value: 10,
}
const [values, setValues] = useState(initialslider);
return (
<InputRange
maxValue={20}
minValue={0}
value={values.value}
onChange={(value) =>
setValues({ ...values, value: value })
}
/>
)
}
npm i react-image-crop
import ReactCrop from "react-image-crop";
import "react-image-crop/dist/ReactCrop.css";
const Example = () => {
const [crop, setCrop] = useState({ unit: '%', width: 30, aspect: 16 / 9 });
return(
<ReactCrop
src={src}
crop={crop}
onImageLoaded={onImageLoaded}
onComplete={onCropComplete}
onChange={onCropChange}
/>
)
}
npm i react-dragula
import dragula from 'react-dragula';
import 'node_modules/react-dragula/dist/dragula.css';
const DragAndDrop = (props) => {
const dragulaDecorator = (componentBackingInstance) => {
if (componentBackingInstance) {
let options = {};
dragula([componentBackingInstance], options);
}
};
return (
<Container ref={dragulaDecorator}>
<div>Swap me around</div>
<div>Swap her around</div>
<div>Swap him around</div>
<div>Swap them around</div>
<div>Swap us around</div>
<div>Swap things around</div>
<div>Swap everything around</div>
</Container>
)
}
npm i react-dropzone-uploader
import 'react-dropzone-uploader/dist/styles.css'
import Dropzone from 'react-dropzone-uploader'
const MyUploader = () => {
// specify upload params and url for your files
const getUploadParams = ({ meta }) => { return { url: 'https://httpbin.org/post' } }
// called every time a file's `status` changes
const handleChangeStatus = ({ meta, file }, status) => { console.log(status, meta, file) }
// receives array of files that are done uploading when submit button is clicked
const handleSubmit = (files) => { console.log(files.map(f => f.meta)) }
return (
<Dropzone
getUploadParams={getUploadParams}
onChangeStatus={handleChangeStatus}
onSubmit={handleSubmit}
accept="image/*,audio/*,video/*"
/>
)
}
npm i react-datepicker
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
const Example = () => {
const [startDate,setstartDate] = useState(new Date())
const handleChange = date => {
setstartDate(date);
};
return (
<DatePicker
className="form-control digits"
selected={startDate}
onChange={handleChange} />
);
}
npm i react-bootstrap-typeahead
import { Typeahead } from 'react-bootstrap-typeahead';
import 'react-bootstrap-typeahead/css/Typeahead.css';
//Component
<Typeahead
id="custom-typeahead"
allowNew
multiple
newSelectionPrefix="Add a new item: "
options={[]}
placeholder="Type anything..."
/>
For installing bootstrap in your project use
npm i bootstrap
<table className="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">First Name</th>
<th scope="col">Last Name</th>
<th scope="col">Username</th>
<th scope="col">Role</th>
<th scope="col">Country</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>Alexander</td>
<td>Orton</td>
<td>@mdorton</td>
<td>Admin</td>
<td>USA</td>
</tr>
<tr>
<th>2</th>
<td>John Deo</td>
<td>Deo</td>>
<td>@johndeo</td>
<td>User</td>
<td>USA</td>
</tr>
<tr>
<th>3</th>
<td>Randy Orton</td>
<td>the Bird</td>
<td>@twitter</td>
<td>admin</td>
<td>UK</td>
</tr>
<tr>
<th>4</th>
<td>Randy Mark</td>
<td>Ottandy</td>
<td>@mdothe</td>
<td>user</td>
<td>AUS</td>
</tr>
<tr>
<th>5</th>
<td>Ram Jacob</td>
<td>Thornton</td>
<td>@twitter</td>
<td>admin</td>
<td>IND</td>
</tr>
</tbody>
</table>
npm i mui-datatables
import MUIDataTable from "mui-datatables";
const DataTableComponent = () => {
const columns = [
{name: "id",label: "ID",options: {filter: true,sort: true,}},
{name: "name",label: "Name",options: {filter: true,sort: true,}},
{name: "status",label: "Status",options: {filter: true,sort: true}},
{name: "creat_on",label: "Creat_on",options: {filter: true,sort: true}}
];
const data = [
{ id:"1",name:"Product Menu", status: <i className="fa fa-circle font-success f-12"> </i>, creat_on: "2018-04-18T00:00:00"},
{ id:"2",name:"Category Menu", status: <i className="fa fa-circle font-warning f-12"> </i>, creat_on: "2018-04-18T00:00:00"}
];
const options = {
selectableRows:true,
};
return (
<MUIDataTable
data={data}
columns={columns}
options={options}
/>
)
}
npm i react-google-charts
import React from 'react';
import { GoogleChart } from "react-google-charts";
const GoogleCharts = (props) => {
return (
<GoogleChart
width={'100%'}
height={'400px'}
chartType="PieChart"
loader={<div>Loading Chart</div>}
data={[
['Task', 'Hours per Day'],
['Work', 6.7],
['Eat', 13.3],
['Commute', 20],
['Watch TV', 26.7],
['Sleep', 33.3],
]}
options={{
title: 'My Daily Activities',
colors: ["#51bb25", Your-primary-color, Your-secondary-color, "#148df6", "#ff5f24"]
}}
rootProps={{ 'data-testid': '1' }}
/>
);
}
npm i react-chartjs-2
/* chartjsData.js */
export const Data = {
labels: ["January", "February", "March", "April", "May", "June", "July"],
datasets: [
{
label: "My Second dataset",
backgroundColor: "rgba(253, 43, 100, 0.3)",
borderColor: "#fd2e64",
pointColor: "#fd2e64",
pointStrokeColor: "#fff",
pointHighlightFill: "#000",
pointHighlightStroke: "rgba(30, 166, 236, 1)",
data: [28, 48, 40, 19, 86, 27, 90]
},
{
label: "My First dataset",
backgroundColor: "rgba(101, 90, 243, 0.5)",
borderColor: "#655af3",
pointColor: "#655af3",
pointStrokeColor: "#fff",
pointHighlightFill: "#fff",
pointHighlightStroke: "#000",
data: [10, 59, 80, 81, 56, 55, 40]
}
],
plugins: {
datalabels: {
display: false,
color: 'white'
}
}
}
export const Options = {
maintainAspectRatio: true,
legend: {
display: false,
},
scales: {
xAxes: [{
stacked: false,
}],
yAxes: [{
stacked: false,
}]
},
plugins: {
datalabels: {
display: false,
},
},
}
import { Line } from 'react-chartjs-2';
import { Data,Option} from '../../charts-data/chartjsData';
const ChartjsExample = () => {
return(
<Line
data={Data}
width={778}
height={400}
options={Options}
/>
)
}
npm i react-chartist
import ChartistCharts from 'react-chartist';
import {chart1} from '../../charts-data/chartistData';
const ChartistComponent = (props) => {
return (
<div>
<ChartistCharts
key="1"
className="ct-chart-line flot-chart-container"
data={{
labels: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
series: [[12, 9, 7, 8, 5, 4, 6, 2, 3, 3, 4, 6],
[4, 5, 3, 7, 3, 5, 5, 3, 4, 4, 5, 5],
[5, 3, 4, 5, 6, 3, 3, 4, 5, 6, 3, 4],
[3, 4, 5, 6, 7, 6, 4, 5, 6, 7, 6, 3]]
}} type={'Line'} listener={{
"draw": function (data) {
if (data.type === 'line' || data.type === 'area') {
data.element.animate({
d: {
begin: 2000 * data.index,
dur: 2000,
from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(),
to: data.path.clone().stringify(),
}
});
}
}
}}
options={chart1}
/>
</div>
)
}
}
npm i google-maps-react
import {Map, InfoWindow, Marker, GoogleApiWrapper} from 'google-maps-react';
const GoogleMap = (props) => {
return (
<Map google={props.google} zoom={14}>
<Marker onClick={onMarkerClick}
name={'Current location'} />
<InfoWindow onClose={onInfoWindowClose}>
<div>
<h1>{selectedPlace.name}</h1>
</div>
</InfoWindow>
</Map>
)
}
npm i react-leaflet
import { Map as LeafletMap, TileLayer, GeoJSON, Marker, Popup } from 'react-leaflet';
import WorldData from 'world-map-geojson';
const LeafletMap = () => {
return(
<div id="gmap-simple" >
<LeafletMap
center={[50, 10]}
zoom={6}
maxZoom={10}
attributionControl={true}
zoomControl={true}
doubleClickZoom={true}
scrollWheelZoom={true}
dragging={true}
animate={true}
easeLinearity={0.35}
>
<TileLayer url='http://{s}.tile.osm.org/{z}/{x}/{y}.png' />
<Marker position={[50, 10]}>
<Popup>
Popup for any custom information.
</Popup>
</Marker>
</LeafletMap>
</div>
)
}
npm i react-ckeditor-component
import CKEditors from "react-ckeditor-component";
const [content,setContent] = useState('content')
const onChange = (evt) => {
const newContent = evt.editor.getData();
setContent(newContent)
}
const Editor = () => {
return (
<CKEditors
activeclassName="p10"
content={content}
events={{
"change": onChange
}}
/>
)
}

You can directly use complete E-commerce app to manage your E-commerce with readymade functionality of Add to cart,Quickview, and Checkout. Apart from that if you want it to use it in your frontend application then you just need to change your json with your API data and you get complete workable E-commerce for your frontend.

In Chat application we provide complete chat designing with basic feature like chat with a people.
Present your amazing ideas and images using our smooth and attractive gallery

Now it's time to Decrease your burden by listing your daily task in our To-do app and feel relax.

Now it's time to Decrease your burden by listing your important task in our To-do app and feel relax.
Use our Email application design to build complete email app

You can Bookmark your Favioute application and pages using bookmark app so you can reach to your favioute app quickly.
npm i react-big-calendar
import { Calendar, momentLocalizer } from 'react-big-calendar'
import moment from 'moment'
const localizer = momentLocalizer(moment)
const MyCalendar = props => (
<div>
<Calendar
localizer={localizer}
events={myEventsList}
startAccessor="start"
endAccessor="end"
style={{height: 500}}
/>
</div>
)
There are also many other use of firebase that you can find from reference which we have attach below.
You must have the following prerequisites:
1.setup firebase project in firebase console.
click on Get Started button
2. Add new project
create new project
Accept the controler-terms and click on Create Project
3. Go to Develop > Authentication
4. Get config object for your web app
>> Click the Settings icon, then select Project settings.
>> Go to the web app
>> In Your apps card, select the nickname of the app for which you need a config object.
>> Select Config from the Firebase SDK snippet pane.
>> Copy the config object snippet, then add it to your app's HTML.
copy config add on config.txt
5.Next, you'll need to enable Email authentication from the authentication > Sign-in method tab:
6.go to sign in method
Make disble toggle to enable, and save changes
7.Go to the authentication > Users tab then click on the Add user button and genarate email and password:
npm install ——save firebase
2. Here .env file. Add your firebase credential for using Endless with firebase and restart your app. Don't change defined variables.
This config file manage inside the src >> data >> base.js folder
import * as firebase from "firebase/app";
import 'firebase/firestore';
import "firebase/auth";
const app = firebase.initializeApp({
apiKey: process.env.REACT_APP_FIREBASE_KEY,
authDomain: process.env.REACT_APP_FIREBASE_DOMAIN,
databaseURL: process.env.REACT_APP_FIREBASE_DATABASE,
projectId: process.env.REACT_APP_FIREBASE_PROJECT_ID,
storageBucket: process.env.REACT_APP_FIREBASE_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_FIREBASE_MESSAGEING_SENDER_ID,
appId:process.env.REACT_APP_FIREBASE_API_ID
});
3. Generate components in auth folder called Login and Register and use firebase in Login and Register component according to your needs.
4. If you are using Application with Firebase and you might get error
from Firebase Database.
Message like (FirebaseError : Missing or insufficient permissions).
The security rules read/write set as false means no one
has access to the database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
If you want to login only with firebase then you just need to follow below step.
1 . Just un-comment below commented code from src -> index.js
2 . Do comment un-commented function. And uncommnet comment function. For more read comment described in src -> auth -> signin.js.
For Totally remove firebase from theme then check this video.
Apart from that, if you needs any extra / customization work then also you can get in touch with our experts by raising ticket to help you in customize with affordable extra budget.