first commit

This commit is contained in:
CHIEFSOFT\ameye
2023-10-14 22:02:57 -04:00
commit 5f95d857d4
783 changed files with 112323 additions and 0 deletions
+3
View File
@@ -0,0 +1,3 @@
{
"extends": "next/core-web-vitals"
}
+36
View File
@@ -0,0 +1,36 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
# dependencies
/node_modules
/.pnp
.pnp.js
# testing
/coverage
# next.js
/.next/
/out/
# production
/build
# misc
.DS_Store
*.pem
# debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*
# local env files
.env*.local
# vercel
.vercel
# typescript
*.tsbuildinfo
next-env.d.ts
+8
View File
@@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
+6
View File
@@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
</profile>
</component>
+8
View File
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/CMS-Clent.iml" filepath="$PROJECT_DIR$/.idea/CMS-Clent.iml" />
</modules>
</component>
</project>
Generated
+19
View File
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>
+34
View File
@@ -0,0 +1,34 @@
This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
## Getting Started
First, run the development server:
```bash
npm run dev
# or
yarn dev
```
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
You can start editing the page by modifying `pages/index.js`. The page auto-updates as you edit the file.
[API routes](https://nextjs.org/docs/api-routes/introduction) can be accessed on [http://localhost:3000/api/hello](http://localhost:3000/api/hello). This endpoint can be edited in `pages/api/hello.js`.
The `pages/api` directory is mapped to `/api/*`. Files in this directory are treated as [API routes](https://nextjs.org/docs/api-routes/introduction) instead of React pages.
## Learn More
To learn more about Next.js, take a look at the following resources:
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
## Deploy on Vercel
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
@@ -0,0 +1,575 @@
import * as React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import IconButton from "@mui/material/IconButton";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
import Tooltip from "@mui/material/Tooltip";
import DeleteIcon from "@mui/icons-material/Delete";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import Checkbox from "@mui/material/Checkbox";
const label = { inputProps: { "aria-label": "Checkbox demo" } };
function CustomersDetail(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
CustomersDetail.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(
name,
userName,
image,
email,
rolls,
status,
badgeClass,
projects
) {
return {
name,
userName,
image,
email,
rolls,
status,
badgeClass,
projects,
};
}
const rows = [
createData(
"Evangelina Mcclain",
"@jstevenson5c",
"/images/user1.png",
"jordansteve@gmail.com",
"Agent",
"Active",
"successBadge",
"165"
),
createData(
"Candice Munoz",
"@candice3unoz",
"/images/user2.png",
"candicemunoz@gmail.com",
"Administrator",
"Active",
"successBadge",
"120"
),
createData(
"Mike Mcclain",
"@mike4mcclain",
"/images/user3.png",
"mikemcclain@gmail.com",
"Contributor",
"Active",
"successBadge",
"220"
),
createData(
"Bernard Langley",
"@bernardlangley",
"/images/user4.png",
"bernardlangley@gmail.com",
"Agent",
"Deactive",
"dangerBadge",
"122"
),
createData(
"Kristie Hall",
"@kristie7hall",
"/images/user5.png",
"kristiehall@gmail.com",
"Contributor",
"Active",
"successBadge",
"360"
),
createData(
"Bolton Obrien",
"@bolton4obrien",
"/images/user6.png",
"boltonobrien@gmail.com",
"Administrator",
"Active",
"successBadge",
"250"
),
createData(
"Dee Alvarado",
"@dee3alvarado",
"/images/user7.png",
"deealvarado@gmail.com",
"Agent",
"Active",
"successBadge",
"140"
),
createData(
"Cervantes Kramer",
"@cervantes4kramer",
"/images/user8.png",
"cervantes4kramer@gmail.com",
"Agent",
"Active",
"successBadge",
"345"
),
createData(
"Dejesus Michael",
"@dejesus1michael",
"/images/user9.png",
"dejesusmichael@gmail.com",
"Agent",
"Active",
"successBadge",
"323"
),
createData(
"Alissa Nelson",
"@alissa1nelson",
"/images/user10.png",
"alissa1nelson@gmail.com",
"Agent",
"Deactive",
"dangerBadge",
"451"
),
createData(
"Milton",
"@milton",
"/images/user11.png",
"milton@gmail.com",
"Agent",
"Active",
"successBadge",
"432"
),
createData(
"Claude",
"@claude",
"/images/user12.png",
"claude@gmail.com",
"Agent",
"Deactive",
"dangerBadge",
"543"
),
createData(
"Joshua",
"@joshua",
"/images/user13.png",
"joshua@gmail.com",
"Agent",
"Active",
"successBadge",
"543"
),
createData(
"Harvey",
"@harvey",
"/images/user14.png",
"harvey@gmail.com",
"Agent",
"Deactive",
"dangerBadge",
"432"
),
createData(
"Antonio",
"@antonio",
"/images/user15.png",
"antonio@gmail.com",
"Agent",
"Active",
"successBadge",
"765"
),
createData(
"Julian",
"@julian",
"/images/user16.png",
"julian@gmail.com",
"Agent",
"Active",
"successBadge",
"678"
),
createData(
"Harold",
"@harold",
"/images/user17.png",
"harold@gmail.com",
"Agent",
"Deactive",
"dangerBadge",
"165"
),
createData(
"Kingston",
"@kingston",
"/images/user18.png",
"kingston@info.com",
"Agent",
"Active",
"successBadge",
"165"
),
].sort((a, b) => (a.name < b.name ? -1 : 1));
export default function CustomersDetails() {
// Table
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(10);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 15px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Customers Details
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 900 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Email
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Rolls
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Status
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Projects
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Action
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.name}>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
paddingTop: "13px",
paddingBottom: "13px",
display: "flex",
alignItems: "center",
}}
>
<Checkbox {...label} size="small" />
<Box
sx={{
display: "flex",
alignItems: "center",
ml: "10px",
}}
>
<img
src={row.image}
alt="User"
width={40}
height={40}
className="borRadius100"
/>
<Box className="ml-10px">
<Typography
as="h4"
sx={{
fontWeight: "500",
fontSize: "13.5px",
}}
>
{row.name}
</Typography>
<Typography
sx={{
fontSize: "12px",
color: "#A9A9C8",
}}
>
{row.userName}
</Typography>
</Box>
</Box>
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
paddingTop: "13px",
paddingBottom: "13px",
}}
>
{row.email}
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
paddingTop: "13px",
paddingBottom: "13px",
fontSize: "13px",
}}
>
{row.rolls}
</TableCell>
<TableCell
align="center"
sx={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "12px",
padding: "8px 10px",
}}
>
<span className={row.badgeClass}>{row.status}</span>
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
paddingTop: "13px",
paddingBottom: "13px",
fontSize: "13px",
}}
>
{row.projects}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={5}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={8}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={CustomersDetail}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
</>
);
}
+132
View File
@@ -0,0 +1,132 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
import { BarChart, Bar, XAxis, Tooltip, ResponsiveContainer } from "recharts";
const data = [
{
name: "Sat",
income: 24,
},
{
name: "Sun",
income: 13,
},
{
name: "Mon",
income: 98,
},
{
name: "Tue",
income: 39,
},
{
name: "Wed",
income: 48,
},
{
name: "Thu",
income: 38,
},
{
name: "Fri",
income: 43,
},
];
const NetIncome = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Grid
container
alignItems="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
<Grid item xs={12} md={12} lg={6}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "46px",
height: "54px",
lineHeight: "54px",
borderRadius: "8px",
fontSize: "25px",
background: "#FFFFFF",
boxShadow: "0px 4px 20px rgba(117, 127, 239, 0.15)",
color: "#757FEF",
textAlign: "center",
}}
className="mr-15px"
>
<i className="ri-bar-chart-fill"></i>
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: 12 }}>
Net Income
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 20, fontWeight: 700, mt: "5px" }}
>
$438.5k
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<ResponsiveContainer width="100%" aspect={2.0 / 0.9}>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 5,
right: 10,
left: 10,
bottom: 5,
}}
barSize={8}
>
<XAxis
dataKey="name"
scale="point"
fontSize={9}
stroke="#A9A9C8"
/>
<Tooltip wrapperStyle={{ fontSize: "14px" }} />
<Bar
dataKey="income"
fill="#757FEF"
background={{ fill: "#DBDFF1" }}
unit="k"
/>
</BarChart>
</ResponsiveContainer>
</Grid>
</Grid>
</Card>
</>
);
};
export default NetIncome;
@@ -0,0 +1,132 @@
import React from "react";
import {
BarChart,
Bar,
XAxis,
Tooltip,
ResponsiveContainer,
} from "recharts";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
const data = [
{
name: "Sat",
visited: 2400,
},
{
name: "Sun",
visited: 1398,
},
{
name: "Mon",
visited: 9800,
},
{
name: "Tue",
visited: 3908,
},
{
name: "Wed",
visited: 4800,
},
{
name: "Thu",
visited: 3800,
},
{
name: "Fri",
visited: 4300,
},
];
const NewSessions = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Grid container alignItems="center" rowSpacing={1} columnSpacing={{ xs: 1, sm: 2, md: 2 }}>
<Grid item xs={12} md={12} lg={6}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "46px",
height: "54px",
lineHeight: "54px",
borderRadius: "8px",
fontSize: "25px",
background: "#FFFFFF",
boxShadow: "0px 4px 20px rgba(117, 127, 239, 0.15)",
color: "#757FEF",
textAlign: "center",
}}
className='mr-15px'
>
<i className="ri-time-line"></i>
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: 12 }}>
New Sessions
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 20, fontWeight: 700, mt: "5px" }}
>
1,500
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<ResponsiveContainer width="100%" aspect={2.0 / 0.9}>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 5,
right: 10,
left: 10,
bottom: 5,
}}
barSize={8}
>
<XAxis
dataKey="name"
scale="point"
fontSize={9}
stroke="#A9A9C8"
/>
<Tooltip wrapperStyle={{fontSize: "14px"}} />
<Bar
dataKey="visited"
fill="#F765A3"
background={{ fill: "#DBDFF1" }}
/>
</BarChart>
</ResponsiveContainer>
</Grid>
</Grid>
</Card>
</>
);
};
export default NewSessions;
@@ -0,0 +1,132 @@
import React from "react";
import {
BarChart,
Bar,
XAxis,
Tooltip,
ResponsiveContainer,
} from "recharts";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
const data = [
{
name: "Sat",
visited: 2400,
},
{
name: "Sun",
visited: 1398,
},
{
name: "Mon",
visited: 9800,
},
{
name: "Tue",
visited: 3908,
},
{
name: "Wed",
visited: 4800,
},
{
name: "Thu",
visited: 3800,
},
{
name: "Fri",
visited: 4300,
},
];
const VisitsByDay = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Grid container alignItems="center" rowSpacing={1} columnSpacing={{ xs: 1, sm: 2, md: 2 }}>
<Grid item xs={12} md={12} lg={6}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "46px",
height: "54px",
lineHeight: "54px",
borderRadius: "8px",
fontSize: "25px",
background: "#FFFFFF",
boxShadow: "0px 4px 20px rgba(117, 127, 239, 0.15)",
color: "#757FEF",
textAlign: "center",
}}
className='mr-15px'
>
<i className="ri-pie-chart-line"></i>
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: 12 }}>
Visits By Day
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 20, fontWeight: 700, mt: "5px" }}
>
1,802
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<ResponsiveContainer width="100%" aspect={2.0 / 0.9}>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 5,
right: 10,
left: 10,
bottom: 5,
}}
barSize={8}
>
<XAxis
dataKey="name"
scale="point"
fontSize={9}
stroke="#A9A9C8"
/>
<Tooltip wrapperStyle={{fontSize: "14px"}} />
<Bar
dataKey="visited"
fill="#FFBA69"
background={{ fill: "#DBDFF1" }}
/>
</BarChart>
</ResponsiveContainer>
</Grid>
</Grid>
</Card>
</>
);
};
export default VisitsByDay;
@@ -0,0 +1,36 @@
.totalRevenueList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
}
.totalRevenueList:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.totalRevenueList p {
font-size: 13px;
margin: 0;
}
.totalRevenueList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.totalRevenueList .rightContent h5 {
margin: 0 15px 0 0;
font-size: 12px;
color: #5B5B98;
}
.totalRevenueList .rightContent i {
position: relative;
top: 2px;
}
/* For dark mode */
[class="dark"] .totalRevenueList {
border-bottom: 1px solid var(--borderColor);
}
@@ -0,0 +1,59 @@
import React, { Component } from 'react';
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
class RevenueChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [65],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "#ECEFF7",
},
dataLabels: {
name: {
show: true,
fontSize: '12px',
color: '#5B5B98',
},
value: {
offsetY: 3,
color: "#00B69B",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
labels: ['Revenue'],
fill: {
opacity: 1,
colors: ["#757FEF"],
},
},
};
}
render() {
return (
<>
<Chart
options={this.state.options}
series={this.state.series}
height="175"
type="radialBar"
/>
</>
);
}
}
export default RevenueChart;
@@ -0,0 +1,193 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import RevenueChart from "./RevenueChart";
import styles from "@/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css";
const AvarageReport = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Avarage Report
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Last 15 Days</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
</Menu>
</Box>
{/* RevenueChart */}
<RevenueChart />
<>
<div className={styles.totalRevenueList}>
<p>Avg. Session</p>
<div className={styles.rightContent}>
<h5>972</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 49%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Conversion Rate</p>
<div className={styles.rightContent}>
<h5>102</h5>
<p>
<i className="ri-arrow-right-down-line dangerColor"></i> 18%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Avg. Duration</p>
<div className={styles.rightContent}>
<h5>3m</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 42%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Weekly Earning</p>
<div className={styles.rightContent}>
<h5>$972</h5>
<p>
<i className="ri-arrow-right-down-line dangerColor"></i> 28%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Monthly Revenue</p>
<div className={styles.rightContent}>
<h5>50k</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 70%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Order Rate</p>
<div className={styles.rightContent}>
<h5>1026</h5>
<p>
<i className="ri-arrow-right-down-line dangerColor"></i> 18%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Avg. Visitors</p>
<div className={styles.rightContent}>
<h5>1.5k</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 42%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Avg. Sales</p>
<div className={styles.rightContent}>
<h5>1250k</h5>
<p>
<i className="ri-arrow-right-down-line dangerColor"></i> 42%
</p>
</div>
</div>
</>
</Card>
</>
);
};
export default AvarageReport;
@@ -0,0 +1,621 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
function BrowserUsedAndTrafficReport(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
BrowserUsedAndTrafficReport.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(
channel,
sessions,
sessionsProgress,
prevPeriod,
prevPeriodProgress,
transactions,
transactionsProgress,
conRate,
bounceRate,
change,
iconName,
badgeClass
) {
return {
channel,
sessions,
sessionsProgress,
prevPeriod,
prevPeriodProgress,
transactions,
transactionsProgress,
conRate,
bounceRate,
change,
iconName,
badgeClass,
};
}
const rows = [
createData(
"Organic Search",
"10853",
"(52%)",
"566",
"(52%)",
"566",
"(52%)",
"3.2%",
"57.8%",
"52.80%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Direct",
"10844",
"(50%)",
"666",
"(50%)",
"766",
"(50%)",
"2.2%",
"20.8%",
"55.99%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Referal",
"20844",
"(60%)",
"754",
"(60%)",
"899",
"(60%)",
"1.2%",
"60.8%",
"60.99%",
"ri-arrow-down-s-fill",
"dangerBadge"
),
createData(
"Email",
"15844",
"(50%)",
"764",
"(50%)",
"755",
"(50%)",
"4.2%",
"30.8%",
"50.99%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Social",
"12844",
"(50%)",
"764",
"(50%)",
"755",
"(50%)",
"5.2%",
"35.8%",
"50.99%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Chrome",
"5853",
"(52%)",
"466",
"(52%)",
"566",
"(52%)",
"6.2%",
"40.8%",
"52.80%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Safari",
"2844",
"(50%)",
"766",
"(50%)",
"666",
"(50%)",
"3.2%",
"55.8%",
"55.00%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Edge",
"1844",
"(60%)",
"454",
"(60%)",
"399",
"(60%)",
"7.2%",
"10.8%",
"60.00%",
"ri-arrow-down-s-fill",
"dangerBadge"
),
createData(
"Firefox",
"15844",
"(55%)",
"564",
"(55%)",
"455",
"(55%)",
"4.2%",
"20.8%",
"55.00%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Opera",
"11844",
"(50%)",
"864",
"(50%)",
"655",
"(50%)",
"3.2%",
"32.8%",
"50.00%",
"ri-arrow-up-s-fill",
"successBadge"
),
].sort((a, b) => (a.channel < b.channel ? -1 : 1));
const BrowserUsedAndTrafficReports = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
// Table
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(7);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 15px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
paddingBottom: "15px",
}}
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Browser Used & Traffic Reports
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Last 15 Days</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
</Menu>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Channel
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Sessions
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Prev.Period
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Transactions
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Con.Rate
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Bounce Rate
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
% Change
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.channel}>
<TableCell
style={{
fontWeight: "500",
fontSize: "13px",
borderBottom: "1px solid #F7FAFF",
color: "#757FEF",
}}
>
{row.channel}
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.sessions}{" "}
<Typography
as="span"
sx={{ color: "#A9A9C8", fontSize: "13px" }}
>
{row.sessionsProgress}
</Typography>
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.prevPeriod}{" "}
<Typography
as="span"
sx={{ color: "#A9A9C8", fontSize: "13px" }}
>
{row.prevPeriodProgress}
</Typography>
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.transactions}{" "}
<Typography
as="span"
sx={{ color: "#A9A9C8", fontSize: "13px" }}
>
{row.transactionsProgress}
</Typography>
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.conRate}
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.bounceRate}
</TableCell>
<TableCell
align="center"
style={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
}}
>
<span className={row.badgeClass}>
{row.change}{" "}
<i
className={row.iconName}
style={{
fontSize: "17px",
position: "relative",
top: "4px",
lineHeight: "1",
fontWight: "bold",
}}
></i>
</span>
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={5}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={8}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={BrowserUsedAndTrafficReport}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
</>
);
};
export default BrowserUsedAndTrafficReports;
+47
View File
@@ -0,0 +1,47 @@
const events = [
{ title: "All Day Event", start: getDate("YEAR-MONTH-01") },
{
title: "Rendezvous",
start: getDate("YEAR-MONTH-07"),
end: getDate("YEAR-MONTH-10")
},
{
groupId: "999",
title: "Repeating Event",
start: getDate("YEAR-MONTH-09T16:00:00+00:00")
},
{
groupId: "999",
title: "Repeating Event",
start: getDate("YEAR-MONTH-16T16:00:00+00:00")
},
{
title: "Dontiste",
start: "YEAR-MONTH-17",
end: getDate("YEAR-MONTH-19")
},
{
title: "Consultation",
start: getDate("YEAR-MONTH-18T10:30:00+00:00"),
end: getDate("YEAR-MONTH-18T12:30:00+00:00")
},
{ title: "Visit", start: getDate("YEAR-MONTH-18T12:00:00+00:00") },
{ title: "maladie", start: getDate("YEAR-MONTH-19T07:00:00+00:00") },
{ title: "Meeting", start: getDate("YEAR-MONTH-18T14:30:00+00:00") },
{ title: "controlle", start: getDate("YEAR-MONTH-18T17:30:00+00:00") },
{ title: "finish", start: getDate("YEAR-MONTH-18T20:00:00+00:00") }
];
function getDate(dayString) {
const today = new Date();
const year = today.getFullYear().toString();
let month = (today.getMonth() + 1).toString();
if (month.length === 1) {
month = "0" + month;
}
return dayString.replace("YEAR", year).replace("MONTH", month);
}
export default events;
+599
View File
@@ -0,0 +1,599 @@
import Typography from "@mui/material/Typography";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import VideocamIcon from "@mui/icons-material/Videocam";
import CallIcon from "@mui/icons-material/Call";
import MoreVertIcon from "@mui/icons-material/MoreVert";
import List from "@mui/material/List";
import ListItem from "@mui/material/ListItem";
import ListItemButton from "@mui/material/ListItemButton";
import ListItemText from "@mui/material/ListItemText";
import ReplyIcon from "@mui/icons-material/Reply";
import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import SendIcon from "@mui/icons-material/Send";
const ChatBox = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Box
sx={{
border: "1px solid #F5F4F6",
borderRadius: "14px",
}}
className="for-dark-chat-box"
>
{/* Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #F5F4F6",
borderRadius: "10px",
p: "15px",
}}
className="for-dark-chat-header"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<img
src="/images/user1.png"
alt="user"
width="40px"
height="40px"
className="borRadius100"
/>
<Box className="ml-1">
<Typography as="h5" fontWeight="500">
Laurent Perrier
</Typography>
<Typography fontSize="12px" position="relative">
<span className="active-status2 successBgColor"></span> Active
Now
</Typography>
</Box>
</Box>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className="ml-5px for-dark-button"
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className="ml-5px for-dark-button"
>
<CallIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className="ml-5px for-dark-button"
>
<MoreVertIcon />
</IconButton>
</Box>
</Box>
{/* Chat List */}
<div className="chat-list-box">
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user1.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pharetra ligula non varius curabitur etiam malesuada. Congue
eget luctus aliquet consectetur.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user2.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user1.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem
ipsum dolor sit
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user2.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user1.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque laudantium, totam rem aperiam, eaque
ipsa quae ab illo inventore veritatis et quasi architecto
beatae vitae dicta sunt explicabo.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
</div>
{/* Footer */}
<Box
sx={{
background: "#F5F6FA",
borderRadius: "15px",
display: "flex",
alignItems: "center",
p: "15px",
position: "relative",
}}
className="dark-BG-101010"
>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<CallIcon />
</IconButton>
</Box>
<Box
component="form"
noValidate
onSubmit={handleSubmit}
sx={{
flex: "auto",
}}
className="pr-60px"
>
<TextField
fullWidth
id="typeSomething"
label="Type Something..."
name="typeSomething"
autoComplete="typeSomething"
InputProps={{
style: {
borderRadius: 100,
background: "#fff",
},
}}
/>
<Button
type="submit"
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "100%",
fontWeight: "500",
fontSize: "16px",
padding: "0",
minWidth: "44px",
minHeight: "44px",
position: "absolute",
top: "22px",
color: "#fff !important"
}}
className="right-20px"
>
<SendIcon />
</Button>
</Box>
</Box>
</Box>
</>
);
};
export default ChatBox;
+599
View File
@@ -0,0 +1,599 @@
import Typography from "@mui/material/Typography";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import VideocamIcon from "@mui/icons-material/Videocam";
import CallIcon from "@mui/icons-material/Call";
import MoreVertIcon from "@mui/icons-material/MoreVert";
import List from "@mui/material/List";
import ListItem from "@mui/material/ListItem";
import ListItemButton from "@mui/material/ListItemButton";
import ListItemText from "@mui/material/ListItemText";
import ReplyIcon from "@mui/icons-material/Reply";
import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import SendIcon from "@mui/icons-material/Send";
const ChatBoxThree = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Box
sx={{
border: "1px solid #F5F4F6",
borderRadius: "14px",
}}
className="for-dark-chat-box"
>
{/* Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #F5F4F6",
borderRadius: "10px",
p: "15px",
}}
className="for-dark-chat-header"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<img
src="/images/user3.png"
alt="user"
width="40px"
height="40px"
className="borRadius100"
/>
<Box className="ml-1">
<Typography as="h5" fontWeight="500">
Bernard Langley
</Typography>
<Typography fontSize="12px" position="relative">
<span className="active-status2 successBgColor"></span> Active
Now
</Typography>
</Box>
</Box>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<CallIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<MoreVertIcon />
</IconButton>
</Box>
</Box>
{/* Chat List */}
<div className="chat-list-box">
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user3.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pharetra ligula non varius curabitur etiam malesuada. Congue
eget luctus aliquet consectetur.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user5.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user3.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem
ipsum dolor sit
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user5.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user3.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque laudantium, totam rem aperiam, eaque
ipsa quae ab illo inventore veritatis et quasi architecto
beatae vitae dicta sunt explicabo.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
</div>
{/* Footer */}
<Box
sx={{
background: "#F5F6FA",
borderRadius: "15px",
display: "flex",
alignItems: "center",
p: "15px",
position: "relative",
}}
className="dark-BG-101010"
>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<CallIcon />
</IconButton>
</Box>
<Box
component="form"
noValidate
onSubmit={handleSubmit}
sx={{
flex: "auto",
}}
className="pr-60px"
>
<TextField
fullWidth
id="typeSomething"
label="Type Something..."
name="typeSomething"
autoComplete="typeSomething"
InputProps={{
style: {
borderRadius: 100,
background: "#fff",
},
}}
/>
<Button
type="submit"
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "100%",
fontWeight: "500",
fontSize: "16px",
padding: "0",
minWidth: "44px",
minHeight: "44px",
position: "absolute",
top: "22px",
color: "#fff !important"
}}
className="right-20px"
>
<SendIcon />
</Button>
</Box>
</Box>
</Box>
</>
);
};
export default ChatBoxThree;
+599
View File
@@ -0,0 +1,599 @@
import Typography from "@mui/material/Typography";
import Box from "@mui/material/Box";
import IconButton from "@mui/material/IconButton";
import VideocamIcon from "@mui/icons-material/Videocam";
import CallIcon from "@mui/icons-material/Call";
import MoreVertIcon from "@mui/icons-material/MoreVert";
import List from "@mui/material/List";
import ListItem from "@mui/material/ListItem";
import ListItemButton from "@mui/material/ListItemButton";
import ListItemText from "@mui/material/ListItemText";
import ReplyIcon from "@mui/icons-material/Reply";
import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import SendIcon from "@mui/icons-material/Send";
const ChatBoxTwo = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Box
sx={{
border: "1px solid #F5F4F6",
borderRadius: "14px",
}}
className="for-dark-chat-box"
>
{/* Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #F5F4F6",
borderRadius: "10px",
p: "15px",
}}
className="for-dark-chat-header"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<img
src="/images/user2.png"
alt="user"
width="40px"
height="40px"
className="borRadius100"
/>
<Box className="ml-1">
<Typography as="h5" fontWeight="500">
Nunez Faulkner
</Typography>
<Typography fontSize="12px" position="relative">
<span className="active-status2 successBgColor"></span> Active
Now
</Typography>
</Box>
</Box>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<CallIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='ml-5px for-dark-button'
>
<MoreVertIcon />
</IconButton>
</Box>
</Box>
{/* Chat List */}
<div className="chat-list-box">
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user2.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Pharetra ligula non varius curabitur etiam malesuada. Congue
eget luctus aliquet consectetur.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user4.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user2.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet,
consectetur adipiscing elit.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
{/* Right Chat */}
<Box
sx={{
display: "flex",
justifyContent: "end",
maxWidth: "730px",
mb: "20px",
}}
className="ml-auto"
>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
{/* Replay Dropdown */}
<Box>
<div className="left-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
<Box className="mr-1">
<Typography
sx={{
background: "#757FEF",
color: "#fff !important",
borderRadius: "15px 0 15px 15px",
p: "14px 20px",
mb: "10px",
}}
>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem
ipsum dolor sit
</Typography>
<Typography fontSize="12px" textAlign="end">
19:04
</Typography>
</Box>
</Box>
<img
src="/images/user4.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
</Box>
{/* Left Chat */}
<Box
sx={{
display: "flex",
maxWidth: "730px",
mb: "20px",
}}
>
<img
src="/images/user2.png"
alt="user"
width="35px"
height="35px"
className="borRadius100"
/>
<Box
sx={{
display: "flex",
}}
className="ml-1"
>
<Box>
<Typography
sx={{
background: "#F5F6FA",
borderRadius: "0px 15px 15px 15px",
p: "14px 20px",
mb: "10px",
}}
className="dark-BG-101010"
>
Sed ut perspiciatis unde omnis iste natus error sit voluptatem
accusantium doloremque laudantium, totam rem aperiam, eaque
ipsa quae ab illo inventore veritatis et quasi architecto
beatae vitae dicta sunt explicabo.
</Typography>
<Typography fontSize="12px">19:04</Typography>
</Box>
{/* Replay Dropdown */}
<Box className="ml-1">
<div className="right-replay-box">
<IconButton size="small">
<MoreVertIcon fontSize="small" />
</IconButton>
<div className="hover-caption">
<List sx={{ display: "inline" }}>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<ReplyIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Reply"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
<ListItem disablePadding>
<ListItemButton sx={{ padding: "1px 15px" }}>
<DeleteOutlineIcon
fontSize="small"
sx={{ mt: "-4px" }}
className="mr-5px"
/>
<ListItemText
primary="Delete"
primaryTypographyProps={{ fontSize: "12px" }}
/>
</ListItemButton>
</ListItem>
</List>
</div>
</div>
</Box>
</Box>
</Box>
</div>
{/* Footer */}
<Box
sx={{
background: "#F5F6FA",
borderRadius: "15px",
display: "flex",
alignItems: "center",
p: "15px",
position: "relative",
}}
className="dark-BG-101010"
>
<Box>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<VideocamIcon />
</IconButton>
<IconButton
size="small"
sx={{ background: "#F2F6F8" }}
className='mr-5px for-dark-button'
>
<CallIcon />
</IconButton>
</Box>
<Box
component="form"
noValidate
onSubmit={handleSubmit}
sx={{
flex: "auto",
}}
className="pr-60px"
>
<TextField
fullWidth
id="typeSomething"
label="Type Something..."
name="typeSomething"
autoComplete="typeSomething"
InputProps={{
style: {
borderRadius: 100,
background: "#fff",
},
}}
/>
<Button
type="submit"
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "100%",
fontWeight: "500",
fontSize: "16px",
padding: "0",
minWidth: "44px",
minHeight: "44px",
position: "absolute",
top: "22px",
color: "#fff !important"
}}
className="right-20px"
>
<SendIcon />
</Button>
</Box>
</Box>
</Box>
</>
);
};
export default ChatBoxTwo;
+218
View File
@@ -0,0 +1,218 @@
import React from "react";
import Grid from "@mui/material/Grid";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
const AssetsData = [
{
id: "1",
icon: "/images/folder.png",
title: "Projects",
totalFiles: "387 Files",
filesSize: "4.5 GB",
},
{
id: "2",
icon: "/images/folder.png",
title: "Documents",
totalFiles: "1572 Files",
filesSize: "7.5 GB",
},
{
id: "3",
icon: "/images/folder.png",
title: "Media",
totalFiles: "1241 Files",
filesSize: "2.8 GB",
},
{
id: "4",
icon: "/images/folder.png",
title: "Applications",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
{
id: "5",
icon: "/images/folder.png",
title: "ET Template",
totalFiles: "60 Files",
filesSize: "8 GB",
},
{
id: "6",
icon: "/images/folder.png",
title: "React Template",
totalFiles: "120 Files",
filesSize: "6.5 GB",
},
{
id: "7",
icon: "/images/folder.png",
title: "Material UI",
totalFiles: "40 Files",
filesSize: "5.5 GB",
},
{
id: "8",
icon: "/images/folder.png",
title: "WP Themes",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
{
id: "9",
icon: "/images/folder.png",
title: "Personal Photos",
totalFiles: "2587 Files",
filesSize: "14 GB",
},
{
id: "10",
icon: "/images/folder.png",
title: "Mobile Apps",
totalFiles: "55 Files",
filesSize: "4.5 GB",
},
{
id: "11",
icon: "/images/folder.png",
title: "Important Files",
totalFiles: "200 Files",
filesSize: "6.5 GB",
},
{
id: "12",
icon: "/images/folder.png",
title: "Angular Template",
totalFiles: "340 Files",
filesSize: "7.5 GB",
},
];
const AllAssets = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
>
{AssetsData.map((asset) => (
<Grid item xs={12} sm={6} md={6} lg={6} xl={3} key={asset.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "15px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "end",
}}
>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(229,229,229,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-edit-2-line mr-5px"></i> Rename
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-download-cloud-line mr-5px"></i> Download
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-delete-bin-line mr-5px"></i> Remove
</MenuItem>
</Menu>
</Box>
<Box
sx={{
textAlign: "center",
padding: "30px 0",
}}
>
<img src={asset.icon} alt="folder" />
<Typography as="h3" fontWeight="500" fontSize="14px" mt="10px">
{asset.title}
</Typography>
</Box>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<Typography>{asset.totalFiles}</Typography>
<Typography>{asset.filesSize}</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default AllAssets;
+218
View File
@@ -0,0 +1,218 @@
import React from "react";
import Grid from "@mui/material/Grid";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
const ProjectsData = [
{
id: "1",
icon: "/images/folder.png",
title: "ET Template",
totalFiles: "60 Files",
filesSize: "8 GB",
},
{
id: "2",
icon: "/images/folder.png",
title: "React Template",
totalFiles: "120 Files",
filesSize: "6.5 GB",
},
{
id: "3",
icon: "/images/folder.png",
title: "Material UI",
totalFiles: "40 Files",
filesSize: "5.5 GB",
},
{
id: "4",
icon: "/images/folder.png",
title: "WP Themes",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
{
id: "5",
icon: "/images/folder.png",
title: "Personal Photos",
totalFiles: "2587 Files",
filesSize: "14 GB",
},
{
id: "6",
icon: "/images/folder.png",
title: "Mobile Apps",
totalFiles: "55 Files",
filesSize: "4.5 GB",
},
{
id: "7",
icon: "/images/folder.png",
title: "Important Files",
totalFiles: "200 Files",
filesSize: "6.5 GB",
},
{
id: "8",
icon: "/images/folder.png",
title: "Angular Template",
totalFiles: "340 Files",
filesSize: "7.5 GB",
},
{
id: "9",
icon: "/images/folder.png",
title: "Projects",
totalFiles: "387 Files",
filesSize: "4.5 GB",
},
{
id: "10",
icon: "/images/folder.png",
title: "Documents",
totalFiles: "1572 Files",
filesSize: "7.5 GB",
},
{
id: "11",
icon: "/images/folder.png",
title: "Media",
totalFiles: "1241 Files",
filesSize: "2.8 GB",
},
{
id: "12",
icon: "/images/folder.png",
title: "Applications",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
];
const AllProjects = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
>
{ProjectsData.map((project) => (
<Grid item xs={12} sm={6} md={6} lg={6} xl={3} key={project.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "15px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "end",
}}
>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(229,229,229,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-edit-2-line mr-5px"></i> Rename
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-download-cloud-line mr-5px"></i> Download
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-delete-bin-line mr-5px"></i> Remove
</MenuItem>
</Menu>
</Box>
<Box
sx={{
textAlign: "center",
padding: "30px 0",
}}
>
<img src={project.icon} alt="folder" />
<Typography as="h3" fontWeight="500" fontSize="14px" mt="10px">
{project.title}
</Typography>
</Box>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<Typography>{project.totalFiles}</Typography>
<Typography>{project.filesSize}</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default AllProjects;
@@ -0,0 +1,469 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import Backdrop from "@mui/material/Backdrop";
import Button from "@mui/material/Button";
import Fade from "@mui/material/Fade";
import Modal from "@mui/material/Modal";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
// Create Folder Modal Style
const style = {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%)",
maxWidth: 500,
width: "100%",
bgcolor: "background.paper",
boxShadow: 24,
borderRadius: "8px",
};
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/folder.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/folder.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/folder.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
createData(
"App Design",
"/images/folder.png",
"ET Agency",
"5 GB",
"Jan 08, 2022",
"15"
),
createData(
"Web Design & Development",
"/images/folder.png",
"ET Templates",
"13 GB",
"Jan 13, 2022",
"90"
),
createData(
"React Template",
"/images/folder.png",
"ET Company",
"100 GB",
"Dec 18, 2021",
"120"
),
createData(
"Material Template",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Angular Template",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const AllRecentFiles = () => {
// Create Folder Modal
const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
// Form
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 600,
}}
>
Recent Files
</Typography>
<Button
onClick={handleOpen}
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "600",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Create Folder
</Button>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "650px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="22px" />
<Typography
as="h5"
fontWeight="600"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Download" placement="top">
<IconButton
aria-label="download"
size="small"
color="success"
className="success"
>
<CloudDownloadIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
{/* Create Folder Modal */}
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box sx={style} className="dark-BG-101010">
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "25px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "600",
fontSize: "20px",
}}
>
Create Folder
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={1}>
<Grid item xs={12}>
<Typography
as="h5"
sx={{
fontWeight: "600",
fontSize: "14px",
mb: "12px",
}}
>
Folder Name
</Typography>
<TextField
autoComplete="given-name"
name="folderName"
required
fullWidth
id="folderName"
label="Folder Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "600",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{
position: "relative",
top: "-2px",
}}
className="mr-5px"
/>{" "}
Add Folder
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Fade>
</Modal>
</>
);
};
export default AllRecentFiles;
@@ -0,0 +1,362 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import IconButton from "@mui/material/IconButton";
import Backdrop from "@mui/material/Backdrop";
import Button from "@mui/material/Button";
import Fade from "@mui/material/Fade";
import Modal from "@mui/material/Modal";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
// Create Files Modal Style
const style = {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%)",
maxWidth: 500,
width: "100%",
bgcolor: "background.paper",
boxShadow: 24,
borderRadius: "8px",
};
const FilesData = [
{
id: "1",
icon: "/images/file1.png",
title: "sketch-design.zip",
},
{
id: "2",
icon: "/images/file2.png",
title: "Compile.png",
},
{
id: "3",
icon: "/images/file3.png",
title: "Integrations.pdf",
},
{
id: "4",
icon: "/images/file4.png",
title: "contact @32",
},
{
id: "5",
icon: "/images/file5.png",
title: "app-Design.doc",
},
{
id: "6",
icon: "/images/file6.png",
title: "image02.png",
},
{
id: "7",
icon: "/images/file7.png",
title: "Ubold-sketch.doc",
},
{
id: "8",
icon: "/images/file8.png",
title: "Annualreport.txt",
},
{
id: "9",
icon: "/images/file9.png",
title: "Wireframes.xl4",
},
{
id: "10",
icon: "/images/file10.png",
title: "contact @32.jpg",
},
{
id: "11",
icon: "/images/file1.png",
title: "sketch-design.zip",
},
{
id: "12",
icon: "/images/file2.png",
title: "Compile.png",
},
{
id: "13",
icon: "/images/file3.png",
title: "Integrations.pdf",
},
{
id: "14",
icon: "/images/file4.png",
title: "contact @32",
},
{
id: "15",
icon: "/images/file5.png",
title: "app-Design.doc",
},
{
id: "16",
icon: "/images/file6.png",
title: "image02.png",
},
{
id: "17",
icon: "/images/file7.png",
title: "Ubold-sketch.doc",
},
{
id: "18",
icon: "/images/file8.png",
title: "Annualreport.txt",
},
{
id: "19",
icon: "/images/file9.png",
title: "Wireframes.xl4",
},
{
id: "20",
icon: "/images/file10.png",
title: "contact @32.jpg",
},
{
id: "21",
icon: "/images/file5.png",
title: "app-Design.doc",
},
{
id: "22",
icon: "/images/file6.png",
title: "image02.png",
},
{
id: "23",
icon: "/images/file7.png",
title: "Ubold-sketch.doc",
},
{
id: "24",
icon: "/images/file8.png",
title: "Annualreport.txt",
},
];
const DocumentsFiles = () => {
// Create Files Modal
const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
// Form
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Documents
</Typography>
<Button
onClick={handleOpen}
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Create Files
</Button>
</Box>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
justifyContent="center"
>
{FilesData.map((file) => (
<Grid item xs={12} sm={6} md={6} lg={4} xl={2} key={file.id}>
<Box
sx={{
background: "#F3F6F9",
borderRadius: "10px",
padding: "40px 5px",
textAlign: "center",
}}
className="dark-BG-101010"
>
<img src={file.icon} alt="Icon" width="56px" height="56px" />
<Typography mt={1} fontWeight="500" fontSize="13px">
{file.title}
</Typography>
</Box>
</Grid>
))}
</Grid>
</Card>
{/* Create Files Modal */}
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box sx={style} className="dark-BG-101010">
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "25px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "500",
fontSize: "20px",
}}
>
Create Folder
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={1}>
<Grid item xs={12}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Files Name
</Typography>
<TextField
autoComplete="given-name"
name="filesName"
required
fullWidth
id="filesName"
label="Files Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{
position: "relative",
top: "-2px",
}}
className="mr-5px"
/>{" "}
Add Files
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Fade>
</Modal>
</>
);
};
export default DocumentsFiles;
+291
View File
@@ -0,0 +1,291 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import IconButton from "@mui/material/IconButton";
import Backdrop from "@mui/material/Backdrop";
import Button from "@mui/material/Button";
import Fade from "@mui/material/Fade";
import Modal from "@mui/material/Modal";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
// Create Files Modal Style
const style = {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%)",
maxWidth: 500,
width: "100%",
bgcolor: "background.paper",
boxShadow: 24,
borderRadius: "8px",
};
const FilesData = [
{
id: "1",
icon: "/images/file1.png",
title: "sketch-design.zip",
},
{
id: "2",
icon: "/images/file2.png",
title: "Compile.png",
},
{
id: "3",
icon: "/images/file3.png",
title: "Integrations.pdf",
},
{
id: "4",
icon: "/images/file4.png",
title: "contact @32",
},
{
id: "5",
icon: "/images/file5.png",
title: "app-Design.doc",
},
{
id: "6",
icon: "/images/file6.png",
title: "image02.png",
},
{
id: "7",
icon: "/images/file7.png",
title: "Ubold-sketch.doc",
},
{
id: "8",
icon: "/images/file8.png",
title: "Annualreport.txt",
},
{
id: "9",
icon: "/images/file9.png",
title: "Wireframes.xl4",
},
{
id: "10",
icon: "/images/file10.png",
title: "contact @32.jpg",
},
];
const Files = () => {
// Create Files Modal
const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
// Form
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Files
</Typography>
<Button
onClick={handleOpen}
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Create Files
</Button>
</Box>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
justifyContent="center"
>
{FilesData.map((file) => (
<Grid item xs={12} sm={6} md={4} lg={4} xl={2} key={file.id}>
<Box
sx={{
background: "#F3F6F9",
borderRadius: "10px",
padding: "40px 5px",
textAlign: "center",
}}
className="dark-BG-101010"
>
<img src={file.icon} alt="Icon" width="56px" height="56px" />
<Typography mt={1} fontWeight="500" fontSize="13px">
{file.title}
</Typography>
</Box>
</Grid>
))}
</Grid>
</Card>
{/* Create Files Modal */}
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box sx={style} className="dark-BG-101010">
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "25px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "500",
fontSize: "20px",
}}
>
Create Folder
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={1}>
<Grid item xs={12}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Files Name
</Typography>
<TextField
autoComplete="given-name"
name="filesName"
required
fullWidth
id="filesName"
label="Files Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{
position: "relative",
top: "-2px",
}}
className="mr-5px"
/>{" "}
Add Files
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Fade>
</Modal>
</>
);
};
export default Files;
@@ -0,0 +1,470 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import Backdrop from "@mui/material/Backdrop";
import Button from "@mui/material/Button";
import Fade from "@mui/material/Fade";
import Modal from "@mui/material/Modal";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
// Create Folder Modal Style
const style = {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%)",
maxWidth: 500,
width: "100%",
bgcolor: "background.paper",
boxShadow: 24,
borderRadius: "8px",
};
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/folder.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/folder.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/folder.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
createData(
"App Design",
"/images/folder.png",
"ET Agency",
"5 GB",
"Jan 08, 2022",
"15"
),
createData(
"Web Design & Development",
"/images/folder.png",
"ET Templates",
"13 GB",
"Jan 13, 2022",
"90"
),
createData(
"React Template",
"/images/folder.png",
"ET Company",
"100 GB",
"Dec 18, 2021",
"120"
),
createData(
"Material Template",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Angular Template",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const ImportantFiles = () => {
// Create Folder Modal
const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
// Form
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Important Files
</Typography>
<Button
onClick={handleOpen}
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Create Folder
</Button>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "650px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="22px" />
<Typography
as="h5"
fontWeight="500"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Download" placement="top">
<IconButton
aria-label="download"
size="small"
color="success"
className="success"
>
<CloudDownloadIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
{/* Create Folder Modal */}
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box sx={style} className="dark-BG-101010">
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "25px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "500",
fontSize: "20px",
}}
>
Create Folder
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={1}>
<Grid item xs={12}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Folder Name
</Typography>
<TextField
autoComplete="given-name"
name="folderName"
required
fullWidth
id="folderName"
label="Folder Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{
position: "relative",
top: "-2px",
}}
className="mr-5px"
/>{" "}
Add Folder
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Fade>
</Modal>
</>
);
};
export default ImportantFiles;
+236
View File
@@ -0,0 +1,236 @@
import React from "react";
import { useRouter } from "next/router";
import Link from "next/link";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import Typography from "@mui/material/Typography";
import { styled, alpha } from "@mui/material/styles";
import InputBase from "@mui/material/InputBase";
import SearchIcon from "@mui/icons-material/Search";
import LinearProgress, {
linearProgressClasses,
} from "@mui/material/LinearProgress";
import styles from "@/components/Apps/FileManager/LeftSidebar.module.css";
// Search field style
const Search = styled("div")(({ theme }) => ({
position: "relative",
borderRadius: 100,
backgroundColor: alpha(theme.palette.common.white, 0.15),
"&:hover": {
backgroundColor: alpha(theme.palette.common.white, 0.25),
},
marginRight: 0,
marginLeft: 0,
marginBottom: 15,
width: "100%",
[theme.breakpoints.up("xs")]: {
marginRight: theme.spacing(1),
width: "auto",
},
}));
const SearchIconWrapper = styled("div")(({ theme }) => ({
color: "#757FEF",
padding: theme.spacing(0, 2),
height: "100%",
position: "absolute",
right: "0",
pointerEvents: "none",
display: "flex",
alignItems: "center",
justifyContent: "center",
zIndex: "5",
}));
const StyledInputBase = styled(InputBase)(({ theme }) => ({
color: "inherit",
width: "100%",
"& .MuiInputBase-input": {
backgroundColor: "#F5F7FA",
borderRadius: "30px",
padding: theme.spacing(1.4, 0, 1.4, 2),
},
}));
// Storage Status Progress
const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({
height: 5,
borderRadius: 5,
[`&.${linearProgressClasses.colorPrimary}`]: {
backgroundColor:
theme.palette.grey[theme.palette.mode === "light" ? 200 : 800],
},
[`& .${linearProgressClasses.bar}`]: {
borderRadius: 5,
backgroundColor: theme.palette.mode === "light" ? "#757FEF" : "#308fe8",
},
}));
const LeftSidebar = () => {
const router = useRouter();
return (
<>
<Card
sx={{
boxShadow: "none",
p: "25px 20px",
mb: "15px",
}}
>
<Typography
as="h1"
sx={{
fontSize: 17,
fontWeight: 500,
mb: 1,
}}
>
My Drive
</Typography>
{/* Search */}
<Search className="ls-search-form">
<SearchIconWrapper className="search-btn">
<SearchIcon />
</SearchIconWrapper>
<StyledInputBase
placeholder="Search here.."
inputProps={{ "aria-label": "search" }}
/>
</Search>
{/* Nav */}
<ul className={styles.leftNav}>
<li
className={
router.pathname == "/apps/file-manager" ? "activeFMLink" : ""
}
>
<Link href="/apps/file-manager">
<i className="ri-folder-line"></i> My Drive
</Link>
<ul>
<li
className={
router.pathname == "/apps/file-manager/assets"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/assets">Assets</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/projects"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/projects">Projects</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/personal"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/personal">Personal</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/templates"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/templates">Templates</Link>
</li>
</ul>
</li>
<li
className={
router.pathname == "/apps/file-manager/documents"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/documents">
<i className="ri-file-text-line"></i> Documents
</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/media"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/media">
<i className="ri-image-line"></i> Media
</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/recents"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/recents">
<i className="ri-time-line"></i> Recents
</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/important"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/important">
<i className="ri-star-fill"></i> Important
</Link>
</li>
<li
className={
router.pathname == "/apps/file-manager/trash"
? "activeFMLink"
: ""
}
>
<Link href="/apps/file-manager/trash">
<i className="ri-delete-bin-line"></i> Trash
</Link>
</li>
</ul>
{/* Storage status */}
<Box>
<Typography fontSize="14px" fontWeight="500" mb="5px">
Storage Status
</Typography>
<BorderLinearProgress variant="determinate" value={60} />
<Typography fontSize="12px" mt="5px" color="#A9A9C8">
186.5 GB Used of 120 GB
</Typography>
</Box>
</Card>
</>
);
};
export default LeftSidebar;
@@ -0,0 +1,73 @@
.leftNav {
padding: 0;
margin: 0 0 30px;
list-style-type: none;
}
.leftNav li {
margin-bottom: 15px;
}
.leftNav li:last-child {
margin-bottom: 0;
}
.leftNav li a {
text-decoration: none;
color: #260944;
font-size: 14px;
font-weight: 500;
}
.leftNav li a:hover, .leftNav li a:hover i {
color: var(--primaryColor);
}
.leftNav li a i {
color: #818093;
font-size: 18px;
position: relative;
top: 3px;
margin-right: 5px;
}
.leftNav li ul {
padding: 0;
margin: 15px 0 0;
list-style-type: none;
}
.leftNav li ul li {
position: relative;
padding-left: 45px;
}
.leftNav li ul li::before {
content: "";
background-color: #818093;
width: 6px;
height: 6px;
border-radius: 100%;
position: absolute;
left: 30px;
top: 6px;
}
.leftNav li ul li a {
color: #5B5B98;
font-size: 13.5px;
}
/* For RTL Style */
[dir="rtl"] .leftNav li a i {
margin-right: 0;
margin-left: 5px;
}
[dir="rtl"] .leftNav li ul li {
padding-left: 0;
padding-right: 45px;
}
[dir="rtl"] .leftNav li ul li::before {
left: auto;
right: 25px;
}
/* For dark mode */
[class="dark"] .leftNav li a {
color: var(--darkHeadingTextColor);
}
[class="dark"] .leftNav li ul li a {
color: var(--darkBodyTextColor);
}
+294
View File
@@ -0,0 +1,294 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/media.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/media.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/media.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/media.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/media.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
createData(
"App Design",
"/images/media.png",
"ET Agency",
"5 GB",
"Jan 08, 2022",
"15"
),
createData(
"Web Design & Development",
"/images/media.png",
"ET Templates",
"13 GB",
"Jan 13, 2022",
"90"
),
createData(
"React Template",
"/images/media.png",
"ET Company",
"100 GB",
"Dec 18, 2021",
"120"
),
createData(
"Material Template",
"/images/media.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Angular Template",
"/images/media.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const MediaFiles = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Media
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "800px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="18px" />
<Typography
as="h5"
fontWeight="500"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Download" placement="top">
<IconButton
aria-label="download"
size="small"
color="success"
className="success"
>
<CloudDownloadIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
</>
);
};
export default MediaFiles;
+162
View File
@@ -0,0 +1,162 @@
import React from "react";
import Grid from "@mui/material/Grid";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
const MyDriveData = [
{
id: "1",
icon: "/images/folder.png",
title: "Projects",
totalFiles: "387 Files",
filesSize: "4.5 GB",
},
{
id: "2",
icon: "/images/folder.png",
title: "Documents",
totalFiles: "1572 Files",
filesSize: "7.5 GB",
},
{
id: "3",
icon: "/images/folder.png",
title: "Media",
totalFiles: "1241 Files",
filesSize: "2.8 GB",
},
{
id: "4",
icon: "/images/folder.png",
title: "Applications",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
];
const MyDrive = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
>
{MyDriveData.map((dInfo) => (
<Grid item xs={12} sm={6} md={6} lg={6} xl={3} key={dInfo.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "15px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "end",
}}
>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(229,229,229,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-edit-2-line mr-5px"></i> Rename
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-download-cloud-line mr-5px"></i> Download
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-delete-bin-line mr-5px"></i> Remove
</MenuItem>
</Menu>
</Box>
<Box
sx={{
textAlign: "center",
padding: "30px 0",
}}
>
<img src={dInfo.icon} alt="folder" />
<Typography as="h3" fontWeight="500" fontSize="14px" mt="10px">
{dInfo.title}
</Typography>
</Box>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<Typography>{dInfo.totalFiles}</Typography>
<Typography>{dInfo.filesSize}</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default MyDrive;
@@ -0,0 +1,218 @@
import React from "react";
import Grid from "@mui/material/Grid";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
const PersonalFilesData = [
{
id: "1",
icon: "/images/folder.png",
title: "Mobile Apps",
totalFiles: "55 Files",
filesSize: "4.5 GB",
},
{
id: "2",
icon: "/images/folder.png",
title: "Important Files",
totalFiles: "200 Files",
filesSize: "6.5 GB",
},
{
id: "3",
icon: "/images/folder.png",
title: "Angular Template",
totalFiles: "340 Files",
filesSize: "7.5 GB",
},
{
id: "4",
icon: "/images/folder.png",
title: "Projects",
totalFiles: "387 Files",
filesSize: "4.5 GB",
},
{
id: "5",
icon: "/images/folder.png",
title: "Documents",
totalFiles: "1572 Files",
filesSize: "7.5 GB",
},
{
id: "6",
icon: "/images/folder.png",
title: "ET Template",
totalFiles: "60 Files",
filesSize: "8 GB",
},
{
id: "7",
icon: "/images/folder.png",
title: "React Template",
totalFiles: "120 Files",
filesSize: "6.5 GB",
},
{
id: "8",
icon: "/images/folder.png",
title: "Material UI",
totalFiles: "40 Files",
filesSize: "5.5 GB",
},
{
id: "9",
icon: "/images/folder.png",
title: "WP Themes",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
{
id: "10",
icon: "/images/folder.png",
title: "Personal Photos",
totalFiles: "2587 Files",
filesSize: "14 GB",
},
{
id: "11",
icon: "/images/folder.png",
title: "Media",
totalFiles: "1241 Files",
filesSize: "2.8 GB",
},
{
id: "12",
icon: "/images/folder.png",
title: "Applications",
totalFiles: "2487 Files",
filesSize: "4.5 GB",
},
];
const PersonalFiles = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Grid
container
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 1, md: 1, lg: 1, xl: 2 }}
>
{PersonalFilesData.map((file) => (
<Grid item xs={12} sm={6} md={6} lg={6} xl={3} key={file.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "15px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "end",
}}
>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(229,229,229,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-edit-2-line mr-5px"></i> Rename
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-download-cloud-line mr-5px"></i> Download
</MenuItem>
<MenuItem sx={{ fontSize: "13px" }}>
<i className="ri-delete-bin-line mr-5px"></i> Remove
</MenuItem>
</Menu>
</Box>
<Box
sx={{
textAlign: "center",
padding: "30px 0",
}}
>
<img src={file.icon} alt="folder" />
<Typography as="h3" fontWeight="500" fontSize="14px" mt="10px">
{file.title}
</Typography>
</Box>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<Typography>{file.totalFiles}</Typography>
<Typography>{file.filesSize}</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default PersonalFiles;
+433
View File
@@ -0,0 +1,433 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import Backdrop from "@mui/material/Backdrop";
import Button from "@mui/material/Button";
import Fade from "@mui/material/Fade";
import Modal from "@mui/material/Modal";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
// Create Folder Modal Style
const style = {
position: "absolute",
top: "50%",
left: "50%",
transform: "translate(-50%, -50%)",
maxWidth: 500,
width: "100%",
bgcolor: "background.paper",
boxShadow: 24,
borderRadius: "8px",
};
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/folder.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/folder.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/folder.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const RecentFiles = () => {
// Create Folder Modal
const [open, setOpen] = React.useState(false);
const handleOpen = () => setOpen(true);
const handleClose = () => setOpen(false);
// Form
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Recent Files
</Typography>
<Button
onClick={handleOpen}
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Create Folder
</Button>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "355px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="22px" />
<Typography
as="h5"
fontWeight="500"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Download" placement="top">
<IconButton
aria-label="download"
size="small"
color="success"
className="success"
>
<CloudDownloadIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
{/* Create Folder Modal */}
<Modal
aria-labelledby="transition-modal-title"
aria-describedby="transition-modal-description"
open={open}
onClose={handleClose}
closeAfterTransition
BackdropComponent={Backdrop}
BackdropProps={{
timeout: 500,
}}
>
<Fade in={open}>
<Box
sx={style}
className="dark-BG-101010"
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "25px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "500",
fontSize: "20px",
}}
>
Create Folder
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={1}>
<Grid item xs={12}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Folder Name
</Typography>
<TextField
autoComplete="given-name"
name="folderName"
required
fullWidth
id="folderName"
label="Folder Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{
position: "relative",
top: "-2px",
}}
className="mr-5px"
/>{" "}
Add Folder
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Fade>
</Modal>
</>
);
};
export default RecentFiles;
@@ -0,0 +1,298 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import CloudDownloadIcon from "@mui/icons-material/CloudDownload";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/folder.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/folder.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/folder.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
createData(
"App Design",
"/images/folder.png",
"ET Agency",
"5 GB",
"Jan 08, 2022",
"15"
),
createData(
"Web Design & Development",
"/images/folder.png",
"ET Templates",
"13 GB",
"Jan 13, 2022",
"90"
),
createData(
"React Template",
"/images/folder.png",
"ET Company",
"100 GB",
"Dec 18, 2021",
"120"
),
createData(
"Material Template",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Angular Template",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const TemplateFiles = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Templates
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "650px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="22px" />
<Typography
as="h5"
fontWeight="500"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Download" placement="top">
<IconButton
aria-label="download"
size="small"
color="success"
className="success"
>
<CloudDownloadIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
</>
);
};
export default TemplateFiles;
+274
View File
@@ -0,0 +1,274 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
function createData(name, icon, owner, fileSize, listedDate, fileItem) {
return { name, icon, owner, fileSize, listedDate, fileItem };
}
const rows = [
createData(
"Product UI/UX Design",
"/images/folder.png",
"Danielle Thompson",
"0.7 GB",
"Mar 08, 2021",
"02"
),
createData(
"App Design & Development",
"/images/folder.png",
"ET Themes",
"521 MB",
"Feb 13, 2021",
"01"
),
createData(
"Ubold Sketch Design",
"/images/folder.png",
"Gary Coley",
"64.2 MB",
"Dec 18, 2020",
"02"
),
createData(
"Annualreport.pdf",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Wireframes",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
createData(
"App Design",
"/images/folder.png",
"ET Agency",
"5 GB",
"Jan 08, 2022",
"15"
),
createData(
"Web Design & Development",
"/images/folder.png",
"ET Templates",
"13 GB",
"Jan 13, 2022",
"90"
),
createData(
"React Template",
"/images/folder.png",
"ET Company",
"100 GB",
"Dec 18, 2021",
"120"
),
createData(
"Material Template",
"/images/folder.png",
"Cooper Sharwood",
"12.5 GB",
"Nov 25, 2020",
"05"
),
createData(
"Angular Template",
"/images/folder.png",
"Jasper Rigg",
"8.3 MB",
"Nov 25, 2019",
"03"
),
];
const TrashFiles = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Trash Files
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "650px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 800 }}
aria-label="simple table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Owner
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Size
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Listed Date
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
File Item
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Actions
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{rows.map((row) => (
<TableRow
key={row.name}
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src={row.icon} alt="Image" width="22px" />
<Typography
as="h5"
fontWeight="500"
fontSize="13px"
className="ml-1"
>
{row.name}
</Typography>
</Box>
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.owner}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileSize}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.listedDate}
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13px" }}
>
{row.fileItem}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove Permanently" placement="top">
<IconButton
aria-label="Remove Permanently"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</TableContainer>
</Card>
</>
);
};
export default TrashFiles;
+926
View File
@@ -0,0 +1,926 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import IconButton from "@mui/material/IconButton";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
import Tooltip from "@mui/material/Tooltip";
import Grid from "@mui/material/Grid";
import DeleteIcon from "@mui/icons-material/Delete";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
import Button from "@mui/material/Button";
import TextField from "@mui/material/TextField";
import AddIcon from "@mui/icons-material/Add";
import ClearIcon from "@mui/icons-material/Clear";
import Avatar from "@mui/material/Avatar";
import Checkbox from "@mui/material/Checkbox";
const label = { inputProps: { "aria-label": "Checkbox demo" } };
import { styled } from "@mui/material/styles";
import Dialog from "@mui/material/Dialog";
import DialogTitle from "@mui/material/DialogTitle";
import CloseIcon from "@mui/icons-material/Close";
// Add Task Modal
const BootstrapDialog = styled(Dialog)(({ theme }) => ({
"& .MuiDialogContent-root": {
padding: theme.spacing(2),
},
"& .MuiDialogActions-root": {
padding: theme.spacing(1),
},
}));
function BootstrapDialogTitle(props) {
const { children, onClose, ...other } = props;
return (
<DialogTitle sx={{ m: 0, p: 2 }} {...other}>
{children}
{onClose ? (
<IconButton
aria-label="close"
onClick={onClose}
sx={{
position: "absolute",
right: 8,
top: 8,
color: (theme) => theme.palette.grey[500],
}}
>
<CloseIcon />
</IconButton>
) : null}
</DialogTitle>
);
}
BootstrapDialogTitle.propTypes = {
children: PropTypes.node,
onClose: PropTypes.func.isRequired,
};
// End Add Task Modal
function ToDoList(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
ToDoList.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(
name,
url,
startDate,
endDate,
status,
badgeClass,
completion,
priority
) {
return {
name,
url,
startDate,
endDate,
status,
badgeClass,
completion,
priority,
};
}
const rows = [
createData(
"Public Beta Release",
"/images/user1.png",
"1 Jan 2022",
"1 Apr 2022",
"Completed",
"successBadge",
"10/10",
"High"
),
createData(
"Fix Platform Errors",
"/images/user2.png",
"1 Mar 2022",
"1 May 2022",
"Completed",
"successBadge",
"10/10",
"High"
),
createData(
"Launch our Mobile App",
"/images/user3.png",
"15 Apr 2022",
"15 Jun 2022",
"On Going",
"primaryBadge",
"7/10",
"Medium"
),
createData(
"Add the New Pricing Page",
"/images/user4.png",
"15 May 2022",
"15 Jun 2022",
"Pending",
"dangerBadge",
"1/10",
"Low"
),
createData(
"Redesign New Online Shop",
"/images/user5.png",
"15 Jun 2022",
"15 Aug 2022",
"On Going",
"primaryBadge",
"0/10",
"Low"
),
createData(
"Material Ui Design",
"/images/user6.png",
"15 Jul 2022",
"15 Sep 2022",
"On Going",
"primaryBadge",
"7/10",
"Medium"
),
createData(
"Add Progress Track",
"/images/user7.png",
"15 Mar 2022",
"15 May 2022",
"Completed",
"successBadge",
"10/10",
"High"
),
createData(
"Web Design",
"/images/user8.png",
"15 Aug 2022",
"15 Dec 2022",
"On Going",
"primaryBadge",
"9/10",
"High"
),
createData(
"Web Development",
"/images/user9.png",
"15 Nov 2022",
"15 Jan 2023",
"On Going",
"primaryBadge",
"8/10",
"High"
),
createData(
"React App Development",
"/images/user10.png",
"15 Jan 2022",
"15 Mar 2022",
"Completed",
"successBadge",
"10/10",
"High"
),
createData(
"eCommerce Development",
"/images/user11.png",
"15 Mar 2022",
"15 May 2022",
"On Going",
"primaryBadge",
"8/10",
"Medium"
),
createData(
"App Development",
"/images/user12.png",
"15 May 2022",
"15 Jul 2022",
"On Going",
"primaryBadge",
"5/10",
"Medium"
),
].sort((a, b) => (a.name < b.name ? -1 : 1));
const ToDoLists = () => {
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(8);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
// Add task modal
const [open, setOpen] = React.useState(false);
const handleClickOpen = () => {
setOpen(true);
};
const handleClose = () => {
setOpen(false);
};
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
// End Add Task Modal
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 15px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
My Tasks
</Typography>
<Button
onClick={handleClickOpen}
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important",
}}
>
<AddIcon
sx={{ position: "relative", top: "-1px" }}
className="mr-5px"
/>{" "}
Add Task
</Button>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 930 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Name
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Assigned
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Start Date
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
End Date
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Status
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Completion
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Priority
</TableCell>
<TableCell
align="right"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Action
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.name}>
<TableCell
sx={{
fontWeight: "500",
fontSize: "13px",
borderBottom: "1px solid #F7FAFF",
color: "#260944",
pt: "16px",
pb: "16px",
}}
>
<Checkbox {...label} size="small" />
{row.name}
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
pt: "16px",
pb: "16px",
}}
>
<Avatar
alt="User"
src={row.url}
sx={{ width: 35, height: 35 }}
/>
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: "16px",
pb: "16px",
}}
>
{row.startDate}
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: "16px",
pb: "16px",
}}
>
{row.endDate}
</TableCell>
<TableCell
align="center"
sx={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "11px",
pt: "16px",
pb: "16px",
}}
>
<span className={row.badgeClass}>{row.status}</span>
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: "16px",
pb: "16px",
}}
align="center"
>
{row.completion}
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: "16px",
pb: "16px",
}}
align="center"
>
{row.priority}
</TableCell>
<TableCell
align="right"
sx={{ borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger"
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Rename" placement="top">
<IconButton
aria-label="rename"
size="small"
color="primary"
className="primary"
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={4}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={8}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={ToDoList}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
{/* Add task modal */}
<BootstrapDialog
onClose={handleClose}
aria-labelledby="customized-dialog-title"
open={open}
>
<Box>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
background: "#EDEFF5",
borderRadius: "8px",
padding: "20px 20px",
}}
className="bg-black"
>
<Typography
id="modal-modal-title"
variant="h6"
component="h2"
sx={{
fontWeight: "500",
fontSize: "20px",
}}
>
Add Task
</Typography>
<IconButton
aria-label="remove"
size="small"
onClick={handleClose}
className="modal-close"
>
<ClearIcon />
</IconButton>
</Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "20px 20px",
borderRadius: "8px",
}}
className="dark-BG-101010"
>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={12} md={12} lg={12}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Task
</Typography>
<TextField
autoComplete="task"
name="task"
required
fullWidth
id="task"
label="Task"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
className="for-dark-input"
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Member
</Typography>
<TextField
autoComplete="image"
name="image"
required
fullWidth
id="image"
type="file"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Start Date
</Typography>
<TextField
autoComplete="start-date"
name="startDate"
required
fullWidth
id="startDate"
type="date"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
End Date
</Typography>
<TextField
autoComplete="end-date"
name="endDate"
required
fullWidth
id="endDate"
type="date"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Status
</Typography>
<TextField
autoComplete="status"
name="status"
required
fullWidth
id="status"
label="Status"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Completion
</Typography>
<TextField
autoComplete="completion"
name="completion"
required
fullWidth
id="completion"
label="0/10"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} md={12} lg={6}>
<Typography
as="h5"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "12px",
}}
>
Priority
</Typography>
<TextField
autoComplete="priority"
name="priority"
required
fullWidth
id="priority"
label="High/medium/low"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12} textAlign="end">
<Button
variant="contained"
color="secondary"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important"
}}
onClick={handleClose}
className="mr-15px"
>
<ClearIcon
sx={{
position: "relative",
top: "-1px",
}}
className="mr-5px"
/>{" "}
Cancel
</Button>
<Button
type="submit"
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "13px",
padding: "12px 20px",
color: "#fff !important"
}}
>
<AddIcon
sx={{
position: "relative",
top: "-1px",
}}
className="mr-5px"
/>{" "}
Add Task
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</BootstrapDialog>
</>
);
};
export default ToDoLists;
@@ -0,0 +1,244 @@
.favicon {
position: relative;
top: 5px;
margin-left: 10px;
}
/* googleBtn */
.googleBtn {
background: #FFFFFF;
border: 1px solid #EDEFF5;
border-radius: 8px;
display: inline-block;
width: 100%;
padding: 16px 25px 16px 55px;
color: #260944;
font-weight: 500;
font-size: 14px;
text-decoration: none;
transition: .6s;
-webkit-transition: .6s;
margin-right: 7px;
position: relative;
}
.googleBtn:hover {
box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px;
}
.googleBtn img {
position: absolute;
top: 15px;
left: 25px;
margin-right: 5px;
}
/* Facebook Btn */
.fbBtn {
background: #4776D0;
border: 1px solid #4776D0;
border-radius: 8px;
display: inline-block;
width: 100%;
padding: 16px 25px 16px 55px;
color: #fff !important;
font-weight: 500;
font-size: 14px;
text-decoration: none;
transition: .6s;
-webkit-transition: .6s;
margin-left: 7px;
position: relative;
}
.fbBtn:hover {
box-shadow: rgba(0, 0, 0, 0.15) 1.95px 1.95px 2.6px;
}
.fbBtn img {
position: absolute;
top: 15px;
left: 25px;
margin-right: 5px;
}
/* or */
.or {
text-align: center;
position: relative;
margin-bottom: 30px;
color: #777E90;
font-weight: 500;
z-index: 0;
}
.or:before {
content: "";
background: #E2E8F0;
position: absolute;
width: 100%;
height: 1px;
left: 0;
top: 10px;
z-index: -1;
}
.or span {
background-color: #F5F5F5;
display: inline-block;
padding: 0 10px;
}
/* Lock screen */
.profileBox {
background-color: #fff;
border-radius: 10px;
position: relative;
}
.header {
background: #EAEDFB;
border-radius: 10px 10px 0px 0px;
padding: 30px 15px 50px;
position: relative;
}
.headerContent {
max-width: 300px;
position: relative;
z-index: 1;
}
.header h1 {
margin: 0 0 10px;
font-size: 18px;
color: #757FEF;
font-weight: 500;
}
.header p {
margin: 0;
font-size: 14px;
color: #757FEF;
}
.header img {
position: absolute;
bottom: 0;
right: 0;
}
.profileInfo {
position: relative;
text-align: center;
margin-bottom: 10px;
}
.profileInfo img {
width: 60px;
height: 60px;
border: 5px solid #fff;
border-radius: 100%;
box-shadow: rgba(0, 0, 0, 0.16) 0px 1px 4px;
}
.profileInfo h3 {
margin: 5px 0 0;
font-size: 14px;
}
@media only screen and (max-width: 767px) {
.googleBtn {
padding: 13px 15px 13px 40px;
font-size: 12px;
margin-right: 5px;
}
.googleBtn img {
left: 15px;
top: 10px;
}
.fbBtn {
padding: 13px 15px 13px 40px;
font-size: 12px;
margin-left: 5px;
}
.fbBtn img {
left: 15px;
top: 10px;
}
}
/* For RTL Style */
[dir="rtl"] .favicon {
margin-left: 0;
margin-right: 10px;
}
/* googleBtn */
[dir="rtl"] .googleBtn {
margin-right: 0;
margin-left: 7px;
padding: 16px 55px 16px 25px;
}
[dir="rtl"] .googleBtn img {
left: auto;
right: 25px;
margin-right: 0;
margin-left: 5px;
}
/* Facebook Btn */
[dir="rtl"] .fbBtn {
margin-left: 0;
margin-right: 7px;
padding: 16px 55px 16px 25px;
}
[dir="rtl"] .fbBtn img {
left: auto;
right: 25px;
margin-right: 0;
margin-left: 5px;
}
/* or */
[dir="rtl"] .or:before {
left: auto;
right: 0;
}
/* Lock screen */
[dir="rtl"] .header img {
right: auto;
left: 0;
}
/* For dark mode */
[class="dark"] .or {
color: #fff;
}
[class="dark"] .or:before {
background: var(--borderColor);
}
[class="dark"] .or span {
background-color: #000;
}
/* googleBtn */
[class="dark"] .googleBtn {
background: var(--colorBlack);
border: 1px solid var(--colorBlack);
}
/* Lock screen */
[class="dark"] .header {
background: #101010;
}
@media only screen and (max-width: 767px) {
[dir="rtl"] .googleBtn {
margin-right: 0;
margin-left: 5px;
}
[dir="rtl"] .googleBtn img {
left: auto;
right: 15px;
top: 14px;
}
[dir="rtl"] .fbBtn {
margin-left: 0;
margin-right: 5px;
}
[dir="rtl"] .fbBtn img {
left: auto;
right: 15px;
top: 14px;
}
}
@@ -0,0 +1,121 @@
import React from "react";
import Link from "next/link";
import Grid from "@mui/material/Grid";
import { Typography } from "@mui/material";
import { Box } from "@mui/system";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import styles from "@/components/Authentication/Authentication.module.css";
const ForgotPasswordForm = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<div className="authenticationBox">
<Box
component="main"
sx={{
maxWidth: "510px",
ml: "auto",
mr: "auto",
padding: "50px 0 100px",
}}
>
<Grid item xs={12} md={12} lg={12} xl={12}>
<Box>
<Typography as="h1" fontSize="28px" fontWeight="700" mb="5px">
Forgot Password?{" "}
<img
src="/images/favicon.png"
alt="favicon"
className={styles.favicon}
/>
</Typography>
<Typography fontSize="15px" mb="30px">
Enter your email and well send you instructions to reset your
password
</Typography>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "10px",
mb: "20px",
}}
className="bg-black"
>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Email
</Typography>
<TextField
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
</Grid>
</Box>
<Button
type="submit"
fullWidth
variant="contained"
sx={{
mt: 1,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "16px",
padding: "12px 10px",
color: "#fff !important"
}}
>
Send Reset Link
</Button>
</Box>
<Box as="div" textAlign="center" mt="20px">
<Link
href="/authentication/sign-in/"
className="primaryColor text-decoration-none"
>
<i className="ri-arrow-left-s-line"></i> Back to Sign in
</Link>
</Box>
</Box>
</Grid>
</Box>
</div>
</>
);
};
export default ForgotPasswordForm;
+119
View File
@@ -0,0 +1,119 @@
import React from "react";
import Grid from "@mui/material/Grid";
import { Typography } from "@mui/material";
import { Box } from "@mui/system";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import styles from "@/components/Authentication/Authentication.module.css";
const LockScreenForm = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<div className="authenticationBox">
<Box
component="main"
sx={{
maxWidth: "510px",
ml: "auto",
mr: "auto",
padding: "80px 0 100px",
}}
>
<Grid item xs={12} md={12} lg={12} xl={12}>
<Box>
<Box component="form" noValidate onSubmit={handleSubmit}>
<div className={styles.profileBox}>
<div className={styles.header}>
<div className={styles.headerContent}>
<h1>Welcome to admash Dashboard!</h1>
<p>
Hello Andrew Burns, enter your password to unlock the
screen !
</p>
</div>
<img
src="/images/working-on-table.png"
alt="Working on table"
/>
</div>
</div>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
mb: "20px",
}}
className="bg-black"
>
<div className={styles.profileInfo}>
<img src="/images/profile.png" alt="Profile" />
<h3>Andrew Burns</h3>
</div>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Password
</Typography>
<TextField
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="new-password"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12}>
<Button
type="submit"
fullWidth
variant="contained"
sx={{
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "16px",
padding: "12px 10px",
color: "#fff !important",
}}
>
Unlock
</Button>
</Grid>
</Grid>
</Box>
</Box>
</Box>
</Grid>
</Box>
</div>
</>
);
};
export default LockScreenForm;
+189
View File
@@ -0,0 +1,189 @@
import React from "react";
import Link from "next/link";
import Grid from "@mui/material/Grid";
import { Typography } from "@mui/material";
import { Box } from "@mui/system";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import FormControlLabel from "@mui/material/FormControlLabel";
import Checkbox from "@mui/material/Checkbox";
import styles from "@/components/Authentication/Authentication.module.css";
const SignInForm = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<div className="authenticationBox">
<Box
component="main"
sx={{
maxWidth: "510px",
ml: "auto",
mr: "auto",
padding: "50px 0 100px",
}}
>
<Grid item xs={12} md={12} lg={12} xl={12}>
<Box>
<Typography as="h1" fontSize="28px" fontWeight="700" mb="5px">
Sign In{" "}
<img
src="/images/favicon.png"
alt="favicon"
className={styles.favicon}
/>
</Typography>
<Typography fontSize="15px" mb="30px">
Already have an account?{" "}
<Link
href="/authentication/sign-up"
className="primaryColor text-decoration-none"
>
Sign up
</Link>
</Typography>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mb: "30px",
}}
>
<Link href="#" className={styles.googleBtn}>
<img src="/images/google-icon.png" />
Sign in with Google
</Link>
<Link href="#" className={styles.fbBtn}>
<img src="/images/fb-icon.png" />
Sign in with Facebook
</Link>
</Box>
<div className={styles.or}>
<span>or</span>
</div>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "10px",
mb: "20px",
}}
className="bg-black"
>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Email
</Typography>
<TextField
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Password
</Typography>
<TextField
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="new-password"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
</Grid>
</Box>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={6} sm={6}>
<FormControlLabel
control={
<Checkbox value="allowExtraEmails" color="primary" />
}
label="Remember me."
/>
</Grid>
<Grid item xs={6} sm={6} textAlign="end">
<Link
href="/authentication/forgot-password"
className="primaryColor text-decoration-none"
>
Forgot your password?
</Link>
</Grid>
</Grid>
<Button
type="submit"
fullWidth
variant="contained"
sx={{
mt: 2,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "16px",
padding: "12px 10px",
color: "#fff !important",
}}
>
Sign In
</Button>
</Box>
</Box>
</Grid>
</Box>
</div>
</>
);
};
export default SignInForm;
+240
View File
@@ -0,0 +1,240 @@
import React from "react";
import Link from "next/link";
import Grid from "@mui/material/Grid";
import { Typography } from "@mui/material";
import { Box } from "@mui/system";
import TextField from "@mui/material/TextField";
import Button from "@mui/material/Button";
import FormControlLabel from "@mui/material/FormControlLabel";
import Checkbox from "@mui/material/Checkbox";
import styles from "@/components/Authentication/Authentication.module.css";
const SignUpForm = () => {
const handleSubmit = (event) => {
event.preventDefault();
const data = new FormData(event.currentTarget);
console.log({
email: data.get("email"),
password: data.get("password"),
});
};
return (
<>
<div className="authenticationBox">
<Box
component="main"
sx={{
maxWidth: "510px",
ml: "auto",
mr: "auto",
padding: "50px 0 100px",
}}
>
<Grid item xs={12} md={12} lg={12} xl={12}>
<Box>
<Typography as="h1" fontSize="28px" fontWeight="700" mb="5px">
Gets started.{" "}
<img
src="/images/favicon.png"
alt="favicon"
className={styles.favicon}
/>
</Typography>
<Typography fontSize="15px" mb="30px">
Already have an account?{" "}
<Link
href="/authentication/sign-in/"
className="primaryColor text-decoration-none"
>
Sign in
</Link>
</Typography>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mb: "30px",
}}
>
<Link href="#" className={styles.googleBtn}>
<img src="/images/google-icon.png" /> Sign in with Google
</Link>
<Link href="#" className={styles.fbBtn}>
<img src="/images/fb-icon.png" /> Sign in with Facebook
</Link>
</Box>
<div className={styles.or}>
<span>or</span>
</div>
<Box component="form" noValidate onSubmit={handleSubmit}>
<Box
sx={{
background: "#fff",
padding: "30px 20px",
borderRadius: "10px",
mb: "20px",
}}
className="bg-black"
>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
First Name
</Typography>
<TextField
autoComplete="given-name"
name="firstName"
required
fullWidth
id="firstName"
label="First Name"
autoFocus
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Last Name
</Typography>
<TextField
required
fullWidth
id="lastName"
label="Last Name"
name="lastName"
autoComplete="family-name"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Email
</Typography>
<TextField
required
fullWidth
id="email"
label="Email Address"
name="email"
autoComplete="email"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
<Grid item xs={12}>
<Typography
component="label"
sx={{
fontWeight: "500",
fontSize: "14px",
mb: "10px",
display: "block",
}}
>
Password
</Typography>
<TextField
required
fullWidth
name="password"
label="Password"
type="password"
id="password"
autoComplete="new-password"
InputProps={{
style: { borderRadius: 8 },
}}
/>
</Grid>
</Grid>
</Box>
<Grid container alignItems="center" spacing={2}>
<Grid item xs={6} sm={6}>
<FormControlLabel
control={
<Checkbox value="allowExtraEmails" color="primary" />
}
label="Remember me."
/>
</Grid>
<Grid item xs={6} sm={6} textAlign="end">
<Link
href="/authentication/forgot-password"
className="primaryColor text-decoration-none"
>
Forgot your password?
</Link>
</Grid>
</Grid>
<Button
type="submit"
fullWidth
variant="contained"
sx={{
mt: 2,
textTransform: "capitalize",
borderRadius: "8px",
fontWeight: "500",
fontSize: "16px",
padding: "12px 10px",
color: "#fff !important",
}}
>
Sign Up
</Button>
</Box>
</Box>
</Grid>
</Box>
</div>
</>
);
};
export default SignUpForm;
@@ -0,0 +1,40 @@
.timelineList .tList {
position: relative;
margin-bottom: 15px;
padding-bottom: 15px;
border-bottom: 1px solid #F7FAFF;
display: flex;
align-items: center;
justify-content: space-between;
}
.timelineList .tList:last-child {
border: none;
padding-bottom: 0;
margin-bottom: 0;
}
.timelineList .tList .content {
display: flex;
align-items: center;
}
.timelineList .tList .content img {
margin-right: 10px;
width: 27px;
}
.timelineList .tList .content h5 {
margin: 0;
color: #5B5B98;
font-size: 13px;
font-weight: 500;
}
.timelineList .tList .date {
color: #A9A9C8;
font-size: 12px;
margin: 0;
}
@media only screen and (min-width: 1800px) {
.timelineList .tList {
margin-bottom: 16.5px;
padding-bottom: 16.5px;
}
}
@@ -0,0 +1,158 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import styles from "@/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css";
const ActivityTimelineData = [
{
id: "1",
image: '/images/pdf-icon.png',
title: "Donald updated the status",
time: "54 min ago",
},
{
id: "2",
image: '/images/man.png',
title: "Design new UI and check sales",
time: "10 hours ago",
},
{
id: "3",
title: "James Bangs Client Meeting",
image: '/images/small-product-img.png',
time: "5 min ago",
},
{
id: "4",
title: "Joseph Rust opened new showcase",
image: '/images/small-product-img2.png',
time: "10 min ago",
},
{
id: "5",
title: "Brust opened new showcase",
image: '/images/small-product-img3.png',
time: "15 min ago",
},
{
id: "6",
title: "Create a new project for client",
image: '/images/man.png',
time: "20 min ago",
},
];
const ActivityTimeline = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Activity Timeline
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem>Last 15 Days</MenuItem>
<MenuItem>Last Month</MenuItem>
<MenuItem>Last Year</MenuItem>
</Menu>
</Box>
<div className={styles.timelineList}>
{ActivityTimelineData.slice(0, 6).map((timeline) => (
<div className={styles.tList} key={timeline.id}>
<div className={styles.content}>
<img src={timeline.image} alt="Icon" />
<h5>{timeline.title}</h5>
</div>
<p className={styles.date}>{timeline.time}</p>
</div>
))}
</div>
</Card>
</>
);
};
export default ActivityTimeline;
+87
View File
@@ -0,0 +1,87 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import Typography from "@mui/material/Typography";
const FeaturesData = [
{
id: "1",
subTitle: "Completed Projects",
title: "24k",
image: "/images/users-icon.png",
},
{
id: "2",
subTitle: "Pending Projects",
title: "17",
image: "/images/graph-icon.png",
},
{
id: "3",
subTitle: "Total Revenue",
title: "16.2M",
image: "/images/work-icon.png",
}
];
const Features = () => {
return (
<>
<Grid
container
justifyContent="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
{FeaturesData.map((feature) => (
<Grid item xs={12} sm={6} md={4} lg={4} key={feature.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "58px",
height: "58px",
lineHeight: "85px",
background: "rgba(85, 112, 241, 0.12)",
borderRadius: "8px",
textAlign: "center",
}}
className='mr-15px'
>
<img src={feature.image} alt="Icon" />
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: '13px', mb: "5px" }}>
{feature.subTitle}
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 28, fontWeight: 700, }}
>
{feature.title}
</Typography>
</Box>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default Features;
+414
View File
@@ -0,0 +1,414 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import IconButton from "@mui/material/IconButton";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
function MyTask(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
MyTask.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(name, startDate, endDate, status, badgeClass, budget) {
return {
name,
startDate,
endDate,
status,
badgeClass,
budget
};
}
const rows = [
createData(
"Public Beta Release",
"1 Jan 2022",
"1 Apr 2022",
"Completed",
"successBadge",
"$1250"
),
createData(
"Fix Platform Errors",
"1 Mar 2022",
"1 May 2022",
"Completed",
"successBadge",
"$1550"
),
createData(
"Launch our Mobile App",
"15 Apr 2022",
"15 Jun 2022",
"On Going",
"primaryBadge",
"$2500"
),
createData(
"Add the New Pricing Page",
"15 May 2022",
"15 Jun 2022",
"Pending",
"dangerBadge",
"$100"
),
createData(
"Redesign New Online Shop",
"15 Jun 2022",
"15 Aug 2022",
"On Going",
"primaryBadge",
"$1000"
),
createData(
"Material Ui Design",
"15 Jul 2022",
"15 Sep 2022",
"On Going",
"primaryBadge",
"$2200"
),
createData(
"Add Progress Track",
"15 Mar 2022",
"15 May 2022",
"Completed",
"successBadge",
"$1400"
),
createData(
"Web Design",
"15 Aug 2022",
"15 Dec 2022",
"On Going",
"primaryBadge",
"$4000"
),
createData(
"Web Development",
"15 Nov 2022",
"15 Jan 2023",
"On Going",
"primaryBadge",
"$400"
),
createData(
"React App Development",
"15 Jan 2022",
"15 Mar 2022",
"Completed",
"successBadge",
"$1200"
),
createData(
"eCommerce Development",
"15 Mar 2022",
"15 May 2022",
"On Going",
"primaryBadge",
"$250"
),
createData(
"App Development",
"15 May 2022",
"15 Jul 2022",
"On Going",
"primaryBadge",
"$3400"
),
].sort((a, b) => (a.name < b.name ? -1 : 1));
const MyTasks = () => {
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(8);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 15px",
mb: "15px",
}}
>
<Box
sx={{
paddingBottom: "10px",
}}
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
My Tasks
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 700 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Name
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Start Date
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
End Date
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Status
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Budget
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.name}>
<TableCell
sx={{
fontWeight: "500",
fontSize: "13px",
borderBottom: "1px solid #F7FAFF",
color: "#260944",
pt: '16px',
pb: '16px',
}}
>
{row.name}
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: '16px',
pb: '16px',
}}
>
{row.startDate}
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: '16px',
pb: '16px',
}}
>
{row.endDate}
</TableCell>
<TableCell
align="center"
sx={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "11px",
pt: '16px',
pb: '16px',
}}
>
<span className={row.badgeClass}>{row.status}</span>
</TableCell>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13px",
pt: '16px',
pb: '16px',
}}
align="center"
>
{row.budget}
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={4}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={8}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={MyTask}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
</>
);
};
export default MyTasks;
+172
View File
@@ -0,0 +1,172 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
const Overview = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
// Chart
const series = [
{
name: "Income",
data: [20, 35, 20, 40, 40, 50, 25, 25, 35, 30, 25, 40],
},
];
const options = {
chart: {
toolbar: {
show: false,
},
events: {
click: function (chart, w, e) {
// console.log(chart, w, e)
},
},
},
colors: ["#90C6E0"],
plotOptions: {
bar: {
columnWidth: "30%",
distributed: true,
},
},
dataLabels: {
enabled: false,
},
legend: {
show: false,
},
xaxis: {
categories: [
["Jan"],
["Feb"],
["Mar"],
["Api"],
["May"],
["Jun"],
["Jul"],
["Aug"],
["Sep"],
["Oct"],
["Nov"],
["Dec"],
],
labels: {
style: {
colors: "#A9A9C8",
fontSize: "12px",
},
},
},
yaxis: {
labels: {
style: {
colors: "#A9A9C8",
fontSize: "12px",
},
},
axisBorder: {
show: false,
colors: "#f6f6f7",
},
},
fill: {
opacity: 1,
},
tooltip: {
y: {
formatter: function (val) {
return "$" + val + "k";
},
},
},
grid: {
show: true,
borderColor: "#EDEFF5",
strokeDashArray: 5,
},
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 25px 15px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
marginBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Overview
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
>
<MenuItem value={0} sx={{ fontSize: "14px" }}>
Today
</MenuItem>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
This Week
</MenuItem>
<MenuItem value={2} sx={{ fontSize: "14px" }}>
Last Month
</MenuItem>
<MenuItem value={3} sx={{ fontSize: "14px" }}>
Last 12 Months
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Time
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
<Chart options={options} series={series} type="bar" height={275} />
</Card>
</>
);
};
export default Overview;
@@ -0,0 +1,96 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
const personalInfo = [
{
title: "Full Name :",
text: "Andrew Burns",
},
{
title: "Mobile :",
text: "(123) 123 1234",
},
{
title: "Email :",
text: "andrewburns@gmail.com",
},
{
title: "Location : ",
text: "USA",
},
{
title: "Experience : ",
text: "Back end Developer",
},
];
const PersonalInformation = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Personal Information
</Typography>
</Box>
<Box>
<Typography as="h4" fontWeight="500" fontSize="15px" mb={1}>
About Me:
</Typography>
<Typography mb={1}>
Hi I'm Andrew Burns,has been the industry's standard dummy text ever
since the 1500s, when an unknown printer took a galley of type.
</Typography>
{personalInfo.map((info) => (
<Box
sx={{
display: "flex",
borderBottom: "1px solid #F7FAFF",
p: "10px 0",
}}
className="for-dark-bottom-border"
key={info.title}
>
<Typography
as="h4"
fontWeight="500"
fontSize="14px"
width="100px"
>
{info.title}
</Typography>
<Typography>{info.text}</Typography>
</Box>
))}
</Box>
</Card>
</>
);
};
export default PersonalInformation;
@@ -0,0 +1,21 @@
import React from "react";
import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css";
const ProfileInfo = () => {
return (
<>
<div className={styles.welcomeBox}>
<div className={styles.welcomeContent}>
<h1>Welcome to admash Dashboard!</h1>
<p>
You have done 68% 😎 more sales today. Check your new badge in
your profile.
</p>
</div>
<img src="/images/shape-1.png" alt="shape" />
</div>
</>
);
};
export default ProfileInfo;
@@ -0,0 +1,90 @@
.timelineList .tList {
position: relative;
padding-left: 20px;
margin-bottom: 9px;
padding-bottom: 9px;
border-bottom: 1px solid #F7FAFF;
}
.timelineList .tList:last-child {
border: none;
padding-bottom: 0;
margin-bottom: 0;
}
.timelineList .tList::before {
content: '';
background: linear-gradient(149.1deg, #99B8F3 14.61%, #177FCB 130.18%);
box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25);
width: 10px;
height: 10px;
border-radius: 100%;
position: absolute;
top: 4px;
left: 0;
}
.timelineList .tList::after {
content: '';
background: #F7FAFF;
width: 3px;
height: 75px;
border-radius: 5px;
position: absolute;
top: 18px;
left: 3px;
}
.timelineList .tList h4 {
font-weight: 500;
font-size: 14px;
margin: 0 0 8px;
}
.timelineList .tList .content {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.timelineList .tList .content img {
margin-right: 10px;
width: 27px;
}
.timelineList .tList .content h5 {
margin: 0;
color: #5B5B98;
font-size: 13px;
font-weight: 500;
}
.timelineList .tList .date {
color: #A9A9C8;
font-size: 12px;
margin: 0;
}
/* For RTL Style */
[dir="rtl"] .timelineList .tList {
padding-left: 0;
padding-right: 20px;
}
[dir="rtl"] .timelineList .tList::before {
left: auto;
right: 0;
}
[dir="rtl"] .timelineList .tList::after {
left: auto;
right: 3px;
}
[dir="rtl"] .timelineList .tList .content img {
margin-right: 0;
margin-left: 10px;
}
/* For dark mode */
[class="dark"] .timelineList .tList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .timelineList .tList:last-child {
border-bottom: none;
}
[class="dark"] .timelineList .tList .content h5 {
color: var(--darkBodyTextColor);
}
[class="dark"] .timelineList .tList::after {
background: var(--borderColor);
}
@@ -0,0 +1,151 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import styles from "../../Analytics/ActivityTimeline/ActivityTimeline.module.css";
const ActivityTimelineData = [
{
id: "1",
title: "8 Invoices have been paid",
subTitle: "Invoices have been paid to the company.",
icon: "/images/pdf-icon.png",
date: "11:47 PM Wednesday",
},
{
id: "2",
title: "8 Invoices have been paid",
subTitle: "Create a new project for client Johnson John",
icon: "/images/man.png",
date: "April, 18",
},
{
id: "3",
title: "Added new style collection",
subTitle: "Product uploaded By Nesta Technologies",
icon: "/images/small-product-img.png",
date: "02:14 PM Today",
},
{
id: "4",
title: "Brust opened new showcase",
subTitle: "Product uploaded By Nesta Technologies",
icon: "/images/small-product-img2.png",
date: "5 Min Ago",
},
];
const ActivityTimeline = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Activity Timeline
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem>Last 15 Days</MenuItem>
<MenuItem>Last Month</MenuItem>
<MenuItem>Last Year</MenuItem>
</Menu>
</Box>
<div className={styles.timelineList}>
{ActivityTimelineData.slice(0, 4).map((timeline) => (
<div className={styles.tList} key={timeline.id}>
<h4>{timeline.title}</h4>
<div className={styles.content}>
<img src={timeline.icon} alt="Icon" />
<h5>{timeline.subTitle}</h5>
</div>
<p className={styles.date}>{timeline.date}</p>
</div>
))}
</div>
</Card>
</>
);
};
export default ActivityTimeline;
@@ -0,0 +1,112 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import Chart from "chart.js/auto";
import { Line } from "react-chartjs-2";
const labels = ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"];
const data = {
labels: labels,
datasets: [
{
label: "New Visitors",
backgroundColor: "#6F52ED",
borderColor: "#6F52ED",
data: [30, 40, 30, 80, 65, 70, 30],
},
{
label: "Unique Visitors",
backgroundColor: "#2DB6F5",
borderColor: "#2DB6F5",
data: [55, 60, 55, 45, 35, 55, 60],
},
{
label: "Previous Visitors",
backgroundColor: "#F765A3",
borderColor: "#F765A3",
data: [45, 30, 40, 30, 20, 30, 40],
},
],
};
const options = {
plugins: {
legend: {
labels: {
color: '#5B5B98'
}
},
}
}
const AudienceOverview = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
marginBottom: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Audience Overview
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: '14px' }}>Select</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: '14px' }}
>
<MenuItem value={0} sx={{ fontSize: '14px' }}>Today</MenuItem>
<MenuItem value={1} sx={{ fontSize: '14px' }}>Last 7 Days</MenuItem>
<MenuItem value={2} sx={{ fontSize: '14px' }}>Last Month</MenuItem>
<MenuItem value={3} sx={{ fontSize: '14px' }}>Last 12 Months</MenuItem>
<MenuItem value={4} sx={{ fontSize: '14px' }}>All Time</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
<Line data={data} options={options} height={100}/>
</Card>
</>
);
};
export default AudienceOverview;
@@ -0,0 +1,503 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
import ProgressBar from "@ramonak/react-progress-bar";
function BrowserUsedTrafficReport(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
BrowserUsedTrafficReport.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(
browser,
users,
usersProgress,
transactions,
transactionsProgress,
change,
iconName,
badgeClass
) {
return {
browser,
users,
usersProgress,
transactions,
transactionsProgress,
change,
iconName,
badgeClass,
};
}
const rows = [
createData(
"Safari Browser",
"1051",
"18",
"43080",
"(35%)",
"14.80%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"UC Browser",
"8075",
"13",
"5466",
"(12%)",
"11.50%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Google Chrome",
"59802",
"38",
"17654",
"(19%)",
"8.69%",
"ri-arrow-down-s-fill",
"dangerBadge"
),
createData(
"Mozilla Firefox",
"21854",
"24",
"87759",
"(52%)",
"22.06%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Opera Mini",
"853",
"35",
"566",
"(52%)",
"52.80%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Microsoft Edge",
"1844",
"10",
"399",
"(60%)",
"60.00%",
"ri-arrow-down-s-fill",
"dangerBadge"
),
createData(
"Brave",
"15844",
"55",
"455",
"(55%)",
"55.00%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Vivaldi",
"11844",
"50",
"655",
"(50%)",
"50.00%",
"ri-arrow-up-s-fill",
"successBadge"
),
createData(
"Other Browser",
"5907",
"7",
"4576",
"(10%)",
"16.25%",
"ri-arrow-up-s-fill",
"successBadge"
),
].sort((a, b) => (a.browser < b.browser ? -1 : 1));
const BrowserUsedTrafficReports = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
// Table
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(4);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 15px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
paddingBottom: "10px",
}}
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Browser Used & Traffic Reports
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Last 15 Days</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
</Menu>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 550 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Browser
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Users
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
Transactions
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "13.5px",
}}
>
% Change
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.browser}>
<TableCell
style={{
fontWeight: "500",
fontSize: "14px",
borderBottom: "1px solid #F7FAFF",
color: "#260944",
}}
className="dark-text-white"
>
{row.browser}
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
<Box sx={{
display: 'flex',
justifyContent: 'space-between',
alignItems: 'center',
mb: '5px'
}}>
{row.users}
<Typography
as="span"
sx={{ color: "#A9A9C8", fontSize: "13px" }}
>
{row.usersProgress}%
</Typography>
</Box>
<ProgressBar
completed={row.usersProgress}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</TableCell>
<TableCell
align="center"
style={{
borderBottom: "1px solid #F7FAFF",
color: "#5B5B98",
fontWeight: "500",
fontSize: "13px",
}}
>
{row.transactions}{" "}
<Typography
as="span"
sx={{ color: "#A9A9C8", fontSize: "13px" }}
>
{row.transactionsProgress}
</Typography>
</TableCell>
<TableCell
align="center"
style={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "12px",
}}
>
<span className={row.badgeClass}>
{row.change}{" "}
<i
className={row.iconName}
style={{
fontSize: "15px",
position: "relative",
top: "4px",
lineHeight: "1",
fontWight: "bold",
}}
></i>
</span>
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={4}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={4}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={BrowserUsedTrafficReport}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
</>
);
};
export default BrowserUsedTrafficReports;
+114
View File
@@ -0,0 +1,114 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import Typography from "@mui/material/Typography";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
const FeaturesData = [
{
id: "1",
subTitle: "Sessions",
title: "24k",
image: "/images/users-icon.png",
icon: <TrendingUpIcon />,
growthText: "9.5% new session",
color: "successColor",
},
{
id: "2",
subTitle: "Total Orders",
title: "155K",
image: "/images/graph-icon.png",
icon: <TrendingDownIcon />,
growthText: "7.5% vs. previous month",
color: "dangerColor",
},
{
id: "3",
subTitle: "Total Earning",
title: "$50.5M",
image: "/images/work-icon.png",
icon: <TrendingUpIcon />,
growthText: "3.5% bounce rate",
color: "successColor",
},
];
const Features = () => {
return (
<>
<Grid
container
justifyContent="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
{FeaturesData.map((feature) => (
<Grid item xs={12} sm={6} md={4} lg={4} key={feature.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "58px",
height: "58px",
lineHeight: "85px",
background: "rgba(85, 112, 241, 0.12)",
borderRadius: "8px",
textAlign: "center",
}}
className="mr-15px"
>
<img src={feature.image} alt="Icon" />
</Box>
<Box>
<Typography as="p" sx={{ fontSize: "13px", mb: "5px" }}>
{feature.subTitle}
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 28, fontWeight: 700 }}
>
{feature.title}
</Typography>
</Box>
</Box>
<Box mt={2}>
<Typography
sx={{
fontSize: "13px",
fontWeight: "500",
display: "flex",
alignItems: "center",
}}
>
<span className={`mr-5px ${feature.color}`}>
{feature.icon}
</span>
{feature.growthText}
</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default Features;
@@ -0,0 +1,61 @@
.infoList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
position: relative;
padding-left: 20px;
}
.infoList::before {
content: '';
background: #00B69B;
box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25);
width: 10px;
height: 10px;
border-radius: 100%;
position: absolute;
left: 0;
top: 15px;
}
.infoList:last-child {
border-bottom: none;
padding-bottom: 0;
}
.infoList p {
font-size: 13px;
margin: 0;
}
.infoList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.infoList h5 {
margin: 0;
font-size: 14px;
color: #260944;
}
.infoList .rightContent i {
position: relative;
top: 2px;
}
/* For RTL Style */
[dir="rtl"] .infoList {
padding-left: 0;
padding-right: 20px;
}
[dir="rtl"] .infoList::before {
left: auto;
right: 0;
}
/* For dark mode */
[class="dark"] .infoList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .infoList:last-child {
border-bottom: none;
}
@@ -0,0 +1,110 @@
import React, { Component } from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/Gender/Gender.module.css";
class Gender extends Component {
constructor(props) {
super(props);
this.state = {
series: [50],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "rgba(0, 182, 155, 0.5)",
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 4,
color: "#00B69B",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
fill: {
colors: ["#00B69B"],
},
},
};
}
render() {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Gender
</Typography>
</Box>
<div>
<div className={styles.infoList}>
<div>
<p>Male</p>
<h5>45,347</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 70%
</p>
</div>
</div>
<div className={styles.infoList}>
<div>
<p>Female</p>
<h5>20,738</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 30%
</p>
</div>
</div>
</div>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
/>
</Card>
</>
);
}
}
export default Gender;
@@ -0,0 +1,74 @@
import React, { Component } from "react";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css"
class Conversions extends Component {
constructor(props) {
super(props);
this.state = {
series: [60],
options: {
chart: {
type: "radialBar",
offsetY: -20,
sparkline: {
enabled: true,
},
},
plotOptions: {
radialBar: {
startAngle: -110,
endAngle: 110,
track: {
background: "#e7e7e7",
strokeWidth: "90%",
margin: 5,
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 1,
fontSize: "15px",
fontWeight: "600",
color: '#5B5B98'
},
},
},
},
grid: {
padding: {
top: -10,
},
},
fill: {
colors: ["#EE368C"],
},
labels: ["Average Results"],
},
};
}
render() {
return (
<>
<div className={styles.chartBox}>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
height={100}
/>
<h3>Conversions</h3>
</div>
</>
);
}
}
export default Conversions;
@@ -0,0 +1,74 @@
import React, { Component } from "react";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css"
class GoalCompletions extends Component {
constructor(props) {
super(props);
this.state = {
series: [68],
options: {
chart: {
type: "radialBar",
offsetY: -20,
sparkline: {
enabled: true,
},
},
plotOptions: {
radialBar: {
startAngle: -110,
endAngle: 110,
track: {
background: "#e7e7e7",
strokeWidth: "90%",
margin: 5,
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 1,
fontSize: "15px",
fontWeight: "600",
color: '#5B5B98'
},
},
},
},
grid: {
padding: {
top: -10,
},
},
fill: {
colors: ["#757FEF"],
},
labels: ["Average Results"],
},
};
}
render() {
return (
<>
<div className={styles.chartBox}>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
height={100}
/>
<h3>Goal Completions</h3>
</div>
</>
);
}
}
export default GoalCompletions;
@@ -0,0 +1,74 @@
import React, { Component } from "react";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css"
class ImpressionShare extends Component {
constructor(props) {
super(props);
this.state = {
series: [45],
options: {
chart: {
type: "radialBar",
offsetY: -20,
sparkline: {
enabled: true,
},
},
plotOptions: {
radialBar: {
startAngle: -110,
endAngle: 110,
track: {
background: "#e7e7e7",
strokeWidth: "90%",
margin: 5,
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 1,
fontSize: "15px",
fontWeight: "600",
color: '#5B5B98'
},
},
},
},
grid: {
padding: {
top: -10,
},
},
fill: {
colors: ["#00B69B"],
},
labels: ["Average Results"],
},
};
}
render() {
return (
<>
<div className={styles.chartBox}>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
height={100}
/>
<h3>Impression Share</h3>
</div>
</>
);
}
}
export default ImpressionShare;
@@ -0,0 +1,19 @@
.chartBox {
text-align: center;
top: 12px;
position: relative;
}
.chartBox h3 {
margin: 0;
color: #5B5B98;
font-weight: 500;
font-size: 13px;
position: relative;
bottom: 7px;
}
@media only screen and (max-width: 767px) {
.chartBox h3 {
font-size: 10px;
}
}
@@ -0,0 +1,29 @@
import React from "react";
import Grid from "@mui/material/Grid";
import ImpressionShare from "./ImpressionShare";
import GoalCompletions from "./GoalCompletions";
import Conversions from "./Conversions";
const ImpressionGoalConversions = () => {
return (
<>
<div className="igc-box">
<Grid container rowSpacing={1}>
<Grid item xs={4} md={4} lg={4} xl={4}>
<ImpressionShare />
</Grid>
<Grid item xs={4} md={4} lg={4} xl={4}>
<GoalCompletions />
</Grid>
<Grid item xs={4} md={4} lg={4} xl={4}>
<Conversions />
</Grid>
</Grid>
</div>
</>
);
};
export default ImpressionGoalConversions;
@@ -0,0 +1,61 @@
.infoList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
position: relative;
padding-left: 20px;
}
.infoList::before {
content: '';
background: #757FEF;
box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25);
width: 10px;
height: 10px;
border-radius: 100%;
position: absolute;
left: 0;
top: 15px;
}
.infoList:last-child {
border-bottom: none;
padding-bottom: 0;
}
.infoList p {
font-size: 13px;
margin: 0;
}
.infoList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.infoList h5 {
margin: 0;
font-size: 14px;
color: #260944;
}
.infoList .rightContent i {
position: relative;
top: 2px;
}
/* For RTL Style */
[dir="rtl"] .infoList {
padding-left: 0;
padding-right: 20px;
}
[dir="rtl"] .infoList::before {
left: auto;
right: 0;
}
/* For dark mode */
[class="dark"] .infoList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .infoList:last-child {
border-bottom: none;
}
@@ -0,0 +1,110 @@
import React, { Component } from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/NewReturning/NewReturning.module.css";
class NewReturning extends Component {
constructor(props) {
super(props);
this.state = {
series: [60],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "rgba(117, 127, 239, 0.5)",
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 4,
color: "#757FEF",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
fill: {
colors: ["#757FEF"],
},
},
};
}
render() {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
New vs. Returning
</Typography>
</Box>
<div>
<div className={styles.infoList}>
<div>
<p>New</p>
<h5>36,868</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 75%
</p>
</div>
</div>
<div className={styles.infoList}>
<div>
<p>Returning</p>
<h5>9,217</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 25%
</p>
</div>
</div>
</div>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
/>
</Card>
</>
);
}
}
export default NewReturning;
@@ -0,0 +1,95 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
const RevenueReport = () => {
const series = [
{
name: "Earning",
data: [80, 50, 30, 40, 100, 20, 35, 75, 45, 55, 65, 85,],
},
{
name: "Expenses",
data: [20, 30, 40, 80, 20, 80, 15, 32, 70, 38, 60, 76,],
},
];
const options = {
chart: {
toolbar: {
show: false,
},
dropShadow: {
enabled: true,
blur: 1,
left: 1,
top: 1,
},
},
stroke: {
width: 2,
},
colors: ["#757FEF", "#FF8A65"],
fill: {
opacity: 0.1,
},
markers: {
size: 5,
},
xaxis: {
categories: [
"January",
"Fubruary",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December",
],
},
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Revenue Report
</Typography>
</Box>
<Chart options={options} series={series} type="radar" height={522} />
</Card>
</>
);
};
export default RevenueReport;
@@ -0,0 +1,175 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import {
BarChart,
Bar,
XAxis,
YAxis,
CartesianGrid,
Tooltip,
Legend,
ResponsiveContainer,
} from "recharts";
const data = [
{
date: "01 Jan",
cost: 4000,
sales: 2400,
revenue: 2400,
},
{
date: "02 Jan",
cost: 3000,
sales: 1398,
revenue: 2210,
},
{
date: "03 Jan",
cost: 2000,
sales: 9800,
revenue: 2290,
},
{
date: "04 Jan",
cost: 2780,
sales: 3908,
revenue: 2000,
},
{
date: "05 Jan",
cost: 1890,
sales: 4800,
revenue: 2181,
},
{
date: "06 Jan",
cost: 2390,
sales: 3800,
revenue: 2500,
},
{
date: "07 Jan",
cost: 3490,
sales: 4300,
revenue: 2100,
},
];
const SalesAnalytics = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
marginBottom: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Sales Analytics
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
className="select"
>
<MenuItem value={0} sx={{ fontSize: "14px" }}>
Today
</MenuItem>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
Last 7 Days
</MenuItem>
<MenuItem value={2} sx={{ fontSize: "14px" }}>
Last Month
</MenuItem>
<MenuItem value={3} sx={{ fontSize: "14px" }}>
Last 12 Months
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Time
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
<div style={{ width: '100%', height: 272 }}>
<ResponsiveContainer>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 0,
right: 0,
left: 0,
bottom: 0,
}}
barSize={50}
>
<CartesianGrid strokeDasharray="3 3" />
<XAxis dataKey="date" fontSize={12} stroke="#A9A9C8" />
<YAxis fontSize={12} stroke="#A9A9C8" />
<Tooltip wrapperStyle={{ fontSize: "13px" }} />
<Legend
wrapperStyle={{ textTransform: "capitalize", fontSize: "13px" }}
/>
<Bar dataKey="cost" stackId="a" fill="#165BAA" />
<Bar dataKey="sales" stackId="a" fill="#A155B9" />
<Bar dataKey="revenue" stackId="a" fill="#F765A3" />
</BarChart>
</ResponsiveContainer>
</div>
</Card>
</>
);
};
export default SalesAnalytics;
@@ -0,0 +1,174 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
const SessionsByCountries = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
// Chart
const series = [
{
data: [1200, 930, 748, 670, 540, 580, 690, 1100, 1200, 1380],
},
];
const options = {
chart: {
toolbar: {
show: false,
},
},
plotOptions: {
bar: {
borderRadius: 4,
horizontal: true,
},
},
dataLabels: {
enabled: false,
},
colors: ["#757FEF"],
xaxis: {
categories: [
"United State",
"China",
"Canada",
"Indonesia",
"Russia",
"Bangladesh",
"Brazil",
"United Kingdom",
"Vietnam",
"Germany",
],
labels: {
style: {
colors: "#5B5B98",
fontSize: "12px",
},
},
},
yaxis: {
labels: {
style: {
colors: "#5B5B98",
fontSize: "11px",
},
},
axisBorder: {
show: false,
colors: "#f6f6f7",
},
},
fill: {
opacity: 1,
},
grid: {
show: true,
borderColor: "#f6f6f7",
},
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px 10px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Sessions By Countries
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Last 15 Days</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
</Menu>
</Box>
<Chart options={options} series={series} type="bar" height={500} />
</Card>
</>
);
};
export default SessionsByCountries;
@@ -0,0 +1,61 @@
.infoList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
position: relative;
padding-left: 20px;
}
.infoList::before {
content: '';
background: #FF8A54;
box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25);
width: 10px;
height: 10px;
border-radius: 100%;
position: absolute;
left: 0;
top: 15px;
}
.infoList:last-child {
border-bottom: none;
padding-bottom: 0;
}
.infoList p {
font-size: 13px;
margin: 0;
}
.infoList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.infoList h5 {
margin: 0;
font-size: 14px;
color: #260944;
}
.infoList .rightContent i {
position: relative;
top: 2px;
}
/* For RTL Style */
[dir="rtl"] .infoList {
padding-left: 0;
padding-right: 20px;
}
[dir="rtl"] .infoList::before {
left: auto;
right: 0;
}
/* For dark mode */
[class="dark"] .infoList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .infoList:last-child {
border-bottom: none;
}
@@ -0,0 +1,110 @@
import React, { Component } from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css";
class SessionsDevice extends Component {
constructor(props) {
super(props);
this.state = {
series: [70],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "rgba(255, 138, 84, 0.5)",
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 4,
color: "#FF8A54",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
fill: {
colors: ["#FF8A54"],
},
},
};
}
render() {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Sessions Device
</Typography>
</Box>
<div>
<div className={styles.infoList}>
<div>
<p>Mobile</p>
<h5>15,684</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 50%
</p>
</div>
</div>
<div className={styles.infoList}>
<div>
<p>Laptop</p>
<h5>36,868</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 60%
</p>
</div>
</div>
</div>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
/>
</Card>
</>
);
}
}
export default SessionsDevice;
@@ -0,0 +1,151 @@
.terminalsBox {
position: relative;
}
.monthlyEarning {
background: #757FEF;
mix-blend-mode: multiply;
box-shadow: 0px 109px 80px rgb(132 13 226 / 14%), 0px 45.5376px 33.4221px rgb(132 13 226 / 10%), 0px 24.3466px 17.869px rgb(132 13 226 / 8%), 0px 13.6485px 10.0172px rgb(132 13 226 / 7%), 0px 7.24861px 5.32008px rgb(132 13 226 / 6%), 0px 3.01631px 2.21381px rgb(132 13 226 / 4%);
width: 200px;
height: 200px;
text-align: center;
border-radius: 100%;
margin-left: auto;
margin-right: auto;
padding-top: 75px;
position: relative;
right: -55px;
top: 40px;
}
.monthlyEarning h3 {
margin: 0 0 10px;
line-height: 1;
color: #fff !important;
font-weight: 700;
font-size: 24px;
}
.monthlyEarning p {
margin: 0;
line-height: 1;
color: #fff;
font-size: 14px;
}
.usersEarning {
background: #F765A3;
mix-blend-mode: multiply;
opacity: 0.8;
box-shadow: 0px 100px 80px rgb(255 43 43 / 15%), 0px 46.233px 36.9864px rgb(255 43 43 / 11%), 0px 26.4535px 21.1628px rgb(255 43 43 / 9%), 0px 16.0571px 12.8457px rgb(255 43 43 / 8%), 0px 9.67509px 7.74008px rgb(255 43 43 / 7%), 0px 5.38772px 4.31018px rgb(255 43 43 / 6%), 0px 2.31722px 1.85378px rgb(255 43 43 / 4%);
width: 130px;
height: 130px;
text-align: center;
border-radius: 100%;
padding-top: 40px;
left: -160px;
right: 0;
top: 130px;
margin: auto;
position: absolute;
}
.usersEarning h3 {
margin: 0 0 10px;
line-height: 1;
color: #fff !important;
font-weight: 700;
font-size: 24px;
}
.usersEarning p {
margin: 0;
line-height: 1;
color: #fff;
font-size: 14px;
}
.inactiveEarning {
top: 210px;
background: #FF8A54;
mix-blend-mode: multiply;
width: 85px;
height: 85px;
text-align: center;
border-radius: 100%;
padding-top: 25px;
position: absolute;
left: -22px;
right: 0;
margin: auto;
}
.inactiveEarning h3 {
margin: 0 0 5px;
line-height: 1;
color: #fff !important;
font-weight: 700;
font-size: 18px;
}
.inactiveEarning p {
margin: 0;
line-height: 1;
color: #fff;
font-size: 13px;
}
.terminalsBox ul {
margin: 133px 0 0;
padding: 0;
list-style: none;
text-align: center;
}
.terminalsBox ul li {
display: inline-block;
position: relative;
font-size: 13px;
padding-left: 20px;
margin-right: 15px;
}
.terminalsBox ul li:last-child {
margin-right: 0;
}
.terminalsBox ul li::before {
content: '';
position: absolute;
border-radius: 5px;
width: 13px;
height: 13px;
left: 0;
top: 2px;
}
.terminalsBox ul li:nth-child(1)::before {
background: #757FEF;
}
.terminalsBox ul li:nth-child(2)::before {
background: #F765A3;
}
.terminalsBox ul li:nth-child(3)::before {
background: #FF8A54;
}
/* For RTL Style */
[dir="rtl"] .terminalsBox ul li {
padding-left: 0;
padding-right: 20px;
margin-right: 0;
margin-left: 15px;
}
[dir="rtl"] .terminalsBox ul li:last-child {
margin-left: 0;
}
[dir="rtl"] .terminalsBox ul li::before {
left: auto;
right: 0;
}
/* For dark mode */
[class="dark"] .monthlyEarning {
mix-blend-mode: initial;
}
[class="dark"] .usersEarning {
mix-blend-mode: initial;
}
[class="dark"] .inactiveEarning {
mix-blend-mode: initial;
}
@@ -0,0 +1,62 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import styles from "@/components/Dashboard/Analytics/Terminals/Terminals.module.css";
const Terminals = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Terminals
</Typography>
</Box>
<div className={styles.terminalsBox}>
<div className={styles.monthlyEarning}>
<h3>$27632</h3>
<p>Monthly Earning</p>
</div>
<div className={styles.usersEarning}>
<h3>82.9k</h3>
<p>Users</p>
</div>
<div className={styles.inactiveEarning}>
<h3>0.9k</h3>
<p>Inactive</p>
</div>
<ul>
<li>Monthly Earning</li>
<li>Users</li>
<li>Inactive</li>
</ul>
</div>
</Card>
</>
);
};
export default Terminals;
@@ -0,0 +1,59 @@
import React, { Component } from 'react';
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
class RevenueChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [65],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "#ECEFF7",
},
dataLabels: {
name: {
show: true,
fontSize: '12px',
color: '#5B5B98',
},
value: {
offsetY: 3,
color: "#00B69B",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
labels: ['Revenue'],
fill: {
opacity: 1,
colors: ["#757FEF"],
},
},
};
}
render() {
return (
<>
<Chart
options={this.state.options}
series={this.state.series}
height="175"
type="radialBar"
/>
</>
);
}
}
export default RevenueChart;
@@ -0,0 +1,39 @@
.totalRevenueList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
}
.totalRevenueList:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.totalRevenueList p {
font-size: 13px;
margin: 0;
}
.totalRevenueList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.totalRevenueList .rightContent h5 {
margin: 0 15px 0 0;
font-size: 12px;
color: #5B5B98;
}
.totalRevenueList .rightContent i {
position: relative;
top: 2px;
}
/* For dark mode */
[class="dark"] .totalRevenueList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .totalRevenueList:last-child {
border-bottom: none;
}
@@ -0,0 +1,162 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import RevenueChart from "./RevenueChart";
import styles from "@/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css";
const TotalRevenue = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Total Revenue
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Last 15 Days</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
</Menu>
</Box>
{/* RevenueChart */}
<RevenueChart />
<>
<div className={styles.totalRevenueList}>
<p>Avg. Session</p>
<div className={styles.rightContent}>
<h5>972</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 49%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Conversion Rate</p>
<div className={styles.rightContent}>
<h5>102</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 18%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Avg. Duration</p>
<div className={styles.rightContent}>
<h5>3m</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 42%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Weekly Earning</p>
<div className={styles.rightContent}>
<h5>$972</h5>
<p>
<i className="ri-arrow-right-down-line dangerColor"></i> 28%
</p>
</div>
</div>
<div className={styles.totalRevenueList}>
<p>Monthly Revenue</p>
<div className={styles.rightContent}>
<h5>50k</h5>
<p>
<i className="ri-arrow-right-up-line successColor"></i> 70%
</p>
</div>
</div>
</>
</Card>
</>
);
};
export default TotalRevenue;
@@ -0,0 +1,127 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
const TotalTransactions = () => {
// Chart
const series = [
{
name: "This Week",
data: [30, 20, 40, 25, 18, 43, 15]
},
{
name: "Last Week",
data: [20, 10, 20, 20, 12, 27, 28]
},
{
name: "Performance",
data: [10, 10, 15, 15, 15, 14, 15]
},
{
name: "Cost",
data: [20, 10, 20, 20, 12, 27, 28]
},
];
const options = {
chart: {
stacked: true,
toolbar: {
show: false
}
},
dataLabels: {
enabled: false
},
plotOptions: {
bar: {
horizontal: false,
columnWidth: "22%"
}
},
xaxis: {
type: "category",
axisBorder: {
show: false,
},
labels: {
show: false,
style: {
colors: "#a9a9c8",
fontSize: "14px"
}
}
},
colors: [
"#EDF0F4", "#1CCAB8", "#BDEEE1", "#D0F1FA"
],
legend: {
offsetY: 8,
fontSize: "14px",
position: "bottom",
horizontalAlign: "center",
labels: {
colors: '#5B5B98'
}
},
yaxis: {
labels: {
style: {
colors: "#a9a9c8",
fontSize: "14px"
},
},
axisBorder: {
show: false
}
},
fill: {
opacity: 1
},
grid: {
show: true,
strokeDashArray: 5,
borderColor: "#EDEFF5"
}
}
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 0 15px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
p: "0 20px 0",
}}
>
Total Transactions
</Typography>
</Box>
<Chart options={options} series={series} type="bar" height={325} />
</Card>
</>
);
};
export default TotalTransactions;
@@ -0,0 +1,61 @@
.infoList {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F7FAFF;
margin-bottom: 13px;
padding-bottom: 13px;
position: relative;
padding-left: 20px;
}
.infoList::before {
content: '';
background: #F765A3;
box-shadow: 0px 2.98686px 13.4409px rgba(126, 172, 235, 0.25);
width: 10px;
height: 10px;
border-radius: 100%;
position: absolute;
left: 0;
top: 15px;
}
.infoList:last-child {
border-bottom: none;
padding-bottom: 0;
}
.infoList p {
font-size: 13px;
margin: 0;
}
.infoList .rightContent {
display: flex;
align-items: center;
justify-content: space-between;
}
.infoList h5 {
margin: 0;
font-size: 14px;
color: #260944;
}
.infoList .rightContent i {
position: relative;
top: 2px;
}
/* For RTL Style */
[dir="rtl"] .infoList {
padding-left: 0;
padding-right: 20px;
}
[dir="rtl"] .infoList::before {
left: auto;
right: 0;
}
/* For dark mode */
[class="dark"] .infoList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .infoList:last-child {
border-bottom: none;
}
@@ -0,0 +1,110 @@
import React, { Component } from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "@/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css";
class VisitorsAge extends Component {
constructor(props) {
super(props);
this.state = {
series: [40],
options: {
plotOptions: {
radialBar: {
hollow: {
size: "50%",
},
track: {
background: "rgba(247, 101, 163, 0.5)",
},
dataLabels: {
name: {
show: false,
},
value: {
offsetY: 4,
color: "#F765A3",
fontSize: "16px",
fontWeight: "500",
},
},
},
},
fill: {
colors: ["#F765A3"],
},
},
};
}
render() {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Visitors Age
</Typography>
</Box>
<div>
<div className={styles.infoList}>
<div>
<p>Under 30</p>
<h5>16,868</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 32%
</p>
</div>
</div>
<div className={styles.infoList}>
<div>
<p>Over 30</p>
<h5>31,868</h5>
</div>
<div className={styles.rightContent}>
<p>
<i className="ri-bar-chart-fill"></i> 68%
</p>
</div>
</div>
</div>
<Chart
options={this.state.options}
series={this.state.series}
type="radialBar"
/>
</Card>
</>
);
}
}
export default VisitorsAge;
@@ -0,0 +1,123 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
import {
BarChart,
Bar,
XAxis,
Tooltip,
ResponsiveContainer,
} from "recharts";
const data = [
{
name: "Sat",
income: 24,
},
{
name: "Sun",
income: 13,
},
{
name: "Mon",
income: 98,
},
{
name: "Tue",
income: 39,
},
{
name: "Wed",
income: 48,
},
{
name: "Thu",
income: 38,
},
{
name: "Fri",
income: 43,
},
];
const NetIncome = () => {
return (
<>
<Grid container alignItems="center" sx={{ marginTop: '20px' }} rowSpacing={1} columnSpacing={{ xs: 1, sm: 2, md: 2 }}>
<Grid item xs={6} md={7} lg={6}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "46px",
height: "54px",
lineHeight: "54px",
borderRadius: "8px",
fontSize: "25px",
background: "#FFFFFF",
boxShadow: "0px 4px 20px rgba(117, 127, 239, 0.15)",
color: "#757FEF",
textAlign: "center",
}}
className='mr-15px'
>
<i className="ri-bar-chart-fill"></i>
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: 13 }}>
Net Income
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 22, fontWeight: 700, mt: "5px" }}
>
$438.5k
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={6} md={5} lg={6}>
<ResponsiveContainer width="100%" aspect={2.0 / 0.9}>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 5,
right: 10,
left: 10,
bottom: 5,
}}
barSize={8}
>
<XAxis
dataKey="name"
scale="point"
fontSize={9}
stroke="#A9A9C8"
/>
<Tooltip wrapperStyle={{fontSize: "14px"}} />
<Bar
dataKey="income"
fill="#757FEF"
background={{ fill: "#DBDFF1" }}
unit="k"
/>
</BarChart>
</ResponsiveContainer>
</Grid>
</Grid>
</>
);
};
export default NetIncome;
@@ -0,0 +1,136 @@
import React from "react";
import {
BarChart,
Bar,
XAxis,
Tooltip,
ResponsiveContainer,
} from "recharts";
import Grid from "@mui/material/Grid";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
import NetIncome from "./NetIncome";
const data = [
{
name: "Sat",
visited: 2400,
},
{
name: "Sun",
visited: 1398,
},
{
name: "Mon",
visited: 9800,
},
{
name: "Tue",
visited: 3908,
},
{
name: "Wed",
visited: 4800,
},
{
name: "Thu",
visited: 3800,
},
{
name: "Fri",
visited: 4300,
},
];
const VisitsByDayAndNetIncome = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "30px 20px 20px",
mb: "15px",
}}
>
<Grid container alignItems="center" rowSpacing={1} columnSpacing={{ xs: 1, sm: 2, md: 2 }}>
<Grid item xs={6} md={7} lg={6}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<Box
sx={{
width: "46px",
height: "54px",
lineHeight: "54px",
borderRadius: "8px",
fontSize: "25px",
background: "#FFFFFF",
boxShadow: "0px 4px 20px rgba(117, 127, 239, 0.15)",
color: "#757FEF",
textAlign: "center",
}}
className="mr-15px"
>
<i className="ri-pie-chart-line"></i>
</Box>
<Box>
<Typography variant="p" sx={{ fontSize: 13 }}>
Visits By Day
</Typography>
<Typography
variant="h1"
sx={{ fontSize: 22, fontWeight: 700, mt: "5px" }}
>
1,802
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={6} md={5} lg={6}>
<ResponsiveContainer width="100%" aspect={2.0 / 0.9}>
<BarChart
width={500}
height={300}
data={data}
margin={{
top: 5,
right: 10,
left: 10,
bottom: 5,
}}
barSize={8}
>
<XAxis
dataKey="name"
scale="point"
fontSize={9}
stroke="#A9A9C8"
/>
<Tooltip wrapperStyle={{fontSize: "14px"}} />
<Bar
dataKey="visited"
fill="#FFBA69"
background={{ fill: "#DBDFF1" }}
/>
</BarChart>
</ResponsiveContainer>
</Grid>
</Grid>
{/* NetIncome */}
<NetIncome />
</Card>
</>
);
};
export default VisitsByDayAndNetIncome;
@@ -0,0 +1,36 @@
.welcomeBox {
background: #757FEF;
border-radius: 10px;
padding: 40px 20px;
position: relative;
margin-bottom: 15px;
}
.welcomeContent {
max-width: 300px;
position: relative;
z-index: 1;
}
.welcomeBox h1 {
margin: 0 0 10px;
font-size: 18px;
color: #fff;
font-weight: 500;
}
.welcomeBox p {
margin: 0;
font-size: 14px;
color: #EDEFF5;
}
.welcomeBox img {
position: absolute;
bottom: 10px;
right: 10px;
}
/* For dark mode */
[class="dark"] .welcomeBox {
background-color: var(--cardBg);
}
[class="dark"] .welcomeContent {
background: #161515;
}
@@ -0,0 +1,21 @@
import React from "react";
import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css";
const Welcome = () => {
return (
<>
<div className={styles.welcomeBox}>
<div className={styles.welcomeContent}>
<h1>Welcome to admash Dashboard!</h1>
<p>
You have done 68% 😎 more sales today. Check your new badge in your
profile.
</p>
</div>
<img src="/images/shape-1.png" alt="shape" />
</div>
</>
);
};
export default Welcome;
+247
View File
@@ -0,0 +1,247 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import Grid from "@mui/material/Grid";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
const CurrentRate = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 25px 10px",
mb: "15px",
}}
>
{/* Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Current Rate
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
className="select"
>
<MenuItem value={0} sx={{ fontSize: "14px" }}>
Latest Coin
</MenuItem>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
Old Coin
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Coin
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
{/* Card */}
<Grid
container
justifyContent="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
<Grid item xs={12} sm={6} md={4} lg={4}>
<Card
sx={{
background: "rgba(117, 127, 239, .1)",
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
className="bg-black"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
mb: "30px",
}}
>
<Box>
<img src="/images/matic.png" alt="matic" />
</Box>
<Box
style={{
color: "#00B69B",
fontSize: "15px",
display: "flex",
}}
>
<TrendingUpIcon style={{ marginRight: "5px" }} /> +1.3%
</Box>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<Box fontSize={15} fontWeight="500">
0.451269
</Box>
<Box fontSize={15} fontWeight="500">
$12,06547.00
</Box>
</Box>
</Card>
</Grid>
<Grid item xs={12} sm={6} md={4} lg={4}>
<Card
sx={{
background: "rgba(247, 147, 26, .1)",
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
className="bg-black"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
mb: "30px",
}}
>
<Box>
<img src="/images/btc.png" alt="btc" />
</Box>
<Box
style={{
color: "#00B69B",
fontSize: "15px",
display: "flex",
}}
>
<TrendingUpIcon style={{ marginRight: "5px" }} /> +2.48%
</Box>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<Box fontSize={15} fontWeight="500">
1.111211
</Box>
<Box fontSize={15} fontWeight="500">
$14,32522.00
</Box>
</Box>
</Card>
</Grid>
<Grid item xs={12} sm={6} md={4} lg={4}>
<Card
sx={{
background: "rgba(117, 127, 239, .1)",
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
className="bg-black"
>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
mb: "30px",
}}
>
<Box>
<img src="/images/comp.png" alt="comp" />
</Box>
<Box
style={{
color: "#EE368C",
fontSize: "15px",
display: "flex",
}}
>
<TrendingDownIcon style={{ marginRight: "5px" }} /> -0.5%
</Box>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<Box fontSize={15} fontWeight="500">
0.451269
</Box>
<Box fontSize={15} fontWeight="500">
$12,06547.00
</Box>
</Box>
</Card>
</Grid>
</Grid>
</Card>
</>
);
};
export default CurrentRate;
+120
View File
@@ -0,0 +1,120 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import Typography from "@mui/material/Typography";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
const FeaturesData = [
{
id: "1",
amount: "$25,890",
title: "Total Invested",
image: "/images/icon5.png",
icon: <TrendingUpIcon />,
growth: "+1.3%",
growthText: "Up from past week",
color: "successColor",
},
{
id: "2",
amount: "$10,324",
title: "Total Changed",
image: "/images/icon6.png",
icon: <TrendingDownIcon />,
growth: "-2.5%",
growthText: "Up from past week",
color: "dangerColor",
},
{
id: "3",
amount: "$100",
title: "Day Changed",
image: "/images/icon7.png",
icon: <TrendingUpIcon />,
growth: "+0.4%",
growthText: "Up from past week",
color: "successColor",
},
];
const Features = () => {
return (
<>
<Grid
container
justifyContent="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
{FeaturesData.map((feature) => (
<Grid item xs={12} sm={6} md={4} lg={4} key={feature.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
mb: "15px",
}}
>
<Box>
<Typography variant="h4" fontSize={16} fontWeight="500">
{feature.title}
</Typography>
</Box>
<Box>
<img src={feature.image} alt="Graph" />
</Box>
</Box>
<Typography
variant="h1"
color="primary"
sx={{
fontSize: 28,
fontWeight: 700,
mb: "20px",
textAlign: "center",
}}
>
{feature.amount}
</Typography>
<Box>
<Typography
sx={{
fontSize: "13px",
fontWeight: "500",
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<span>{feature.growthText}</span>
<span
style={{ display: "flex", alignItems: "center" }}
className={feature.color}
>
{feature.icon}{" "}
<span style={{ marginLeft: "5px" }}>{feature.growth}</span>
</span>
</Typography>
</Box>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default Features;
@@ -0,0 +1,24 @@
.marketGraphList {
text-align: end;
}
.marketGraphList p {
margin-right: 20px;
}
.marketGraphList p:last-child {
margin-right: 0;
}
@media screen and (max-width: 599px) {
.marketGraphList {
text-align: left;
}
}
/* For RTL Style */
[dir="rtl"] .marketGraphList p {
margin-right: 0;
margin-left: 20px;
}
[dir="rtl"] .marketGraphList p:last-child {
margin-left: 0;
}
@@ -0,0 +1,703 @@
import React, { Component } from "react";
import { Box, Typography } from "@mui/material";
import Button from "@mui/material/Button";
import Card from "@mui/material/Card";
import Grid from "@mui/material/Grid";
import KeyboardArrowUpIcon from "@mui/icons-material/KeyboardArrowUp";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "../../Crypto/MarketGraph/MarketGraph.module.css";
class MarketGraph extends Component {
constructor(props) {
super(props);
this.state = {
series: [
{
name: "Price",
data: [
[1327359600000, 30.95],
[1327446000000, 31.34],
[1327532400000, 31.18],
[1327618800000, 31.05],
[1327878000000, 31.0],
[1327964400000, 30.95],
[1328050800000, 31.24],
[1328137200000, 31.29],
[1328223600000, 31.85],
[1328482800000, 31.86],
[1328569200000, 32.28],
[1328655600000, 32.1],
[1328742000000, 32.65],
[1328828400000, 32.21],
[1329087600000, 32.35],
[1329174000000, 32.44],
[1329260400000, 32.46],
[1329346800000, 32.86],
[1329433200000, 32.75],
[1329778800000, 32.54],
[1329865200000, 32.33],
[1329951600000, 32.97],
[1330038000000, 33.41],
[1330297200000, 33.27],
[1330383600000, 33.27],
[1330470000000, 32.89],
[1330556400000, 33.1],
[1330642800000, 33.73],
[1330902000000, 33.22],
[1330988400000, 31.99],
[1331074800000, 32.41],
[1331161200000, 33.05],
[1331247600000, 33.64],
[1331506800000, 33.56],
[1331593200000, 34.22],
[1331679600000, 33.77],
[1331766000000, 34.17],
[1331852400000, 33.82],
[1332111600000, 34.51],
[1332198000000, 33.16],
[1332284400000, 33.56],
[1332370800000, 33.71],
[1332457200000, 33.81],
[1332712800000, 34.4],
[1332799200000, 34.63],
[1332885600000, 34.46],
[1332972000000, 34.48],
[1333058400000, 34.31],
[1333317600000, 34.7],
[1333404000000, 34.31],
[1333490400000, 33.46],
[1333576800000, 33.59],
[1333922400000, 33.22],
[1334008800000, 32.61],
[1334095200000, 33.01],
[1334181600000, 33.55],
[1334268000000, 33.18],
[1334527200000, 32.84],
[1334613600000, 33.84],
[1334700000000, 33.39],
[1334786400000, 32.91],
[1334872800000, 33.06],
[1335132000000, 32.62],
[1335218400000, 32.4],
[1335304800000, 33.13],
[1335391200000, 33.26],
[1335477600000, 33.58],
[1335736800000, 33.55],
[1335823200000, 33.77],
[1335909600000, 33.76],
[1335996000000, 33.32],
[1336082400000, 32.61],
[1336341600000, 32.52],
[1336428000000, 32.67],
[1336514400000, 32.52],
[1336600800000, 31.92],
[1336687200000, 32.2],
[1336946400000, 32.23],
[1337032800000, 32.33],
[1337119200000, 32.36],
[1337205600000, 32.01],
[1337292000000, 31.31],
[1337551200000, 32.01],
[1337637600000, 32.01],
[1337724000000, 32.18],
[1337810400000, 31.54],
[1337896800000, 31.6],
[1338242400000, 32.05],
[1338328800000, 31.29],
[1338415200000, 31.05],
[1338501600000, 29.82],
[1338760800000, 30.31],
[1338847200000, 30.7],
[1338933600000, 31.69],
[1339020000000, 31.32],
[1339106400000, 31.65],
[1339365600000, 31.13],
[1339452000000, 31.77],
[1339538400000, 31.79],
[1339624800000, 31.67],
[1339711200000, 32.39],
[1339970400000, 32.63],
[1340056800000, 32.89],
[1340143200000, 31.99],
[1340229600000, 31.23],
[1340316000000, 31.57],
[1340575200000, 30.84],
[1340661600000, 31.07],
[1340748000000, 31.41],
[1340834400000, 31.17],
[1340920800000, 32.37],
[1341180000000, 32.19],
[1341266400000, 32.51],
[1341439200000, 32.53],
[1341525600000, 31.37],
[1341784800000, 30.43],
[1341871200000, 30.44],
[1341957600000, 30.2],
[1342044000000, 30.14],
[1342130400000, 30.65],
[1342389600000, 30.4],
[1342476000000, 30.65],
[1342562400000, 31.43],
[1342648800000, 31.89],
[1342735200000, 31.38],
[1342994400000, 30.64],
[1343080800000, 30.02],
[1343167200000, 30.33],
[1343253600000, 30.95],
[1343340000000, 31.89],
[1343599200000, 31.01],
[1343685600000, 30.88],
[1343772000000, 30.69],
[1343858400000, 30.58],
[1343944800000, 32.02],
[1344204000000, 32.14],
[1344290400000, 32.37],
[1344376800000, 32.51],
[1344463200000, 32.65],
[1344549600000, 32.64],
[1344808800000, 32.27],
[1344895200000, 32.1],
[1344981600000, 32.91],
[1345068000000, 33.65],
[1345154400000, 33.8],
[1345413600000, 33.92],
[1345500000000, 33.75],
[1345586400000, 33.84],
[1345672800000, 33.5],
[1345759200000, 32.26],
[1346018400000, 32.32],
[1346104800000, 32.06],
[1346191200000, 31.96],
[1346277600000, 31.46],
[1346364000000, 31.27],
[1346709600000, 31.43],
[1346796000000, 32.26],
[1346882400000, 32.79],
[1346968800000, 32.46],
[1347228000000, 32.13],
[1347314400000, 32.43],
[1347400800000, 32.42],
[1347487200000, 32.81],
[1347573600000, 33.34],
[1347832800000, 33.41],
[1347919200000, 32.57],
[1348005600000, 33.12],
[1348092000000, 34.53],
[1348178400000, 33.83],
[1348437600000, 33.41],
[1348524000000, 32.9],
[1348610400000, 32.53],
[1348696800000, 32.8],
[1348783200000, 32.44],
[1349042400000, 32.62],
[1349128800000, 32.57],
[1349215200000, 32.6],
[1349301600000, 32.68],
[1349388000000, 32.47],
[1349647200000, 32.23],
[1349733600000, 31.68],
[1349820000000, 31.51],
[1349906400000, 31.78],
[1349992800000, 31.94],
[1350252000000, 32.33],
[1350338400000, 33.24],
[1350424800000, 33.44],
[1350511200000, 33.48],
[1350597600000, 33.24],
[1350856800000, 33.49],
[1350943200000, 33.31],
[1351029600000, 33.36],
[1351116000000, 33.4],
[1351202400000, 34.01],
[1351638000000, 34.02],
[1351724400000, 34.36],
[1351810800000, 34.39],
[1352070000000, 34.24],
[1352156400000, 34.39],
[1352242800000, 33.47],
[1352329200000, 32.98],
[1352415600000, 32.9],
[1352674800000, 32.7],
[1352761200000, 32.54],
[1352847600000, 32.23],
[1352934000000, 32.64],
[1353020400000, 32.65],
[1353279600000, 32.92],
[1353366000000, 32.64],
[1353452400000, 32.84],
[1353625200000, 33.4],
[1353884400000, 33.3],
[1353970800000, 33.18],
[1354057200000, 33.88],
[1354143600000, 34.09],
[1354230000000, 34.61],
[1354489200000, 34.7],
[1354575600000, 35.3],
[1354662000000, 35.4],
[1354748400000, 35.14],
[1354834800000, 35.48],
[1355094000000, 35.75],
[1355180400000, 35.54],
[1355266800000, 35.96],
[1355353200000, 35.53],
[1355439600000, 37.56],
[1355698800000, 37.42],
[1355785200000, 37.49],
[1355871600000, 38.09],
[1355958000000, 37.87],
[1356044400000, 37.71],
[1356303600000, 37.53],
[1356476400000, 37.55],
[1356562800000, 37.3],
[1356649200000, 36.9],
[1356908400000, 37.68],
[1357081200000, 38.34],
[1357167600000, 37.75],
[1357254000000, 38.13],
[1357513200000, 37.94],
[1357599600000, 38.14],
[1357686000000, 38.66],
[1357772400000, 38.62],
[1357858800000, 38.09],
[1358118000000, 38.16],
[1358204400000, 38.15],
[1358290800000, 37.88],
[1358377200000, 37.73],
[1358463600000, 37.98],
[1358809200000, 37.95],
[1358895600000, 38.25],
[1358982000000, 38.1],
[1359068400000, 38.32],
[1359327600000, 38.24],
[1359414000000, 38.52],
[1359500400000, 37.94],
[1359586800000, 37.83],
[1359673200000, 38.34],
[1359932400000, 38.1],
[1360018800000, 38.51],
[1360105200000, 38.4],
[1360191600000, 38.07],
[1360278000000, 39.12],
[1360537200000, 38.64],
[1360623600000, 38.89],
[1360710000000, 38.81],
[1360796400000, 38.61],
[1360882800000, 38.63],
[1361228400000, 38.99],
[1361314800000, 38.77],
[1361401200000, 38.34],
[1361487600000, 38.55],
[1361746800000, 38.11],
[1361833200000, 38.59],
[1361919600000, 39.6],
],
},
],
options: {
chart: {
id: "area-datetime",
type: "area",
height: 350,
zoom: {
autoScaleYaxis: true,
},
toolbar: {
show: false,
},
},
annotations: {
yaxis: [
{
y: 30,
borderColor: "#ddd",
label: {
show: true,
text: "",
style: {
color: "#fff",
background: "#00E396",
},
},
},
],
xaxis: [
{
x: new Date("14 Nov 2012").getTime(),
borderColor: "#ddd",
yAxisIndex: 0,
label: {
show: true,
text: "",
style: {
color: "#fff",
background: "#775DD0",
},
},
},
],
},
dataLabels: {
enabled: false,
},
markers: {
size: 0,
style: "hollow",
},
xaxis: {
type: "datetime",
min: new Date("01 Mar 2012").getTime(),
tickAmount: 6,
labels: {
style: {
fontSize: "13px",
},
},
},
yaxis: {
labels: {
style: {
fontSize: "13px",
},
},
},
tooltip: {
x: {
format: "dd MMM yyyy",
},
y: {
formatter: function (val) {
return "$" + val + "";
},
},
},
grid: {
show: true,
borderColor: "#EDEFF5",
strokeDashArray: 5,
},
colors: ["#757FEF"],
fill: {
type: "gradient",
gradient: {
shadeIntensity: 1,
opacityFrom: 0.7,
opacityTo: 0.9,
stops: [0, 100],
},
},
},
selection: "one_year",
};
}
updateData(timeline) {
this.setState({
selection: timeline,
});
switch (timeline) {
case "one_month":
ApexCharts.exec(
"area-datetime",
"zoomX",
new Date("28 Jan 2013").getTime(),
new Date("27 Feb 2013").getTime()
);
break;
case "six_months":
ApexCharts.exec(
"area-datetime",
"zoomX",
new Date("27 Sep 2012").getTime(),
new Date("27 Feb 2013").getTime()
);
break;
case "one_year":
ApexCharts.exec(
"area-datetime",
"zoomX",
new Date("27 Feb 2012").getTime(),
new Date("27 Feb 2013").getTime()
);
break;
case "ytd":
ApexCharts.exec(
"area-datetime",
"zoomX",
new Date("01 Jan 2013").getTime(),
new Date("27 Feb 2013").getTime()
);
break;
case "all":
ApexCharts.exec(
"area-datetime",
"zoomX",
new Date("23 Jan 2012").getTime(),
new Date("27 Feb 2013").getTime()
);
break;
default:
}
}
render() {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Market Graph
</Typography>
<Box>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "2px 10px",
minWidth: "auto",
}}
>
Hour
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Day
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Week
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Month
</Button>
</Box>
</Box>
<Grid
container
alignItems="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
<Grid item xs={12} sm={4} md={3} lg={3}>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img src="/images/bitcoin.png" alt="bitcoin" />
<Box className="ml-10px">
<Typography sx={{ fontSize: "13px", display: "flex" }}>
Bitcoin (BTC) 6.5%{" "}
<KeyboardArrowUpIcon color="success" sx={{ ml: "5px" }} />
</Typography>
<Typography as="h3" sx={{fontSize: "17px", fontWeight: "500", mb: "0px"}}>
$35,294.90
</Typography>
</Box>
</Box>
</Grid>
<Grid item xs={12} sm={8} md={9} lg={9}>
<div className={styles.marketGraphList}>
<Typography
sx={{
background: "#EBEBF0",
p: "8px 35px 8px 15px",
borderRadius: "3px",
display: "inline-block",
my: "5px",
textAlign: 'left'
}}
className="bg-black"
>
<span style={{ fontWeight: 500, display: 'block', marginBottom: '2px' }}>Market Cap:</span> 0.546218602
</Typography>
<Typography
sx={{
background: "#EBEBF0",
p: "8px 35px 8px 15px",
borderRadius: "3px",
display: "inline-block",
my: "5px",
textAlign: 'left'
}}
className="bg-black"
>
<span style={{ fontWeight: 500, display: 'block', marginBottom: '2px' }}>Supply:</span> 0.546218602
</Typography>
</div>
</Grid>
</Grid>
<Box sx={{ mt: '10px' }}>
<div id="chart">
<div className="toolbar">
<Button
id="one_month"
onClick={() => this.updateData("one_month")}
className={this.state.selection === "one_month" ? "active" : ""}
sx={{
fontSize: 13,
fontWeight: "normal",
padding: "5px 10px",
lineHeight: '1',
minWidth: "auto",
border: '1px solid #eee'
}}
>
1M
</Button>
&nbsp;
<Button
id="six_months"
onClick={() => this.updateData("six_months")}
className={
this.state.selection === "six_months" ? "active" : ""
}
sx={{
fontSize: 13,
fontWeight: "normal",
padding: "5px 10px",
lineHeight: '1',
minWidth: "auto",
border: '1px solid #eee'
}}
>
6M
</Button>
&nbsp;
<Button
id="one_year"
onClick={() => this.updateData("one_year")}
className={this.state.selection === "one_year" ? "active" : ""}
sx={{
fontSize: 13,
fontWeight: "normal",
padding: "5px 10px",
lineHeight: '1',
minWidth: "auto",
border: '1px solid #eee'
}}
>
1Y
</Button>
&nbsp;
<Button
id="ytd"
onClick={() => this.updateData("ytd")}
className={this.state.selection === "ytd" ? "active" : ""}
sx={{
fontSize: 13,
fontWeight: "normal",
padding: "5px 10px",
lineHeight: '1',
minWidth: "auto",
border: '1px solid #eee'
}}
>
YTD
</Button>
&nbsp;
<Button
id="all"
onClick={() => this.updateData("all")}
className={this.state.selection === "all" ? "active" : ""}
sx={{
fontSize: 13,
fontWeight: "normal",
padding: "5px 10px",
lineHeight: '1',
minWidth: "auto",
border: '1px solid #eee'
}}
>
ALL
</Button>
</div>
<div id="chart-timeline">
<Chart
options={this.state.options}
series={this.state.series}
type="area"
height={300}
/>
</div>
</div>
</Box>
</Card>
</>
);
}
}
export default MarketGraph;
+590
View File
@@ -0,0 +1,590 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import Button from "@mui/material/Button";
import { Typography } from "@mui/material";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
const MyCurrencies = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
{/* Card Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
marginBottom: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
My Currencies
</Typography>
<Box>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "2px 10px",
minWidth: "auto",
}}
>
Buy
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Sell
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
All
</Button>
</Box>
</Box>
{/* Table */}
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "450px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 750 }}
aria-label="My Currencies"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Coin Name
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Price
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
24h Change
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Total Balance
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Total Coin
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Operation
</TableCell>
</TableRow>
</TableHead>
<TableBody>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<img
src="/images/bitcoin4.png"
alt="bitcoin"
style={{
width: '45px',
height: '45px',
borderRadius: '100%'
}}
/>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Bitcoin
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
$48,568.025
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
align="center"
>
<Typography
as="p"
className="successColor"
fontSize="14px"
display="flex"
>
<TrendingUpIcon sx={{ mr: "5px" }} /> +2.48%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<b style={{ fontWeight: "500" }}>12,565.75</b> USD
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> BTC
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<Button
size="small"
color="primary"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "500",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Trade
</Button>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<img src="/images/ethereum3.png" alt="ethereum" style={{
width: '45px',
height: '45px',
borderRadius: '100%'
}} />
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Ethereum
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
$1,876.76
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
align="center"
>
<Typography
as="p"
className="dangerColor"
fontSize="14px"
display="flex"
>
<TrendingDownIcon sx={{ mr: "5px" }} /> -3.48%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<b style={{ fontWeight: "500" }}>4,565.75</b> USD
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> ETH
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<Button
size="small"
color="primary"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "500",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Trade
</Button>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<img src="/images/binance.png" alt="binance" style={{
width: '45px',
height: '45px',
borderRadius: '100%'
}} />
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Binance
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
$278.87
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
align="center"
>
<Typography
as="p"
className="successColor"
fontSize="14px"
display="flex"
>
<TrendingUpIcon sx={{ mr: "5px" }} /> +1.08%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<b style={{ fontWeight: "500" }}>20,565.75</b> USD
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> BTC
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<Button
size="small"
color="primary"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "500",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Trade
</Button>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<img src="/images/litecoin3.png" alt="litecoin" style={{
width: '45px',
height: '45px',
borderRadius: '100%'
}} />
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Litecoin
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
$89.98
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
align="center"
>
<Typography
as="p"
className="successColor"
fontSize="14px"
display="flex"
>
<TrendingUpIcon sx={{ mr: "5px" }} /> +2.05%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<b style={{ fontWeight: "500" }}>7,565.75</b> USD
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> LTC
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<Button
size="small"
color="primary"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "500",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Trade
</Button>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<img src="/images/cardano.png" alt="cardano" style={{
width: '45px',
height: '45px',
borderRadius: '100%'
}} />
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Cardano
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
$37.32
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF" }}
align="center"
>
<Typography
as="p"
className="dangerColor"
fontSize="14px"
display="flex"
>
<TrendingDownIcon sx={{ mr: "5px" }} /> -1.01%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<b style={{ fontWeight: "500" }}>1,431.75</b> USD
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> CDR
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<Button
size="small"
color="primary"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "500",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Trade
</Button>
</TableCell>
</TableRow>
</TableBody>
</Table>
</TableContainer>
</Card>
</>
);
};
export default MyCurrencies;
@@ -0,0 +1,51 @@
.myProfileChart {
position: relative;
}
.myProfileChart .content {
left: 0;
right: 0;
text-align: center;
top: 50%;
position: absolute;
pointer-events: none;
transform: translateY(-50%);
}
.myProfileChart .content h5 {
margin-top: 0;
margin-bottom: 5px;
font-size: 18px;
}
.myProfileChart .content p {
color: #5b5b98;
margin: 0;
}
.list {
padding: 0;
margin: 0;
list-style-type: none;
}
.list li {
display: flex;
justify-content: space-between;
align-items: center;
}
.list li {
border-bottom: 1px solid #F7FAFF;
margin-bottom: 20px;
padding-bottom: 20px;
}
.list li:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
/* For dark mode */
[class="dark"] .list li {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .list li:last-child {
border-bottom: none;
}
@@ -0,0 +1,72 @@
import React, { Component } from "react";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import styles from "../../Crypto/MyProfile/MyProfile.module.css";
class MyProfileChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [1000, 800, 1500, 761, 871],
options: {
colors: ["#757fef", "#2db6f5", "#00b69b", "#f7931a", "#f4f4f4"],
chart: {
type: "donut",
},
tooltip: {
y: {
formatter: function (val) {
return "$" + val;
},
},
},
plotOptions: {
pie: {
donut: {
size: "88%",
},
},
},
stroke: {
width: 0,
show: true,
},
dataLabels: {
enabled: false,
},
legend: {
offsetY: 0,
show: false,
fontSize: "14px",
position: "bottom",
horizontalAlign: "center",
},
labels: ["Bitcoin", "Ethereum", "Comp Bidr", "Matic", "Litecoin"],
},
};
}
render() {
return (
<>
<div className={styles.myProfileChart}>
<Chart
options={this.state.options}
series={this.state.series}
type="donut"
height={260}
/>
<div className={styles.content}>
<h5>$1025465</h5>
<p>Total Value</p>
</div>
</div>
</>
);
}
}
export default MyProfileChart;
@@ -0,0 +1,284 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import MyProfileChart from "./MyProfileChart";
import styles from "../../Crypto/MyProfile/MyProfile.module.css";
const MyProfile = () => {
// Dropdown
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
My Profile
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Edit Profile</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Settings</MenuItem>
</Menu>
</Box>
{/* MyProfileChart */}
<MyProfileChart />
{/* list */}
<ul className={styles.list}>
<li>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<img src="/images/bitcoin2.png" alt="bitcoin" />
<Box sx={{ ml: "10px" }}>
<Typography
as="h5"
sx={{
fontSize: 15,
fontWeight: 500,
}}
>
Bitcoin
</Typography>
<Typography as="span">(BTC) 3.8%</Typography>
</Box>
</Box>
<Box textAlign="right">
<Typography as="p" fontWeight="500">
BTC 0.00251068
</Typography>
<Typography as="p" fontWeight="500" color="#00B69B">
$13,6218602
</Typography>
</Box>
</li>
<li>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<img src="/images/ethereum.png" alt="ethereum" />
<Box sx={{ ml: "10px" }}>
<Typography
as="h5"
sx={{
fontSize: 15,
fontWeight: 500,
}}
>
Ethereum
</Typography>
<Typography as="span">(ETH) 0.25%</Typography>
</Box>
</Box>
<Box textAlign="right">
<Typography as="p" fontWeight="500">
ETH 0.00251068
</Typography>
<Typography as="p" fontWeight="500" color="#00B69B">
$13,6218602
</Typography>
</Box>
</li>
<li>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<img src="/images/comp-bidr.png" alt="comp-bidr" />
<Box sx={{ ml: "10px" }}>
<Typography
as="h5"
sx={{
fontSize: 15,
fontWeight: 500,
}}
>
Comp Bidr
</Typography>
<Typography as="span">(BDR) 3.8%</Typography>
</Box>
</Box>
<Box textAlign="right">
<Typography as="p" fontWeight="500">
BDR 0.001068
</Typography>
<Typography as="p" fontWeight="500" color="#00B69B">
$13,6218602
</Typography>
</Box>
</li>
<li>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<img src="/images/matic2.png" alt="matic2" />
<Box sx={{ ml: "10px" }}>
<Typography
as="h5"
sx={{
fontSize: 15,
fontWeight: 500,
}}
>
Matic
</Typography>
<Typography as="span">(MTC) 3.02%</Typography>
</Box>
</Box>
<Box textAlign="right">
<Typography as="p" fontWeight="500">
MTC 0.00251068
</Typography>
<Typography as="p" fontWeight="500" color="#00B69B">
$13,6218602
</Typography>
</Box>
</li>
<li>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
}}
>
<img src="/images/litecoin.png" alt="litecoin" />
<Box sx={{ ml: "10px" }}>
<Typography
as="h5"
sx={{
fontSize: 15,
fontWeight: 500,
}}
>
Litecoin
</Typography>
<Typography as="span">(LTC) 1.8%</Typography>
</Box>
</Box>
<Box textAlign="right">
<Typography as="p" fontWeight="500">
LTC 0.00251068
</Typography>
<Typography as="p" fontWeight="500" color="#00B69B">
$13,6218602
</Typography>
</Box>
</li>
</ul>
</Card>
</>
);
};
export default MyProfile;
@@ -0,0 +1,635 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import Button from "@mui/material/Button";
import { Typography } from "@mui/material";
import Table from "@mui/material/Table";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableHead from "@mui/material/TableHead";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import ProgressBar from "@ramonak/react-progress-bar";
import Avatar from "@mui/material/Avatar";
import AvatarGroup from "@mui/material/AvatarGroup";
const OrdersActivities = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
{/* Card Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
marginBottom: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Orders Activities
</Typography>
<Box>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "2px 10px",
minWidth: "auto",
}}
>
Buy
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
Sell
</Button>
<Button
size="small"
sx={{
fontSize: 14,
textTransform: "capitalize",
fontWeight: "normal",
color: "#5B5B98",
padding: "0",
padding: "2px 10px",
minWidth: "auto",
}}
>
All
</Button>
</Box>
</Box>
{/* Table */}
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
maxHeight: "440px",
overflowY: "auto",
}}
>
<Table
sx={{ minWidth: 1050 }}
aria-label="Orders Activities"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Type
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Change
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Date
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Time
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
USD Amount
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Supply
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Amount
</TableCell>
<TableCell
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
align="center"
>
Operation
</TableCell>
</TableRow>
</TableHead>
<TableBody>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<AvatarGroup sx={{ justifyContent: "flex-end" }} max={2}>
<Avatar src="/images/dollar.png" alt="dollar" />
<Avatar src="/images/bitcoin3.png" alt="bitcoin" />
</AvatarGroup>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Bitcoin{" "}
<span style={{ fontWeight: "400", color: "#5B5B98" }}>
(BTC)
</span>
</Typography>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Typography as="p" className="successColor" fontSize="14px">
+2.48%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
04 June 2023
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
11:37 PM
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>12,565.75</b> USD
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Box>
<Typography fontSize="13px" textAlign="end" mb="2px">
180548.00 BTC
</Typography>
<ProgressBar
completed={70}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</Box>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.2040</b> BTC
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontWeight: "500",
fontSize: "13px",
}}
>
<span className="successBadge">Buy</span>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<AvatarGroup sx={{ justifyContent: "flex-end" }} max={2}>
<Avatar src="/images/matic3.png" alt="matic" />
<Avatar src="/images/ethereum2.png" alt="ethereum" />
</AvatarGroup>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Ethereum{" "}
<span style={{ fontWeight: "400", color: "#5B5B98" }}>
(ETH)
</span>
</Typography>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Typography as="p" className="dangerColor" fontSize="14px">
-1.11%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
05 June 2023
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
12:00 PM
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>11,232.22</b> USD
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Box>
<Typography fontSize="13px" textAlign="end" mb="2px">
220548.22 ETH
</Typography>
<ProgressBar
completed={55}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</Box>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.4453</b> ETH
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontWeight: "500",
fontSize: "13px",
}}
>
<span className="dangerBadge">Transfer</span>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<AvatarGroup sx={{ justifyContent: "flex-end" }} max={2}>
<Avatar src="/images/dollar.png" alt="dollar" />
<Avatar src="/images/dash.png" alt="dash" />
</AvatarGroup>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Dash{" "}
<span style={{ fontWeight: "400", color: "#5B5B98" }}>
(DASH)
</span>
</Typography>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Typography as="p" className="successColor" fontSize="14px">
+0.32%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
04 June 2023
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
09:33 AM
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>32,222.23</b> USD
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Box>
<Typography fontSize="13px" textAlign="end" mb="2px">
110148.43 DASH
</Typography>
<ProgressBar
completed={70}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</Box>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 0.3421</b> DASH
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontWeight: "500",
fontSize: "13px",
}}
>
<span className="primaryBadge">Sell</span>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<AvatarGroup sx={{ justifyContent: "flex-end" }} max={2}>
<Avatar src="/images/bitcoin3.png" alt="bitcoin" />
<Avatar src="/images/litecoin2.png" alt="litecoin" />
</AvatarGroup>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Litecoin{" "}
<span style={{ fontWeight: "400", color: "#5B5B98" }}>
(LTC)
</span>
</Typography>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Typography as="p" className="dangerColor" fontSize="14px">
-3.06%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
03 June 2023
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
10:00 PM
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>7,432.43</b> USD
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Box>
<Typography fontSize="13px" textAlign="end" mb="2px">
321548.01 LTC
</Typography>
<ProgressBar
completed={60}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</Box>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 1.1140</b> LTC
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontWeight: "500",
fontSize: "13px",
}}
>
<span className="successBadge">Buy</span>
</TableCell>
</TableRow>
<TableRow
sx={{ "&:last-child td, &:last-child th": { border: 0 } }}
>
<TableCell
sx={{
borderBottom: "1px solid #F7FAFF",
display: "flex",
alignItems: "center",
}}
>
<AvatarGroup sx={{ justifyContent: "flex-end" }} max={2}>
<Avatar src="/images/matic3.png" alt="matic" />
<Avatar src="/images/dollar.png" alt="dollar" />
</AvatarGroup>
<Typography
as="h5"
fontWeight="500"
fontSize="15px"
className="ml-10px"
>
Dollar{" "}
<span style={{ fontWeight: "400", color: "#5B5B98" }}>
(USD)
</span>
</Typography>
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Typography as="p" className="successColor" fontSize="14px">
+1.11%
</Typography>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
02 June 2023
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
08:21 AM
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>32,565.75</b> USD
</TableCell>
<TableCell sx={{ borderBottom: "1px solid #F7FAFF" }}>
<Box>
<Typography fontSize="13px" textAlign="end" mb="2px">
200548.00 BTC
</Typography>
<ProgressBar
completed={40}
height="5px"
labelSize="0px"
baseBgColor="#eeeeee"
bgColor="#757FEF"
/>
</Box>
</TableCell>
<TableCell
align="center"
sx={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px" }}
>
<b style={{ fontWeight: "500" }}>+ 2.2040</b> USD
</TableCell>
<TableCell
align="center"
sx={{
borderBottom: "1px solid #F7FAFF",
fontWeight: "500",
fontSize: "13px",
}}
>
<span className="primaryBadge">Sell</span>
</TableCell>
</TableRow>
</TableBody>
</Table>
</TableContainer>
</Card>
</>
);
};
export default OrdersActivities;
+229
View File
@@ -0,0 +1,229 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import Button from "@mui/material/Button";
import { Typography } from "@mui/material";
import TextField from "@mui/material/TextField";
import InputLabel from "@mui/material/InputLabel";
import FormControl from "@mui/material/FormControl";
import MenuItem from "@mui/material/MenuItem";
import Select from "@mui/material/Select";
import Grid from "@mui/material/Grid";
const Trading = () => {
const [currency, setCurrency] = React.useState("");
const handleChange = (event) => {
setCurrency(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
{/* Card Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
marginBottom: "15px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Trading
</Typography>
<Box>
<Typography
as="h6"
sx={{
fontSize: 14,
fontWeight: 500,
}}
>
<span className="primaryColor">Wallet Balance:</span> $12,426.07
</Typography>
</Box>
</Box>
<Box>
<Box
sx={{
background: "#f7faff",
p: "15px",
display: "flex",
alignItems: "center",
mb: "15px",
}}
className="bg-black"
>
<Button
variant="contained"
color="primary"
sx={{
display: "block",
width: "100%",
textTransform: "capitalize",
borderRadius: "5px",
lineHeight: '1',
p: "15px",
fontSize: "14px",
color: "#fff !important",
}}
className="mr-5px"
>
Buy Coin
</Button>
<Button
variant="contained"
color="secondary"
sx={{
display: "block",
width: "100%",
textTransform: "capitalize",
borderRadius: "5px",
lineHeight: '1',
p: "15px",
fontSize: "14px",
color: "#fff !important",
}}
className="ml-5px"
>
Sell Coin
</Button>
</Box>
<Box component="form">
<Grid container spacing="19px">
<Grid item xs={12} sm={6}>
<InputLabel
htmlFor="currency"
sx={{ fontSize: "14px", fontWeight: "500", mb: "5px" }}
>
Currency:
</InputLabel>
<FormControl fullWidth>
<InputLabel id="currency-label">Currency</InputLabel>
<Select
labelId="demo-simple-select-label"
id="demo-simple-select"
value={currency}
label="Currency"
onChange={handleChange}
>
<MenuItem value={10}>BTC</MenuItem>
<MenuItem value={20}>ETH</MenuItem>
<MenuItem value={30}>LTC</MenuItem>
<MenuItem value={30}>CDR</MenuItem>
</Select>
</FormControl>
</Grid>
<Grid item xs={12} sm={6}>
<InputLabel
htmlFor="currency"
sx={{ fontSize: "14px", fontWeight: "500", mb: "5px" }}
>
Payment Method:
</InputLabel>
<TextField
required
fullWidth
type="number"
id="creditDebitCard"
label="Credit / Debit Card"
name="creditDebitCard"
autoComplete="credit-debit-card"
/>
</Grid>
<Grid item xs={12}>
<InputLabel
htmlFor="currency"
sx={{ fontSize: "14px", fontWeight: "500", mb: "5px" }}
>
Amount:
</InputLabel>
<TextField
required
fullWidth
type="number"
id="creditDebitCard"
label="Credit / Debit Card"
name="creditDebitCard"
autoComplete="credit-debit-card"
/>
</Grid>
<Grid item xs={12}>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<Typography as="p">Estimated Rate</Typography>
<Typography as="p">1 BTC ~ $34572.00</Typography>
</Box>
</Grid>
<Grid item xs={12}>
<Typography as="p">Transaction Fees (0.05%)</Typography>
</Grid>
<Grid item xs={12}>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
}}
>
<Typography as="p">Total</Typography>
<Typography as="p">72.00 BTC</Typography>
</Box>
</Grid>
</Grid>
<Button
type="submit"
fullWidth
variant="contained"
sx={{
mt: 2,
color: "#fff !important",
textTransform: "capitalize",
lineHeight: '1',
p: "17px 15px",
fontSize: "15px",
}}
size="large"
>
Buy Coin
</Button>
</Box>
</Box>
</Card>
</>
);
};
export default Trading;
@@ -0,0 +1,46 @@
.list {
padding: 0;
margin: 0;
list-style-type: none;
}
.list li {
display: flex;
justify-content: space-between;
align-items: center;
}
.list li {
border-bottom: 1px solid #F7FAFF;
margin-bottom: 25px;
padding-bottom: 25px;
}
.list li:last-child {
border-bottom: none;
margin-bottom: 0;
padding-bottom: 0;
}
.list li .content {
display: flex;
justify-content: space-between;
align-items: center;
}
.list li .content i {
margin: 0 10px 0 0;
line-height: 1;
font-size: 30px;
}
.list li .content h5 {
margin: 0;
font-size: 20px;
}
.list li .content span {
margin: 0;
}
/* For dark mode */
[class="dark"] .list li {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .list li:last-child {
border-bottom: none;
}
@@ -0,0 +1,109 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import styles from "../../Crypto/UserActivities/UserActivities.module.css";
const UserActivities = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
{/* Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
User Activities
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
className="select"
>
<MenuItem value={0} sx={{ fontSize: "14px" }}>
This Week
</MenuItem>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
This Month
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
This Year
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Time
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
{/* Activities list */}
<ul className={styles.list}>
<li>
<div className={styles.content}>
<i className="ri-user-line"></i>
<div>
<h5>1,802</h5>
<span>Visits by Day</span>
</div>
</div>
<img src="/images/chart1.png" alt="chart" />
</li>
<li>
<div className={styles.content}>
<i className="ri-user-add-line"></i>
<div>
<h5>1605</h5>
<span>Referral Join</span>
</div>
</div>
<img src="/images/chart2.png" alt="chart" />
</li>
</ul>
</Card>
</>
);
};
export default UserActivities;
@@ -0,0 +1,54 @@
.timelineList .tList {
position: relative;
margin-bottom: 14px;
padding-bottom: 14px;
border-bottom: 1px solid #F7FAFF;
}
.timelineList .tList:last-child {
border: none;
padding-bottom: 0;
margin-bottom: 0;
}
.timelineList .tList .content {
display: flex;
}
.timelineList .tList .content img {
margin-right: 10px;
width: 40px;
height: 40px;
}
.timelineList .tList .content h5 {
margin: 0 0 3px;
color: #260944;
font-size: 15px;
font-weight: 500;
font-family: var(--bodyFontFamily) !important;
}
.timelineList .tList .content .text {
margin: 0 0 5px;
}
.timelineList .tList .date {
color: #A9A9C8;
font-size: 12px;
margin: 0;
}
/* For RTL Style */
[dir="rtl"] .timelineList .tList {
padding-right: 20px;
}
[dir="rtl"] .timelineList .tList .content img {
margin-right: 0;
margin-left: 10px;
}
/* For dark mode */
[class="dark"] .timelineList .tList {
border-bottom: 1px solid var(--borderColor);
}
[class="dark"] .timelineList .tList:last-child {
border-bottom: none;
}
[class="dark"] .timelineList .tList .content h5 {
color: var(--darkBodyTextColor) !important;
}
@@ -0,0 +1,153 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import styles from "../../HelpDesk/Activity/Activity.module.css";
const ActivityTimelineData = [
{
id: "1",
title: "Drop us an email at [Insert Email Address]",
text: "We'll get back to you as soon as possible with detailed..",
icon: "/images/support.png",
date: "10 Min ago",
},
{
id: "2",
title: "Visit our website [Insert Website URL]",
text: "Initiate a live chat session. Our team will be there to live chat session...",
icon: "/images/avatar2.png",
date: "11:47 PM",
},
{
id: "3",
title: "Our representatives are available",
text: "Dial our toll-free number, representative are available..",
icon: "/images/time.png",
date: "07 June",
},
{
id: "4",
title: "Drop us an email at [Insert Email Address]",
text: "We'll get back to you as soon as possible with detailed..",
icon: "/images/support.png",
date: "05 June",
},
];
const Activity = () => {
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 16,
fontWeight: 500,
}}
>
Activity
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem>Last 15 Days</MenuItem>
<MenuItem>Last Month</MenuItem>
<MenuItem>Last Year</MenuItem>
</Menu>
</Box>
<div className={styles.timelineList}>
{ActivityTimelineData.slice(0, 4).map((timeline) => (
<div className={styles.tList} key={timeline.id}>
<div className={styles.content}>
<img src={timeline.icon} alt="Icon" />
<div>
<h5>{timeline.title}</h5>
<p className={styles.text}>{timeline.text}</p>
<p className={styles.date}>{timeline.date}</p>
</div>
</div>
</div>
))}
</div>
</Card>
</>
);
};
export default Activity;
@@ -0,0 +1,465 @@
import * as React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import PropTypes from "prop-types";
import { useTheme } from "@mui/material/styles";
import Table from "@mui/material/Table";
import TableHead from "@mui/material/TableHead";
import TableBody from "@mui/material/TableBody";
import TableCell from "@mui/material/TableCell";
import TableContainer from "@mui/material/TableContainer";
import TableFooter from "@mui/material/TableFooter";
import TablePagination from "@mui/material/TablePagination";
import TableRow from "@mui/material/TableRow";
import Paper from "@mui/material/Paper";
import FirstPageIcon from "@mui/icons-material/FirstPage";
import KeyboardArrowLeft from "@mui/icons-material/KeyboardArrowLeft";
import KeyboardArrowRight from "@mui/icons-material/KeyboardArrowRight";
import LastPageIcon from "@mui/icons-material/LastPage";
import Tooltip from "@mui/material/Tooltip";
import IconButton from "@mui/material/IconButton";
import DeleteIcon from "@mui/icons-material/Delete";
import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline";
function AgentPerformances(props) {
const theme = useTheme();
const { count, page, rowsPerPage, onPageChange } = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
return (
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
<IconButton
onClick={handleFirstPageButtonClick}
disabled={page === 0}
aria-label="first page"
>
{theme.direction === "rtl" ? <LastPageIcon /> : <FirstPageIcon />}
</IconButton>
<IconButton
onClick={handleBackButtonClick}
disabled={page === 0}
aria-label="previous page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowRight />
) : (
<KeyboardArrowLeft />
)}
</IconButton>
<IconButton
onClick={handleNextButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="next page"
>
{theme.direction === "rtl" ? (
<KeyboardArrowLeft />
) : (
<KeyboardArrowRight />
)}
</IconButton>
<IconButton
onClick={handleLastPageButtonClick}
disabled={page >= Math.ceil(count / rowsPerPage) - 1}
aria-label="last page"
>
{theme.direction === "rtl" ? <FirstPageIcon /> : <LastPageIcon />}
</IconButton>
</Box>
);
}
AgentPerformances.propTypes = {
count: PropTypes.number.isRequired,
onPageChange: PropTypes.func.isRequired,
page: PropTypes.number.isRequired,
rowsPerPage: PropTypes.number.isRequired,
};
function createData(
userImg,
name,
userName,
ratings,
totalCalls,
callsAnswered,
averageSpeedOfAnswer,
Adherence
) {
return {
userImg,
name,
userName,
ratings,
totalCalls,
callsAnswered,
averageSpeedOfAnswer,
Adherence,
};
}
const rows = [
createData(
"/images/user1.png",
"Jordan Stevenson",
"@jstevenson5c",
"4.5",
"185",
"172",
"2:10s",
"91%"
),
createData(
"/images/user2.png",
"Lucile Young",
"@lyoung4a",
"3.5",
"399",
"269",
"3:20s",
"95%"
),
createData(
"/images/user3.png",
"Francis Frank",
"@ffrank7e",
"5",
"499",
"490",
"5:25s",
"99%"
),
createData(
"/images/user4.png",
"Phoebe Patterson",
"@ppatterson2g",
"4.3",
"199",
"149",
"2:30s",
"77%"
),
createData(
"/images/user5.png",
"James Andy",
"@andyjm32",
"4.7",
"150",
"129",
"4:31s",
"65%"
),
createData(
"/images/user6.png",
"Sarah Taylor",
"@taylors32",
"4.9",
"266",
"250",
"2:39s",
"85%"
),
createData(
"/images/user7.png",
"David Warner",
"@davidwabc2",
"5",
"477",
"470",
"3:21s",
"95%"
),
createData(
"/images/user8.png",
"Steven Smith",
"@ssmith542",
"4.8",
"199",
"188",
"5:21s",
"91%"
),
].sort((a, b) => (a.name < b.name ? -1 : 1));
export default function AgentPerformance() {
const [page, setPage] = React.useState(0);
const [rowsPerPage, setRowsPerPage] = React.useState(6);
// Avoid a layout jump when reaching the last page with empty rows.
const emptyRows =
page > 0 ? Math.max(0, (1 + page) * rowsPerPage - rows.length) : 0;
const handleChangePage = (event, newPage) => {
setPage(newPage);
};
const handleChangeRowsPerPage = (event) => {
setRowsPerPage(parseInt(event.target.value, 10));
setPage(0);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 25px 10px",
mb: "15px",
}}
>
<Box
sx={{
paddingBottom: "10px",
}}
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Performance of the Agents
</Typography>
</Box>
<TableContainer
component={Paper}
sx={{
boxShadow: "none",
}}
>
<Table
sx={{ minWidth: 900 }}
aria-label="custom pagination table"
className="dark-table"
>
<TableHead sx={{ background: "#F7FAFF" }}>
<TableRow>
<TableCell style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}>
User
</TableCell>
<TableCell style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}>
Ratings
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Total Calls
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Calls Answered
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Speed of Answer
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Adherence
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "13.5px" }}
>
Action
</TableCell>
</TableRow>
</TableHead>
<TableBody>
{(rowsPerPage > 0
? rows.slice(
page * rowsPerPage,
page * rowsPerPage + rowsPerPage
)
: rows
).map((row) => (
<TableRow key={row.name}>
<TableCell
style={{ width: 250, borderBottom: "1px solid #F7FAFF" }}
>
<Box
sx={{
display: "flex",
alignItems: "center",
}}
>
<img
src={row.userImg}
alt="Product Img"
width={40}
height={40}
className="borRadius100"
/>
<Box className="ml-10px">
<Typography
sx={{
fontWeight: "500",
fontSize: "14px",
}}
as="h5"
>
{row.name}
</Typography>
<Typography
sx={{
fontSize: "12px",
color: "#A9A9C8",
}}
>
{row.userName}
</Typography>
</Box>
</Box>
</TableCell>
<TableCell
style={{
borderBottom: "1px solid #F7FAFF",
fontSize: "14px",
}}
>
<i
className="ri-star-fill"
style={{ color: '#F7931A' }}
></i> {row.ratings}
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px", }}
>
{row.totalCalls}
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px", }}
>
{row.callsAnswered}
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px", }}
>
{row.averageSpeedOfAnswer}
</TableCell>
<TableCell
align="center"
style={{ borderBottom: "1px solid #F7FAFF", fontSize: "14px", }}
>
<span className="successBadge">{row.Adherence}</span>
</TableCell>
<TableCell
align="center"
style={{
fontWeight: 500,
borderBottom: "1px solid #F7FAFF",
fontSize: "12px",
}}
>
<Box
sx={{
display: "inline-block",
}}
>
<Tooltip title="Remove" placement="top">
<IconButton
aria-label="remove"
size="small"
color="danger"
className="danger mr-2px"
sx={{ background: '#ece5e5' }}
>
<DeleteIcon fontSize="inherit" />
</IconButton>
</Tooltip>
<Tooltip title="Edit" placement="top">
<IconButton
aria-label="edit"
size="small"
color="primary"
className="primary ml-2px"
sx={{ background: '#ece5e5' }}
>
<DriveFileRenameOutlineIcon fontSize="inherit" />
</IconButton>
</Tooltip>
</Box>
</TableCell>
</TableRow>
))}
{emptyRows > 0 && (
<TableRow style={{ height: 53 * emptyRows }}>
<TableCell
colSpan={7}
style={{ borderBottom: "1px solid #F7FAFF" }}
/>
</TableRow>
)}
</TableBody>
<TableFooter>
<TableRow>
<TablePagination
rowsPerPageOptions={[5, 10, 25, { label: "All", value: -1 }]}
colSpan={7}
count={rows.length}
rowsPerPage={rowsPerPage}
page={page}
SelectProps={{
inputProps: {
"aria-label": "rows per page",
},
native: true,
}}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
ActionsComponent={AgentPerformances}
style={{ borderBottom: "none" }}
/>
</TableRow>
</TableFooter>
</Table>
</TableContainer>
</Card>
</>
);
}
@@ -0,0 +1,43 @@
import React from "react";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
const AverageSpeedOfAnswer = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mb: "30px",
}}
>
<Typography as="h5" fontSize="16px" fontWeight="500">
Average Speed of Answer
</Typography>
<Typography as="h3" fontSize="28px" fontWeight="700" color="#5B5B98">
01<span style={{ fontSize: "12px" }}>m</span> : 20
<span style={{ fontSize: "12px" }}>s</span>
</Typography>
</Box>
<Box sx={{ textAlign: 'center' }}>
<img src="/images/chart3.png" alt="chart" />
</Box>
</Card>
</>
);
};
export default AverageSpeedOfAnswer;
@@ -0,0 +1,59 @@
import React, { Component } from "react";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
class CustomerSatisfactionChart extends Component {
constructor(props) {
super(props);
this.state = {
series: [80, 75, 70, 60],
options: {
plotOptions: {
radialBar: {
dataLabels: {
name: {
offsetY: -2,
show: true,
},
value: {
show: true,
offsetY: 3,
fontWeight: "600",
},
total: {
show: true,
label: "Overall",
},
},
hollow: {
size: "45%",
},
},
},
colors: ["#757FEF", "#2DB6F5", "#8BD3F4", "#BFE9FF"],
labels: ["Excellent", "Very Good", "Good", "Unhappy"],
legend: {
show: false,
},
},
};
}
render() {
return (
<>
<Chart
options={this.state.options}
series={this.state.series}
height="290"
type="radialBar"
/>
</>
);
}
}
export default CustomerSatisfactionChart;
@@ -0,0 +1,112 @@
import React from "react";
import { Box, Typography } from "@mui/material";
import Card from "@mui/material/Card";
import Menu from "@mui/material/Menu";
import MenuItem from "@mui/material/MenuItem";
import IconButton from "@mui/material/IconButton";
import MoreHorizIcon from "@mui/icons-material/MoreHoriz";
import CustomerSatisfactionChart from "./CustomerSatisfactionChart";
const CustomerSatisfaction = () => {
// Menu
const [anchorEl, setAnchorEl] = React.useState(null);
const open = Boolean(anchorEl);
const handleClick = (event) => {
setAnchorEl(event.currentTarget);
};
const handleClose = () => {
setAnchorEl(null);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Customer Satisfaction
</Typography>
<Box>
<IconButton
onClick={handleClick}
size="small"
aria-controls={open ? "account-menu" : undefined}
aria-haspopup="true"
aria-expanded={open ? "true" : undefined}
>
<MoreHorizIcon />
</IconButton>
</Box>
<Menu
anchorEl={anchorEl}
id="account-menu"
open={open}
onClose={handleClose}
onClick={handleClose}
PaperProps={{
elevation: 0,
sx: {
overflow: "visible",
filter: "drop-shadow(0px 2px 8px rgba(0,0,0,0.32))",
mt: 1.5,
"& .MuiAvatar-root": {
width: 32,
height: 32,
ml: -0.5,
mr: 1,
},
"&:before": {
content: '""',
display: "block",
position: "absolute",
top: 0,
right: 14,
width: 10,
height: 10,
bgcolor: "background.paper",
transform: "translateY(-50%) rotate(45deg)",
zIndex: 0,
},
},
}}
transformOrigin={{ horizontal: "right", vertical: "top" }}
anchorOrigin={{ horizontal: "right", vertical: "bottom" }}
>
<MenuItem sx={{ fontSize: "14px" }}>Today</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Month</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>Last Year</MenuItem>
<MenuItem sx={{ fontSize: "14px" }}>All Time</MenuItem>
</Menu>
</Box>
{/* CustomerSatisfactionChart */}
<CustomerSatisfactionChart />
</Card>
</>
);
};
export default CustomerSatisfaction;
+104
View File
@@ -0,0 +1,104 @@
import React from "react";
import Grid from "@mui/material/Grid";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import Typography from "@mui/material/Typography";
const FeaturesData = [
{
id: "1",
bgColor: "#EEF0FA",
number: "199",
subTitle: "New Tickets",
icon: "/images/coupon-icon.png",
helpText: "From Average Yesterday",
},
{
id: "2",
bgColor: "#F8EEE2",
number: "207",
subTitle: "Open Tickets",
icon: "/images/shape-2-icon.png",
helpText: "From Average Yesterday",
},
{
id: "3",
bgColor: "#DDF0F1",
number: "30",
subTitle: "On Hold",
icon: "/images/stack-icon.png",
helpText: "From Average Yesterday",
},
{
id: "4",
bgColor: "#FBEAEA",
number: "150",
subTitle: "Unassigned",
icon: "/images/apps-icon.png",
helpText: "From Average Yesterday",
},
];
const Features = () => {
return (
<>
<Grid
container
justifyContent="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
{FeaturesData.map((feature) => (
<Grid item xs={12} sm={6} md={4} lg={3} key={feature.id}>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
backgroundColor: `${feature.bgColor}`
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mb: "10px"
}}
>
<Box>
<Typography
as="h1"
sx={{ fontSize: 28, fontWeight: 700 }}
>
{feature.number}
</Typography>
</Box>
<Box>
<img src={feature.icon} alt="icon" />
</Box>
</Box>
<Typography as="h3" fontSize={16} fontWeight={500} mb="5px">
{feature.subTitle}
</Typography>
<Typography
as="p"
sx={{
fontSize: "13px",
}}
>
{feature.helpText}
</Typography>
</Card>
</Grid>
))}
</Grid>
</>
);
};
export default Features;
@@ -0,0 +1,261 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import Link from "@mui/material/Link";
const SupportStatus = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px",
mb: "15px",
}}
>
{/* Card Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
mb: "20px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Support Status
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
className="select"
>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
This Week
</MenuItem>
<MenuItem value={2} sx={{ fontSize: "14px" }}>
This Month
</MenuItem>
<MenuItem value={3} sx={{ fontSize: "14px" }}>
This Year
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Time
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
<Box>
<Typography
as="h3"
sx={{
fontSize: 18,
color: "#5B5B98",
mb: "10px",
}}
>
<span className="primaryColor" style={{ fontWeight: "500" }}>
12,50846
</span>{" "}
Tickets
</Typography>
<Box
sx={{
borderRadius: "3px",
background: "#EEF0F6",
display: "flex",
mb: "20px",
}}
>
<Box
sx={{
width: "88px",
height: "10px",
borderRadius: "3px",
background: "#757FEF",
mr: "2px",
}}
></Box>
<Box
sx={{
width: "55px",
height: "10px",
borderRadius: "3px",
background: "#EE368C",
mr: "2px",
}}
></Box>
<Box
sx={{
width: "98px",
height: "10px",
borderRadius: "3px",
background: "#2DB6F5",
}}
></Box>
</Box>
<Box
sx={{
background: "#F7FAFF",
display: "flex",
alignItems: "center",
justifyContent: "space-between",
p: "15px 25px",
}}
className="bg-black"
>
<Typography
as="h4"
fontSize="15px"
color="#757FEF"
fontWeight="500"
>
Status
</Typography>
<Typography fontSize="15px" fontWeight="500">
% Change
</Typography>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
p: "15px 10px",
borderBottom: "1px solid #F7FAFF",
}}
className="for-dark-bottom-border"
>
<Box fontSize={15}>
<span
style={{
background: "#757FEF",
width: "7px",
height: "7px",
borderRadius: "30px",
display: "inline-block",
marginRight: "5px",
position: "relative",
top: "-2px",
}}
></span>{" "}
Resolved Tickets
</Box>
<span className="primaryBadge">+2.48%</span>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
p: "15px 10px",
borderBottom: "1px solid #F7FAFF",
}}
className="for-dark-bottom-border"
>
<Box fontSize={15}>
<span
style={{
background: "#2DB6F5",
width: "7px",
height: "7px",
borderRadius: "30px",
display: "inline-block",
marginRight: "5px",
position: "relative",
top: "-2px",
}}
></span>{" "}
Open Tickets
</Box>
<span className="primaryBadge">+1.21%</span>
</Box>
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
p: "15px 10px",
borderBottom: "1px solid #F7FAFF",
}}
className="for-dark-bottom-border"
>
<Box fontSize={15}>
<span
style={{
background: "#EE368C",
width: "7px",
height: "7px",
borderRadius: "30px",
display: "inline-block",
marginRight: "5px",
position: "relative",
top: "-2px",
}}
></span>{" "}
Unresolved Tickets
</Box>
<span className="dangerBadge">-0.50%</span>
</Box>
<Link
href="#"
underline="none"
sx={{
borderRadius: "10px",
background: "rgba(117, 127, 239, 0.10)",
color: "#757FEF",
fontSize: "15px",
fontWeight: "500",
display: "block",
textAlign: "center",
p: "13px 10px",
mt: "25px",
}}
>
Create New Ticket
</Link>
</Box>
</Card>
</>
);
};
export default SupportStatus;
@@ -0,0 +1,264 @@
import React from "react";
import { Box } from "@mui/material";
import Card from "@mui/material/Card";
import { Typography } from "@mui/material";
import Grid from "@mui/material/Grid";
import dynamic from "next/dynamic";
const Chart = dynamic(() => import("react-apexcharts"), {
ssr: false,
});
import InputLabel from "@mui/material/InputLabel";
import MenuItem from "@mui/material/MenuItem";
import FormControl from "@mui/material/FormControl";
import Select from "@mui/material/Select";
import TrendingUpIcon from "@mui/icons-material/TrendingUp";
import TrendingDownIcon from "@mui/icons-material/TrendingDown";
import ProgressBar from "@ramonak/react-progress-bar";
const TicketsStatus = () => {
// Select Form
const [select, setSelect] = React.useState("");
const handleChange = (event) => {
setSelect(event.target.value);
};
// Chart
const series = [
{
name: "Open",
data: [10, 20, 15, 12, 9, 11, 6],
},
{
name: "Closed",
data: [-10, -10, -15, -12, -9, -11, -6],
},
];
const options = {
chart: {
stacked: true,
toolbar: {
show: false,
},
},
colors: ["#2DB6F5", "#757FEF"],
plotOptions: {
bar: {
borderRadius: 5,
columnWidth: "15%",
borderRadiusWhenStacked: "last",
},
},
dataLabels: {
enabled: false,
},
grid: {
xaxis: {
lines: {
show: false,
},
},
show: true,
strokeDashArray: 5,
borderColor: "#EDEFF5",
},
yaxis: {
labels: {
style: {
colors: "#a9a9c8",
fontSize: "14px",
},
},
},
xaxis: {
axisBorder: {
show: false,
},
categories: ["Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri"],
labels: {
style: {
colors: "#a9a9c8",
fontSize: "14px",
},
},
},
legend: {
show: false,
},
};
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 25px 10px",
mb: "15px",
}}
>
{/* Card Header */}
<Box
sx={{
display: "flex",
alignItems: "center",
justifyContent: "space-between",
borderBottom: "1px solid #EEF0F7",
paddingBottom: "10px",
}}
className="for-dark-bottom-border"
>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
Tickets Status
</Typography>
<Box>
<FormControl sx={{ minWidth: 120 }} size="small">
<InputLabel id="demo-select-small" sx={{ fontSize: "14px" }}>
Select
</InputLabel>
<Select
labelId="demo-select-small"
id="demo-select-small"
value={select}
label="Select"
onChange={handleChange}
sx={{ fontSize: "14px" }}
className="select"
>
<MenuItem value={1} sx={{ fontSize: "14px" }}>
This Week
</MenuItem>
<MenuItem value={2} sx={{ fontSize: "14px" }}>
This Month
</MenuItem>
<MenuItem value={3} sx={{ fontSize: "14px" }}>
This Year
</MenuItem>
<MenuItem value={4} sx={{ fontSize: "14px" }}>
All Time
</MenuItem>
</Select>
</FormControl>
</Box>
</Box>
{/* Chart */}
<Grid
container
alignItems="center"
rowSpacing={1}
columnSpacing={{ xs: 1, sm: 2, md: 2 }}
>
<Grid item xs={12} md={8} lg={8} xl={8}>
<Chart options={options} series={series} type="bar" height={282} />
</Grid>
<Grid item xs={12} md={4} lg={4} xl={4}>
{/* New Tickets */}
<Box
sx={{
borderRadius: "5px",
background: "rgba(117, 127, 239, 0.10)",
p: "22px 20px",
mb: "10px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
mb: "15px",
}}
>
<Box>
<Typography as="p" mb="3px">
New Tickets
</Typography>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
12,50846
</Typography>
</Box>
<Box sx={{ display: "flex" }}>
<TrendingUpIcon className="successColor" sx={{ mr: "5px" }} />{" "}
+2.48%
</Box>
</Box>
<ProgressBar
completed={30}
height="8px"
labelSize="7px"
baseBgColor="#fff"
bgColor="#757FEF"
/>
</Box>
{/* Solved Tickets */}
<Box
sx={{
borderRadius: "5px",
background: "rgba(45, 182, 245, 0.10)",
p: "22px 20px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
mb: "15px",
}}
>
<Box>
<Typography as="p" mb="3px">
Solved Tickets
</Typography>
<Typography
as="h3"
sx={{
fontSize: 18,
fontWeight: 500,
}}
>
10,431
</Typography>
</Box>
<Box sx={{ display: "flex" }}>
<TrendingDownIcon
className="dangerColor"
sx={{ mr: "5px" }}
/>{" "}
-1.02%
</Box>
</Box>
<ProgressBar
completed={40}
height="8px"
labelSize="7px"
baseBgColor="#fff"
bgColor="#2DB6F5"
/>
</Box>
</Grid>
</Grid>
</Card>
</>
);
};
export default TicketsStatus;
@@ -0,0 +1,43 @@
import React from "react";
import Card from "@mui/material/Card";
import Box from "@mui/material/Box";
import Typography from "@mui/material/Typography";
const TimeToResolveComplaint = () => {
return (
<>
<Card
sx={{
boxShadow: "none",
borderRadius: "10px",
p: "25px 20px",
mb: "15px",
}}
>
<Box
sx={{
display: "flex",
justifyContent: "space-between",
alignItems: "center",
mb: "30px",
}}
>
<Typography as="h5" fontSize="16px" fontWeight="500">
Time to Resolve Complaint
</Typography>
<Typography as="h3" fontSize="28px" fontWeight="700" color="#5B5B98">
03<span style={{ fontSize: "12px" }}>m</span> : 00
<span style={{ fontSize: "12px" }}>s</span>
</Typography>
</Box>
<Box sx={{ textAlign: 'center' }}>
<img src="/images/chart4.png" alt="chart" />
</Box>
</Card>
</>
);
};
export default TimeToResolveComplaint;

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