Preview: http://dashboards.webkom.co/react/airframe
This commit is contained in:
Tomasz Owczarczyk
2019-08-15 00:54:44 +02:00
parent f975443095
commit 37092d1d6c
626 changed files with 56691 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
import React from 'react';
import {
Container,
Row,
Col,
Input,
Card,
Button,
CardBody,
CardFooter,
CardTitle,
Label,
FormGroup,
Form
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProfileLeftNav } from "../../components/Profile/ProfileLeftNav";
import { ProfileHeader } from "../../components/Profile/ProfileHeader";
const AccountEdit = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Account Edit"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProfileHeader />
</Col>
<Col lg={ 3 }>
<ProfileLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
<div className="d-flex mb-4">
<CardTitle tag="h6">
Account Edit
</CardTitle>
<span className="ml-auto align-self-start small">
Fields mark as <span className="text-danger">*</span> is required.
</span>
</div>
<Form>
{ /* START Input */}
<FormGroup row>
<Label for="oldPassword" sm={3} className="text-right">
<span className="text-danger">*</span> Old Password
</Label>
<Col sm={8}>
<Input
type="password"
name="password"
id="oldPassword"
defaultValue="********"
/>
</Col>
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup row>
<Label for="newPassword" sm={3} className="text-right">
<span className="text-danger">*</span> New Password
</Label>
<Col sm={8}>
<Input
type="password"
name="password"
id="newPassword"
defaultValue="********"
/>
</Col>
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup row className="mb-0">
<Label for="confirmNewPassword" sm={3} className="text-right">
<span className="text-danger">*</span> Confirm New Password
</Label>
<Col sm={8}>
<Input
type="password"
name="password"
id="confirmNewPassword"
defaultValue="********"
/>
</Col>
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup row>
<Label sm={3} >
</Label>
<Col sm={8}>
<Button color="primary">
Update Profile
</Button>
<Button color="link">
Forgot Password
</Button>
</Col>
</FormGroup>
{ /* END Input */}
</Form>
{ /* END Form */}
</CardBody>
<CardFooter className="small">
<i className="fa fa-fw fa-support text-muted mr-2"></i>
If you have trouble with the configuration, you can contact us. <a href="#">We Can Help</a>
</CardFooter>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6">
Change Username
</CardTitle>
<p>
Changing the username is not recommended. In this connection,
I can appear <a href="#">many problems</a>.
</p>
<Button color="secondary" outline>
Change Username
</Button>
</CardBody>
</Card>
<Card className="mb-3 b-danger">
<CardBody>
<CardTitle tag="h6" className="text-danger">
Delete Account
</CardTitle>
<p>
Once you delete your account, there is no going back. Please be certain.
</p>
<Button color="danger" outline>
Yes, Delete
</Button>
</CardBody>
<CardFooter className="small">
<i className="fa fa-fw fa-support text-muted mr-2"></i>
Are you sure you dont want to just downgrade your account to a <strong>Free Account</strong>? We wont charge your PayPal account anymore.
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default AccountEdit;

View File

@@ -0,0 +1,3 @@
import AccountEdit from './AccountEdit';
export default AccountEdit;

View File

@@ -0,0 +1,157 @@
import React from 'react';
import {
Container,
Row,
Col,
Table,
Card,
Button,
CardBody,
CardFooter,
CardTitle,
Progress
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProfileLeftNav } from "./../../components/Profile/ProfileLeftNav";
import { ProfileHeader } from "./../../components/Profile/ProfileHeader";
import { TrTableBorderless } from "./../../Tables/Tables/components/TrTableBorderless";
const BillingEdit = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Billing Edit"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProfileHeader />
</Col>
<Col lg={ 3 }>
<ProfileLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
<div className="d-flex mb-4">
<CardTitle tag="h6">
Billing Edit
</CardTitle>
<span className="ml-auto align-self-start small">
Fields mark as <span className="text-danger">*</span> is required.
</span>
</div>
<Row className="mb-4">
<Col sm={3} className="text-right">
Your Plan
</Col>
<Col sm={9}>
<div className="mb-2">
<span className="text-inverse">
Premium
</span> - You use <strong>37%</strong> of the available space.
</div>
<Progress multi style={{height: "5px"}} className="mb-3">
<Progress bar value="15" />
<Progress bar color="purple" value="30" />
<Progress bar color="yellow" value="25" />
</Progress>
<dl className="row">
<dt className="col-sm-4 text-right">Amount Space</dt>
<dd className="col-sm-8 text-inverse">214,8 GB / 1,03 TB</dd>
<dt className="col-sm-4 text-right">Regular Files</dt>
<dd className="col-sm-8">
<i className="fa fa-circle text-primary mr-2"></i>
<span className="text-inverse">177,8 GB</span>
</dd>
<dt className="col-sm-4 text-right">Shared Files</dt>
<dd className="col-sm-8">
<i className="fa fa-circle text-purple mr-2"></i>
<span className="text-inverse">37 GB</span>
</dd>
<dt className="col-sm-4 text-right">Available Files</dt>
<dd className="col-sm-8">
<i className="fa fa-circle text-yellow mr-2"></i>
<span className="text-inverse">177,8 GB</span>
</dd>
<dt className="col-sm-4 text-right">Action</dt>
<dd className="col-sm-8">
<Button color="secondary" outline size="sm">
Change Plan
</Button>
</dd>
</dl>
</Col>
</Row>
<div className="mb-4">
<span className="small">Payment</span>
</div>
<Row>
<Col sm={3} className="text-right">
Payment Method
</Col>
<Col sm={9}>
<div className="mb-2">
<i className="fa fa-fw fa-paypal text-primary mr-2"></i>
<span className="text-inverse">
PayPal
</span> - Account: <samp>Tyshawn_Lakin56@gmail.com</samp>
</div>
<dl className="row">
<dt className="col-sm-4 text-right">Next Payment Due</dt>
<dd className="col-sm-8 text-inverse">2016-05-21</dd>
<dt className="col-sm-4 text-right">Amount</dt>
<dd className="col-sm-8 text-inverse">$ 13.00</dd>
<dt className="col-sm-4 text-right">Action</dt>
<dd className="col-sm-8">
<Button color="secondary" outline size="sm">
Change Payment
</Button>
</dd>
</dl>
</Col>
</Row>
</CardBody>
<CardFooter className="small">
<i className="fa fa-fw fa-support text-muted mr-2"></i>
If you want to personalize the notification settings, go <a href="#">here</a>
</CardFooter>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-0">
Billing History
</CardTitle>
</CardBody>
{ /* START Table */}
<Table className="mb-0" hover responsive>
<thead>
<tr>
<th className="bt-0">#</th>
<th className="bt-0">ID</th>
<th className="bt-0">Date</th>
<th className="bt-0">Amount</th>
<th className="bt-0">Description</th>
<th className="bt-0">Payment Method</th>
<th className="text-right bt-0">
Receipt
</th>
</tr>
</thead>
<tbody>
<TrTableBorderless />
</tbody>
</Table>
{ /* END Table */}
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default BillingEdit;

View File

@@ -0,0 +1,3 @@
import BillingEdit from './BillingEdit';
export default BillingEdit;

60
app/routes/Apps/Chat/Chat.js Executable file
View File

@@ -0,0 +1,60 @@
import React from 'react';
import {
Container,
Row,
CardBody,
Col,
CardHeader,
Card,
CardFooter
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ChatLeft } from "../../components/Chat/ChatLeft";
import { ChatRight } from "../../components/Chat/ChatRight";
import { ChatLeftNav } from "../../components/Chat/ChatLeftNav";
import { ChatCardFooter } from "../../components/Chat/ChatCardFooter";
import { ChatCardHeader } from "../../components/Chat/ChatCardHeader";
const Clients = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Chat"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<ChatLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardHeader className="d-flex bb-0 bg-white">
<ChatCardHeader />
</CardHeader>
<CardBody>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
<ChatRight cardClassName="text-dark"/>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
<ChatRight cardClassName="text-dark"/>
<div className="small mb-3 mt-4 text-center">
Yesterday
</div>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
<ChatRight cardClassName="text-dark"/>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
</CardBody>
<CardFooter>
<ChatCardFooter />
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default Clients;

3
app/routes/Apps/Chat/index.js Executable file
View File

@@ -0,0 +1,3 @@
import Chat from './Chat';
export default Chat;

View File

@@ -0,0 +1,295 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import {
Container,
Row,
Col,
Card,
ButtonToolbar,
Button,
ButtonGroup,
CardBody,
CardFooter,
Table,
TabPane,
Badge,
Nav,
NavItem,
Pagination,
PaginationLink,
PaginationItem,
UncontrolledTooltip,
UncontrolledTabs
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { Profile } from "../../components/Profile";
import { DlRowContacts } from "../../components/Profile/DlRowContacts";
import { DlRowAddress } from "../../components/Profile/DlRowAddress";
import { TrTableClients } from "./components/TrTableClients";
import { TrTableCompanies } from "./components/TrTableCompanies";
const Clients = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Clients"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 8 }>
<Card className="mb-3">
<UncontrolledTabs initialActiveTabId="clients">
<CardBody>
<div className="d-flex">
<Nav pills>
<NavItem>
<UncontrolledTabs.NavLink tabId="clients">
Clients
</UncontrolledTabs.NavLink>
</NavItem>
<NavItem>
<UncontrolledTabs.NavLink tabId="companies">
Companies
</UncontrolledTabs.NavLink>
</NavItem>
</Nav>
<ButtonToolbar className="ml-auto">
<ButtonGroup>
<Button color="link" className="align-self-center mr-2 text-decoration-none" id="tooltipSettings">
<i className="fa fa-fw fa-gear"></i>
</Button>
</ButtonGroup>
<ButtonGroup>
<Button color="primary" className="align-self-center" id="tooltipAddNew">
<i className="fa fa-fw fa-plus"></i>
</Button>
</ButtonGroup>
</ButtonToolbar>
<UncontrolledTooltip placement="right" target="tooltipAddNew">
Add New
</UncontrolledTooltip>
<UncontrolledTooltip placement="right" target="tooltipSettings">
Settings
</UncontrolledTooltip>
</div>
</CardBody>
<UncontrolledTabs.TabContent>
<TabPane tabId="clients">
{ /* START Table */}
<Table className="mb-0" hover responsive>
<thead>
<tr>
<th className="bt-0"></th>
<th className="bt-0"></th>
<th className="bt-0">Name</th>
<th className="bt-0">Email</th>
<th className="text-right bt-0">Phone</th>
<th className="text-right bt-0">Label</th>
</tr>
</thead>
<tbody>
<TrTableClients />
<TrTableClients
id="2"
/>
<TrTableClients
id="3"
/>
<TrTableClients
id="4"
/>
<TrTableClients
id="5"
/>
<TrTableClients
id="6"
/>
<TrTableClients
id="7"
/>
<TrTableClients
id="8"
/>
<TrTableClients
id="9"
/>
</tbody>
</Table>
{ /* END Table */}
</TabPane>
<TabPane tabId="companies">
{ /* START Table */}
<Table className="mb-0" hover responsive>
<thead>
<tr>
<th className="bt-0"></th>
<th className="bt-0"></th>
<th className="bt-0">Name</th>
<th className="bt-0">PM</th>
<th className="text-right bt-0">Phone</th>
<th className="text-right bt-0">Label</th>
</tr>
</thead>
<tbody>
<TrTableCompanies />
<TrTableCompanies
id="2"
/>
<TrTableCompanies
id="3"
/>
<TrTableCompanies
id="4"
/>
<TrTableCompanies
id="5"
/>
<TrTableCompanies
id="6"
/>
<TrTableCompanies
id="7"
/>
<TrTableCompanies
id="8"
/>
<TrTableCompanies
id="9"
/>
<TrTableCompanies
id="10"
/>
<TrTableCompanies
id="11"
/>
<TrTableCompanies
id="12"
/>
</tbody>
</Table>
{ /* END Table */}
</TabPane>
</UncontrolledTabs.TabContent>
</UncontrolledTabs>
<CardFooter className="d-flex">
<span className="align-self-center">
Showing 1 to 10 of 57 entries
</span>
<Pagination aria-label="Page navigation example" className="ml-auto">
<PaginationItem>
<PaginationLink previous href="#">
<i className="fa fa-fw fa-angle-left"></i>
</PaginationLink>
</PaginationItem>
<PaginationItem active>
<PaginationLink href="#">
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
3
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink next href="#">
<i className="fa fa-fw fa-angle-right"></i>
</PaginationLink>
</PaginationItem>
</Pagination>
</CardFooter>
</Card>
</Col>
<Col lg={ 4 }>
<Card>
<CardBody>
<Profile />
<div className="text-center pb-1">
<ul className="list-inline">
<li className="list-inline-item text-center">
<h2 className="mb-1">23</h2>
<span>Contracts</span>
</li>
<li className="list-inline-item text-center">
<h2 className="mb-1">13</h2>
<span>Tasks</span>
</li>
<li className="list-inline-item text-center">
<h2 className="mb-1">5</h2>
<span>Relases</span>
</li>
</ul>
</div>
<Row className="mt-3">
<Col sm={ 6 }>
<Button color="primary" block>
Message
</Button>
</Col>
<Col sm={ 6 }>
<Button color="secondary" outline block>
Edit
</Button>
</Col>
</Row>
<div className="mt-4 mb-2">
<span className="small">
Profile
</span>
</div>
<p className="text-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Dicta sapiente earum, necessitatibus commodi eius pariatur
repudiandae cum sunt officiis ex!
</p>
<div className="mt-4 mb-2">
<span className="small">
Labels
</span>
</div>
<div className="text-left mb-4">
<Badge pill color="primary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="primary" className="mr-1">
{ faker.commerce.department() }
</Badge>
</div>
<div className="mt-4 mb-2">
<span className="small">Contact</span>
</div>
<DlRowContacts
leftSideClassName="text-left"
rightSideClassName="text-right text-inverse"
/>
<div className="mt-4 mb-2">
<span className="small">Address</span>
</div>
<DlRowAddress
leftSideClassName="text-left"
rightSideClassName="text-right text-inverse"
/>
</CardBody>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default Clients;

View File

@@ -0,0 +1,94 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import {
Badge,
Avatar,
CustomInput,
UncontrolledTooltip,
AvatarAddOn,
Media
} from './../../../../components';
import { randomArray } from './../../../../utilities';
const status = [
"secondary",
"success",
"warning",
"danger"
];
const tag = [
"secondary",
"primary",
"info"
];
const TrTableClients = (props) => (
<React.Fragment>
<tr>
<td className="align-middle">
<CustomInput type="checkbox" id={`trTableClients-${ props.id }` } label="" inline />
</td>
<td className="align-middle">
<a href="#" id={`trTableClientsTooltip-${ props.id }` }>
<i className="fa fa-fw fa-star-o"></i>
</a>
<UncontrolledTooltip placement="top" target={`trTableClientsTooltip-${ props.id }` }>
Add To Favorites
</UncontrolledTooltip>
</td>
<td className="align-middle">
<Media>
<Media left className="align-self-center mr-3">
<Avatar.Image
size="md"
src="http://bs4.webkom.co/img/avatars/2.jpg"
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</Media>
<Media body>
<a className="mt-0 d-flex text-decoration-none" href="#">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
<span>
{ faker.name.jobTitle() }
</span>
</Media>
</Media>
</td>
<td className="align-middle">
{ faker.internet.email() }
</td>
<td className="align-middle">
{ faker.phone.phoneNumberFormat() }
</td>
<td className="align-middle text-right">
<Badge pill color={ randomArray(tag) }>
{ faker.commerce.department() }
</Badge>
</td>
</tr>
</React.Fragment>
)
TrTableClients.propTypes = {
id: PropTypes.node
};
TrTableClients.defaultProps = {
id: "1"
};
export { TrTableClients };

View File

@@ -0,0 +1,287 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import {
Avatar,
CustomInput,
UncontrolledTooltip,
AvatarAddOn,
Media
} from './../../../../components';
import { randomArray } from './../../../../utilities';
const status = [
"success",
"danger",
"warning",
"secondary"
];
const brand = [
<Media key="facebook">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-facebook"></i>
<i className="fa fa-facebook fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Facebook
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="twitter">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-twitter"></i>
<i className="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Twitter
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="linkedin">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-linkedin"></i>
<i className="fa fa-linkedin fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Linkedin
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="foursquare">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-foursquare"></i>
<i className="fa fa-foursquare fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Foursquare
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="lastfm">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-lastfm"></i>
<i className="fa fa-lastfm fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
LastFM
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="paypal">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-paypal"></i>
<i className="fa fa-paypal fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
PayPal
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="amazon">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-amazon"></i>
<i className="fa fa-amazon fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Amazon
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="skype">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-skype"></i>
<i className="fa fa-skype fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Skype
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="spotify">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-spotify"></i>
<i className="fa fa-spotify fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Spotify
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="pinterest">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-pinterest"></i>
<i className="fa fa-pinterest fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Pinterest
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="windows">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-windows"></i>
<i className="fa fa-windows fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Windows
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="android">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-android"></i>
<i className="fa fa-android fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Android
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
<Media key="medium">
<Media left className="align-self-center mr-3">
<span className="fa-stack fa-lg">
<i className="fa fa-stop fa-stack-2x text-medium"></i>
<i className="fa fa-medium fa-stack-1x fa-inverse"></i>
</span>
</Media>
<Media body>
<div className="text-inverse mt-0 d-flex">
Medium
</div>
<span>
{ faker.address.country() }
</span>
</Media>
</Media>,
];
const TrTableCompanies = (props) => (
<React.Fragment>
<tr>
<td className="align-middle">
<CustomInput type="checkbox" id={`trTableCompanies-${ props.id }` } label="" inline />
</td>
<td className="align-middle">
<a href="#" id={`trTableCompaniesTooltip-${ props.id }` }>
<i className="fa fa-fw fa-star-o"></i>
</a>
<UncontrolledTooltip placement="top" target={`trTableCompaniesTooltip-${ props.id }` }>
Add To Favorites
</UncontrolledTooltip>
</td>
<td className="align-middle">
{ randomArray(brand) }
</td>
<td className="align-middle">
<Avatar.Image
size="sm"
src="http://bs4.webkom.co/img/avatars/2.jpg"
className="mr-2"
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</td>
<td className="align-middle text-right">
{ faker.phone.phoneNumberFormat() }<br />
{ faker.internet.email() }
</td>
<td className="align-middle text-right">
{ faker.address.streetAddress() }<br />
{ faker.address.city() }
</td>
</tr>
</React.Fragment>
)
TrTableCompanies.propTypes = {
id: PropTypes.node
};
TrTableCompanies.defaultProps = {
id: "1"
};
export { TrTableCompanies };

View File

@@ -0,0 +1,3 @@
import Clients from './Clients';
export default Clients;

View File

@@ -0,0 +1,239 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import { Link } from 'react-router-dom';
import {
Container,
Row,
Col,
Card,
Button,
ButtonGroup,
CardBody,
CardFooter,
ButtonToolbar,
Badge,
Media,
Avatar,
AvatarAddOn,
UncontrolledTooltip
} from './../../../components';
import { randomAvatar } from './../../../utilities';
import { HeaderMain } from "../../components/HeaderMain";
import { MailboxLeftNav } from "../../components/Mailbox/MailboxLeftNav";
import { Attachment } from "../../components/Attachment";
const EmailDetails = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Email Details"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<MailboxLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
{ /* START Header */}
<div className="d-lg-flex justify-content-end mb-4">
<div className="mr-auto d-flex align-items-center mb-3 mb-xl-0">
<Button color="link" tag={ Link } to="/apps/inbox" className="text-decoration-none">
<i className="fa fa-angle-left mr-2"></i> Inbox
</Button>
</div>
<ButtonToolbar>
<ButtonGroup className="mr-2 mb-3 mb-sm-0">
<Button color="link" className="text-decoration-none align-self-center" id="tooltipPrev">
<i className="fa fa-fw fa-angle-left"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipPrev">
Prev Message
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipNext">
<i className="fa fa-fw fa-angle-right"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipNext">
Next Message
</UncontrolledTooltip>
</ButtonGroup>
<ButtonGroup className="mr-2">
<Button color="link" className="text-decoration-none align-self-center" id="tooltipForward">
<i className="fa fa-fw fa-mail-forward"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipForward">
Forward
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipFav">
<i className="fa fa-fw fa-star"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipFav">
Add to Favorites
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipPrint">
<i className="fa fa-fw fa-print"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipPrint">
Print
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipDelete">
<i className="fa fa-fw fa-trash"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipDelete">
Delete
</UncontrolledTooltip>
</ButtonGroup>
<ButtonGroup className="ml-auto ml-lg-0">
<Button color="primary" className="align-self-center" tag={ Link } to="/apps/inbox" id="tooltipReply">
<i className="fa fa-fw fa-reply"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipReply">
Reply
</UncontrolledTooltip>
</ButtonGroup>
</ButtonToolbar>
</div>
{ /* END Header */}
{ /* START Message */}
<div className="mb-4">
<div className="d-flex flex-column flex-md-row">
<Media>
<Media left className="align-self-center mr-4">
<Avatar.Image
size="md"
src={ randomAvatar() }
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color="danger"
key="avatar-icon-fg"
/>
]}
/>
</Media>
<Media body>
<a className="mt-0 text-decoration-none d-flex" href="#">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
<samp className="small">
{ faker.internet.email() }
</samp>
</Media>
</Media>
<div className="ml-md-auto align-self-start text-left text-md-right mt-2 mt-md-0">
18-Jun-2012<br />
08:43 PM
</div>
</div>
<hr />
<div className="d-flex mb-3">
<h5>
Secured Asynchronous Capacity
</h5>
<Badge pill color="primary" className="ml-auto align-self-start">
Work
</Badge>
</div>
<p className="lead">
{ faker.lorem.sentences() }
</p>
<p>
{ faker.lorem.paragraphs() }
</p>
</div>
{ /* END Message */}
{ /* START Attachments */}
<div>
<div className="mb-3">
<span className="small mr-2">
Attachments
</span>
<Badge pill color="secondary">3</Badge>
</div>
<Attachment
BgIconClassName="text-primary"
icon="file-word-o"
mediaClassName="mb-3"
/>
<Attachment
BgIconClassName="text-success"
icon="file-excel-o"
mediaClassName="mb-3"
/>
<Attachment
BgIconClassName="text-warning"
icon="file-powerpoint-o"
/>
</div>
</CardBody>
<CardFooter>
<ButtonToolbar className="flex-column flex-lg-row">
<ButtonGroup className="mb-2 mb-lg-0">
<Button color="link" className="text-decoration-none align-self-center" id="tooltipPrevBtm">
<i className="fa fa-fw fa-angle-left"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipPrevBtm">
Prev Message
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipNextBtm">
<i className="fa fa-fw fa-angle-right"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipNextBtm">
Next Message
</UncontrolledTooltip>
</ButtonGroup>
<ButtonToolbar className="flex-column flex-sm-row ml-0 ml-lg-auto">
<ButtonGroup className="mr-2 mb-2 mb-sm-0">
<Button color="link" className="text-decoration-none align-self-center" id="tooltipForwardBtm">
<i className="fa fa-fw fa-mail-forward"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipForwardBtm">
Forward
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipFavBtm">
<i className="fa fa-fw fa-star"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipFavBtm">
Add to Favorites
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipPrintBtm">
<i className="fa fa-fw fa-print"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipPrintBtm">
Print
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipDeleteBtm">
<i className="fa fa-fw fa-trash"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipDeleteBtm">
Delete
</UncontrolledTooltip>
</ButtonGroup>
<ButtonGroup className="ml-0 ml-md-auto m-lg-0">
<Button color="primary" className="align-self-center" tag={ Link } to="/apps/inbox" id="tooltipReplyBtm">
<i className="fa fa-fw fa-reply"></i>
</Button>
<UncontrolledTooltip placement="top" target="tooltipReplyBtm">
Reply
</UncontrolledTooltip>
</ButtonGroup>
</ButtonToolbar>
</ButtonToolbar>
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default EmailDetails;

View File

@@ -0,0 +1,3 @@
import EmailDetails from './EmailDetails';
export default EmailDetails;

50
app/routes/Apps/Files/Files.js Executable file
View File

@@ -0,0 +1,50 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import FilesList from './FilesList';
import FilesGrid from './FilesGrid';
import { FilesLeftNav } from "../../components/Files/FilesLeftNav";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
const Files = (props) => (
<React.Fragment>
<Container>
<HeaderMain
title="Files"
className="mb-5 mt-4"
/>
<Row>
<Col lg={ 3 }>
<FilesLeftNav />
</Col>
<Col lg={ 9 }>
<ProjectsSmHeader
subTitle={props.match.params.type === "list"?"Files List":"Files Grid"}
linkList="/apps/files/list"
linkGrid="/apps/files/grid"
/>
{
props.match.params.type === "list" ?
<FilesList /> :
<FilesGrid />
}
</Col>
</Row>
</Container>
</React.Fragment>
);
Files.propTypes = {
match: PropTypes.object.isRequired
};
export default Files;

View File

@@ -0,0 +1,26 @@
import React from 'react';
import { CardColumns } from './../../../components';
import { FilesCardGrid } from "../../components/Files/FilesCardGrid";
import { Paginations } from "../../components/Paginations";
const FilesGrid = () => (
<React.Fragment>
<CardColumns>
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
<FilesCardGrid />
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</React.Fragment>
);
export default FilesGrid;

View File

@@ -0,0 +1,50 @@
import React from 'react';
import {
Card,
CardFooter,
Table
} from './../../../components';
import { Paginations } from "../../components/Paginations";
import { TrTableFilesList } from "./components/TrTableFilesList";
const FilesList = () => (
<Card className="mb-3">
{ /* START Table */}
<div className="table-responsive-xl">
<Table className="mb-0" hover>
<thead>
<tr>
<th className="align-middle bt-0">Directory</th>
<th className="align-middle bt-0">Last Change</th>
<th className="align-middle bt-0">Share</th>
<th className="align-middle bt-0">Tags</th>
<th className="align-middle bt-0 text-right">
Actions
</th>
</tr>
</thead>
<tbody>
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
<TrTableFilesList />
</tbody>
</Table>
</div>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Paginations />
</CardFooter>
</Card>
);
export default FilesList;

View File

@@ -0,0 +1,113 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import {
Badge,
Avatar,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
AvatarAddOn,
Media,
DropdownItem
} from './../../../../components';
import { randomArray, randomAvatar } from './../../../../utilities';
const badges = [
"secondary"
];
const status = [
"success",
"danger",
"warning",
"secondary"
];
const TrTableFilesList = () => (
<React.Fragment>
<tr>
<td className="align-middle">
<Media>
<Media left middle>
<i className="fa fa-fw fa-folder-o fa-3x mr-2"></i>
</Media>
<Media body>
<div className="text-inverse">
{ faker.commerce.department() }
</div>
<span>
{ faker.finance.amount() } Mb
</span>
</Media>
</Media>
</td>
<td className="align-middle">
{ faker.date.weekday() }, 12 { faker.date.month() }, 2018<br />
12:23 PM
</td>
<td className="align-middle">
<Avatar.Image
size="md"
src={ randomAvatar() }
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</td>
<td className="align-middle">
<Badge color={ randomArray(badges) } pill className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge color={ randomArray(badges) } pill className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge color={ randomArray(badges) } pill className="mr-1">
{ faker.commerce.department() }
</Badge>
</td>
<td className="align-middle text-right">
<UncontrolledButtonDropdown>
<DropdownToggle color="link">
<i className="fa fa-gear" /><i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem>
<i className="fa fa-fw fa-reply mr-2"></i>
Share
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-download mr-2"></i>
Download
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-trash mr-2"></i>
Delete
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-pencil mr-2"></i>
Edit
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-files-o mr-2"></i>
Copy
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
</tr>
</React.Fragment>
)
export { TrTableFilesList };

3
app/routes/Apps/Files/index.js Executable file
View File

@@ -0,0 +1,3 @@
import Files from './Files';
export default Files;

View File

@@ -0,0 +1,64 @@
import React from 'react';
import {
Container,
Row,
CardColumns,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
import { GalleryCard } from "../../components/Gallery/GalleryCard";
import { Paginations } from "../../components/Paginations";
const GalleryGrid = () => (
<Container>
<HeaderMain
title="Gallery Grid"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProjectsSmHeader
subTitle="Gallery Grid"
linkList="/apps/gallery-table"
linkGrid="/apps/gallery-grid"
/>
<CardColumns>
<GalleryCard />
<GalleryCard
id="2"
/>
<GalleryCard
id="3"
/>
<GalleryCard
id="4"
/>
<GalleryCard
id="5"
/>
<GalleryCard
id="6"
/>
<GalleryCard
id="7"
/>
<GalleryCard
id="8"
/>
<GalleryCard
id="9"
/>
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</Col>
</Row>
{ /* END Content */}
</Container>
);
export default GalleryGrid;

View File

@@ -0,0 +1,3 @@
import GalleryGrid from './GalleryGrid';
export default GalleryGrid;

View File

@@ -0,0 +1,85 @@
import React from 'react';
import {
Container,
Row,
Table,
CardFooter,
Card,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
import { Paginations } from "../../components/Paginations";
import { TrTableGalleryList } from "./components/TrTableGalleryList";
const GalleryTable = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Gallery Table"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProjectsSmHeader
subTitle="Gallery Table"
linkList="/apps/gallery-table"
linkGrid="/apps/gallery-grid"
/>
<Card>
{ /* START Table */}
<Table className="mb-0" hover size="sm" responsive>
<thead>
<tr>
<th></th>
<th>Thumb</th>
<th>Title</th>
<th>Author</th>
<th>Date</th>
<th>Info</th>
<th className="text-right">Action</th>
</tr>
</thead>
<tbody>
<TrTableGalleryList />
<TrTableGalleryList
id="2"
/>
<TrTableGalleryList
id="3"
/>
<TrTableGalleryList
id="4"
/>
<TrTableGalleryList
id="5"
/>
<TrTableGalleryList
id="6"
/>
<TrTableGalleryList
id="7"
/>
<TrTableGalleryList
id="8"
/>
</tbody>
</Table>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Paginations />
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default GalleryTable;

View File

@@ -0,0 +1,122 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import {
Badge,
CustomInput,
Avatar,
HolderProvider,
CardImg,
Media,
AvatarAddOn,
Button,
UncontrolledTooltip
} from './../../../../components';
import { randomArray, randomAvatar } from './../../../../utilities';
const status = [
"secondary",
"danger",
"success",
"warning"
];
const badges = [
"secondary"
];
const TrTableGalleryList = (props) => (
<React.Fragment>
<tr>
<td className="align-middle">
<CustomInput type="checkbox" id={`trTableGalleryList-${ props.id }` } label="" inline />
</td>
<td className="align-middle">
<HolderProvider.Icon
iconChar=""
size={ 16 }
width={ 100 }
height={ 100 }
>
<CardImg className="rounded" />
</HolderProvider.Icon>
</td>
<td className="align-middle">
<span>
<a className="text-inverse" href="#">
{ faker.commerce.productName() }
</a>
<br />
<span href="#">
{ faker.system.fileName() }
</span>
<br />
<Badge pill color={ randomArray(badges) } className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color={ randomArray(badges) } className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color={ randomArray(badges) } className="mr-1">
{ faker.commerce.department() }
</Badge>
</span>
</td>
<td className="align-middle">
<Media>
<Media left className="align-self-center mr-3">
<Avatar.Image
size="md"
src={ randomAvatar() }
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</Media>
<Media body>
<a className="mt-0 text-decoration-none d-flex" href="#">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
<span>
{ faker.address.state() }, { faker.address.stateAbbr() }
</span>
</Media>
</Media>
</td>
<td className="align-middle">
22-Jul-2012
</td>
<td className="align-middle">
Size: { faker.random.number() } Kb<br />
Format: .png
</td>
<td className="align-middle text-right">
<Button color="link" id={`trTableGalleryListTooltip-${ props.id }` }>
<i className="fa fa-fw fa-download"></i>
</Button>
<UncontrolledTooltip placement="left" target={`trTableGalleryListTooltip-${ props.id }` }>
Download
</UncontrolledTooltip>
</td>
</tr>
</React.Fragment>
)
TrTableGalleryList.propTypes = {
id: PropTypes.node
};
TrTableGalleryList.defaultProps = {
id: "1"
};
export { TrTableGalleryList };

View File

@@ -0,0 +1,3 @@
import GalleryTable from './GalleryTable';
export default GalleryTable;

View File

@@ -0,0 +1,50 @@
import React from 'react';
import {
Container,
Row,
CardColumns,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { SearchResultsLeftNav } from "../../components/SearchResults/SearchResultsLeftNav";
import { SearchResultsHeader } from "../../components/SearchResults/SearchResultsHeader";
import { ImagesResultsCard } from "../../components/SearchResults/ImagesResultsCard";
import { Paginations } from "../../components/Paginations";
const ImagesResults = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Images Results"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<SearchResultsLeftNav />
</Col>
<Col lg={ 9 }>
<SearchResultsHeader />
<CardColumns>
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
<ImagesResultsCard />
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default ImagesResults;

View File

@@ -0,0 +1,3 @@
import ImagesResults from './ImagesResults';
export default ImagesResults;

138
app/routes/Apps/Inbox/Inbox.js Executable file
View File

@@ -0,0 +1,138 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import { Link } from 'react-router-dom';
import _ from 'lodash';
import {
Container,
Row,
Col,
ButtonToolbar,
Avatar,
AvatarAddOn,
Card,
Button,
ButtonGroup,
CardBody,
CardFooter,
CustomInput,
Table,
Badge,
InputGroup,
InputGroupAddon,
Input,
UncontrolledTooltip
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { MailboxLeftNav } from "../../components/Mailbox/MailboxLeftNav";
import { Paginations } from "../../components/Paginations";
import { TrTableInbox } from "./components/TrTableInbox";
const Inbox = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Inbox"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<MailboxLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
<div className="d-lg-flex justify-content-end">
<div className="mr-auto d-flex align-items-center mb-3 mb-lg-0">
<InputGroup>
<Input placeholder="Search for..." />
<InputGroupAddon addonType="append">
<Button color="secondary" outline>
<i className="fa fa-search"></i>
</Button>
</InputGroupAddon>
</InputGroup>
</div>
<ButtonToolbar>
<ButtonGroup className="mr-2">
<Button color="link" className="text-decoration-none align-self-center" id="tooltipRefresh">
<i className="fa fa-fw fa-refresh"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipRefresh">
Refresh
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipFav">
<i className="fa fa-fw fa-star"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipFav">
Add to Favorites
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipTag">
<i className="fa fa-fw fa-tag"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipTag">
Tag
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipBan">
<i className="fa fa-fw fa-ban"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipBan">
Ban this User
</UncontrolledTooltip>
<Button color="link" className="text-decoration-none align-self-center" id="tooltipDelete">
<i className="fa fa-fw fa-trash"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipDelete">
Delete
</UncontrolledTooltip>
</ButtonGroup>
<ButtonGroup className="ml-auto ml-lg-0">
<Button color="primary" className="align-self-center" tag={ Link } to="/apps/new-email" id="tooltipAddNew">
<i className="fa fa-fw fa-pencil"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipAddNew">
Add New
</UncontrolledTooltip>
</ButtonGroup>
</ButtonToolbar>
</div>
</CardBody>
{ /* START Table */}
<Table className="mb-0" hover responsive>
<thead>
<tr>
<th className="bt-0"></th>
<th className="bt-0"></th>
<th className="bt-0">From</th>
<th className="bt-0">Subject</th>
<th className="text-right bt-0">
Date
</th>
</tr>
</thead>
<tbody>
{
_.times(11, (index) => (
<TrTableInbox
id={index.toString()}
key={index}
/>
))
}
</tbody>
</Table>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Paginations />
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default Inbox;

View File

@@ -0,0 +1,114 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import { Link } from 'react-router-dom';
import {
Badge,
Avatar,
UncontrolledTooltip,
CustomInput,
AvatarAddOn,
Media
} from './../../../../components';
import { randomArray, randomAvatar } from './../../../../utilities';
const status = [
"warning",
"danger",
"success",
"secondary"
];
const tag = [
"primary",
"secondary",
"info"
];
const TrTableInbox = (props) => (
<React.Fragment>
<tr>
<td className="align-middle">
{
(Math.round(Math.random())) ? (
<span>
<i className="fa fa-circle fa-fw text-primary" id={`newMessage-${ props.id }` }></i>
<UncontrolledTooltip placement="bottom" target={`#newMessage-${ props.id }` }>
New Message
</UncontrolledTooltip>
</span>
) : (
<span></span>
)
}
</td>
<td className="align-middle">
<CustomInput type="checkbox" label="" id={` mailboxCheckbox-${ props.id }` } />
</td>
<td className="align-middle">
<Media>
<Media left className="d-flex align-self-center mr-3">
<div className="mr-2">
<a href="#" id="tooltipAddToFavorites">
<i className="fa fa-fw fa-star-o"></i>
</a>
<UncontrolledTooltip placement="top" target="tooltipAddToFavorites">
Add To Favorites
</UncontrolledTooltip>
</div>
<Avatar.Image
size="md"
src={ randomAvatar() }
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</Media>
<Media body>
<a className="mt-0 text-decoration-none d-flex" href="#">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
<span>
{ faker.address.state() }
</span>
</Media>
</Media>
</td>
<td className="align-middle">
<Link to="/apps/email-details" className="text-decoration-none">
{ faker.company.catchPhrase() }
</Link>
<br />
{ faker.lorem.sentence() }
<br />
<Badge pill color={ randomArray(tag) }>
{ faker.commerce.department() }
</Badge> <i className="fa fa-paperclip ml-2"></i>
</td>
<td className="align-middle text-right">
30-Jun-2014<br />
01:54 PM
</td>
</tr>
</React.Fragment>
)
TrTableInbox.propTypes = {
id: PropTypes.string
};
export { TrTableInbox };

3
app/routes/Apps/Inbox/index.js Executable file
View File

@@ -0,0 +1,3 @@
import Inbox from './Inbox';
export default Inbox;

View File

@@ -0,0 +1,143 @@
import React from 'react';
import { Link } from 'react-router-dom';
import {
Container,
Row,
Col,
Card,
Button,
ButtonGroup,
CardBody,
CardFooter,
Badge,
ButtonToolbar,
InputGroup,
InputGroupAddon,
Input,
UncontrolledTooltip
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { MailboxLeftNav } from "../../components/Mailbox/MailboxLeftNav";
import { Attachment } from "../../components/Attachment";
const NewEmail = () => (
<React.Fragment>
<Container>
<HeaderMain
title="New Email"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<MailboxLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
{ /* START Header */}
<div className="flex-column flex-md-row d-flex mb-4">
<div className="mr-md-auto mr-sm-0">
<Button color="link" tag={ Link } to="/apps/inbox" className="text-decoration-none">
<i className="fa fa-angle-left mr-2"></i> Inbox
</Button>
</div>
<ButtonToolbar>
<ButtonGroup className="mr-2">
<Button color="link" tag={ Link } to="/apps/inbox" className="text-decoration-none">
Cancel
</Button>
</ButtonGroup>
<ButtonGroup>
<Button color="primary" tag={ Link } to="/apps/inbox" id="tooltipSend">
<i className="fa fa-send"></i>
</Button>
<UncontrolledTooltip placement="bottom" target="tooltipSend">
Send Now
</UncontrolledTooltip>
</ButtonGroup>
</ButtonToolbar>
</div>
{ /* END Header */}
{ /* START Forms */}
<div className="mb-4">
<InputGroup className="mb-3">
<InputGroupAddon addonType="prepend">
To:
</InputGroupAddon>
<Input placeholder="Enter email(s)..." />
<InputGroupAddon addonType="append">
<Button color="secondary" outline>
<i className="fa fa-fw fa-plus"></i>
</Button>
</InputGroupAddon>
</InputGroup>
<Row className="mb-3">
<Col sm={12} lg={6} className="mb-3 mb-lg-0">
<InputGroup>
<InputGroupAddon addonType="prepend">
CC:
</InputGroupAddon>
<Input placeholder="Enter email(s)..." />
</InputGroup>
</Col>
<Col sm={12} lg={6}>
<InputGroup>
<InputGroupAddon addonType="prepend">
BCC:
</InputGroupAddon>
<Input placeholder="Enter email(s)..." />
</InputGroup>
</Col>
</Row>
<InputGroup className="mb-3">
<InputGroupAddon addonType="prepend">
Subject:
</InputGroupAddon>
<Input placeholder="Enter topic..." />
</InputGroup>
<Input type="textarea" name="text" />
</div>
{ /* END Forms */}
{ /* START Attachments */}
<div>
<div className="mb-3">
<span className="small mr-2">
Attachments
</span>
<Badge pill color="secondary">3</Badge>
</div>
<Attachment
BgIconClassName="text-primary"
icon="file-word-o"
mediaClassName="mb-3"
/>
<Attachment
BgIconClassName="text-success"
icon="file-excel-o"
mediaClassName="mb-3"
/>
<Attachment
BgIconClassName="text-warning"
icon="file-powerpoint-o"
/>
</div>
</CardBody>
<CardFooter className="text-right">
<Button color="link" className="text-decoration-none">
<i className="fa fa-paperclip mr-2"></i>
Add New Files
</Button>
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default NewEmail;

View File

@@ -0,0 +1,3 @@
import NewEmail from './NewEmail';
export default NewEmail;

View File

@@ -0,0 +1,357 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import { Link } from 'react-router-dom';
import {
Container,
Row,
Col,
CardHeader,
DropdownToggle,
DropdownItem,
DropdownMenu,
UncontrolledButtonDropdown,
Card,
ButtonGroup,
Button,
CardBody,
CardFooter,
CardGroup,
Table,
TabPane,
Badge,
Nav,
NavItem,
UncontrolledTabs
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { Profile } from "../../components/Profile";
import { ProfileOverviewCard } from "../../components/Profile/ProfileOverviewCard";
import { DlRowContacts } from "../../components/Profile/DlRowContacts";
import { DlRowAddress } from "../../components/Profile/DlRowAddress";
import { ChatLeft } from "../../components/Chat/ChatLeft";
import { ChatRight } from "../../components/Chat/ChatRight";
import { ChatCardFooter } from "../../components/Chat/ChatCardFooter";
import { TrTableMessages } from "./components/TrTableMessages";
import { TimelineDefault } from "../../components/Timeline/TimelineDefault";
const ProfileDetails = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Profile Details"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 4 }>
<Card>
<CardBody>
<Profile />
<div className="text-center pb-1">
<ul className="list-inline">
<li className="list-inline-item text-center">
<h2 className="mb-1">23</h2>
<span>Contracts</span>
</li>
<li className="list-inline-item text-center">
<h2 className="mb-1">13</h2>
<span>Tasks</span>
</li>
<li className="list-inline-item text-center">
<h2 className="mb-1">5</h2>
<span>Relases</span>
</li>
</ul>
</div>
<Row className="mt-3">
<Col sm={ 6 } md={ 6 }>
<Button color="primary" block tag={ Link } to="/apps/new-email" className="mb-3 mb-lg-0">
Message
</Button>
</Col>
<Col sm={ 6 } md={ 6 }>
<Button color="secondary" outline block tag={ Link } to="/apps/profile-edit">
Edit
</Button>
</Col>
</Row>
<div className="mt-4 mb-2">
<span className="small">
Profile
</span>
</div>
<p className="text-left">
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Dicta sapiente earum, necessitatibus commodi eius pariatur
repudiandae cum sunt officiis ex!
</p>
<div className="mt-4 mb-2">
<span className="small">
Labels
</span>
</div>
<div className="text-left mb-4">
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
</div>
<div className="mt-4 mb-2">
<span className="small">Contact</span>
</div>
<DlRowContacts
leftSideClassName="text-lg-left"
rightSideClassName="text-lg-right text-inverse"
/>
<div className="mt-4 mb-2">
<span className="small">Address</span>
</div>
<DlRowAddress
leftSideClassName="text-lg-left"
rightSideClassName="text-lg-right text-inverse"
/>
</CardBody>
</Card>
</Col>
<Col lg={ 8 }>
<UncontrolledTabs initialActiveTabId="overview">
{ /* START Pills Nav */}
<Nav pills className="mb-4 flex-column flex-md-row mt-4 mt-lg-0">
<NavItem>
<UncontrolledTabs.NavLink tabId="overview">
Overview
</UncontrolledTabs.NavLink>
</NavItem>
<NavItem>
<UncontrolledTabs.NavLink tabId="detailContact">
Detail Contact
</UncontrolledTabs.NavLink>
</NavItem>
<NavItem>
<UncontrolledTabs.NavLink tabId="chat">
Chat
</UncontrolledTabs.NavLink>
</NavItem>
<NavItem>
<UncontrolledTabs.NavLink tabId="messages">
Messages <Badge pill color="secondary" className="ml-2">5</Badge>
</UncontrolledTabs.NavLink>
</NavItem>
</Nav>
{ /* END Pills Nav */}
<UncontrolledTabs.TabContent>
<TabPane tabId="overview">
<CardGroup className="mb-5">
<Card body>
<ProfileOverviewCard
title="Views"
badgeColor="primary"
badgeTitle="Monthly"
value="6.200"
valueTitle="Total Views"
footerTitle="Last Month"
footerTitleClassName="text-success"
footerIcon="caret-up"
footerValue="23%"
/>
</Card>
<Card body>
<ProfileOverviewCard
title="Orders"
badgeColor="info"
badgeTitle="Annual"
value="75.938"
valueTitle="New Orders"
footerTitle="Last Annual"
footerTitleClassName="text-danger"
footerIcon="caret-down"
footerValue="96%"
/>
</Card>
<Card body>
<ProfileOverviewCard
title="Visits"
badgeColor="secondary"
badgeTitle="Today"
value="75.938"
valueTitle="Total Visits"
footerTitle="Yesterday"
footerTitleClassName="text-success"
footerIcon="caret-up"
footerValue="40%"
/>
</Card>
</CardGroup>
<TimelineDefault
showPillDate
pillDate="Today"
smallIconColor="danger"
iconCircleColor="danger"
iconCircle="exclamation"
/>
<TimelineDefault
showPillDate
pillDate="Yesterday"
smallIconColor="info"
iconCircleColor="info"
iconCircle="comment"
/>
<TimelineDefault
showPillDate
pillDate="2 Days ago"
smallIconColor="primary"
iconCircleColor="primary"
iconCircle="envelope"
/>
<TimelineDefault
showPillDate
pillDate="3 Months ago"
smallIconColor="warning"
iconCircleColor="warning"
iconCircle="clock-o"
/>
<TimelineDefault
showPillDate
pillDate="Year ago"
smallIconColor="success"
iconCircleColor="success"
iconCircle="check"
/>
<TimelineDefault
iconCircle="close"
/>
</TabPane>
<TabPane tabId="detailContact">
<Card body>
<div className="mb-2">
<span className="small">Contact</span>
</div>
<DlRowContacts
leftSideClassName="text-lg-right"
rightSideClassName="text-inverse"
/>
<div className="mt-4 mb-2">
<span className="small">Address</span>
</div>
<DlRowAddress
leftSideClassName="text-lg-right"
rightSideClassName="text-inverse"
/>
</Card>
</TabPane>
<TabPane tabId="chat">
<Card>
<CardHeader className="d-flex bg-white bb-0">
<h6 className="align-self-center mb-0">
Chat with Romaine Weber
</h6>
<UncontrolledButtonDropdown className="align-self-center ml-auto">
<DropdownToggle color="link" size="sm">
<i className="fa fa-gear"></i><i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem>
<i className="fa fa-fw fa-comment mr-2"></i>
Private Message
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-search mr-2"></i>
Search this Thread
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-ban mr-2"></i>
Block this User
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</CardHeader>
<CardBody>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
<ChatRight cardClassName="text-dark"/>
<ChatLeft cardClassName="bg-gray-300 b-0 text-dark" />
<div className="mt-4 mb-3 text-center">
<span className="small">
Yesterday
</span>
</div>
<ChatRight cardClassName="text-dark" />
</CardBody>
<CardFooter>
<ChatCardFooter />
</CardFooter>
</Card>
</TabPane>
<TabPane tabId="messages">
<Card>
<CardBody className="d-flex">
<ButtonGroup size="sm">
<Button color="secondary" outline active>
Inbox
</Button>
<Button color="secondary" outline>
Archive
</Button>
</ButtonGroup>
<span className="ml-auto">
Showing 1 to 10 of 57 entries
</span>
</CardBody>
{ /* START Table */}
<Table className="mb-0" hover responsive>
<thead>
<tr>
<th className="bt-0">From</th>
<th className="bt-0">Subject</th>
<th className="bt-0 text-right">
Date
</th>
</tr>
</thead>
<tbody>
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
<TrTableMessages />
</tbody>
</Table>
{ /* END Table */}
<CardFooter className="d-flex">
<ButtonGroup size="sm">
<Button color="secondary" outline>
<i className="fa fa-fw fa-angle-left"></i>
</Button>
<Button color="secondary" outline>
<i className="fa fa-fw fa-angle-right"></i>
</Button>
</ButtonGroup>
<span className="ml-auto align-self-center">
Showing 1 to 10 of 57 entries
</span>
</CardFooter>
</Card>
</TabPane>
</UncontrolledTabs.TabContent>
</UncontrolledTabs>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default ProfileDetails;

View File

@@ -0,0 +1,81 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import { Link } from 'react-router-dom';
import {
Badge,
Avatar,
AvatarAddOn,
Media
} from './../../../../components';
import { randomArray } from './../../../../utilities';
const status = [
"warning",
"danger",
"success",
"secondary"
];
const tag = [
"primary",
"secondary",
"info"
];
const TrTableMessages = () => (
<React.Fragment>
<tr>
<td className="align-middle">
<Media>
<Media left className="align-self-center mr-3">
<Avatar.Image
size="sm"
src="http://bs4.webkom.co/img/avatars/2.jpg"
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(status) }
key="avatar-icon-fg"
/>
]}
/>
</Media>
<Media body>
<div className="mt-0 d-flex text-inverse">
{ faker.name.firstName() } { faker.name.lastName() }
</div>
<span>
{ faker.address.state() }
</span>
</Media>
</Media>
</td>
<td className="align-middle">
<Link to="/apps/email-details">
{ faker.company.catchPhrase() }
</Link>
<br />
<div>
{ faker.lorem.sentence() }
</div>
<Badge color={ randomArray(tag) } pill className="mr-1">
{ faker.commerce.department() }
</Badge>
</td>
<td className="align-middle text-right">
30-Jun-2014<br />
01:54 PM
</td>
</tr>
</React.Fragment>
)
export { TrTableMessages };

View File

@@ -0,0 +1,3 @@
import ProfileDetails from './ProfileDetails';
export default ProfileDetails;

View File

@@ -0,0 +1,207 @@
import React from 'react';
import {
Container,
Row,
Col,
Input,
Card,
Button,
CardBody,
CardFooter,
FormText,
CardTitle,
CustomInput,
Label,
FormGroup,
Form
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProfileLeftNav } from "../../components/Profile/ProfileLeftNav";
import { ProfileHeader } from "../../components/Profile/ProfileHeader";
const ProfileEdit = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Profile Edit"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProfileHeader />
</Col>
<Col lg={ 3 }>
<ProfileLeftNav />
</Col>
<Col lg={ 9 }>
<Card>
<CardBody>
<div className="d-flex mb-4">
<CardTitle tag="h6">
Profile Edit
</CardTitle>
<span className="ml-auto align-self-start small">
Fields mark as <span className="text-danger">*</span> is required.
</span>
</div>
<Form>
<div className="small mt-4 mb-3">
Required
</div>
{ /* START File Select */}
<FormGroup row>
<Label for="uploadYourAvatar" sm={3} className="text-right">
Upload Your Avatar
</Label>
<Col sm={8}>
<CustomInput type="file" id="uploadYourAvatar" name="customFile" label="Browse for a file to upload...." />
<FormText color="muted">
JPG, GIF, PNG, MOV and AVI. Please choose a files under 2GB to upload. File sizes are 400 x 300px.
</FormText>
</Col>
</FormGroup>
{ /* END File Select */}
{ /* START Input */}
<FormGroup row>
<Label for="firstName" sm={3} className="text-right">
<span className="text-danger">*</span> First Name
</Label>
<Col sm={8}>
<Input
type="text"
name=""
id="firstName"
placeholder="First Name..."
/>
</Col>
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup row>
<Label for="lastName" sm={3} className="text-right">
<span className="text-danger">*</span> Last Name
</Label>
<Col sm={8}>
<Input
type="text"
name="text"
id="lastName"
placeholder="Last Name..."
/>
</Col>
</FormGroup>
{ /* END Input */}
{ /* START Select */}
<FormGroup row>
<Label for="jobType" sm={3} className="text-right">
Job Type
</Label>
<Col sm={8}>
<CustomInput
type="select"
name="customSelect"
id="jobType"
>
<option value="">Select...</option>
<option>Human Intranet Developer </option>
<option>Dynamic Tactics Specialist</option>
<option>Global Configuration Consultant</option>
<option>Principal Directives Orchestrator</option>
<option>Corporate Usability Consultant</option>
</CustomInput>
</Col>
</FormGroup>
{ /* END Select */}
<div className="small mt-5 mb-3">
Availability
</div>
{ /* START Radios */}
<FormGroup row>
<Label for="afterLogging" sm={3} className="text-right pt-0">
After Logging
</Label>
<Col sm={8}>
<CustomInput
type="radio"
id="operatingSystem12"
name="afterLogging"
label="Available"
defaultChecked
/>
<CustomInput
type="radio"
id="operatingSystem22"
name="afterLogging"
label="Inactive"
/>
<CustomInput
type="radio"
id="operatingSystem33"
name="afterLogging"
label="Busy"
/>
<CustomInput
type="radio"
id="operatingSystem34"
name="afterLogging"
label="Offline"
/>
</Col>
</FormGroup>
<div className="small mt-4 mb-3">
Fill Profile
</div>
{ /* END Radios */}
{ /* START Textarea */}
<FormGroup row>
<Label for="profile" sm={3} className="text-right">
Profile
</Label>
<Col sm={8}>
<Input
type="textarea"
name="text"
id="profile"
placeholder="Please Describe Your Profile..."
className="mb-2"
/>
</Col>
</FormGroup>
{ /* END Textarea */}
{ /* START Input */}
<FormGroup row>
<Label for="addLabels" sm={3} className="text-right">
Add Labels
</Label>
<Col sm={8}>
<Input
type="text"
name=""
id="addLabels"
placeholder="Add Here..."
/>
</Col>
</FormGroup>
{ /* END Input */}
</Form>
{ /* END Form */}
</CardBody>
<CardFooter className="text-right">
<Button color="primary">
Update Profile
</Button>
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default ProfileEdit;

View File

@@ -0,0 +1,3 @@
import ProfileEdit from './ProfileEdit';
export default ProfileEdit;

View File

@@ -0,0 +1,49 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import ProjectsList from './ProjectsList';
import ProjectsGrid from './ProjectsGrid';
import { ProjectsLeftNav } from "../../components/Projects/ProjectsLeftNav";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
const Projects = (props) => (
<React.Fragment>
<Container>
<HeaderMain
title="Projects"
className="mb-5 mt-4"
/>
<Row>
<Col lg={ 3 }>
<ProjectsLeftNav />
</Col>
<Col lg={ 9 }>
<ProjectsSmHeader
subTitle={props.match.params.type === "list"?"Projects List":"Projects Grid"}
linkList="/apps/projects/list"
linkGrid="/apps/projects/grid"
/>
{
props.match.params.type === "list" ?
<ProjectsList /> :
<ProjectsGrid />
}
</Col>
</Row>
</Container>
</React.Fragment>
);
Projects.propTypes = {
match: PropTypes.object.isRequired
};
export default Projects;

View File

@@ -0,0 +1,23 @@
import React from 'react';
import _ from 'lodash';
import { CardColumns } from './../../../components';
import { ProjectsCardGrid } from "../../components/Projects/ProjectsCardGrid";
import { Paginations } from "../../components/Paginations";
const ProjectsGrid = () => (
<React.Fragment>
<CardColumns>
{
_.times(12, (index) => (
<ProjectsCardGrid key={ index } />
))
}
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</React.Fragment>
);
export default ProjectsGrid;

View File

@@ -0,0 +1,71 @@
import React from 'react';
import {
Pagination,
PaginationItem,
PaginationLink,
Card,
CardFooter,
Table
} from './../../../components';
import {
TrTableProjectsList
} from "./components/TrTableProjectsList";
const ProjectsList = () => (
<Card className="mb-3">
{ /* START Table */}
<div className="table-responsive-xl">
<Table className="mb-0" hover>
<thead>
<tr>
<th className="align-middle bt-0">Star</th>
<th className="align-middle bt-0">Project</th>
<th className="align-middle bt-0">Status</th>
<th className="align-middle bt-0">Tasks Completed</th>
<th className="align-middle bt-0">People</th>
<th className="align-middle bt-0 text-right">
Actions
</th>
</tr>
</thead>
<tbody>
<TrTableProjectsList />
</tbody>
</Table>
</div>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Pagination aria-label="Page navigation example">
<PaginationItem>
<PaginationLink previous href="#">
<i className="fa fa-fw fa-angle-left"></i>
</PaginationLink>
</PaginationItem>
<PaginationItem active>
<PaginationLink href="#">
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
3
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink next href="#">
<i className="fa fa-fw fa-angle-right"></i>
</PaginationLink>
</PaginationItem>
</Pagination>
</CardFooter>
</Card>
);
export default ProjectsList;

View File

@@ -0,0 +1,115 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import _ from 'lodash';
import { Link } from 'react-router-dom';
import {
Badge,
Progress,
Avatar,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem
} from './../../../../components';
import { randomAvatar } from './../../../../utilities';
/*eslint-disable */
const status = [
<Badge pill color="success">
Active
</Badge>,
<Badge pill color="danger">
Suspended
</Badge>,
<Badge pill color="warning">
Waiting
</Badge>,
<Badge pill color="secondary">
Paused
</Badge>
];
/*eslint-enable */
/*eslint-disable */
const tasksCompleted = [
"25",
"50",
"70",
"90"
];
/*eslint-enable */
const TrTableProjectsList = () => (
<React.Fragment>
{
_.times(12, (index) => (
<tr key={ index }>
<td className="align-middle">
<div className="text-inverse">
<a href="#">
<i className="fa fa-fw fa-lg fa-star-o"></i>
</a>
</div>
</td>
<td className="align-middle">
<div>
<Link to="/apps/tasks/list" className="text-decoration-none">
{ faker.company.catchPhrase() }
</Link>
</div>
<span>
Last Edited by: { faker.name.firstName() } { faker.name.lastName() } <br />
{ faker.date.weekday() }, 12 { faker.date.month() }, 2018
</span>
</td>
<td className="align-middle">
{ status[index%4] }
</td>
<td className="align-middle">
<Progress value={ tasksCompleted[index%4] } style={{height: "5px"}} className="mb-2" />
<div>
Tasks Completed:
<span className="text-inverse">
36/94
</span>
</div>
</td>
<td className="align-middle">
<Avatar.Image
size="md"
src={ randomAvatar() }
/>
</td>
<td className="align-middle text-right">
<UncontrolledButtonDropdown>
<DropdownToggle color="link" outline>
<i className="fa fa-gear" /><i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem>
<i className="fa fa-fw fa-folder-open mr-2"></i>
View
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-ticket mr-2"></i>
Add Task
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-paperclip mr-2"></i>
Add Files
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-trash mr-2"></i>
Delete
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
</tr>
))
}
</React.Fragment>
)
export { TrTableProjectsList };

View File

@@ -0,0 +1,3 @@
import Projects from './Projects';
export default Projects;

View File

@@ -0,0 +1,48 @@
import React from 'react';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { SearchResultsLeftNav } from
"../../components/SearchResults/SearchResultsLeftNav";
import { SearchResultsHeader } from
"../../components/SearchResults/SearchResultsHeader";
import { SearchResultsCard } from
"../../components/SearchResults/SearchResultsCard";
import { Paginations } from "../../components/Paginations";
const SearchResults = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Search Results"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<SearchResultsLeftNav />
</Col>
<Col lg={ 9 }>
<SearchResultsHeader />
<SearchResultsCard />
<SearchResultsCard />
<SearchResultsCard />
<SearchResultsCard />
<SearchResultsCard />
<SearchResultsCard />
<SearchResultsCard />
<div className="d-flex justify-content-center">
<Paginations />
</div>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default SearchResults;

View File

@@ -0,0 +1,3 @@
import SearchResults from './SearchResults';
export default SearchResults;

View File

@@ -0,0 +1,66 @@
import React from 'react';
import {
Container,
Row,
Col,
Table,
Card,
CardBody,
CardTitle
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProfileLeftNav } from "../../components/Profile/ProfileLeftNav";
import { ProfileHeader } from "../../components/Profile/ProfileHeader";
import { TrTableResponsive } from "./../../Tables/Tables/components/TrTableResponsive";
const BillingEdit = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Sessions Edit"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProfileHeader />
</Col>
<Col lg={ 3 }>
<ProfileLeftNav />
</Col>
<Col lg={ 9 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-0">
Billing History
</CardTitle>
</CardBody>
{ /* START Table */}
<Table className="mb-0" responsive>
<thead>
<tr>
<th className="bt-0">#</th>
<th className="bt-0">Browser & OS</th>
<th className="bt-0">IP</th>
<th className="bt-0">Location</th>
<th className="bt-0">Signed In</th>
<th className="text-right">
Action
</th>
</tr>
</thead>
<tbody>
<TrTableResponsive />
</tbody>
</Table>
{ /* END Table */}
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default BillingEdit;

View File

@@ -0,0 +1,3 @@
import SessionsEdit from './SessionsEdit';
export default SessionsEdit;

View File

@@ -0,0 +1,114 @@
import React from 'react';
import {
Container,
Row,
Col,
Input,
Card,
Button,
CardBody,
CardFooter,
FormText,
CardTitle,
CustomInput,
Label,
FormGroup,
Form
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProfileLeftNav } from "../../components/Profile/ProfileLeftNav";
import { ProfileHeader } from "../../components/Profile/ProfileHeader";
const SettingsEdit = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Settings Edit"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 12 }>
<ProfileHeader />
</Col>
<Col lg={ 3 }>
<ProfileLeftNav />
</Col>
<Col lg={ 9 }>
<Card>
<CardBody>
<CardTitle tag="h6" className="mb-4">
Settings Edit
</CardTitle>
<Form>
{ /* START Input */}
<FormGroup className="mb-5">
<Label for="notifyMe" className="mb-1 text-inverse">
Monthly Newsletter
</Label>
<p className="mb-2">
Do you want receive our monthly newsletter about
new products and offers?
</p>
<CustomInput type="checkbox" id="notifyMe" label="Notify Me" inline />
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup className="mb-5">
<Label for="privateMessage" className="mb-1 text-inverse">
Private Message
</Label>
<p className="mb-2">
Do you want notify you by email whenever contacts send you a message?
</p>
<CustomInput type="radio" id="privateMessageYes" name="privateMessage" label="Yes" defaultChecked />
<CustomInput type="radio" id="privateMessageNo" name="privateMessage" label="No" />
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup className="mb-5">
<Label for="privateMessage" className="mb-1 text-inverse">
Publication Email Subscriptions
</Label>
<p className="mb-2">
Control the emails that publications send to you.
</p>
<Button color="primary" outline>
Manage Publication
</Button>
</FormGroup>
{ /* END Input */}
{ /* START Input */}
<FormGroup className="mb-5">
<Label for="ActivityNotifications" className="mb-1 text-inverse">
Activity Notifications
</Label>
<p className="mb-2">
Notify me via email when...
</p>
<CustomInput type="radio" id="someoneComments" name="ActivityNotifications" label="Someone Comments" defaultChecked />
<CustomInput type="radio" id="someoneMentions" name="ActivityNotifications" label="Someone Mentions" />
<CustomInput type="radio" id="anyoneFollowsMe" name="ActivityNotifications" label="Anyone Follows Me" />
</FormGroup>
{ /* END Input */}
</Form>
{ /* END Form */}
</CardBody>
<CardFooter className="small">
<i className="fa fa-fw fa-support text-muted mr-2"></i>
If you have trouble with the configuration, you can contact us. <a href="#">We Can Help</a>
</CardFooter>
</Card>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default SettingsEdit;

View File

@@ -0,0 +1,3 @@
import SettingsEdit from './SettingsEdit';
export default SettingsEdit;

52
app/routes/Apps/Tasks/Tasks.js Executable file
View File

@@ -0,0 +1,52 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import TasksList from './TasksList';
import TasksGrid from './TasksGrid';
import { ProjectsLeftNav } from "../../components/Projects/ProjectsLeftNav";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
const Tasks = (props) => (
<React.Fragment>
<Container>
<HeaderMain
title="Tasks"
className="mb-5 mt-4"
/>
<Row>
<Col lg={ 3 }>
<ProjectsLeftNav />
</Col>
<Col lg={ 9 }>
<ProjectsSmHeader
subTitle="Projects"
subTitleLink="/apps/projects/list"
title={props.match.params.type === "list"?"Tasks List":"Tasks Grid"}
linkList="/apps/tasks/list"
linkGrid="/apps/tasks/grid"
btnShowKanban
/>
{
props.match.params.type === "list" ?
<TasksList /> :
<TasksGrid />
}
</Col>
</Row>
</Container>
</React.Fragment>
);
Tasks.propTypes = {
match: PropTypes.object.isRequired
};
export default Tasks;

View File

@@ -0,0 +1,42 @@
import React from 'react';
import { CardColumns } from './../../../components';
import { Paginations } from "../../components/Paginations";
import { TasksCardGrid } from "../../components/Tasks/TasksCardGrid";
const TasksGrid = () => (
<React.Fragment>
<CardColumns>
<TasksCardGrid />
<TasksCardGrid
id="2"
/>
<TasksCardGrid
id="3"
/>
<TasksCardGrid
id="4"
/>
<TasksCardGrid
id="5"
/>
<TasksCardGrid
id="6"
/>
<TasksCardGrid
id="7"
/>
<TasksCardGrid
id="8"
/>
<TasksCardGrid
id="9"
/>
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</React.Fragment>
);
export default TasksGrid;

View File

@@ -0,0 +1,97 @@
import React from 'react';
import {
Pagination,
PaginationItem,
PaginationLink,
Card,
CardFooter,
Table
} from './../../../components';
import { TrTableTasksList } from "./components/TrTableTasksList";
const TasksList = () => (
<Card className="mb-3">
{ /* START Table */}
<div className="table-responsive-xl">
<Table className="mb-0" hover>
<thead>
<tr>
<th className="align-middle bt-0">#</th>
<th className="align-middle bt-0">Priority</th>
<th className="align-middle bt-0">Title & Description</th>
<th className="align-middle bt-0">People</th>
<th className="align-middle bt-0">Update</th>
<th className="align-middle bt-0 text-right">
Actions
</th>
</tr>
</thead>
<tbody>
<TrTableTasksList />
<TrTableTasksList
id="2"
/>
<TrTableTasksList
id="3"
/>
<TrTableTasksList
id="4"
/>
<TrTableTasksList
id="5"
/>
<TrTableTasksList
id="6"
/>
<TrTableTasksList
id="7"
/>
<TrTableTasksList
id="8"
/>
<TrTableTasksList
id="9"
/>
<TrTableTasksList
id="10"
/>
</tbody>
</Table>
</div>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Pagination aria-label="Page navigation example">
<PaginationItem>
<PaginationLink previous href="#">
<i className="fa fa-fw fa-angle-left"></i>
</PaginationLink>
</PaginationItem>
<PaginationItem active>
<PaginationLink href="#">
1
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
2
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink href="#">
3
</PaginationLink>
</PaginationItem>
<PaginationItem>
<PaginationLink next href="#">
<i className="fa fa-fw fa-angle-right"></i>
</PaginationLink>
</PaginationItem>
</Pagination>
</CardFooter>
</Card>
);
export default TasksList;

View File

@@ -0,0 +1,159 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import { Link } from 'react-router-dom';
import {
Badge,
Avatar,
CustomInput,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
AvatarAddOn
} from './../../../../components';
import { randomArray, randomAvatar } from './../../../../utilities';
const badges = [
"secondary"
];
const avatarStatus = [
"secondary",
"warning",
"danger",
"success"
];
const prioStatus = [
<React.Fragment key="1">
<i className="fa fa-circle text-success mr-2"></i>
Small<i className="fa fa-angle-down ml-2" />
</React.Fragment>,
<React.Fragment key="2">
<i className="fa fa-circle text-primary mr-2"></i>
Normal<i className="fa fa-angle-down ml-2" />
</React.Fragment>,
<React.Fragment key="3">
<i className="fa fa-circle text-warning mr-2"></i>
High<i className="fa fa-angle-down ml-2" />
</React.Fragment>,
<React.Fragment key="3">
<i className="fa fa-circle text-danger mr-2"></i>
Big<i className="fa fa-angle-down ml-2" />
</React.Fragment>
];
const TrTableTasksList = (props) => (
<React.Fragment>
<tr>
<td className="align-middle">
<CustomInput type="checkbox" id={`TrTableTasksList-${ props.id }` } label="" inline />
</td>
<td className="align-middle">
<UncontrolledButtonDropdown>
<DropdownToggle color="link" link size="sm" className="pl-0 mb-3 text-decoration-none">
{ randomArray(prioStatus) }
</DropdownToggle>
<DropdownMenu>
<DropdownItem header>Select Priority</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-danger mr-2"></i>
Big
</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-warning mr-2"></i>
High
</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-primary mr-2"></i>
Normal
</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-success mr-2"></i>
Small
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
<td className="align-middle">
<div>
<span className="mr-2">#{ faker.random.number() }</span>
<Link to="/apps/task-details" className="text-decoration-none">
{ faker.hacker.phrase() }
</Link>
</div>
<p className="mb-0">
<span className="mr-2">
{ faker.lorem.sentence() }
</span>
<Badge pill color={ randomArray(badges) } className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color={ randomArray(badges) } className="mr-1">
{ faker.commerce.department() }
</Badge>
</p>
</td>
<td className="align-middle">
<Avatar.Image
size="md"
src={ randomAvatar() }
className="mr-3"
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-circle"
color={ randomArray(avatarStatus) }
key="avatar-icon-fg"
/>
]}
/>
</td>
<td className="align-middle">
16-Jul-2016
</td>
<td className="align-middle text-right">
<UncontrolledButtonDropdown className="align-self-center ml-auto">
<DropdownToggle color="link" size="sm">
<i className="fa fa-gear" /><i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem>
<i className="fa fa-fw fa-folder-open mr-2"></i>
View
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-ticket mr-2"></i>
Add Task
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-paperclip mr-2"></i>
Add Files
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-trash mr-2"></i>
Delete
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
</tr>
</React.Fragment>
)
TrTableTasksList.propTypes = {
id: PropTypes.node
};
TrTableTasksList.defaultProps = {
id: "1"
};
export { TrTableTasksList };

3
app/routes/Apps/Tasks/index.js Executable file
View File

@@ -0,0 +1,3 @@
import Tasks from './Tasks';
export default Tasks;

View File

@@ -0,0 +1,323 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import {
Container,
Row,
Col,
Nav,
NavItem,
NavLink,
Table,
Button,
Card,
CardBody,
CardFooter,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
Media,
Input,
InputGroup,
CustomInput,
InputGroupAddon,
Badge,
Avatar
} from './../../../components';
import { randomAvatar } from './../../../utilities';
import { HeaderMain } from "../../components/HeaderMain";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
import { Attachment } from "../../components/Attachment";
import { Comment } from "../../components/Comment";
const TasksDetails = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Tasks Details"
className="mb-5 mt-4"
/>
{ /* START Header 1 */}
<Row>
<Col lg={ 3 }>
{ /* START Left Nav */}
<div className="mb-5">
<div className="small mb-3">
Task Details
</div>
<Table size="sm">
<tbody>
<tr>
<td className="align-middle">Project</td>
<td className="text-right">
<a href="#" className="text-decoration-none">Analytics Redo</a>
</td>
</tr>
<tr>
<td className="align-middle">Assigned by</td>
<td className="text-right">
<a href="#" className="text-decoration-none">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
</td>
</tr>
<tr>
<td className="align-middle">Start Date</td>
<td className="text-right">
Thu 12 May 2016
</td>
</tr>
<tr>
<td className="align-middle">End Date</td>
<td className="text-right">
Wed 18 May 2016
</td>
</tr>
<tr>
<td className="align-middle">Priority</td>
<td className="text-right">
<UncontrolledButtonDropdown>
<DropdownToggle color="link" className="p-0 text-decoration-none">
<i className="fa fa-circle text-success mr-2"></i>
Small<i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem header>Select Priority</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-danger mr-2"></i>
Big
</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-warning mr-2"></i>
High
</DropdownItem>
<DropdownItem>
<i className="fa fa-circle text-primary mr-2"></i>
Normal
</DropdownItem>
<DropdownItem active>
<i className="fa fa-circle text-success mr-2"></i>
Small
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
</tr>
<tr>
<td className="align-middle">Progress</td>
<td className="align-middle text-right">
30%
</td>
</tr>
<tr>
<td className="align-middle">Task ID</td>
<td className="align-middle text-right">
# 6726746
</td>
</tr>
<tr>
<td className="align-middle">Date Assigned</td>
<td className="align-middle text-right">
Wed, 16 Dec 2015, 12:17 PM
</td>
</tr>
</tbody>
</Table>
</div>
{ /* END Left Nav */}
{ /* START Left Nav */}
<div className="mb-4">
<div className="small mb-3">
Assigned to
</div>
<Nav pills vertical>
<NavItem>
<NavLink href="#" className="d-flex">
<Media>
<Media left middle className="mr-3 align-self-center">
<Avatar.Image
size="md"
src={ randomAvatar() }
/>
</Media>
<Media body>
<div className="mt-0">
{ faker.name.firstName() } { faker.name.lastName() }
</div>
<span className="small">
{ faker.address.state() }, { faker.address.stateAbbr() }
</span>
</Media>
</Media>
<i className="fa fa-fw fa-circle text-success ml-auto align-self-center ml-2"></i>
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#" className="d-flex">
<Media>
<Media left middle className="mr-3 align-self-center">
<Avatar.Image
size="md"
src={ randomAvatar() }
/>
</Media>
<Media body>
<div className="mt-0">
{ faker.name.firstName() } { faker.name.lastName() }
</div>
<span className="small">
{ faker.address.state() }, { faker.address.stateAbbr() }
</span>
</Media>
</Media>
<i className="fa fa-fw fa-circle text-warning ml-auto align-self-center ml-2"></i>
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#" className="d-flex">
<Media>
<Media left middle className="mr-3 align-self-center">
<Avatar.Image
size="md"
src={ randomAvatar() }
/>
</Media>
<Media body>
<div className="mt-0">
{ faker.name.firstName() } { faker.name.lastName() }
</div>
<span className="small">
{ faker.address.state() }, { faker.address.stateAbbr() }
</span>
</Media>
</Media>
<i className="fa fa-fw fa-circle text-danger ml-auto align-self-center ml-2"></i>
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
<i className="fa fa-fw fa-plus mr-2"></i>
Add New People
</NavLink>
</NavItem>
</Nav>
</div>
{ /* END Left Nav */}
</Col>
<Col lg={ 9 }>
<ProjectsSmHeader
subTitle="Tasks"
subTitleLink="/apps/tasks/grid"
title="Task Details"
/>
{ /* START Right Content */}
<Card>
<CardBody>
<Media>
<Media left href="#">
<CustomInput type="checkbox" id="checkboxTaskDetails" label="" inline />
</Media>
<Media body>
<div className="mb-3">
<h5>
<span className="mr-2">
#{ faker.random.number() }
</span>
{ faker.hacker.phrase() }
</h5>
<Badge pill color="primary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
<Badge pill color="secondary" className="mr-1">
{ faker.commerce.department() }
</Badge>
</div>
</Media>
</Media>
<p className="lead">
Animi ea magni voluptates accusamus laboriosam. Unde repellat hic id et aliquam ut qui dignissimos.
</p>
<p className="mb-4">
{ faker.lorem.paragraphs() }
</p>
{ /* START Atachemnts */}
<div className="mb-4">
<div className="mb-3">
<span className="small mr-3">
Attachments
</span>
<Badge pill color="secondary">
3
</Badge>
</div>
<div className="mb-3">
<Attachment
icon="file-word-o"
iconClassName="text-white"
BgIconClassName="text-primary"
/>
</div>
<div className="mb-3">
<Attachment
icon="file-excel-o"
iconClassName="text-white"
BgIconClassName="text-success"
/>
</div>
<div className="mb-3">
<Attachment
icon="file-powerpoint-o"
iconClassName="text-white"
BgIconClassName="text-warning"
/>
</div>
<div className="mb-5">
<a href="#">
<i className="fa fa-plus mr-2"></i>
Add More Files to this Task
</a>
</div>
</div>
{ /* END Atachemnts */}
<div className="mb-3">
<span className="small mr-3">
Comments
</span>
<Badge pill color="secondary">
3
</Badge>
</div>
<Comment />
<Comment />
{ /* END Comment Media */}
</CardBody>
<CardFooter>
<InputGroup>
<InputGroupAddon addonType="prepend">
<Button color="secondary" outline>
<i className="fa fa fa-paperclip"></i>
</Button>
</InputGroupAddon>
<Input placeholder="Your message..." />
<InputGroupAddon addonType="append">
<Button color="primary">
<i className="fa fa fa-send"></i>
</Button>
</InputGroupAddon>
</InputGroup>
</CardFooter>
</Card>
{ /* END Right Content */}
</Col>
</Row>
{ /* END Header 1 */}
</Container>
</React.Fragment>
);
export default TasksDetails;

View File

@@ -0,0 +1,3 @@
import TasksDetails from './TasksDetails';
export default TasksDetails;

View File

@@ -0,0 +1,216 @@
import React from 'react';
import {
Container,
Row,
Col,
Card,
CardTitle,
CardBody,
CardFooter,
CardColumns,
Badge,
UncontrolledTooltip
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
import { TasksCardGrid } from "../../components/Tasks/TasksCardGrid";
const TasksKanban = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Tasks Kanban"
className="mb-5 mt-4"
/>
{ /* START Header 1 */}
<Row>
<Col lg={ 12 }>
<ProjectsSmHeader
btnShowKanban
linkList="/apps/tasks/list"
linkGrid="/apps/tasks/grid"
title="Tasks Kanban"
subTitle="Projects"
subTitleLink="/apps/projects/list"
/>
<CardColumns>
{ /* START Card */}
<Card>
<CardBody>
{ /* START Card Header */}
<div className="mb-4">
<CardTitle tag="h6">
To-Do
<Badge pill color="secondary" className="ml-2">
3
</Badge>
</CardTitle>
<span className="small d-flex">
16 Jun 2016 - 23 Aug 2016
<span className="ml-auto">
<a href="#" className="mr-2" id="TooltipSettings">
<i className="fa fa-gear"></i>
</a>
<a href="#" className="mr-2" id="TooltipCollapse">
<i className="fa fa-angle-down"></i>
</a>
<a href="#" id="TooltipAddNew">
<i className="fa fa-plus"></i>
</a>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Collapse
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipAddNew">
Add New
</UncontrolledTooltip>
</span>
</span>
</div>
{ /* END CardHeader */}
<TasksCardGrid />
<TasksCardGrid
id="2"
/>
<TasksCardGrid
id="3"
/>
</CardBody>
{ /* START Card Footer */}
<CardFooter className="text-center">
<a href="#">
<i className="fa fa-plus text-success mr-2"></i>
Add Task
</a>
</CardFooter>
{ /* END Card Footer */}
</Card>
{ /* END Card */}
{ /* START Card */}
<Card>
<CardBody>
{ /* START Card Header */}
<div className="mb-4">
<CardTitle tag="h6">
Doing
<Badge pill color="secondary" className="ml-2">
2
</Badge>
</CardTitle>
<span className="small d-flex">
16 Jun 2016 - 23 Aug 2016
<span className="ml-auto">
<a href="#" className="mr-2" id="TooltipSettings">
<i className="fa fa-gear"></i>
</a>
<a href="#" className="mr-2" id="TooltipCollapse">
<i className="fa fa-angle-down"></i>
</a>
<a href="#" id="TooltipAddNew">
<i className="fa fa-plus"></i>
</a>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Collapse
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipAddNew">
Add New
</UncontrolledTooltip>
</span>
</span>
</div>
{ /* END CardHeader */}
<TasksCardGrid
id="4"
/>
<TasksCardGrid
id="5"
/>
</CardBody>
{ /* START Card Footer */}
<CardFooter className="text-center">
<a href="#">
<i className="fa fa-plus text-success mr-2"></i>
Add Task
</a>
</CardFooter>
{ /* END Card Footer */}
</Card>
{ /* END Card */}
{ /* START Card */}
<Card>
<CardBody>
{ /* START Card Header */}
<div className="mb-4">
<CardTitle tag="h6">
Done
<Badge pill color="secondary" className="ml-2">
1
</Badge>
</CardTitle>
<span className="small d-flex">
16 Jun 2016 - 23 Aug 2016
<span className="ml-auto">
<a href="#" className="mr-2" id="TooltipSettings">
<i className="fa fa-gear"></i>
</a>
<a href="#" className="mr-2" id="TooltipCollapse">
<i className="fa fa-angle-down"></i>
</a>
<a href="#" id="TooltipAddNew">
<i className="fa fa-plus"></i>
</a>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipSettings">
Collapse
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TooltipAddNew">
Add New
</UncontrolledTooltip>
</span>
</span>
</div>
{ /* END CardHeader */}
<TasksCardGrid
id="6"
/>
</CardBody>
{ /* START Card Footer */}
<CardFooter className="text-center">
<a href="#">
<i className="fa fa-plus text-success mr-2"></i>
Add Task
</a>
</CardFooter>
{ /* END Card Footer */}
</Card>
{ /* END Card */}
{ /* START Card */}
<Card type="border-dash">
<CardBody className="d-flex align-items-center justify-content-center">
<a href="#" className="py-5">
<i className="fa fa-plus text-success mr-2"></i>
Add New Column
</a>
</CardBody>
</Card>
{ /* END Card */}
</CardColumns>
</Col>
</Row>
{ /* END Header 1 */}
</Container>
</React.Fragment>
);
export default TasksKanban;

View File

@@ -0,0 +1,3 @@
import TasksKanban from './TasksKanban';
export default TasksKanban;

48
app/routes/Apps/Users/Users.js Executable file
View File

@@ -0,0 +1,48 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import UsersList from './UsersList';
import UsersGrid from './UsersGrid';
import { UsersLeftNav } from "../../components/Users/UsersLeftNav";
import { ProjectsSmHeader } from "../../components/Projects/ProjectsSmHeader";
const Users = (props) => (
<React.Fragment>
<Container>
<HeaderMain
title="Users"
className="mb-5 mt-4"
/>
<Row>
<Col lg={ 3 }>
<UsersLeftNav />
</Col>
<Col lg={ 9 }>
<ProjectsSmHeader
subTitle={props.match.params.type === "list"?"Users List":"Users Grid"}
linkList="/apps/users/list"
linkGrid="/apps/users/grid"
/>
{
props.match.params.type === "list" ?
<UsersList /> :
<UsersGrid />
}
</Col>
</Row>
</Container>
</React.Fragment>
);
Users.propTypes = {
match: PropTypes.object.isRequired
};
export default Users;

View File

@@ -0,0 +1,51 @@
import React from 'react';
import { CardColumns } from './../../../components';
import { UsersCardGrid } from "../../components/Users/UsersCardGrid";
import { Paginations } from "../../components/Paginations";
const UsersGrid = () => (
<React.Fragment>
<CardColumns>
<UsersCardGrid />
<UsersCardGrid
id="2"
/>
<UsersCardGrid
id="3"
/>
<UsersCardGrid
id="4"
/>
<UsersCardGrid
id="5"
/>
<UsersCardGrid
id="6"
/>
<UsersCardGrid
id="7"
/>
<UsersCardGrid
id="8"
/>
<UsersCardGrid
id="9"
/>
<UsersCardGrid
id="10"
/>
<UsersCardGrid
id="11"
/>
<UsersCardGrid
id="12"
/>
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</React.Fragment>
);
export default UsersGrid;

View File

@@ -0,0 +1,71 @@
import React from 'react';
import {
Card,
CardFooter,
Table,
} from './../../../components';
import {
TrTableUsersList
} from "./components/TrTableUsersList";
import {
Paginations
} from "../../components/Paginations";
const UsersList = () => (
<Card className="mb-3">
{ /* START Table */}
<div className="table-responsive-xl">
<Table className="mb-0" hover>
<thead>
<tr>
<th className="align-middle bt-0"></th>
<th className="align-middle bt-0"></th>
<th className="align-middle bt-0">Name</th>
<th className="align-middle bt-0">Email</th>
<th className="align-middle bt-0">Phone</th>
<th className="align-middle bt-0 text-right">
Actions
</th>
</tr>
</thead>
<tbody>
<TrTableUsersList />
<TrTableUsersList
id="2"
/>
<TrTableUsersList
id="3"
/>
<TrTableUsersList
id="4"
/>
<TrTableUsersList
id="5"
/>
<TrTableUsersList
id="6"
/>
<TrTableUsersList
id="7"
/>
<TrTableUsersList
id="8"
/>
<TrTableUsersList
id="9"
/>
</tbody>
</Table>
</div>
{ /* END Table */}
<CardFooter className="d-flex justify-content-center pb-0">
<Paginations />
</CardFooter>
</Card>
);
export default UsersList;

View File

@@ -0,0 +1,176 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import PropTypes from 'prop-types';
import {
Media,
Avatar,
AvatarAddOn,
CustomInput,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem
} from './../../../../components';
import { randomArray, randomAvatar } from './../../../../utilities';
const TrTableUsersList = (props) => {
const avatar = [
[
<AvatarAddOn.Icon
className="fa fa-circle"
color="facebook"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-facebook"
color="white"
key="avatar-icon-fg"
small
/>
],
[
<AvatarAddOn.Icon
className="fa fa-circle"
color="twitter"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-twitter"
color="white"
key="avatar-icon-fg"
small
/>
],
[
<AvatarAddOn.Icon
className="fa fa-circle"
color="linkedin"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-linkedin"
color="white"
key="avatar-icon-fg"
small
/>
],
[
<AvatarAddOn.Icon
className="fa fa-circle"
color="foursquare"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-foursquare"
color="white"
key="avatar-icon-fg"
small
/>
],
[
<AvatarAddOn.Icon
className="fa fa-circle"
color="paypal"
key="avatar-icon-bg"
/>,
<AvatarAddOn.Icon
className="fa fa-paypal"
color="white"
key="avatar-icon-fg"
small
/>
],
];
return (
<React.Fragment>
<tr>
<td className="align-middle">
<CustomInput type="checkbox" id={`TrTableUsersList-${ props.id }` } label="" inline />
</td>
<td className="align-middle">
<a href="#">
<i className="fa fa-fw fa-star-o"></i>
</a>
</td>
<td>
<Media>
<Media left className="d-flex align-self-center mr-3">
<Avatar.Image
size="md"
src={ randomAvatar() }
className="align-self-center"
addOns={[
<AvatarAddOn.Icon
className="fa fa-circle"
color="white"
key="avatar-icon-white-bg"
/>,
...randomArray(avatar)
]}
/>
</Media>
<Media body>
<a className="mt-0 d-flex text-decoration-none" href="#">
{ faker.name.firstName() } { faker.name.lastName() }
</a>
<span>
{ faker.name.jobTitle() }
</span>
</Media>
</Media>
</td>
<td className="align-middle">
{ faker.internet.email() }
</td>
<td className="align-middle">
{ faker.phone.phoneNumberFormat() }
</td>
<td className="align-middle text-right">
<UncontrolledButtonDropdown>
<DropdownToggle color="link" className="pr-0">
<i className="fa fa-bars"></i><i className="fa fa-angle-down ml-2" />
</DropdownToggle>
<DropdownMenu right>
<DropdownItem>
<i className="fa fa-fw fa-phone mr-2"></i>
Call
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-comment mr-2"></i>
Chat
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-video-camera mr-2"></i>
Video
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-user mr-2"></i>
Profile
</DropdownItem>
<DropdownItem>
<i className="fa fa-fw fa-pencil mr-2"></i>
Edit
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-trash mr-2"></i>
Delete
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</td>
</tr>
</React.Fragment>
)
}
TrTableUsersList.propTypes = {
id: PropTypes.node
};
TrTableUsersList.defaultProps = {
id: "1"
};
export { TrTableUsersList };

3
app/routes/Apps/Users/index.js Executable file
View File

@@ -0,0 +1,3 @@
import Users from './Users';
export default Users;

View File

@@ -0,0 +1,50 @@
import React from 'react';
import {
Container,
Row,
CardColumns,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { SearchResultsLeftNav } from "../../components/SearchResults/SearchResultsLeftNav";
import { SearchResultsHeader } from "../../components/SearchResults/SearchResultsHeader";
import { UsersResultsCard } from "../../components/SearchResults/UsersResultsCard";
import { Paginations } from "../../components/Paginations";
const UsersResults = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Users Results"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<SearchResultsLeftNav />
</Col>
<Col lg={ 9 }>
<SearchResultsHeader />
<CardColumns>
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
<UsersResultsCard />
</CardColumns>
<div className="d-flex justify-content-center">
<Paginations />
</div>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default UsersResults;

View File

@@ -0,0 +1,3 @@
import UsersResults from './UsersResults';
export default UsersResults;

View File

@@ -0,0 +1,45 @@
import React from 'react';
import {
Container,
Row,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import { SearchResultsLeftNav } from "../../components/SearchResults/SearchResultsLeftNav";
import { SearchResultsHeader } from "../../components/SearchResults/SearchResultsHeader";
import { VideosResultsCard } from "../../components/SearchResults/VideosResultsCard";
import { Paginations } from "../../components/Paginations";
const VideosResults = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Videos Results"
className="mb-5 mt-4"
/>
{ /* START Content */}
<Row>
<Col lg={ 3 }>
<SearchResultsLeftNav />
</Col>
<Col lg={ 9 }>
<SearchResultsHeader />
<VideosResultsCard />
<VideosResultsCard />
<VideosResultsCard />
<VideosResultsCard />
<VideosResultsCard />
<VideosResultsCard />
<div className="d-flex justify-content-center">
<Paginations />
</div>
</Col>
</Row>
{ /* END Content */}
</Container>
</React.Fragment>
);
export default VideosResults;

View File

@@ -0,0 +1,3 @@
import VideosResults from './VideosResults';
export default VideosResults;

601
app/routes/Cards/Cards/Cards.js Executable file
View File

@@ -0,0 +1,601 @@
import React from 'react';
import {
Container,
Row,
Col,
Card,
CardHeader,
CardBody,
CardTitle,
CardText
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import {
HeaderDemo
} from "../../components/HeaderDemo";
const cardText = ({ cardNo }) => (
<CardText>
<span className="mr-2 text-muted">
#{ cardNo }
</span> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla nisl elit, porta a sapien eget, fringilla sagittis ex.
</CardText>
);
const cardContent = (title = 'Some Card Title') => (
<CardBody>
<CardTitle>
{ title }
</CardTitle>
{ cardText }
</CardBody>
);
const Cards = () => (
<React.Fragment>
<Container>
<HeaderMain
title="Cards"
/>
{ /* START Header 1 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={1}
title="Card Default Styles"
subTitle="Available panel styles and colors"
/>
</Col>
</Row>
{ /* END Header 1 */}
{ /* START Section 1 */}
<Row>
<Col lg={ 6 }>
<Card className="mb-3">
<CardHeader tag="h6">
Default Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.01" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6">
White Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.02" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-primary text-white">
Primary Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.03" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-secondary text-white">
Secondary Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.04" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-info text-white">
Info Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.05" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-success text-white">
Success Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.06" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-warning text-white">
Warning Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.07" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-danger text-white">
Danger Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.08" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-dark text-white">
Dark Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.09" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader tag="h6" className="bg-facebook text-white">
Facebook Card
</CardHeader>
<CardBody>
{ cardText({ cardNo: "1.10" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6">
Without Header
<span className="small ml-1">
Optional
</span>
</CardTitle>
{ cardText({ cardNo: "1.11" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 1 */}
{ /* START Header 2 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={2}
title="Cards Borders"
subTitle="Provide contextual feedback messages"
className="mt-5"
/>
</Col>
</Row>
{ /* END Header 2 */}
{ /* START Section 2 */}
<Row>
<Col lg={ 6 }>
<Card type="border" color="dark" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Dark Border Card
</CardTitle>
{ cardText({ cardNo: "2.01" }) }
</CardBody>
</Card>
<Card type="border" color="primary" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Primary Border Card
</CardTitle>
{ cardText({ cardNo: "2.02" }) }
</CardBody>
</Card>
<Card type="border" color="secondary" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Secondary Border Card
</CardTitle>
{ cardText({ cardNo: "2.03" }) }
</CardBody>
</Card>
<Card type="border" color="info" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Info Border Card
</CardTitle>
{ cardText({ cardNo: "2.04" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card type="border" color="success" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Success Border Card
</CardTitle>
{ cardText({ cardNo: "2.05" }) }
</CardBody>
</Card>
<Card type="border" color="warning" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Warning Border Card
</CardTitle>
{ cardText({ cardNo: "2.01" }) }
</CardBody>
</Card>
<Card type="border" color="danger" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Danger Border Card
</CardTitle>
{ cardText({ cardNo: "2.01" }) }
</CardBody>
</Card>
<Card type="border" color="facebook" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Facebook Border Card
</CardTitle>
{ cardText({ cardNo: "2.01" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 2 */}
{ /* START Header 3 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={3}
title="Cards Sides Borders"
subTitle="Provide contextual feedback messages"
className="mt-5"
/>
</Col>
</Row>
{ /* END Header 3 */}
{ /* START Section 3 */}
<Row>
<Col lg={ 6 }>
<Card type="side-border" color="dark" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Dark Border
</CardTitle>
{ cardText({ cardNo: "3.01" }) }
</CardBody>
</Card>
<Card type="side-border" color="primary" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Primary Border
</CardTitle>
{ cardText({ cardNo: "3.02" }) }
</CardBody>
</Card>
<Card type="side-border" color="secondary" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Secondary Border
</CardTitle>
{ cardText({ cardNo: "3.03" }) }
</CardBody>
</Card>
<Card type="side-border" color="info" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Info Border
</CardTitle>
{ cardText({ cardNo: "3.04" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card type="side-border" color="success" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Success Border
</CardTitle>
{ cardText({ cardNo: "3.05" }) }
</CardBody>
</Card>
<Card type="side-border" color="warning" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Warning Border
</CardTitle>
{ cardText({ cardNo: "3.06" }) }
</CardBody>
</Card>
<Card type="side-border" color="danger" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Danger Border
</CardTitle>
{ cardText({ cardNo: "3.07" }) }
</CardBody>
</Card>
<Card type="side-border" color="facebook" className="mb-3">
<CardBody>
<CardTitle tag="h6">
Left Facebook Border
</CardTitle>
{ cardText({ cardNo: "3.08" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 3 */}
{ /* START Header 4 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={4}
title="Cards Sides Borders"
subTitle="Provide contextual feedback messages"
className="mt-5"
/>
</Col>
</Row>
{ /* END Header 4 */}
{ /* START Section 4 */}
<Row>
<Col lg={ 6 }>
<Card className="mb-3">
<CardHeader
type="border"
color="dark"
tag="h6">
Bottom Dark Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.01" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="primary"
tag="h6">
Bottom Primary Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.02" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="secondary"
tag="h6">
Bottom Secondary Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.03" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="success"
tag="h6">
Bottom Success Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.04" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="info"
tag="h6">
Bottom Info Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.05" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3">
<CardHeader
type="border"
color="dark"
tag="h6">
Bottom Warning Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.06" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="primary"
tag="h6">
Bottom Danger Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.07" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="secondary"
tag="h6">
Bottom Dark Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.08" }) }
</CardBody>
</Card>
<Card className="mb-3">
<CardHeader
type="border"
color="success"
tag="h6">
Bottom Facebook Border
</CardHeader>
<CardBody>
{ cardText({ cardNo: "4.09" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 4 */}
{ /* START Header 5 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={5}
title="Cards Backgrounds"
subTitle="Provide contextual feedback messages"
className="mt-5"
/>
</Col>
</Row>
{ /* END Header 5 */}
{ /* START Section 5 */}
<Row>
<Col lg={ 6 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6">
White Background
</CardTitle>
{ cardText({ cardNo: "5.01" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="primary">
<CardBody>
<CardTitle tag="h6" className="text-white">
Primary Background
</CardTitle>
{ cardText({ cardNo: "5.02" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="secondary">
<CardBody>
<CardTitle tag="h6" className="text-white">
Secondary Background
</CardTitle>
{ cardText({ cardNo: "5.03" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="success">
<CardBody>
<CardTitle tag="h6" className="text-white">
Success Background
</CardTitle>
{ cardText({ cardNo: "5.04" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="warning">
<CardBody>
<CardTitle tag="h6" className="text-white">
Warning Background
</CardTitle>
{ cardText({ cardNo: "5.05" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3" type="background" color="info">
<CardBody>
<CardTitle tag="h6" className="text-white">
Info Background
</CardTitle>
{ cardText({ cardNo: "5.06" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="danger">
<CardBody>
<CardTitle tag="h6" className="text-white">
Danger Background
</CardTitle>
{ cardText({ cardNo: "5.07" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="dark">
<CardBody>
<CardTitle tag="h6" className="text-white">
Dark Background
</CardTitle>
{ cardText({ cardNo: "5.04" }) }
</CardBody>
</Card>
<Card className="mb-3" type="background" color="facebook">
<CardBody>
<CardTitle tag="h6" className="text-white">
Facebook Background
</CardTitle>
{ cardText({ cardNo: "5.05" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 5 */}
{ /* START Header 6 */}
<Row>
<Col lg={ 12 }>
<HeaderDemo
no={6}
title="Cards Various"
subTitle="Provide contextual feedback messages"
className="mt-5"
/>
</Col>
</Row>
{ /* END Header 6 */}
{ /* START Section 6 */}
<Row>
<Col lg={ 6 }>
<Card className="mb-3 bg-none">
<CardBody>
<CardTitle tag="h6">
Without Background
</CardTitle>
{ cardText({ cardNo: "6.01" }) }
</CardBody>
</Card>
<Card className="mb-3" type="border-dash">
<CardBody>
<CardTitle tag="h6">
Dashed Border Card
</CardTitle>
{ cardText({ cardNo: "6.02" }) }
</CardBody>
</Card>
<Card className="mb-3" type="shadow">
<CardBody>
<CardTitle tag="h6">
Shadow Custom
</CardTitle>
{ cardText({ cardNo: "6.03" }) }
</CardBody>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3 bg-none" type="border-dot">
<CardBody>
<CardTitle tag="h6">
Dotted Border Card
</CardTitle>
{ cardText({ cardNo: "6.04" }) }
</CardBody>
</Card>
<Card className="mb-3" type="none">
<CardBody>
<CardTitle tag="h6">
Without Border & Background Card
</CardTitle>
{ cardText({ cardNo: "6.05" }) }
</CardBody>
</Card>
</Col>
</Row>
{ /* END Section 6 */}
</Container>
</React.Fragment>
);
export default Cards;

View File

@@ -0,0 +1,3 @@
import Cards from './Cards';
export default Cards;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
import CardsHeaders from './CardsHeaders';
export default CardsHeaders;

View File

@@ -0,0 +1,599 @@
import React from 'react';
import PropTypes from 'prop-types';
import faker from 'faker/locale/en_US';
import _ from 'lodash';
import {
Container,
ButtonToolbar,
ButtonGroup,
UncontrolledButtonDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
FloatGrid as Grid,
Card,
Media,
CardBody,
ListGroup,
ListGroupItem,
Progress,
Table,
CardFooter,
Button,
CardHeader
} from './../../../components';
import { applyColumn } from './../../../components/FloatGrid';
import { HeaderMain } from "../../components/HeaderMain";
import {
MetricVsTarget
} from "../../components/Analytics/MetricVsTarget";
import {
WebsitePerformance
} from "../../components/Analytics/WebsitePerformance";
import {
AudienceMetricsChart
} from "./components/AudienceMetricsChart";
import {
TinyAreaChart
} from "../../components/Analytics/TinyAreaChart";
import {
SimpleLineChart
} from "./../../Graphs/ReCharts/components/SimpleLineChart";
import classes from './Analytics.scss';
const LAYOUT = {
'metric-v-target-users': { h: 6, md: 4 },
'metric-v-target-sessions': { h: 6, md: 4 },
'metric-v-target-pageviews': { h: 6, md: 4 },
'analytics-audience-metrics': { h: 9, minH: 7 },
'traffic-channels': { md: 6, h: 6 },
'sessions': { md: 6, h: 6, maxH: 9, minW: 3 },
'spend': { md: 6, h: 7 },
'website-performance': { md: 6, h: 11 },
'organic-traffic': { md: 6, h: 10 }
}
const SessionByDevice = (props) => (
<div className={classes['session']}>
<div className={classes['session__title']}>
{ props.title }
</div>
<div className={classes['session__values']}>
<div className={`${classes['session__percentage']} text-${props.color}`}>
{ props.valuePercent }%
</div>
<div className={`${classes['session__value']} text-${props.color}`}>
{ props.value }
</div>
</div>
</div>
);
SessionByDevice.propTypes = {
title: PropTypes.node,
color: PropTypes.string,
valuePercent: PropTypes.string,
value: PropTypes.string
}
export class Analytics extends React.Component {
state = {
layouts: _.clone(LAYOUT)
}
_resetLayout = () => {
this.setState({
layouts: _.clone(LAYOUT)
})
}
render() {
const { layouts } = this.state;
return (
<React.Fragment>
<Container fluid={ false }>
<div className="d-flex mt-3 mb-5">
<HeaderMain
title="Analytics"
className="mt-0"
/>
<ButtonToolbar className="ml-auto">
<ButtonGroup className="align-self-start mr-2">
<UncontrolledButtonDropdown className="ml-auto flex-column">
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
<i className="fa fa-globe text-body mr-2"></i>
www.webkom.co<i className="fa fa-angle-down text-body ml-2" />
</DropdownToggle>
<div className="small">
Last 30 Days vs Previous Period
</div>
<DropdownMenu>
<DropdownItem header>
Select Site:
</DropdownItem>
<DropdownItem active>
www.webkom.co
</DropdownItem>
<DropdownItem>
www.spin.webkom.co
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
<i className="fa fa-fw fa-plus mr-2"></i>
Add New
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</ButtonGroup>
<ButtonGroup className="align-self-start mr-2">
<UncontrolledButtonDropdown className="ml-auto flex-column">
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
<i className="fa fa-calendar-o text-body mr-2"></i>
Last Month<i className="fa fa-angle-down text-body ml-2" />
</DropdownToggle>
<div className="small">
Jan 01, 2017 to Jan 31, 2017
</div>
<DropdownMenu>
<DropdownItem header>
Select Period:
</DropdownItem>
<DropdownItem active>
Last Month
</DropdownItem>
<DropdownItem>
Last 3 Months
</DropdownItem>
<DropdownItem>
Last 6 Months
</DropdownItem>
<DropdownItem>
Last Year
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
Custom...
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</ButtonGroup>
<ButtonGroup className="align-self-start mr-2">
<UncontrolledButtonDropdown className="ml-auto flex-column">
<DropdownToggle color="link" className="text-left pl-0 text-decoration-none mb-2">
<i className="fa fa-calendar-o text-body mr-2"></i>
Previous Period<i className="fa fa-angle-down text-body ml-2" />
</DropdownToggle>
<div className="small">
Jan 01, 2017 to Jan 31, 2017
</div>
<DropdownMenu>
<DropdownItem header>
Select Period:
</DropdownItem>
<DropdownItem active>
Previous Period
</DropdownItem>
<DropdownItem>
Last 3 Months
</DropdownItem>
<DropdownItem>
Last 6 Months
</DropdownItem>
<DropdownItem>
Last Year
</DropdownItem>
<DropdownItem divider />
<DropdownItem>
Custom...
</DropdownItem>
</DropdownMenu>
</UncontrolledButtonDropdown>
</ButtonGroup>
<ButtonGroup className="align-self-start">
<Button color="primary" className="mb-2 mr-2 px-3">
Apply
</Button>
</ButtonGroup>
<ButtonGroup>
<Button
color="link"
className="mb-2 text-decoration-none align-self-start"
onClick={this._resetLayout}
>
Reset
</Button>
</ButtonGroup>
</ButtonToolbar>
</div>
</Container>
<Grid>
<Grid.Row
onLayoutChange={ layouts => this.setState({ layouts }) }
columnSizes={ this.state.layouts }
rowHeight={ 55 }
>
<Grid.Col { ...(applyColumn('metric-v-target-users', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Users
</CardHeader>
<CardBody className="pt-2">
<MetricVsTarget
title="Users"
value="168,793"
progressbarColor="danger"
targetValue="169,001"
/>
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('metric-v-target-sessions', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Sessions
</CardHeader>
<CardBody className="pt-2">
<MetricVsTarget
title="Sessions"
value="529,747"
progressbarValue="67"
progressbarColor="primary"
targetValue="782,957"
/>
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('metric-v-target-pageviews', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Pageviews
</CardHeader>
<CardBody className="pt-2">
<MetricVsTarget
title="Pageviews"
value="1,763,981"
progressbarValue="34"
progressbarColor="secondary"
targetValue="1,567,334"
/>
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('analytics-audience-metrics', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 pb-4 bg-none" tag="h6">
<i className="fa fa-ellipsis-v mr-2 text-body"></i> Analytics Audience Metrics
</CardHeader>
<CardBody className="d-flex flex-column">
<Grid.Ready>
<AudienceMetricsChart height="100%" className="flex-fill" />
</Grid.Ready>
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('traffic-channels', layouts)) }>
<Card className="d-flex flex-column">
<CardHeader className="bb-0 pt-3 bg-none" tag="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Traffic Channels
</CardHeader>
<Table responsive className="table mb-0">
<thead>
<tr>
<th scope="col" className="bt-0">Channel</th>
<th scope="col" className="bt-0">Sessions</th>
<th scope="col" className="bt-0">Prev Period</th>
<th scope="col" className="text-right bt-0">Change</th>
<th scope="col" className="bt-0 text-right">Trend</th>
</tr>
</thead>
<tbody>
<tr>
<td className="align-middle text-inverse">
Organic Search
</td>
<td className="align-middle">
{ faker.finance.amount() }
</td>
<td className="align-middle">
<span data-faker="[[finance.amount]]">949.00</span>
</td>
<td className="align-middle text-right">
-75,0%
<i className="fa fa-caret-down text-danger ml-1"></i>
</td>
<td className="text-right align-middle">
<TinyAreaChart />
</td>
</tr>
<tr>
<td className="align-middle text-inverse">
Direct
</td>
<td className="align-middle">
{ faker.finance.amount() }
</td>
<td className="align-middle">
<span data-faker="[[finance.amount]]">157.11</span>
</td>
<td className="align-middle text-right">
82,1%
<i className="fa fa-caret-up text-success ml-1"></i>
</td>
<td className="text-right align-middle">
<TinyAreaChart />
</td>
</tr>
<tr>
<td className="align-middle text-inverse">
Social Media
</td>
<td className="align-middle">
{ faker.finance.amount() }
</td>
<td className="align-middle">
<span data-faker="[[finance.amount]]">949.00</span>
</td>
<td className="align-middle text-right">
-75,0%
<i className="fa fa-caret-down text-danger ml-1"></i>
</td>
<td className="text-right align-middle">
<TinyAreaChart />
</td>
</tr>
</tbody>
</Table>
<CardFooter className="mt-auto flex-grow-0">
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('sessions', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 pb-0 bg-none" tag="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Sessions by Device Type
</CardHeader>
<CardBody className="d-flex flex-column">
<div className={classes['sessions']}>
<SessionByDevice
title="Desktop"
color="purple"
valuePercent="51,5"
value="201,345"
/>
<SessionByDevice
title="Mobile"
color="primary"
valuePercent="34,4"
value="134,201"
/>
<SessionByDevice
title="Mobile"
color="success"
valuePercent="20,8"
value="81,525"
/>
</div>
<Progress multi className={ classes['sessions-progress'] } style={{height: "5px"}}>
<Progress bar color="purple" value="25" style={{height: "5px"}} />
<Progress bar color="primary" value="30" style={{height: "5px"}} />
<Progress bar color="success" value="45" style={{height: "5px"}} />
</Progress>
</CardBody>
<CardFooter className={`${classes['sessions-info']} mt-auto`}>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('spend', layouts)) }>
<Card>
<CardHeader className="d-flex bb-0 pt-3 bg-none">
<span className="h6">
<i className="fa fa-ellipsis-v text-body mr-2"></i> Spend
</span>
<span className="ml-auto text-right">
Dec 22, 2016 to<br />
Dec 31, 2016 <i>(prev.)</i>
</span>
</CardHeader>
<CardBody>
<div className="text-center mb-4">
<h2>
$2,890.12
</h2>
<div className="mb-1 text-success">
<i className="fa mr-1 fa-caret-up"></i>
23.34%
</div>
<div>
vs { faker.finance .amount() } (prev.)
</div>
</div>
</CardBody>
<CardBody className="p-0">
<TinyAreaChart height={ 70 } />
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('website-performance', layouts)) }>
<Card>
<CardHeader className="bb-0 pt-3 bg-none" tag="h6">
<i className="fa fa-ellipsis-v mr-2"></i> Website Performance
</CardHeader>
<ListGroup flush>
<ListGroupItem className="bt-0">
<WebsitePerformance
title="Bounce Rate (Avg)"
value="46,893"
valuePercentIcon="caret-up"
valuePercentColor="text-success"
valuePercent="23,91"
/>
</ListGroupItem>
<ListGroupItem className="bt-0">
<WebsitePerformance
title="Pageviews (Avg)"
value="2.15"
valuePercentColor="text-danger"
valuePercent="42,82"
/>
</ListGroupItem>
<ListGroupItem className="bt-0">
<WebsitePerformance
title="New Sessions"
value="76,40"
valuePercentIcon="caret-up"
valuePercentColor="text-success"
valuePercent="23,91"
/>
</ListGroupItem>
<ListGroupItem className="bt-0 bb-0">
<WebsitePerformance
title="Time on Site (Avg)"
value="2m:16s"
valuePercentColor="text-danger"
valuePercent="65,28"
/>
</ListGroupItem>
</ListGroup>
<CardFooter className="flex-grow-0 mt-auto">
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
<Grid.Col { ...(applyColumn('organic-traffic', layouts)) }>
<Card>
<CardHeader className="d-flex bb-0 pt-3 bg-none">
<Media>
<Media left className="mr-3">
<i className="fa fa-ellipsis-v"></i>
</Media>
<Media body>
<span className="h6">
How did my organic traffic perform?
</span>
<br />
<span>
Dec 22, 2016 to Dec 31, 2016 <i>(prev.)</i>
</span>
</Media>
</Media>
</CardHeader>
<CardBody className="d-flex flex-column">
<div className="text-center mb-4">
<h6>Organics Sessons</h6>
<h2>
46,982
</h2>
<div className="mb-1 text-success">
<i className="fa mr-1 fa-caret-up"></i>
23.34% <span> vs { faker.finance .amount() } <i>(prev.)</i>
</span>
</div>
</div>
<Grid.Ready>
<SimpleLineChart height="100%" className="flex-fill"/>
</Grid.Ready>
</CardBody>
<CardFooter>
<Media className="small">
<Media left>
<i className="fa fa-fw fa-info-circle mr-2"></i>
</Media>
<Media body>
How do your users (visitors), sessions (visits) and pageviews
metrics for <abbr title="attribute" className="text-dark">www.webkom.com</abbr> compare to your targets over the last 30 days?
</Media>
</Media>
</CardFooter>
</Card>
</Grid.Col>
</Grid.Row>
</Grid>
</React.Fragment>
);
}
}

View File

@@ -0,0 +1,60 @@
@import "./../../../styles/variables.scss";
.sessions {
display: flex;
width: 100%;
margin-bottom: 1rem;
}
.sessions-progress {
margin-bottom: 2rem;
}
.session {
flex: 1 1 auto;
&__percentage {
font-size: 2.5rem;
}
}
:global(.float-column--size-xs),
:global(.float-column--size-sm) {
.sessions {
flex-direction: column;
}
.session {
display: flex;
align-items: center;
padding: 0.5rem 0;
&__values {
margin-left: auto;
}
&__percentage {
font-size: 1.2rem;
font-weight: bold;
line-height: 1;
}
&__value {
line-height: 1;
}
+ .session {
border-top: 1px solid $gray-400;
}
}
}
:global(.float-column--size-xs) {
.sessions-progress {
margin-top: 2rem;
}
.sessions-info {
display: none;
}
}

View File

@@ -0,0 +1,77 @@
import React from 'react';
import PropTypes from 'prop-types';
import _ from 'lodash';
import moment from 'moment';
import {
ResponsiveContainer,
ComposedChart,
CartesianGrid,
XAxis,
YAxis,
Tooltip,
Legend,
Area,
Bar,
Dot
} from './../../../../components/recharts';
import colors from './../../../../colors';
const CHART_LENGTH = 30;
const CHART_START_DATE = moment().subtract(CHART_LENGTH, 'months');
const dataGenerator = (index) => {
const referenceValue = _.random(1500, 1800);
const halfedRefVal = referenceValue / 2;
return {
key: index,
month: moment(CHART_START_DATE).add(index, 'months').format('MMM YY'),
"Tokyo": referenceValue,
"New York": _.random(1200, 2200),
"Berlin": referenceValue - _.random(halfedRefVal, halfedRefVal * 1.1),
};
}
const data = _.times(CHART_LENGTH, dataGenerator);
// eslint-disable-next-line react/prop-types
const generateDot = ({stroke, ...other}) => (
<Dot
{ ...other }
fill={ stroke }
stroke={ colors['white'] }
strokeWidth={ 2 }
r={ 5 }
/>
);
export const AudienceMetricsChart = ({height, className}) => (
<ResponsiveContainer
width='100%'
minHeight='250px'
className={ className }
{...(!_.isUndefined(height) ? {
height
} : {
aspect: 2 / 1
})}
>
<ComposedChart data={data}
margin={{top: 20, right: 20, bottom: 20, left: 20}}>
<CartesianGrid stroke={ colors['200'] } strokeDasharray='none' vertical={ false }/>
<XAxis dataKey="month"/>
<YAxis />
<Tooltip />
<Legend />
<Bar dataKey='New York' barSize={5} fill={ colors['400'] } />
<Area dataKey='Tokyo' fill={ colors['purple-02'] } stroke={ colors['purple'] } activeDot={ null } />
<Area dataKey='Berlin' fill={ colors['primary-04'] } stroke={ colors['primary'] } activeDot={{r: 5}} dot={generateDot} />
</ComposedChart>
</ResponsiveContainer>
);
AudienceMetricsChart.propTypes = {
height: PropTypes.string,
className: PropTypes.string
}

View File

@@ -0,0 +1,3 @@
import { Analytics } from './Analytics';
export default Analytics;

View File

@@ -0,0 +1,262 @@
import React from 'react';
import {
Container,
Row,
Card,
CardBody,
CustomInput,
CardDeck,
Table,
UncontrolledDropdown,
DropdownToggle,
DropdownMenu,
DropdownItem,
CardTitle,
ListGroup,
ListGroupItem,
Button,
Col
} from './../../../components';
import { setupPage } from './../../../components/Layout/setupPage';
import { HeaderMain } from "../../components/HeaderMain";
import {
TrTableInvoices
} from "../../components/Financial/TrTableInvoices"
import {
TinyDonutChartBig
} from "../../components/Financial/TinyDonutChartBig"
import {
StackedAreaChart
} from "../../components/Financial/StackedAreaChart"
import {
TrTableRecentFundings
} from "../../components/Financial/TrTableRecentFundings"
/*eslint-disable */
const progressCompletion = [
"25",
"50",
"75",
"97"
];
/*eslint-enable */
const Financial = () => (
<Container>
<Row className="mb-2">
<Col lg={ 12 }>
<HeaderMain
title="Financial"
className="mb-4 mb-lg-3"
/>
</Col>
</Row>
<Row>
<Col lg={ 12 }>
<div className="hr-text hr-text-center mt-4 mb-4">
<span>Your Cash</span>
</div>
</Col>
<Col lg={ 3 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Main Fundings
</CardTitle>
<div>
<div className="mb-3">
<h2>$ 188.00</h2>
</div>
<div>
<i className="fa fa-caret-down fa-fw text-danger"></i> $464.00
</div>
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 3 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Invoices
</CardTitle>
<div>
<div className="mb-3">
<h2>$ 553.00</h2>
</div>
<div>
<i className="fa fa-caret-down fa-fw text-danger"></i> $994.00
</div>
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 3 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Accounts Receivable
</CardTitle>
<div>
<div className="mb-3">
<h2>$ 451.00</h2>
</div>
<div>
<i className="fa fa-caret-up fa-fw text-success"></i> $938.00
</div>
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 3 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Accounts Receivable
</CardTitle>
<div>
<div className="mb-3">
<h2>$ 194.00</h2>
</div>
<div>
<i className="fa fa-caret-up fa-fw text-success"></i> $519.00
</div>
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 12 }>
<CardDeck>
<Card className="mb-3">
<CardBody>
<CardTitle className="mb-4 d-flex">
<h6>Money Map</h6>
<UncontrolledDropdown className="ml-auto">
<DropdownToggle color="link" size="sm" caret className="pt-0">
Last Month
</DropdownToggle>
<DropdownMenu right>
<DropdownItem header>Select Date</DropdownItem>
<DropdownItem active>Last Month</DropdownItem>
<DropdownItem>Last 12 Months</DropdownItem>
<DropdownItem divider />
<DropdownItem>Custom...</DropdownItem>
</DropdownMenu>
</UncontrolledDropdown>
</CardTitle>
<div className="d-flex justify-content-center">
<TinyDonutChartBig />
</div>
</CardBody>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle className="mb-1 d-flex">
<h6>Recent Fundings</h6>
<Button color="link" size="sm" className="pt-0 ml-auto">
View All <i className="fa fa-angle-right"></i>
</Button>
</CardTitle>
</CardBody>
<Table responsive striped className="mb-0">
<thead>
<tr>
<th className="bt-0">Company</th>
<th className="bt-0">Amount</th>
<th className="bt-0">Date</th>
<th className="bt-0 text-right">Action</th>
</tr>
</thead>
<tbody>
<TrTableRecentFundings />
</tbody>
</Table>
</Card>
</CardDeck>
<Card className="mb-3">
<CardBody>
<CardTitle className="mb-1 d-flex">
<h6>Invoices</h6>
<Button color="link" size="sm" className="pt-0 ml-auto">
View All <i className="fa fa-angle-right"></i>
</Button>
</CardTitle>
</CardBody>
<Table responsive striped className="mb-0">
<thead>
<tr>
<th className="bt-0">Company</th>
<th className="bt-0">Amount</th>
<th className="bt-0">Date</th>
<th className="bt-0">Contact</th>
<th className="bt-0">Email</th>
<th className="bt-0 text-right">Action</th>
</tr>
</thead>
<tbody>
<TrTableInvoices />
</tbody>
</Table>
</Card>
</Col>
<Col lg={ 8 }>
<Card className="mb-3">
<CardBody>
<CardTitle className="mb-4 d-flex">
<h6>Account Performance</h6>
</CardTitle>
<div className="d-flex justify-content-center">
<StackedAreaChart />
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody>
<CardTitle className="mb-1">
<h6 className="mb-0">Settings</h6>
</CardTitle>
</CardBody>
<ListGroup flush>
<ListGroupItem className="d-flex">
<span>My Cash</span>
<CustomInput type="switch" id="exampleCustomSwitch" name="customSwitch" label="" className="ml-auto" />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>My Cap</span>
<CustomInput type="switch" id="exampleCustomSwitch1" name="customSwitch" label="" className="ml-auto" defaultChecked />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>Client List</span>
<CustomInput type="switch" id="exampleCustomSwitch2" name="customSwitch" label="" className="ml-auto" defaultChecked />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>Recent Fundings</span>
<CustomInput type="switch" id="exampleCustomSwitch3" name="customSwitch" label="" className="ml-auto" />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>Invoice Creator</span>
<CustomInput type="switch" id="exampleCustomSwitch4" name="customSwitch" label="" className="ml-auto" />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>Sales Lead</span>
<CustomInput type="switch" id="exampleCustomSwitch5" name="customSwitch" label="" className="ml-auto" defaultChecked />
</ListGroupItem>
<ListGroupItem className="d-flex">
<span>Q&A</span>
<CustomInput type="switch" id="exampleCustomSwitch6" name="customSwitch" label="" className="ml-auto" defaultChecked />
</ListGroupItem>
</ListGroup>
</Card>
</Col>
</Row>
</Container>
);
export default setupPage({
pageTitle: 'Financial'
})(Financial);

View File

@@ -0,0 +1,3 @@
import Financial from './Financial';
export default Financial;

View File

@@ -0,0 +1,348 @@
import React from 'react';
import {
Container,
Row,
Card,
CardBody,
Badge,
Table,
CardTitle,
Progress,
Col
} from './../../../components';
import { setupPage } from './../../../components/Layout/setupPage';
import { HeaderMain } from "../../components/HeaderMain";
import {
TinyDonutChart
} from "../../components/Monitor/TinyDonutChart"
import {
TinyDonutChartBig
} from "../../components/Monitor/TinyDonutChartBig"
import {
TrTableMonitor
} from "../../components/Monitor/TrTableMonitor"
import {
TinyAreaChart
} from "../../components/Monitor/TinyAreaChart"
/*eslint-disable */
const progressCompletion = [
"25",
"50",
"75",
"97"
];
/*eslint-enable */
const Monitor = () => (
<Container>
<Row className="mb-2">
<Col lg={ 12 }>
<HeaderMain
title="Monitor"
className="mb-4 mb-lg-5"
/>
</Col>
</Row>
<Row>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
System Monitoring
</CardTitle>
<div className="mb-4">
<div>
<h6 className="mb-1">CPU</h6>
<p>Intel Celeron G1610 @2.60Ghz</p>
</div>
<div className="d-flex justify-content-between">
<span className="d-flex align-items-center mr-2">Core 0</span>
<Progress value="44" className="mt-2 w-50" style={{height: "5px"}} />
<span className="ml-2 text-inverse">86%</span>
</div>
<div className="d-flex justify-content-between">
<span className="d-flex align-items-center mr-2">Core 1</span>
<Progress value="74" className="mt-2 w-50" style={{height: "5px"}} />
<span className="ml-2 text-inverse">40%</span>
</div>
</div>
<div className="mb-4">
<div>
<h6 className="mb-1">Memory <small>(Ram)</small></h6>
<p>GSkill 2 x 8 GB DDR3 @1333 Mhz</p>
</div>
<div className="mb-3 d-flex">
<TinyDonutChart />
<div className="ml-2 align-self-center">
<h2 className="mb-0">52 <small>GB</small></h2>
<span>Total Memory</span>
</div>
</div>
<div className="d-flex justify-content-between">
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-info"></i> Allocated
</div>
<h6 className="mb-0">48,7 MB</h6>
<span>79%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-primary"></i> In Cache
</div>
<h6 className="mb-0">26,9 MB</h6>
<span>65%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-gray-300"></i> Available
</div>
<h6 className="mb-0">2,7 MB</h6>
<span>34%</span>
</div>
</div>
</div>
<div>
<div>
<h6 className="mb-1">Interface Traffic <small>(re0)</small></h6>
<p>Intel Celeron G1610 @2.60Ghz</p>
</div>
</div>
</CardBody>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Network Monitoring
</CardTitle>
<div>
<div>
<h6 className="mb-1">Interface Traffic <small>(re0)</small></h6>
<p>Intel Celeron G1610 @2.60Ghz</p>
</div>
</div>
<TinyAreaChart />
</CardBody>
</Card>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-4">
Hardware Temperature
</CardTitle>
<div className="mb-4">
<div>
<h6>CPU <small>(idle)</small></h6>
</div>
<div className="d-flex justify-content-between mb-3">
<div className="text-left">
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
</div>
</div>
<TinyAreaChart />
</div>
<div className="mb-4">
<div>
<h6>HDD1 WD30EZRX <small>(ada0)</small></h6>
</div>
<div className="d-flex justify-content-between mb-3">
<div className="text-left">
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
</div>
</div>
<TinyAreaChart />
</div>
<div>
<div>
<h6>HDD1 WD30EZRX <small>(ada1)</small></h6>
</div>
<div className="d-flex justify-content-between mb-3">
<div className="text-left">
<i className="fa fa-caret-down fa-fw text-danger"></i>Min: 19ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 26ºC
</div>
<div className="text-left">
<i className="fa fa-caret-up fa-fw text-success"></i>Min: 32ºC
</div>
</div>
<TinyAreaChart />
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 8 }>
<p>
Nesciunt odit eius nihil molestiae tenetur earum enim quidem. Aperiam non sapiente voluptatum in doloremque rerum magnam quae sed.
Quisquam eos non voluptate sapiente qui temporibus harum in illo. Aliquid at dolor labore. Qui error modi.
</p>
<div className="hr-text hr-text-left mt-4 mb-4">
<span>Volume Status</span>
</div>
<Row className="mb-5">
<Col lg={ 3 }>
<div>
<div className="mb-3">
<h6 className="mb-1">Path</h6>
<Badge color="secondary" pill>/mtn/volume1</Badge>
</div>
<div className="mb-0">
<h2 className="mb-0">2.24 <small>TiB</small></h2>
<span>Volume Size</span>
</div>
<TinyDonutChartBig
pieColor="primary"
/>
<div className="d-flex justify-content-between">
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-purple"></i> Used Space
</div>
<h6 className="mb-0">483,7 MB</h6>
<span>79%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
</div>
<h6 className="mb-0">269,3 MB</h6>
<span>65%</span>
</div>
</div>
</div>
</Col>
<Col lg={ 3 }>
<div>
<div className="mb-3">
<h6 className="mb-1">Path</h6>
<Badge color="secondary" pill>/mtn/volume1</Badge>
</div>
<div className="mb-0">
<h2 className="mb-0">5.07 <small>TiB</small></h2>
<span>Volume Size</span>
</div>
<TinyDonutChartBig
pieColor="purple"
/>
<div className="d-flex justify-content-between">
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-purple"></i> Used Space
</div>
<h6 className="mb-0">48,7 MB</h6>
<span>79%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
</div>
<h6 className="mb-0">26,9 MB</h6>
<span>65%</span>
</div>
</div>
</div>
</Col>
<Col lg={ 3 }>
<div>
<div className="mb-3">
<h6 className="mb-1">Path</h6>
<Badge color="secondary" pill>/mtn/volume1</Badge>
</div>
<div className="mb-0">
<h2 className="mb-0">3.16 <small>TiB</small></h2>
<span>Volume Size</span>
</div>
<TinyDonutChartBig
pieColor="success"
/>
<div className="d-flex justify-content-between">
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-success"></i> Used Space
</div>
<h6 className="mb-0">483,3 MB</h6>
<span>79%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
</div>
<h6 className="mb-0">262,9 MB</h6>
<span>65%</span>
</div>
</div>
</div>
</Col>
<Col lg={ 3 }>
<div>
<div className="mb-3">
<h6 className="mb-1">Path</h6>
<Badge color="secondary" pill>/mtn/volume1</Badge>
</div>
<div className="mb-0">
<h2 className="mb-0">9.27 <small>TiB</small></h2>
<span>Volume Size</span>
</div>
<TinyDonutChartBig
pieColor="yellow"
/>
<div className="d-flex justify-content-between">
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-yellow"></i> Used Space
</div>
<h6 className="mb-0">482,7 MB</h6>
<span>79%</span>
</div>
<div className="text-left">
<div className="small mb-2">
<i className="fa fa-circle fa-fw text-gray-300"></i> Free Space
</div>
<h6 className="mb-0">26,9 MB</h6>
<span>65%</span>
</div>
</div>
</div>
</Col>
</Row>
<div className="hr-text hr-text-left mt-2 mb-4">
<span>Mounted Devices</span>
</div>
<Table responsive>
<thead>
<tr>
<th className="bt-0">Description</th>
<th className="bt-0">RAID</th>
<th className="bt-0">Capacity</th>
<th className="bt-0 text-right">Usage</th>
<th className="bt-0 text-right">Status</th>
</tr>
</thead>
<tbody>
<TrTableMonitor />
</tbody>
</Table>
</Col>
</Row>
</Container>
);
export default setupPage({
pageTitle: 'Monitor'
})(Monitor);

View File

@@ -0,0 +1,3 @@
import Monitor from './Monitor';
export default Monitor;

View File

@@ -0,0 +1,120 @@
import React from 'react';
import uid from 'uuid/v4';
import faker from 'faker/locale/en_US';
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
import _ from 'lodash';
import {
ProjectsList
} from "../../components/ProjectsDashboards/ProjectsList";
const reorder = (list, startIndex, endIndex) => {
const result = Array.from(list);
const [removed] = result.splice(startIndex, 1);
result.splice(endIndex, 0, removed);
return result;
};
export class DraggableProjects extends React.Component {
constructor(props) {
super(props);
this.state = {
projects: [
{
id: uid(),
title: faker.commerce.productName(),
badgeColor: "success",
badgeTitle: "Active",
progressValue: "76",
completeValue: "13",
myTasksValue: "35",
daysDueValue: "6"
}, {
id: uid(),
title: faker.commerce.productName(),
badgeColor: "danger",
badgeTitle: "Suspended",
progressValue: "23",
completeValue: "6",
myTasksValue: "87",
daysDueValue: "15"
}, {
id: uid(),
title: faker.commerce.productName(),
badgeColor: "secondary",
badgeTitle: "Archived",
progressValue: "4",
completeValue: "98",
myTasksValue: "21",
daysDueValue: "7"
}, {
id: uid(),
title: faker.commerce.productName(),
badgeColor: "warning",
badgeTitle: "Paused",
progressValue: "63",
completeValue: "98",
myTasksValue: "21",
daysDueValue: "7"
}
]
};
this.onDragEnd = this.onDragEnd.bind(this);
}
onDragEnd(result) {
if (!result.destination) {
return;
}
const projects = reorder(
this.state.projects,
result.source.index,
result.destination.index
);
this.setState({
projects,
});
}
render() {
return (
<DragDropContext onDragEnd={this.onDragEnd}>
<Droppable droppableId="droppable">
{(provided, snapshot) => (
<div
className="list-group list-group-flush"
ref={provided.innerRef}
>
{_.map(this.state.projects, ({id, ...project}, index) => (
<Draggable key={id} draggableId={id} index={index}>
{(provided, snapshot) => (
<div
className="list-group-item"
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}
style={{
...provided.draggableProps.style,
borderLeft: snapshot.isDragging && '1px solid rgba(0, 0, 0, 0.125)',
borderRight: snapshot.isDragging && '1px solid rgba(0, 0, 0, 0.125)'
}}
>
<ProjectsList
{ ...project }
/>
</div>
)}
</Draggable>
))}
</div>
)}
</Droppable>
</DragDropContext>
);
}
}

View File

@@ -0,0 +1,304 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import { Link } from 'react-router-dom';
import {
Container,
Row,
Card,
CardBody,
Badge,
Table,
CardTitle,
Button,
InputGroup,
InputGroupAddon,
Input,
ListGroup,
ListGroupItem,
Media,
Col
} from './../../../components';
import { setupPage } from './../../../components/Layout/setupPage';
import { HeaderMain } from "../../components/HeaderMain";
import {
TasksMedia
} from "../../components/ProjectsDashboards/TasksMedia";
import {
TinyDonutChart
} from "../../components/ProjectsDashboards/TinyDonutChart"
import {
TinyDonutChartAllProjects
} from "../../components/ProjectsDashboards/TinyDonutChartAllProjects"
import {
TimelineMini
} from "../../components/Timeline/TimelineMini"
import { DraggableProjects } from './DraggableProjects';
const ProjectsDashboard = () => (
<Container>
<Row className="mb-5">
<Col lg={ 12 }>
<HeaderMain
title="Projects"
className="mb-4 mb-lg-5"
/>
<p>
{ faker.lorem.paragraph() }
</p>
</Col>
<Col lg={ 3 }>
<div className="hr-text hr-text-center my-2">
<span>Payments</span>
</div>
<Row>
<Col xs={ 6 } className="text-center">
<p className="text-center mb-0">
<i className="fa fa-circle text-primary mr-2"></i>
Today
</p>
<h4 className="mt-2 mb-0">
$3,267
</h4>
</Col>
<Col xs={ 6 } className="text-center">
<p className="text-center mb-0">
<i className="fa fa-circle text-info mr-2"></i>
This Month
</p>
<h4 className="mt-2 mb-0">
$8,091
</h4>
</Col>
</Row>
<div className="hr-text hr-text-center mb-2 mt-3">
<span>Invoices</span>
</div>
<Row className="mb-4 mb-xl-0">
<Col xs={ 6 } className="text-center">
<p className="text-center mb-0">
<i className="fa fa-circle text-warning mr-2"></i>
Due
</p>
<h4 className="mt-2 mb-0">
$4,007
</h4>
</Col>
<Col xs={ 6 } className="text-center">
<p className="text-center mb-0">
<i className="fa fa-circle text-danger mr-2"></i>
Overdue
</p>
<h4 className="mt-2 mb-0">
$11,091
</h4>
</Col>
</Row>
</Col>
<Col lg={ 3 } md={ 6 }>
<div className="hr-text hr-text-left my-2">
<span>All Tasks</span>
</div>
<Media>
<Media left className="mr-3">
<TinyDonutChart />
</Media>
<Media body>
<div>
<i className="fa fa-circle mr-1 text-yellow"></i>
<span className="text-inverse">23</span> Pending
</div>
<div>
<i className="fa fa-circle mr-1 text-danger"></i>
<span className="text-inverse">3</span> Behind
</div>
<div>
<i className="fa fa-circle mr-1 text-success"></i>
<span className="text-inverse">34</span> Completed
</div>
</Media>
</Media>
</Col>
<Col lg={ 3 } md={ 6 } className="mb-4 mb-lg-0">
<div className="hr-text hr-text-left my-2">
<span>All Projects</span>
</div>
<Media>
<Media left className="mr-3">
<TinyDonutChartAllProjects />
</Media>
<Media body>
<div>
<i className="fa fa-circle mr-1 text-info"></i>
<span className="text-inverse">14</span> Pending
</div>
<div>
<i className="fa fa-circle mr-1 text-primary"></i>
<span className="text-inverse">24</span> Behind
</div>
<div>
<i className="fa fa-circle mr-1 text-purple"></i>
<span className="text-inverse">2</span> Completed
</div>
</Media>
</Media>
</Col>
<Col lg={ 3 }>
<div className="hr-text hr-text-left my-2">
<span>My Stats</span>
</div>
<Table size="sm">
<tbody>
<tr>
<td className="text-inverse bt-0">Active Projects</td>
<td className="text-right bt-0">
<Badge color="success" pill>6</Badge>
</td>
</tr>
<tr>
<td className="text-inverse">Open Tasks</td>
<td className="text-right">
<Badge color="primary" pill>4</Badge>
</td>
</tr>
<tr>
<td className="text-inverse">Support Tickets</td>
<td className="text-right">
<Badge color="info" pill>15</Badge>
</td>
</tr>
<tr>
<td className="text-inverse">Active Timers</td>
<td className="text-right">
<Badge color="secondary" pill>0</Badge>
</td>
</tr>
</tbody>
</Table>
</Col>
</Row>
<Row>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-3">
Tasks
</CardTitle>
<InputGroup>
<Input placeholder="Search Tasks..." />
<InputGroupAddon addonType="append">
<Button color="secondary" outline tag={ Link } to="/apps/tasks/list">
<i className="fa fa-search"></i>
</Button>
</InputGroupAddon>
</InputGroup>
</CardBody>
<ListGroup flush>
<ListGroupItem action>
<TasksMedia
iconColor="success"
/>
</ListGroupItem>
<ListGroupItem action>
<TasksMedia
iconColor="danger"
id="2"
/>
</ListGroupItem>
<ListGroupItem action>
<TasksMedia
iconColor="warning"
id="3"
/>
</ListGroupItem>
<ListGroupItem action>
<TasksMedia
id="4"
/>
</ListGroupItem>
<ListGroupItem action tag={ Link } to="/apps/tasks/list" className="text-center">
View All Tasks
<i className="fa fa-angle-right ml-2"></i>
</ListGroupItem>
</ListGroup>
</Card>
</Col>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6">
Timeline Mini
</CardTitle>
<TimelineMini
showPillDate
pillDate="2 Days ago"
icon="times-circle"
iconClassName="text-danger"
badgeTitle="Alert"
badgeColor="danger"
/>
<TimelineMini
icon="question-circle"
iconClassName="text-warning"
badgeTitle="Warning"
badgeColor="warning"
/>
<TimelineMini
icon="info-circle"
iconClassName="text-info"
badgeTitle="Info"
badgeColor="info"
/>
<TimelineMini
showPillDate
pillDate="Yesterday"
icon="plus-circle"
iconClassName="text-primary"
badgeTitle="Message"
badgeColor="primary"
/>
<TimelineMini
icon="check-circle"
iconClassName="text-success"
badgeTitle="Success"
badgeColor="success"
/>
<TimelineMini
icon="circle"
badgeTitle="Obsolete"
/>
</CardBody>
<ListGroup flush>
<ListGroupItem action tag={ Link } to="/pages/timeline" className="text-center">
Timeline Details
<i className="fa fa-angle-right ml-2"></i>
</ListGroupItem>
</ListGroup>
</Card>
</Col>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody>
<CardTitle tag="h6" className="mb-3">
Projects
</CardTitle>
<InputGroup>
<Input placeholder="Search Projects..." />
<InputGroupAddon addonType="append">
<Button color="secondary" outline tag={ Link } to="/apps/projects/list">
<i className="fa fa-search"></i>
</Button>
</InputGroupAddon>
</InputGroup>
</CardBody>
<DraggableProjects />
</Card>
</Col>
</Row>
</Container>
);
export default setupPage({
pageTitle: 'Projects Dashboard'
})(ProjectsDashboard);

View File

@@ -0,0 +1,3 @@
import ProjectsDashboard from './ProjectsDashboard';
export default ProjectsDashboard;

View File

@@ -0,0 +1,936 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import {
Container,
Row,
Card,
CardBody,
UncontrolledTooltip,
Progress,
Table,
Nav,
NavItem,
NavLink,
CardTitle,
ListGroup,
ListGroupItem,
UncontrolledCollapse,
Col
} from './../../../components';
import { setupPage } from './../../../components/Layout/setupPage';
import { HeaderMain } from "../../components/HeaderMain";
import {
TinyLineChart
} from "./components/TinyLineChart";
import {
TinyAreaChart
} from "./components/TinyAreaChart";
import {
TinyArcChart
} from "./components/TinyArcChart";
/*eslint-disable */
const progressCompletion = [
"25",
"50",
"75",
"97"
];
/*eslint-enable */
const Reports = () => (
<Container>
<Row className="mb-2">
<Col lg={ 12 }>
<HeaderMain
title="Reports"
className="mb-3 mb-lg-5"
/>
</Col>
<Col xl={ 3 } lg={ 6 } className="mb-4 mb-lg-0">
<Card>
<CardBody className="bb-0">
<span className="d-flex">
<CardTitle tag="h6" className="mb-0 bb-0">
Temperatures
</CardTitle>
<span className="ml-auto justify-content-start">
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="TemperaturesTooltipSettings">
<i className="fa fa-fw fa-sliders"></i>
</a> <a href="javascript:;" id="TemperaturesTooltipAdd" className="text-decoration-none">
<i className="fa fa-fw fa-plus"></i>
</a>
</span>
<UncontrolledTooltip placement="top" target="TemperaturesTooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="TemperaturesTooltipAdd">
Add
</UncontrolledTooltip>
</span>
</CardBody>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="TemperaturesProcessorToggler" className="by-0 d-flex text-decoration-none">
Processor
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesProcessorTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="TemperaturesProcessorTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#TemperaturesProcessorToggler" isOpen>
<CardBody className="pt-0">
<span className="d-flex mb-4">
<h1>39º</h1>
<span className="ml-auto text-right">
102º F <br />
<i className="fa fa-arrow-down fa-fw text-primary"></i>
</span>
</span>
<div className="d-flex justify-content-between mb-2">
<span className="d-flex align-items-center mr-2">Core 0</span>
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">86º</span>
</div>
<div className="d-flex justify-content-between mb-2">
<span className="d-flex align-items-center mr-2">Core 1</span>
<Progress value="59" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">40º</span>
</div>
<div className="d-flex justify-content-between mb-2">
<span className="d-flex align-items-center mr-2">Core 2</span>
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">86º</span>
</div>
<div className="d-flex justify-content-between mb-2">
<span className="d-flex align-items-center mr-2">Core 3</span>
<Progress value="59" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">40º</span>
</div>
</CardBody>
</UncontrolledCollapse>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="TemperaturesGraphicsToggler" className="by-0 d-flex text-decoration-none">
Graphics
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesGraphicsTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="TemperaturesGraphicsTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#TemperaturesGraphicsToggler" isOpen>
<CardBody className="pt-0">
<span className="d-flex mb-3">
<h1>68º</h1>
<span className="ml-auto text-right">
102º F <br />
<i className="fa fa-arrow-up fa-fw text-danger"></i>
</span>
</span>
<div className="d-flex justify-content-between mb-2">
<span className="d-flex align-items-center mr-2">Core</span>
<Progress value="85" className="mt-2 w-50" style={{height: "5px"}} />
<span className="ml-2 text-inverse">86º</span>
</div>
</CardBody>
</UncontrolledCollapse>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="TemperaturesStorageToggler" className="by-0 d-flex text-decoration-none">
Storage
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="TemperaturesStorageTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="TemperaturesStorageTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#TemperaturesStorageToggler" isOpen>
<CardBody className="pt-0">
<div className="mb-3 mt-2">
<TinyLineChart />
</div>
<div className="mb-3">
<span className="d-flex">
<span className="text-inverse">
Samsung 850 PRO
</span>
<span className="ml-auto">
512GB
</span>
</span>
<div className="d-flex justify-content-between">
<span className="d-flex align-items-center mr-2">SSD 0</span>
<Progress value="25" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">31º</span>
</div>
</div>
<div className="mb-3">
<span className="d-flex">
<span className="text-inverse">
WD Black
</span>
<span className="ml-auto">
1TB
</span>
</span>
<div className="d-flex justify-content-between">
<span className="d-flex align-items-center mr-2">HDD 1</span>
<Progress value="67" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">81º</span>
</div>
</div>
<div className="mb-0">
<span className="d-flex">
<span className="text-inverse">
Quantum PCI
</span>
<span className="ml-auto">
2TB
</span>
</span>
<div className="d-flex justify-content-between">
<span className="d-flex align-items-center mr-2">SSD 3</span>
<Progress value="35" className="mt-2 w-50 progress" style={{height: "5px"}} />
<span className="ml-2 text-inverse">21º</span>
</div>
</div>
</CardBody>
</UncontrolledCollapse>
</Card>
</Col>
<Col xl={ 3 } lg={ 6 } className="mb-4 mb-lg-0">
<Card className="mb-sm-4 mb-xl-0">
<CardBody className="bb-0">
<span className="d-flex">
<CardTitle tag="h6" className="mb-0 bb-0">
Usage
</CardTitle>
<span className="ml-auto justify-content-start">
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="UsageTooltipSettings">
<i className="fa fa-fw fa-sliders"></i>
</a> <a href="javascript:;" id="UsageTooltipAdd" className="text-decoration-none">
<i className="fa fa-fw fa-plus"></i>
</a>
</span>
<UncontrolledTooltip placement="top" target="UsageTooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="UsageTooltipAdd">
Add
</UncontrolledTooltip>
</span>
</CardBody>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="ProcessorToggler" className="by-0 d-flex text-decoration-none">
Processor
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="ProcessorTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="ProcessorTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#ProcessorToggler" isOpen>
<CardBody className="pt-0">
<dl className="row mb-3">
<dt className="col-sm-5">CPU</dt>
<dd className="col-sm-7 text-right text-inverse">Intel Core i7</dd>
<dt className="col-sm-5">Base (Turbo)</dt>
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
<dt className="col-sm-8">Cores (Threads)</dt>
<dd className="col-sm-4 text-right text-inverse">4 (8)</dd>
</dl>
<Progress multi className="mt-2" style={{height: "5px"}}>
<Progress bar value="45" />
<Progress bar color="danger" value="15" />
</Progress>
</CardBody>
</UncontrolledCollapse>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="UsageLoadToggler" className="by-0 d-flex text-decoration-none">
Usage (Load)
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="UsageLoadTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="UsageLoadTooltip">
Show/Hide Section
</UncontrolledTooltip>
<UncontrolledCollapse toggler="#UsageLoadToggler" isOpen>
<CardBody className="pt-0">
<Table size="sm" className="mb-0">
<thead>
<tr>
<th scope="col" className="bt-0 bb-0 align-middle text-left">
<h1 className="pt-0">78%</h1>
</th>
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
</p>
</th>
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
</p>
</th>
<th scope="col" className="text-center bt-0 bb-0 align-bottom" width="5">
<p style={{ textOrientation: 'unset', lineHeight: '0' }} className="mb-0">
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-gray-300"></i>
<i className="fa fa-fw fa-stop text-primary"></i>
</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td className="bt-0">Cores</td>
<td className="bt-0 text-center text-inverse">1</td>
<td className="bt-0 text-center text-inverse">2</td>
<td className="bt-0 text-center text-inverse">3</td>
</tr>
<tr>
<td>Usage %</td>
<td className="text-center text-inverse">27</td>
<td className="text-center text-inverse">78</td>
<td className="text-center text-inverse">13</td>
</tr>
<tr>
<td>Tendency</td>
<td className="text-center">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
<td className="text-center">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
<td className="text-center">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
</tr>
</tbody>
</Table>
</CardBody>
</UncontrolledCollapse>
</ListGroup>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="GraphicsToggler" className="by-0 d-flex text-decoration-none">
Graphics
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="GraphicsTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="GraphicsTooltip">
Show/Hide Section
</UncontrolledTooltip>
<UncontrolledCollapse toggler="#GraphicsToggler" isOpen>
<CardBody className="pt-0">
<dl className="row mb-0">
<dt className="col-sm-5">GPU Name</dt>
<dd className="col-sm-7 text-right text-inverse">NVIDIA GTX 980</dd>
<dt className="col-sm-5">Bus Width</dt>
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
<dt className="col-sm-7">Memory</dt>
<dd className="col-sm-5 text-right text-inverse">4096 GDDR5</dd>
</dl>
</CardBody>
</UncontrolledCollapse>
</ListGroup>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="UsageLoadToggler2" className="by-0 d-flex text-decoration-none">
Usage (Load)
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="UsageLoadTooltip2"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="UsageLoadTooltip2">
Show/Hide Section
</UncontrolledTooltip>
<UncontrolledCollapse toggler="#UsageLoadToggler2" isOpen>
<CardBody className="pt-0">
<Table size="sm">
<thead>
<tr>
<th scope="col" className="bt-0 bb-0 align-top text-left">
<h1 className="pt-0">85%</h1>
</th>
<th scope="col" className="text-right bt-0 bb-0 align-middle">
<TinyArcChart />
</th>
</tr>
</thead>
<tbody>
<tr>
<td className="bt-0">Current Core Clock</td>
<td className="bt-0 text-right text-inverse">390Mhz</td>
</tr>
<tr>
<td>Current Memory Clock</td>
<td className="text-right text-inverse">160MHz</td>
</tr>
<tr>
<td>Memory Usage (%)</td>
<td className="text-right text-inverse">306MB (7%)</td>
</tr>
<tr>
<td>Tendency</td>
<td className="text-right">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
</tr>
</tbody>
</Table>
</CardBody>
</UncontrolledCollapse>
</ListGroup>
</Card>
</Col>
<Col xl={ 6 } lg={ 12 }>
<Row>
<Col xl={ 6 } lg={ 6 }>
<Card className="mb-4">
<CardBody className="bb-0">
<span className="d-flex">
<CardTitle tag="h6" className="mb-0 bb-0">
Allocation
</CardTitle>
<span className="ml-auto justify-content-start">
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="AllocationTooltipSettings">
<i className="fa fa-fw fa-sliders"></i>
</a> <a href="javascript:;" id="AllocationTooltipAdd" className="text-decoration-none">
<i className="fa fa-fw fa-plus"></i>
</a>
</span>
<UncontrolledTooltip placement="top" target="AllocationTooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="AllocationTooltipAdd">
Add
</UncontrolledTooltip>
</span>
</CardBody>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="RamToggler" className="by-0 d-flex text-decoration-none">
RAM
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="RamTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="RamTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#RamToggler" isOpen>
<CardBody className="pt-0">
<dl className="row mb-3">
<dt className="col-sm-5">Installed</dt>
<dd className="col-sm-7 text-right text-inverse">16GB DDR3</dd>
<dt className="col-sm-5">DRAM Freq</dt>
<dd className="col-sm-7 text-right text-inverse">4 GHz (4.4 GHz)</dd>
<dt className="col-sm-8">Cores (Threads)</dt>
<dd className="col-sm-4 text-right text-inverse">4 (8)</dd>
</dl>
<Progress multi className="mt-2 mb-3" style={{height: "5px"}}>
<Progress bar value="45" />
<Progress bar color="danger" value="15" />
</Progress>
<Table size="sm">
<tbody>
<tr>
<td className="bt-0">
<i className="fa fa fa-circle-o text-primary mr-1"></i>
In Use
</td>
<td className="text-right text-inverse bt-0">
796MB <i className="fa fa-arrow-up fa-fw text-gray-300"></i>
</td>
</tr>
<tr>
<td>
<i className="fa fa fa-circle-o text-danger mr-1"></i>
In Cache
</td>
<td className="text-right text-inverse">
180MB <i className="fa fa-arrow-down fa-fw text-gray-300"></i>
</td>
</tr>
<tr>
<td>
<i className="fa fa fa-circle-o text-gray-300 mr-1"></i>
Available
</td>
<td className="text-right text-inverse">
1672MB <i className="fa fa-arrow-down fa-fw text-gray-300"></i>
</td>
</tr>
</tbody>
</Table>
<div>
<TinyAreaChart />
</div>
</CardBody>
</UncontrolledCollapse>
</Card>
</Col>
<Col xl={ 6 } lg={ 6 }>
<Card className="mb-4">
<CardBody className="bb-0">
<span className="d-flex">
<CardTitle tag="h6" className="mb-0 bb-0">
Cooling
</CardTitle>
<span className="ml-auto justify-content-start">
<a href="javascript:;" className="ml-auto justify-content-start pr-2 text-decoration-none" id="CoolingTooltipSettings">
<i className="fa fa-fw fa-sliders"></i>
</a> <a href="javascript:;" id="CoolingTooltipAdd" className="text-decoration-none">
<i className="fa fa-fw fa-plus"></i>
</a>
</span>
<UncontrolledTooltip placement="top" target="CoolingTooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="CoolingTooltipAdd">
Add
</UncontrolledTooltip>
</span>
</CardBody>
<ListGroup flush>
<ListGroupItem tag="a" href="#" id="FansToggler" className="by-0 d-flex text-decoration-none">
Fans
<i className="fa fa-fw fa-angle-down ml-auto justify-content-end" id="FansTooltip"></i>
</ListGroupItem>
<UncontrolledTooltip placement="top" target="FansTooltip">
Show/Hide Section
</UncontrolledTooltip>
</ListGroup>
<UncontrolledCollapse toggler="#FansToggler" isOpen>
<CardBody className="pt-0">
<div className="mb-2">
<span className="d-flex">
<span>
Left Fontal Fan
</span>
<span className="ml-auto text-inverse">
120mm
</span>
</span>
<input type="range" className="custom-range pb-0" id="leftFontalFan" />
<span className="d-flex">
<span>
<i className="fa fa-fw fa-leaf"></i>
</span>
<span className="ml-auto">
250RPM
</span>
</span>
</div>
<div className="mb-4">
<span className="d-flex">
<span>
Right Fontal Fan
</span>
<span className="ml-auto text-inverse">
120mm
</span>
</span>
<input type="range" max="3" step="1" className="custom-range pb-0" id="leftFontalFan" />
<span className="d-flex">
<span>
<i className="fa fa-fw fa-leaf"></i>
</span>
<span className="ml-auto">
250RPM
</span>
</span>
</div>
<Nav pills className="nav-fill">
<NavItem>
<NavLink href="#" active>
<i className="fa fa-sliders"></i>
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
<i className="fa fa-leaf"></i>
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
<i className="fa fa-dashboard"></i>
</NavLink>
</NavItem>
</Nav>
</CardBody>
</UncontrolledCollapse>
</Card>
</Col>
<Col xl={ 12 }>
<Card>
<CardBody className="bb-0 pb-0">
<span className="d-flex">
<CardTitle tag="h6" className="mb-0 bb-0">
Activity
</CardTitle>
<span className="ml-auto justify-content-start">
<a href="javascript:;" className="ml-auto justify-content-start pr-2" id="ActivityTooltipSettings">
<i className="fa fa-fw fa-sliders"></i>
</a> <a href="javascript:;" id="ActivityTooltipAdd">
<i className="fa fa-fw fa-plus"></i>
</a>
</span>
<UncontrolledTooltip placement="top" target="ActivityTooltipSettings">
Settings
</UncontrolledTooltip>
<UncontrolledTooltip placement="top" target="ActivityTooltipAdd">
Add
</UncontrolledTooltip>
</span>
</CardBody>
<CardBody>
<Nav tabs className="mb-3">
<NavItem>
<NavLink href="#" active>
Processes
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
Network
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
Storage
</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">
Energy
</NavLink>
</NavItem>
</Nav>
<Row>
<Col lg={ 6 }>
<dl className="row mb-0">
<dt className="col-sm-5">
Operating System
</dt>
<dd className="col-sm-7 text-right text-inverse">
Windows 10 x64
</dd>
<dt className="col-sm-5">
Build
</dt>
<dd className="col-sm-7 text-right text-inverse">
9876
</dd>
</dl>
</Col>
<Col lg={ 6 }>
<dl className="row mb-0">
<dt className="col-sm-5">
Admin
</dt>
<dd className="col-sm-7 text-right text-inverse">
John Malkovich
</dd>
<dt className="col-sm-5">
Network
</dt>
<dd className="col-sm-7 text-right text-inverse">
Wireless Network
</dd>
</dl>
</Col>
</Row>
<Table hover className="mb-0" size="sm" responsive>
<thead>
<tr>
<th scope="col" className="bt-0">
Process
</th>
<th scope="col" className="align-middle text-right bt-0">
Read
</th>
<th scope="col" className="align-middle text-right bt-0">
Threads
</th>
<th scope="col" className="align-middle text-right bt-0">
CPU
</th>
<th scope="col" className="align-middle text-right bt-0">
GPU
</th>
<th scope="col" className="align-middle text-right bt-0">
Memory
</th>
<th scope="col" className="align-middle text-right bt-0">
Tend
</th>
<th className="bt-0"></th>
</tr>
</thead>
<tbody>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
Chrome
</span>
</td>
<td className="align-middle text-right">
30MB/s
</td>
<td className="align-middle text-right">
20
</td>
<td className="align-middle text-right">
24%
</td>
<td className="align-middle text-right">
56%
</td>
<td className="align-middle text-right">
7.9GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr1">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr1">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr1">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
Photoshop
</span>
</td>
<td className="align-middle text-right">
40MB/s
</td>
<td className="align-middle text-right">
60
</td>
<td claclassNamess="align-middle text-right">
25%
</td>
<td className="align-middle text-right">
10%
</td>
<td className="align-middle text-right">
1.1GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-up fa-fw text-success"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr2">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr2">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr2">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
Chrome
</span>
</td>
<td className="align-middle text-right">
60MB/s
</td>
<td className="align-middle text-right">
60
</td>
<td className="align-middle text-right">
19%
</td>
<td className="align-middle text-right">
56%
</td>
<td className="align-middle text-right">
2.4GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr3">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr3">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr3">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
Safari
</span>
</td>
<td className="align-middle text-right">
10MB/s
</td>
<td className="align-middle text-right">
40
</td>
<td className="align-middle text-right">
19%
</td>
<td className="align-middle text-right">
56%
</td>
<td className="align-middle text-right">
1.1GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-up fa-fw text-success"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr4">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr4">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr4">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
Chrome
</span>
</td>
<td className="align-middle text-right">
30MB/s
</td>
<td className="align-middle text-right">
10
</td>
<td className="align-middle text-right">
27%
</td>
<td className="align-middle text-right">
27%
</td>
<td className="align-middle text-right">
9.1GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-down fa-fw text-danger"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr5">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr5">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr5">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
<tr>
<td className="align-middle text-nowrap">
<i className="fa fa fa-window-maximize mr-1"></i>
<span className="text-inverse">
System
</span>
</td>
<td className="align-middle text-right">
70MB/s
</td>
<td className="align-middle text-right">
30
</td>
<td className="align-middle text-right">
10%
</td>
<td className="align-middle text-right">
19%
</td>
<td className="align-middle text-right">
8.8GB
</td>
<td className="align-middle text-right">
<i className="fa fa-arrow-up fa-fw text-success"></i>
</td>
<td className="align-middle text-right">
<a href="#" id="tr6">
<i className="fa fa-fw fa-angle-down"></i>
</a>
<UncontrolledTooltip placement="top" target="tr6">
Show Details
</UncontrolledTooltip>
</td>
</tr>
<UncontrolledCollapse toggler="#tr6">
<tr>
<td colSpan="8" className="bt-0">
<samp className="small">{ faker.internet.ip() }</samp>
</td>
</tr>
</UncontrolledCollapse>
</tbody>
</Table>
</CardBody>
</Card>
</Col>
</Row>
</Col>
</Row>
</Container>
);
export default setupPage({
pageTitle: 'Reports'
})(Reports);

View File

@@ -0,0 +1,38 @@
import React from 'react';
import {
PieChart,
Pie,
Cell
} from './../../../../components/recharts';
import colors from './../../../../colors';
const data = [
{name: 'Free', value: 40 },
{name: 'Used', value: 60 },
];
const COLORS = [ colors['light'], colors['primary'] ];
const SIZE = 70;
const TinyArcChart = () => (
<PieChart width={ SIZE } height={ SIZE / 2 } margin={{ bottom: 0, top: 0, left: 5, right: 5 }}>
<Pie
data={data}
dataKey="value"
stroke="no"
innerRadius={ SIZE / 2 * 0.7 }
outerRadius={ SIZE / 2 }
fill="#8884d8"
startAngle={ 0 }
endAngle={ 180 }
cy="100%"
>
{
data.map((entry, index) => <Cell key={ index } fill={COLORS[index % COLORS.length]} />)
}
</Pie>
</PieChart>
);
export { TinyArcChart };

View File

@@ -0,0 +1,21 @@
import React from 'react';
import _ from 'lodash';
import {
ResponsiveContainer,
AreaChart,
Area
} from './../../../../components/recharts';
import colors from './../../../../colors';
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
const TinyAreaChart = () => (
<ResponsiveContainer width='100%' height={ 40 }>
<AreaChart data={data}>
<Area dataKey='pv' stroke={ colors['primary'] } fill={ colors['primary-03'] } />
</AreaChart>
</ResponsiveContainer>
);
export { TinyAreaChart };

View File

@@ -0,0 +1,30 @@
import React from 'react';
import _ from 'lodash';
import {
ResponsiveContainer,
LineChart,
Line,
Dot
} from './../../../../components/recharts';
import colors from './../../../../colors';
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
const generateDot = ({stroke, ...other}) => (
<Dot
{ ...other }
fill={ stroke }
stroke={ colors['white'] }
/>
);
const TinyLineChart = () => (
<ResponsiveContainer width='100%' height={ 40 }>
<LineChart data={data}>
<Line dataKey='pv' stroke={ colors['primary-07'] } strokeWidth={2} activeDot={{r: 5}} dot={generateDot} />
</LineChart>
</ResponsiveContainer>
);
export { TinyLineChart };

View File

@@ -0,0 +1,3 @@
import Reports from './Reports';
export default Reports;

View File

@@ -0,0 +1,244 @@
import React from 'react';
import {
Container,
Row,
Card,
CardBody,
Table,
Badge,
CardTitle,
Nav,
NavLink,
NavItem,
Col
} from './../../../components';
import { setupPage } from './../../../components/Layout/setupPage';
import { HeaderMain } from "../../components/HeaderMain";
import {
SimpleLineChart
} from "../../components/Stock/SimpleLineChart"
import {
TrTableSummary
} from "../../components/Stock/TrTableSummary"
import {
TrTableStock
} from "../../components/Stock/TrTableStock"
import {
TrTableFavStock
} from "../../components/Stock/TrTableFavStock"
/*eslint-disable */
const progressCompletion = [
"25",
"50",
"75",
"97"
];
/*eslint-enable */
const Stock = () => (
<Container>
<Row className="mb-2">
<Col lg={ 12 }>
<HeaderMain
title="Stock"
className="mb-4 mb-lg-4"
/>
</Col>
</Row>
<Row>
<Col lg={ 12 }>
<Table responsive size="sm" className="mb-4 text-nowrap">
<thead>
<tr>
<td className="bt-0">
<h4 className="mb-1">
Your 5
</h4>
Favourites Stocks
</td>
<td className="bt-0">
<h4 className="mb-1">
AAPL
</h4>
<span className="text-success">
<i className="fa fa-caret-up mr-1"></i> 22.38
</span> / 5.9%
</td>
<td className="bt-0">
<h4 className="mb-1">
MSFT
</h4>
<span className="text-danger">
<i className="fa fa-caret-down mr-1"></i> 34.18
</span> / 0.56%
</td>
<td className="bt-0">
<h4 className="mb-1">
CAT
</h4>
<span className="text-success">
<i className="fa fa-caret-up mr-1"></i> 22.38
</span> / 12.2%
</td>
<td className="bt-0">
<h4 className="mb-1">
TSLA
</h4>
<span className="text-success">
<i className="fa fa-caret-up mr-1"></i> 31.03
</span> / 3.2%
</td>
<td className="bt-0">
<h4 className="mb-1">
KN
</h4>
<span className="text-danger">
<i className="fa fa-caret-down mr-1"></i> 34.18
</span> / 0.56%
</td>
<td className="bt-0">
<h4 className="mb-1">
QZA
</h4>
<span className="text-danger">
<i className="fa fa-caret-down mr-1"></i> 4.02
</span> / 4.21%
</td>
</tr>
</thead>
<tbody>
<TrTableFavStock />
</tbody>
</Table>
</Col>
<Col lg={ 8 }>
<Card className="mb-3">
<CardBody>
<span className="d-flex mb-3">
<CardTitle>
<h6>Nokia Corp.
<small>
<span className="text-success ml-2">
<i className="fa fa-caret-up mr-1"></i> 22.38
</span> / 5.9%
</small>
</h6>
</CardTitle>
<Badge pill className="ml-auto align-self-start"> Score: 7.24 </Badge>
</span>
<div className="text-center">
<SimpleLineChart />
<div className="d-flex mt-4">
<dl className="row">
<dt className="col-sm-4 text-left text-sm-right">Open</dt>
<dd className="col-sm-8 text-left text-inverse">$834.00</dd>
<dt className="col-sm-4 text-left text-sm-right">High</dt>
<dd className="col-sm-8 text-left text-inverse">$198.00</dd>
<dt className="col-sm-4 text-left text-sm-right">Low</dt>
<dd className="col-sm-8 text-left text-inverse">$575.00</dd>
</dl>
<dl className="row">
<dt className="col-sm-4 text-left text-sm-right">Market Cap</dt>
<dd className="col-sm-8 text-left text-inverse">876.00B</dd>
<dt className="col-sm-4 text-left text-sm-right">P/E ratio (ttm)</dt>
<dd className="col-sm-8 text-left text-inverse">62.00</dd>
<dt className="col-sm-4 text-left text-sm-right">Divided Yield</dt>
<dd className="col-sm-8 text-left text-inverse">94.7%</dd>
</dl>
</div>
</div>
</CardBody>
</Card>
</Col>
<Col lg={ 4 }>
<Card className="mb-3">
<CardBody className="pb-1">
<Nav pills>
<NavItem>
<NavLink href="#" active>Summary</NavLink>
</NavItem>
<NavItem>
<NavLink href="#">Key Stats</NavLink>
</NavItem>
</Nav>
</CardBody>
<Table responsive striped className="mb-0">
<thead>
<tr>
<th className="bt-0">Name</th>
<th className="bt-0 text-right">2013</th>
<th className="bt-0 text-right">2014</th>
<th className="bt-0 text-right">TTM</th>
</tr>
</thead>
<tbody>
<TrTableSummary />
</tbody>
</Table>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3">
<CardBody className="pb-1">
<CardTitle className="mb-0">
<h6>
Cheap Stock
</h6>
</CardTitle>
</CardBody>
<Table responsive striped className="mb-0">
<thead>
<tr>
<th className="bt-0"></th>
<th className="bt-0 text-right">Price</th>
<th className="bt-0 text-right">Score</th>
<th className="bt-0 text-right">Q</th>
<th className="bt-0 text-right">V</th>
<th className="bt-0 text-right">G</th>
</tr>
</thead>
<tbody>
<TrTableStock />
</tbody>
</Table>
</Card>
</Col>
<Col lg={ 6 }>
<Card className="mb-3">
<CardBody className="pb-1">
<CardTitle className="mb-0">
<h6>
Expensive Stock
</h6>
</CardTitle>
</CardBody>
<Table responsive striped className="mb-0">
<thead>
<tr>
<th className="bt-0"></th>
<th className="bt-0 text-right">Price</th>
<th className="bt-0 text-right">Score</th>
<th className="bt-0 text-right">Q</th>
<th className="bt-0 text-right">V</th>
<th className="bt-0 text-right">G</th>
</tr>
</thead>
<tbody>
<TrTableStock />
</tbody>
</Table>
</Card>
</Col>
</Row>
</Container>
);
export default setupPage({
pageTitle: 'Stock'
})(Stock);

View File

@@ -0,0 +1,3 @@
import Stock from './Stock';
export default Stock;

View File

@@ -0,0 +1,114 @@
import React from 'react';
import faker from 'faker/locale/en_US';
import {
Container,
Row,
Table,
Col
} from './../../../components';
import { HeaderMain } from "../../components/HeaderMain";
import {
CardSystem
} from "./components/CardSystem"
import {
TrSystem
} from "./components/trSystem"
const TrColors = [
{
fill: "primary-02",
stroke: "primary"
},
{
fill: "purple-02",
stroke: "purple"
},
{
fill: "success-02",
stroke: "success"
},
{
fill: "yellow-02",
stroke: "yellow"
}
]
const System = () => (
<Container>
<Row className="mb-5">
<Col lg={ 12 }>
<HeaderMain
title="System"
className="mb-4 mb-lg-5"
/>
</Col>
<Col lg={ 3 } md={ 6 }>
<CardSystem
title="Memory"
badgeColor="primary"
pieColor="primary"
/>
</Col>
<Col lg={ 3 } md={ 6 }>
<CardSystem
title="CPU"
unit="Mb"
badgeColor="purple"
pieColor="purple"
/>
</Col>
<Col lg={ 3 } md={ 6 }>
<CardSystem
title="Traffic"
unit="Kb"
badgeColor="success"
pieColor="success"
/>
</Col>
<Col lg={ 3 } md={ 6 }>
<CardSystem
title="Disk I/O"
unit="Kb"
pieColor="yellow"
/>
</Col>
<Col lg={ 12 }>
<h6 className="mt-5">Processes</h6>
<p className="pb-3">
{ faker.lorem.paragraphs() }
</p>
<Table responsive>
<thead>
<tr>
<th>Name</th>
<th>Memory</th>
<th>CPU</th>
<th>Traffic</th>
<th>Disk I/O</th>
</tr>
</thead>
<tbody>
<TrSystem
colors={TrColors}
/>
<TrSystem
colors={TrColors}
/>
<TrSystem
colors={TrColors}
/>
<TrSystem
colors={TrColors}
/>
<TrSystem
colors={TrColors}
/>
</tbody>
</Table>
</Col>
</Row>
</Container>
);
export default System;

View File

@@ -0,0 +1,78 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Card,
CardBody,
Badge
} from './../../../../components';
import {
TinyDonutChart
} from "./TinyDonutChart"
import {
TinyBarChart
} from "./TinyBarChart"
import { randomArray } from './../../../../utilities';
const percents = [
"15",
"25",
"30",
"35",
"40",
"45",
"55",
"60",
"75",
"80",
"95"
];
const caret = [
"down",
"up"
];
const CardSystem = (props) => (
<Card className="mb-3 mb-lg-0">
<CardBody className="pb-0">
<div className="d-flex">
<span>
<Badge pill className="mb-3" color={ props.badgeColor } >
<i className={` fa fa-fw fa-caret-${ randomArray(caret) }`} />
{ randomArray(percents) }%
</Badge>
<h6 className="mb-0">
{ props.title }
</h6>
<h2 className="mb-3">
{ randomArray(percents) } <small>{ props.unit }</small>
</h2>
</span>
<span className="text-right ml-auto">
<TinyDonutChart
pieColor={props.pieColor}
/>
</span>
</div>
<TinyBarChart />
</CardBody>
</Card>
);
CardSystem.propTypes = {
title: PropTypes.node,
badgeColor: PropTypes.string,
unit: PropTypes.node,
pieColor: PropTypes.string
};
CardSystem.defaultProps = {
title: "Waiting...",
badgeColor: "secondary",
unit: "%",
pieColor: "500"
};
export { CardSystem };

View File

@@ -0,0 +1,32 @@
import React from 'react';
import PropTypes from 'prop-types';
import _ from 'lodash';
import {
ResponsiveContainer,
AreaChart,
Area
} from './../../../../components/recharts';
import colors from './../../../../colors';
const TinyAreaChart = (props) => {
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
return (
<ResponsiveContainer width='100%' minWidth='150px' height={ 40 }>
<AreaChart data={data}>
<Area dataKey='pv' stroke={ colors[ props.strokeColor ] } fill={ colors[ props.fillColor ] } />
</AreaChart>
</ResponsiveContainer>
)
};
TinyAreaChart.propTypes = {
strokeColor: PropTypes.string,
fillColor: PropTypes.string
};
TinyAreaChart.defaultProps = {
strokeColor: "600",
fillColor: "200",
};
export { TinyAreaChart };

View File

@@ -0,0 +1,31 @@
import React from 'react';
import PropTypes from 'prop-types';
import _ from 'lodash';
import {
ResponsiveContainer,
BarChart,
Bar
} from './../../../../components/recharts';
import colors from './../../../../colors';
const TinyBarChart = (props) => {
const data = _.times(40, () => ({ pv: 20+Math.random() * 100 }));
return (
<ResponsiveContainer width='100%' height={ 80 }>
<BarChart data={data} margin={{ top: 0, bottom: 0, right: 0, left: 0 }}>
<Bar dataKey='pv' fill={ colors[ props.barColor ] } />
</BarChart>
</ResponsiveContainer>
)
};
TinyBarChart.propTypes = {
barColor: PropTypes.string
};
TinyBarChart.defaultProps = {
barColor: "200"
};
export { TinyBarChart };

View File

@@ -0,0 +1,43 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
PieChart,
Pie,
Cell
} from './../../../../components/recharts';
import colors from './../../../../colors';
const TinyDonutChart = (props) => {
const data = [
{name: 'Group A', value: 40+Math.random()*100},
{name: 'Group B', value: Math.random()*100}
];
return (
<PieChart width={ 80 } height={ 80 }>
<Pie
data={data}
dataKey="value"
stroke={ colors[ props.strokeColor ] }
innerRadius={ 28 }
outerRadius={ 35 }
fill={ colors[ props.pieBg ] }
>
<Cell fill={ colors[ props.pieColor ] } />
</Pie>
</PieChart>
)
};
TinyDonutChart.propTypes = {
pieColor: PropTypes.string,
strokeColor: PropTypes.string,
pieBg: PropTypes.string
};
TinyDonutChart.defaultProps = {
pieColor: "primary",
strokeColor: "white",
pieBg: "200"
};
export { TinyDonutChart };

View File

@@ -0,0 +1,132 @@
import React from 'react';
import PropTypes from 'prop-types';
import _ from 'lodash';
import {
Progress,
Badge
} from './../../../../components';
import {
TinyAreaChart
} from "./TinyAreaChart"
import { randomArray } from './../../../../utilities';
const percents = [
"15",
"25",
"30",
"35",
"40",
"45",
"55",
"60",
"75",
"80",
"95"
];
const versions = [
"1.10",
"1.34",
"2.35",
"0.23",
"2.90",
"9.05"
];
const name = [
"Apache",
"Postfix",
"Ruby R1",
"MySQL",
"Ruby R2"
];
const gbLeft = [
"2,234",
"6,738",
"982",
"9,001",
"1,329"
];
const tdValue = [
"783",
"45",
"4",
"190",
"65"
];
const tdUnits = [
"",
"Mb",
"%",
"Kb/s"
];
const TrSystem = (props) => (
<tr>
<td style={{ width: '20%' }}>
<span className="d-flex mb-2">
<h6 className="mb-0 mr-5">
{ randomArray(name) }
</h6>
<Badge pill className="ml-auto align-self-center">
v. { randomArray(versions) }
</Badge>
</span>
<Progress value={ randomArray(percents) } style={{height: "4px"}} className="mb-2" />
<span className="d-flex">
<span className="text-inverse">
{ randomArray(percents) }%
</span>
<span className="ml-auto text-right">
{ randomArray(gbLeft) } GB Left
</span>
</span>
</td>
{
_.map(props.colors, (color,index)=>(
<td style={{ width: '20%' }} key={index}>
<h6 className="mb-0">
{ randomArray(tdValue) } {tdUnits[index]}
</h6>
<TinyAreaChart
strokeColor={color.stroke}
fillColor={color.fill}
/>
</td>
))
}
</tr>
);
TrSystem.propTypes = {
title: PropTypes.node,
colors: PropTypes.array
};
TrSystem.defaultProps = {
colors: [
{
fill: "400",
stroke: "primary"
},
{
fill: "yellow",
stroke: "400"
},
{
fill: "purple",
stroke: "info"
},
{
fill: "success",
stroke: "500"
}
]
};
export { TrSystem };

View File

@@ -0,0 +1,3 @@
import System from './System';
export default System;

View File

@@ -0,0 +1,31 @@
import React from 'react';
import _ from 'lodash';
import {
ResponsiveContainer,
LineChart,
Line,
Dot
} from './../../../components/recharts';
import colors from './../../../colors';
const data = _.times(20, () => ({ pv: Math.random() * 100 }));
// eslint-disable-next-line react/prop-types
const generateDot = ({stroke, ...other}) => (
<Dot
{ ...other }
fill={ stroke }
stroke={ colors['white'] }
/>
);
const TinyLineChart = () => (
<ResponsiveContainer width='100%' height={ 40 }>
<LineChart data={data}>
<Line dataKey='pv' stroke={ colors['primary-07'] } strokeWidth={2} activeDot={{r: 5}} dot={generateDot} />
</LineChart>
</ResponsiveContainer>
);
export { TinyLineChart };

View File

@@ -0,0 +1,154 @@
import React from 'react';
import DatePicker, { setDefaultLocale } from 'react-datepicker';
import moment from 'moment';
import {
Container,
Row,
Card,
Col,
CardBody
} from './../../../components';
import { Example, ButtonInput, AddonInput } from './components';
import { HeaderMain } from "../../components/HeaderMain";
setDefaultLocale('en');
export class DatePickerExamples extends React.Component {
state = {
startDate: moment().toDate(),
endDate: moment().add(5, 'days').toDate()
}
render() {
return (
<Container>
<HeaderMain
title="Date Picker"
className="mb-5 mt-4"
/>
<p className="mb-4">
Youll need to install React, PropTypes, and Moment.js separately since those dependencies
arent included in the package. Below is a simple example of how to use the Datepicker in a React view.
You will also need to require the CSS file from this package (or provide your own).
The example below shows how to include the CSS from this package if your build system supports
requiring CSS files (Webpack is one that does).
</p>
<Row>
<Col lg={ 4 }>
{ /* START Card */}
<Card className="mb-3">
<CardBody>
<Example
title="Default"
no="1.01"
exampleInput={(
<DatePicker
customInput={ <ButtonInput /> }
selected={this.state.startDate}
onChange={this._handleChangeStart}
/>
)}
>
{
'<DatePicker\n' +
' selected={this.state.startDate}\n' +
' onChange={this._handleChange}\n' +
'/>'
}
</Example>
</CardBody>
</Card>
{ /* END Card */}
{ /* START Card */}
<Card className="mb-3">
<CardBody>
<Example
title="Inline"
no="1.02"
exampleInput={(
<DatePicker
inline
selected={this.state.startDate}
onChange={this._handleChangeStart}
/>
)}
>
{
'<DatePicker\n' +
' inline\n' +
' selected={this.state.startDate}\n' +
' onChange={this._handleChange}\n' +
'/>'
}
</Example>
</CardBody>
</Card>
{ /* END Card */}
</Col>
<Col lg={ 8 }>
{ /* START Card */}
<Card>
<CardBody>
<Example
title="Range"
no="1.03"
exampleInput={(
<div className="d-flex">
<DatePicker
customInput={ <AddonInput /> }
selected={this.state.startDate}
selectsStart
startDate={this.state.startDate}
endDate={this.state.endDate}
onChange={this._handleChangeStart}
/>
<DatePicker
className="ml-2"
customInput={ <AddonInput /> }
selected={this.state.endDate}
selectsEnd
startDate={this.state.startDate}
endDate={this.state.endDate}
onChange={this._handleChangeEnd}
/>
</div>
)}
>
{
'<DatePicker\n' +
' selected={this.state.startDate}\n' +
' selectsStart\n' +
' startDate={this.state.startDate}\n' +
' endDate={this.state.endDate}\n' +
' onChange={this.handleChangeStart}\n' +
'/>\n' +
'\n' +
'<DatePicker\n' +
' selected={this.state.endDate}\n' +
' selectsEnd\n' +
' startDate={this.state.startDate}\n' +
' endDate={this.state.endDate}\n' +
' onChange={this.handleChangeEnd}\n' +
'/>\n'
}
</Example>
</CardBody>
</Card>
{ /* END Card */}
</Col>
</Row>
</Container>
)
}
_handleChangeStart = (startDate) => (
this.setState({ startDate })
)
_handleChangeEnd = (endDate) => (
this.setState({ endDate })
)
}

View File

@@ -0,0 +1,31 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
InputGroup,
InputGroupAddon,
Input
} from './../../../../components';
// eslint-disable-next-line react/display-name
const AddonInputFR = React.forwardRef((props, ref) => (
<InputGroup className={props.className}>
<InputGroupAddon addonType="prepend">
<i className="fa fa-calendar-o"></i>
</InputGroupAddon>
<Input
onClick={ props.onClick }
onChange={ props.onChange }
value={ props.value }
ref={ ref }
/>
</InputGroup>
));
AddonInputFR.propTypes = {
onClick: PropTypes.func,
onChange: PropTypes.func,
value: PropTypes.string,
className: PropTypes.string
}
export { AddonInputFR as AddonInput };

View File

@@ -0,0 +1,23 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Button
} from './../../../../components';
// eslint-disable-next-line react/display-name
const ButtonInputFR = React.forwardRef((props, ref) => (
<Button outline
onClick={props.onClick}
ref={ref}
>
<i className="fa fa-fw fa-calendar-o mr-1" />
{ props.value }
</Button>
));
ButtonInputFR.propTypes = {
onClick: PropTypes.func,
value: PropTypes.string
}
export { ButtonInputFR as ButtonInput };

View File

@@ -0,0 +1,50 @@
import React from 'react';
import PropTypes from 'prop-types';
import {
Row,
Col,
FormGroup,
Label
} from './../../../../components';
export const Example = ({ title, exampleInput, children, no }) => (
<Row>
<Col sm={ 12 }>
<h6>
{ title }
<span className="small ml-1 text-muted">
#{ no }
</span>
</h6>
</Col>
<Col md={ 12 }>
<FormGroup>
<Label>
Example
</Label>
<div>
{ exampleInput }
</div>
</FormGroup>
</Col>
<Col md={ 12 }>
<FormGroup>
<Label>
Code
</Label>
<pre>
<code>
{ children }
</code>
</pre>
</FormGroup>
</Col>
</Row>
);
Example.propTypes = {
exampleInput: PropTypes.node.isRequired,
children: PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
no: PropTypes.node.isRequired
}

View File

@@ -0,0 +1,3 @@
export * from './Example';
export * from './ButtonInput';
export * from './AddonInput';

View File

@@ -0,0 +1,3 @@
import { DatePickerExamples } from './DatePickerExamples';
export default DatePickerExamples;

View File

@@ -0,0 +1,134 @@
import React from 'react';
import classNames from 'classnames';
import FileDrop from 'react-dropzone';
import _ from 'lodash';
import {
Container,
Divider,
Badge,
Button,
ButtonGroup
} from './../../../components';
import {
FilesGrid,
FilesList
} from './components';
import { HeaderMain } from "../../components/HeaderMain";
export class Dropzone extends React.Component {
state = {
isOver: false,
files: [],
listStyle: 'grid'
}
render() {
const { isOver, files, listStyle } = this.state;
const dropzoneClass = classNames({
'dropzone--active': isOver
}, 'dropzone');
return (
<Container>
<HeaderMain
title="Dropzone"
className="mb-5 mt-4"
/>
{ /* DropZone */ }
<div className="mb-4">
<p className="mb-3">
Simple HTML5-compliant drag&apos;n&apos;drop zone for files built with React.js.
</p>
<FileDrop
multiple
onDragEnter={() => { this.setState({isOver: true}) }}
onDragLeave={() => { this.setState({isOver: false}) }}
onDrop={this._filesDropped}
>
{
({ getRootProps, getInputProps }) => (
<div {...getRootProps()} className={dropzoneClass}>
<i className="fa fa-cloud-upload fa-fw fa-3x mb-3"></i>
<h5 className='mt-0'>
Upload Your files
</h5>
<p>
Drag a file here or <span className='text-primary'>browse</span> for a file to upload.
</p>
<p className="small">
JPG, GIF, PNG, MOV, and AVI. Please choose files under 2GB for upload. File sizes are 400x300px.
</p>
<input { ...getInputProps() } />
</div>
)
}
</FileDrop>
</div>
{ /* Files List */}
{
files.length > 0 && (
<div className="mt-2">
<div className="d-flex">
<Divider
position="left"
className="flex-shrink-1 flex-grow-1"
>
<div className="px-2">
Attachments
<Badge
className="ml-1 text-white"
pill
color="secondary"
>
{ files.length }
</Badge>
</div>
</Divider>
<ButtonGroup className="flex-grow-0 flex-shrink-0 pl-2">
<Button
active={ listStyle === 'list' }
onClick={() => {this.setState({listStyle: 'list'})}}
size="sm"
outline
>
<i className='fa fa-bars fa-fw'></i>
</Button>
<Button
active={ listStyle === 'grid' }
onClick={() => {this.setState({listStyle: 'grid'})}}
size="sm"
outline
>
<i className='fa fa-th-large fa-fw'></i>
</Button>
</ButtonGroup>
</div>
{
listStyle === 'grid' ?
<FilesGrid files={ files } onFileRemove={this._removeFile} /> :
<FilesList files={ files } onFileRemove={this._removeFile} />
}
</div>
)
}
</Container>
);
}
_filesDropped = (files) => {
this.setState({
files: [...this.state.files, ...files],
isOver: false
})
}
_removeFile = (file) => {
this.setState({
files: _.reject(this.state.files, file)
})
}
}

Some files were not shown because too many files have changed in this diff Show More