commit 5f95d857d468fd617f1cec8ad9f3ab70be108cca Author: CHIEFSOFT\ameye Date: Sat Oct 14 22:02:57 2023 -0400 first commit diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..bffb357 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,3 @@ +{ + "extends": "next/core-web-vitals" +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c87c9b3 --- /dev/null +++ b/.gitignore @@ -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 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -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 diff --git a/.idea/CMS-Clent.iml b/.idea/CMS-Clent.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/CMS-Clent.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..03d9549 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..3e8dfc6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..f324872 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b12f3e3 --- /dev/null +++ b/README.md @@ -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. diff --git a/components/Analytics/Customers/CustomersDetails.js b/components/Analytics/Customers/CustomersDetails.js new file mode 100644 index 0000000..6a30c87 --- /dev/null +++ b/components/Analytics/Customers/CustomersDetails.js @@ -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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + Customers Details + + + + + + + + + Name + + + + Email + + + + Rolls + + + + Status + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.rolls} + + + + {row.status} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Analytics/Customers/NetIncome.js b/components/Analytics/Customers/NetIncome.js new file mode 100644 index 0000000..b389cec --- /dev/null +++ b/components/Analytics/Customers/NetIncome.js @@ -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 ( + <> + + + + + + + + + + + Net Income + + + $438.5k + + + + + + + + + + + + + + + + + + + + ); +}; + +export default NetIncome; diff --git a/components/Analytics/Customers/NewSessions.js b/components/Analytics/Customers/NewSessions.js new file mode 100644 index 0000000..59dc5a9 --- /dev/null +++ b/components/Analytics/Customers/NewSessions.js @@ -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 ( + <> + + + + + + + + + + + New Sessions + + + 1,500 + + + + + + + + + + + + + + + + + + + + ); +}; + +export default NewSessions; diff --git a/components/Analytics/Customers/VisitsByDay.js b/components/Analytics/Customers/VisitsByDay.js new file mode 100644 index 0000000..1019cf7 --- /dev/null +++ b/components/Analytics/Customers/VisitsByDay.js @@ -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 ( + <> + + + + + + + + + + + Visits By Day + + + 1,802 + + + + + + + + + + + + + + + + + + + + ); +}; + +export default VisitsByDay; diff --git a/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css b/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css new file mode 100644 index 0000000..fded2c4 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/AvarageReportList.module.css @@ -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); +} \ No newline at end of file diff --git a/components/Analytics/Reports/AvarageReport/RevenueChart.js b/components/Analytics/Reports/AvarageReport/RevenueChart.js new file mode 100644 index 0000000..be53021 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/RevenueChart.js @@ -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 ( + <> + + + ); + } +} + +export default RevenueChart; diff --git a/components/Analytics/Reports/AvarageReport/index.js b/components/Analytics/Reports/AvarageReport/index.js new file mode 100644 index 0000000..4465ac6 --- /dev/null +++ b/components/Analytics/Reports/AvarageReport/index.js @@ -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 ( + <> + + + + Avarage Report + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* RevenueChart */} + + + <> +
+

Avg. Session

+
+
972
+

+ 49% +

+
+
+ +
+

Conversion Rate

+
+
102
+

+ 18% +

+
+
+ +
+

Avg. Duration

+
+
3m
+

+ 42% +

+
+
+ +
+

Weekly Earning

+
+
$972
+

+ 28% +

+
+
+ +
+

Monthly Revenue

+
+
50k
+

+ 70% +

+
+
+ +
+

Order Rate

+
+
1026
+

+ 18% +

+
+
+ +
+

Avg. Visitors

+
+
1.5k
+

+ 42% +

+
+
+ +
+

Avg. Sales

+
+
1250k
+

+ 42% +

+
+
+ +
+ + ); +}; + +export default AvarageReport; diff --git a/components/Analytics/Reports/BrowserUsedAndTrafficReports.js b/components/Analytics/Reports/BrowserUsedAndTrafficReports.js new file mode 100644 index 0000000..a9ee629 --- /dev/null +++ b/components/Analytics/Reports/BrowserUsedAndTrafficReports.js @@ -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 ( + + + {theme.direction === "rtl" ? : } + + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + Browser Used & Traffic Reports + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Channel + + + + Sessions + + + + Prev.Period + + + + Transactions + + + + Con.Rate + + + + Bounce Rate + + + + % Change + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.channel} + + + + {row.sessions}{" "} + + {row.sessionsProgress} + + + + + {row.prevPeriod}{" "} + + {row.prevPeriodProgress} + + + + + {row.transactions}{" "} + + {row.transactionsProgress} + + + + + {row.conRate} + + + + {row.bounceRate} + + + + + {row.change}{" "} + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default BrowserUsedAndTrafficReports; diff --git a/components/Apps/Calendar/Events.js b/components/Apps/Calendar/Events.js new file mode 100644 index 0000000..de64ca7 --- /dev/null +++ b/components/Apps/Calendar/Events.js @@ -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; diff --git a/components/Apps/Chat/ChatBox.js b/components/Apps/Chat/ChatBox.js new file mode 100644 index 0000000..6b81d83 --- /dev/null +++ b/components/Apps/Chat/ChatBox.js @@ -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 ( + <> + + {/* Header */} + + + user + + + Laurent Perrier + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + 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. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBox; diff --git a/components/Apps/Chat/ChatBoxThree.js b/components/Apps/Chat/ChatBoxThree.js new file mode 100644 index 0000000..32cd2a4 --- /dev/null +++ b/components/Apps/Chat/ChatBoxThree.js @@ -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 ( + <> + + {/* Header */} + + + user + + + Bernard Langley + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + 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. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBoxThree; diff --git a/components/Apps/Chat/ChatBoxTwo.js b/components/Apps/Chat/ChatBoxTwo.js new file mode 100644 index 0000000..436142d --- /dev/null +++ b/components/Apps/Chat/ChatBoxTwo.js @@ -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 ( + <> + + {/* Header */} + + + user + + + Nunez Faulkner + + + Active + Now + + + + + + + + + + + + + + + + + + + + {/* Chat List */} +
+ {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Pharetra ligula non varius curabitur etiam malesuada. Congue + eget luctus aliquet consectetur. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + Lorem ipsum dolor sit amet 🔥! Lorem ipsum dolor sit amet, + consectetur adipiscing elit. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+ + {/* Right Chat */} + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+ + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem + ipsum dolor sit + + + + 19:04 + + +
+ + user +
+ + {/* Left Chat */} + + user + + + + 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. + + + 19:04 + + + {/* Replay Dropdown */} + +
+ + + + +
+ + + + + + + + + + + + + + + +
+
+
+
+
+
+ + {/* Footer */} + + + + + + + + + + + + + + + + + +
+ + ); +}; + +export default ChatBoxTwo; diff --git a/components/Apps/FileManager/AllAssets.js b/components/Apps/FileManager/AllAssets.js new file mode 100644 index 0000000..f706b4b --- /dev/null +++ b/components/Apps/FileManager/AllAssets.js @@ -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 ( + <> + + {AssetsData.map((asset) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {asset.title} + + + + + {asset.totalFiles} + {asset.filesSize} + + + + ))} + + + ); +}; + +export default AllAssets; diff --git a/components/Apps/FileManager/AllProjects.js b/components/Apps/FileManager/AllProjects.js new file mode 100644 index 0000000..921b9f7 --- /dev/null +++ b/components/Apps/FileManager/AllProjects.js @@ -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 ( + <> + + {ProjectsData.map((project) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {project.title} + + + + + {project.totalFiles} + {project.filesSize} + + + + ))} + + + ); +}; + +export default AllProjects; diff --git a/components/Apps/FileManager/AllRecentFiles.js b/components/Apps/FileManager/AllRecentFiles.js new file mode 100644 index 0000000..05c975a --- /dev/null +++ b/components/Apps/FileManager/AllRecentFiles.js @@ -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 ( + <> + + + + Recent Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + ); +}; + +export default AllRecentFiles; diff --git a/components/Apps/FileManager/DocumentsFiles.js b/components/Apps/FileManager/DocumentsFiles.js new file mode 100644 index 0000000..6922a2f --- /dev/null +++ b/components/Apps/FileManager/DocumentsFiles.js @@ -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 ( + <> + + + + Documents + + + + + + + {FilesData.map((file) => ( + + + Icon + + {file.title} + + + + ))} + + + + {/* Create Files Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Files Name + + + + + + + + + + + + + + + + ); +}; + +export default DocumentsFiles; diff --git a/components/Apps/FileManager/Files.js b/components/Apps/FileManager/Files.js new file mode 100644 index 0000000..fa9d520 --- /dev/null +++ b/components/Apps/FileManager/Files.js @@ -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 ( + <> + + + + Files + + + + + + + {FilesData.map((file) => ( + + + Icon + + {file.title} + + + + ))} + + + + {/* Create Files Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Files Name + + + + + + + + + + + + + + + + ); +}; + +export default Files; diff --git a/components/Apps/FileManager/ImportantFiles.js b/components/Apps/FileManager/ImportantFiles.js new file mode 100644 index 0000000..d03e613 --- /dev/null +++ b/components/Apps/FileManager/ImportantFiles.js @@ -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 ( + <> + + + + Important Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + + ); +}; + +export default ImportantFiles; diff --git a/components/Apps/FileManager/LeftSidebar.js b/components/Apps/FileManager/LeftSidebar.js new file mode 100644 index 0000000..f6c2e77 --- /dev/null +++ b/components/Apps/FileManager/LeftSidebar.js @@ -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 ( + <> + + + My Drive + + + {/* Search */} + + + + + + + + {/* Nav */} +
    +
  • + + My Drive + + +
      +
    • + Assets +
    • + +
    • + Projects +
    • + +
    • + Personal +
    • + +
    • + Templates +
    • +
    +
  • + +
  • + + Documents + +
  • + +
  • + + Media + +
  • + +
  • + + Recents + +
  • + +
  • + + Important + +
  • + +
  • + + Trash + +
  • +
+ + {/* Storage status */} + + + Storage Status + + + + + + 186.5 GB Used of 120 GB + + +
+ + ); +}; + +export default LeftSidebar; diff --git a/components/Apps/FileManager/LeftSidebar.module.css b/components/Apps/FileManager/LeftSidebar.module.css new file mode 100644 index 0000000..cc9e9b9 --- /dev/null +++ b/components/Apps/FileManager/LeftSidebar.module.css @@ -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); +} \ No newline at end of file diff --git a/components/Apps/FileManager/MediaFiles.js b/components/Apps/FileManager/MediaFiles.js new file mode 100644 index 0000000..a9db080 --- /dev/null +++ b/components/Apps/FileManager/MediaFiles.js @@ -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 ( + <> + + + + Media + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default MediaFiles; diff --git a/components/Apps/FileManager/MyDrive.js b/components/Apps/FileManager/MyDrive.js new file mode 100644 index 0000000..59ae144 --- /dev/null +++ b/components/Apps/FileManager/MyDrive.js @@ -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 ( + <> + + {MyDriveData.map((dInfo) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {dInfo.title} + + + + + {dInfo.totalFiles} + {dInfo.filesSize} + + + + ))} + + + ); +}; + +export default MyDrive; diff --git a/components/Apps/FileManager/PersonalFiles.js b/components/Apps/FileManager/PersonalFiles.js new file mode 100644 index 0000000..8f186aa --- /dev/null +++ b/components/Apps/FileManager/PersonalFiles.js @@ -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 ( + <> + + {PersonalFilesData.map((file) => ( + + + + + + + + + + + Rename + + + Download + + + Remove + + + + + + folder + + {file.title} + + + + + {file.totalFiles} + {file.filesSize} + + + + ))} + + + ); +}; + +export default PersonalFiles; diff --git a/components/Apps/FileManager/RecentFiles.js b/components/Apps/FileManager/RecentFiles.js new file mode 100644 index 0000000..b1da4ca --- /dev/null +++ b/components/Apps/FileManager/RecentFiles.js @@ -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 ( + <> + + + + Recent Files + + + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + {/* Create Folder Modal */} + + + + + + Create Folder + + + + + + + + + + + + + Folder Name + + + + + + + + + + + + + + + + ); +}; + +export default RecentFiles; diff --git a/components/Apps/FileManager/TemplateFiles.js b/components/Apps/FileManager/TemplateFiles.js new file mode 100644 index 0000000..5104dc5 --- /dev/null +++ b/components/Apps/FileManager/TemplateFiles.js @@ -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 ( + <> + + + + Templates + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default TemplateFiles; diff --git a/components/Apps/FileManager/TrashFiles.js b/components/Apps/FileManager/TrashFiles.js new file mode 100644 index 0000000..8b39c45 --- /dev/null +++ b/components/Apps/FileManager/TrashFiles.js @@ -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 ( + <> + + + + Trash Files + + + + + + + + + Name + + + + Owner + + + + File Size + + + + Listed Date + + + + File Item + + + + Actions + + + + + + {rows.map((row) => ( + + + + Image + + {row.name} + + + + + + {row.owner} + + + + {row.fileSize} + + + + {row.listedDate} + + + + {row.fileItem} + + + + + + + + + + + + + ))} + +
+
+
+ + ); +}; + +export default TrashFiles; diff --git a/components/Apps/ToDoLists.js b/components/Apps/ToDoLists.js new file mode 100644 index 0000000..93f76df --- /dev/null +++ b/components/Apps/ToDoLists.js @@ -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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + My Tasks + + + + + + + + + + + Name + + + + Assigned + + + + Start Date + + + + End Date + + + + Status + + + + Completion + + + + Priority + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.name} + + + + + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.completion} + + + + {row.priority} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + {/* Add task modal */} + + + + + Add Task + + + + + + + + + + + + + Task + + + + + + + + Member + + + + + + + + Start Date + + + + + + + + End Date + + + + + + + + Status + + + + + + + + Completion + + + + + + + + Priority + + + + + + + + + + + + + + + + + ); +}; + +export default ToDoLists; diff --git a/components/Authentication/Authentication.module.css b/components/Authentication/Authentication.module.css new file mode 100644 index 0000000..342723d --- /dev/null +++ b/components/Authentication/Authentication.module.css @@ -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; + } +} \ No newline at end of file diff --git a/components/Authentication/ForgotPasswordForm.js b/components/Authentication/ForgotPasswordForm.js new file mode 100644 index 0000000..2cbcb86 --- /dev/null +++ b/components/Authentication/ForgotPasswordForm.js @@ -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 ( + <> +
+ + + + + Forgot Password?{" "} + favicon + + + + Enter your email and we′ll send you instructions to reset your + password + + + + + + + + Email + + + + + + + + + + + + + Back to Sign in + + + + + +
+ + ); +}; + +export default ForgotPasswordForm; diff --git a/components/Authentication/LockScreenForm.js b/components/Authentication/LockScreenForm.js new file mode 100644 index 0000000..f65d1b7 --- /dev/null +++ b/components/Authentication/LockScreenForm.js @@ -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 ( + <> +
+ + + + +
+
+
+

Welcome to admash Dashboard!

+

+ Hello Andrew Burns, enter your password to unlock the + screen ! +

+
+ Working on table +
+
+ + +
+ Profile +

Andrew Burns

+
+ + + + + Password + + + + + + + + + +
+
+
+
+
+
+ + ); +}; + +export default LockScreenForm; diff --git a/components/Authentication/SignInForm.js b/components/Authentication/SignInForm.js new file mode 100644 index 0000000..f5bd1fe --- /dev/null +++ b/components/Authentication/SignInForm.js @@ -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 ( + <> +
+ + + + + Sign In{" "} + favicon + + + + Already have an account?{" "} + + Sign up + + + + + + + Sign in with Google + + + + + Sign in with Facebook + + + +
+ or +
+ + + + + + + Email + + + + + + + + Password + + + + + + + + + + + } + label="Remember me." + /> + + + + + Forgot your password? + + + + + + +
+
+
+
+ + ); +}; + +export default SignInForm; diff --git a/components/Authentication/SignUpForm.js b/components/Authentication/SignUpForm.js new file mode 100644 index 0000000..b1f68a7 --- /dev/null +++ b/components/Authentication/SignUpForm.js @@ -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 ( + <> +
+ + + + + Get’s started.{" "} + favicon + + + + Already have an account?{" "} + + Sign in + + + + + + Sign in with Google + + + + Sign in with Facebook + + + +
+ or +
+ + + + + + + First Name + + + + + + + + Last Name + + + + + + + + Email + + + + + + + + Password + + + + + + + + + + + } + label="Remember me." + /> + + + + + Forgot your password? + + + + + + +
+
+
+
+ + ); +}; + +export default SignUpForm; diff --git a/components/ContactList/ActivityTimeline/ActivityTimeline.module.css b/components/ContactList/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5d8b844 --- /dev/null +++ b/components/ContactList/ActivityTimeline/ActivityTimeline.module.css @@ -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; + } +} \ No newline at end of file diff --git a/components/ContactList/ActivityTimeline/index.js b/components/ContactList/ActivityTimeline/index.js new file mode 100644 index 0000000..265ecda --- /dev/null +++ b/components/ContactList/ActivityTimeline/index.js @@ -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 ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/ContactList/Features.js b/components/ContactList/Features.js new file mode 100644 index 0000000..c117228 --- /dev/null +++ b/components/ContactList/Features.js @@ -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 ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/ContactList/MyTasks.js b/components/ContactList/MyTasks.js new file mode 100644 index 0000000..f4375d7 --- /dev/null +++ b/components/ContactList/MyTasks.js @@ -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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + My Tasks + + + + + + + + + Name + + + + Start Date + + + + End Date + + + + Status + + + + Budget + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.name} + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.budget} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/ContactList/Overview.js b/components/ContactList/Overview.js new file mode 100644 index 0000000..ebf7cbf --- /dev/null +++ b/components/ContactList/Overview.js @@ -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 ( + <> + + + + Overview + + + + + Select + + + + + + + + + + ); +}; + +export default Overview; diff --git a/components/ContactList/PersonalInformation/index.js b/components/ContactList/PersonalInformation/index.js new file mode 100644 index 0000000..7ef4fbc --- /dev/null +++ b/components/ContactList/PersonalInformation/index.js @@ -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 ( + <> + + + + Personal Information + + + + + + About Me: + + + + 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. + + + {personalInfo.map((info) => ( + + + {info.title} + + + {info.text} + + ))} + + + + ); +}; + +export default PersonalInformation; diff --git a/components/ContactList/ProfileInfo/index.js b/components/ContactList/ProfileInfo/index.js new file mode 100644 index 0000000..49d3475 --- /dev/null +++ b/components/ContactList/ProfileInfo/index.js @@ -0,0 +1,21 @@ +import React from "react"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const ProfileInfo = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in + your profile. +

+
+ shape +
+ + ); +}; + +export default ProfileInfo; diff --git a/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5e5dcdb --- /dev/null +++ b/components/Dashboard/Analytics/ActivityTimeline/ActivityTimeline.module.css @@ -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); +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/ActivityTimeline/index.js b/components/Dashboard/Analytics/ActivityTimeline/index.js new file mode 100644 index 0000000..a404d3a --- /dev/null +++ b/components/Dashboard/Analytics/ActivityTimeline/index.js @@ -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 ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
+

{timeline.title}

+
+ Icon +
{timeline.subTitle}
+
+

{timeline.date}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/Analytics/AudienceOverview.js b/components/Dashboard/Analytics/AudienceOverview.js new file mode 100644 index 0000000..ea8661c --- /dev/null +++ b/components/Dashboard/Analytics/AudienceOverview.js @@ -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 ( + <> + + + + Audience Overview + + + + Select + + + + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/Analytics/BrowserUsedTrafficReports.js b/components/Dashboard/Analytics/BrowserUsedTrafficReports.js new file mode 100644 index 0000000..ab87f17 --- /dev/null +++ b/components/Dashboard/Analytics/BrowserUsedTrafficReports.js @@ -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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + Browser Used & Traffic Reports + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Browser + + + + Users + + + + Transactions + + + + % Change + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.browser} + + + + + {row.users} + + {row.usersProgress}% + + + + + + + + {row.transactions}{" "} + + {row.transactionsProgress} + + + + + + {row.change}{" "} + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default BrowserUsedTrafficReports; diff --git a/components/Dashboard/Analytics/Features.js b/components/Dashboard/Analytics/Features.js new file mode 100644 index 0000000..dc1b58a --- /dev/null +++ b/components/Dashboard/Analytics/Features.js @@ -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: , + growthText: "9.5% new session", + color: "successColor", + }, + { + id: "2", + subTitle: "Total Orders", + title: "155K", + image: "/images/graph-icon.png", + icon: , + growthText: "7.5% vs. previous month", + color: "dangerColor", + }, + { + id: "3", + subTitle: "Total Earning", + title: "$50.5M", + image: "/images/work-icon.png", + icon: , + growthText: "3.5% bounce rate", + color: "successColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + + + {feature.icon} + + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/Analytics/Gender/Gender.module.css b/components/Dashboard/Analytics/Gender/Gender.module.css new file mode 100644 index 0000000..61c468b --- /dev/null +++ b/components/Dashboard/Analytics/Gender/Gender.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Gender/index.js b/components/Dashboard/Analytics/Gender/index.js new file mode 100644 index 0000000..d4b7d02 --- /dev/null +++ b/components/Dashboard/Analytics/Gender/index.js @@ -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 ( + <> + + + + Gender + + + +
+
+
+

Male

+
45,347
+
+
+

+ 70% +

+
+
+ +
+
+

Female

+
20,738
+
+
+

+ 30% +

+
+
+
+ + +
+ + ); + } +} + +export default Gender; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js b/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js new file mode 100644 index 0000000..8146a41 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/Conversions.js @@ -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 ( + <> +
+ +

Conversions

+
+ + ); + } +} + +export default Conversions; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js b/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js new file mode 100644 index 0000000..537b4aa --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/GoalCompletions.js @@ -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 ( + <> +
+ +

Goal Completions

+
+ + ); + } +} + +export default GoalCompletions; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js new file mode 100644 index 0000000..56543d6 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.js @@ -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 ( + <> +
+ +

Impression Share

+
+ + ); + } +} + +export default ImpressionShare; diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css new file mode 100644 index 0000000..610a5b5 --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/ImpressionShare.module.css @@ -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; + } +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/ImpressionGoalConversions/index.js b/components/Dashboard/Analytics/ImpressionGoalConversions/index.js new file mode 100644 index 0000000..8fdb39d --- /dev/null +++ b/components/Dashboard/Analytics/ImpressionGoalConversions/index.js @@ -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 ( + <> +
+ + + + + + + + + + + + + +
+ + ); +}; + +export default ImpressionGoalConversions; diff --git a/components/Dashboard/Analytics/NewReturning/NewReturning.module.css b/components/Dashboard/Analytics/NewReturning/NewReturning.module.css new file mode 100644 index 0000000..c8a751c --- /dev/null +++ b/components/Dashboard/Analytics/NewReturning/NewReturning.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/NewReturning/index.js b/components/Dashboard/Analytics/NewReturning/index.js new file mode 100644 index 0000000..efd6961 --- /dev/null +++ b/components/Dashboard/Analytics/NewReturning/index.js @@ -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 ( + <> + + + + New vs. Returning + + + +
+
+
+

New

+
36,868
+
+
+

+ 75% +

+
+
+ +
+
+

Returning

+
9,217
+
+
+

+ 25% +

+
+
+
+ + +
+ + ); + } +} + +export default NewReturning; diff --git a/components/Dashboard/Analytics/RevenueReport.js b/components/Dashboard/Analytics/RevenueReport.js new file mode 100644 index 0000000..996dddf --- /dev/null +++ b/components/Dashboard/Analytics/RevenueReport.js @@ -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 ( + <> + + + + Revenue Report + + + + + + + ); +}; + +export default RevenueReport; diff --git a/components/Dashboard/Analytics/SalesAnalytics.js b/components/Dashboard/Analytics/SalesAnalytics.js new file mode 100644 index 0000000..73d762c --- /dev/null +++ b/components/Dashboard/Analytics/SalesAnalytics.js @@ -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 ( + <> + + + + Sales Analytics + + + + + Select + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + ); +}; + +export default SalesAnalytics; diff --git a/components/Dashboard/Analytics/SessionsByCountries.js b/components/Dashboard/Analytics/SessionsByCountries.js new file mode 100644 index 0000000..1099d4d --- /dev/null +++ b/components/Dashboard/Analytics/SessionsByCountries.js @@ -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 ( + <> + + + + Sessions By Countries + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + ); +}; + +export default SessionsByCountries; diff --git a/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css b/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css new file mode 100644 index 0000000..1985726 --- /dev/null +++ b/components/Dashboard/Analytics/SessionsDevice/SessionsDevice.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/SessionsDevice/index.js b/components/Dashboard/Analytics/SessionsDevice/index.js new file mode 100644 index 0000000..41a3e2f --- /dev/null +++ b/components/Dashboard/Analytics/SessionsDevice/index.js @@ -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 ( + <> + + + + Sessions Device + + + +
+
+
+

Mobile

+
15,684
+
+
+

+ 50% +

+
+
+ +
+
+

Laptop

+
36,868
+
+
+

+ 60% +

+
+
+
+ + +
+ + ); + } +} + +export default SessionsDevice; diff --git a/components/Dashboard/Analytics/Terminals/Terminals.module.css b/components/Dashboard/Analytics/Terminals/Terminals.module.css new file mode 100644 index 0000000..ad59ea3 --- /dev/null +++ b/components/Dashboard/Analytics/Terminals/Terminals.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Terminals/index.js b/components/Dashboard/Analytics/Terminals/index.js new file mode 100644 index 0000000..0bc2786 --- /dev/null +++ b/components/Dashboard/Analytics/Terminals/index.js @@ -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 ( + <> + + + + Terminals + + + +
+
+

$27632

+

Monthly Earning

+
+ +
+

82.9k

+

Users

+
+ +
+

0.9k

+

Inactive

+
+ +
    +
  • Monthly Earning
  • +
  • Users
  • +
  • Inactive
  • +
+
+
+ + ); +}; + +export default Terminals; diff --git a/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js b/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js new file mode 100644 index 0000000..be53021 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/RevenueChart.js @@ -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 ( + <> + + + ); + } +} + +export default RevenueChart; diff --git a/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css b/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css new file mode 100644 index 0000000..d2ddb15 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/TotalRevenueList.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/TotalRevenue/index.js b/components/Dashboard/Analytics/TotalRevenue/index.js new file mode 100644 index 0000000..b9d8f14 --- /dev/null +++ b/components/Dashboard/Analytics/TotalRevenue/index.js @@ -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 ( + <> + + + + Total Revenue + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* RevenueChart */} + + + <> +
+

Avg. Session

+
+
972
+

+ 49% +

+
+
+ +
+

Conversion Rate

+
+
102
+

+ 18% +

+
+
+ +
+

Avg. Duration

+
+
3m
+

+ 42% +

+
+
+ +
+

Weekly Earning

+
+
$972
+

+ 28% +

+
+
+ +
+

Monthly Revenue

+
+
50k
+

+ 70% +

+
+
+ +
+ + ); +}; + +export default TotalRevenue; diff --git a/components/Dashboard/Analytics/TotalTransactions.js b/components/Dashboard/Analytics/TotalTransactions.js new file mode 100644 index 0000000..188915a --- /dev/null +++ b/components/Dashboard/Analytics/TotalTransactions.js @@ -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 ( + <> + + + + Total Transactions + + + + + + + ); +}; + +export default TotalTransactions; diff --git a/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css b/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css new file mode 100644 index 0000000..d994b63 --- /dev/null +++ b/components/Dashboard/Analytics/VisitorsAge/VisitorsAge.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/VisitorsAge/index.js b/components/Dashboard/Analytics/VisitorsAge/index.js new file mode 100644 index 0000000..9eef694 --- /dev/null +++ b/components/Dashboard/Analytics/VisitorsAge/index.js @@ -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 ( + <> + + + + Visitors Age + + + +
+
+
+

Under 30

+
16,868
+
+
+

+ 32% +

+
+
+ +
+
+

Over 30

+
31,868
+
+
+

+ 68% +

+
+
+
+ + +
+ + ); + } +} + +export default VisitorsAge; diff --git a/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js new file mode 100644 index 0000000..8cdd901 --- /dev/null +++ b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/NetIncome.js @@ -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 ( + <> + + + + + + + + + + Net Income + + + $438.5k + + + + + + + + + + + + + + + + + + + ); +}; + +export default NetIncome; diff --git a/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js new file mode 100644 index 0000000..5f6468f --- /dev/null +++ b/components/Dashboard/Analytics/VisitsByDayAndNetIncome/index.js @@ -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 ( + <> + + + + + + + + + + + Visits By Day + + + 1,802 + + + + + + + + + + + + + + + + + + + {/* NetIncome */} + + + + ); +}; + +export default VisitsByDayAndNetIncome; diff --git a/components/Dashboard/Analytics/Welcome/Welcome.module.css b/components/Dashboard/Analytics/Welcome/Welcome.module.css new file mode 100644 index 0000000..a253810 --- /dev/null +++ b/components/Dashboard/Analytics/Welcome/Welcome.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Analytics/Welcome/index.js b/components/Dashboard/Analytics/Welcome/index.js new file mode 100644 index 0000000..596fff4 --- /dev/null +++ b/components/Dashboard/Analytics/Welcome/index.js @@ -0,0 +1,21 @@ +import React from "react"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const Welcome = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in your + profile. +

+
+ shape +
+ + ); +}; + +export default Welcome; diff --git a/components/Dashboard/Crypto/CurrentRate.js b/components/Dashboard/Crypto/CurrentRate.js new file mode 100644 index 0000000..c6c1fb2 --- /dev/null +++ b/components/Dashboard/Crypto/CurrentRate.js @@ -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 ( + <> + + {/* Header */} + + + Current Rate + + + + + Select + + + + + + + {/* Card */} + + + + + + matic + + + + +1.3% + + + + + + 0.451269 + + + + $12,06547.00 + + + + + + + + + + btc + + + + +2.48% + + + + + + 1.111211 + + + + $14,32522.00 + + + + + + + + + + comp + + + + -0.5% + + + + + + 0.451269 + + + + $12,06547.00 + + + + + + + + ); +}; + +export default CurrentRate; diff --git a/components/Dashboard/Crypto/Features.js b/components/Dashboard/Crypto/Features.js new file mode 100644 index 0000000..e893747 --- /dev/null +++ b/components/Dashboard/Crypto/Features.js @@ -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: , + growth: "+1.3%", + growthText: "Up from past week", + color: "successColor", + }, + { + id: "2", + amount: "$10,324", + title: "Total Changed", + image: "/images/icon6.png", + icon: , + growth: "-2.5%", + growthText: "Up from past week", + color: "dangerColor", + }, + { + id: "3", + amount: "$100", + title: "Day Changed", + image: "/images/icon7.png", + icon: , + growth: "+0.4%", + growthText: "Up from past week", + color: "successColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.title} + + + + + Graph + + + + + {feature.amount} + + + + + {feature.growthText} + + {feature.icon}{" "} + {feature.growth} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css b/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css new file mode 100644 index 0000000..e0b6334 --- /dev/null +++ b/components/Dashboard/Crypto/MarketGraph/MarketGraph.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Crypto/MarketGraph/index.js b/components/Dashboard/Crypto/MarketGraph/index.js new file mode 100644 index 0000000..1e716fc --- /dev/null +++ b/components/Dashboard/Crypto/MarketGraph/index.js @@ -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 ( + <> + + + + Market Graph + + + + + + + + + + + + + + + + + bitcoin + + + Bitcoin (BTC) 6.5%{" "} + + + + $35,294.90 + + + + + + +
+ + Market Cap: 0.546218602 + + + + Supply: 0.546218602 + +
+
+
+ + +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+
+
+ + ); + } +} + +export default MarketGraph; diff --git a/components/Dashboard/Crypto/MyCurrencies.js b/components/Dashboard/Crypto/MyCurrencies.js new file mode 100644 index 0000000..53a4e71 --- /dev/null +++ b/components/Dashboard/Crypto/MyCurrencies.js @@ -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 Header */} + + + My Currencies + + + + + + + + + + + + {/* Table */} + + + + + + Coin Name + + + + Price + + + + 24h Change + + + + Total Balance + + + + Total Coin + + + + Operation + + + + + + + + bitcoin + + + Bitcoin + + + + + $48,568.025 + + + + + +2.48% + + + + + 12,565.75 USD + + + + + 0.2040 BTC + + + + + + + + + + ethereum + + + Ethereum + + + + + $1,876.76 + + + + + -3.48% + + + + + 4,565.75 USD + + + + + 0.2040 ETH + + + + + + + + + + binance + + + Binance + + + + + $278.87 + + + + + +1.08% + + + + + 20,565.75 USD + + + + + 0.2040 BTC + + + + + + + + + + litecoin + + + Litecoin + + + + + $89.98 + + + + + +2.05% + + + + + 7,565.75 USD + + + + + 0.2040 LTC + + + + + + + + + + cardano + + + Cardano + + + + + $37.32 + + + + + -1.01% + + + + + 1,431.75 USD + + + + + 0.2040 CDR + + + + + + + +
+
+
+ + ); +}; + +export default MyCurrencies; diff --git a/components/Dashboard/Crypto/MyProfile/MyProfile.module.css b/components/Dashboard/Crypto/MyProfile/MyProfile.module.css new file mode 100644 index 0000000..be4598c --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/MyProfile.module.css @@ -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; +} + \ No newline at end of file diff --git a/components/Dashboard/Crypto/MyProfile/MyProfileChart.js b/components/Dashboard/Crypto/MyProfile/MyProfileChart.js new file mode 100644 index 0000000..224b262 --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/MyProfileChart.js @@ -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 ( + <> +
+ +
+
$1025465
+

Total Value

+
+
+ + ); + } +} + +export default MyProfileChart; diff --git a/components/Dashboard/Crypto/MyProfile/index.js b/components/Dashboard/Crypto/MyProfile/index.js new file mode 100644 index 0000000..f9447ec --- /dev/null +++ b/components/Dashboard/Crypto/MyProfile/index.js @@ -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 ( + <> + + + + My Profile + + + + + + + + + Edit Profile + Settings + + + + {/* MyProfileChart */} + + + {/* list */} +
    +
  • + + bitcoin + + + Bitcoin + + + (BTC) 3.8% + + + + + + BTC 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + ethereum + + + Ethereum + + + (ETH) 0.25% + + + + + + ETH 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + comp-bidr + + + Comp Bidr + + + (BDR) 3.8% + + + + + + BDR 0.001068 + + + $13,6218602 + + +
  • + +
  • + + matic2 + + + Matic + + + (MTC) 3.02% + + + + + + MTC 0.00251068 + + + $13,6218602 + + +
  • + +
  • + + litecoin + + + Litecoin + + + (LTC) 1.8% + + + + + + LTC 0.00251068 + + + $13,6218602 + + +
  • +
+
+ + ); +}; + +export default MyProfile; diff --git a/components/Dashboard/Crypto/OrdersActivities.js b/components/Dashboard/Crypto/OrdersActivities.js new file mode 100644 index 0000000..ef427c7 --- /dev/null +++ b/components/Dashboard/Crypto/OrdersActivities.js @@ -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 Header */} + + + Orders Activities + + + + + + + + + + + + {/* Table */} + + + + + + Type + + + + Change + + + + Date + + + + Time + + + + USD Amount + + + + Supply + + + + Amount + + + + Operation + + + + + + + + + + + + + Bitcoin{" "} + + (BTC) + + + + + + + +2.48% + + + + + 04 June 2023 + + + + 11:37 PM + + + + 12,565.75 USD + + + + + + 180548.00 BTC + + + + + + + + + 0.2040 BTC + + + + Buy + + + + + + + + + + + Ethereum{" "} + + (ETH) + + + + + + + -1.11% + + + + + 05 June 2023 + + + + 12:00 PM + + + + 11,232.22 USD + + + + + + 220548.22 ETH + + + + + + + + + 0.4453 ETH + + + + Transfer + + + + + + + + + + + Dash{" "} + + (DASH) + + + + + + + +0.32% + + + + + 04 June 2023 + + + + 09:33 AM + + + + 32,222.23 USD + + + + + + 110148.43 DASH + + + + + + + + + 0.3421 DASH + + + + Sell + + + + + + + + + + + Litecoin{" "} + + (LTC) + + + + + + + -3.06% + + + + + 03 June 2023 + + + + 10:00 PM + + + + 7,432.43 USD + + + + + + 321548.01 LTC + + + + + + + + + 1.1140 LTC + + + + Buy + + + + + + + + + + + Dollar{" "} + + (USD) + + + + + + + +1.11% + + + + + 02 June 2023 + + + + 08:21 AM + + + + 32,565.75 USD + + + + + + 200548.00 BTC + + + + + + + + + 2.2040 USD + + + + Sell + + + +
+
+
+ + ); +}; + +export default OrdersActivities; diff --git a/components/Dashboard/Crypto/Trading.js b/components/Dashboard/Crypto/Trading.js new file mode 100644 index 0000000..6277bbd --- /dev/null +++ b/components/Dashboard/Crypto/Trading.js @@ -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 Header */} + + + Trading + + + + + Wallet Balance: $12,426.07 + + + + + + + + + + + + + + + + Currency: + + + Currency + + + + + + + Payment Method: + + + + + + + Amount: + + + + + + + Estimated Rate + + 1 BTC ~ $34572.00 + + + + + Transaction Fees (0.05%) + + + + + Total + + 72.00 BTC + + + + + + + + + + ); +}; + +export default Trading; diff --git a/components/Dashboard/Crypto/UserActivities/UserActivities.module.css b/components/Dashboard/Crypto/UserActivities/UserActivities.module.css new file mode 100644 index 0000000..daef433 --- /dev/null +++ b/components/Dashboard/Crypto/UserActivities/UserActivities.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/Crypto/UserActivities/index.js b/components/Dashboard/Crypto/UserActivities/index.js new file mode 100644 index 0000000..ac3407a --- /dev/null +++ b/components/Dashboard/Crypto/UserActivities/index.js @@ -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 ( + <> + + {/* Header */} + + + User Activities + + + + + Select + + + + + + + {/* Activities list */} +
    +
  • +
    + +
    +
    1,802
    + Visits by Day +
    +
    + chart +
  • + +
  • +
    + +
    +
    1605
    + Referral Join +
    +
    + chart +
  • +
+
+ + ); +}; + +export default UserActivities; diff --git a/components/Dashboard/HelpDesk/Activity/Activity.module.css b/components/Dashboard/HelpDesk/Activity/Activity.module.css new file mode 100644 index 0000000..96de45f --- /dev/null +++ b/components/Dashboard/HelpDesk/Activity/Activity.module.css @@ -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; +} \ No newline at end of file diff --git a/components/Dashboard/HelpDesk/Activity/index.js b/components/Dashboard/HelpDesk/Activity/index.js new file mode 100644 index 0000000..2f25922 --- /dev/null +++ b/components/Dashboard/HelpDesk/Activity/index.js @@ -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 ( + <> + + + + Activity + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
+
+ Icon +
+
{timeline.title}
+

{timeline.text}

+

{timeline.date}

+
+
+
+ ))} +
+
+ + ); +}; + +export default Activity; diff --git a/components/Dashboard/HelpDesk/AgentPerformance.js b/components/Dashboard/HelpDesk/AgentPerformance.js new file mode 100644 index 0000000..267190d --- /dev/null +++ b/components/Dashboard/HelpDesk/AgentPerformance.js @@ -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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + Performance of the Agents + + + + + + + + + User + + + + Ratings + + + + Total Calls + + + + Calls Answered + + + + Speed of Answer + + + + Adherence + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + + + {row.name} + + + {row.userName} + + + + + + + {row.ratings} + + + + {row.totalCalls} + + + + {row.callsAnswered} + + + + {row.averageSpeedOfAnswer} + + + + + {row.Adherence} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js b/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js new file mode 100644 index 0000000..f0b604b --- /dev/null +++ b/components/Dashboard/HelpDesk/AverageSpeedOfAnswer.js @@ -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 ( + <> + + + + Average Speed of Answer + + + + 01m : 20 + s + + + + + chart + + + + ); +}; + +export default AverageSpeedOfAnswer; diff --git a/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js b/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js new file mode 100644 index 0000000..ccc1287 --- /dev/null +++ b/components/Dashboard/HelpDesk/CustomerSatisfaction/CustomerSatisfactionChart.js @@ -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 ( + <> + + + ); + } +} + +export default CustomerSatisfactionChart; diff --git a/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js b/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js new file mode 100644 index 0000000..b996950 --- /dev/null +++ b/components/Dashboard/HelpDesk/CustomerSatisfaction/index.js @@ -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 ( + <> + + + + Customer Satisfaction + + + + + + + + + Today + Last Month + Last Year + All Time + + + + {/* CustomerSatisfactionChart */} + + + + ); +}; + +export default CustomerSatisfaction; diff --git a/components/Dashboard/HelpDesk/Features.js b/components/Dashboard/HelpDesk/Features.js new file mode 100644 index 0000000..6154610 --- /dev/null +++ b/components/Dashboard/HelpDesk/Features.js @@ -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 ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.number} + + + + + icon + + + + + {feature.subTitle} + + + + {feature.helpText} + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/HelpDesk/SupportStatus.js b/components/Dashboard/HelpDesk/SupportStatus.js new file mode 100644 index 0000000..56295bc --- /dev/null +++ b/components/Dashboard/HelpDesk/SupportStatus.js @@ -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 Header */} + + + Support Status + + + + + Select + + + + + + + + + + 12,50846 + {" "} + Tickets + + + + + + + + + + + Status + + + % Change + + + + + + {" "} + Resolved Tickets + + + +2.48% + + + + + {" "} + Open Tickets + + +1.21% + + + + + {" "} + Unresolved Tickets + + -0.50% + + + + Create New Ticket + + + + + ); +}; + +export default SupportStatus; diff --git a/components/Dashboard/HelpDesk/TicketsStatus.js b/components/Dashboard/HelpDesk/TicketsStatus.js new file mode 100644 index 0000000..8576b07 --- /dev/null +++ b/components/Dashboard/HelpDesk/TicketsStatus.js @@ -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 Header */} + + + Tickets Status + + + + + Select + + + + + + + {/* Chart */} + + + + + + + {/* New Tickets */} + + + + + New Tickets + + + + 12,50846 + + + + + {" "} + +2.48% + + + + + + + {/* Solved Tickets */} + + + + + Solved Tickets + + + + 10,431 + + + + + {" "} + -1.02% + + + + + + + + + + ); +}; + +export default TicketsStatus; diff --git a/components/Dashboard/HelpDesk/TimeToResolveComplaint.js b/components/Dashboard/HelpDesk/TimeToResolveComplaint.js new file mode 100644 index 0000000..48cd159 --- /dev/null +++ b/components/Dashboard/HelpDesk/TimeToResolveComplaint.js @@ -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 ( + <> + + + + Time to Resolve Complaint + + + + 03m : 00 + s + + + + + chart + + + + ); +}; + +export default TimeToResolveComplaint; diff --git a/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js b/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js new file mode 100644 index 0000000..219c743 --- /dev/null +++ b/components/Dashboard/LMSCourses/ActiveCourse/ActiveCourseChart.js @@ -0,0 +1,62 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class ActiveCourseChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [72, 56, 50], + options: { + chart: { + type: "donut", + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + labels: ["Courses Done", "On Progress", "To Do"], + colors: ["#757FEF", "#EE368C", "#00B69B"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default ActiveCourseChart; diff --git a/components/Dashboard/LMSCourses/ActiveCourse/index.js b/components/Dashboard/LMSCourses/ActiveCourse/index.js new file mode 100644 index 0000000..0a5e57e --- /dev/null +++ b/components/Dashboard/LMSCourses/ActiveCourse/index.js @@ -0,0 +1,110 @@ +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 ActiveCourseChart from "./ActiveCourseChart"; + +const ActiveCourse = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Active Course + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* Live Visits Chart */} + + + + ); +}; + +export default ActiveCourse; diff --git a/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js b/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js new file mode 100644 index 0000000..45cb222 --- /dev/null +++ b/components/Dashboard/LMSCourses/CourseCompletion/CourseCompletionList.js @@ -0,0 +1,241 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import Link from "@mui/material/Link"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class CourseCompletionList extends Component { + constructor(props) { + super(props); + this.state = { + series: [25], + series2: [50], + series3: [30], + series4: [50], + options: { + chart: { + offsetX: -8, + }, + plotOptions: { + radialBar: { + hollow: { + size: "50%", + }, + track: { + background: "#A9C8FB", + }, + dataLabels: { + name: { + show: false, + }, + value: { + offsetY: 3, + color: "#757FEF", + fontSize: "13px", + fontWeight: "500", + }, + }, + }, + }, + fill: { + colors: ["#757FEF"], + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + {/* Course completion 1 */} + + + + + + + + Data With Python + + + 5 Lessons + + + + + + + + + + + + {/* Course completion 2 */} + + + + + + + + Code Foundation + + + 15 Lessons + + + + + + + + + + + + {/* Course completion 3 */} + + + + + + + + Styling With CSS + + + 13 Lessons + + + + + + + + + + + + {/* Course completion 4 */} + + + + + + + + Code Learn + + + 15 Lessons + + + + + + + + + + + + ); + } +} + +export default CourseCompletionList; diff --git a/components/Dashboard/LMSCourses/CourseCompletion/index.js b/components/Dashboard/LMSCourses/CourseCompletion/index.js new file mode 100644 index 0000000..81a1528 --- /dev/null +++ b/components/Dashboard/LMSCourses/CourseCompletion/index.js @@ -0,0 +1,111 @@ +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 CourseCompletionList from "./CourseCompletionList"; + +const CourseCompletion = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Course Completion + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* CourseCompletionList */} + + + + ); +}; + +export default CourseCompletion; diff --git a/components/Dashboard/LMSCourses/Courses/CreatedCourses.js b/components/Dashboard/LMSCourses/Courses/CreatedCourses.js new file mode 100644 index 0000000..b54a4f9 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/CreatedCourses.js @@ -0,0 +1,380 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +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 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 Link from "@mui/material/Link"; + +function CreatedCourse(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +CreatedCourse.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime +) { + return { + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime, + }; +} + +const rows = [ + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), +].sort((a, b) => (a.courseName < b.courseName ? -1 : 1)); + +export default function CreatedCourses() { + // Table + 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 ( + <> + + + + + + Courses + + + + Result + + + + Start Time + + + + End Time + + + + + + {(rowsPerPage > 0 + ? rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + : rows + ).map((row) => ( + + + + Product Img + + + {row.courseName} + + + + + + + {row.result} + + + + {row.expirationTime} + + + + {row.endTime} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+ + ); +} diff --git a/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js b/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js new file mode 100644 index 0000000..f2747b9 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/EnrolledCourses.js @@ -0,0 +1,366 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +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 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 Link from "@mui/material/Link"; + +function EnrolledCourse(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +EnrolledCourse.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime +) { + return { + courseName, + courseLink, + image, + result, + badgeClass, + expirationTime, + endTime, + }; +} + +const rows = [ + createData( + "Node.js for Beginners: Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with Angular and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Build an iOS Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Programming Language Become a React Native Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), + createData( + "Node.js for Beginners Go From Zero to Hero with Node.js", + "#", + "/images/course-brand1.png", + "87%", + "primaryBadge", + "2021-12-19 10:00 AM", + "2021-12-19 12:00 PM" + ), + createData( + "Learn the fundamentals of working with React and how to create", + "#", + "/images/course-brand2.png", + "Failed", + "dangerBadge", + "2021-12-19 11:00 AM", + "2021-12-19 01:00 PM" + ), + createData( + "Build an Android Application in Swift Learn the fundamentals", + "#", + "/images/course-brand3.png", + "Passed", + "successBadge", + "2021-12-19 02:00 PM", + "2021-12-19 04:00 PM" + ), + createData( + "Programming Language Become a React.js Developer", + "#", + "/images/course-brand4.png", + "90%", + "primaryBadge", + "2021-12-19 04:00 PM", + "2021-12-19 06:00 PM" + ), +].sort((a, b) => (a.courseName < b.courseName ? -1 : 1)); + +export default function EnrolledCourses() { + // Table + 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 ( + <> + + + + + + Courses + + + + Result + + + + Start Time + + + + End Time + + + + + + {(rowsPerPage > 0 + ? rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + : rows + ).map((row) => ( + + + + Product Img + + + {row.courseName} + + + + + + + {row.result} + + + + {row.expirationTime} + + + + {row.endTime} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+ + ); +} diff --git a/components/Dashboard/LMSCourses/Courses/Tabs.module.css b/components/Dashboard/LMSCourses/Courses/Tabs.module.css new file mode 100644 index 0000000..848185b --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/Tabs.module.css @@ -0,0 +1,20 @@ +.tabs ul { + border-bottom: 1px solid #EEF0F7; +} +.tabs ul li { + color: #260944; + font-weight: 500; + font-size: 16px; + background: #F5F7FA; + padding: 8px 25px; + border-radius: 5px 5px 0px 0px; + outline: 0; +} +.tabs ul li:focus:after { + background: transparent; +} + +/* For dark mode */ +[class="dark"] .tabs ul { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/Courses/index.js b/components/Dashboard/LMSCourses/Courses/index.js new file mode 100644 index 0000000..0446558 --- /dev/null +++ b/components/Dashboard/LMSCourses/Courses/index.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; +import EnrolledCourses from "./EnrolledCourses"; +import CreatedCourses from "./CreatedCourses"; +import styles from '@/components/Dashboard/LMSCourses/Courses/Tabs.module.css'; + +const Courses = () => { + return ( + <> + + + + Enrolled + Created + + + + + + + + + + + + + ); +}; + +export default Courses; diff --git a/components/Dashboard/LMSCourses/CurrentCourses.js b/components/Dashboard/LMSCourses/CurrentCourses.js new file mode 100644 index 0000000..af7247d --- /dev/null +++ b/components/Dashboard/LMSCourses/CurrentCourses.js @@ -0,0 +1,123 @@ +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"; + +const CurrentCoursesData = [ + { + id: "1", + title: "C++", + subTitle: "It & Software", + image: "/images/c+.png", + score: "4.5 Score", + duration: "37 Days Left", + }, + { + id: "2", + title: "JavaScript", + subTitle: "Web Development", + image: "/images/js.png", + score: "4.5 Score", + duration: "35 Days Left", + }, + { + id: "3", + title: "Haskell", + subTitle: "Programming", + image: "/images/haskell.png", + score: "4.5 Score", + duration: "30 Days Left", + }, +]; + +const CurrentCourses = () => { + return ( + <> + + + + Current Courses + + + + + {CurrentCoursesData.map((course) => ( + + + + + + {course.title} + + + {course.subTitle} + + + + + + + + {course.score} + + + + {course.duration} + + + + + ))} + + + + ); +}; + +export default CurrentCourses; diff --git a/components/Dashboard/LMSCourses/ExperienceIQ.js b/components/Dashboard/LMSCourses/ExperienceIQ.js new file mode 100644 index 0000000..ece24df --- /dev/null +++ b/components/Dashboard/LMSCourses/ExperienceIQ.js @@ -0,0 +1,161 @@ +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 Chart from "chart.js/auto"; +import { Bar } from "react-chartjs-2"; + +const options = { + indexAxis: "y", + elements: { + bar: { + // borderWidth: 1, + }, + }, + responsive: true, + plugins: { + legend: { + position: "bottom", + }, + }, +}; + +const labels = [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", +]; + +const data = { + labels, + datasets: [ + { + label: "Achivement", + data: [90, 80, 85, 70, 60, 50, 40, 60,], + borderColor: "#F765A3", + backgroundColor: "#FFA5CB", + }, + { + label: "Learning Path", + data: [80, 70, 75, 65, 55, 45, 35, 55,], + borderColor: "#A155B9", + backgroundColor: "#E697FF", + }, + { + label: "IQ Test Score", + data: [70, 60, 70, 60, 50, 40, 30, 50,], + borderColor: "#757FEF", + backgroundColor: "#2DB6F5", + }, + ], +}; + +const ExperienceIQ = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Experience IQ + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + ); +}; + +export default ExperienceIQ; diff --git a/components/Dashboard/LMSCourses/Features.js b/components/Dashboard/LMSCourses/Features.js new file mode 100644 index 0000000..349c3e0 --- /dev/null +++ b/components/Dashboard/LMSCourses/Features.js @@ -0,0 +1,91 @@ +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", + title: "120", + subTitle: "Enrolled Courses", + image: "/images/icon1.png", + }, + { + id: "2", + title: "17", + subTitle: "Active Courses", + image: "/images/icon2.png", + }, + { + id: "3", + title: "64", + subTitle: "Completed Courses", + image: "/images/icon3.png", + }, + { + id: "4", + title: "2.1M", + subTitle: "Total Students", + image: "/images/icon4.png", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.title} + + + + {feature.subTitle} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/LMSCourses/HoursSpent.js b/components/Dashboard/LMSCourses/HoursSpent.js new file mode 100644 index 0000000..94a9202 --- /dev/null +++ b/components/Dashboard/LMSCourses/HoursSpent.js @@ -0,0 +1,156 @@ +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 HoursSpent = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Spent", + data: [21, 22, 10, 28, 16, 20, 25], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + columnWidth: "40%", + distributed: true, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["Sat"], + ["Sun"], + ["Mon"], + ["Tue"], + ["Wed"], + ["Thu"], + ["Fri"], + ], + 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 + " Hours"; + }, + }, + }, + grid: { + show: true, + borderColor: "#EDEFF5", + strokeDashArray: 5, + }, + }; + + return ( + <> + + + + Hours Spent + + + + Select + + + + + + + + + ); +}; + +export default HoursSpent; diff --git a/components/Dashboard/LMSCourses/Messages/Messages.module.css b/components/Dashboard/LMSCourses/Messages/Messages.module.css new file mode 100644 index 0000000..96c589c --- /dev/null +++ b/components/Dashboard/LMSCourses/Messages/Messages.module.css @@ -0,0 +1,24 @@ +.messagesList { + border-bottom: 1px solid #F7FAFF; + border-right: 2px solid transparent; + padding-left: 12px; + padding-right: 12px; + padding-top: 15px; + padding-bottom: 10px; + margin-bottom: 15px; +} +.messagesList:last-child { + margin-bottom: 0; +} +.messagesList:hover { + background: #FAFAFA; + border-right: 2px solid #757FEF; +} + +/* For dark mode */ +[class="dark"] .messagesList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .messagesList:hover { + background: var(--colorBlack); +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/Messages/index.js b/components/Dashboard/LMSCourses/Messages/index.js new file mode 100644 index 0000000..918fd22 --- /dev/null +++ b/components/Dashboard/LMSCourses/Messages/index.js @@ -0,0 +1,248 @@ +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 Badge from '@mui/material/Badge'; +import styles from "@/components/Dashboard/LMSCourses/Messages/Messages.module.css"; + +const MessagesData = [ + { + id: "1", + name: "Johen Mandel", + text: "Hi, i want make enquiries...", + image: "/images/user15.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "1", + time: "12:55 AM" + }, + { + id: "2", + name: "Thomas Albart", + text: "Hi, i want make enquiries...", + image: "/images/user16.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "2", + time: "6:55 AM" + }, + { + id: "3", + name: "Maical Doe", + text: "Hi, i want make enquiries...", + image: "/images/user17.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM" + }, +]; + +const Messages = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Messages + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {MessagesData.slice(0, 3).map((message) => ( +
+ + + +
+ User +
+ +
+ + + + {message.name} + + + {message.text} + + +
+ + + + + {message.newTag} + + + + {message.number} + + + + + {message.time} + + +
+
+ ))} +
+
+ + ); +}; + +export default Messages; diff --git a/components/Dashboard/LMSCourses/MyPlanning.js b/components/Dashboard/LMSCourses/MyPlanning.js new file mode 100644 index 0000000..48067fb --- /dev/null +++ b/components/Dashboard/LMSCourses/MyPlanning.js @@ -0,0 +1,166 @@ +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"; + +const MyPlanningData = [ + { + id: "1", + image: "/images/3d1.png", + title: "Animation Learning", + dateTime: "Dec 14, 08:30 PM", + }, + { + id: "2", + image: "/images/3d2.png", + title: "UI/UX Research", + dateTime: "Dec 15, 09:30 PM", + }, + { + id: "3", + image: "/images/3d3.png", + title: "Machine Learning", + dateTime: "Dec 16, 10:30 PM", + }, + { + id: "4", + image: "/images/3d4.png", + title: "Web Development", + dateTime: "Dec 17, 11:30 PM", + }, +]; + +const MyPlanning = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + My Planning + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {MyPlanningData.map((plan) => ( + + Image + + + + {plan.title} + + + {plan.dateTime} + + + + ))} + + + ); +}; + +export default MyPlanning; diff --git a/components/Dashboard/LMSCourses/TopInstructor.js b/components/Dashboard/LMSCourses/TopInstructor.js new file mode 100644 index 0000000..b52f5ae --- /dev/null +++ b/components/Dashboard/LMSCourses/TopInstructor.js @@ -0,0 +1,174 @@ +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 Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; + +const TopInstructorData = [ + { + id: "1", + image: "/images/user9.png", + name: "Melanie Grutt", + userName: "@melgrutt", + }, + { + id: "2", + image: "/images/user10.png", + name: "Theron Trump", + userName: "@therontrump", + }, + { + id: "3", + image: "/images/user11.png", + name: "Johen Mark", + userName: "@johenmark", + }, + { + id: "4", + image: "/images/user12.png", + name: "Nicholas Tanner", + userName: "@nilyeager", + }, + { + id: "5", + image: "/images/user13.png", + name: "Tyler Mark", + userName: "@tylemark", + }, + { + id: "6", + image: "/images/user14.png", + name: "Martina Albart", + userName: "@martina", + }, +]; + +const TopInstructor = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Top Instructor + + + + Select + + + + + + + {TopInstructorData.map((instructor) => ( + + + + Image + + + + {instructor.name} + + + {instructor.userName} + + + + + + + + + + ))} + + + + ); +}; + +export default TopInstructor; diff --git a/components/Dashboard/LMSCourses/TopStudents.js b/components/Dashboard/LMSCourses/TopStudents.js new file mode 100644 index 0000000..1611b17 --- /dev/null +++ b/components/Dashboard/LMSCourses/TopStudents.js @@ -0,0 +1,156 @@ +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 Grid from "@mui/material/Grid"; + +const TopStudentsData = [ + { + id: "1", + image: "/images/user18.png", + name: "Melanie Grutt", + userName: "@melgrutt", + }, + { + id: "2", + image: "/images/user19.png", + name: "Theron Trump", + userName: "@therontrump", + }, + { + id: "3", + image: "/images/user20.png", + name: "Johen Mark", + userName: "@johenmark", + }, + { + id: "4", + image: "/images/user21.png", + name: "Nicholas Tanner", + userName: "@nilyeager", + }, + { + id: "5", + image: "/images/user22.png", + name: "Tyler Mark", + userName: "@tylemark", + }, + { + id: "6", + image: "/images/user23.png", + name: "Martina Albart", + userName: "@martina", + }, +]; + +const TopStudents = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Top Students + + + + Select + + + + + + + {TopStudentsData.map((student) => ( + + + + Image + + + + {student.name} + + + {student.userName} + + + + + + ))} + + + + ); +}; + +export default TopStudents; diff --git a/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css b/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css new file mode 100644 index 0000000..90fa53f --- /dev/null +++ b/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css @@ -0,0 +1,44 @@ +.box { + background: #757FEF; + border-radius: 10px; + padding: 25px 20px; + margin-bottom: 15px; +} +.boxList { + display: flex; + align-items: center; + justify-content: space-between; + position: relative; + padding-left: 17px; + border-bottom: 1px solid #878fe5; + padding-bottom: 18px; + margin-bottom: 18px; +} +.boxList:last-child { + border-bottom: none; + padding-bottom: 0; + margin-bottom: 0; +} +.boxList::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; + position: absolute; + left: 0; + top: 5px; + border-radius: 100px; +} +.boxList h4 { + margin: 0; + color: #fff; + font-size: 13px; + font-weight: 500; +} +.boxList p { + margin: 0; + color: #fff; + font-size: 12px; + font-weight: 500; +} \ No newline at end of file diff --git a/components/Dashboard/LMSCourses/TotalWatched/index.js b/components/Dashboard/LMSCourses/TotalWatched/index.js new file mode 100644 index 0000000..54be593 --- /dev/null +++ b/components/Dashboard/LMSCourses/TotalWatched/index.js @@ -0,0 +1,34 @@ +import React from "react"; +import styles from "@/components/Dashboard/LMSCourses/TotalWatched/TotalWatched.module.css"; + +const TotalWatched = () => { + return ( + <> +
+
+

Total Watched

+

+ 66:15h +

+
+ +
+

Assignment Completed

+

81%

+
+ +
+

Monthly Progress

+

81%

+
+ +
+

Overall Pass Percentage

+

81%

+
+
+ + ); +}; + +export default TotalWatched; diff --git a/components/Dashboard/LMSCourses/YourProgress.js b/components/Dashboard/LMSCourses/YourProgress.js new file mode 100644 index 0000000..a32d829 --- /dev/null +++ b/components/Dashboard/LMSCourses/YourProgress.js @@ -0,0 +1,139 @@ +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 { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer +} from "recharts"; + +const data = [ + { + name: "01 Jan", + Practice: 15, + Theory: 10, + }, + { + name: "02 Jan", + Practice: 11, + Theory: 16, + }, + { + name: "03 Jan", + Practice: 17, + Theory: 12, + }, + { + name: "04 Jan", + Practice: 13, + Theory: 18, + }, + { + name: "05 Jan", + Practice: 19, + Theory: 14, + }, + { + name: "06 Jan", + Practice: 15, + Theory: 20, + }, + { + name: "07 Jan", + Practice: 16, + Theory: 22, + }, +]; + +const YourProgress = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Your Progress + + + + Select + + + + + + + + + + + + + + + + + + + ); +}; + +export default YourProgress; diff --git a/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..06272f1 --- /dev/null +++ b/components/Dashboard/ProjectManagement/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,56 @@ +.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; + } +} + +[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(--darkHeadingTextColor); +} \ No newline at end of file diff --git a/components/Dashboard/ProjectManagement/ActivityTimeline/index.js b/components/Dashboard/ProjectManagement/ActivityTimeline/index.js new file mode 100644 index 0000000..927be14 --- /dev/null +++ b/components/Dashboard/ProjectManagement/ActivityTimeline/index.js @@ -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 "../../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 ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/ProjectManagement/AllProjects.js b/components/Dashboard/ProjectManagement/AllProjects.js new file mode 100644 index 0000000..5500592 --- /dev/null +++ b/components/Dashboard/ProjectManagement/AllProjects.js @@ -0,0 +1,570 @@ +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 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 Avatar from "@mui/material/Avatar"; +import AvatarGroup from "@mui/material/AvatarGroup"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + + + + Image + + Product UI/UX Design + + + + + + + + + + + + + + $14,000 + + + + Active + + + + + 70% + + + + + + + 08 Mar 2021 + + + + + + + Image + + Public Beta Release + + + + + + + + + + + + + $14,000 + + + + Complete + + + + + 100% + + + + + + 17 Apr 2021 + + + + + + + Image + + SEO Marketing + + + + + + + + + + + + + $12,000 + + + + Complete + + + + + 100% + + + + + + 10 Sep 2021 + + + + + + + Image + + New Office Building + + + + + + + + + + + + + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + + + + + + + Image + + Product Devlopment + + + + + + + + + + + + + + $16,000 + + + + Active + + + + + 80% + + + + + + 08 Mar 2022 + + + +
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Dashboard/ProjectManagement/CompletedTasks.js b/components/Dashboard/ProjectManagement/CompletedTasks.js new file mode 100644 index 0000000..1666f76 --- /dev/null +++ b/components/Dashboard/ProjectManagement/CompletedTasks.js @@ -0,0 +1,250 @@ +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 ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + borderRadius: 5, + borderRadiusApplication: 'end', + horizontal: false, + columnWidth: "20%" + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + offsetY: 0, + show: false, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + labels: { + colors: '#5B5B98' + } + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: "#a9a9c8", + fontSize: "14px" + } + } + }, + yaxis: { + show: false, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px" + }, + }, + axisBorder: { + show: false + } + }, + grid: { + show: false, + strokeDashArray: 5, + borderColor: "#EDEFF5" + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Dashboard/ProjectManagement/Features.js b/components/Dashboard/ProjectManagement/Features.js new file mode 100644 index 0000000..8829b31 --- /dev/null +++ b/components/Dashboard/ProjectManagement/Features.js @@ -0,0 +1,150 @@ +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: "Due Tasks", + title: "41", + iconName: "ri-pie-chart-2-line", + badgeProgress: "5.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Completed: 13 Projects this month", + }, + { + id: "2", + subTitle: "Active Projects", + title: "65", + iconName: "ri-briefcase-line", + badgeProgress: "1.04%", + badgeClass: "dangerBadge", + badgeIcon: "ri-arrow-down-s-fill", + growthText: "Projects this month", + }, + { + id: "3", + subTitle: "Total Hours", + title: "599", + iconName: "ri-time-line", + badgeProgress: "5.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Projects this month", + }, + { + id: "4", + subTitle: "Total Projects", + title: "24k", + iconName: "ri-shield-check-line", + badgeProgress: "7.80%", + badgeClass: "successBadge", + badgeIcon: "ri-arrow-up-s-fill", + growthText: "Completed: 13 Projects this month", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + + + + + + {feature.subTitle} + + + {feature.title} + + + + + + + {feature.badgeProgress} + + + + + + + + {feature.icon} + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js b/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js new file mode 100644 index 0000000..2a0da8f --- /dev/null +++ b/components/Dashboard/ProjectManagement/IssuesSummary/IssuesSummaryChart.js @@ -0,0 +1,472 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class IssuesSummaryChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [ + [1327359500000, 30.95], + [1327445000000, 31.34], + [1327532400000, 31.18], + [1327618800000, 31.05], + [1327878000000, 31.0], + [1327964400000, 30.95], + [1328050800000, 31.24], + [1328137200000, 31.29], + [1328223500000, 31.85], + [1328482800000, 31.86], + [1328569200000, 32.28], + [1328655500000, 32.1], + [1328742000000, 32.65], + [1328828400000, 32.21], + [1329087500000, 32.35], + [1329174000000, 32.44], + [1329260400000, 32.46], + [1329346800000, 32.86], + [1329433200000, 32.75], + [1329778800000, 32.54], + [1329865200000, 32.33], + [1329951500000, 32.97], + [1330038000000, 33.41], + [1330297200000, 33.27], + [1330383500000, 33.27], + [1330470000000, 32.89], + [1330556400000, 33.1], + [1330642800000, 33.73], + [1330902000000, 33.22], + [1330988400000, 31.99], + [1331074800000, 32.41], + [1331161200000, 33.05], + [1331247500000, 33.64], + [1331506800000, 33.56], + [1331593200000, 34.22], + [1331679500000, 33.77], + [1331765000000, 34.17], + [1331852400000, 33.82], + [1332111500000, 34.51], + [1332198000000, 33.16], + [1332284400000, 33.56], + [1332370800000, 33.71], + [1332457200000, 33.81], + [1332712800000, 34.4], + [1332799200000, 34.63], + [1332885500000, 34.46], + [1332972000000, 34.48], + [1333058400000, 34.31], + [1333317500000, 34.7], + [1333404000000, 34.31], + [1333490400000, 33.46], + [1333576800000, 33.59], + [1333922400000, 33.22], + [1334008800000, 32.61], + [1334095200000, 33.01], + [1334181500000, 33.55], + [1334268000000, 33.18], + [1334527200000, 32.84], + [1334613500000, 33.84], + [1334700000000, 33.39], + [1334786400000, 32.91], + [1334872800000, 33.06], + [1335132000000, 32.62], + [1335218400000, 32.4], + [1335304800000, 33.13], + [1335391200000, 33.26], + [1335477500000, 33.58], + [1335736800000, 33.55], + [1335823200000, 33.77], + [1335909500000, 33.76], + [1335995000000, 33.32], + [1336082400000, 32.61], + [1336341500000, 32.52], + [1336428000000, 32.67], + [1336514400000, 32.52], + [1336500800000, 31.92], + [1336687200000, 32.2], + [1336946400000, 32.23], + [1337032800000, 32.33], + [1337119200000, 32.36], + [1337205500000, 32.01], + [1337292000000, 31.31], + [1337551200000, 32.01], + [1337637500000, 32.01], + [1337724000000, 32.18], + [1337810400000, 31.54], + [1337896800000, 31.6], + [1338242400000, 32.05], + [1338328800000, 31.29], + [1338415200000, 31.05], + [1338501500000, 29.82], + [1338760800000, 30.31], + [1338847200000, 30.7], + [1338933500000, 31.69], + [1339020000000, 31.32], + [1339106400000, 31.65], + [1339365500000, 31.13], + [1339452000000, 31.77], + [1339538400000, 31.79], + [1339624800000, 31.67], + [1339711200000, 32.39], + [1339970400000, 32.63], + [1340056800000, 32.89], + [1340143200000, 31.99], + [1340229500000, 31.23], + [1340315000000, 31.57], + [1340575200000, 30.84], + [1340661500000, 31.07], + [1340748000000, 31.41], + [1340834400000, 31.17], + [1340920800000, 32.37], + [1341180000000, 32.19], + [1341266400000, 32.51], + [1341439200000, 32.53], + [1341525500000, 31.37], + [1341784800000, 30.43], + [1341871200000, 30.44], + [1341957500000, 30.2], + [1342044000000, 30.14], + [1342130400000, 30.65], + [1342389500000, 30.4], + [1342475000000, 30.65], + [1342562400000, 31.43], + [1342648800000, 31.89], + [1342735200000, 31.38], + [1342994400000, 30.64], + [1343080800000, 30.02], + [1343167200000, 30.33], + [1343253500000, 30.95], + [1343340000000, 31.89], + [1343599200000, 31.01], + [1343685500000, 30.88], + [1343772000000, 30.69], + [1343858400000, 30.58], + [1343944800000, 32.02], + [1344204000000, 32.14], + [1344290400000, 32.37], + [1344376800000, 32.51], + [1344463200000, 32.65], + [1344549500000, 32.64], + [1344808800000, 32.27], + [1344895200000, 32.1], + [1344981500000, 32.91], + [1345068000000, 33.65], + [1345154400000, 33.8], + [1345413500000, 33.92], + [1345500000000, 33.75], + [1345586400000, 33.84], + [1345672800000, 33.5], + [1345759200000, 32.26], + [1346018400000, 32.32], + [1346104800000, 32.06], + [1346191200000, 31.96], + [1346277500000, 31.46], + [1346364000000, 31.27], + [1346709500000, 31.43], + [1346795000000, 32.26], + [1346882400000, 32.79], + [1346968800000, 32.46], + [1347228000000, 32.13], + [1347314400000, 32.43], + [1347400800000, 32.42], + [1347487200000, 32.81], + [1347573500000, 33.34], + [1347832800000, 33.41], + [1347919200000, 32.57], + [1348005500000, 33.12], + [1348092000000, 34.53], + [1348178400000, 33.83], + [1348437500000, 33.41], + [1348524000000, 32.9], + [1348610400000, 32.53], + [1348696800000, 32.8], + [1348783200000, 32.44], + [1349042400000, 32.62], + [1349128800000, 32.57], + [1349215200000, 32.6], + [1349301500000, 32.68], + [1349388000000, 32.47], + [1349647200000, 32.23], + [1349733500000, 31.68], + [1349820000000, 31.51], + [1349906400000, 31.78], + [1349992800000, 31.94], + [1350252000000, 32.33], + [1350338400000, 33.24], + [1350424800000, 33.44], + [1350511200000, 33.48], + [1350597500000, 33.24], + [1350856800000, 33.49], + [1350943200000, 33.31], + [1351029500000, 33.36], + [1351115000000, 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], + [1352415500000, 32.9], + [1352674800000, 32.7], + [1352761200000, 32.54], + [1352847500000, 32.23], + [1352934000000, 32.64], + [1353020400000, 32.65], + [1353279500000, 32.92], + [1353365000000, 32.64], + [1353452400000, 32.84], + [1353625200000, 33.4], + [1353884400000, 33.3], + [1353970800000, 33.18], + [1354057200000, 33.88], + [1354143500000, 34.09], + [1354230000000, 34.61], + [1354489200000, 34.7], + [1354575500000, 35.3], + [1354662000000, 35.4], + [1354748400000, 35.14], + [1354834800000, 35.48], + [1355094000000, 35.75], + [1355180400000, 35.54], + [1355266800000, 35.96], + [1355353200000, 35.53], + [1355439500000, 37.56], + [1355698800000, 37.42], + [1355785200000, 37.49], + [1355871500000, 38.09], + [1355958000000, 37.87], + [1356044400000, 37.71], + [1356303500000, 37.53], + [1356476400000, 37.55], + [1356562800000, 37.3], + [1356649200000, 36.9], + [1356908400000, 37.68], + [1357081200000, 38.34], + [1357167500000, 37.75], + [1357254000000, 38.13], + [1357513200000, 37.94], + [1357599500000, 38.14], + [1357685000000, 38.66], + [1357772400000, 38.62], + [1357858800000, 38.09], + [1358118000000, 38.16], + [1358204400000, 38.15], + [1358290800000, 37.88], + [1358377200000, 37.73], + [1358463500000, 37.98], + [1358809200000, 37.95], + [1358895500000, 38.25], + [1358982000000, 38.1], + [1359068400000, 38.32], + [1359327500000, 38.24], + [1359414000000, 38.52], + [1359500400000, 37.94], + [1359586800000, 37.83], + [1359673200000, 38.34], + [1359932400000, 38.1], + [1350018800000, 38.51], + [1360105200000, 38.4], + [1360191500000, 38.07], + [1360278000000, 39.12], + [1360537200000, 38.64], + [1360623500000, 38.89], + [1360710000000, 38.81], + [1360796400000, 38.61], + [1360882800000, 38.63], + [1361228400000, 38.99], + [1361314800000, 38.77], + [1361401200000, 38.34], + [1361487500000, 38.55], + [1361746800000, 38.11], + [1361833200000, 38.59], + [1361919500000, 39.6], + ], + }, + ], + options: { + chart: { + id: "area-datetime", + zoom: { + autoScaleYaxis: true, + }, + }, + annotations: { + yaxis: [ + { + y: 30, + borderColor: "#999", + label: { + show: true, + text: "Support", + style: { + color: "#fff", + background: "#00E396", + }, + }, + }, + ], + xaxis: [ + { + x: new Date("14 Nov 2012").getTime(), + borderColor: "#999", + yAxisIndex: 0, + label: { + show: true, + text: "Rally", + 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, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + }, + 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 ( + <> +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+ + ); + } +} + +export default IssuesSummaryChart; diff --git a/components/Dashboard/ProjectManagement/IssuesSummary/index.js b/components/Dashboard/ProjectManagement/IssuesSummary/index.js new file mode 100644 index 0000000..4f3ff54 --- /dev/null +++ b/components/Dashboard/ProjectManagement/IssuesSummary/index.js @@ -0,0 +1,43 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import IssuesSummaryChart from "./IssuesSummaryChart"; + +const IssuesSummary = () => { + return ( + <> + + + + Issues Summary + + + + {/* IssuesSummaryChart */} + + + + ); +}; + +export default IssuesSummary; diff --git a/components/Dashboard/ProjectManagement/MyTasks.js b/components/Dashboard/ProjectManagement/MyTasks.js new file mode 100644 index 0000000..c80290f --- /dev/null +++ b/components/Dashboard/ProjectManagement/MyTasks.js @@ -0,0 +1,402 @@ +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 Checkbox from '@mui/material/Checkbox'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(task, dedline, status, badgeClass, assignee, memberName) { + return { + task, + dedline, + status, + badgeClass, + assignee, + memberName, + }; +} + +const rows = [ + createData( + "Public Beta Release", + "14 Feb 2022", + "On Going", + "successBadge", + "/images/user1.png", + "Wade" + ), + createData( + "Fix Platform Errors", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user2.png", + "Dave" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "On Going", + "successBadge", + "/images/user3.png", + "Liam" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "Pending", + "dangerBadge", + "/images/user4.png", + "Nathaniel" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "On Going", + "successBadge", + "/images/user5.png", + "Lewis" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "On Going", + "successBadge", + "/images/user6.png", + "Milton" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user7.png", + "Claude" + ), + createData( + "Web Design", + "15 Aug 2022", + "On Going", + "successBadge", + "/images/user8.png", + "Harvey" + ), + createData( + "Web Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user9.png", + "Blake" + ), + createData( + "React App Development", + "15 Dec 2022", + "Completed", + "primaryBadge", + "/images/user10.png", + "Antonio" + ), + createData( + "eCommerce Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user11.png", + "Conner" + ), + createData( + "App Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user12.png", + "Shane" + ), +].sort((a, b) => (a.task < b.task ? -1 : 1)); + +const MyTasks = () => { + 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 ( + <> + + + + My Tasks + + + + + + + + + Task + + + Dedline + + + Status + + + Assignee + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.task} + + + + {row.dedline} + + + + {row.status} + + + + + Img + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js b/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js new file mode 100644 index 0000000..e9f7d52 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TaskDistribution/TaskDistributionChart.js @@ -0,0 +1,50 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TaskDistributionChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [14, 23, 21, 17], + options: { + labels: ['API', 'Frontend', 'Backend', 'Design'], + colors: ["#B8C8DB", "#A1AADB", "#BA68C8", "#8E72C8"], + fill: { + opacity: 0.9, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default TaskDistributionChart; diff --git a/components/Dashboard/ProjectManagement/TaskDistribution/index.js b/components/Dashboard/ProjectManagement/TaskDistribution/index.js new file mode 100644 index 0000000..eb2fb55 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TaskDistribution/index.js @@ -0,0 +1,76 @@ +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 TaskDistributionChart from "./TaskDistributionChart"; + +const TaskDistribution = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + Task Distribution + + + + Select + + + + + + {/* TaskDistributionChart */} + + + + ); +}; + +export default TaskDistribution; diff --git a/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js b/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..36e6b7a --- /dev/null +++ b/components/Dashboard/ProjectManagement/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "13px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + height: 280 + }, + legend: { + show: false, + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Dashboard/ProjectManagement/TasksPerformance/index.js b/components/Dashboard/ProjectManagement/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TasksPerformance/index.js @@ -0,0 +1,110 @@ +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 TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Dashboard/ProjectManagement/TeamMembers.js b/components/Dashboard/ProjectManagement/TeamMembers.js new file mode 100644 index 0000000..2cfab79 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TeamMembers.js @@ -0,0 +1,198 @@ +import React from "react"; +import { Box } from "@mui/material"; +import Card from "@mui/material/Card"; +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"; + +const TeamMembersData = [ + { + id: "1", + image: "/images/user1.png", + name: "Jordan Stevenson", + userName: "@jstevenson5c", + hours: "110h : 150m", + task: "258", + progress: "55", + }, + { + id: "2", + image: "/images/user2.png", + name: "Lydia Reese", + userName: "@lreese3b", + hours: "220h : 58m", + task: "158", + progress: "60", + }, + { + id: "3", + image: "/images/user3.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + hours: "315h : 40m", + task: "250", + progress: "65", + }, + { + id: "4", + image: "/images/user4.png", + name: "Laurent Perrier", + userName: "@laurentperrier", + hours: "90h : 50m", + task: "200", + progress: "75", + }, + { + id: "5", + image: "/images/user5.png", + name: "Laurent Perrier", + userName: "@laurentperrier", + hours: "90h : 50m", + task: "200", + progress: "90", + }, +]; + +const TeamMembers = () => { + return ( + <> + + + + Team Members + + + + + + + + + Member + + + + Hours + + + + Task + + + + Status + + + + + + {TeamMembersData.map((team) => ( + + + + Image + + + {team.name} + + {team.userName} + + + + + + {team.hours} + + + + {team.task} + + + + + {team.progress}% + + + + + + ))} + +
+
+
+ + ); +}; + +export default TeamMembers; diff --git a/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js b/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js new file mode 100644 index 0000000..671b720 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TotalUsers/TotalUsersChart.js @@ -0,0 +1,113 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; + +class TotalUsersChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + stroke: { + width: 0, + show: true + }, + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + offsetY: 0, + show: false, + position: "bottom", + fontSize: "14px", + labels: { + colors: '#5B5B98', + }, + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 280 + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 18k + + + + + + Last Week + + + {" "} + 5.21k + + + + + + Last Month + + + {" "} + 32k + + + + + ); + } +} + +export default TotalUsersChart; diff --git a/components/Dashboard/ProjectManagement/TotalUsers/index.js b/components/Dashboard/ProjectManagement/TotalUsers/index.js new file mode 100644 index 0000000..5bee2f2 --- /dev/null +++ b/components/Dashboard/ProjectManagement/TotalUsers/index.js @@ -0,0 +1,110 @@ +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 TotalUsersChart from "./TotalUsersChart"; + +const TotalUsers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TotalUsersChart */} + + + + ); +}; + +export default TotalUsers; diff --git a/components/Dashboard/SaasApp/AllProjects.js b/components/Dashboard/SaasApp/AllProjects.js new file mode 100644 index 0000000..3c23ffb --- /dev/null +++ b/components/Dashboard/SaasApp/AllProjects.js @@ -0,0 +1,503 @@ +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 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 Avatar from "@mui/material/Avatar"; +import AvatarGroup from "@mui/material/AvatarGroup"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + + + + Product UI/UX Design + + + + + + + + + + + + + $14,000 + + + + Active + + + + + 70% + + + + + + + 08 Mar 2021 + + + + + + + Public Beta Release + + + + + + + + + + + + $14,000 + + + + Complete + + + + + 100% + + + + + + 17 Apr 2021 + + + + + + + SEO Marketing + + + + + + + + + + + + $12,000 + + + + Complete + + + + + 100% + + + + + + 10 Sep 2021 + + + + + + + New Office Building + + + + + + + + + + + + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + + + + + + + Product Devlopment + + + + + + + + + + + + + $16,000 + + + + Active + + + + + 80% + + + + + + 08 Mar 2022 + + + +
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Dashboard/SaasApp/AudienceOverview.js b/components/Dashboard/SaasApp/AudienceOverview.js new file mode 100644 index 0000000..d215e49 --- /dev/null +++ b/components/Dashboard/SaasApp/AudienceOverview.js @@ -0,0 +1,177 @@ +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, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const AudienceOverview = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "New Visitors", + data: [0, 70, 35, 80, 40, 80, 75, 65, 80, 70, 40, 0], + }, + { + name: "Unique Visitors", + data: [0, 55, 80, 30, 50, 60, 32, 40, 60, 60, 40, 10], + }, + { + name: "Previous Visitors", + data: [0, 45, 35, 50, 80, 40, 60, 50, 110, 40, 65, 20], + }, + ]; + const options = { + chart: { + type: "area", + toolbar: { + show: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + colors: ["#E7EBF5", "#8EB0DE", "#90C6E0"], + xaxis: { + axisBorder: { + show: false, + }, + categories: [ + "13 Jan", + "14 Jan", + "15 Jan", + "16 Jan", + "17 Jan", + "18 Jan", + "19 Jan", + "20 Jan", + "21 Jan", + "22 Jan", + "23 Jan", + "24 Jan", + "25 Jan", + ], + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + tickAmount: 6, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + }, + legend: { + offsetY: 0, + position: "top", + fontSize: "14px", + horizontalAlign: "center", + labels: { + colors: "#5B5B98", + }, + }, + }; + + return ( + <> + + {/* Card Header */} + + + Audience Overview + + + + + Select + + + + + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/SaasApp/CompletedTasks.js b/components/Dashboard/SaasApp/CompletedTasks.js new file mode 100644 index 0000000..b4a49a1 --- /dev/null +++ b/components/Dashboard/SaasApp/CompletedTasks.js @@ -0,0 +1,250 @@ +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 ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#2DB6F5"], + plotOptions: { + bar: { + borderRadius: 5, + borderRadiusApplication: 'end', + horizontal: false, + columnWidth: "20%" + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + offsetY: 0, + show: false, + fontSize: "14px", + position: "bottom", + horizontalAlign: "center", + labels: { + colors: '#5B5B98' + } + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false, + style: { + colors: "#a9a9c8", + fontSize: "14px" + } + } + }, + yaxis: { + show: false, + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px" + }, + }, + axisBorder: { + show: false + } + }, + grid: { + show: false, + strokeDashArray: 5, + borderColor: "#EDEFF5" + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Dashboard/SaasApp/Features.js b/components/Dashboard/SaasApp/Features.js new file mode 100644 index 0000000..8fba760 --- /dev/null +++ b/components/Dashboard/SaasApp/Features.js @@ -0,0 +1,130 @@ +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: "Total Orders", + number: "1,452", + icon: "ri-stack-line", + badgeClass: "successBadge", + progress: "4.87%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, + { + id: "2", + subTitle: "Overall Revenue", + number: "$28,452", + icon: "ri-pie-chart-line", + badgeClass: "dangerBadge", + progress: "0.50%", + progressIcon: "ri-arrow-down-s-line", + helpText: "Leads this month", + }, + { + id: "3", + subTitle: "Average Price", + number: "$200.5", + icon: "ri-money-cny-box-line", + badgeClass: "successBadge", + progress: "2.22%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, + { + id: "4", + subTitle: "Total Clients", + number: "7,805", + icon: "ri-user-follow-line", + badgeClass: "successBadge", + progress: "1.21%", + progressIcon: "ri-arrow-up-s-line", + helpText: "Leads this month", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.subTitle} + + + + {feature.number} + + + + + + + + + + + {feature.progress}{" "} + + + + {feature.helpText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/SaasApp/IncomeStatus.js b/components/Dashboard/SaasApp/IncomeStatus.js new file mode 100644 index 0000000..a286136 --- /dev/null +++ b/components/Dashboard/SaasApp/IncomeStatus.js @@ -0,0 +1,80 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const IncomeStatus = () => { + return ( + <> + + + + + + + + + $31,570 + + Income Status + + + + + + + Income Target + + $180548.00 + + + + + + + ); +}; + +export default IncomeStatus; diff --git a/components/Dashboard/SaasApp/Messages/Messages.module.css b/components/Dashboard/SaasApp/Messages/Messages.module.css new file mode 100644 index 0000000..af76347 --- /dev/null +++ b/components/Dashboard/SaasApp/Messages/Messages.module.css @@ -0,0 +1,20 @@ +.messagesList { + border-bottom: 1px solid #F7FAFF; + border-right: 2px solid transparent; + padding-left: 12px; + padding-right: 12px; + padding-top: 15px; + padding-bottom: 10px; +} +.messagesList:hover { + background: #FAFAFA; + border-right: 2px solid #757FEF; +} + +/* For dark mode */ +[class="dark"] .messagesList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .messagesList:hover { + background: var(--colorBlack); +} \ No newline at end of file diff --git a/components/Dashboard/SaasApp/Messages/index.js b/components/Dashboard/SaasApp/Messages/index.js new file mode 100644 index 0000000..09a05a0 --- /dev/null +++ b/components/Dashboard/SaasApp/Messages/index.js @@ -0,0 +1,270 @@ +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 Badge from "@mui/material/Badge"; +import styles from "@/components/Dashboard/SaasApp/Messages/Messages.module.css"; + +const MessagesData = [ + { + id: "1", + name: "Johen Mandel", + text: "Hi, i want make enquiries...", + image: "/images/user15.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "1", + time: "12:55 AM", + }, + { + id: "2", + name: "Thomas Albart", + text: "Hi, i want make enquiries...", + image: "/images/user16.png", + badgeBgColor: "#a5a1a1", + newTag: "New", + number: "2", + time: "6:55 AM", + }, + { + id: "3", + name: "Maical Doe", + text: "Hi, i want make enquiries...", + image: "/images/user17.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, + { + id: "4", + name: "Liyana doe", + text: "Hi, i want make enquiries...", + image: "/images/user18.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, + { + id: "5", + name: "Liyana doe", + text: "Hi, i want make enquiries...", + image: "/images/user19.png", + badgeBgColor: "#5570F1", + newTag: "New", + number: "3", + time: "8:00 AM", + }, +]; + +const Messages = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Messages + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {MessagesData.slice(0, 5).map((message) => ( +
+ + + +
+ User +
+ +
+ + + + {message.name} + + {message.text} + +
+ + + + + {message.newTag} + + + + {message.number} + + + + + {message.time} + + +
+
+ ))} +
+
+ + ); +}; + +export default Messages; diff --git a/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js b/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js new file mode 100644 index 0000000..39df242 --- /dev/null +++ b/components/Dashboard/SaasApp/MilestonesOverview/MilestonesOverviewChart.js @@ -0,0 +1,122 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; + +class MilestonesOverviewChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + stroke: { + width: 0, + show: true + }, + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + offsetY: 0, + show: false, + position: "bottom", + fontSize: "14px", + labels: { + colors: '#5B5B98', + }, + }, + dataLabels: { + enabled: false, + style: { + fontSize: '14px' + }, + dropShadow: { + enabled: false + } + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 280 + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 18k + + + + + + Last Week + + + {" "} + 5.21k + + + + + + Last Month + + + {" "} + 32k + + + + + ); + } +} + +export default MilestonesOverviewChart; diff --git a/components/Dashboard/SaasApp/MilestonesOverview/index.js b/components/Dashboard/SaasApp/MilestonesOverview/index.js new file mode 100644 index 0000000..d3a2f62 --- /dev/null +++ b/components/Dashboard/SaasApp/MilestonesOverview/index.js @@ -0,0 +1,110 @@ +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 MilestonesOverviewChart from "./MilestonesOverviewChart"; + +const MilestonesOverview = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* MilestonesOverviewChart */} + + + + ); +}; + +export default MilestonesOverview; diff --git a/components/Dashboard/SaasApp/Profile/ImpressionShare.js b/components/Dashboard/SaasApp/Profile/ImpressionShare.js new file mode 100644 index 0000000..224bd6e --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/ImpressionShare.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import styles from "@/components/Dashboard/SaasApp/Profile/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: ["#2DB6F5"], + }, + labels: ["Average Results"], + }, + }; + } + + render() { + return ( + <> +
+ +

Excellent

+

Impression Share

+
+ + ); + } +} + +export default ImpressionShare; diff --git a/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css b/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css new file mode 100644 index 0000000..67e8c1a --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/ImpressionShare.module.css @@ -0,0 +1,29 @@ +.chartBox { + text-align: center; + top: 12px; + position: relative; +} +.chartBox h3 { + margin: 0; + color: #5B5B98; + font-weight: 500; + font-size: 13px; + position: relative; + bottom: 7px; +} +.chartBox p { + position: absolute; + margin: 0; + left: 0; + right: 0; + bottom: 28px; + font-size: 12px; + font-weight: 500; + color: #2DB6F5; +} + +@media only screen and (max-width: 767px) { + .chartBox h3 { + font-size: 10px; + } +} \ No newline at end of file diff --git a/components/Dashboard/SaasApp/Profile/index.js b/components/Dashboard/SaasApp/Profile/index.js new file mode 100644 index 0000000..fd2bd83 --- /dev/null +++ b/components/Dashboard/SaasApp/Profile/index.js @@ -0,0 +1,42 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ImpressionShare from "./ImpressionShare"; + +const Profile = () => { + return ( + <> + + + + Profile image + + + Andrew Burns + + + Programmer + + + + + + + + + ); +}; + +export default Profile; diff --git a/components/Dashboard/SaasApp/RevenueSummary.js b/components/Dashboard/SaasApp/RevenueSummary.js new file mode 100644 index 0000000..e1d08e0 --- /dev/null +++ b/components/Dashboard/SaasApp/RevenueSummary.js @@ -0,0 +1,177 @@ +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, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const RevenueSummary = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "Revenue Summary", + data: [2.3, 3, 4.0, 10.5, 5.6, 5, 4, 2.8, 2, 1.3, 0.8, 0.3], + }, + ]; + const options = { + chart: { + type: "bar", + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + borderRadius: 9, + columnWidth: "60%", + borderRadiusWhenStacked: "last", + borderRadiusApplication: "around", + dataLabels: { + position: "top", + }, + }, + }, + dataLabels: { + enabled: true, + formatter: function (val) { + return val + "%"; + }, + offsetY: -28, + style: { + colors: ["#5B5B98"], + }, + }, + colors: ["#757fef"], + fill: { + opacity: 1, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + position: "top", + labels: { + style: { + colors: "#A9A9C8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + labels: { + show: false, + formatter: function (val) { + return val + "%"; + }, + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + }; + + return ( + <> + + {/* Card Header */} + + + Revenue Summary + + + + + Select + + + + + + + + + + ); +}; + +export default RevenueSummary; diff --git a/components/Dashboard/SaasApp/SalesAnalytics.js b/components/Dashboard/SaasApp/SalesAnalytics.js new file mode 100644 index 0000000..637661c --- /dev/null +++ b/components/Dashboard/SaasApp/SalesAnalytics.js @@ -0,0 +1,181 @@ +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, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const SalesAnalytics = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + data: [ + { + x: "Operations", + y: [2800, 4500], + }, + { + x: "Customer Success", + y: [3200, 4100], + }, + { + x: "Engineering", + y: [2950, 7800], + }, + { + x: "Marketing", + y: [3000, 4600], + }, + { + x: "Product", + y: [3500, 4100], + }, + { + x: "Data Science", + y: [4500, 6500], + }, + { + x: "Sales", + y: [4100, 5600], + }, + ], + }, + ]; + const options = { + chart: { + type: "rangeBar", + toolbar: { + show: false, + }, + }, + colors: ["#2DB6F5", "#757FEF"], + plotOptions: { + bar: { + horizontal: true, + isDumbbell: true, + dumbbellColors: [["#2DB6F5", "#757FEF"]], + }, + }, + legend: { + show: false, + }, + fill: { + type: "gradient", + gradient: { + gradientToColors: ["#757FEF"], + inverseColors: false, + stops: [0, 100], + }, + }, + grid: { + show: true, + strokeDashArray: 5, + borderColor: "#EDEFF5", + }, + xaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + labels: { + style: { + colors: "#a9a9c8", + fontSize: "14px", + }, + }, + axisBorder: { + show: false, + }, + }, + }; + + return ( + <> + + {/* Card Header */} + + + Sales Analytics + + + + + Select + + + + + + + + + + ); +}; + +export default SalesAnalytics; diff --git a/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js b/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..36e6b7a --- /dev/null +++ b/components/Dashboard/SaasApp/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "13px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + height: 280 + }, + legend: { + show: false, + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Dashboard/SaasApp/TasksPerformance/index.js b/components/Dashboard/SaasApp/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Dashboard/SaasApp/TasksPerformance/index.js @@ -0,0 +1,110 @@ +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 TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Dashboard/SaasApp/TotalOrders.js b/components/Dashboard/SaasApp/TotalOrders.js new file mode 100644 index 0000000..f6d7cb1 --- /dev/null +++ b/components/Dashboard/SaasApp/TotalOrders.js @@ -0,0 +1,80 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import ProgressBar from "@ramonak/react-progress-bar"; + +const TotalOrders = () => { + return ( + <> + + + + + + + + + 40,178 + + Total Orders + + + + + + + Order Target + + 30,40548.00 + + + + + + + ); +}; + +export default TotalOrders; diff --git a/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css b/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..4d9b43e --- /dev/null +++ b/components/Dashboard/eCommerce/ActivityTimeline/ActivityTimeline.module.css @@ -0,0 +1,92 @@ +.timelineList .tList { + position: relative; + padding-left: 20px; + margin-bottom: 18px; + padding-bottom: 18px; + 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 10px; + font-family: var(--bodyFontFamily) !important; +} +.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; + font-family: var(--bodyFontFamily) !important; +} +.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::after { + background: var(--borderColor); +} +[class="dark"] .timelineList .tList .content h5 { + color: var(--darkBodyTextColor) !important; +} \ No newline at end of file diff --git a/components/Dashboard/eCommerce/ActivityTimeline/index.js b/components/Dashboard/eCommerce/ActivityTimeline/index.js new file mode 100644 index 0000000..2179251 --- /dev/null +++ b/components/Dashboard/eCommerce/ActivityTimeline/index.js @@ -0,0 +1,144 @@ +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 "../../eCommerce/ActivityTimeline/ActivityTimeline.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "5 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.", + 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", + }, +]; + +const ActivityTimeline = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 3).map((timeline) => ( +
+

{timeline.title}

+
+ Icon +
{timeline.subTitle}
+
+

{timeline.date}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Dashboard/eCommerce/AudienceOverview.js b/components/Dashboard/eCommerce/AudienceOverview.js new file mode 100644 index 0000000..d80a35f --- /dev/null +++ b/components/Dashboard/eCommerce/AudienceOverview.js @@ -0,0 +1,131 @@ +import React from "react"; +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 AudienceOverview = () => { + const series = [ + { + name: "Orders", + data: [44, 55, 57, 56, 61, 58, 63, 60, 66, 70, 75, 80], + }, + { + name: "Net Revenue", + data: [76, 85, 101, 98, 87, 105, 91, 114, 94, 100, 110, 96], + }, + { + name: "Refunds", + data: [35, 41, 36, 26, 45, 48, 52, 53, 41, 55, 45, 60], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "40%", + endingShape: "rounded", + borderRadius: "4", + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 1, + colors: ["transparent"], + }, + colors: ["#757FEF", "#2DB6F5", "#EE368C"], + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "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 + " Thousands"; + }, + }, + }, + legend: { + offsetY: 12, + position: "top", + horizontalAlign: "right", + }, + grid: { + show: true, + borderColor: "#f6f6f7", + }, + }; + + return ( + <> + + + Audience Overview + + + + + + ); +}; + +export default AudienceOverview; diff --git a/components/Dashboard/eCommerce/BestSellingProducts.js b/components/Dashboard/eCommerce/BestSellingProducts.js new file mode 100644 index 0000000..3a8ae5e --- /dev/null +++ b/components/Dashboard/eCommerce/BestSellingProducts.js @@ -0,0 +1,251 @@ +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 Table from "@mui/material/Table"; +import TableBody from "@mui/material/TableBody"; +import TableCell from "@mui/material/TableCell"; +import TableContainer from "@mui/material/TableContainer"; +import TableRow from "@mui/material/TableRow"; +import Paper from "@mui/material/Paper"; + +function createData( + productName, + productImg, + productId, + price, + stockAvailable, + stockTotal, + stockStatus +) { + return { + productName, + productImg, + productId, + price, + stockAvailable, + stockTotal, + stockStatus, + }; +} + +const rows = [ + createData( + "Admas airpod x-Zon", + "/images/product5.png", + "ID: A3652", + "$289.50", + "450", + "550", + "Stock" + ), + createData( + "Smart watch F8 Pro", + "/images/product6.png", + "ID: A3653", + "$189.50", + "430", + "550", + "Stock" + ), + createData( + "Nord Fold ZL", + "/images/product7.png", + "ID: A3654", + "$280.50", + "410", + "550", + "Stock" + ), + createData( + "Wall Clock Cimbina", + "/images/product8.png", + "ID: A3655", + "$389.50", + "420", + "550", + "Stock" + ), + createData( + "Galaxo T6 Munsun", + "/images/product9.png", + "ID: A3656", + "$289.50", + "440", + "550", + "Stock" + ), + createData( + "Laptop Macos Pro", + "/images/product1.png", + "ID: A3657", + "$489.50", + "340", + "550", + "Stock" + ), +]; + +const BestSellingProducts = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + return ( + <> + + + + Best Selling Products + + + + Select + + + + + + + + + {rows.map((row) => ( + + + + Product Img + + + {row.productName} + + + + {row.productId} + + + + + + + {row.price} + + + + {row.stockAvailable}{" "} + + {row.stockTotal} + + + + + {row.stockStatus} + + + ))} + +
+
+
+ + ); +}; + +export default BestSellingProducts; diff --git a/components/Dashboard/eCommerce/Features.js b/components/Dashboard/eCommerce/Features.js new file mode 100644 index 0000000..688e724 --- /dev/null +++ b/components/Dashboard/eCommerce/Features.js @@ -0,0 +1,115 @@ +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", + title: "$25,890", + subTitle: "Total Sales", + image: "/images/graph-icon.png", + icon: , + growthText: "1.3% Up from past week", + color: "successColor", + }, + { + id: "2", + title: "$25,890", + subTitle: "Total Orders", + image: "/images/work-icon.png", + icon: , + growthText: "1.5% Up from past week", + color: "successColor", + }, + { + id: "3", + title: "183.35M", + subTitle: "Total Customers", + image: "/images/users-icon.png", + icon: , + growthText: "1.6% Up from past week", + color: "dangerColor", + }, +]; + +const Features = () => { + return ( + <> + + {FeaturesData.map((feature) => ( + + + + + + {feature.title} + + + {feature.subTitle} + + + + + Graph + + + + + + + {feature.icon} + + {feature.growthText} + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Dashboard/eCommerce/Impressions.js b/components/Dashboard/eCommerce/Impressions.js new file mode 100644 index 0000000..0d61882 --- /dev/null +++ b/components/Dashboard/eCommerce/Impressions.js @@ -0,0 +1,43 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import { Typography } from "@mui/material"; + +const Impressions = () => { + return ( + <> + + + Impressions + + + + $12,875{" "} + + 10% + + + + + Compared to $21,490 last year + + + + ); +}; + +export default Impressions; diff --git a/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js new file mode 100644 index 0000000..a1c1f83 --- /dev/null +++ b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/LiveVisitsChart.js @@ -0,0 +1,62 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LiveVisitsChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [72, 56], + options: { + chart: { + type: "donut", + }, + labels: ["Domestic", "International"], + colors: ["#757FEF", "#EE368C"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default LiveVisitsChart; diff --git a/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js new file mode 100644 index 0000000..20914ea --- /dev/null +++ b/components/Dashboard/eCommerce/LiveVisitsOnOurSite/index.js @@ -0,0 +1,110 @@ +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 LiveVisitsChart from "./LiveVisitsChart"; + +const LiveVisitsOnOurSite = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Live Visits on Our Site + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* Live Visits Chart */} + + + + ); +}; + +export default LiveVisitsOnOurSite; diff --git a/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css b/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css new file mode 100644 index 0000000..fc6d6e1 --- /dev/null +++ b/components/Dashboard/eCommerce/NewCustomers/NewCustomers.module.css @@ -0,0 +1,68 @@ +.newCustomerList { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid #F7FAFF; + padding-bottom: 17px; + margin-bottom: 17px; +} +.newCustomerList:last-child { + border-bottom: none; + padding-bottom: 0; + margin-bottom: 0; +} +.leftContent { + display: flex; + align-items: center; +} +.leftContent img { + border-radius: 100%; + width: 38px; + height: 38px; + margin-right: 10px; +} +.leftContent h3 { + margin: 0; + font-size: 13px; +} +.leftContent p { + margin: 0; + color: #A9A9C8; + font-size: 12px; +} + +.rightContent { + display: flex; + align-items: center; +} +.price { + color: #5B5B98; + font-size: 13px; + margin-right: 10px; +} +.order { + background: rgba(117, 127, 239, 0.1); + border-radius: 13.5px; + color: #757FEF; + font-weight: 500; + font-size: 11px; + padding: 5px 10px; +} + +/* For RTL Style */ +[dir="rtl"] .leftContent img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .price { + margin-right: 0; + margin-left: 10px; +} + +/* For dark mode */ +[class="dark"] .newCustomerList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .newCustomerList:last-child { + border-bottom: none; +} \ No newline at end of file diff --git a/components/Dashboard/eCommerce/NewCustomers/index.js b/components/Dashboard/eCommerce/NewCustomers/index.js new file mode 100644 index 0000000..c75d6ce --- /dev/null +++ b/components/Dashboard/eCommerce/NewCustomers/index.js @@ -0,0 +1,164 @@ +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/eCommerce/NewCustomers/NewCustomers.module.css" + +const NewCustomersData = [ + { + id: "1", + image: "/images/user2.png", + name: "Jordan Stevenson", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + }, + { + id: "2", + image: "/images/user3.png", + name: "Lydia Reese", + userName: "@lreese3b", + price: "$289.50", + order: "15 Orders", + }, + { + id: "3", + image: "/images/user4.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + }, + { + id: "4", + image: "/images/user5.png", + name: "Easin Arafat", + userName: "@jstevenson5c", + price: "$289.50", + order: "15 Orders", + } +]; + +const NewCustomers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + New Customers + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + {NewCustomersData.slice(0, 4).map((customer) => ( +
+
+ user +
+

{customer.name}

+

{customer.userName}

+
+
+
+
+ {customer.price} +
+
+ {customer.order} +
+
+
+ ))} +
+
+ + ); +}; + +export default NewCustomers; diff --git a/components/Dashboard/eCommerce/Ratings/RatingsChart.js b/components/Dashboard/eCommerce/Ratings/RatingsChart.js new file mode 100644 index 0000000..5be2072 --- /dev/null +++ b/components/Dashboard/eCommerce/Ratings/RatingsChart.js @@ -0,0 +1,67 @@ +import React, { Component } from 'react'; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RatingsChart extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 300, + }, + colors: ["#757FEF", "#00B69B", "#2DB6F5", "#EE368C", "#FFBC2B"], + plotOptions: { + pie: { + startAngle: -90, + endAngle: 270 + } + }, + dataLabels: { + enabled: false + }, + fill: { + type: 'gradient', + }, + legend: { + show: false, + formatter: function(val, opts) { + return val + " - " + opts.w.globals.series[opts.seriesIndex] + } + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + width: 200 + }, + legend: { + position: 'bottom' + } + } + }] + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default RatingsChart; diff --git a/components/Dashboard/eCommerce/Ratings/index.js b/components/Dashboard/eCommerce/Ratings/index.js new file mode 100644 index 0000000..2dc62b8 --- /dev/null +++ b/components/Dashboard/eCommerce/Ratings/index.js @@ -0,0 +1,90 @@ +import React from "react"; +import Box from "@mui/material/Box"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import StarBorderIcon from "@mui/icons-material/StarBorder"; +import RatingsChart from "./RatingsChart"; + +const Ratings = () => { + return ( + <> + + + + + Ratings + + + + YEAR OF 2022 + + + + 8.14k{" "} + + Review + + + + + {" "} + 4.5{" "} + + +15.6% + {" "} + From previous period + + + + + + + + + + ); +}; + +export default Ratings; diff --git a/components/Dashboard/eCommerce/RecentOrders.js b/components/Dashboard/eCommerce/RecentOrders.js new file mode 100644 index 0000000..470dfad --- /dev/null +++ b/components/Dashboard/eCommerce/RecentOrders.js @@ -0,0 +1,679 @@ +import * as 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 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"; + +function RecentOrder(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +RecentOrder.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating +) { + return { + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating, + }; +} + +const rows = [ + createData( + "#SK258", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK259", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK260", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK261", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK262", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK263", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK264", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK265", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK266", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK267", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK268", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK269", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK270", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK271", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK272", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK273", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK274", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK275", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function RecentOrders() { + // Select + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Table + 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 ( + <> + + + + Recent Orders + + + + + Select + + + + + + + + + + + + Order ID + + + + Product + + + + Customer + + + + Price + + + + Vendor + + + + Date + + + + Status + + + + Rating + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.orderID} + + + + + Product Img + + {row.productTitle} + + + + + + {row.customer} + + + + {row.price} + + + + {row.vendor} + + + + {row.date} + + + + {row.status} + + + + {row.rating} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/eCommerce/RevenuStatus.js b/components/Dashboard/eCommerce/RevenuStatus.js new file mode 100644 index 0000000..9c519d0 --- /dev/null +++ b/components/Dashboard/eCommerce/RevenuStatus.js @@ -0,0 +1,136 @@ +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, +}); +import InputLabel from "@mui/material/InputLabel"; +import MenuItem from "@mui/material/MenuItem"; +import FormControl from "@mui/material/FormControl"; +import Select from "@mui/material/Select"; + +const RevenuStatus = () => { + // Select Form + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // Chart + const series = [ + { + name: "income", + data: [50, 48, 47, 48, 50, 48, 50, 48, 50, 48, 48], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + colors: ["#757FEF"], + xaxis: { + categories: [ + "1 Jan", + "2 Jan", + "3 Jan", + "4 Jan", + "5 Jan", + "6 Jan", + "7 Jan", + "8 Jan", + "9 Jan", + "10 Jan", + "11 Jan", + "12 Jan", + ], + labels: { + style: { + colors: "#A9A9C8", + fontSize: "12px", + }, + }, + }, + grid: { + show: true, + borderColor: "#f6f6f7", + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + y: { + formatter: function (val) { + return "$" + val + "k"; + }, + }, + }, + }; + + return ( + <> + + + + Revenu Status + + + + Select + + + + + + + + + ); +}; + +export default RevenuStatus; diff --git a/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js b/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js new file mode 100644 index 0000000..5097bef --- /dev/null +++ b/components/Dashboard/eCommerce/SalesByCountries/SalesByCountriesChart.js @@ -0,0 +1,59 @@ +import React, { Component } from "react"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SalesByCountriesChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [75, 40, 65, 80], + options: { + labels: ["Canada", "Russia", "Greenland", "USA"], + colors: ["#757FEF", "#2DB6F5", "#EE368C", "#00B69B"], + tooltip: { + y: { + formatter: function (val) { + return "" + val + "%"; + }, + }, + }, + legend: { + offsetY: 2, + position: "bottom", + horizontalAlign: "center", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + ); + } +} + +export default SalesByCountriesChart; diff --git a/components/Dashboard/eCommerce/SalesByCountries/index.js b/components/Dashboard/eCommerce/SalesByCountries/index.js new file mode 100644 index 0000000..9cc6b85 --- /dev/null +++ b/components/Dashboard/eCommerce/SalesByCountries/index.js @@ -0,0 +1,208 @@ +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 { styled } from "@mui/material/styles"; +import LinearProgress, { + linearProgressClasses, +} from "@mui/material/LinearProgress"; +import SalesByCountriesChart from "./SalesByCountriesChart"; + +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" : "#F7FAFF", + }, +})); + +const SalesByCountries = () => { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Sales by Countries + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* SalesByCountriesChart */} + + + + + + Canada + + 75% + + + + + + + + Russia + + 40% + + + + + + + + Greenland + + 65% + + + + + + + + USA + + 80% + + + + + + ); +}; + +export default SalesByCountries; diff --git a/components/Dashboard/eCommerce/TeamMembersList.js b/components/Dashboard/eCommerce/TeamMembersList.js new file mode 100644 index 0000000..501e15e --- /dev/null +++ b/components/Dashboard/eCommerce/TeamMembersList.js @@ -0,0 +1,448 @@ +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 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"; + +function TeamMembersLists(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +TeamMembersLists.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + userImg, + name, + userName, + email, + roleIcon, + role, + status, + badgeClass +) { + return { + userImg, + name, + userName, + email, + roleIcon, + role, + status, + badgeClass, + }; +} + +const rows = [ + createData( + "/images/user1.png", + "Jordan Stevenson", + "@jstevenson5c", + "jordansteven@admash.com", + "ri-macbook-line", + "Admin", + "Active", + "successBadge" + ), + createData( + "/images/user2.png", + "Lucile Young", + "@lyoung4a", + "lucile@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user3.png", + "Francis Frank", + "@ffrank7e", + "frank43@admash.com", + "ri-shield-user-fill", + "Maintainer", + "Inactive", + "dangerBadge" + ), + createData( + "/images/user4.png", + "Phoebe Patterson", + "@ppatterson2g", + "phoebe57@admash.com", + "ri-settings-2-line", + "Author", + "Active", + "successBadge" + ), + createData( + "/images/user5.png", + "Wade Dave", + "@wadedave", + "wadedave1@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user6.png", + "Seth Ivan", + "@sethivan", + "sethivansds@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user7.png", + "Riley", + "@riley", + "riley@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user8.png", + "Gilbert", + "@gilbert", + "gilbert@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user9.png", + "Jorge", + "@jorge", + "jorge@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user10.png", + "Dan Brian", + "@danbrian", + "danbrian@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user11.png", + "Roberto", + "@roberto", + "roberto@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user12.png", + "Ramon", + "@ramon", + "ramon@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user13.png", + "Miles Liam", + "@milesliam", + "milesliam@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), + createData( + "/images/user14.png", + "Nathaniel", + "@nathaniel", + "nathaniel@admash.com", + "ri-edit-line", + "Editor", + "Active", + "successBadge" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); +export default function TeamMembersList() { + const [page, setPage] = React.useState(0); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + + // 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 ( + <> + + + + Team Members List + + + + + + + + + User + + + + Email + + + + Role + + + + Status + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + + + {row.name} + + + {row.userName} + + + + + + + {row.email} + + + + {row.role} + + + + {row.status} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Dashboard/eCommerce/VisitsByDay.js b/components/Dashboard/eCommerce/VisitsByDay.js new file mode 100644 index 0000000..a001f89 --- /dev/null +++ b/components/Dashboard/eCommerce/VisitsByDay.js @@ -0,0 +1,102 @@ +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 VisitsByDay = () => { + const series = [ + { + name: "Visits This Weak", + data: [80, 50, 30, 40, 100, 20, 50], + }, + { + name: "Visits Last Weak", + data: [20, 30, 40, 80, 20, 80, 100], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + dropShadow: { + enabled: true, + blur: 1, + left: 1, + top: 1, + }, + }, + stroke: { + width: 2, + }, + colors: ["#2DB6F5", "#E289F2"], + fill: { + opacity: 0.1, + }, + markers: { + size: 5, + }, + xaxis: { + categories: [ + "Monday", + "Tuesday", + "Wendsday", + "Thursday", + "Friday", + "Saturday", + "Sunday", + ], + }, + }; + + return ( + <> + + + + Visits by Day + + + + Total 248.5k Visits + + + + + + + ); +}; + +export default VisitsByDay; diff --git a/components/Email/EmailLists.js b/components/Email/EmailLists.js new file mode 100644 index 0000000..a997dba --- /dev/null +++ b/components/Email/EmailLists.js @@ -0,0 +1,474 @@ +import * as React from "react"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +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 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 { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Checkbox from "@mui/material/Checkbox"; +import StarBorderIcon from "@mui/icons-material/StarBorder"; +import StarIcon from "@mui/icons-material/Star"; +import Link from "next/link"; + +const label = { inputProps: { "aria-label": "Checkbox demo" } }; + +function EmailList(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +EmailList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, text, readEmail, date) { + return { name, readEmail, text, date }; +} + +const rows = [ + createData( + "Benthon, me (2)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "1 Jan 2022" + ), + createData( + "Lucas Kriebel (via Twitter)", + "Last pic over my village – Yeah i'd like that! Do you remember the video som..", + "/email/read-email", + "2 Jan 2022" + ), + createData( + "Andrew Zimmer", + "Mochila Beta: Subscription Confirmed – You've been confirmed! Welcome to ", + "/email/read-email", + "3 Jan 2022" + ), + createData( + "Infinity HR", + "You've been confirmed! Welcome to the ruling class of the inbox. For your ", + "/email/read-email", + "4 Jan 2022" + ), + createData( + "keter (3)", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "5 Jan 2022" + ), + createData( + "Death to Stock 2", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "6 Jan 2022" + ), + createData( + "Heter (10)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "7 Jan 2022" + ), + createData( + "Erik, me (15)", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "8 Jan 2022" + ), + createData( + "Death to Stock 4", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "9 Jan 2022" + ), + createData( + "Erik, me (5)", + "Off on Thursday – Eff that place, you might as well stay here with us inst", + "/email/read-email", + "10 Jan 2022" + ), + createData( + "Benthon, me (3)", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "11 Jan 2022" + ), + createData( + "Google Drive Team", + "This Week's Top Stories – Our top pick for you on Medium this week The", + "/email/read-email", + "12 Jan 2022" + ), + createData( + "Benthon, me (13)", + "Weekend on Revibe – Today's Friday and we thought maybe you want so", + "/email/read-email", + "13 Jan 2022" + ), + createData( + "me, Susanna (11)", + "You can now use your storage in Google Drive – Hey Nicklas Sandell! Tha", + "/email/read-email", + "14 Jan 2022" + ), + createData( + "EnvyTheme Support", + "New Ticket Reply - eDemy - Michel Valenzuela", + "/email/read-email", + "15 Jan 2022" + ), + createData( + "EnvyTheme Support 2", + "New Ticket Reply - Abev - Manos Pappas", + "/email/read-email", + "16 Jan 2022" + ), + createData( + "EnvyTheme Support 3", + "New Ticket Reply - Lofi - Adarsh Raj", + "/email/read-email", + "11 Jan 2022" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function EmailLists() { + 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); + }; + + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Email List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + + + } + checkedIcon={} + /> + + + + + {row.name} + + + + + + {row.text} + + + + + {row.date} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Email/LeftSidebar.js b/components/Email/LeftSidebar.js new file mode 100644 index 0000000..18b4965 --- /dev/null +++ b/components/Email/LeftSidebar.js @@ -0,0 +1,375 @@ +import React from "react"; +import { useRouter } from "next/router"; +import Link from "next/link"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import IconButton from "@mui/material/IconButton"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import ClearIcon from "@mui/icons-material/Clear"; +import SendIcon from "@mui/icons-material/Send"; +import styles from "@/components/Email/LeftSidebar.module.css"; +import Badge from "@mui/material/Badge"; +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"; +import PropTypes from "prop-types"; + +import dynamic from "next/dynamic"; +const RichTextEditor = dynamic(() => import("@mantine/rte"), { + ssr: false, +}); + +// Compose 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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Compose Modal + +const LeftSidebar = () => { + const router = useRouter(); + + // Compose 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 Compose Modal + + return ( + <> + + + + + mailbox + + + {/* Nav */} +
    +
  • + + + Inbox + + + +
  • + +
  • + + Important + +
  • + +
  • + + Snooozed + +
  • + +
  • + + Draft + + +
  • + +
  • + + Sent Mail + +
  • + +
  • + + Spam + + +
  • + +
  • + + Trash + +
  • +
+ + + labels + + + {/* Nav */} +
    +
  • + + + Personal + + +
  • + +
  • + + Company + +
  • + +
  • + + Wallet Balance + +
  • + +
  • + + Friends + +
  • + +
  • + + Family + +
  • +
+
+ + {/* Compose Modal */} + + + + + New Message + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default LeftSidebar; diff --git a/components/Email/LeftSidebar.module.css b/components/Email/LeftSidebar.module.css new file mode 100644 index 0000000..2b917cb --- /dev/null +++ b/components/Email/LeftSidebar.module.css @@ -0,0 +1,75 @@ +.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: 13px; + font-weight: 500; + display: block; +} +.leftNav li a:hover, .leftNav li a:hover i { + color: var(--primaryColor); +} +.leftNav li.active > a, .leftNav li.active a i { + color: var(--primaryColor) !important; +} +.leftNav li a i { + color: #818093; + font-size: 16px; + 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 dark mode */ +[class="dark"] .leftNav li a { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a span { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a i { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li ul li a { + color: var(--darkHeadingTextColor); +} +[class="dark"] .leftNav li a:hover, [class="dark"] .leftNav li a:hover i { + color: var(--primaryColor); +} +[class="dark"] .leftNav li.active > a span, [class="dark"] .leftNav li.active a i { + color: var(--primaryColor); +} \ No newline at end of file diff --git a/components/Email/ReadEmailContent.js b/components/Email/ReadEmailContent.js new file mode 100644 index 0000000..cfc3a8f --- /dev/null +++ b/components/Email/ReadEmailContent.js @@ -0,0 +1,262 @@ +import * as React from "react"; +import IconButton from "@mui/material/IconButton"; +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 Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Button from '@mui/material/Button'; +import Stack from '@mui/material/Stack'; +import ReplyIcon from '@mui/icons-material/Reply'; +import ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox'; + +export default function ReadEmailContent() { + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + EnvyTheme Support + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + User + + Jordan Stevenson + From: jonathan@domain.com + + + + + Dec 14, 2017, 5:17 AM + + + + + + Hi Coderthemes! + + + + Last pic over my village – Yeah i'd like that! Do you remember the video som.. + + + + Praesent dui ex, dapibus eget mauris ut, finibus vestibulum enim. Quisque arcu leo, facilisis in fringilla id, luctus in tortor. Nunc vestibulum est quis orci varius viverra. Curabitur dictum volutpat massa vulputate molestie. In at felis ac velit maximus convallis. + + + + Sed elementum turpis eu lorem interdum, sed porttitor eros commodo. Nam eu venenatis tortor, id lacinia diam. Sed aliquam in dui et porta. Sed bibendum orci non tincidunt ultrices. Vivamus fringilla, mi lacinia dapibus condimentum, ipsum urna lacinia lacus, vel tincidunt mi nibh sit amet lorem. + + + + Checklists/Sub-tasks + + +
    +
  1. Your design preferences (Color, style, shapes, Fonts, others)
  2. +
  3. Tell me, why is your item different?
  4. +
  5. Do you want to bring up a specific feature of your item? If yes, please tell me
  6. +
  7. Do you have any preference or specific thing you would like to change or improve on your item page?
  8. +
  9. Do you want to include your item's or your provider's logo on the page? if yes, please send it to me in vector format (Ai or EPS)
  10. +
  11. Please provide me with the copy or text to display
  12. +
+ + + Filling in this form with the above information will ensure that they will be able to start work quickly. + + + + You can complete your order by putting your coupon code into the Promotional code box and clicking ‘Apply Coupon’. + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + + + + 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. + + + + At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. + +
+ + + + + + +
+
+ + ); +} diff --git a/components/Forms/AdvancedElements/BasicDatePicker.js b/components/Forms/AdvancedElements/BasicDatePicker.js new file mode 100644 index 0000000..f93bc5e --- /dev/null +++ b/components/Forms/AdvancedElements/BasicDatePicker.js @@ -0,0 +1,43 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from '@mui/material/TextField'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { DatePicker } from '@mui/x-date-pickers/DatePicker'; + +export default function BasicDatePicker() { + const [value, setValue] = React.useState(null); + + return ( + + + Date Picker + + + + { + setValue(newValue); + }} + renderInput={(params) => } + /> + + + ); +} \ No newline at end of file diff --git a/components/Forms/AdvancedElements/BasicTimePicker.js b/components/Forms/AdvancedElements/BasicTimePicker.js new file mode 100644 index 0000000..3d5ec58 --- /dev/null +++ b/components/Forms/AdvancedElements/BasicTimePicker.js @@ -0,0 +1,44 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from '@mui/material/TextField'; +import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; +import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; +import { TimePicker } from '@mui/x-date-pickers/TimePicker'; + +export default function BasicTimePicker() { + + const [value, setValue] = React.useState(null); + + return ( + + + Time Picker + + + + { + setValue(newValue); + }} + renderInput={(params) => } + /> + + + ); +} \ No newline at end of file diff --git a/components/Forms/AdvancedElements/CountrySelect.js b/components/Forms/AdvancedElements/CountrySelect.js new file mode 100644 index 0000000..6c5812f --- /dev/null +++ b/components/Forms/AdvancedElements/CountrySelect.js @@ -0,0 +1,488 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import TextField from '@mui/material/TextField'; +import Autocomplete from '@mui/material/Autocomplete'; + +export default function CountrySelect() { + return ( + <> + + + Country Select + + + option.label} + renderOption={(props, option) => ( + img': { mr: 2, flexShrink: 0 } }} {...props}> + + {option.label} ({option.code}) +{option.phone} + + )} + renderInput={(params) => ( + + )} + /> + + + ); +} + +// From https://bitbucket.org/atlassian/atlaskit-mk-2/raw/4ad0e56649c3e6c973e226b7efaeb28cb240ccb0/packages/core/select/src/data/countries.js +const countries = [ + { code: 'AD', label: 'Andorra', phone: '376' }, + { + code: 'AE', + label: 'United Arab Emirates', + phone: '971', + }, + { code: 'AF', label: 'Afghanistan', phone: '93' }, + { + code: 'AG', + label: 'Antigua and Barbuda', + phone: '1-268', + }, + { code: 'AI', label: 'Anguilla', phone: '1-264' }, + { code: 'AL', label: 'Albania', phone: '355' }, + { code: 'AM', label: 'Armenia', phone: '374' }, + { code: 'AO', label: 'Angola', phone: '244' }, + { code: 'AQ', label: 'Antarctica', phone: '672' }, + { code: 'AR', label: 'Argentina', phone: '54' }, + { code: 'AS', label: 'American Samoa', phone: '1-684' }, + { code: 'AT', label: 'Austria', phone: '43' }, + { + code: 'AU', + label: 'Australia', + phone: '61', + suggested: true, + }, + { code: 'AW', label: 'Aruba', phone: '297' }, + { code: 'AX', label: 'Alland Islands', phone: '358' }, + { code: 'AZ', label: 'Azerbaijan', phone: '994' }, + { + code: 'BA', + label: 'Bosnia and Herzegovina', + phone: '387', + }, + { code: 'BB', label: 'Barbados', phone: '1-246' }, + { code: 'BD', label: 'Bangladesh', phone: '880' }, + { code: 'BE', label: 'Belgium', phone: '32' }, + { code: 'BF', label: 'Burkina Faso', phone: '226' }, + { code: 'BG', label: 'Bulgaria', phone: '359' }, + { code: 'BH', label: 'Bahrain', phone: '973' }, + { code: 'BI', label: 'Burundi', phone: '257' }, + { code: 'BJ', label: 'Benin', phone: '229' }, + { code: 'BL', label: 'Saint Barthelemy', phone: '590' }, + { code: 'BM', label: 'Bermuda', phone: '1-441' }, + { code: 'BN', label: 'Brunei Darussalam', phone: '673' }, + { code: 'BO', label: 'Bolivia', phone: '591' }, + { code: 'BR', label: 'Brazil', phone: '55' }, + { code: 'BS', label: 'Bahamas', phone: '1-242' }, + { code: 'BT', label: 'Bhutan', phone: '975' }, + { code: 'BV', label: 'Bouvet Island', phone: '47' }, + { code: 'BW', label: 'Botswana', phone: '267' }, + { code: 'BY', label: 'Belarus', phone: '375' }, + { code: 'BZ', label: 'Belize', phone: '501' }, + { + code: 'CA', + label: 'Canada', + phone: '1', + suggested: true, + }, + { + code: 'CC', + label: 'Cocos (Keeling) Islands', + phone: '61', + }, + { + code: 'CD', + label: 'Congo, Democratic Republic of the', + phone: '243', + }, + { + code: 'CF', + label: 'Central African Republic', + phone: '236', + }, + { + code: 'CG', + label: 'Congo, Republic of the', + phone: '242', + }, + { code: 'CH', label: 'Switzerland', phone: '41' }, + { code: 'CI', label: "Cote d'Ivoire", phone: '225' }, + { code: 'CK', label: 'Cook Islands', phone: '682' }, + { code: 'CL', label: 'Chile', phone: '56' }, + { code: 'CM', label: 'Cameroon', phone: '237' }, + { code: 'CN', label: 'China', phone: '86' }, + { code: 'CO', label: 'Colombia', phone: '57' }, + { code: 'CR', label: 'Costa Rica', phone: '506' }, + { code: 'CU', label: 'Cuba', phone: '53' }, + { code: 'CV', label: 'Cape Verde', phone: '238' }, + { code: 'CW', label: 'Curacao', phone: '599' }, + { code: 'CX', label: 'Christmas Island', phone: '61' }, + { code: 'CY', label: 'Cyprus', phone: '357' }, + { code: 'CZ', label: 'Czech Republic', phone: '420' }, + { + code: 'DE', + label: 'Germany', + phone: '49', + suggested: true, + }, + { code: 'DJ', label: 'Djibouti', phone: '253' }, + { code: 'DK', label: 'Denmark', phone: '45' }, + { code: 'DM', label: 'Dominica', phone: '1-767' }, + { + code: 'DO', + label: 'Dominican Republic', + phone: '1-809', + }, + { code: 'DZ', label: 'Algeria', phone: '213' }, + { code: 'EC', label: 'Ecuador', phone: '593' }, + { code: 'EE', label: 'Estonia', phone: '372' }, + { code: 'EG', label: 'Egypt', phone: '20' }, + { code: 'EH', label: 'Western Sahara', phone: '212' }, + { code: 'ER', label: 'Eritrea', phone: '291' }, + { code: 'ES', label: 'Spain', phone: '34' }, + { code: 'ET', label: 'Ethiopia', phone: '251' }, + { code: 'FI', label: 'Finland', phone: '358' }, + { code: 'FJ', label: 'Fiji', phone: '679' }, + { + code: 'FK', + label: 'Falkland Islands (Malvinas)', + phone: '500', + }, + { + code: 'FM', + label: 'Micronesia, Federated States of', + phone: '691', + }, + { code: 'FO', label: 'Faroe Islands', phone: '298' }, + { + code: 'FR', + label: 'France', + phone: '33', + suggested: true, + }, + { code: 'GA', label: 'Gabon', phone: '241' }, + { code: 'GB', label: 'United Kingdom', phone: '44' }, + { code: 'GD', label: 'Grenada', phone: '1-473' }, + { code: 'GE', label: 'Georgia', phone: '995' }, + { code: 'GF', label: 'French Guiana', phone: '594' }, + { code: 'GG', label: 'Guernsey', phone: '44' }, + { code: 'GH', label: 'Ghana', phone: '233' }, + { code: 'GI', label: 'Gibraltar', phone: '350' }, + { code: 'GL', label: 'Greenland', phone: '299' }, + { code: 'GM', label: 'Gambia', phone: '220' }, + { code: 'GN', label: 'Guinea', phone: '224' }, + { code: 'GP', label: 'Guadeloupe', phone: '590' }, + { code: 'GQ', label: 'Equatorial Guinea', phone: '240' }, + { code: 'GR', label: 'Greece', phone: '30' }, + { + code: 'GS', + label: 'South Georgia and the South Sandwich Islands', + phone: '500', + }, + { code: 'GT', label: 'Guatemala', phone: '502' }, + { code: 'GU', label: 'Guam', phone: '1-671' }, + { code: 'GW', label: 'Guinea-Bissau', phone: '245' }, + { code: 'GY', label: 'Guyana', phone: '592' }, + { code: 'HK', label: 'Hong Kong', phone: '852' }, + { + code: 'HM', + label: 'Heard Island and McDonald Islands', + phone: '672', + }, + { code: 'HN', label: 'Honduras', phone: '504' }, + { code: 'HR', label: 'Croatia', phone: '385' }, + { code: 'HT', label: 'Haiti', phone: '509' }, + { code: 'HU', label: 'Hungary', phone: '36' }, + { code: 'ID', label: 'Indonesia', phone: '62' }, + { code: 'IE', label: 'Ireland', phone: '353' }, + { code: 'IL', label: 'Israel', phone: '972' }, + { code: 'IM', label: 'Isle of Man', phone: '44' }, + { code: 'IN', label: 'India', phone: '91' }, + { + code: 'IO', + label: 'British Indian Ocean Territory', + phone: '246', + }, + { code: 'IQ', label: 'Iraq', phone: '964' }, + { + code: 'IR', + label: 'Iran, Islamic Republic of', + phone: '98', + }, + { code: 'IS', label: 'Iceland', phone: '354' }, + { code: 'IT', label: 'Italy', phone: '39' }, + { code: 'JE', label: 'Jersey', phone: '44' }, + { code: 'JM', label: 'Jamaica', phone: '1-876' }, + { code: 'JO', label: 'Jordan', phone: '962' }, + { + code: 'JP', + label: 'Japan', + phone: '81', + suggested: true, + }, + { code: 'KE', label: 'Kenya', phone: '254' }, + { code: 'KG', label: 'Kyrgyzstan', phone: '996' }, + { code: 'KH', label: 'Cambodia', phone: '855' }, + { code: 'KI', label: 'Kiribati', phone: '686' }, + { code: 'KM', label: 'Comoros', phone: '269' }, + { + code: 'KN', + label: 'Saint Kitts and Nevis', + phone: '1-869', + }, + { + code: 'KP', + label: "Korea, Democratic People's Republic of", + phone: '850', + }, + { code: 'KR', label: 'Korea, Republic of', phone: '82' }, + { code: 'KW', label: 'Kuwait', phone: '965' }, + { code: 'KY', label: 'Cayman Islands', phone: '1-345' }, + { code: 'KZ', label: 'Kazakhstan', phone: '7' }, + { + code: 'LA', + label: "Lao People's Democratic Republic", + phone: '856', + }, + { code: 'LB', label: 'Lebanon', phone: '961' }, + { code: 'LC', label: 'Saint Lucia', phone: '1-758' }, + { code: 'LI', label: 'Liechtenstein', phone: '423' }, + { code: 'LK', label: 'Sri Lanka', phone: '94' }, + { code: 'LR', label: 'Liberia', phone: '231' }, + { code: 'LS', label: 'Lesotho', phone: '266' }, + { code: 'LT', label: 'Lithuania', phone: '370' }, + { code: 'LU', label: 'Luxembourg', phone: '352' }, + { code: 'LV', label: 'Latvia', phone: '371' }, + { code: 'LY', label: 'Libya', phone: '218' }, + { code: 'MA', label: 'Morocco', phone: '212' }, + { code: 'MC', label: 'Monaco', phone: '377' }, + { + code: 'MD', + label: 'Moldova, Republic of', + phone: '373', + }, + { code: 'ME', label: 'Montenegro', phone: '382' }, + { + code: 'MF', + label: 'Saint Martin (French part)', + phone: '590', + }, + { code: 'MG', label: 'Madagascar', phone: '261' }, + { code: 'MH', label: 'Marshall Islands', phone: '692' }, + { + code: 'MK', + label: 'Macedonia, the Former Yugoslav Republic of', + phone: '389', + }, + { code: 'ML', label: 'Mali', phone: '223' }, + { code: 'MM', label: 'Myanmar', phone: '95' }, + { code: 'MN', label: 'Mongolia', phone: '976' }, + { code: 'MO', label: 'Macao', phone: '853' }, + { + code: 'MP', + label: 'Northern Mariana Islands', + phone: '1-670', + }, + { code: 'MQ', label: 'Martinique', phone: '596' }, + { code: 'MR', label: 'Mauritania', phone: '222' }, + { code: 'MS', label: 'Montserrat', phone: '1-664' }, + { code: 'MT', label: 'Malta', phone: '356' }, + { code: 'MU', label: 'Mauritius', phone: '230' }, + { code: 'MV', label: 'Maldives', phone: '960' }, + { code: 'MW', label: 'Malawi', phone: '265' }, + { code: 'MX', label: 'Mexico', phone: '52' }, + { code: 'MY', label: 'Malaysia', phone: '60' }, + { code: 'MZ', label: 'Mozambique', phone: '258' }, + { code: 'NA', label: 'Namibia', phone: '264' }, + { code: 'NC', label: 'New Caledonia', phone: '687' }, + { code: 'NE', label: 'Niger', phone: '227' }, + { code: 'NF', label: 'Norfolk Island', phone: '672' }, + { code: 'NG', label: 'Nigeria', phone: '234' }, + { code: 'NI', label: 'Nicaragua', phone: '505' }, + { code: 'NL', label: 'Netherlands', phone: '31' }, + { code: 'NO', label: 'Norway', phone: '47' }, + { code: 'NP', label: 'Nepal', phone: '977' }, + { code: 'NR', label: 'Nauru', phone: '674' }, + { code: 'NU', label: 'Niue', phone: '683' }, + { code: 'NZ', label: 'New Zealand', phone: '64' }, + { code: 'OM', label: 'Oman', phone: '968' }, + { code: 'PA', label: 'Panama', phone: '507' }, + { code: 'PE', label: 'Peru', phone: '51' }, + { code: 'PF', label: 'French Polynesia', phone: '689' }, + { code: 'PG', label: 'Papua New Guinea', phone: '675' }, + { code: 'PH', label: 'Philippines', phone: '63' }, + { code: 'PK', label: 'Pakistan', phone: '92' }, + { code: 'PL', label: 'Poland', phone: '48' }, + { + code: 'PM', + label: 'Saint Pierre and Miquelon', + phone: '508', + }, + { code: 'PN', label: 'Pitcairn', phone: '870' }, + { code: 'PR', label: 'Puerto Rico', phone: '1' }, + { + code: 'PS', + label: 'Palestine, State of', + phone: '970', + }, + { code: 'PT', label: 'Portugal', phone: '351' }, + { code: 'PW', label: 'Palau', phone: '680' }, + { code: 'PY', label: 'Paraguay', phone: '595' }, + { code: 'QA', label: 'Qatar', phone: '974' }, + { code: 'RE', label: 'Reunion', phone: '262' }, + { code: 'RO', label: 'Romania', phone: '40' }, + { code: 'RS', label: 'Serbia', phone: '381' }, + { code: 'RU', label: 'Russian Federation', phone: '7' }, + { code: 'RW', label: 'Rwanda', phone: '250' }, + { code: 'SA', label: 'Saudi Arabia', phone: '966' }, + { code: 'SB', label: 'Solomon Islands', phone: '677' }, + { code: 'SC', label: 'Seychelles', phone: '248' }, + { code: 'SD', label: 'Sudan', phone: '249' }, + { code: 'SE', label: 'Sweden', phone: '46' }, + { code: 'SG', label: 'Singapore', phone: '65' }, + { code: 'SH', label: 'Saint Helena', phone: '290' }, + { code: 'SI', label: 'Slovenia', phone: '386' }, + { + code: 'SJ', + label: 'Svalbard and Jan Mayen', + phone: '47', + }, + { code: 'SK', label: 'Slovakia', phone: '421' }, + { code: 'SL', label: 'Sierra Leone', phone: '232' }, + { code: 'SM', label: 'San Marino', phone: '378' }, + { code: 'SN', label: 'Senegal', phone: '221' }, + { code: 'SO', label: 'Somalia', phone: '252' }, + { code: 'SR', label: 'Suriname', phone: '597' }, + { code: 'SS', label: 'South Sudan', phone: '211' }, + { + code: 'ST', + label: 'Sao Tome and Principe', + phone: '239', + }, + { code: 'SV', label: 'El Salvador', phone: '503' }, + { + code: 'SX', + label: 'Sint Maarten (Dutch part)', + phone: '1-721', + }, + { + code: 'SY', + label: 'Syrian Arab Republic', + phone: '963', + }, + { code: 'SZ', label: 'Swaziland', phone: '268' }, + { + code: 'TC', + label: 'Turks and Caicos Islands', + phone: '1-649', + }, + { code: 'TD', label: 'Chad', phone: '235' }, + { + code: 'TF', + label: 'French Southern Territories', + phone: '262', + }, + { code: 'TG', label: 'Togo', phone: '228' }, + { code: 'TH', label: 'Thailand', phone: '66' }, + { code: 'TJ', label: 'Tajikistan', phone: '992' }, + { code: 'TK', label: 'Tokelau', phone: '690' }, + { code: 'TL', label: 'Timor-Leste', phone: '670' }, + { code: 'TM', label: 'Turkmenistan', phone: '993' }, + { code: 'TN', label: 'Tunisia', phone: '216' }, + { code: 'TO', label: 'Tonga', phone: '676' }, + { code: 'TR', label: 'Turkey', phone: '90' }, + { + code: 'TT', + label: 'Trinidad and Tobago', + phone: '1-868', + }, + { code: 'TV', label: 'Tuvalu', phone: '688' }, + { + code: 'TW', + label: 'Taiwan, Republic of China', + phone: '886', + }, + { + code: 'TZ', + label: 'United Republic of Tanzania', + phone: '255', + }, + { code: 'UA', label: 'Ukraine', phone: '380' }, + { code: 'UG', label: 'Uganda', phone: '256' }, + { + code: 'US', + label: 'United States', + phone: '1', + suggested: true, + }, + { code: 'UY', label: 'Uruguay', phone: '598' }, + { code: 'UZ', label: 'Uzbekistan', phone: '998' }, + { + code: 'VA', + label: 'Holy See (Vatican City State)', + phone: '379', + }, + { + code: 'VC', + label: 'Saint Vincent and the Grenadines', + phone: '1-784', + }, + { code: 'VE', label: 'Venezuela', phone: '58' }, + { + code: 'VG', + label: 'British Virgin Islands', + phone: '1-284', + }, + { + code: 'VI', + label: 'US Virgin Islands', + phone: '1-340', + }, + { code: 'VN', label: 'Vietnam', phone: '84' }, + { code: 'VU', label: 'Vanuatu', phone: '678' }, + { code: 'WF', label: 'Wallis and Futuna', phone: '681' }, + { code: 'WS', label: 'Samoa', phone: '685' }, + { code: 'XK', label: 'Kosovo', phone: '383' }, + { code: 'YE', label: 'Yemen', phone: '967' }, + { code: 'YT', label: 'Mayotte', phone: '262' }, + { code: 'ZA', label: 'South Africa', phone: '27' }, + { code: 'ZM', label: 'Zambia', phone: '260' }, + { code: 'ZW', label: 'Zimbabwe', phone: '263' }, +]; \ No newline at end of file diff --git a/components/Forms/AdvancedElements/DefaultSelect.js b/components/Forms/AdvancedElements/DefaultSelect.js new file mode 100644 index 0000000..5cec2ad --- /dev/null +++ b/components/Forms/AdvancedElements/DefaultSelect.js @@ -0,0 +1,55 @@ +import React from "react"; +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'; + +export default function DefaultSelect() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Default Select + + + + Age + + + + + ); +} diff --git a/components/Forms/AdvancedElements/MultiSelect.js b/components/Forms/AdvancedElements/MultiSelect.js new file mode 100644 index 0000000..1d8e270 --- /dev/null +++ b/components/Forms/AdvancedElements/MultiSelect.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultiSelect() { + + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multi Select + + + + Name + + + + + ); +} diff --git a/components/Forms/AdvancedElements/MultipleSelectChip.js b/components/Forms/AdvancedElements/MultipleSelectChip.js new file mode 100644 index 0000000..25d3af9 --- /dev/null +++ b/components/Forms/AdvancedElements/MultipleSelectChip.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +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 Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultipleSelectChip() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Chip + + + + Chip + + + + + ); +} diff --git a/components/Forms/EditorArea.js b/components/Forms/EditorArea.js new file mode 100644 index 0000000..d875077 --- /dev/null +++ b/components/Forms/EditorArea.js @@ -0,0 +1,47 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const EditorArea = () => { + return ( + <> + + + Editor + + +
+ +
+
+ + ) +} + +export default EditorArea; \ No newline at end of file diff --git a/components/Forms/FileUploader/UploadMultipleFiles.js b/components/Forms/FileUploader/UploadMultipleFiles.js new file mode 100644 index 0000000..1226553 --- /dev/null +++ b/components/Forms/FileUploader/UploadMultipleFiles.js @@ -0,0 +1,163 @@ +import { Fragment, useState } from "react"; +import Box from "@mui/material/Box"; +import Link from "@mui/material/Link"; +import List from "@mui/material/List"; +import Button from "@mui/material/Button"; +import ListItem from "@mui/material/ListItem"; +import { styled } from "@mui/material/styles"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import ClearIcon from "@mui/icons-material/Clear"; +import FileCopyIcon from "@mui/icons-material/FileCopy"; +import Card from "@mui/material/Card"; +import { useDropzone } from "react-dropzone"; +import styles from "@/components/Forms/FileUploader/UploadMultipleFiles.module.css"; + +const FileUploaderMultiple = () => { + // ** State + const [files, setFiles] = useState([]); + + // ** Hooks + const { getRootProps, getInputProps } = useDropzone({ + onDrop: (acceptedFiles) => { + setFiles(acceptedFiles.map((file) => Object.assign(file))); + }, + }); + + const renderFilePreview = (file) => { + if (file.type.startsWith("image")) { + return ( + {file.name} + ); + } else { + return ; + } + }; + + const handleRemoveFile = (file) => { + const uploadedFiles = files; + const filtered = uploadedFiles.filter((i) => i.name !== file.name); + setFiles([...filtered]); + }; + + const fileList = files.map((file) => ( + +
+
+ {renderFilePreview(file)} +
+
+ + {file.name} + +
+
+ handleRemoveFile(file)}> + + +
+ )); + + const handleLinkClick = (event) => { + event.preventDefault(); + }; + + const handleRemoveAllFiles = () => { + setFiles([]); + }; + + return ( + <> + + + Upload Multiple Files + + +
+ + + Upload img + + + Drop files here or click to upload. + + + + Drop files here or click{" "} + + browse + {" "} + thorough your machine + + + +
+ + {files.length ? ( + + {fileList} +
+ +
+
+ ) : null} +
+ + ); +}; + +export default FileUploaderMultiple; diff --git a/components/Forms/FileUploader/UploadMultipleFiles.module.css b/components/Forms/FileUploader/UploadMultipleFiles.module.css new file mode 100644 index 0000000..814a684 --- /dev/null +++ b/components/Forms/FileUploader/UploadMultipleFiles.module.css @@ -0,0 +1,43 @@ +.dropzone { + background: #fdfdfd; + border: 2px dashed #eee; + padding: 20px; + border-radius: 10px; + cursor: pointer; +} +.thumbImage { + margin-right: 30px; +} +.fileDetails { + display: flex; + align-items: center; +} +.filePreview { + margin-right: 10px; +} +.fileName { + font-size: 14px; + font-weight: 500; +} +.buttons { + text-align: end; +} + +@media screen and (max-width: 900px) { + .thumbImage { + margin-right: 0; + margin-bottom: 20px; + } +} + +/* For RTL Style */ +[dir="rtl"] .thumbImage { + margin-right: 0; + margin-left: 30px; +} + +/* For dark mode */ +[class="dark"] .dropzone { + background: #181717; + border: 2px dashed var(--borderColor); +} \ No newline at end of file diff --git a/components/Forms/FormLayouts/BasicForm.js b/components/Forms/FormLayouts/BasicForm.js new file mode 100644 index 0000000..04f1524 --- /dev/null +++ b/components/Forms/FormLayouts/BasicForm.js @@ -0,0 +1,135 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +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"; + +export default function BasicForm() { + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Basic Form + + + + + + + + + + + + + + + + + + + + + + + + + + + Already have an account?{" "} + + Sign In + + + + + + + ); +} diff --git a/components/Forms/FormLayouts/BasicWithIcons.js b/components/Forms/FormLayouts/BasicWithIcons.js new file mode 100644 index 0000000..8d3be9e --- /dev/null +++ b/components/Forms/FormLayouts/BasicWithIcons.js @@ -0,0 +1,144 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from "next/link"; +import Grid from "@mui/material/Grid"; +import { Box } from "@mui/system"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import AccountCircle from '@mui/icons-material/AccountCircle'; +import MailOutlineIcon from '@mui/icons-material/MailOutline'; +import LockIcon from '@mui/icons-material/Lock'; + +export default function BasicWithIcons() { + + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Basic With Icons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Already have an account?{" "} + + Sign In + + + + + + ); +} diff --git a/components/Forms/FormLayouts/CustomStyles.js b/components/Forms/FormLayouts/CustomStyles.js new file mode 100644 index 0000000..eb521f4 --- /dev/null +++ b/components/Forms/FormLayouts/CustomStyles.js @@ -0,0 +1,156 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +import SendIcon from '@mui/icons-material/Send'; + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const CustomStyles = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select Priority + const [priority, setPriority] = React.useState(''); + const handleChange = (event) => { + setPriority(event.target.value); + }; + + return ( + <> + + + Custom Styles + + + + + + + First Name + + + + + + + Email Address + + + + + + + Message + + + + + + + + + + + + + ) +} + +export default CustomStyles; \ No newline at end of file diff --git a/components/Forms/FormLayouts/SignInForm.js b/components/Forms/FormLayouts/SignInForm.js new file mode 100644 index 0000000..7a340fa --- /dev/null +++ b/components/Forms/FormLayouts/SignInForm.js @@ -0,0 +1,126 @@ +import * as React from "react"; +import Avatar from "@mui/material/Avatar"; +import Button from "@mui/material/Button"; +import CssBaseline from "@mui/material/CssBaseline"; +import TextField from "@mui/material/TextField"; +import FormControlLabel from "@mui/material/FormControlLabel"; +import Checkbox from "@mui/material/Checkbox"; +import Link from "@mui/material/Link"; +import Grid from "@mui/material/Grid"; +import Box from "@mui/material/Box"; +import LockOutlinedIcon from "@mui/icons-material/LockOutlined"; +import Typography from "@mui/material/Typography"; +import Container from "@mui/material/Container"; + +import Card from "@mui/material/Card"; + +export default function SignInForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Sign In + + + + + + + + + + + Sign in + + + + + + + + } + label="Remember me" + /> + + + + + + + Forgot password? + + + + + {"Don't have an account? Sign Up"} + + + + + + + + + ); +} diff --git a/components/Forms/FormLayouts/SignUpForm.js b/components/Forms/FormLayouts/SignUpForm.js new file mode 100644 index 0000000..bc01065 --- /dev/null +++ b/components/Forms/FormLayouts/SignUpForm.js @@ -0,0 +1,143 @@ +import * as React from 'react'; +import Avatar from '@mui/material/Avatar'; +import Button from '@mui/material/Button'; +import CssBaseline from '@mui/material/CssBaseline'; +import TextField from '@mui/material/TextField'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import Link from '@mui/material/Link'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import LockOutlinedIcon from '@mui/icons-material/LockOutlined'; +import Typography from '@mui/material/Typography'; +import Container from '@mui/material/Container'; +import Card from "@mui/material/Card"; + +export default function SignUpForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + Sign Up + + + + + + + + + + + Sign up + + + + + + + + + + + + + + + + + + + + + + } + label="I want to receive inspiration, marketing promotions and updates via email." + /> + + + + + + + + + Already have an account? Sign in + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Notification/NotificationTable.js b/components/Notification/NotificationTable.js new file mode 100644 index 0000000..0da41cb --- /dev/null +++ b/components/Notification/NotificationTable.js @@ -0,0 +1,447 @@ +import * as React from "react"; +import PropTypes from "prop-types"; +import { useTheme } from "@mui/material/styles"; +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 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 { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Menu from "@mui/material/Menu"; +import MenuItem from "@mui/material/MenuItem"; +import Tooltip from "@mui/material/Tooltip"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; +import PrintIcon from "@mui/icons-material/Print"; +import DeleteIcon from "@mui/icons-material/Delete"; +import ErrorOutlineIcon from "@mui/icons-material/ErrorOutline"; +import Checkbox from "@mui/material/Checkbox"; +import Link from "next/link"; + +const label = { inputProps: { "aria-label": "Checkbox demo" } }; + +function Notification(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +Notification.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(id, text, readEmail, date) { + return { id, text, readEmail, date }; +} + +const rows = [ + createData( + "1", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "1 Jan 2022" + ), + createData( + "2", + "Last pic over my village – Yeah i'd like that! Do you remember the video som..", + "/email/read-email", + "2 Jan 2022" + ), + createData( + "3", + "Mochila Beta: Subscription Confirmed – You've been confirmed! Welcome to ", + "/email/read-email", + "3 Jan 2022" + ), + createData( + "4", + "You've been confirmed! Welcome to the ruling class of the inbox. For your ", + "/email/read-email", + "4 Jan 2022" + ), + createData( + "5", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "5 Jan 2022" + ), + createData( + "6", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "6 Jan 2022" + ), + createData( + "7", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "7 Jan 2022" + ), + createData( + "8", + "For your records, here is a copy of the information you submitted to us...", + "/email/read-email", + "8 Jan 2022" + ), + createData( + "9", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "9 Jan 2022" + ), + createData( + "10", + "Off on Thursday – Eff that place, you might as well stay here with us inst", + "/email/read-email", + "10 Jan 2022" + ), + createData( + "11", + "Hello – Trip home from 🎉 Colombo has been arranged, then Jenna will com...", + "/email/read-email", + "11 Jan 2022" + ), + createData( + "12", + "This Week's Top Stories – Our top pick for you on Medium this week The", + "/email/read-email", + "12 Jan 2022" + ), + createData( + "13", + "Weekend on Revibe – Today's Friday and we thought maybe you want so", + "/email/read-email", + "13 Jan 2022" + ), + createData( + "14", + "You can now use your storage in Google Drive – Hey Nicklas Sandell! Tha", + "/email/read-email", + "14 Jan 2022" + ), + createData( + "15", + "New Ticket Reply - eDemy - Michel Valenzuela", + "/email/read-email", + "15 Jan 2022" + ), + createData( + "16", + "New Ticket Reply - Abev - Manos Pappas", + "/email/read-email", + "16 Jan 2022" + ), + createData( + "17", + "New Ticket Reply - Lofi - Adarsh Raj", + "/email/read-email", + "11 Jan 2022" + ), +]; + +export default function NotificationTable() { + 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); + }; + + // Dropdown + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Notification List + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + + + + {row.text} + + + + + {row.date} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js b/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js new file mode 100644 index 0000000..0801bde --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts.js @@ -0,0 +1,297 @@ +import React, { Component } from "react"; +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 series = { + monthDataSeries1: { + prices: [ + 8107.85, 8128.0, 8122.9, 8165.5, 8340.7, 8423.7, 8423.5, 8514.3, 8481.85, + 8487.7, 8506.9, 8626.2, 8668.95, 8602.3, 8607.55, 8512.9, 8496.25, + 8500.65, 8881.1, 9340.85, + ], + dates: [ + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + "29 Nov 2018", + "30 Nov 2018", + "01 Dec 2018", + "04 Dec 2018", + "05 Dec 2018", + "06 Dec 2018", + "07 Dec 2018", + "08 Dec 2018", + ], + }, + monthDataSeries2: { + prices: [ + 8423.7, 8423.5, 8514.3, 8481.85, 8487.7, 8506.9, 8626.2, 8668.95, 8602.3, + 8607.55, 8512.9, 8496.25, 8500.65, 8881.1, 9040.85, 8340.7, 8165.5, + 8122.9, 8107.85, 8128.0, + ], + dates: [ + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + "29 Nov 2018", + "30 Nov 2018", + "01 Dec 2018", + "04 Dec 2018", + "05 Dec 2018", + "06 Dec 2018", + "07 Dec 2018", + "08 Dec 2018", + ], + }, + monthDataSeries3: { + prices: [ + 7114.25, 7126.6, 7116.95, 7203.7, 7233.75, 7451.0, 7381.15, 7348.95, + 7347.75, 7311.25, 7266.4, 7253.25, 7215.45, 7266.35, 7315.25, 7237.2, + 7191.4, 7238.95, 7222.6, 7217.9, 7359.3, 7371.55, 7371.15, 7469.2, + 7429.25, 7434.65, 7451.1, 7475.25, 7566.25, 7556.8, 7525.55, 7555.45, + 7560.9, 7490.7, 7527.6, 7551.9, 7514.85, 7577.95, 7592.3, 7621.95, + 7707.95, 7859.1, 7815.7, 7739.0, 7778.7, 7839.45, 7756.45, 7669.2, + 7580.45, 7452.85, 7617.25, 7701.6, 7606.8, 7620.05, 7513.85, 7498.45, + 7575.45, 7601.95, 7589.1, 7525.85, 7569.5, 7702.5, 7812.7, 7803.75, + 7816.3, 7851.15, 7912.2, 7972.8, 8145.0, 8161.1, 8121.05, 8071.25, 8088.2, + 8154.45, 8148.3, 8122.05, 8132.65, 8074.55, 7952.8, 7885.55, 7733.9, + 7897.15, 7973.15, 7888.5, 7842.8, 7838.4, 7909.85, 7892.75, 7897.75, + 7820.05, 7904.4, 7872.2, 7847.5, 7849.55, 7789.6, 7736.35, 7819.4, + 7875.35, 7871.8, 8076.5, 8114.8, 8193.55, 8217.1, 8235.05, 8215.3, 8216.4, + 8301.55, 8235.25, 8229.75, 8201.95, 8164.95, 8107.85, 8128.0, 8122.9, + 8165.5, 8340.7, 8423.7, 8423.5, 8514.3, 8481.85, 8487.7, 8506.9, 8626.2, + ], + dates: [ + "02 Jun 2018", + "05 Jun 2018", + "06 Jun 2018", + "07 Jun 2018", + "08 Jun 2018", + "09 Jun 2018", + "12 Jun 2018", + "13 Jun 2018", + "14 Jun 2018", + "15 Jun 2018", + "16 Jun 2018", + "19 Jun 2018", + "20 Jun 2018", + "21 Jun 2018", + "22 Jun 2018", + "23 Jun 2018", + "27 Jun 2018", + "28 Jun 2018", + "29 Jun 2018", + "30 Jun 2018", + "03 Jul 2018", + "04 Jul 2018", + "05 Jul 2018", + "06 Jul 2018", + "07 Jul 2018", + "10 Jul 2018", + "11 Jul 2018", + "12 Jul 2018", + "13 Jul 2018", + "14 Jul 2018", + "17 Jul 2018", + "18 Jul 2018", + "19 Jul 2018", + "20 Jul 2018", + "21 Jul 2018", + "24 Jul 2018", + "25 Jul 2018", + "26 Jul 2018", + "27 Jul 2018", + "28 Jul 2018", + "31 Jul 2018", + "01 Aug 2018", + "02 Aug 2018", + "03 Aug 2018", + "04 Aug 2018", + "07 Aug 2018", + "08 Aug 2018", + "09 Aug 2018", + "10 Aug 2018", + "11 Aug 2018", + "14 Aug 2018", + "16 Aug 2018", + "17 Aug 2018", + "18 Aug 2018", + "21 Aug 2018", + "22 Aug 2018", + "23 Aug 2018", + "24 Aug 2018", + "28 Aug 2018", + "29 Aug 2018", + "30 Aug 2018", + "31 Aug 2018", + "01 Sep 2018", + "04 Sep 2018", + "05 Sep 2018", + "06 Sep 2018", + "07 Sep 2018", + "08 Sep 2018", + "11 Sep 2018", + "12 Sep 2018", + "13 Sep 2018", + "14 Sep 2018", + "15 Sep 2018", + "18 Sep 2018", + "19 Sep 2018", + "20 Sep 2018", + "21 Sep 2018", + "22 Sep 2018", + "25 Sep 2018", + "26 Sep 2018", + "27 Sep 2018", + "28 Sep 2018", + "29 Sep 2018", + "03 Oct 2018", + "04 Oct 2018", + "05 Oct 2018", + "06 Oct 2018", + "09 Oct 2018", + "10 Oct 2018", + "11 Oct 2018", + "12 Oct 2018", + "13 Oct 2018", + "16 Oct 2018", + "17 Oct 2018", + "18 Oct 2018", + "19 Oct 2018", + "23 Oct 2018", + "24 Oct 2018", + "25 Oct 2018", + "26 Oct 2018", + "27 Oct 2018", + "30 Oct 2018", + "31 Oct 2018", + "01 Nov 2018", + "02 Nov 2018", + "03 Nov 2018", + "06 Nov 2018", + "07 Nov 2018", + "08 Nov 2018", + "09 Nov 2018", + "10 Nov 2018", + "13 Nov 2018", + "14 Nov 2018", + "15 Nov 2018", + "16 Nov 2018", + "17 Nov 2018", + "20 Nov 2018", + "21 Nov 2018", + "22 Nov 2018", + "23 Nov 2018", + "24 Nov 2018", + "27 Nov 2018", + "28 Nov 2018", + ], + }, +}; + +class BasicAreaCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "STOCK ABC", + data: series.monthDataSeries1.prices, + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + + title: { + text: "Fundamental Analysis of Stocks", + align: "left", + }, + subtitle: { + text: "Price Movements", + align: "left", + }, + labels: series.monthDataSeries1.dates, + xaxis: { + type: "datetime", + }, + yaxis: { + opposite: true, + }, + legend: { + horizontalAlign: "left", + }, + }, + }; + } + + render() { + return ( + <> + + + Basic + + + + + + ); + } +} + +export default BasicAreaCharts; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js b/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js new file mode 100644 index 0000000..fdeef98 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis.js @@ -0,0 +1,500 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class DatetimeXAxis extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [ + [1327359500000, 30.95], + [1327445000000, 31.34], + [1327532400000, 31.18], + [1327618800000, 31.05], + [1327878000000, 31.0], + [1327964400000, 30.95], + [1328050800000, 31.24], + [1328137200000, 31.29], + [1328223500000, 31.85], + [1328482800000, 31.86], + [1328569200000, 32.28], + [1328655500000, 32.1], + [1328742000000, 32.65], + [1328828400000, 32.21], + [1329087500000, 32.35], + [1329174000000, 32.44], + [1329260400000, 32.46], + [1329346800000, 32.86], + [1329433200000, 32.75], + [1329778800000, 32.54], + [1329865200000, 32.33], + [1329951500000, 32.97], + [1330038000000, 33.41], + [1330297200000, 33.27], + [1330383500000, 33.27], + [1330470000000, 32.89], + [1330556400000, 33.1], + [1330642800000, 33.73], + [1330902000000, 33.22], + [1330988400000, 31.99], + [1331074800000, 32.41], + [1331161200000, 33.05], + [1331247500000, 33.64], + [1331506800000, 33.56], + [1331593200000, 34.22], + [1331679500000, 33.77], + [1331765000000, 34.17], + [1331852400000, 33.82], + [1332111500000, 34.51], + [1332198000000, 33.16], + [1332284400000, 33.56], + [1332370800000, 33.71], + [1332457200000, 33.81], + [1332712800000, 34.4], + [1332799200000, 34.63], + [1332885500000, 34.46], + [1332972000000, 34.48], + [1333058400000, 34.31], + [1333317500000, 34.7], + [1333404000000, 34.31], + [1333490400000, 33.46], + [1333576800000, 33.59], + [1333922400000, 33.22], + [1334008800000, 32.61], + [1334095200000, 33.01], + [1334181500000, 33.55], + [1334268000000, 33.18], + [1334527200000, 32.84], + [1334613500000, 33.84], + [1334700000000, 33.39], + [1334786400000, 32.91], + [1334872800000, 33.06], + [1335132000000, 32.62], + [1335218400000, 32.4], + [1335304800000, 33.13], + [1335391200000, 33.26], + [1335477500000, 33.58], + [1335736800000, 33.55], + [1335823200000, 33.77], + [1335909500000, 33.76], + [1335995000000, 33.32], + [1336082400000, 32.61], + [1336341500000, 32.52], + [1336428000000, 32.67], + [1336514400000, 32.52], + [1336500800000, 31.92], + [1336687200000, 32.2], + [1336946400000, 32.23], + [1337032800000, 32.33], + [1337119200000, 32.36], + [1337205500000, 32.01], + [1337292000000, 31.31], + [1337551200000, 32.01], + [1337637500000, 32.01], + [1337724000000, 32.18], + [1337810400000, 31.54], + [1337896800000, 31.6], + [1338242400000, 32.05], + [1338328800000, 31.29], + [1338415200000, 31.05], + [1338501500000, 29.82], + [1338760800000, 30.31], + [1338847200000, 30.7], + [1338933500000, 31.69], + [1339020000000, 31.32], + [1339106400000, 31.65], + [1339365500000, 31.13], + [1339452000000, 31.77], + [1339538400000, 31.79], + [1339624800000, 31.67], + [1339711200000, 32.39], + [1339970400000, 32.63], + [1340056800000, 32.89], + [1340143200000, 31.99], + [1340229500000, 31.23], + [1340315000000, 31.57], + [1340575200000, 30.84], + [1340661500000, 31.07], + [1340748000000, 31.41], + [1340834400000, 31.17], + [1340920800000, 32.37], + [1341180000000, 32.19], + [1341266400000, 32.51], + [1341439200000, 32.53], + [1341525500000, 31.37], + [1341784800000, 30.43], + [1341871200000, 30.44], + [1341957500000, 30.2], + [1342044000000, 30.14], + [1342130400000, 30.65], + [1342389500000, 30.4], + [1342475000000, 30.65], + [1342562400000, 31.43], + [1342648800000, 31.89], + [1342735200000, 31.38], + [1342994400000, 30.64], + [1343080800000, 30.02], + [1343167200000, 30.33], + [1343253500000, 30.95], + [1343340000000, 31.89], + [1343599200000, 31.01], + [1343685500000, 30.88], + [1343772000000, 30.69], + [1343858400000, 30.58], + [1343944800000, 32.02], + [1344204000000, 32.14], + [1344290400000, 32.37], + [1344376800000, 32.51], + [1344463200000, 32.65], + [1344549500000, 32.64], + [1344808800000, 32.27], + [1344895200000, 32.1], + [1344981500000, 32.91], + [1345068000000, 33.65], + [1345154400000, 33.8], + [1345413500000, 33.92], + [1345500000000, 33.75], + [1345586400000, 33.84], + [1345672800000, 33.5], + [1345759200000, 32.26], + [1346018400000, 32.32], + [1346104800000, 32.06], + [1346191200000, 31.96], + [1346277500000, 31.46], + [1346364000000, 31.27], + [1346709500000, 31.43], + [1346795000000, 32.26], + [1346882400000, 32.79], + [1346968800000, 32.46], + [1347228000000, 32.13], + [1347314400000, 32.43], + [1347400800000, 32.42], + [1347487200000, 32.81], + [1347573500000, 33.34], + [1347832800000, 33.41], + [1347919200000, 32.57], + [1348005500000, 33.12], + [1348092000000, 34.53], + [1348178400000, 33.83], + [1348437500000, 33.41], + [1348524000000, 32.9], + [1348610400000, 32.53], + [1348696800000, 32.8], + [1348783200000, 32.44], + [1349042400000, 32.62], + [1349128800000, 32.57], + [1349215200000, 32.6], + [1349301500000, 32.68], + [1349388000000, 32.47], + [1349647200000, 32.23], + [1349733500000, 31.68], + [1349820000000, 31.51], + [1349906400000, 31.78], + [1349992800000, 31.94], + [1350252000000, 32.33], + [1350338400000, 33.24], + [1350424800000, 33.44], + [1350511200000, 33.48], + [1350597500000, 33.24], + [1350856800000, 33.49], + [1350943200000, 33.31], + [1351029500000, 33.36], + [1351115000000, 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], + [1352415500000, 32.9], + [1352674800000, 32.7], + [1352761200000, 32.54], + [1352847500000, 32.23], + [1352934000000, 32.64], + [1353020400000, 32.65], + [1353279500000, 32.92], + [1353365000000, 32.64], + [1353452400000, 32.84], + [1353625200000, 33.4], + [1353884400000, 33.3], + [1353970800000, 33.18], + [1354057200000, 33.88], + [1354143500000, 34.09], + [1354230000000, 34.61], + [1354489200000, 34.7], + [1354575500000, 35.3], + [1354662000000, 35.4], + [1354748400000, 35.14], + [1354834800000, 35.48], + [1355094000000, 35.75], + [1355180400000, 35.54], + [1355266800000, 35.96], + [1355353200000, 35.53], + [1355439500000, 37.56], + [1355698800000, 37.42], + [1355785200000, 37.49], + [1355871500000, 38.09], + [1355958000000, 37.87], + [1356044400000, 37.71], + [1356303500000, 37.53], + [1356476400000, 37.55], + [1356562800000, 37.3], + [1356649200000, 36.9], + [1356908400000, 37.68], + [1357081200000, 38.34], + [1357167500000, 37.75], + [1357254000000, 38.13], + [1357513200000, 37.94], + [1357599500000, 38.14], + [1357685000000, 38.66], + [1357772400000, 38.62], + [1357858800000, 38.09], + [1358118000000, 38.16], + [1358204400000, 38.15], + [1358290800000, 37.88], + [1358377200000, 37.73], + [1358463500000, 37.98], + [1358809200000, 37.95], + [1358895500000, 38.25], + [1358982000000, 38.1], + [1359068400000, 38.32], + [1359327500000, 38.24], + [1359414000000, 38.52], + [1359500400000, 37.94], + [1359586800000, 37.83], + [1359673200000, 38.34], + [1359932400000, 38.1], + [1350018800000, 38.51], + [1360105200000, 38.4], + [1360191500000, 38.07], + [1360278000000, 39.12], + [1360537200000, 38.64], + [1360623500000, 38.89], + [1360710000000, 38.81], + [1360796400000, 38.61], + [1360882800000, 38.63], + [1361228400000, 38.99], + [1361314800000, 38.77], + [1361401200000, 38.34], + [1361487500000, 38.55], + [1361746800000, 38.11], + [1361833200000, 38.59], + [1361919500000, 39.6], + ], + }, + ], + options: { + chart: { + id: "area-datetime", + zoom: { + autoScaleYaxis: true, + }, + }, + annotations: { + yaxis: [ + { + y: 30, + borderColor: "#999", + label: { + show: true, + text: "Support", + style: { + color: "#fff", + background: "#00E396", + }, + }, + }, + ], + xaxis: [ + { + x: new Date("14 Nov 2012").getTime(), + borderColor: "#999", + yAxisIndex: 0, + label: { + show: true, + text: "Rally", + 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, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + }, + 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 ( + <> + + + Spline + + +
+
+ +   + +   + +   + +   + +
+ +
+ +
+
+
+ + ); + } +} + +export default DatetimeXAxis; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js b/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js new file mode 100644 index 0000000..0d3601a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/Negative.js @@ -0,0 +1,291 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Negative extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "north", + data: [ + { + x: 1996, + y: 322, + }, + { + x: 1997, + y: 324, + }, + { + x: 1998, + y: 329, + }, + { + x: 1999, + y: 342, + }, + { + x: 2000, + y: 348, + }, + { + x: 2001, + y: 334, + }, + { + x: 2002, + y: 325, + }, + { + x: 2003, + y: 316, + }, + { + x: 2004, + y: 318, + }, + { + x: 2005, + y: 330, + }, + { + x: 2006, + y: 355, + }, + { + x: 2007, + y: 366, + }, + { + x: 2008, + y: 337, + }, + { + x: 2009, + y: 352, + }, + { + x: 2010, + y: 377, + }, + { + x: 2011, + y: 383, + }, + { + x: 2012, + y: 344, + }, + { + x: 2013, + y: 366, + }, + { + x: 2014, + y: 389, + }, + { + x: 2015, + y: 334, + }, + ], + }, + { + name: "south", + data: [ + { + x: 1996, + y: 162, + }, + { + x: 1997, + y: 90, + }, + { + x: 1998, + y: 50, + }, + { + x: 1999, + y: 77, + }, + { + x: 2000, + y: 35, + }, + { + x: 2001, + y: -45, + }, + { + x: 2002, + y: -88, + }, + { + x: 2003, + y: -120, + }, + { + x: 2004, + y: -156, + }, + { + x: 2005, + y: -123, + }, + { + x: 2006, + y: -88, + }, + { + x: 2007, + y: -66, + }, + { + x: 2008, + y: -45, + }, + { + x: 2009, + y: -29, + }, + { + x: 2010, + y: -45, + }, + { + x: 2011, + y: -88, + }, + { + x: 2012, + y: -132, + }, + { + x: 2013, + y: -146, + }, + { + x: 2014, + y: -169, + }, + { + x: 2015, + y: -184, + }, + ], + }, + ], + options: { + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + + title: { + text: "Area with Negative Values", + align: "left", + style: { + fontSize: "14px", + }, + }, + xaxis: { + type: "datetime", + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + tickAmount: 4, + floating: false, + + labels: { + style: { + colors: "#8e8da4", + }, + offsetY: -7, + offsetX: 0, + }, + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + fill: { + opacity: 0.5, + }, + tooltip: { + x: { + format: "yyyy", + }, + fixed: { + enabled: false, + position: "topRight", + }, + }, + grid: { + yaxis: { + lines: { + offsetX: -30, + }, + }, + padding: { + left: 20, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Negative + + + + + + ); + } +} + +export default Negative; diff --git a/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js b/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js new file mode 100644 index 0000000..df1a124 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/AreaCharts/Spline.js @@ -0,0 +1,89 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Spline extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "series1", + data: [31, 40, 28, 51, 42, 109, 100], + }, + { + name: "series2", + data: [11, 32, 45, 32, 34, 52, 41], + }, + ], + options: { + dataLabels: { + enabled: false, + }, + stroke: { + curve: "smooth", + }, + xaxis: { + type: "datetime", + categories: [ + "2018-09-19T00:00:00.000Z", + "2018-09-19T01:30:00.000Z", + "2018-09-19T02:30:00.000Z", + "2018-09-19T03:30:00.000Z", + "2018-09-19T04:30:00.000Z", + "2018-09-19T05:30:00.000Z", + "2018-09-19T06:30:00.000Z", + ], + }, + tooltip: { + x: { + format: "dd/MM/yy HH:mm", + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Spline + + + + + + ); + } +} + +export default Spline; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js b/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js new file mode 100644 index 0000000..7485d78 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts.js @@ -0,0 +1,84 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicBarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380], + }, + ], + options: { + plotOptions: { + bar: { + borderRadius: 4, + horizontal: true, + }, + }, + dataLabels: { + enabled: false, + }, + xaxis: { + categories: [ + "South Korea", + "Canada", + "United Kingdom", + "Netherlands", + "Italy", + "France", + "Japan", + "United States", + "China", + "Germany", + ], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Bar Charts + + + + + + ); + } +} + +export default BasicBarCharts; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js b/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js new file mode 100644 index 0000000..e5dce52 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/Grouped.js @@ -0,0 +1,96 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Grouped extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [44, 55, 41, 64, 22, 43, 21], + }, + { + data: [53, 32, 33, 52, 13, 44, 32], + }, + ], + options: { + chart: { + type: "bar", + height: 430, + }, + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + position: "top", + }, + }, + }, + dataLabels: { + enabled: true, + offsetX: -6, + style: { + fontSize: "12px", + colors: ["#fff"], + }, + }, + stroke: { + show: true, + width: 1, + colors: ["#fff"], + }, + tooltip: { + shared: true, + intersect: false, + }, + xaxis: { + categories: [2001, 2002, 2003, 2004, 2005, 2006, 2007], + }, + }, + }; + } + + render() { + return ( + <> + + + Grouped + + + + + + ); + } +} + +export default Grouped; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js b/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js new file mode 100644 index 0000000..a6d688f --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/StackedBar.js @@ -0,0 +1,126 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedBar extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'Marine Sprite', + data: [44, 55, 41, 37, 22, 43, 21] + }, { + name: 'Striking Calf', + data: [53, 32, 33, 52, 13, 43, 32] + }, { + name: 'Tank Picture', + data: [12, 17, 11, 9, 15, 11, 20] + }, { + name: 'Bucket Slope', + data: [9, 7, 5, 8, 6, 9, 4] + }, { + name: 'Reborn Kid', + data: [25, 12, 19, 32, 25, 24, 10] + }], + options: { + chart: { + type: 'bar', + height: 350, + stacked: true, + }, + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + total: { + enabled: true, + offsetX: 0, + style: { + fontSize: '13px', + fontWeight: 900 + } + } + } + }, + }, + stroke: { + width: 1, + colors: ['#fff'] + }, + title: { + text: 'Fiction Books Sales' + }, + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014], + labels: { + formatter: function (val) { + return val + "K" + } + } + }, + yaxis: { + title: { + text: undefined + }, + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K" + } + } + }, + fill: { + opacity: 1 + }, + legend: { + position: 'top', + horizontalAlign: 'left', + offsetX: 40 + } + }, + + + }; + } + + render() { + return ( + <> + + + Stacked Bar + + + + + + ); + } +} + +export default StackedBar; diff --git a/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js b/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js new file mode 100644 index 0000000..f78a992 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100.js @@ -0,0 +1,114 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedBars100 extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Marine Sprite", + data: [44, 55, 41, 37, 22, 43, 21], + }, + { + name: "Striking Calf", + data: [53, 32, 33, 52, 13, 43, 32], + }, + { + name: "Tank Picture", + data: [12, 17, 11, 9, 15, 11, 20], + }, + { + name: "Bucket Slope", + data: [9, 7, 5, 8, 6, 9, 4], + }, + { + name: "Reborn Kid", + data: [25, 12, 19, 32, 25, 24, 10], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + stackType: "100%", + }, + plotOptions: { + bar: { + horizontal: true, + }, + }, + stroke: { + width: 1, + colors: ["#fff"], + }, + title: { + text: "100% Stacked Bar", + }, + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014], + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K"; + }, + }, + }, + fill: { + opacity: 1, + }, + legend: { + position: "top", + horizontalAlign: "left", + offsetX: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Bars 100 + + + + + + ); + } +} + +export default StackedBars100; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js b/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js new file mode 100644 index 0000000..45552d6 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts.js @@ -0,0 +1,113 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicColumnCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Net Profit", + data: [44, 55, 57, 56, 61, 58, 63, 60, 66], + }, + { + name: "Revenue", + data: [76, 85, 101, 98, 87, 105, 91, 114, 94], + }, + { + name: "Free Cash Flow", + data: [35, 41, 36, 26, 45, 48, 52, 53, 41], + }, + ], + options: { + plotOptions: { + bar: { + horizontal: false, + columnWidth: "55%", + endingShape: "rounded", + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 2, + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + ], + }, + yaxis: { + title: { + text: "$ (thousands)", + }, + }, + fill: { + opacity: 1, + }, + tooltip: { + y: { + formatter: function (val) { + return "$ " + val + " thousands"; + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Column Charts + + + + + + ); + } +} + +export default BasicColumnCharts; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js b/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js new file mode 100644 index 0000000..ef8ec2a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels.js @@ -0,0 +1,147 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class ColumnWithDataLabels extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Inflation", + data: [2.3, 3.1, 4.0, 10.1, 4.0, 3.6, 3.2, 2.3, 1.4, 0.8, 0.5, 0.2], + }, + ], + options: { + chart: { + height: 350, + type: "bar", + }, + plotOptions: { + bar: { + borderRadius: 10, + dataLabels: { + position: "top", // top, center, bottom + }, + }, + }, + dataLabels: { + enabled: true, + formatter: function (val) { + return val + "%"; + }, + offsetY: -20, + style: { + fontSize: "12px", + colors: ["#304758"], + }, + }, + + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + position: "top", + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + crosshairs: { + fill: { + type: "gradient", + gradient: { + colorFrom: "#D8E3F0", + colorTo: "#BED1E6", + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5, + }, + }, + }, + tooltip: { + enabled: true, + }, + }, + yaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + labels: { + show: false, + formatter: function (val) { + return val + "%"; + }, + }, + }, + title: { + text: "Monthly Inflation in Argentina, 2002", + floating: true, + offsetY: 330, + align: "center", + style: { + color: "#444", + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Column With Data Labels + + + + + + ); + } +} + +export default ColumnWithDataLabels; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js new file mode 100644 index 0000000..923f10a --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedColumns extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "PRODUCT A", + data: [44, 55, 41, 67, 22, 43], + }, + { + name: "PRODUCT B", + data: [13, 23, 20, 8, 13, 27], + }, + { + name: "PRODUCT C", + data: [11, 17, 15, 15, 21, 14], + }, + { + name: "PRODUCT D", + data: [21, 7, 25, 13, 22, 8], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + toolbar: { + show: true, + }, + zoom: { + enabled: true, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + position: "bottom", + offsetX: -10, + offsetY: 0, + }, + }, + }, + ], + plotOptions: { + bar: { + horizontal: false, + borderRadius: 10, + dataLabels: { + total: { + enabled: true, + style: { + fontSize: "13px", + fontWeight: 900, + }, + }, + }, + }, + }, + xaxis: { + type: "datetime", + categories: [ + "01/01/2011 GMT", + "01/02/2011 GMT", + "01/03/2011 GMT", + "01/04/2011 GMT", + "01/05/2011 GMT", + "01/06/2011 GMT", + ], + }, + legend: { + position: "right", + offsetY: 40, + }, + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Columns + + + + + + ); + } +} + +export default StackedColumns; diff --git a/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js new file mode 100644 index 0000000..62523ae --- /dev/null +++ b/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100.js @@ -0,0 +1,108 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class StackedColumns100 extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "PRODUCT A", + data: [44, 55, 41, 67, 22, 43, 21, 49], + }, + { + name: "PRODUCT B", + data: [13, 23, 20, 8, 13, 27, 33, 12], + }, + { + name: "PRODUCT C", + data: [11, 17, 15, 15, 21, 14, 15, 13], + }, + ], + options: { + chart: { + type: "bar", + height: 350, + stacked: true, + stackType: "100%", + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + position: "bottom", + offsetX: -10, + offsetY: 0, + }, + }, + }, + ], + xaxis: { + categories: [ + "2011 Q1", + "2011 Q2", + "2011 Q3", + "2011 Q4", + "2012 Q1", + "2012 Q2", + "2012 Q3", + "2012 Q4", + ], + }, + fill: { + opacity: 1, + }, + legend: { + position: "right", + offsetX: 0, + offsetY: 50, + }, + }, + }; + } + + render() { + return ( + <> + + + Stacked Columns 100 + + + + + + ); + } +} + +export default StackedColumns100; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Basic.js b/components/Pages/Charts/ApexCharts/LineCharts/Basic.js new file mode 100644 index 0000000..515718d --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Basic.js @@ -0,0 +1,96 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Basic extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Desktops", + data: [10, 41, 35, 51, 49, 62, 69, 91, 148], + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + curve: "straight", + }, + title: { + text: "Product Trends by Month", + align: "left", + }, + grid: { + row: { + colors: ["#f3f3f3", "transparent"], // takes an array which will be repeated on columns + opacity: 0.5, + }, + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + ], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic + + + + + + ); + } +} + +export default Basic; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js b/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js new file mode 100644 index 0000000..3ff8b79 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Dashed.js @@ -0,0 +1,147 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Dashed extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Session Duration", + data: [45, 52, 38, 24, 33, 26, 21, 20, 6, 8, 15, 10], + }, + { + name: "Page Views", + data: [35, 41, 62, 42, 13, 18, 29, 37, 36, 51, 32, 35], + }, + { + name: "Total Visits", + data: [87, 57, 74, 99, 75, 38, 62, 47, 82, 56, 45, 47], + }, + ], + options: { + chart: { + zoom: { + enabled: false, + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + width: [5, 7, 5], + curve: "straight", + dashArray: [0, 8, 5], + }, + title: { + text: "Page Statistics", + align: "left", + }, + legend: { + tooltipHoverFormatter: function (val, opts) { + return ( + val + + " - " + + opts.w.globals.series[opts.seriesIndex][opts.dataPointIndex] + + "" + ); + }, + }, + markers: { + size: 0, + hover: { + sizeOffset: 6, + }, + }, + xaxis: { + categories: [ + "01 Jan", + "02 Jan", + "03 Jan", + "04 Jan", + "05 Jan", + "06 Jan", + "07 Jan", + "08 Jan", + "09 Jan", + "10 Jan", + "11 Jan", + "12 Jan", + ], + }, + tooltip: { + y: [ + { + title: { + formatter: function (val) { + return val + " (mins)"; + }, + }, + }, + { + title: { + formatter: function (val) { + return val + " per session"; + }, + }, + }, + { + title: { + formatter: function (val) { + return val; + }, + }, + }, + ], + }, + grid: { + borderColor: "#f1f1f1", + }, + }, + }; + } + + render() { + return ( + <> + + + Realtime + + + + + + ); + } +} + +export default Dashed; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js b/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js new file mode 100644 index 0000000..c98535e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Gradient.js @@ -0,0 +1,122 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Gradient extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Sales", + data: [4, 3, 10, 9, 29, 19, 22, 9, 12, 7, 19, 5, 13, 9, 17, 2, 7, 5], + }, + ], + options: { + forecastDataPoints: { + count: 7, + }, + stroke: { + width: 5, + curve: "smooth", + }, + xaxis: { + type: "datetime", + categories: [ + "1/11/2000", + "2/11/2000", + "3/11/2000", + "4/11/2000", + "5/11/2000", + "6/11/2000", + "7/11/2000", + "8/11/2000", + "9/11/2000", + "10/11/2000", + "11/11/2000", + "12/11/2000", + "1/11/2001", + "2/11/2001", + "3/11/2001", + "4/11/2001", + "5/11/2001", + "6/11/2001", + ], + tickAmount: 10, + labels: { + formatter: function (value, timestamp, opts) { + return opts.dateFormatter(new Date(timestamp), "dd MMM"); + }, + }, + }, + title: { + text: "Forecast", + align: "left", + style: { + fontSize: "16px", + color: "#666", + }, + }, + fill: { + type: "gradient", + gradient: { + shade: "dark", + gradientToColors: ["#FDD835"], + shadeIntensity: 1, + type: "horizontal", + opacityFrom: 1, + opacityTo: 1, + stops: [0, 100, 100, 100], + }, + }, + yaxis: { + min: -10, + max: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Gradient + + + + + + ); + } +} + +export default Gradient; diff --git a/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js b/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js new file mode 100644 index 0000000..c764ea3 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/LineCharts/Stepline.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Stepline extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + data: [34, 44, 54, 21, 12, 43, 33, 23, 66, 66, 58], + }, + ], + options: { + stroke: { + curve: "stepline", + }, + dataLabels: { + enabled: false, + }, + title: { + text: "Stepline Chart", + align: "left", + }, + markers: { + hover: { + sizeOffset: 4, + }, + }, + }, + }; + } + render() { + return ( + <> + + + Zoomable Timeseries + + + + + + ); + } +} + +export default Stepline; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js new file mode 100644 index 0000000..caf53b1 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineArea.js @@ -0,0 +1,104 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineArea extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'TEAM A', + type: 'area', + data: [44, 55, 31, 47, 31, 43, 26, 41, 31, 47, 33] + }, { + name: 'TEAM B', + type: 'line', + data: [55, 69, 45, 61, 43, 54, 37, 52, 44, 61, 43] + }], + options: { + chart: { + height: 350, + type: 'line', + }, + stroke: { + curve: 'smooth' + }, + fill: { + type:'solid', + opacity: [0.35, 1], + }, + labels: ['Dec 01', 'Dec 02','Dec 03','Dec 04','Dec 05','Dec 06','Dec 07','Dec 08','Dec 09 ','Dec 10','Dec 11'], + markers: { + size: 0 + }, + yaxis: [ + { + title: { + text: 'Series A', + }, + }, + { + opposite: true, + title: { + text: 'Series B', + }, + }, + ], + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if(typeof y !== "undefined") { + return y.toFixed(0) + " points"; + } + return y; + } + } + } + }, + + + }; + } + + render() { + return ( + <> + + + Line Area + + + + + + ); + } +} + +export default LineArea; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js new file mode 100644 index 0000000..40cc265 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn.js @@ -0,0 +1,93 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineColumn extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [{ + name: 'Website Blog', + type: 'column', + data: [440, 505, 414, 671, 227, 413, 201, 352, 752, 320, 257, 160] + }, { + name: 'Social Media', + type: 'line', + data: [23, 42, 35, 27, 43, 22, 17, 31, 22, 22, 12, 16] + }], + options: { + chart: { + height: 350, + type: 'line', + }, + stroke: { + width: [0, 4] + }, + title: { + text: 'Traffic Sources' + }, + dataLabels: { + enabled: true, + enabledOnSeries: [1] + }, + labels: ['01 Jan 2001', '02 Jan 2001', '03 Jan 2001', '04 Jan 2001', '05 Jan 2001', '06 Jan 2001', '07 Jan 2001', '08 Jan 2001', '09 Jan 2001', '10 Jan 2001', '11 Jan 2001', '12 Jan 2001'], + xaxis: { + type: 'datetime' + }, + yaxis: [{ + title: { + text: 'Website Blog', + }, + + }, { + opposite: true, + title: { + text: 'Social Media' + } + }] + }, + + + }; + } + + render() { + return ( + <> + + + Line Column + + + + + + ); + } +} + +export default LineColumn; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js new file mode 100644 index 0000000..b5b743e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea.js @@ -0,0 +1,136 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class LineColumnArea extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "TEAM A", + type: "column", + data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30], + }, + { + name: "TEAM B", + type: "area", + data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43], + }, + { + name: "TEAM C", + type: "line", + data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39], + }, + ], + options: { + chart: { + height: 350, + type: "line", + stacked: false, + }, + stroke: { + width: [0, 2, 5], + curve: "smooth", + }, + plotOptions: { + bar: { + columnWidth: "50%", + }, + }, + + fill: { + opacity: [0.85, 0.25, 1], + gradient: { + inverseColors: false, + shade: "light", + type: "vertical", + opacityFrom: 0.85, + opacityTo: 0.55, + stops: [0, 100, 100, 100], + }, + }, + labels: [ + "01/01/2003", + "02/01/2003", + "03/01/2003", + "04/01/2003", + "05/01/2003", + "06/01/2003", + "07/01/2003", + "08/01/2003", + "09/01/2003", + "10/01/2003", + "11/01/2003", + ], + markers: { + size: 0, + }, + xaxis: { + type: "datetime", + }, + yaxis: { + title: { + text: "Points", + }, + min: 0, + }, + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if (typeof y !== "undefined") { + return y.toFixed(0) + " points"; + } + return y; + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Line Column Area + + + + + + ); + } +} + +export default LineColumnArea; diff --git a/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js b/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js new file mode 100644 index 0000000..d361f37 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis.js @@ -0,0 +1,173 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MultipleYAxis extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Income", + type: "column", + data: [1.4, 2, 2.5, 1.5, 2.5, 2.8, 3.8, 4.6], + }, + { + name: "Cashflow", + type: "column", + data: [1.1, 3, 3.1, 4, 4.1, 4.9, 6.5, 8.5], + }, + { + name: "Revenue", + type: "line", + data: [20, 29, 37, 36, 44, 45, 50, 58], + }, + ], + options: { + chart: { + height: 350, + type: "line", + stacked: false, + }, + dataLabels: { + enabled: false, + }, + stroke: { + width: [1, 1, 4], + }, + title: { + text: "XYZ - Stock Analysis (2009 - 2016)", + align: "left", + offsetX: 110, + }, + xaxis: { + categories: [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016], + }, + yaxis: [ + { + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#008FFB", + }, + labels: { + style: { + colors: "#008FFB", + }, + }, + title: { + text: "Income (thousand crores)", + style: { + color: "#008FFB", + }, + }, + tooltip: { + enabled: true, + }, + }, + { + seriesName: "Income", + opposite: true, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#00E396", + }, + labels: { + style: { + colors: "#00E396", + }, + }, + title: { + text: "Operating Cashflow (thousand crores)", + style: { + color: "#00E396", + }, + }, + }, + { + seriesName: "Revenue", + opposite: true, + axisTicks: { + show: true, + }, + axisBorder: { + show: true, + color: "#FEB019", + }, + labels: { + style: { + colors: "#FEB019", + }, + }, + title: { + text: "Revenue (thousand crores)", + style: { + color: "#FEB019", + }, + }, + }, + ], + tooltip: { + fixed: { + enabled: true, + position: "topLeft", // topRight, topLeft, bottomRight, bottomLeft + offsetY: 30, + offsetX: 60, + }, + }, + legend: { + horizontalAlign: "left", + offsetX: 40, + }, + }, + }; + } + + render() { + return ( + <> + + + Multiple Y Axis + + + + + + ); + } +} + +export default MultipleYAxis; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js b/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js new file mode 100644 index 0000000..4faae0e --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern.js @@ -0,0 +1,130 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class PieCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 380, + type: "donut", + dropShadow: { + enabled: true, + color: "#111", + top: -1, + left: 3, + blur: 3, + opacity: 0.2, + }, + }, + stroke: { + width: 0, + }, + plotOptions: { + pie: { + donut: { + labels: { + show: true, + total: { + showAlways: true, + show: true, + }, + }, + }, + }, + }, + labels: ["Comedy", "Action", "SciFi", "Drama", "Horror"], + dataLabels: { + dropShadow: { + blur: 3, + opacity: 0.8, + }, + }, + fill: { + type: "pattern", + opacity: 1, + pattern: { + enabled: true, + style: [ + "verticalLines", + "squares", + "horizontalLines", + "circles", + "slantedLines", + ], + }, + }, + states: { + hover: { + filter: "none", + }, + }, + theme: { + palette: "palette2", + }, + title: { + text: "Favourite Movie Type", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Pie Charts + + + + + + ); + } +} + +export default PieCharts; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js new file mode 100644 index 0000000..2141ca5 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut.js @@ -0,0 +1,94 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class GradientDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + width: 380, + type: "donut", + }, + plotOptions: { + pie: { + startAngle: -90, + endAngle: 270, + }, + }, + dataLabels: { + enabled: false, + }, + fill: { + type: "gradient", + }, + legend: { + formatter: function (val, opts) { + return val + " - " + opts.w.globals.series[opts.seriesIndex]; + }, + }, + title: { + text: "Gradient Donut with custom Start-angle", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Gradient Donut + + + + + + ); + } +} + +export default GradientDonut; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js b/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js new file mode 100644 index 0000000..44e4fb4 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie.js @@ -0,0 +1,85 @@ +import React, { Component } from 'react'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MonochromePie extends Component { + + constructor(props) { + super(props); + + this.state = { + + series: [25, 15, 44, 55, 41, 17], + options: { + chart: { + width: '100%', + type: 'pie', + }, + labels: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + theme: { + monochrome: { + enabled: true + } + }, + plotOptions: { + pie: { + dataLabels: { + offset: -5 + } + } + }, + title: { + text: "Monochrome Pie" + }, + dataLabels: { + formatter(val, opts) { + const name = opts.w.globals.labels[opts.seriesIndex] + return [name, val.toFixed(1) + '%'] + } + }, + legend: { + show: false + } + }, + + + }; + } + + render() { + return ( + <> + + + Monochrome Pie + + + + + + ); + } +} + +export default MonochromePie; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js new file mode 100644 index 0000000..625a686 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SimpleDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 41, 17, 15], + options: { + chart: { + type: "donut", + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Simple Donut + + + + + + ); + } +} + +export default SimpleDonut; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js b/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js new file mode 100644 index 0000000..e721a9c --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart.js @@ -0,0 +1,75 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class SimplePieChart extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 13, 43, 22], + options: { + chart: { + width: 380, + type: "pie", + }, + labels: ["Team A", "Team B", "Team C", "Team D", "Team E"], + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Simple Pie Chart + + + + + + ); + } +} + +export default SimplePieChart; diff --git a/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js b/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js new file mode 100644 index 0000000..cace550 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut.js @@ -0,0 +1,132 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class UpdateDonut extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 13, 33], + options: { + chart: { + width: 380, + type: "donut", + }, + dataLabels: { + enabled: false, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + show: false, + }, + }, + }, + ], + legend: { + position: "right", + offsetY: 0, + height: 230, + }, + }, + }; + } + + appendData() { + var arr = this.state.series.slice(); + arr.push(Math.floor(Math.random() * (100 - 1 + 1)) + 1); + + this.setState({ + series: arr, + }); + } + + removeData() { + if (this.state.series.length === 1) return; + + var arr = this.state.series.slice(); + arr.pop(); + + this.setState({ + series: arr, + }); + } + + randomize() { + this.setState({ + series: this.state.series.map(function () { + return Math.floor(Math.random() * (100 - 1 + 1)) + 1; + }), + }); + } + + reset() { + this.setState({ + series: [44, 55, 13, 33], + }); + } + + render() { + return ( + <> + + + Update Donut + + +
+
+
+ +
+
+ +
+ +   + +   + +   + +
+
+
+ + ); + } +} + +export default UpdateDonut; diff --git a/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js b/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js new file mode 100644 index 0000000..cea1024 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts.js @@ -0,0 +1,78 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicPolarAreaCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [14, 23, 21, 17, 15, 10, 12, 17, 21], + options: { + chart: { + type: "polarArea", + }, + stroke: { + colors: ["#fff"], + }, + fill: { + opacity: 0.8, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + legend: { + position: "bottom", + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Basic Polar Area Charts + + + + + + ); + } +} + +export default BasicPolarAreaCharts; diff --git a/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js b/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js new file mode 100644 index 0000000..12583c8 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome.js @@ -0,0 +1,98 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class Monochrome extends Component { + constructor(props) { + super(props); + + this.state = { + series: [42, 47, 52, 58, 65], + options: { + labels: ["Rose A", "Rose B", "Rose C", "Rose D", "Rose E"], + fill: { + opacity: 1, + }, + stroke: { + width: 1, + colors: undefined, + }, + yaxis: { + show: false, + }, + legend: { + position: "bottom", + }, + plotOptions: { + polarArea: { + rings: { + strokeWidth: 0, + }, + spokes: { + strokeWidth: 0, + }, + }, + }, + theme: { + monochrome: { + enabled: true, + shadeTo: "light", + shadeIntensity: 0.6, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + chart: { + width: 200, + }, + + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Monochrome + + + + + + ); + } +} + +export default Monochrome; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js b/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js new file mode 100644 index 0000000..07e8f22 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts.js @@ -0,0 +1,72 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicRadarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + }, + title: { + text: "Basic Radar Chart", + }, + xaxis: { + categories: ["January", "February", "March", "April", "May", "June"], + }, + }, + }; + } + + render() { + return ( + <> + + + Basic Radar Charts + + + + + + ); + } +} + +export default BasicRadarCharts; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js b/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js new file mode 100644 index 0000000..39a6a01 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries.js @@ -0,0 +1,95 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RadarMultipleSeries extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [80, 50, 30, 40, 100, 20], + }, + { + name: "Series 2", + data: [20, 30, 40, 80, 20, 80], + }, + { + name: "Series 3", + data: [44, 76, 78, 13, 43, 10], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + dropShadow: { + enabled: true, + blur: 1, + left: 1, + top: 1, + }, + }, + title: { + text: "Radar Chart - Multi Series", + }, + stroke: { + width: 2, + }, + fill: { + opacity: 0.1, + }, + markers: { + size: 0, + }, + xaxis: { + categories: ["2011", "2012", "2013", "2014", "2015", "2016"], + }, + }, + }; + } + + render() { + return ( + <> + + + Radar Multiple Series + + + + + + ); + } +} + +export default RadarMultipleSeries; diff --git a/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js b/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js new file mode 100644 index 0000000..3ac0e98 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill.js @@ -0,0 +1,120 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class RadarWithPolygonFill extends Component { + constructor(props) { + super(props); + + this.state = { + series: [ + { + name: "Series 1", + data: [20, 100, 40, 30, 50, 80, 33], + }, + ], + options: { + chart: { + height: 350, + type: "radar", + }, + dataLabels: { + enabled: true, + }, + plotOptions: { + radar: { + size: 140, + polygons: { + strokeColors: "#e9e9e9", + fill: { + colors: ["#f8f8f8", "#fff"], + }, + }, + }, + }, + title: { + text: "Radar with Polygon Fill", + }, + colors: ["#FF4560"], + markers: { + size: 4, + colors: ["#fff"], + strokeColor: "#FF4560", + strokeWidth: 2, + }, + tooltip: { + y: { + formatter: function (val) { + return val; + }, + }, + }, + xaxis: { + categories: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + ], + }, + yaxis: { + tickAmount: 7, + labels: { + formatter: function (val, i) { + if (i % 2 === 0) { + return val; + } else { + return ""; + } + }, + }, + }, + }, + }; + } + + render() { + return ( + <> + + + Radar with Polygon-fill + + + + + + ); + } +} + +export default RadarWithPolygonFill; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js new file mode 100644 index 0000000..a1acbde --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts.js @@ -0,0 +1,69 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class BasicRadialBarCharts extends Component { + constructor(props) { + super(props); + + this.state = { + series: [70], + options: { + chart: { + height: 350, + type: "radialBar", + }, + plotOptions: { + radialBar: { + hollow: { + size: "70%", + }, + }, + }, + labels: ["Cricket"], + }, + }; + } + + render() { + return ( + <> + + + Basic Radial Bar Charts + + + + + + ); + } +} + +export default BasicRadialBarCharts; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js new file mode 100644 index 0000000..125a2af --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle.js @@ -0,0 +1,110 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class CustomAngleCircle extends Component { + constructor(props) { + super(props); + + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "50%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#1ab7ea", "#0084ff", "#39539E", "#0077B5"], + labels: ["Vimeo", "Messenger", "Facebook", "LinkedIn"], + legend: { + show: true, + floating: true, + fontSize: "12px", + position: "left", + offsetX: 0, + offsetY: 0, + labels: { + useSeriesColors: true, + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + show: false, + }, + }, + }, + ], + }, + }; + } + + render() { + return ( + <> + + + Custom Angle Circle + + + + + + ); + } +} + +export default CustomAngleCircle; diff --git a/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js b/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js new file mode 100644 index 0000000..d32fe02 --- /dev/null +++ b/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars.js @@ -0,0 +1,82 @@ +import React, { Component } from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class MultipleRadialbars extends Component { + constructor(props) { + super(props); + + this.state = { + series: [44, 55, 67, 83], + options: { + chart: { + height: 350, + type: "radialBar", + }, + plotOptions: { + radialBar: { + dataLabels: { + name: { + fontSize: "22px", + }, + value: { + fontSize: "16px", + }, + total: { + show: true, + label: "Total", + formatter: function (w) { + // By default this function returns the average of all series. The below is just an example to show the use of custom formatter function + return 249; + }, + }, + }, + }, + }, + labels: ["Apples", "Oranges", "Bananas", "Berries"], + }, + }; + } + + render() { + return ( + <> + + + Multiple Radialbars + + + + + + ); + } +} + +export default MultipleRadialbars; diff --git a/components/Pages/Charts/NavBar.js b/components/Pages/Charts/NavBar.js new file mode 100644 index 0000000..f8aeb41 --- /dev/null +++ b/components/Pages/Charts/NavBar.js @@ -0,0 +1,29 @@ +import React from 'react'; +import Link from 'next/link'; +import { useRouter } from "next/router"; +import styles from '@/components/Pages/Charts/NavBar.module.css' + +const NavBar = () => { + const router = useRouter(); + + return ( + <> + + + ) +} + +export default NavBar; \ No newline at end of file diff --git a/components/Pages/Charts/NavBar.module.css b/components/Pages/Charts/NavBar.module.css new file mode 100644 index 0000000..4727a47 --- /dev/null +++ b/components/Pages/Charts/NavBar.module.css @@ -0,0 +1,33 @@ +.topNavStyle { + margin-bottom: 20px; + border-bottom: 1px solid #eee; +} +.topNavStyle ul { + list-style-type: none; + padding: 0; + margin: 0; +} +.topNavStyle ul li { + display: inline-block; + margin-right: 10px; +} +.topNavStyle ul li:last-child { + margin-right: 0; +} +.topNavStyle ul li a { + background-color: #fff; + padding: 10px 30px; + display: inline-block; + border-radius: 20px 20px 0 0; + text-decoration: none; + font-weight: 500; +} +.topNavStyle ul li a:hover, .topNavStyle ul li.active a { + background-color: var(--primaryColor); + color: #fff; +} + +/* For dark mode */ +[class="dark"] .topNavStyle { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js b/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js new file mode 100644 index 0000000..465102a --- /dev/null +++ b/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + AreaChart, + Area, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleAreaChart = () => { + return ( + <> + + + Simple Area Chart + + + + + + + + + + + + + + ); +}; + +export default SimpleAreaChart; diff --git a/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js b/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js new file mode 100644 index 0000000..78c84f9 --- /dev/null +++ b/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart.js @@ -0,0 +1,128 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + AreaChart, + Area, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const StackedAreaChart = () => { + return ( + <> + + + Stacked Area Chart + + + + + + + + + + + + + + + + ); +}; + +export default StackedAreaChart; diff --git a/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js b/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js new file mode 100644 index 0000000..ecea2e1 --- /dev/null +++ b/components/Pages/Charts/Recharts/BarChart/SimpleBarChart.js @@ -0,0 +1,112 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + BarChart, + Bar, + Cell, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleBarChart = () => { + return ( + <> + + + Tiny Bar Chart + + + + + + + + + + + + + + + + ); +}; + +export default SimpleBarChart; diff --git a/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js b/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js new file mode 100644 index 0000000..2cd2612 --- /dev/null +++ b/components/Pages/Charts/Recharts/BarChart/TinyBarChart.js @@ -0,0 +1,90 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + BarChart, + Bar, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const TinyBarChart = () => { + return ( + <> + + + Tiny Bar Chart + + + + + + + + + + ); +}; + +export default TinyBarChart; diff --git a/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js b/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js new file mode 100644 index 0000000..c30989a --- /dev/null +++ b/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart.js @@ -0,0 +1,121 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposedChart, + Line, + Area, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + Scatter, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 590, + pv: 800, + amt: 1400, + cnt: 490, + }, + { + name: "Page B", + uv: 868, + pv: 967, + amt: 1506, + cnt: 590, + }, + { + name: "Page C", + uv: 1397, + pv: 1098, + amt: 989, + cnt: 350, + }, + { + name: "Page D", + uv: 1480, + pv: 1200, + amt: 1228, + cnt: 480, + }, + { + name: "Page E", + uv: 1520, + pv: 1108, + amt: 1100, + cnt: 460, + }, + { + name: "Page F", + uv: 1400, + pv: 680, + amt: 1700, + cnt: 380, + }, +]; + +const LineBarAreaComposedChart = () => { + return ( + <> + + + Line Bar Area Composed Chart + + + + + + + + + + + + + + + + + + ); +}; + +export default LineBarAreaComposedChart; diff --git a/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js b/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js new file mode 100644 index 0000000..7cace4c --- /dev/null +++ b/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart.js @@ -0,0 +1,107 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposedChart, + Line, + Area, + Bar, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from 'recharts'; + +const data = [ + { + name: 'Page A', + uv: 590, + pv: 800, + amt: 1400, + }, + { + name: 'Page B', + uv: 868, + pv: 967, + amt: 1506, + }, + { + name: 'Page C', + uv: 1397, + pv: 1098, + amt: 989, + }, + { + name: 'Page D', + uv: 1480, + pv: 1200, + amt: 1228, + }, + { + name: 'Page E', + uv: 1520, + pv: 1108, + amt: 1100, + }, + { + name: 'Page F', + uv: 1400, + pv: 680, + amt: 1700, + }, +]; + +const SameDataComposedChart = () => { + return ( + <> + + + Same Data Composed Chart + + + + + + + + + + + + + + + + ); +}; + +export default SameDataComposedChart; diff --git a/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js b/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js new file mode 100644 index 0000000..58d0414 --- /dev/null +++ b/components/Pages/Charts/Recharts/LineChart/SimpleLineChart.js @@ -0,0 +1,116 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const SimpleLineChart = () => { + return ( + <> + + + Simple Line Chart + + + + + + + + + + + + + + + + ); +}; + +export default SimpleLineChart; diff --git a/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js b/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js new file mode 100644 index 0000000..b7d6b7b --- /dev/null +++ b/components/Pages/Charts/Recharts/LineChart/VerticalLineChart.js @@ -0,0 +1,112 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + LineChart, + Line, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + name: "Page A", + uv: 4000, + pv: 2400, + amt: 2400, + }, + { + name: "Page B", + uv: 3000, + pv: 1398, + amt: 2210, + }, + { + name: "Page C", + uv: 2000, + pv: 9800, + amt: 2290, + }, + { + name: "Page D", + uv: 2780, + pv: 3908, + amt: 2000, + }, + { + name: "Page E", + uv: 1890, + pv: 4800, + amt: 2181, + }, + { + name: "Page F", + uv: 2390, + pv: 3800, + amt: 2500, + }, + { + name: "Page G", + uv: 3490, + pv: 4300, + amt: 2100, + }, +]; + +const VerticalLineChart = () => { + return ( + <> + + + Vertical Line Chart + + + + + + + + + + + + + + + + ); +}; + +export default VerticalLineChart; diff --git a/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js b/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js new file mode 100644 index 0000000..e090583 --- /dev/null +++ b/components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart.js @@ -0,0 +1,78 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { PieChart, Pie, Sector, Cell, ResponsiveContainer } from "recharts"; + +const data01 = [ + { name: "Group A", value: 400 }, + { name: "Group B", value: 300 }, + { name: "Group C", value: 300 }, + { name: "Group D", value: 200 }, +]; +const data02 = [ + { name: "A1", value: 100 }, + { name: "A2", value: 300 }, + { name: "B1", value: 100 }, + { name: "B2", value: 80 }, + { name: "B3", value: 40 }, + { name: "B4", value: 30 }, + { name: "B5", value: 50 }, + { name: "C1", value: 100 }, + { name: "C2", value: 200 }, + { name: "D1", value: 150 }, + { name: "D2", value: 50 }, +]; + +const TwoLevelPieChart = () => { + return ( + <> + + + Two Level Pie Chart + + + + + + + + + + + ); +}; + +export default TwoLevelPieChart; diff --git a/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js b/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js new file mode 100644 index 0000000..6d11bfe --- /dev/null +++ b/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { PieChart, Pie, Tooltip, ResponsiveContainer } from 'recharts'; + +const data01 = [ + { name: 'Group A', value: 400 }, + { name: 'Group B', value: 300 }, + { name: 'Group C', value: 300 }, + { name: 'Group D', value: 200 }, + { name: 'Group E', value: 278 }, + { name: 'Group F', value: 189 }, +]; + +const data02 = [ + { name: 'Group A', value: 2400 }, + { name: 'Group B', value: 4567 }, + { name: 'Group C', value: 1398 }, + { name: 'Group D', value: 9800 }, + { name: 'Group E', value: 3908 }, + { name: 'Group F', value: 4800 }, +]; + +const TwoSimplePieChart = () => { + return ( + <> + + + Two Simple Pie Chart + + + + + + + + + + + + ); +}; + +export default TwoSimplePieChart; diff --git a/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js b/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js new file mode 100644 index 0000000..5c2b8f4 --- /dev/null +++ b/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart.js @@ -0,0 +1,96 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + Radar, + RadarChart, + PolarGrid, + PolarAngleAxis, + PolarRadiusAxis, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + subject: "Math", + A: 120, + B: 110, + fullMark: 150, + }, + { + subject: "Chinese", + A: 98, + B: 130, + fullMark: 150, + }, + { + subject: "English", + A: 86, + B: 130, + fullMark: 150, + }, + { + subject: "Geography", + A: 99, + B: 100, + fullMark: 150, + }, + { + subject: "Physics", + A: 85, + B: 90, + fullMark: 150, + }, + { + subject: "History", + A: 65, + B: 85, + fullMark: 150, + }, +]; + +const SimpleRadarChart = () => { + return ( + <> + + + Simple Radar Chart + + + + + + + + + + + + + ); +}; + +export default SimpleRadarChart; diff --git a/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js b/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js new file mode 100644 index 0000000..71e56c8 --- /dev/null +++ b/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + Radar, + RadarChart, + PolarGrid, + Legend, + PolarAngleAxis, + PolarRadiusAxis, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { + subject: "Math", + A: 120, + B: 110, + fullMark: 150, + }, + { + subject: "Chinese", + A: 98, + B: 130, + fullMark: 150, + }, + { + subject: "English", + A: 86, + B: 130, + fullMark: 150, + }, + { + subject: "Geography", + A: 99, + B: 100, + fullMark: 150, + }, + { + subject: "Physics", + A: 85, + B: 90, + fullMark: 150, + }, + { + subject: "History", + A: 65, + B: 85, + fullMark: 150, + }, +]; + +const SpecifiedDomainRadarChart = () => { + return ( + <> + + + Specified Domain Radar Chart + + + + + + + + + + + + + + + ); +}; + +export default SpecifiedDomainRadarChart; diff --git a/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js b/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js new file mode 100644 index 0000000..822a624 --- /dev/null +++ b/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ScatterChart, + Scatter, + XAxis, + YAxis, + CartesianGrid, + Tooltip, + ResponsiveContainer, +} from "recharts"; + +const data = [ + { x: 100, y: 200, z: 200 }, + { x: 120, y: 100, z: 260 }, + { x: 170, y: 300, z: 400 }, + { x: 140, y: 250, z: 280 }, + { x: 150, y: 400, z: 500 }, + { x: 110, y: 280, z: 200 }, +]; + +const SimpleScatterChart = () => { + return ( + <> + + + Simple Scatter Chart + + + + + + + + + + + + + + ); +}; + +export default SimpleScatterChart; diff --git a/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js b/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js new file mode 100644 index 0000000..197a1ec --- /dev/null +++ b/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ScatterChart, + Scatter, + XAxis, + YAxis, + ZAxis, + CartesianGrid, + Tooltip, + Legend, + ResponsiveContainer, +} from 'recharts'; + +const data01 = [ + { x: 100, y: 200, z: 200 }, + { x: 120, y: 100, z: 260 }, + { x: 170, y: 300, z: 400 }, + { x: 140, y: 250, z: 280 }, + { x: 150, y: 400, z: 500 }, + { x: 110, y: 280, z: 200 }, +]; +const data02 = [ + { x: 200, y: 260, z: 240 }, + { x: 240, y: 290, z: 220 }, + { x: 190, y: 290, z: 250 }, + { x: 198, y: 250, z: 210 }, + { x: 180, y: 280, z: 260 }, + { x: 210, y: 220, z: 230 }, +]; + +const ThreeDimScatterChart = () => { + return ( + <> + + + Three Dim Scatter Chart + + + + + + + + + + + + + + + + + ); +}; + +export default ThreeDimScatterChart; diff --git a/components/Pages/Gallery/GalleryContent.js b/components/Pages/Gallery/GalleryContent.js new file mode 100644 index 0000000..2acde00 --- /dev/null +++ b/components/Pages/Gallery/GalleryContent.js @@ -0,0 +1,116 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Paper from '@mui/material/Paper'; +import Masonry from '@mui/lab/Masonry'; +import { styled } from '@mui/material/styles'; + +const Label = styled(Paper)(({ theme }) => ({ + backgroundColor: theme.palette.mode === 'dark' ? '#1A2027' : '#fff', + ...theme.typography.body2, + padding: theme.spacing(0.5), + textAlign: 'center', + color: theme.palette.text.secondary, + borderBottomLeftRadius: 0, + borderBottomRightRadius: 0, +})); + +export default function GalleryContent() { + return ( + + + {itemData.map((item, index) => ( +
+ + {item.title} +
+ ))} +
+
+ ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1627308595229-7830a5c91f9f', + title: 'Snacks', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + }, + { + img: 'https://images.unsplash.com/photo-1529655683826-aba9b3e77383', + title: 'Tower', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + }, + { + img: 'https://images.unsplash.com/photo-1627328715728-7bcc1b5db87d', + title: 'Tree', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1627000086207-76eabf23aa2e', + title: 'Camping Car', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1627328561499-a3584d4ee4f7', + title: 'Mountain', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, +]; \ No newline at end of file diff --git a/components/Pages/Invoice/InvoiceDetailsContent.js b/components/Pages/Invoice/InvoiceDetailsContent.js new file mode 100644 index 0000000..08b4dc4 --- /dev/null +++ b/components/Pages/Invoice/InvoiceDetailsContent.js @@ -0,0 +1,853 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, 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 Button from "@mui/material/Button"; + +const InvoiceDetailsContent = () => { + return ( + <> + + + {/* Invoice Details */} + + + Invoice Details + + + {/* Billed To: */} + + + Billed To: + + + + Thomas Adison + + + + 32104 Main + + + + Apt. 4c + + + + Springfield ST 54321 + + + + {/* Payment : */} + + + Payment : + + + + Total Due: $12,110.55 + + + + Bank Name: American Bank + + + + Country: United States + + + + IBAN: ETD95476213874685 + + + + SWIFT code: BR91905 + + + + + {/* Invoice id */} + + + Invoice #4987 + + + {/* Shipped To: */} + + + Shipped To: + + + + Thomas Adison + + + + 32104 Main + + + + Apt. 4c + + + + Springfield ST 54321 + + + + {/* Order Date : */} + + + Order Date: + + + + October 14, 2021 + + + + + + {/* Order Summary */} + + Order Summary + + + + + + + + Item + + + + Quantity + + + + Unit Price + + + + Price + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + 2 + + + + 200 + + + + $400 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + 1 + + + + 1 + + + + $200.00 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + 1 + + + + 1 + + + + $120.00 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + 1 + + + + 1 + + + + $120.00 + + + + + + + Product Img + + Airpod + + + + + + 1 + + + + 1 + + + + $120.00 + + + + {/* Sub Total */} + + + Sub Total : + + + + $960.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $850.00 + + + + {/* Print & Button Button */} + + + + + + + + +
+
+
+ + ); +}; + +export default InvoiceDetailsContent; diff --git a/components/Pages/Invoice/InvoiceLists.js b/components/Pages/Invoice/InvoiceLists.js new file mode 100644 index 0000000..0b304eb --- /dev/null +++ b/components/Pages/Invoice/InvoiceLists.js @@ -0,0 +1,627 @@ +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 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 Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import RemoveRedEyeIcon from '@mui/icons-material/RemoveRedEye'; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +function InvoiceList(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +InvoiceList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productName, + clientName, + clientImg, + email, + issuedDate, + total, + balance, + badgeClass, +) { + return { + orderID, + productName, + clientName, + clientImg, + email, + issuedDate, + total, + balance, + badgeClass, + }; +} + +const rows = [ + createData( + "#14250", + "Laptop Macos Pro", + "Colin Firth", + "/images/user1.png", + "colinfirth@gmail.com", + "10 Jan 2023", + "$845", + "Paid", + "successBadge", + ), + createData( + "#14251", + "Smart Camera XD6", + "Wade Dave", + "/images/user2.png", + "wadedave@gmail.com", + "11 Jan 2023", + "$189.50", + "Not Paid", + "dangerBadge", + ), + createData( + "#14252", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "/images/user3.png", + "sethriley@gmail.com", + "12 Jan 2023", + "$250.50", + "Paid", + "successBadge", + ), + createData( + "#14253", + "Jebble Smart Watch", + "Gilbert Dan", + "/images/user4.png", + "gilbertdan@gmail.com", + "13 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14254", + "Admas Airpod x-Zon", + "Joshua Glen", + "/images/user5.png", + "joshuaGlen@gmail.com", + "14 Jan 2023", + "$289.50", + "Not Paid", + "dangerBadge", + ), + createData( + "#14255", + "Smart Satch F8 Pro", + "Lewis Milton", + "/images/user6.png", + "lewisMilton@gmail.com", + "15 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14256", + "Nord Fold ZL", + "Liam Ethan", + "/images/user7.png", + "liamEthan@gmail.com", + "16 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14257", + "Wall Clock Cimbina", + "Ramon Miles", + "/images/user8.png", + "ramonMiles@gmail.com", + "17 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14258", + "Galaxo T6 Munsun", + "Brian Roberto", + "/images/user9.png", + "ramonMiles@gmail.com", + "18 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14259", + "Laptop Macos Pro", + "Colin Firth", + "/images/user10.png", + "colinFirth@gmail.com", + "19 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14260", + "Smart Camera XD6", + "Wade Dave", + "/images/user11.png", + "wadeDave@gmail.com", + "20 Jan 2023", + "$189.50", + "Paid", + "successBadge", + ), + createData( + "#14261", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "/images/user12.png", + "wadeDave@gmail.com", + "21 Jan 2023", + "$250.50", + "Paid", + "successBadge", + ), + createData( + "#14262", + "Jebble Smart Watch", + "Gilbert Dan", + "/images/user13.png", + "wadeDave@gmail.com", + "22 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14263", + "Admas Airpod x-Zon", + "Joshua Glen", + "/images/user14.png", + "joshuaGlen@gmail.com", + "23 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14264", + "Smart Satch F8 Pro", + "Lewis Milton", + "/images/user15.png", + "lewisMilton@gmail.com", + "24 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), + createData( + "#14265", + "Nord Fold ZL", + "Liam Ethan", + "/images/product7.png", + "liamEthan@gmail.com", + "25 Jan 2023", + "$289.50", + "Paid", + "successBadge", + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function InvoiceLists() { + 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 ( + <> + + + + Invoice Lists + + + + + + + + + # + + + + Product Name + + + + Client Name + + + + Issued Date + + + + Total + + + + Balance + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + {row.orderID} + + + + {row.productName} + + + + + Product Img + + + {row.clientName} + + + {row.email} + + + + + + + {row.issuedDate} + + + + {row.total} + + + + + {row.balance} + + + + + + + + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +} diff --git a/components/Pages/Maps/BasicMarkers.js b/components/Pages/Maps/BasicMarkers.js new file mode 100644 index 0000000..b026dcf --- /dev/null +++ b/components/Pages/Maps/BasicMarkers.js @@ -0,0 +1,105 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposableMap, + Geographies, + Geography, + Marker +} from "react-simple-maps"; + +const geoUrl = + "https://raw.githubusercontent.com/deldersveld/topojson/master/continents/south-america.json"; + +const markers = [ + { + markerOffset: -30, + name: "Buenos Aires", + coordinates: [-58.3816, -34.6037] + }, + { markerOffset: 15, name: "La Paz", coordinates: [-68.1193, -16.4897] }, + { markerOffset: 15, name: "Brasilia", coordinates: [-47.8825, -15.7942] }, + { markerOffset: 15, name: "Santiago", coordinates: [-70.6693, -33.4489] }, + { markerOffset: 15, name: "Bogota", coordinates: [-74.0721, 4.711] }, + { markerOffset: 15, name: "Quito", coordinates: [-78.4678, -0.1807] }, + { markerOffset: -30, name: "Georgetown", coordinates: [-58.1551, 6.8013] }, + { markerOffset: -30, name: "Asuncion", coordinates: [-57.5759, -25.2637] }, + { markerOffset: 15, name: "Paramaribo", coordinates: [-55.2038, 5.852] }, + { markerOffset: 15, name: "Montevideo", coordinates: [-56.1645, -34.9011] }, + { markerOffset: 15, name: "Caracas", coordinates: [-66.9036, 10.4806] }, + { markerOffset: 15, name: "Lima", coordinates: [-77.0428, -12.0464] } +]; + +const BasicMarkers = () => { + return ( + <> + + + Basic Markers + + + + + {({ geographies }) => + geographies.map((geo) => ( + + )) + } + + {markers.map(({ name, coordinates, markerOffset }) => ( + + + + + + + {name} + + + ))} + + + + ); +}; + +export default BasicMarkers; \ No newline at end of file diff --git a/components/Pages/Maps/EuropeMapWithGraticule.js b/components/Pages/Maps/EuropeMapWithGraticule.js new file mode 100644 index 0000000..ab5ab2e --- /dev/null +++ b/components/Pages/Maps/EuropeMapWithGraticule.js @@ -0,0 +1,67 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { + ComposableMap, + Geographies, + Geography, + Graticule +} from "react-simple-maps"; + +const geoUrl = + "https://raw.githubusercontent.com/deldersveld/topojson/master/continents/europe.json"; + +const EuropeMapWithGraticule = () => { + return ( + <> + + + Europe Map With Graticule + + + + + + {({ geographies }) => + geographies.map((geo) => ( + + )) + } + + + + + ); +}; + +export default EuropeMapWithGraticule; \ No newline at end of file diff --git a/components/Pages/Maps/GoogleMap.js b/components/Pages/Maps/GoogleMap.js new file mode 100644 index 0000000..a845fd5 --- /dev/null +++ b/components/Pages/Maps/GoogleMap.js @@ -0,0 +1,44 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +const GoogleMap = () => { + return ( + <> + + + Google Map + + + + + + ); +}; + +export default GoogleMap; diff --git a/components/Pages/Pricing/PricingPlanStyle1.js b/components/Pages/Pricing/PricingPlanStyle1.js new file mode 100644 index 0000000..2c6dc88 --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle1.js @@ -0,0 +1,209 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import Link from "next/link"; +import styles from "@/components/Pages/Pricing/PricingPlanStyle1.module.css"; + +const priceInfo = [ + { + id: 1, + title: "Basic Plan", + subTitle: "A simple start for everyone", + icon: "ri-shield-check-fill", + price: "50", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "30GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 2, + title: "Professional Plan", + subTitle: "A simple start for everyone", + icon: "ri-pie-chart-2-line", + price: "50", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "35GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 3, + title: "Enterprise Plan", + subTitle: "A simple start for everyone", + icon: "ri-briefcase-line", + price: "150", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "40GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, + { + id: 4, + title: "Unlimited Plan", + subTitle: "A simple start for everyone", + icon: "ri-star-half-line", + price: "200", + duration: "per month", + priceLists: [ + { + title: "Free Live Support", + }, + { + title: "50GB Disk Space", + }, + { + title: "Scalable Bandwith", + }, + { + title: "Free Setup", + }, + ], + }, +]; + +const PricingPlanStyle1 = () => { + return ( + <> + + Pricing Plans - 1 + + + + {priceInfo.map((info) => ( + + + + + + {info.title} + + + + {info.subTitle} + + + +
+ +
+
+ + + ${info.price}/{" "} + {info.duration} + + + + + + + + +
    + {info.priceLists.map((list) => ( +
  • {list.title}
  • + ))} +
+
+
+ ))} +
+ + ); +}; + +export default PricingPlanStyle1; diff --git a/components/Pages/Pricing/PricingPlanStyle1.module.css b/components/Pages/Pricing/PricingPlanStyle1.module.css new file mode 100644 index 0000000..32fd2bf --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle1.module.css @@ -0,0 +1,37 @@ +.icon { + color: var(--primaryColor); + font-size: 30px; +} +.priceList { + list-style-type: none; + padding: 0; + margin: 0; +} +.priceList li { + margin-bottom: 15px; + position: relative; + padding-left: 16px; +} +.priceList li:last-child { + margin-bottom: 0; +} +.priceList li:before { + content: ''; + background-color: var(--primaryColor); + position: absolute; + top: 4px; + left: 0; + width: 10px; + height: 10px; + border-radius: 100%; +} + +/* For RTL Style */ +[dir="rtl"] .priceList li { + padding-left: 0; + padding-right: 16px; +} +[dir="rtl"] .priceList li:before { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/components/Pages/Pricing/PricingPlanStyle2.js b/components/Pages/Pricing/PricingPlanStyle2.js new file mode 100644 index 0000000..ccddddc --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle2.js @@ -0,0 +1,196 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import Link from "next/link"; +import styles from "@/components/Pages/Pricing/PricingPlanStyle2.module.css"; + +const priceInfo = [ + { + id: 1, + title: "Basic Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "50", + duration: "per month", + priceLists: [ + { + title: "100 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 2 Subdomains", + }, + ], + }, + { + id: 2, + title: "Professional Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "50", + duration: "per month", + priceLists: [ + { + title: "120 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 5 Subdomains", + }, + ], + }, + { + id: 3, + title: "Enterprise Plan", + subTitle: + "Perfect for an individual or a small team starting to get bigger", + price: "150", + duration: "per month", + priceLists: [ + { + title: "150 Responses a Month", + }, + { + title: "Unlimited Forms and Surveys", + }, + { + title: "Unlimited Fields", + }, + { + title: "Basic Form Creation Tools", + }, + { + title: "Up to 10 Subdomains", + }, + ], + }, +]; + +const PricingPlanStyle2 = () => { + return ( + <> + + Pricing Plans - 2 + + + + {priceInfo.map((info) => ( + + + + + + {info.title} + + + + {info.subTitle} + + + + + + ${info.price}/{" "} + {info.duration} + + + + + + + + +
    + {info.priceLists.map((list) => ( +
  • + {list.title} +
  • + ))} +
+
+
+ ))} +
+ + ); +}; + +export default PricingPlanStyle2; diff --git a/components/Pages/Pricing/PricingPlanStyle2.module.css b/components/Pages/Pricing/PricingPlanStyle2.module.css new file mode 100644 index 0000000..aa08a7f --- /dev/null +++ b/components/Pages/Pricing/PricingPlanStyle2.module.css @@ -0,0 +1,34 @@ +.priceList { + list-style-type: none; + padding: 0; + margin: 0; +} +.priceList li { + margin-bottom: 15px; + position: relative; + padding-left: 30px; +} +.priceList li:last-child { + margin-bottom: 0; +} +.priceList li i { + background-color: rgba(117, 127, 239, 0.1); + position: absolute; + top: 0px; + left: 0; + width: 22px; + height: 22px; + line-height: 22px; + border-radius: 100%; + text-align: center; +} + +/* For RTL Style */ +[dir="rtl"] .priceList li { + padding-left: 0; + padding-right: 30px; +} +[dir="rtl"] .priceList li i { + left: auto; + right: 0; +} \ No newline at end of file diff --git a/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css b/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css new file mode 100644 index 0000000..5d8b844 --- /dev/null +++ b/components/Pages/Profile/ActivityTimeline/ActivityTimeline.module.css @@ -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; + } +} \ No newline at end of file diff --git a/components/Pages/Profile/ActivityTimeline/index.js b/components/Pages/Profile/ActivityTimeline/index.js new file mode 100644 index 0000000..265ecda --- /dev/null +++ b/components/Pages/Profile/ActivityTimeline/index.js @@ -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 ( + <> + + + + Activity Timeline + + + + + + + + + Last 15 Days + Last Month + Last Year + + + +
+ {ActivityTimelineData.slice(0, 6).map((timeline) => ( +
+
+ Icon +
{timeline.title}
+
+

{timeline.time}

+
+ ))} +
+
+ + ); +}; + +export default ActivityTimeline; diff --git a/components/Pages/Profile/Features.js b/components/Pages/Profile/Features.js new file mode 100644 index 0000000..d9e2d26 --- /dev/null +++ b/components/Pages/Profile/Features.js @@ -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 ( + <> + + {FeaturesData.map((feature) => ( + + + + + Icon + + + + + {feature.subTitle} + + + {feature.title} + + + + + + ))} + + + ); +}; + +export default Features; diff --git a/components/Pages/Profile/MyTasks.js b/components/Pages/Profile/MyTasks.js new file mode 100644 index 0000000..7df9c01 --- /dev/null +++ b/components/Pages/Profile/MyTasks.js @@ -0,0 +1,415 @@ +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"; + +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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +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 ( + <> + + + + My Tasks + + + + + + + + + Name + + + + Start Date + + + + End Date + + + + Status + + + + Budget + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.name} + + + + {row.startDate} + + + + {row.endDate} + + + + {row.status} + + + + {row.budget} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + ); +}; + +export default MyTasks; diff --git a/components/Pages/Profile/Overview.js b/components/Pages/Profile/Overview.js new file mode 100644 index 0000000..a28187d --- /dev/null +++ b/components/Pages/Profile/Overview.js @@ -0,0 +1,160 @@ +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 ( + <> + + + + Overview + + + + Select + + + + + + + + + ); +}; + +export default Overview; diff --git a/components/Pages/Profile/PersonalInformation/index.js b/components/Pages/Profile/PersonalInformation/index.js new file mode 100644 index 0000000..1082306 --- /dev/null +++ b/components/Pages/Profile/PersonalInformation/index.js @@ -0,0 +1,98 @@ +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 ( + <> + + + + Personal Information + + + + + + About Me: + + + 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. + + {personalInfo.map((info) => ( + + + {info.title} + + + {info.text} + + ))} + + + + ); +}; + +export default PersonalInformation; diff --git a/components/Pages/Profile/ProfileContent.js b/components/Pages/Profile/ProfileContent.js new file mode 100644 index 0000000..e2f4b0d --- /dev/null +++ b/components/Pages/Profile/ProfileContent.js @@ -0,0 +1,22 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import styles from "@/components/Dashboard/Analytics/Welcome/Welcome.module.css"; + +const ProfileContent = () => { + return ( + <> +
+
+

Welcome to admash Dashboard!

+

+ You have done 68% 😎 more sales today. Check your new badge in + your profile. +

+
+ shape +
+ + ); +}; + +export default ProfileContent; diff --git a/components/Pages/Search/SearchContent.js b/components/Pages/Search/SearchContent.js new file mode 100644 index 0000000..d7ea71e --- /dev/null +++ b/components/Pages/Search/SearchContent.js @@ -0,0 +1,213 @@ +import * as React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Pagination from '@mui/material/Pagination'; + +export default function SearchContent() { + return ( + <> + + + 120 results found for “Ipsum” + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + What is Lorem Ipsum? + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + {/* Pagination */} + + + + ); +} diff --git a/components/Pages/Support/SupportForm.js b/components/Pages/Support/SupportForm.js new file mode 100644 index 0000000..57a9778 --- /dev/null +++ b/components/Pages/Support/SupportForm.js @@ -0,0 +1,171 @@ +import * as React from "react"; +import Box from '@mui/material/Box'; +import Grid from "@mui/material/Grid"; +import TextField from "@mui/material/TextField"; +import Button from "@mui/material/Button"; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; +import Typography from "@mui/material/Typography"; + +export default function SupportForm() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + + + Contact with Us + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + + + Name + + + + + + + Email + + + + + + + Subject + + + + + + + Message + + + + + + + + + + + + + + ); +} diff --git a/components/Pages/TermsConditions/TermsConditionsContent.js b/components/Pages/TermsConditions/TermsConditionsContent.js new file mode 100644 index 0000000..be5e7aa --- /dev/null +++ b/components/Pages/TermsConditions/TermsConditionsContent.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Card from "@mui/material/Card"; +import styles from '@/components/Pages/TermsConditions/TermsConditionsContent.module.css' + +const TermsConditionsContent = () => { + return ( + <> + +
+

Terms & Conditions

+

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+ +

Privacy Policy

+

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.

+

Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem.

+ +

License Usage

+

But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness.

+ +

Media

+

At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga.

+ +

Product Updates

+

There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don't look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn't anything embarrassing hidden in the middle of text.

+ +

Cookies

+

It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.

+

Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like).

+ +

Last update: January 25, 2023

+
+
+ + ) +} + +export default TermsConditionsContent; \ No newline at end of file diff --git a/components/Pages/TermsConditions/TermsConditionsContent.module.css b/components/Pages/TermsConditions/TermsConditionsContent.module.css new file mode 100644 index 0000000..e949fb4 --- /dev/null +++ b/components/Pages/TermsConditions/TermsConditionsContent.module.css @@ -0,0 +1,37 @@ +.termsConditionsContent h1 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h2 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h3 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h4 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h5 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent h6 { + margin-top: 0; + margin-bottom: 10px; +} +.termsConditionsContent p { + margin-top: 0; + margin-bottom: 20px; +} +.termsConditionsContent ul, .termsConditionsContent ol { + margin-bottom: 20px; +} +.termsConditionsContent ul li, .termsConditionsContent ol li { + margin-bottom: 10px; +} +.termsConditionsContent ul li:last-child, .termsConditionsContent ol li:last-child { + margin-bottom: 0; +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsOne.js b/components/Pages/Testimonials/TestimonialsOne.js new file mode 100644 index 0000000..3ab0b43 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsOne.js @@ -0,0 +1,266 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsOne.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsOne = () => { + return ( + <> + + + Testimonials One + + + + {Feedbacks.map((feedback) => ( + +
+
+ + {feedback.feedbackText} + +
+ +
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsOne; diff --git a/components/Pages/Testimonials/TestimonialsOne.module.css b/components/Pages/Testimonials/TestimonialsOne.module.css new file mode 100644 index 0000000..479efd9 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsOne.module.css @@ -0,0 +1,61 @@ +.feedbackText { + background-color: #f2f1f3; + padding: 30px; + border-radius: 25px 25px 25px 0; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + display: flex; +} +.feedbackImg img { + width: 50px; + height: 50px; + border-radius: 100%; + margin-right: 10px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 14px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 12px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For RTL Style */ +[dir="rtl"] .feedbackText { + border-radius: 25px 25px 0 25px; +} +[dir="rtl"] .feedbackImg img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .feedbackImg ul li { + margin-right: 0; + margin-left: 3px; +} +[dir="rtl"] .feedbackImg ul li:last-child { + margin-left: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsThree.js b/components/Pages/Testimonials/TestimonialsThree.js new file mode 100644 index 0000000..8a23bef --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsThree.js @@ -0,0 +1,265 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsThree.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/member6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsThree = () => { + return ( + <> + + + Testimonials Three + + + + {Feedbacks.map((feedback) => ( + +
+
+
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+ + + {feedback.feedbackText} + +
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsThree; diff --git a/components/Pages/Testimonials/TestimonialsThree.module.css b/components/Pages/Testimonials/TestimonialsThree.module.css new file mode 100644 index 0000000..48f4492 --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsThree.module.css @@ -0,0 +1,48 @@ +.feedbackContent { + text-align: center; +} +.feedbackText { + background-color: #f2f1f3; + padding: 40px 30px; + border-radius: 10px; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + margin-bottom: 10px; +} +.feedbackImg img { + width: 100px; + height: 100px; + border-radius: 100%; + margin-bottom: 5px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 18px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 13px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Testimonials/TestimonialsTwo.js b/components/Pages/Testimonials/TestimonialsTwo.js new file mode 100644 index 0000000..7f2e46e --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsTwo.js @@ -0,0 +1,269 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import styles from "@/components/Pages/Testimonials/TestimonialsTwo.module.css"; + +const Feedbacks = [ + { + id: 1, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user1.png", + name: "Roberto", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 2, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user2.png", + name: "Ramon", + designation: 'UI/UX Designer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 3, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user3.png", + name: "Nathaniel", + designation: 'Angular Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 4, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user4.png", + name: "Milton", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 5, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user5.png", + name: "Antonio", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, + { + id: 6, + feedbackText: "We look and sound so good! I am still in shock at how smooth this process was. The professionalism, collaboration and the design they come up is great.", + image: "/images/user6.png", + name: "Julian", + designation: 'React Developer', + ratings: [ + { + id: 1, + icon: "ri-star-fill", + }, + { + id: 2, + icon: "ri-star-fill", + }, + { + id: 3, + icon: "ri-star-fill", + }, + { + id: 4, + icon: "ri-star-fill", + }, + { + id: 5, + icon: "ri-star-fill", + } + ] + }, +] + +const TestimonialsTwo = () => { + return ( + <> + + + Testimonials Two + + + + {Feedbacks.map((feedback) => ( + +
+
+
+
+ Client +
+ +
+

{feedback.name}

+

{feedback.designation}

+
    + {feedback.ratings.map((rating) => ( +
  • + +
  • + ))} +
+
+
+ + + {feedback.feedbackText} + +
+
+
+ ))} +
+
+ + ); +}; + +export default TestimonialsTwo; diff --git a/components/Pages/Testimonials/TestimonialsTwo.module.css b/components/Pages/Testimonials/TestimonialsTwo.module.css new file mode 100644 index 0000000..45a51ed --- /dev/null +++ b/components/Pages/Testimonials/TestimonialsTwo.module.css @@ -0,0 +1,59 @@ +.feedbackText { + background-color: #f2f1f3; + padding: 40px 30px; + border-radius: 25px; + font-size: 16px; + margin-bottom: 20px; +} +.feedbackImg { + display: flex; + margin-bottom: 10px; +} +.feedbackImg img { + width: 50px; + height: 50px; + border-radius: 100%; + margin-right: 10px; +} +.feedbackImg h4 { + margin: 0 0 3px; + font-size: 14px; +} +.feedbackImg p { + margin: 0 0 5px; + font-size: 12px; +} +.feedbackImg ul { + margin: 0; + list-style-type: none; + padding: 0; +} +.feedbackImg ul li { + display: inline-block; + margin-right: 3px; + color: #ffc744; +} +.feedbackImg ul li:last-child { + margin-right: 0; +} + +/* For RTL Style */ +[dir="rtl"] .feedbackImg img { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .feedbackImg ul li { + margin-right: 0; + margin-left: 3px; +} +[dir="rtl"] .feedbackImg ul li:last-child { + margin-left: 0; +} + +/* For dark mode */ +[class="dark"] .feedbackText { + background-color: var(--colorBlack); +} +[class="dark"] .feedbackText q { + color: var(--darkBodyTextColor); +} \ No newline at end of file diff --git a/components/Pages/Timeline/TimelineStyle1.js b/components/Pages/Timeline/TimelineStyle1.js new file mode 100644 index 0000000..75b84e0 --- /dev/null +++ b/components/Pages/Timeline/TimelineStyle1.js @@ -0,0 +1,172 @@ +import * as React from "react"; +import Timeline from "@mui/lab/Timeline"; +import TimelineItem from "@mui/lab/TimelineItem"; +import TimelineSeparator from "@mui/lab/TimelineSeparator"; +import TimelineConnector from "@mui/lab/TimelineConnector"; +import TimelineContent from "@mui/lab/TimelineContent"; +import TimelineOppositeContent from "@mui/lab/TimelineOppositeContent"; +import TimelineDot from "@mui/lab/TimelineDot"; +import FastfoodIcon from "@mui/icons-material/Fastfood"; +import LaptopMacIcon from "@mui/icons-material/LaptopMac"; +import HotelIcon from "@mui/icons-material/Hotel"; +import RepeatIcon from "@mui/icons-material/Repeat"; +import Typography from "@mui/material/Typography"; +import Card from "@mui/material/Card"; + +export default function TimelineStyle1() { + return ( + <> + + + Timeline Style 1 + + + + + + 9:30 am + + + + + + + + + + + + + Eat + + + Because you need strength + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. + + + + + + + 10:00 am + + + + + + + + + + + + + Code + + Because it's awesome! + + Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium. + + + + + + + 12:30 pm + + + + + + + + + + + + + Sleep + + + Because you need rest + + + But I must explain to you how all this mistaken idea of + denouncing pleasure and praising. + + + + + + + 9:30 am + + + + + + + + + + + + + Repeat + + + + Because this is the life you love! + + + + At vero eos et accusamus et iusto odio dignissimos ducimus qui + blanditiis praesentium! + + + + + + + ); +} diff --git a/components/Pages/Timeline/TimelineStyle2.js b/components/Pages/Timeline/TimelineStyle2.js new file mode 100644 index 0000000..b680914 --- /dev/null +++ b/components/Pages/Timeline/TimelineStyle2.js @@ -0,0 +1,140 @@ +import * as React from "react"; +import Timeline from "@mui/lab/Timeline"; +import TimelineItem from "@mui/lab/TimelineItem"; +import TimelineSeparator from "@mui/lab/TimelineSeparator"; +import TimelineConnector from "@mui/lab/TimelineConnector"; +import TimelineContent from "@mui/lab/TimelineContent"; +import TimelineDot from "@mui/lab/TimelineDot"; +import TimelineOppositeContent, { + timelineOppositeContentClasses, +} from "@mui/lab/TimelineOppositeContent"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function TimelineStyle2() { + return ( + <> + + + Timeline Style 2 + + + + + + Jan 15, 2023 (09:30 am) + + + + + + + + + + First Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 16, 2023 (09:30 am) + + + + + + + + + + Second Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 17, 2023 (09:30 am) + + + + + + + + + + Third Event + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim ad minim veniam, quis nostrud exercitation ullamco laboris + nisi ut aliquip ex ea commodo consequat. + + + + + + + Jan 18, 2023 (09:30 am) + + + + + + + + + Fourth Event + + + 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. + + + + + + + ); +} diff --git a/components/Projects/AllProjects/AllProjects.module.css b/components/Projects/AllProjects/AllProjects.module.css new file mode 100644 index 0000000..2a6231c --- /dev/null +++ b/components/Projects/AllProjects/AllProjects.module.css @@ -0,0 +1,10 @@ +.members { + display: flex; + align-items: center; + position: relative; +} +.members img { + border-radius: 100%; + border: 2px solid #fff; + margin-left: -6px; +} \ No newline at end of file diff --git a/components/Projects/AllProjects/index.js b/components/Projects/AllProjects/index.js new file mode 100644 index 0000000..a0db625 --- /dev/null +++ b/components/Projects/AllProjects/index.js @@ -0,0 +1,1116 @@ +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 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 { styled } from "@mui/material/styles"; +import LinearProgress, { + linearProgressClasses, +} from "@mui/material/LinearProgress"; +import styles from "@/components/Projects/AllProjects/AllProjects.module.css"; + +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 AllProjects = () => { + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + return ( + <> + + + + All Projects + + + + + Select + + + + + + + + + + + + Project Name + + + + Members + + + + Budget + + + + Status + + + + Completion + + + + Due Date + + + + + + {/* TableRow 1 */} + + + + Image + + Product UI/UX Design + + + + + +
+ Image + Image + Image +
+
+ + + $14,000 + + + + On Going + + + + + 70% + + + + + + 08 Mar 2021 + +
+ + {/* TableRow 2 */} + + + + Image + + Public Beta Release + + + + + +
+ Image + Image +
+
+ + + $14,000 + + + + On Going + + + + + 60% + + + + + + 17 Apr 2021 + +
+ + {/* TableRow 3 */} + + + + Image + + SEO Marketing + + + + + +
+ Image + Image +
+
+ + + $12,000 + + + + On Going + + + + + 75% + + + + + + 10 Sep 2021 + +
+ + {/* TableRow 4 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image + Image +
+
+ + + $9,000 + + + + Pending + + + + + 0% + + + + + + 06 Aug 2022 + +
+ + {/* TableRow 5 */} + + + + Image + + Product Devlopment + + + + + +
+ Image + Image + Image +
+
+ + + $16,000 + + + + Completed + + + + + 100% + + + + + + 08 Mar 2022 + +
+ + {/* TableRow 6 */} + + + + Image + + Public Beta Release 2 + + + + + +
+ Image + Image + Image +
+
+ + + $6,000 + + + + Complete + + + + + 100% + + + + + + 1 Jan 2022 + +
+ + {/* TableRow 7 */} + + + + Image + + Market and SEO + + + + + +
+ Image + Image +
+
+ + + $5,000 + + + + Complete + + + + + 100% + + + + + + 1 Jan 2021 + +
+ + {/* TableRow 8 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image +
+
+ + + $2,000 + + + + Pending + + + + + 10% + + + + + + 1 Feb 2021 + +
+ + {/* TableRow 9 */} + + + + Image + + Public Beta Release + + + + + +
+ Image + Image +
+
+ + + $7,000 + + + + Complete + + + + + 100% + + + + + + 1 Mar 2021 + +
+ + {/* TableRow 10 */} + + + + Image + + Market and SEO + + + + + +
+ Image + Image +
+
+ + + $1,000 + + + + Complete + + + + + 100% + + + + + + 1 Apr 2021 + +
+ + {/* TableRow 11 */} + + + + Image + + New Office Building + + + + + +
+ Image + Image +
+
+ + + $1500 + + + + Complete + + + + + 100% + + + + + + 1 Mar 2021 + +
+ + {/* TableRow 12 */} + + + + Image + + Product Devlopment + + + + + +
+ Image + Image +
+
+ + + $2500 + + + + Complete + + + + + 100% + + + + + + 1 Apr 2021 + +
+
+
+
+
+ + ); +}; + +export default AllProjects; diff --git a/components/Projects/KanbanBoard/InReview.js b/components/Projects/KanbanBoard/InReview.js new file mode 100644 index 0000000..f124bbb --- /dev/null +++ b/components/Projects/KanbanBoard/InReview.js @@ -0,0 +1,420 @@ +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 Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const InReview = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + In Review + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 55 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default InReview; diff --git a/components/Projects/KanbanBoard/NewProjects.js b/components/Projects/KanbanBoard/NewProjects.js new file mode 100644 index 0000000..63ec8d5 --- /dev/null +++ b/components/Projects/KanbanBoard/NewProjects.js @@ -0,0 +1,420 @@ +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 Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const NewProjects = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + New Projects + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 41 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default NewProjects; diff --git a/components/Projects/KanbanBoard/ToDo.js b/components/Projects/KanbanBoard/ToDo.js new file mode 100644 index 0000000..e36e4a4 --- /dev/null +++ b/components/Projects/KanbanBoard/ToDo.js @@ -0,0 +1,420 @@ +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 Checkbox from '@mui/material/Checkbox'; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +const newProjects = [ + { + id: 1, + projectName: "Mobile App Development", + category: "Mobile App", + totalTask: "10/50", + teamMembers: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + }, + { + id: 2, + projectName: "Web Development", + category: "React JS", + totalTask: "50/100", + teamMembers: [ + { + id: 7, + image: "/images/member5.png", + }, + { + id: 8, + image: "/images/member6.png", + }, + { + id: 9, + image: "/images/member7.png", + }, + { + id: 10, + image: "/images/member8.png", + }, + { + id: 11, + image: "/images/member9.png", + }, + { + id: 12, + image: "/images/member10.png", + }, + ], + }, + { + id: 3, + projectName: "E-Commerce Development", + category: "React JS", + totalTask: "60/100", + teamMembers: [ + { + id: 6, + image: "/images/member1.png", + }, + { + id: 5, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 1, + image: "/images/member6.png", + }, + ], + }, + { + id: 4, + projectName: "Digital Marketing", + category: "SEO", + totalTask: "10/50", + teamMembers: [ + { + id: 5, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 1, + image: "/images/member12.png", + }, + { + id: 4, + image: "/images/member13.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member3.png", + }, + ], + }, + { + id: 5, + projectName: "WordPress Development", + category: "WordPress", + totalTask: "45/100", + teamMembers: [ + { + id: 1, + image: "/images/member8.png", + }, + { + id: 2, + image: "/images/member9.png", + }, + { + id: 3, + image: "/images/member10.png", + }, + { + id: 4, + image: "/images/member11.png", + }, + { + id: 5, + image: "/images/member12.png", + }, + { + id: 6, + image: "/images/member13.png", + }, + ], + }, +] + +const ToDo = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + To Do + + + + + + + + + Create Project + Open Project + Overview + + + + {/* Card */} + + + + + + + + + 50 + + + + Added: 13 Projects this month + + + + + + + 5.80% + + + + + + {/* Card */} + {newProjects.map((project) => ( + + + + + + + + + + + + + + + + + + + + + {project.projectName} + + + + {project.category} + + + + + {project.totalTask} + + + + {project.teamMembers.map((member) => ( + + ))} + + + + ))} + + + ); +}; + +export default ToDo; diff --git a/components/Projects/ProjectCreate/CategoriesSelect.js b/components/Projects/ProjectCreate/CategoriesSelect.js new file mode 100644 index 0000000..e8ffa47 --- /dev/null +++ b/components/Projects/ProjectCreate/CategoriesSelect.js @@ -0,0 +1,89 @@ +import * as React from "react"; +import { useTheme } from "@mui/material/styles"; +import Box from "@mui/material/Box"; +import OutlinedInput from "@mui/material/OutlinedInput"; +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 Chip from "@mui/material/Chip"; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + "UI/UX Design", + "Frontend Development", + "Backend Development", + "React App", + "E-commerce", + "PSD To HTML", +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +const Categories = () => { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === "string" ? value.split(",") : value + ); + }; + + return ( + <> + + Select + + + + ); +}; + +export default Categories; diff --git a/components/Projects/ProjectCreate/MemberSelect.js b/components/Projects/ProjectCreate/MemberSelect.js new file mode 100644 index 0000000..1c51c15 --- /dev/null +++ b/components/Projects/ProjectCreate/MemberSelect.js @@ -0,0 +1,91 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +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 Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MemberSelect() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( +
+ + Select + + +
+ ); +} \ No newline at end of file diff --git a/components/Projects/Task/CompletedTasks.js b/components/Projects/Task/CompletedTasks.js new file mode 100644 index 0000000..7f5fa50 --- /dev/null +++ b/components/Projects/Task/CompletedTasks.js @@ -0,0 +1,224 @@ +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 ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +const CompletedTasks = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + // Chart + const series = [ + { + name: "Task", + data: [21, 22, 10, 28, 16, 21, 13, 30], + }, + ]; + const options = { + chart: { + toolbar: { + show: false, + }, + events: { + click: function (chart, w, e) { + // console.log(chart, w, e) + }, + }, + }, + colors: ["#757FEF"], + plotOptions: { + bar: { + columnWidth: "30%", + distributed: true, + borderRadius: 6, + }, + }, + dataLabels: { + enabled: false, + }, + legend: { + show: false, + }, + xaxis: { + categories: [ + ["1 Jan"], + ["2 Jan"], + ["3 Jan"], + ["4 Jan"], + ["5 Jan"], + ["6 Jan"], + ["7 Jan"], + ["8 Jan"], + ], + labels: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + yaxis: { + show: false, + }, + grid: { + show: false, + }, + fill: { + opacity: 1, + }, + }; + + return ( + <> + + + + Completed Tasks + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + + + + + + Target + + + {" "} + 20k + + + + + + Last Week + + + {" "} + 5.50k + + + + + + Last Month + + + {" "} + 50k + + + + + + ); +}; + +export default CompletedTasks; diff --git a/components/Projects/Task/MyTasks.js b/components/Projects/Task/MyTasks.js new file mode 100644 index 0000000..c2acb8b --- /dev/null +++ b/components/Projects/Task/MyTasks.js @@ -0,0 +1,672 @@ +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 Checkbox from '@mui/material/Checkbox'; +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; +import Grid from "@mui/material/Grid"; +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 { 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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Add Task Modal + +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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MyTask.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(task, dedline, status, badgeClass, assignee, memberName) { + return { + task, + dedline, + status, + badgeClass, + assignee, + memberName, + }; +} + +const rows = [ + createData( + "Public Beta Release", + "14 Feb 2022", + "On Going", + "successBadge", + "/images/user1.png", + "Wade" + ), + createData( + "Fix Platform Errors", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user2.png", + "Dave" + ), + createData( + "Launch our Mobile App", + "15 Apr 2022", + "On Going", + "successBadge", + "/images/user3.png", + "Liam" + ), + createData( + "Add the New Pricing Page", + "15 May 2022", + "Pending", + "dangerBadge", + "/images/user4.png", + "Nathaniel" + ), + createData( + "Redesign New Online Shop", + "15 Jun 2022", + "On Going", + "successBadge", + "/images/user5.png", + "Lewis" + ), + createData( + "Material Ui Design", + "15 Jul 2022", + "On Going", + "successBadge", + "/images/user6.png", + "Milton" + ), + createData( + "Add Progress Track", + "15 Mar 2022", + "Completed", + "primaryBadge", + "/images/user7.png", + "Claude" + ), + createData( + "Web Design", + "15 Aug 2022", + "On Going", + "successBadge", + "/images/user8.png", + "Harvey" + ), + createData( + "Web Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user9.png", + "Blake" + ), + createData( + "React App Development", + "15 Dec 2022", + "Completed", + "primaryBadge", + "/images/user10.png", + "Antonio" + ), + createData( + "eCommerce Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user11.png", + "Conner" + ), + createData( + "App Development", + "15 Nov 2022", + "On Going", + "successBadge", + "/images/user12.png", + "Shane" + ), +].sort((a, b) => (a.task < b.task ? -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); + }; + + // 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 ( + <> + + + + My Tasks + + + + + + + + + + + Task + + + Dedline + + + Status + + + Assignee + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + {row.task} + + + + {row.dedline} + + + + {row.status} + + + + + {row.memberName} + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
+
+
+ + {/* Add task modal */} + + + + + Add Task + + + + + + + + + + + + + Task + + + + + + + + Member + + + + + + + + Dedline + + + + + + + + Status + + + + + + + + + + + + + + ); +}; + +export default MyTasks; diff --git a/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js b/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js new file mode 100644 index 0000000..78b52e0 --- /dev/null +++ b/components/Projects/Task/TasksPerformance/TasksPerformanceChart.js @@ -0,0 +1,141 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward"; +import ArrowUpwardIcon from "@mui/icons-material/ArrowUpward"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); + +class TasksPerformanceChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [76, 67, 61, 90], + options: { + plotOptions: { + radialBar: { + offsetY: 0, + startAngle: 0, + endAngle: 270, + hollow: { + margin: 5, + size: "25%", + background: "transparent", + image: undefined, + }, + dataLabels: { + name: { + show: false, + }, + value: { + show: false, + }, + }, + }, + }, + colors: ["#757FEF", "#9EA5F4", "#C8CCF9", "#F1F2FD"], + labels: ["Completed", "Active", "Assigned", "Pending"], + legend: { + show: true, + floating: true, + fontSize: "14px", + position: "left", + offsetY: 0, + labels: { + color: "#5B5B98" + }, + markers: { + size: 0, + }, + formatter: function (seriesName, opts) { + return seriesName + ": " + opts.w.globals.series[opts.seriesIndex]; + }, + itemMargin: { + vertical: 3, + }, + }, + responsive: [ + { + breakpoint: 480, + options: { + legend: { + show: false, + }, + chart: { + height: 270 + }, + }, + }, + ], + fill: { + opacity: 1, + }, + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + {" "} + 30k + + + + + + Last Week + + + {" "} + 40k + + + + + + Last Month + + + {" "} + 60k + + + + + ); + } +} + +export default TasksPerformanceChart; diff --git a/components/Projects/Task/TasksPerformance/index.js b/components/Projects/Task/TasksPerformance/index.js new file mode 100644 index 0000000..3364fb8 --- /dev/null +++ b/components/Projects/Task/TasksPerformance/index.js @@ -0,0 +1,110 @@ +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 TasksPerformanceChart from "./TasksPerformanceChart"; + +const TasksPerformance = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Tasks Performance + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TasksPerformanceChart */} + + + + ); +}; + +export default TasksPerformance; diff --git a/components/Projects/Task/TotalUsers/TotalUsersChart.js b/components/Projects/Task/TotalUsers/TotalUsersChart.js new file mode 100644 index 0000000..88173da --- /dev/null +++ b/components/Projects/Task/TotalUsers/TotalUsersChart.js @@ -0,0 +1,121 @@ +import React, { Component } from "react"; +import { Box, Typography } from "@mui/material"; +import dynamic from "next/dynamic"; +const Chart = dynamic(() => import("react-apexcharts"), { + ssr: false, +}); +import ArrowDownwardIcon from '@mui/icons-material/ArrowDownward'; +import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward'; + +class TotalUsersChart extends Component { + constructor(props) { + super(props); + this.state = { + series: [44, 55, 13], + options: { + labels: ["Target", "Last week", "Last Month"], + colors: ["#757FEF", "#90C6E0", "#E040FB"], + legend: { + show: false, + }, + tooltip: { + y: { + formatter: function (val) { + return "" + val + "k"; + }, + }, + }, + responsive: [{ + breakpoint: 480, + options: { + chart: { + height: 270 + }, + } + }] + }, + }; + } + + render() { + return ( + <> + + + + + + Target + + + 18k + + + + + + Last Week + + + 5.21k + + + + + + Last Month + + + 32k + + + + + ); + } +} + +export default TotalUsersChart; diff --git a/components/Projects/Task/TotalUsers/index.js b/components/Projects/Task/TotalUsers/index.js new file mode 100644 index 0000000..5bee2f2 --- /dev/null +++ b/components/Projects/Task/TotalUsers/index.js @@ -0,0 +1,110 @@ +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 TotalUsersChart from "./TotalUsersChart"; + +const TotalUsers = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + + + + Total Users + + + + + + + + + Last 15 Days + Last Month + Last Year + + + + {/* TotalUsersChart */} + + + + ); +}; + +export default TotalUsers; diff --git a/components/Settings/Account/ChangePassword.js b/components/Settings/Account/ChangePassword.js new file mode 100644 index 0000000..dd71ad5 --- /dev/null +++ b/components/Settings/Account/ChangePassword.js @@ -0,0 +1,147 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import TextField from '@mui/material/TextField'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +export default function ChangePassword() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + + Security + + + + Update your password here. + + + + + + + + Old Password + + + + + + + New Password + + + + + + + Confirm Password + + + + + + + Email Address + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/Account/PrivacyPolicyContent.js b/components/Settings/Account/PrivacyPolicyContent.js new file mode 100644 index 0000000..a5eace4 --- /dev/null +++ b/components/Settings/Account/PrivacyPolicyContent.js @@ -0,0 +1,102 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import Button from '@mui/material/Button'; + +export default function PrivacyPolicyContent() { + return ( + <> + + + + Security: + + + + + Two-factor Authentication + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Secondary Verification + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Backup Codes + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Desktop, email, chat, purchase notifications + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + Delete this account : + + + + Two-factor authentication is an enhanced security meansur. Once enabled, you'll be required to give two types of identification when you log into Google Authentication and SMS are Supported. + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/Account/Profile.js b/components/Settings/Account/Profile.js new file mode 100644 index 0000000..f47b541 --- /dev/null +++ b/components/Settings/Account/Profile.js @@ -0,0 +1,155 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import TextField from '@mui/material/TextField'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; + +export default function Profile() { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get('email'), + password: data.get('password'), + }); + }; + + return ( + <> + + + + Profile + + + + Update your photo and personal details here. + + + + + + + + First Name + + + + + + + Last Name + + + + + + + + Email Address + + + + + + + + Upload Image + + + + + + profile + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/Settings/NavBar.js b/components/Settings/NavBar.js new file mode 100644 index 0000000..ef47270 --- /dev/null +++ b/components/Settings/NavBar.js @@ -0,0 +1,34 @@ +import React from 'react'; +import Link from 'next/link'; +import { useRouter } from "next/router"; +import styles from '@/components/Settings/NavBar.module.css' + +const NavBar = () => { + const router = useRouter(); + + return ( + <> + + + ) +} + +export default NavBar; \ No newline at end of file diff --git a/components/Settings/NavBar.module.css b/components/Settings/NavBar.module.css new file mode 100644 index 0000000..255198a --- /dev/null +++ b/components/Settings/NavBar.module.css @@ -0,0 +1,37 @@ +.topNavStyle { + margin-bottom: 10px; +} +.topNavStyle ul { + list-style-type: none; + padding: 0; + margin: 0; +} +.topNavStyle ul li { + display: inline-block; + margin-right: 10px; + margin-bottom: 10px; +} +.topNavStyle ul li:last-child { + margin-right: 0; +} +.topNavStyle ul li a { + background-color: rgba(161, 98, 247, 0.1); + padding: 10px 25px; + display: inline-block; + border-radius: 5px; + text-decoration: none; + font-weight: 500; +} +.topNavStyle ul li a:hover, .topNavStyle ul li.active a { + background-color: var(--primaryColor); + color: #fff; +} + +/* For RTL Style */ +[dir="rtl"] .topNavStyle ul li { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .topNavStyle ul li:last-child { + margin-left: 0; +} \ No newline at end of file diff --git a/components/UIElements/Accordion/BasicAccordion.js b/components/UIElements/Accordion/BasicAccordion.js new file mode 100644 index 0000000..b8c6552 --- /dev/null +++ b/components/UIElements/Accordion/BasicAccordion.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Accordion from '@mui/material/Accordion'; +import AccordionSummary from '@mui/material/AccordionSummary'; +import AccordionDetails from '@mui/material/AccordionDetails'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; + +export default function BasicAccordion() { + return ( + <> + + + Basic Accordion + + + + } + aria-controls="panel1a-content" + id="panel1a-header" + > + Accordion 1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + + + + } + aria-controls="panel2a-content" + id="panel2a-header" + > + Accordion 2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse + malesuada lacus ex, sit amet blandit leo lobortis eget. + + + + + + } + aria-controls="panel3a-content" + id="panel3a-header" + > + Disabled Accordion + + + + + ); +} diff --git a/components/UIElements/Accordion/ControlledAccordion.js b/components/UIElements/Accordion/ControlledAccordion.js new file mode 100644 index 0000000..abd53ae --- /dev/null +++ b/components/UIElements/Accordion/ControlledAccordion.js @@ -0,0 +1,141 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Accordion from "@mui/material/Accordion"; +import AccordionDetails from "@mui/material/AccordionDetails"; +import AccordionSummary from "@mui/material/AccordionSummary"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; + +export default function ControlledAccordion() { + const [expanded, setExpanded] = React.useState(false); + + const handleChange = (panel) => (event, isExpanded) => { + setExpanded(isExpanded ? panel : false); + }; + + return ( + <> + + + Controlled Accordion + + + + } + aria-controls="panel1bh-content" + id="panel1bh-header" + > + + General settings + + + I am an accordion + + + + + + Nulla facilisi. Phasellus sollicitudin nulla et quam mattis + feugiat. Aliquam eget maximus est, id dignissim quam. + + + + + + } + aria-controls="panel2bh-content" + id="panel2bh-header" + > + + Users + + + You are currently not an owner + + + + + + Donec placerat, lectus sed mattis semper, neque lectus feugiat + lectus, varius pulvinar diam eros in elit. Pellentesque convallis + laoreet laoreet. + + + + + + } + aria-controls="panel3bh-content" + id="panel3bh-header" + > + + Advanced settings + + + Filtering has been entirely disabled for whole web server + + + + + + Nunc vitae orci ultricies, auctor nunc in, volutpat nisl. Integer + sit amet egestas eros, vitae egestas augue. Duis vel est augue. + + + + + + } + aria-controls="panel4bh-content" + id="panel4bh-header" + > + + Personal data + + + + + + Nunc vitae orci ultricies, auctor nunc in, volutpat nisl. Integer + sit amet egestas eros, vitae egestas augue. Duis vel est augue. + + + + + + ); +} diff --git a/components/UIElements/Accordion/Customization.js b/components/UIElements/Accordion/Customization.js new file mode 100644 index 0000000..3a7941a --- /dev/null +++ b/components/UIElements/Accordion/Customization.js @@ -0,0 +1,133 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from "@mui/material/styles"; +import ArrowForwardIosSharpIcon from "@mui/icons-material/ArrowForwardIosSharp"; +import MuiAccordion from "@mui/material/Accordion"; +import MuiAccordionSummary from "@mui/material/AccordionSummary"; +import MuiAccordionDetails from "@mui/material/AccordionDetails"; + +const Accordion = styled((props) => ( + +))(({ theme }) => ({ + border: `1px solid ${theme.palette.divider}`, + "&:not(:last-child)": { + borderBottom: 0, + }, + "&:before": { + display: "none", + }, +})); + +const AccordionSummary = styled((props) => ( + } + {...props} + /> +))(({ theme }) => ({ + backgroundColor: + theme.palette.mode === "dark" + ? "rgba(255, 255, 255, .05)" + : "rgba(0, 0, 0, .03)", + flexDirection: "row-reverse", + "& .MuiAccordionSummary-expandIconWrapper.Mui-expanded": { + transform: "rotate(90deg)", + }, + "& .MuiAccordionSummary-content": { + marginLeft: theme.spacing(1), + }, +})); + +const AccordionDetails = styled(MuiAccordionDetails)(({ theme }) => ({ + padding: theme.spacing(2), + borderTop: "1px solid rgba(0, 0, 0, .125)", +})); + +export default function Customization() { + const [expanded, setExpanded] = React.useState("panel1"); + + const handleChange = (panel) => (event, newExpanded) => { + setExpanded(newExpanded ? panel : false); + }; + + return ( + <> + + + Customization + + + + + Collapsible Group Item #1 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + + Collapsible Group Item #2 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + + Collapsible Group Item #3 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + Suspendisse malesuada lacus ex, sit amet blandit leo lobortis + eget. + + + + + + ); +} diff --git a/components/UIElements/Alerts/Actions.js b/components/UIElements/Alerts/Actions.js new file mode 100644 index 0000000..263babd --- /dev/null +++ b/components/UIElements/Alerts/Actions.js @@ -0,0 +1,47 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; +import Button from '@mui/material/Button'; + +const Actions = () => { + return ( + <> + + + Actions + + + + {}}>This is a success alert — check it out! + + UNDO + + } + > + This is a success alert — check it out! + + + + + ); +}; + +export default Actions; diff --git a/components/UIElements/Alerts/BasicAlerts.js b/components/UIElements/Alerts/BasicAlerts.js new file mode 100644 index 0000000..30624b4 --- /dev/null +++ b/components/UIElements/Alerts/BasicAlerts.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; + +const BasicAlerts = () => { + return ( + <> + + + Basic Alerts + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default BasicAlerts; diff --git a/components/UIElements/Alerts/Color.js b/components/UIElements/Alerts/Color.js new file mode 100644 index 0000000..28badad --- /dev/null +++ b/components/UIElements/Alerts/Color.js @@ -0,0 +1,36 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; + +const Color = () => { + return ( + <> + + + Color + + + + This is a success alert — check it out! + + + + ); +}; + +export default Color; diff --git a/components/UIElements/Alerts/DescriptionAlerts.js b/components/UIElements/Alerts/DescriptionAlerts.js new file mode 100644 index 0000000..f5ae92c --- /dev/null +++ b/components/UIElements/Alerts/DescriptionAlerts.js @@ -0,0 +1,56 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import Stack from "@mui/material/Stack"; +import AlertTitle from '@mui/material/AlertTitle'; + +const DescriptionAlerts = () => { + return ( + <> + + + Description Alerts + + + + + Error + This is an error alert — check it out! + + + + Warning + This is a warning alert — check it out! + + + + Info + This is an info alert — check it out! + + + + Success + This is a success alert — check it out! + + + + + ); +}; + +export default DescriptionAlerts; diff --git a/components/UIElements/Alerts/Filled.js b/components/UIElements/Alerts/Filled.js new file mode 100644 index 0000000..aa22cde --- /dev/null +++ b/components/UIElements/Alerts/Filled.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; +import Stack from '@mui/material/Stack'; + +const Filled = () => { + return ( + <> + + + Filled + + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Filled; diff --git a/components/UIElements/Alerts/Icons.js b/components/UIElements/Alerts/Icons.js new file mode 100644 index 0000000..201fb1e --- /dev/null +++ b/components/UIElements/Alerts/Icons.js @@ -0,0 +1,51 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import CheckIcon from '@mui/icons-material/Check'; +import CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline'; +import Stack from '@mui/material/Stack'; + +const Icons = () => { + return ( + <> + + + Icons + + + + } severity="success"> + This is a success alert — check it out! + + , + }} + > + This is a success alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Icons; diff --git a/components/UIElements/Alerts/Transition.js b/components/UIElements/Alerts/Transition.js new file mode 100644 index 0000000..c597ce3 --- /dev/null +++ b/components/UIElements/Alerts/Transition.js @@ -0,0 +1,68 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Alert from "@mui/material/Alert"; +import IconButton from '@mui/material/IconButton'; +import Collapse from '@mui/material/Collapse'; +import Button from '@mui/material/Button'; +import CloseIcon from '@mui/icons-material/Close'; + +const Transition = () => { + const [open, setOpen] = React.useState(true); + return ( + <> + + + Transition + + + + + { + setOpen(false); + }} + > + + + } + sx={{ mb: 2 }} + > + Close me! + + + + + + + ); +}; + +export default Transition; diff --git a/components/UIElements/Alerts/Variants.js b/components/UIElements/Alerts/Variants.js new file mode 100644 index 0000000..36cf49f --- /dev/null +++ b/components/UIElements/Alerts/Variants.js @@ -0,0 +1,48 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Alert from '@mui/material/Alert'; +import Stack from '@mui/material/Stack'; + +const Variants = () => { + return ( + <> + + + Variants + + + + + This is an error alert — check it out! + + + This is a warning alert — check it out! + + + This is an info alert — check it out! + + + This is a success alert — check it out! + + + + + ); +}; + +export default Variants; diff --git a/components/UIElements/Autocomplete/ComboBox.js b/components/UIElements/Autocomplete/ComboBox.js new file mode 100644 index 0000000..bee2572 --- /dev/null +++ b/components/UIElements/Autocomplete/ComboBox.js @@ -0,0 +1,172 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import TextField from "@mui/material/TextField"; +import Autocomplete from "@mui/material/Autocomplete"; + +const ComboBox = () => { + return ( + <> + + + Combo Box + + + } + /> + + + ); +}; + +export default ComboBox; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { label: "The Shawshank Redemption", year: 1994 }, + { label: "The Godfather", year: 1972 }, + { label: "The Godfather: Part II", year: 1974 }, + { label: "The Dark Knight", year: 2008 }, + { label: "12 Angry Men", year: 1957 }, + { label: "Schindler's List", year: 1993 }, + { label: "Pulp Fiction", year: 1994 }, + { + label: "The Lord of the Rings: The Return of the King", + year: 2003, + }, + { label: "The Good, the Bad and the Ugly", year: 1966 }, + { label: "Fight Club", year: 1999 }, + { + label: "The Lord of the Rings: The Fellowship of the Ring", + year: 2001, + }, + { + label: "Star Wars: Episode V - The Empire Strikes Back", + year: 1980, + }, + { label: "Forrest Gump", year: 1994 }, + { label: "Inception", year: 2010 }, + { + label: "The Lord of the Rings: The Two Towers", + year: 2002, + }, + { label: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { label: "Goodfellas", year: 1990 }, + { label: "The Matrix", year: 1999 }, + { label: "Seven Samurai", year: 1954 }, + { + label: "Star Wars: Episode IV - A New Hope", + year: 1977, + }, + { label: "City of God", year: 2002 }, + { label: "Se7en", year: 1995 }, + { label: "The Silence of the Lambs", year: 1991 }, + { label: "It's a Wonderful Life", year: 1946 }, + { label: "Life Is Beautiful", year: 1997 }, + { label: "The Usual Suspects", year: 1995 }, + { label: "Léon: The Professional", year: 1994 }, + { label: "Spirited Away", year: 2001 }, + { label: "Saving Private Ryan", year: 1998 }, + { label: "Once Upon a Time in the West", year: 1968 }, + { label: "American History X", year: 1998 }, + { label: "Interstellar", year: 2014 }, + { label: "Casablanca", year: 1942 }, + { label: "City Lights", year: 1931 }, + { label: "Psycho", year: 1960 }, + { label: "The Green Mile", year: 1999 }, + { label: "The Intouchables", year: 2011 }, + { label: "Modern Times", year: 1936 }, + { label: "Raiders of the Lost Ark", year: 1981 }, + { label: "Rear Window", year: 1954 }, + { label: "The Pianist", year: 2002 }, + { label: "The Departed", year: 2006 }, + { label: "Terminator 2: Judgment Day", year: 1991 }, + { label: "Back to the Future", year: 1985 }, + { label: "Whiplash", year: 2014 }, + { label: "Gladiator", year: 2000 }, + { label: "Memento", year: 2000 }, + { label: "The Prestige", year: 2006 }, + { label: "The Lion King", year: 1994 }, + { label: "Apocalypse Now", year: 1979 }, + { label: "Alien", year: 1979 }, + { label: "Sunset Boulevard", year: 1950 }, + { + label: + "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb", + year: 1964, + }, + { label: "The Great Dictator", year: 1940 }, + { label: "Cinema Paradiso", year: 1988 }, + { label: "The Lives of Others", year: 2006 }, + { label: "Grave of the Fireflies", year: 1988 }, + { label: "Paths of Glory", year: 1957 }, + { label: "Django Unchained", year: 2012 }, + { label: "The Shining", year: 1980 }, + { label: "WALL·E", year: 2008 }, + { label: "American Beauty", year: 1999 }, + { label: "The Dark Knight Rises", year: 2012 }, + { label: "Princess Mononoke", year: 1997 }, + { label: "Aliens", year: 1986 }, + { label: "Oldboy", year: 2003 }, + { label: "Once Upon a Time in America", year: 1984 }, + { label: "Witness for the Prosecution", year: 1957 }, + { label: "Das Boot", year: 1981 }, + { label: "Citizen Kane", year: 1941 }, + { label: "North by Northwest", year: 1959 }, + { label: "Vertigo", year: 1958 }, + { + label: "Star Wars: Episode VI - Return of the Jedi", + year: 1983, + }, + { label: "Reservoir Dogs", year: 1992 }, + { label: "Braveheart", year: 1995 }, + { label: "M", year: 1931 }, + { label: "Requiem for a Dream", year: 2000 }, + { label: "Amélie", year: 2001 }, + { label: "A Clockwork Orange", year: 1971 }, + { label: "Like Stars on Earth", year: 2007 }, + { label: "Taxi Driver", year: 1976 }, + { label: "Lawrence of Arabia", year: 1962 }, + { label: "Double Indemnity", year: 1944 }, + { + label: "Eternal Sunshine of the Spotless Mind", + year: 2004, + }, + { label: "Amadeus", year: 1984 }, + { label: "To Kill a Mockingbird", year: 1962 }, + { label: "Toy Story 3", year: 2010 }, + { label: "Logan", year: 2017 }, + { label: "Full Metal Jacket", year: 1987 }, + { label: "Dangal", year: 2016 }, + { label: "The Sting", year: 1973 }, + { label: "2001: A Space Odyssey", year: 1968 }, + { label: "Singin' in the Rain", year: 1952 }, + { label: "Toy Story", year: 1995 }, + { label: "Bicycle Thieves", year: 1948 }, + { label: "The Kid", year: 1921 }, + { label: "Inglourious Basterds", year: 2009 }, + { label: "Snatch", year: 2000 }, + { label: "3 Idiots", year: 2009 }, + { label: "Monty Python and the Holy Grail", year: 1975 }, +]; diff --git a/components/UIElements/Autocomplete/CountrySelect.js b/components/UIElements/Autocomplete/CountrySelect.js new file mode 100644 index 0000000..f3cebfc --- /dev/null +++ b/components/UIElements/Autocomplete/CountrySelect.js @@ -0,0 +1,494 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from "@mui/material/Box"; +import TextField from "@mui/material/TextField"; +import Autocomplete from "@mui/material/Autocomplete"; + +const CountrySelect = () => { + return ( + <> + + + Country Select + + + option.label} + renderOption={(props, option) => ( + img": { mr: 2, flexShrink: 0 } }} + {...props} + > + + {option.label} ({option.code}) +{option.phone} + + )} + renderInput={(params) => ( + + )} + /> + + + ); +}; + +export default CountrySelect; + +// From https://bitbucket.org/atlassian/atlaskit-mk-2/raw/4ad0e56649c3e6c973e226b7efaeb28cb240ccb0/packages/core/select/src/data/countries.js +const countries = [ + { code: "AD", label: "Andorra", phone: "376" }, + { + code: "AE", + label: "United Arab Emirates", + phone: "971", + }, + { code: "AF", label: "Afghanistan", phone: "93" }, + { + code: "AG", + label: "Antigua and Barbuda", + phone: "1-268", + }, + { code: "AI", label: "Anguilla", phone: "1-264" }, + { code: "AL", label: "Albania", phone: "355" }, + { code: "AM", label: "Armenia", phone: "374" }, + { code: "AO", label: "Angola", phone: "244" }, + { code: "AQ", label: "Antarctica", phone: "672" }, + { code: "AR", label: "Argentina", phone: "54" }, + { code: "AS", label: "American Samoa", phone: "1-684" }, + { code: "AT", label: "Austria", phone: "43" }, + { + code: "AU", + label: "Australia", + phone: "61", + suggested: true, + }, + { code: "AW", label: "Aruba", phone: "297" }, + { code: "AX", label: "Alland Islands", phone: "358" }, + { code: "AZ", label: "Azerbaijan", phone: "994" }, + { + code: "BA", + label: "Bosnia and Herzegovina", + phone: "387", + }, + { code: "BB", label: "Barbados", phone: "1-246" }, + { code: "BD", label: "Bangladesh", phone: "880" }, + { code: "BE", label: "Belgium", phone: "32" }, + { code: "BF", label: "Burkina Faso", phone: "226" }, + { code: "BG", label: "Bulgaria", phone: "359" }, + { code: "BH", label: "Bahrain", phone: "973" }, + { code: "BI", label: "Burundi", phone: "257" }, + { code: "BJ", label: "Benin", phone: "229" }, + { code: "BL", label: "Saint Barthelemy", phone: "590" }, + { code: "BM", label: "Bermuda", phone: "1-441" }, + { code: "BN", label: "Brunei Darussalam", phone: "673" }, + { code: "BO", label: "Bolivia", phone: "591" }, + { code: "BR", label: "Brazil", phone: "55" }, + { code: "BS", label: "Bahamas", phone: "1-242" }, + { code: "BT", label: "Bhutan", phone: "975" }, + { code: "BV", label: "Bouvet Island", phone: "47" }, + { code: "BW", label: "Botswana", phone: "267" }, + { code: "BY", label: "Belarus", phone: "375" }, + { code: "BZ", label: "Belize", phone: "501" }, + { + code: "CA", + label: "Canada", + phone: "1", + suggested: true, + }, + { + code: "CC", + label: "Cocos (Keeling) Islands", + phone: "61", + }, + { + code: "CD", + label: "Congo, Democratic Republic of the", + phone: "243", + }, + { + code: "CF", + label: "Central African Republic", + phone: "236", + }, + { + code: "CG", + label: "Congo, Republic of the", + phone: "242", + }, + { code: "CH", label: "Switzerland", phone: "41" }, + { code: "CI", label: "Cote d'Ivoire", phone: "225" }, + { code: "CK", label: "Cook Islands", phone: "682" }, + { code: "CL", label: "Chile", phone: "56" }, + { code: "CM", label: "Cameroon", phone: "237" }, + { code: "CN", label: "China", phone: "86" }, + { code: "CO", label: "Colombia", phone: "57" }, + { code: "CR", label: "Costa Rica", phone: "506" }, + { code: "CU", label: "Cuba", phone: "53" }, + { code: "CV", label: "Cape Verde", phone: "238" }, + { code: "CW", label: "Curacao", phone: "599" }, + { code: "CX", label: "Christmas Island", phone: "61" }, + { code: "CY", label: "Cyprus", phone: "357" }, + { code: "CZ", label: "Czech Republic", phone: "420" }, + { + code: "DE", + label: "Germany", + phone: "49", + suggested: true, + }, + { code: "DJ", label: "Djibouti", phone: "253" }, + { code: "DK", label: "Denmark", phone: "45" }, + { code: "DM", label: "Dominica", phone: "1-767" }, + { + code: "DO", + label: "Dominican Republic", + phone: "1-809", + }, + { code: "DZ", label: "Algeria", phone: "213" }, + { code: "EC", label: "Ecuador", phone: "593" }, + { code: "EE", label: "Estonia", phone: "372" }, + { code: "EG", label: "Egypt", phone: "20" }, + { code: "EH", label: "Western Sahara", phone: "212" }, + { code: "ER", label: "Eritrea", phone: "291" }, + { code: "ES", label: "Spain", phone: "34" }, + { code: "ET", label: "Ethiopia", phone: "251" }, + { code: "FI", label: "Finland", phone: "358" }, + { code: "FJ", label: "Fiji", phone: "679" }, + { + code: "FK", + label: "Falkland Islands (Malvinas)", + phone: "500", + }, + { + code: "FM", + label: "Micronesia, Federated States of", + phone: "691", + }, + { code: "FO", label: "Faroe Islands", phone: "298" }, + { + code: "FR", + label: "France", + phone: "33", + suggested: true, + }, + { code: "GA", label: "Gabon", phone: "241" }, + { code: "GB", label: "United Kingdom", phone: "44" }, + { code: "GD", label: "Grenada", phone: "1-473" }, + { code: "GE", label: "Georgia", phone: "995" }, + { code: "GF", label: "French Guiana", phone: "594" }, + { code: "GG", label: "Guernsey", phone: "44" }, + { code: "GH", label: "Ghana", phone: "233" }, + { code: "GI", label: "Gibraltar", phone: "350" }, + { code: "GL", label: "Greenland", phone: "299" }, + { code: "GM", label: "Gambia", phone: "220" }, + { code: "GN", label: "Guinea", phone: "224" }, + { code: "GP", label: "Guadeloupe", phone: "590" }, + { code: "GQ", label: "Equatorial Guinea", phone: "240" }, + { code: "GR", label: "Greece", phone: "30" }, + { + code: "GS", + label: "South Georgia and the South Sandwich Islands", + phone: "500", + }, + { code: "GT", label: "Guatemala", phone: "502" }, + { code: "GU", label: "Guam", phone: "1-671" }, + { code: "GW", label: "Guinea-Bissau", phone: "245" }, + { code: "GY", label: "Guyana", phone: "592" }, + { code: "HK", label: "Hong Kong", phone: "852" }, + { + code: "HM", + label: "Heard Island and McDonald Islands", + phone: "672", + }, + { code: "HN", label: "Honduras", phone: "504" }, + { code: "HR", label: "Croatia", phone: "385" }, + { code: "HT", label: "Haiti", phone: "509" }, + { code: "HU", label: "Hungary", phone: "36" }, + { code: "ID", label: "Indonesia", phone: "62" }, + { code: "IE", label: "Ireland", phone: "353" }, + { code: "IL", label: "Israel", phone: "972" }, + { code: "IM", label: "Isle of Man", phone: "44" }, + { code: "IN", label: "India", phone: "91" }, + { + code: "IO", + label: "British Indian Ocean Territory", + phone: "246", + }, + { code: "IQ", label: "Iraq", phone: "964" }, + { + code: "IR", + label: "Iran, Islamic Republic of", + phone: "98", + }, + { code: "IS", label: "Iceland", phone: "354" }, + { code: "IT", label: "Italy", phone: "39" }, + { code: "JE", label: "Jersey", phone: "44" }, + { code: "JM", label: "Jamaica", phone: "1-876" }, + { code: "JO", label: "Jordan", phone: "962" }, + { + code: "JP", + label: "Japan", + phone: "81", + suggested: true, + }, + { code: "KE", label: "Kenya", phone: "254" }, + { code: "KG", label: "Kyrgyzstan", phone: "996" }, + { code: "KH", label: "Cambodia", phone: "855" }, + { code: "KI", label: "Kiribati", phone: "686" }, + { code: "KM", label: "Comoros", phone: "269" }, + { + code: "KN", + label: "Saint Kitts and Nevis", + phone: "1-869", + }, + { + code: "KP", + label: "Korea, Democratic People's Republic of", + phone: "850", + }, + { code: "KR", label: "Korea, Republic of", phone: "82" }, + { code: "KW", label: "Kuwait", phone: "965" }, + { code: "KY", label: "Cayman Islands", phone: "1-345" }, + { code: "KZ", label: "Kazakhstan", phone: "7" }, + { + code: "LA", + label: "Lao People's Democratic Republic", + phone: "856", + }, + { code: "LB", label: "Lebanon", phone: "961" }, + { code: "LC", label: "Saint Lucia", phone: "1-758" }, + { code: "LI", label: "Liechtenstein", phone: "423" }, + { code: "LK", label: "Sri Lanka", phone: "94" }, + { code: "LR", label: "Liberia", phone: "231" }, + { code: "LS", label: "Lesotho", phone: "266" }, + { code: "LT", label: "Lithuania", phone: "370" }, + { code: "LU", label: "Luxembourg", phone: "352" }, + { code: "LV", label: "Latvia", phone: "371" }, + { code: "LY", label: "Libya", phone: "218" }, + { code: "MA", label: "Morocco", phone: "212" }, + { code: "MC", label: "Monaco", phone: "377" }, + { + code: "MD", + label: "Moldova, Republic of", + phone: "373", + }, + { code: "ME", label: "Montenegro", phone: "382" }, + { + code: "MF", + label: "Saint Martin (French part)", + phone: "590", + }, + { code: "MG", label: "Madagascar", phone: "261" }, + { code: "MH", label: "Marshall Islands", phone: "692" }, + { + code: "MK", + label: "Macedonia, the Former Yugoslav Republic of", + phone: "389", + }, + { code: "ML", label: "Mali", phone: "223" }, + { code: "MM", label: "Myanmar", phone: "95" }, + { code: "MN", label: "Mongolia", phone: "976" }, + { code: "MO", label: "Macao", phone: "853" }, + { + code: "MP", + label: "Northern Mariana Islands", + phone: "1-670", + }, + { code: "MQ", label: "Martinique", phone: "596" }, + { code: "MR", label: "Mauritania", phone: "222" }, + { code: "MS", label: "Montserrat", phone: "1-664" }, + { code: "MT", label: "Malta", phone: "356" }, + { code: "MU", label: "Mauritius", phone: "230" }, + { code: "MV", label: "Maldives", phone: "960" }, + { code: "MW", label: "Malawi", phone: "265" }, + { code: "MX", label: "Mexico", phone: "52" }, + { code: "MY", label: "Malaysia", phone: "60" }, + { code: "MZ", label: "Mozambique", phone: "258" }, + { code: "NA", label: "Namibia", phone: "264" }, + { code: "NC", label: "New Caledonia", phone: "687" }, + { code: "NE", label: "Niger", phone: "227" }, + { code: "NF", label: "Norfolk Island", phone: "672" }, + { code: "NG", label: "Nigeria", phone: "234" }, + { code: "NI", label: "Nicaragua", phone: "505" }, + { code: "NL", label: "Netherlands", phone: "31" }, + { code: "NO", label: "Norway", phone: "47" }, + { code: "NP", label: "Nepal", phone: "977" }, + { code: "NR", label: "Nauru", phone: "674" }, + { code: "NU", label: "Niue", phone: "683" }, + { code: "NZ", label: "New Zealand", phone: "64" }, + { code: "OM", label: "Oman", phone: "968" }, + { code: "PA", label: "Panama", phone: "507" }, + { code: "PE", label: "Peru", phone: "51" }, + { code: "PF", label: "French Polynesia", phone: "689" }, + { code: "PG", label: "Papua New Guinea", phone: "675" }, + { code: "PH", label: "Philippines", phone: "63" }, + { code: "PK", label: "Pakistan", phone: "92" }, + { code: "PL", label: "Poland", phone: "48" }, + { + code: "PM", + label: "Saint Pierre and Miquelon", + phone: "508", + }, + { code: "PN", label: "Pitcairn", phone: "870" }, + { code: "PR", label: "Puerto Rico", phone: "1" }, + { + code: "PS", + label: "Palestine, State of", + phone: "970", + }, + { code: "PT", label: "Portugal", phone: "351" }, + { code: "PW", label: "Palau", phone: "680" }, + { code: "PY", label: "Paraguay", phone: "595" }, + { code: "QA", label: "Qatar", phone: "974" }, + { code: "RE", label: "Reunion", phone: "262" }, + { code: "RO", label: "Romania", phone: "40" }, + { code: "RS", label: "Serbia", phone: "381" }, + { code: "RU", label: "Russian Federation", phone: "7" }, + { code: "RW", label: "Rwanda", phone: "250" }, + { code: "SA", label: "Saudi Arabia", phone: "966" }, + { code: "SB", label: "Solomon Islands", phone: "677" }, + { code: "SC", label: "Seychelles", phone: "248" }, + { code: "SD", label: "Sudan", phone: "249" }, + { code: "SE", label: "Sweden", phone: "46" }, + { code: "SG", label: "Singapore", phone: "65" }, + { code: "SH", label: "Saint Helena", phone: "290" }, + { code: "SI", label: "Slovenia", phone: "386" }, + { + code: "SJ", + label: "Svalbard and Jan Mayen", + phone: "47", + }, + { code: "SK", label: "Slovakia", phone: "421" }, + { code: "SL", label: "Sierra Leone", phone: "232" }, + { code: "SM", label: "San Marino", phone: "378" }, + { code: "SN", label: "Senegal", phone: "221" }, + { code: "SO", label: "Somalia", phone: "252" }, + { code: "SR", label: "Suriname", phone: "597" }, + { code: "SS", label: "South Sudan", phone: "211" }, + { + code: "ST", + label: "Sao Tome and Principe", + phone: "239", + }, + { code: "SV", label: "El Salvador", phone: "503" }, + { + code: "SX", + label: "Sint Maarten (Dutch part)", + phone: "1-721", + }, + { + code: "SY", + label: "Syrian Arab Republic", + phone: "963", + }, + { code: "SZ", label: "Swaziland", phone: "268" }, + { + code: "TC", + label: "Turks and Caicos Islands", + phone: "1-649", + }, + { code: "TD", label: "Chad", phone: "235" }, + { + code: "TF", + label: "French Southern Territories", + phone: "262", + }, + { code: "TG", label: "Togo", phone: "228" }, + { code: "TH", label: "Thailand", phone: "66" }, + { code: "TJ", label: "Tajikistan", phone: "992" }, + { code: "TK", label: "Tokelau", phone: "690" }, + { code: "TL", label: "Timor-Leste", phone: "670" }, + { code: "TM", label: "Turkmenistan", phone: "993" }, + { code: "TN", label: "Tunisia", phone: "216" }, + { code: "TO", label: "Tonga", phone: "676" }, + { code: "TR", label: "Turkey", phone: "90" }, + { + code: "TT", + label: "Trinidad and Tobago", + phone: "1-868", + }, + { code: "TV", label: "Tuvalu", phone: "688" }, + { + code: "TW", + label: "Taiwan, Republic of China", + phone: "886", + }, + { + code: "TZ", + label: "United Republic of Tanzania", + phone: "255", + }, + { code: "UA", label: "Ukraine", phone: "380" }, + { code: "UG", label: "Uganda", phone: "256" }, + { + code: "US", + label: "United States", + phone: "1", + suggested: true, + }, + { code: "UY", label: "Uruguay", phone: "598" }, + { code: "UZ", label: "Uzbekistan", phone: "998" }, + { + code: "VA", + label: "Holy See (Vatican City State)", + phone: "379", + }, + { + code: "VC", + label: "Saint Vincent and the Grenadines", + phone: "1-784", + }, + { code: "VE", label: "Venezuela", phone: "58" }, + { + code: "VG", + label: "British Virgin Islands", + phone: "1-284", + }, + { + code: "VI", + label: "US Virgin Islands", + phone: "1-340", + }, + { code: "VN", label: "Vietnam", phone: "84" }, + { code: "VU", label: "Vanuatu", phone: "678" }, + { code: "WF", label: "Wallis and Futuna", phone: "681" }, + { code: "WS", label: "Samoa", phone: "685" }, + { code: "XK", label: "Kosovo", phone: "383" }, + { code: "YE", label: "Yemen", phone: "967" }, + { code: "YT", label: "Mayotte", phone: "262" }, + { code: "ZA", label: "South Africa", phone: "27" }, + { code: "ZM", label: "Zambia", phone: "260" }, + { code: "ZW", label: "Zimbabwe", phone: "263" }, +]; diff --git a/components/UIElements/Autocomplete/CustomizeTextareaComponent.js b/components/UIElements/Autocomplete/CustomizeTextareaComponent.js new file mode 100644 index 0000000..17d51e2 --- /dev/null +++ b/components/UIElements/Autocomplete/CustomizeTextareaComponent.js @@ -0,0 +1,46 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; + +const CustomizeTextareaComponent = () => { + return ( + <> + + + Customize Textarea Component + + + + + + ); +}; + +export default CustomizeTextareaComponent; diff --git a/components/UIElements/Autocomplete/CustomizedHook.js b/components/UIElements/Autocomplete/CustomizedHook.js new file mode 100644 index 0000000..5ee77a2 --- /dev/null +++ b/components/UIElements/Autocomplete/CustomizedHook.js @@ -0,0 +1,363 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from "prop-types"; +import { useAutocomplete } from '@mui/base/useAutocomplete'; +import CheckIcon from "@mui/icons-material/Check"; +import CloseIcon from "@mui/icons-material/Close"; +import { styled } from "@mui/material/styles"; +import { autocompleteClasses } from "@mui/material/Autocomplete"; + +const Root = styled("div")( + ({ theme }) => ` + color: ${ + theme.palette.mode === "dark" ? "rgba(255,255,255,0.65)" : "rgba(0,0,0,.85)" + }; + font-size: 14px; +` +); + +const Label = styled("label")` + padding: 0 0 4px; + line-height: 1.5; + display: block; +`; + +const InputWrapper = styled("div")( + ({ theme }) => ` + width: 300px; + border: 1px solid ${theme.palette.mode === "dark" ? "#434343" : "#d9d9d9"}; + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + border-radius: 4px; + padding: 1px; + display: flex; + flex-wrap: wrap; + + &:hover { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + } + + &.focused { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2); + } + + & input { + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + color: ${ + theme.palette.mode === "dark" + ? "rgba(255,255,255,0.65)" + : "rgba(0,0,0,.85)" + }; + height: 30px; + box-sizing: border-box; + padding: 4px 6px; + width: 0; + min-width: 30px; + flex-grow: 1; + border: 0; + margin: 0; + outline: 0; + } +` +); + +function Tag(props) { + const { label, onDelete, ...other } = props; + return ( +
+ {label} + +
+ ); +} + +Tag.propTypes = { + label: PropTypes.string.isRequired, + onDelete: PropTypes.func.isRequired, +}; + +const StyledTag = styled(Tag)( + ({ theme }) => ` + display: flex; + align-items: center; + height: 24px; + margin: 2px; + line-height: 22px; + background-color: ${ + theme.palette.mode === "dark" ? "rgba(255,255,255,0.08)" : "#fafafa" + }; + border: 1px solid ${theme.palette.mode === "dark" ? "#303030" : "#e8e8e8"}; + border-radius: 2px; + box-sizing: content-box; + padding: 0 4px 0 10px; + outline: 0; + overflow: hidden; + + &:focus { + border-color: ${theme.palette.mode === "dark" ? "#177ddc" : "#40a9ff"}; + background-color: ${theme.palette.mode === "dark" ? "#003b57" : "#e6f7ff"}; + } + + & span { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + & svg { + font-size: 12px; + cursor: pointer; + padding: 4px; + } +` +); + +const Listbox = styled("ul")( + ({ theme }) => ` + width: 300px; + margin: 2px 0 0; + padding: 0; + position: absolute; + list-style: none; + background-color: ${theme.palette.mode === "dark" ? "#141414" : "#fff"}; + overflow: auto; + max-height: 250px; + border-radius: 4px; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); + z-index: 1; + + & li { + padding: 5px 12px; + display: flex; + + & span { + flex-grow: 1; + } + + & svg { + color: transparent; + } + } + + & li[aria-selected='true'] { + background-color: ${theme.palette.mode === "dark" ? "#2b2b2b" : "#fafafa"}; + font-weight: 500; + + & svg { + color: #1890ff; + } + } + + & li.${autocompleteClasses.focused} { + background-color: ${theme.palette.mode === "dark" ? "#003b57" : "#e6f7ff"}; + cursor: pointer; + + & svg { + color: currentColor; + } + } +` +); + +const CustomizedHook = () => { + const { + getRootProps, + getInputLabelProps, + getInputProps, + getTagProps, + getListboxProps, + getOptionProps, + groupedOptions, + value, + focused, + setAnchorEl, + } = useAutocomplete({ + id: "customized-hook-demo", + defaultValue: [top100Films[1]], + multiple: true, + options: top100Films, + getOptionLabel: (option) => option.title, + }); + + return ( + <> + + + Customized Hook + + + +
+ + + {value.map((option, index) => ( + + ))} + + + +
+ {groupedOptions.length > 0 ? ( + + {groupedOptions.map((option, index) => ( +
  • + {option.title} + +
  • + ))} +
    + ) : null} +
    +
    + + ); +}; + +export default CustomizedHook; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { title: "The Shawshank Redemption", year: 1994 }, + { title: "The Godfather", year: 1972 }, + { title: "The Godfather: Part II", year: 1974 }, + { title: "The Dark Knight", year: 2008 }, + { title: "12 Angry Men", year: 1957 }, + { title: "Schindler's List", year: 1993 }, + { title: "Pulp Fiction", year: 1994 }, + { + title: "The Lord of the Rings: The Return of the King", + year: 2003, + }, + { title: "The Good, the Bad and the Ugly", year: 1966 }, + { title: "Fight Club", year: 1999 }, + { + title: "The Lord of the Rings: The Fellowship of the Ring", + year: 2001, + }, + { + title: "Star Wars: Episode V - The Empire Strikes Back", + year: 1980, + }, + { title: "Forrest Gump", year: 1994 }, + { title: "Inception", year: 2010 }, + { + title: "The Lord of the Rings: The Two Towers", + year: 2002, + }, + { title: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { title: "Goodfellas", year: 1990 }, + { title: "The Matrix", year: 1999 }, + { title: "Seven Samurai", year: 1954 }, + { + title: "Star Wars: Episode IV - A New Hope", + year: 1977, + }, + { title: "City of God", year: 2002 }, + { title: "Se7en", year: 1995 }, + { title: "The Silence of the Lambs", year: 1991 }, + { title: "It's a Wonderful Life", year: 1946 }, + { title: "Life Is Beautiful", year: 1997 }, + { title: "The Usual Suspects", year: 1995 }, + { title: "Léon: The Professional", year: 1994 }, + { title: "Spirited Away", year: 2001 }, + { title: "Saving Private Ryan", year: 1998 }, + { title: "Once Upon a Time in the West", year: 1968 }, + { title: "American History X", year: 1998 }, + { title: "Interstellar", year: 2014 }, + { title: "Casablanca", year: 1942 }, + { title: "City Lights", year: 1931 }, + { title: "Psycho", year: 1960 }, + { title: "The Green Mile", year: 1999 }, + { title: "The Intouchables", year: 2011 }, + { title: "Modern Times", year: 1936 }, + { title: "Raiders of the Lost Ark", year: 1981 }, + { title: "Rear Window", year: 1954 }, + { title: "The Pianist", year: 2002 }, + { title: "The Departed", year: 2006 }, + { title: "Terminator 2: Judgment Day", year: 1991 }, + { title: "Back to the Future", year: 1985 }, + { title: "Whiplash", year: 2014 }, + { title: "Gladiator", year: 2000 }, + { title: "Memento", year: 2000 }, + { title: "The Prestige", year: 2006 }, + { title: "The Lion King", year: 1994 }, + { title: "Apocalypse Now", year: 1979 }, + { title: "Alien", year: 1979 }, + { title: "Sunset Boulevard", year: 1950 }, + { + title: + "Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb", + year: 1964, + }, + { title: "The Great Dictator", year: 1940 }, + { title: "Cinema Paradiso", year: 1988 }, + { title: "The Lives of Others", year: 2006 }, + { title: "Grave of the Fireflies", year: 1988 }, + { title: "Paths of Glory", year: 1957 }, + { title: "Django Unchained", year: 2012 }, + { title: "The Shining", year: 1980 }, + { title: "WALL·E", year: 2008 }, + { title: "American Beauty", year: 1999 }, + { title: "The Dark Knight Rises", year: 2012 }, + { title: "Princess Mononoke", year: 1997 }, + { title: "Aliens", year: 1986 }, + { title: "Oldboy", year: 2003 }, + { title: "Once Upon a Time in America", year: 1984 }, + { title: "Witness for the Prosecution", year: 1957 }, + { title: "Das Boot", year: 1981 }, + { title: "Citizen Kane", year: 1941 }, + { title: "North by Northwest", year: 1959 }, + { title: "Vertigo", year: 1958 }, + { + title: "Star Wars: Episode VI - Return of the Jedi", + year: 1983, + }, + { title: "Reservoir Dogs", year: 1992 }, + { title: "Braveheart", year: 1995 }, + { title: "M", year: 1931 }, + { title: "Requiem for a Dream", year: 2000 }, + { title: "Amélie", year: 2001 }, + { title: "A Clockwork Orange", year: 1971 }, + { title: "Like Stars on Earth", year: 2007 }, + { title: "Taxi Driver", year: 1976 }, + { title: "Lawrence of Arabia", year: 1962 }, + { title: "Double Indemnity", year: 1944 }, + { + title: "Eternal Sunshine of the Spotless Mind", + year: 2004, + }, + { title: "Amadeus", year: 1984 }, + { title: "To Kill a Mockingbird", year: 1962 }, + { title: "Toy Story 3", year: 2010 }, + { title: "Logan", year: 2017 }, + { title: "Full Metal Jacket", year: 1987 }, + { title: "Dangal", year: 2016 }, + { title: "The Sting", year: 1973 }, + { title: "2001: A Space Odyssey", year: 1968 }, + { title: "Singin' in the Rain", year: 1952 }, + { title: "Toy Story", year: 1995 }, + { title: "Bicycle Thieves", year: 1948 }, + { title: "The Kid", year: 1921 }, + { title: "Inglourious Basterds", year: 2009 }, + { title: "Snatch", year: 2000 }, + { title: "3 Idiots", year: 2009 }, + { title: "Monty Python and the Holy Grail", year: 1975 }, +]; diff --git a/components/UIElements/Autocomplete/LimitTags.js b/components/UIElements/Autocomplete/LimitTags.js new file mode 100644 index 0000000..231fa07 --- /dev/null +++ b/components/UIElements/Autocomplete/LimitTags.js @@ -0,0 +1,174 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Autocomplete from '@mui/material/Autocomplete'; +import TextField from '@mui/material/TextField'; + +const LimitTags= () => { + return ( + <> + + + LimitTags + + + option.title} + defaultValue={[top100Films[13], top100Films[12], top100Films[11]]} + renderInput={(params) => ( + + )} + sx={{ width: '500px' }} + /> + + + ); +}; + +export default LimitTags; + +// Top 100 films as rated by IMDb users. http://www.imdb.com/chart/top +const top100Films = [ + { title: 'The Shawshank Redemption', year: 1994 }, + { title: 'The Godfather', year: 1972 }, + { title: 'The Godfather: Part II', year: 1974 }, + { title: 'The Dark Knight', year: 2008 }, + { title: '12 Angry Men', year: 1957 }, + { title: "Schindler's List", year: 1993 }, + { title: 'Pulp Fiction', year: 1994 }, + { + title: 'The Lord of the Rings: The Return of the King', + year: 2003, + }, + { title: 'The Good, the Bad and the Ugly', year: 1966 }, + { title: 'Fight Club', year: 1999 }, + { + title: 'The Lord of the Rings: The Fellowship of the Ring', + year: 2001, + }, + { + title: 'Star Wars: Episode V - The Empire Strikes Back', + year: 1980, + }, + { title: 'Forrest Gump', year: 1994 }, + { title: 'Inception', year: 2010 }, + { + title: 'The Lord of the Rings: The Two Towers', + year: 2002, + }, + { title: "One Flew Over the Cuckoo's Nest", year: 1975 }, + { title: 'Goodfellas', year: 1990 }, + { title: 'The Matrix', year: 1999 }, + { title: 'Seven Samurai', year: 1954 }, + { + title: 'Star Wars: Episode IV - A New Hope', + year: 1977, + }, + { title: 'City of God', year: 2002 }, + { title: 'Se7en', year: 1995 }, + { title: 'The Silence of the Lambs', year: 1991 }, + { title: "It's a Wonderful Life", year: 1946 }, + { title: 'Life Is Beautiful', year: 1997 }, + { title: 'The Usual Suspects', year: 1995 }, + { title: 'Léon: The Professional', year: 1994 }, + { title: 'Spirited Away', year: 2001 }, + { title: 'Saving Private Ryan', year: 1998 }, + { title: 'Once Upon a Time in the West', year: 1968 }, + { title: 'American History X', year: 1998 }, + { title: 'Interstellar', year: 2014 }, + { title: 'Casablanca', year: 1942 }, + { title: 'City Lights', year: 1931 }, + { title: 'Psycho', year: 1960 }, + { title: 'The Green Mile', year: 1999 }, + { title: 'The Intouchables', year: 2011 }, + { title: 'Modern Times', year: 1936 }, + { title: 'Raiders of the Lost Ark', year: 1981 }, + { title: 'Rear Window', year: 1954 }, + { title: 'The Pianist', year: 2002 }, + { title: 'The Departed', year: 2006 }, + { title: 'Terminator 2: Judgment Day', year: 1991 }, + { title: 'Back to the Future', year: 1985 }, + { title: 'Whiplash', year: 2014 }, + { title: 'Gladiator', year: 2000 }, + { title: 'Memento', year: 2000 }, + { title: 'The Prestige', year: 2006 }, + { title: 'The Lion King', year: 1994 }, + { title: 'Apocalypse Now', year: 1979 }, + { title: 'Alien', year: 1979 }, + { title: 'Sunset Boulevard', year: 1950 }, + { + title: 'Dr. Strangelove or: How I Learned to Stop Worrying and Love the Bomb', + year: 1964, + }, + { title: 'The Great Dictator', year: 1940 }, + { title: 'Cinema Paradiso', year: 1988 }, + { title: 'The Lives of Others', year: 2006 }, + { title: 'Grave of the Fireflies', year: 1988 }, + { title: 'Paths of Glory', year: 1957 }, + { title: 'Django Unchained', year: 2012 }, + { title: 'The Shining', year: 1980 }, + { title: 'WALL·E', year: 2008 }, + { title: 'American Beauty', year: 1999 }, + { title: 'The Dark Knight Rises', year: 2012 }, + { title: 'Princess Mononoke', year: 1997 }, + { title: 'Aliens', year: 1986 }, + { title: 'Oldboy', year: 2003 }, + { title: 'Once Upon a Time in America', year: 1984 }, + { title: 'Witness for the Prosecution', year: 1957 }, + { title: 'Das Boot', year: 1981 }, + { title: 'Citizen Kane', year: 1941 }, + { title: 'North by Northwest', year: 1959 }, + { title: 'Vertigo', year: 1958 }, + { + title: 'Star Wars: Episode VI - Return of the Jedi', + year: 1983, + }, + { title: 'Reservoir Dogs', year: 1992 }, + { title: 'Braveheart', year: 1995 }, + { title: 'M', year: 1931 }, + { title: 'Requiem for a Dream', year: 2000 }, + { title: 'Amélie', year: 2001 }, + { title: 'A Clockwork Orange', year: 1971 }, + { title: 'Like Stars on Earth', year: 2007 }, + { title: 'Taxi Driver', year: 1976 }, + { title: 'Lawrence of Arabia', year: 1962 }, + { title: 'Double Indemnity', year: 1944 }, + { + title: 'Eternal Sunshine of the Spotless Mind', + year: 2004, + }, + { title: 'Amadeus', year: 1984 }, + { title: 'To Kill a Mockingbird', year: 1962 }, + { title: 'Toy Story 3', year: 2010 }, + { title: 'Logan', year: 2017 }, + { title: 'Full Metal Jacket', year: 1987 }, + { title: 'Dangal', year: 2016 }, + { title: 'The Sting', year: 1973 }, + { title: '2001: A Space Odyssey', year: 1968 }, + { title: "Singin' in the Rain", year: 1952 }, + { title: 'Toy Story', year: 1995 }, + { title: 'Bicycle Thieves', year: 1948 }, + { title: 'The Kid', year: 1921 }, + { title: 'Inglourious Basterds', year: 2009 }, + { title: 'Snatch', year: 2000 }, + { title: '3 Idiots', year: 2009 }, + { title: 'Monty Python and the Holy Grail', year: 1975 }, +]; \ No newline at end of file diff --git a/components/UIElements/Avatar/GroupUserExample.js b/components/UIElements/Avatar/GroupUserExample.js new file mode 100644 index 0000000..a1c1d2a --- /dev/null +++ b/components/UIElements/Avatar/GroupUserExample.js @@ -0,0 +1,64 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Button from '@mui/material/Button'; + +const GroupUserExample = () => { + return ( + <> + + + Group User Example + + + + + + + + + + + + + + + + + + + + ); +}; + +export default GroupUserExample; diff --git a/components/UIElements/Avatar/Grouped.js b/components/UIElements/Avatar/Grouped.js new file mode 100644 index 0000000..a0ff0b7 --- /dev/null +++ b/components/UIElements/Avatar/Grouped.js @@ -0,0 +1,43 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; + +const Grouped = () => { + return ( + <> + + + Grouped + + + + + + + + + + + + ); +}; + +export default Grouped; diff --git a/components/UIElements/Avatar/IconAvatars.js b/components/UIElements/Avatar/IconAvatars.js new file mode 100644 index 0000000..1bbb1f7 --- /dev/null +++ b/components/UIElements/Avatar/IconAvatars.js @@ -0,0 +1,61 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { deepOrange, green, pink, red } from '@mui/material/colors'; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; +import FolderIcon from '@mui/icons-material/Folder'; +import PageviewIcon from '@mui/icons-material/Pageview'; +import AssignmentIcon from '@mui/icons-material/Assignment'; +import PersonIcon from '@mui/icons-material/Person'; +import DeleteIcon from '@mui/icons-material/Delete'; + +const IconAvatars = () => { + return ( + <> + + + Icon Avatars + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default IconAvatars; diff --git a/components/UIElements/Avatar/ImageAvatars.js b/components/UIElements/Avatar/ImageAvatars.js new file mode 100644 index 0000000..bb8fbdf --- /dev/null +++ b/components/UIElements/Avatar/ImageAvatars.js @@ -0,0 +1,45 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const ImageAvatars = () => { + return ( + <> + + + Image Avatars + + + + + + + + + + + + ); +}; + +export default ImageAvatars; diff --git a/components/UIElements/Avatar/LetterAvatars.js b/components/UIElements/Avatar/LetterAvatars.js new file mode 100644 index 0000000..0873334 --- /dev/null +++ b/components/UIElements/Avatar/LetterAvatars.js @@ -0,0 +1,68 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +function stringToColor(string) { + let hash = 0; + let i; + + /* eslint-disable no-bitwise */ + for (i = 0; i < string.length; i += 1) { + hash = string.charCodeAt(i) + ((hash << 5) - hash); + } + + let color = '#'; + + for (i = 0; i < 3; i += 1) { + const value = (hash >> (i * 8)) & 0xff; + color += `00${value.toString(16)}`.slice(-2); + } + /* eslint-enable no-bitwise */ + + return color; +} + +function stringAvatar(name) { + return { + sx: { + bgcolor: stringToColor(name), + }, + children: `${name.split(' ')[0][0]}${name.split(' ')[1][0]}`, + }; +} + +const LetterAvatars = () => { + return ( + <> + + + Letter Avatars + + + + + + + + + + ); +}; + +export default LetterAvatars; diff --git a/components/UIElements/Avatar/SingleUserExample.js b/components/UIElements/Avatar/SingleUserExample.js new file mode 100644 index 0000000..950a52b --- /dev/null +++ b/components/UIElements/Avatar/SingleUserExample.js @@ -0,0 +1,133 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import IconButton from '@mui/material/IconButton'; +import FacebookIcon from '@mui/icons-material/Facebook'; +import TwitterIcon from '@mui/icons-material/Twitter'; +import LinkedInIcon from '@mui/icons-material/LinkedIn'; +import Stack from '@mui/material/Stack'; + +const SingleUserExample = () => { + return ( + <> + + + Single User Example + + + + + User + + + + Andrew Burns + + + + Programmer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default SingleUserExample; diff --git a/components/UIElements/Avatar/SizesAvatars.js b/components/UIElements/Avatar/SizesAvatars.js new file mode 100644 index 0000000..a84059d --- /dev/null +++ b/components/UIElements/Avatar/SizesAvatars.js @@ -0,0 +1,65 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const SizesAvatars = () => { + return ( + <> + + + Sizes Avatars + + + + + + + + + + + + + + + + ); +}; + +export default SizesAvatars; diff --git a/components/UIElements/Avatar/TotalAvatars.js b/components/UIElements/Avatar/TotalAvatars.js new file mode 100644 index 0000000..6ab8b2b --- /dev/null +++ b/components/UIElements/Avatar/TotalAvatars.js @@ -0,0 +1,40 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; + +const TotalAvatars = () => { + return ( + <> + + + Total Avatars + + + + + + + + + + + ); +}; + +export default TotalAvatars; diff --git a/components/UIElements/Avatar/WithBadge.js b/components/UIElements/Avatar/WithBadge.js new file mode 100644 index 0000000..d5119d3 --- /dev/null +++ b/components/UIElements/Avatar/WithBadge.js @@ -0,0 +1,89 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Badge from '@mui/material/Badge'; +import Avatar from '@mui/material/Avatar'; +import Stack from '@mui/material/Stack'; + +const StyledBadge = styled(Badge)(({ theme }) => ({ + '& .MuiBadge-badge': { + backgroundColor: '#44b700', + color: '#44b700', + boxShadow: `0 0 0 2px ${theme.palette.background.paper}`, + '&::after': { + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + borderRadius: '50%', + animation: 'ripple 1.2s infinite ease-in-out', + border: '1px solid currentColor', + content: '""', + }, + }, + '@keyframes ripple': { + '0%': { + transform: 'scale(.8)', + opacity: 1, + }, + '100%': { + transform: 'scale(2.4)', + opacity: 0, + }, + }, +})); + +const SmallAvatar = styled(Avatar)(({ theme }) => ({ + width: 22, + height: 22, + border: `2px solid ${theme.palette.background.paper}`, +})); + +const WithBadge = () => { + return ( + <> + + + With Badge + + + + + + + + } + > + + + + + + ); +}; + +export default WithBadge; diff --git a/components/UIElements/Badge/Accessibility.js b/components/UIElements/Badge/Accessibility.js new file mode 100644 index 0000000..92eed8e --- /dev/null +++ b/components/UIElements/Badge/Accessibility.js @@ -0,0 +1,50 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import IconButton from '@mui/material/IconButton'; +import Badge from '@mui/material/Badge'; +import MailIcon from '@mui/icons-material/Mail'; + +function notificationsLabel(count) { + if (count === 0) { + return 'no notifications'; + } + if (count > 99) { + return 'more than 99 notifications'; + } + return `${count} notifications`; +} + +const Accessibility = () => { + return ( + <> + + + Accessibility + + + + + + + + + + ); +}; + +export default Accessibility; diff --git a/components/UIElements/Badge/BadgeOverlap.js b/components/UIElements/Badge/BadgeOverlap.js new file mode 100644 index 0000000..eb97ada --- /dev/null +++ b/components/UIElements/Badge/BadgeOverlap.js @@ -0,0 +1,56 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Badge from '@mui/material/Badge'; + +const shapeStyles = { bgcolor: 'primary.main', width: 40, height: 40 }; +const shapeCircleStyles = { borderRadius: '50%' }; +const rectangle = ; +const circle = ( + +); + +const BadgeOverlap = () => { + return ( + <> + + + Badge Overlap + + + + + {rectangle} + + + {rectangle} + + + {circle} + + + {circle} + + + + + ); +}; + +export default BadgeOverlap; diff --git a/components/UIElements/Badge/BasicBadge.js b/components/UIElements/Badge/BasicBadge.js new file mode 100644 index 0000000..6f17153 --- /dev/null +++ b/components/UIElements/Badge/BasicBadge.js @@ -0,0 +1,62 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Badge from '@mui/material/Badge'; +import Stack from '@mui/material/Stack'; +import MailIcon from '@mui/icons-material/Mail'; +import NotificationsIcon from '@mui/icons-material/Notifications'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; + +const BasicBadge = () => { + return ( + <> + + + Basic Badge + + + + + + + + + + + + + + + + + + ); +}; + +export default BasicBadge; diff --git a/components/UIElements/Badge/Dynamic.js b/components/UIElements/Badge/Dynamic.js new file mode 100644 index 0000000..4504292 --- /dev/null +++ b/components/UIElements/Badge/Dynamic.js @@ -0,0 +1,96 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Badge from '@mui/material/Badge'; +import ButtonGroup from '@mui/material/ButtonGroup'; +import Button from '@mui/material/Button'; +import AddIcon from '@mui/icons-material/Add'; +import RemoveIcon from '@mui/icons-material/Remove'; +import MailIcon from '@mui/icons-material/Mail'; +import Switch from '@mui/material/Switch'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const Dynamic = () => { + + const [count, setCount] = React.useState(1); + const [invisible, setInvisible] = React.useState(false); + + const handleBadgeVisibility = () => { + setInvisible(!invisible); + }; + + return ( + <> + + + Dynamic + + + *': { + marginBottom: 2, + }, + }} + > +
    + + + + + + + + +
    + +
    + + + + } + label="Show Badge" + className="mr-4" + /> +
    +
    +
    + + ); +}; + +export default Dynamic; diff --git a/components/UIElements/Badge/MaximumValue.js b/components/UIElements/Badge/MaximumValue.js new file mode 100644 index 0000000..5ac6483 --- /dev/null +++ b/components/UIElements/Badge/MaximumValue.js @@ -0,0 +1,49 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Badge from '@mui/material/Badge'; +import MailIcon from '@mui/icons-material/Mail'; + +const MaximumValue = () => { + return ( + <> + + + Maximum Value + + + + + + + + + + + + + + + + ); +}; + +export default MaximumValue; diff --git a/components/UIElements/Buttons/BasicFAB.js b/components/UIElements/Buttons/BasicFAB.js new file mode 100644 index 0000000..b1e26d8 --- /dev/null +++ b/components/UIElements/Buttons/BasicFAB.js @@ -0,0 +1,58 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Fab from '@mui/material/Fab'; +import AddIcon from '@mui/icons-material/Add'; +import EditIcon from '@mui/icons-material/Edit'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import NavigationIcon from '@mui/icons-material/Navigation'; + +const BasicFAB = () => { + return ( + <> + + + Basic Favorite + + + :not(style)': { m: 1 } }}> + + + + + + + + + + + Navigate + + + + + + + + + ); +}; + +export default BasicFAB; diff --git a/components/UIElements/Buttons/BlockButtons.js b/components/UIElements/Buttons/BlockButtons.js new file mode 100644 index 0000000..3e9698b --- /dev/null +++ b/components/UIElements/Buttons/BlockButtons.js @@ -0,0 +1,87 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; + +const BlockButtons = () => { + return ( + <> + + + Block Buttons + + + + + + + + + + ); +}; + +export default BlockButtons; diff --git a/components/UIElements/Buttons/ButtonsWithIcon.js b/components/UIElements/Buttons/ButtonsWithIcon.js new file mode 100644 index 0000000..8fe49f4 --- /dev/null +++ b/components/UIElements/Buttons/ButtonsWithIcon.js @@ -0,0 +1,170 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import AddIcon from '@mui/icons-material/Add'; +import DeleteIcon from '@mui/icons-material/Delete'; +import SendIcon from '@mui/icons-material/Send'; +import PersonIcon from '@mui/icons-material/Person'; +import CheckIcon from '@mui/icons-material/Check'; +import InfoIcon from '@mui/icons-material/Info'; +import WarningIcon from '@mui/icons-material/Warning'; + +const ButtonsWithIcon = () => { + return ( + <> + + + Buttons With Icon + + + + + + + + + + + + + + + + + + + + ); +}; + +export default ButtonsWithIcon; diff --git a/components/UIElements/Buttons/DefaultButtons.js b/components/UIElements/Buttons/DefaultButtons.js new file mode 100644 index 0000000..335f084 --- /dev/null +++ b/components/UIElements/Buttons/DefaultButtons.js @@ -0,0 +1,156 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const DefaultButtons = () => { + return ( + <> + + + Default Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default DefaultButtons; diff --git a/components/UIElements/Buttons/Loading.js b/components/UIElements/Buttons/Loading.js new file mode 100644 index 0000000..96a486b --- /dev/null +++ b/components/UIElements/Buttons/Loading.js @@ -0,0 +1,54 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import LoadingButton from '@mui/lab/LoadingButton'; +import SaveIcon from '@mui/icons-material/Save'; +import Stack from '@mui/material/Stack'; + +const Loading = () => { + return ( + <> + + + Loading + + + + + Submit + + + + Fetch data + + + } + variant="outlined" + className="for-dark-border" + > + Save + + + + + ); +}; + +export default Loading; diff --git a/components/UIElements/Buttons/OutlineButtons.js b/components/UIElements/Buttons/OutlineButtons.js new file mode 100644 index 0000000..01b0903 --- /dev/null +++ b/components/UIElements/Buttons/OutlineButtons.js @@ -0,0 +1,143 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const OutlineButtons = () => { + return ( + <> + + + Outline Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default OutlineButtons; diff --git a/components/UIElements/Buttons/OutlineRoundedButtons.js b/components/UIElements/Buttons/OutlineRoundedButtons.js new file mode 100644 index 0000000..1ccbaff --- /dev/null +++ b/components/UIElements/Buttons/OutlineRoundedButtons.js @@ -0,0 +1,143 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const OutlineRoundedButtons = () => { + return ( + <> + + + Outline Rounded Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default OutlineRoundedButtons; diff --git a/components/UIElements/Buttons/RoundedButtons.js b/components/UIElements/Buttons/RoundedButtons.js new file mode 100644 index 0000000..98bd673 --- /dev/null +++ b/components/UIElements/Buttons/RoundedButtons.js @@ -0,0 +1,156 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const RoundedButtons = () => { + return ( + <> + + + Rounded Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default RoundedButtons; diff --git a/components/UIElements/Buttons/SizesButtons.js b/components/UIElements/Buttons/SizesButtons.js new file mode 100644 index 0000000..9fb6f9b --- /dev/null +++ b/components/UIElements/Buttons/SizesButtons.js @@ -0,0 +1,81 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; + +const SizesButtons = () => { + return ( + <> + + + Sizes + + + +
    + + + +
    + +
    + + + + + +
    + +
    + + + + + +
    +
    +
    + + ); +}; + +export default SizesButtons; diff --git a/components/UIElements/Buttons/SoftButtons.js b/components/UIElements/Buttons/SoftButtons.js new file mode 100644 index 0000000..ad87ec7 --- /dev/null +++ b/components/UIElements/Buttons/SoftButtons.js @@ -0,0 +1,144 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; + +const SoftButtons = () => { + return ( + <> + + + Soft Buttons + + + + + + + + + + + + + + + + + + + + ); +}; + +export default SoftButtons; diff --git a/components/UIElements/Cards/BasicCard.js b/components/UIElements/Cards/BasicCard.js new file mode 100644 index 0000000..6ef859d --- /dev/null +++ b/components/UIElements/Cards/BasicCard.js @@ -0,0 +1,46 @@ +import * as React from 'react'; +import Box from '@mui/material/Box'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; + +const bull = ( + + • + +); + +export default function BasicCard() { + return ( + + + + Word of the Day + + + + be{bull}nev{bull}o{bull}lent + + + + adjective + + + + well meaning and kindly. +
    + {'"a benevolent smile"'} +
    +
    + + + + +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Cards/Cards.module.css b/components/UIElements/Cards/Cards.module.css new file mode 100644 index 0000000..459d296 --- /dev/null +++ b/components/UIElements/Cards/Cards.module.css @@ -0,0 +1,18 @@ +.cardWithBgImg { + border-radius: 10px; + padding: 25px 20px; + margin-bottom: 15px; + position: relative; + background-size: cover; + background-position: center center; +} +.cardWithBgImg::before { + content: ''; + position: absolute; + width: 100%; + height: 100%; + bottom: 0; + left: 0; + background-image: linear-gradient(to bottom, rgba(0,0,0,0), rgba(0,0,0,1)); + border-radius: 10px; +} \ No newline at end of file diff --git a/components/UIElements/Cards/ComplexInteraction.js b/components/UIElements/Cards/ComplexInteraction.js new file mode 100644 index 0000000..2ae5e15 --- /dev/null +++ b/components/UIElements/Cards/ComplexInteraction.js @@ -0,0 +1,123 @@ +import * as React from "react"; +import { styled } from "@mui/material/styles"; +import Card from "@mui/material/Card"; +import CardHeader from "@mui/material/CardHeader"; +import CardMedia from "@mui/material/CardMedia"; +import CardContent from "@mui/material/CardContent"; +import CardActions from "@mui/material/CardActions"; +import Collapse from "@mui/material/Collapse"; +import Avatar from "@mui/material/Avatar"; +import IconButton from "@mui/material/IconButton"; +import Typography from "@mui/material/Typography"; +import { red } from "@mui/material/colors"; +import FavoriteIcon from "@mui/icons-material/Favorite"; +import ShareIcon from "@mui/icons-material/Share"; +import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; +import MoreVertIcon from "@mui/icons-material/MoreVert"; + +const ExpandMore = styled((props) => { + const { expand, ...other } = props; + return ; +})(({ theme, expand }) => ({ + transform: !expand ? "rotate(0deg)" : "rotate(180deg)", + marginLeft: "auto", + transition: theme.transitions.create("transform", { + duration: theme.transitions.duration.shortest, + }), +})); + +export default function ComplexInteraction() { + const [expanded, setExpanded] = React.useState(false); + + const handleExpandClick = () => { + setExpanded(!expanded); + }; + + return ( + + + R + + } + action={ + + + + } + title="Shrimp and Chorizo Paella" + subheader="September 14, 2016" + /> + + + + + This impressive paella is a perfect party dish and a fun meal to cook + together with your guests. Add 1 cup of frozen peas along with the + mussels, if you like. + + + + + + + + + + + + + + + + + + + + Method: + + + Heat 1/2 cup of the broth in a pot until simmering, add saffron and + set aside for 10 minutes. + + + + Heat oil in a (14- to 16-inch) paella pan or a large, deep skillet + over medium-high heat. Add chicken, shrimp and chorizo, and cook, + stirring occasionally until lightly browned, 6 to 8 minutes. + Transfer shrimp to a large plate and set aside, leaving chicken and + chorizo in the pan. Add pimentón, bay leaves, garlic, tomatoes, + onion, salt and pepper, and cook, stirring often until thickened and + fragrant, about 10 minutes. Add saffron broth and remaining 4 1/2 + cups chicken broth; bring to a boil. + + + + Add rice and stir very gently to distribute. Top with artichokes and + peppers, and cook without stirring, until most of the liquid is + absorbed, 15 to 18 minutes. Reduce heat to medium-low, add reserved + shrimp and mussels, tucking them down into the rice, and cook again + without stirring, until mussels have opened and rice is just tender, + 5 to 7 minutes more. (Discard any mussels that don't open.) + + + + Set aside off of the heat to let rest for 10 minutes, and then + serve. + + + + + ); +} diff --git a/components/UIElements/Cards/Media.js b/components/UIElements/Cards/Media.js new file mode 100644 index 0000000..7708e31 --- /dev/null +++ b/components/UIElements/Cards/Media.js @@ -0,0 +1,35 @@ +import * as React from 'react'; +import Card from '@mui/material/Card'; +import CardActions from '@mui/material/CardActions'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Button from '@mui/material/Button'; +import Typography from '@mui/material/Typography'; + +export default function Media() { + return ( + + + + + + Lizard + + + + Lizards are a widespread group of squamate reptiles, with over 6,000 + species, ranging across all continents except Antarctica + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Cards/UIControls.js b/components/UIElements/Cards/UIControls.js new file mode 100644 index 0000000..4b1e911 --- /dev/null +++ b/components/UIElements/Cards/UIControls.js @@ -0,0 +1,52 @@ +import * as React from 'react'; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Card from '@mui/material/Card'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import SkipNextIcon from '@mui/icons-material/SkipNext'; + +export default function UIControls() { + const theme = useTheme(); + + return ( + + + + + Live From Space + + + + Mac Miller + + + + + + {theme.direction === 'rtl' ? : } + + + + + + + + {theme.direction === 'rtl' ? : } + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Checkbox/Basic.js b/components/UIElements/Checkbox/Basic.js new file mode 100644 index 0000000..f62ef98 --- /dev/null +++ b/components/UIElements/Checkbox/Basic.js @@ -0,0 +1,39 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Basic() { + return ( + <> + + + Basic + + +
    + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Color.js b/components/UIElements/Checkbox/Color.js new file mode 100644 index 0000000..237ee8d --- /dev/null +++ b/components/UIElements/Checkbox/Color.js @@ -0,0 +1,54 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { pink } from '@mui/material/colors'; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Color() { + return ( + <> + + + Color + + +
    + + + + + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Controlled.js b/components/UIElements/Checkbox/Controlled.js new file mode 100644 index 0000000..991fcca --- /dev/null +++ b/components/UIElements/Checkbox/Controlled.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +export default function Controlled() { + + const [checked, setChecked] = React.useState(true); + + const handleChange = (event) => { + setChecked(event.target.checked); + }; + + return ( + <> + + + Controlled + + + + + + ); +} diff --git a/components/UIElements/Checkbox/Icon.js b/components/UIElements/Checkbox/Icon.js new file mode 100644 index 0000000..d3c491b --- /dev/null +++ b/components/UIElements/Checkbox/Icon.js @@ -0,0 +1,45 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; +import FavoriteBorder from '@mui/icons-material/FavoriteBorder'; +import Favorite from '@mui/icons-material/Favorite'; +import BookmarkBorderIcon from '@mui/icons-material/BookmarkBorder'; +import BookmarkIcon from '@mui/icons-material/Bookmark'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Icon() { + return ( + <> + + + Icon + + +
    + } checkedIcon={} /> + } + checkedIcon={} + /> +
    +
    + + ); +} diff --git a/components/UIElements/Checkbox/Label.js b/components/UIElements/Checkbox/Label.js new file mode 100644 index 0000000..2dfd591 --- /dev/null +++ b/components/UIElements/Checkbox/Label.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; + +export default function Label() { + return ( + <> + + + With Label + + + + } label="Label" /> + } label="Disabled" /> + + + + ); +} diff --git a/components/UIElements/Checkbox/Size.js b/components/UIElements/Checkbox/Size.js new file mode 100644 index 0000000..dbd55cf --- /dev/null +++ b/components/UIElements/Checkbox/Size.js @@ -0,0 +1,42 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Checkbox from '@mui/material/Checkbox'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +export default function Size() { + return ( + <> + + + Size + + +
    + + + +
    +
    + + ); +} diff --git a/components/UIElements/Chip/Basic.js b/components/UIElements/Chip/Basic.js new file mode 100644 index 0000000..44ca45d --- /dev/null +++ b/components/UIElements/Chip/Basic.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function Basic() { + return ( + <> + + + Basic + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ChipActions.js b/components/UIElements/Chip/ChipActions.js new file mode 100644 index 0000000..38e275b --- /dev/null +++ b/components/UIElements/Chip/ChipActions.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ChipActions() { + + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + return ( + <> + + + Chip Actions + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ChipAdornments.js b/components/UIElements/Chip/ChipAdornments.js new file mode 100644 index 0000000..f060a29 --- /dev/null +++ b/components/UIElements/Chip/ChipAdornments.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Avatar from '@mui/material/Avatar'; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ChipAdornments() { + return ( + <> + + + Chip Adornments + + + + M} label="Avatar" /> + } + label="Avatar" + variant="outlined" + /> + + + + ); +} diff --git a/components/UIElements/Chip/ChipArray.js b/components/UIElements/Chip/ChipArray.js new file mode 100644 index 0000000..5f495e5 --- /dev/null +++ b/components/UIElements/Chip/ChipArray.js @@ -0,0 +1,80 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Chip from '@mui/material/Chip'; +import Paper from '@mui/material/Paper'; +import TagFacesIcon from '@mui/icons-material/TagFaces'; + +const ListItem = styled('li')(({ theme }) => ({ + margin: theme.spacing(0.5), +})); + +export default function ChipArray() { + + const [chipData, setChipData] = React.useState([ + { key: 0, label: 'Angular' }, + { key: 1, label: 'jQuery' }, + { key: 2, label: 'Polymer' }, + { key: 3, label: 'React' }, + { key: 4, label: 'Vue.js' }, + ]); + + const handleDelete = (chipToDelete) => () => { + setChipData((chips) => chips.filter((chip) => chip.key !== chipToDelete.key)); + }; + + return ( + <> + + + Chip Array + + + + {chipData.map((data) => { + let icon; + + if (data.label === 'React') { + icon = ; + } + + return ( + + + + ); + })} + + + + ); +} diff --git a/components/UIElements/Chip/ClickableAndDeletable.js b/components/UIElements/Chip/ClickableAndDeletable.js new file mode 100644 index 0000000..950056f --- /dev/null +++ b/components/UIElements/Chip/ClickableAndDeletable.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ClickableAndDeletable() { + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Clickable And Deletable + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ClickableLink.js b/components/UIElements/Chip/ClickableLink.js new file mode 100644 index 0000000..5b7dc8a --- /dev/null +++ b/components/UIElements/Chip/ClickableLink.js @@ -0,0 +1,42 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ClickableLink() { + return ( + <> + + + Clickable Link + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/ColorChip.js b/components/UIElements/Chip/ColorChip.js new file mode 100644 index 0000000..c863c13 --- /dev/null +++ b/components/UIElements/Chip/ColorChip.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function ColorChip() { + return ( + <> + + + Color Chip + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/CustomDeleteIcon.js b/components/UIElements/Chip/CustomDeleteIcon.js new file mode 100644 index 0000000..18717a7 --- /dev/null +++ b/components/UIElements/Chip/CustomDeleteIcon.js @@ -0,0 +1,58 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; +import DoneIcon from '@mui/icons-material/Done'; +import DeleteIcon from '@mui/icons-material/Delete'; + +export default function CustomDeleteIcon() { + + const handleClick = () => { + console.info('You clicked the Chip.'); + }; + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Custom Delete Icon + + + + } + /> + } + variant="outlined" + /> + + + + ); +} diff --git a/components/UIElements/Chip/Deletable.js b/components/UIElements/Chip/Deletable.js new file mode 100644 index 0000000..6ddc0d6 --- /dev/null +++ b/components/UIElements/Chip/Deletable.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function Deletable() { + + const handleDelete = () => { + console.info('You clicked the delete icon.'); + }; + + return ( + <> + + + Deletable + + + + + + + + + ); +} diff --git a/components/UIElements/Chip/IconChip.js b/components/UIElements/Chip/IconChip.js new file mode 100644 index 0000000..52f68e2 --- /dev/null +++ b/components/UIElements/Chip/IconChip.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; +import FaceIcon from '@mui/icons-material/Face'; + +export default function IconChip() { + return ( + <> + + + Icon Chip + + + + } label="With Icon" /> + } label="With Icon" variant="outlined" /> + + + + ); +} diff --git a/components/UIElements/Chip/SizesChip.js b/components/UIElements/Chip/SizesChip.js new file mode 100644 index 0000000..32251f6 --- /dev/null +++ b/components/UIElements/Chip/SizesChip.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Chip from '@mui/material/Chip'; +import Stack from '@mui/material/Stack'; + +export default function SizesChip() { + return ( + <> + + + Sizes Chip + + + + + + + + + ); +} diff --git a/components/UIElements/ImageList/ImageListWithTitleBars.js b/components/UIElements/ImageList/ImageListWithTitleBars.js new file mode 100644 index 0000000..e4da7dd --- /dev/null +++ b/components/UIElements/ImageList/ImageListWithTitleBars.js @@ -0,0 +1,137 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; +import ImageListItemBar from '@mui/material/ImageListItemBar'; +import ListSubheader from '@mui/material/ListSubheader'; +import IconButton from '@mui/material/IconButton'; +import InfoIcon from '@mui/icons-material/Info'; + +export default function ImageListWithTitleBars() { + return ( + <> + + + Image List With Title Bars + + + + + December + + {itemData.map((item) => ( + + {item.title} + + +
    + } + /> + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + author: '@bkristastucchio', + rows: 2, + cols: 2, + featured: true, + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + author: '@rollelflex_graphy726', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + author: '@helloimnik', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + author: '@nolanissac', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + author: '@hjrc33', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + rows: 2, + cols: 2, + featured: true, + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + author: '@tjdragotta', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + author: '@katie_wasserman', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + author: '@silverdalex', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + author: '@shelleypauls', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + author: '@peterlaster', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + author: '@southside_customs', + cols: 2, + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/MasonryImageList.js b/components/UIElements/ImageList/MasonryImageList.js new file mode 100644 index 0000000..f627e0b --- /dev/null +++ b/components/UIElements/ImageList/MasonryImageList.js @@ -0,0 +1,98 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +export default function MasonryImageList() { + return ( + <> + + + Masonry Image List + + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110', + title: 'Bed', + }, + { + img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31', + title: 'Books', + }, + { + img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6', + title: 'Sink', + }, + { + img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3', + title: 'Kitchen', + }, + { + img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3', + title: 'Blinds', + }, + { + img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622', + title: 'Chairs', + }, + { + img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77', + title: 'Laptop', + }, + { + img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61', + title: 'Doors', + }, + { + img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee', + title: 'Storage', + }, + { + img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62', + title: 'Candle', + }, + { + img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4', + title: 'Coffee table', + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/QuiltedImageList.js b/components/UIElements/ImageList/QuiltedImageList.js new file mode 100644 index 0000000..da12461 --- /dev/null +++ b/components/UIElements/ImageList/QuiltedImageList.js @@ -0,0 +1,118 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +function srcset(image, size, rows = 1, cols = 1) { + return { + src: `${image}?w=${size * cols}&h=${size * rows}&fit=crop&auto=format`, + srcSet: `${image}?w=${size * cols}&h=${ + size * rows + }&fit=crop&auto=format&dpr=2 2x`, + }; +} + +export default function QuiltedImageList() { + return ( + <> + + + Quilted Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + rows: 2, + cols: 2, + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + cols: 2, + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/StandardImageList.js b/components/UIElements/ImageList/StandardImageList.js new file mode 100644 index 0000000..9408cf9 --- /dev/null +++ b/components/UIElements/ImageList/StandardImageList.js @@ -0,0 +1,95 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + }, +]; + +export default function StandardImageList() { + return ( + <> + + + Standard Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} diff --git a/components/UIElements/ImageList/TitleBarBelowImageStandard.js b/components/UIElements/ImageList/TitleBarBelowImageStandard.js new file mode 100644 index 0000000..c669a83 --- /dev/null +++ b/components/UIElements/ImageList/TitleBarBelowImageStandard.js @@ -0,0 +1,113 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; +import ImageListItemBar from '@mui/material/ImageListItemBar'; + +export default function TitleBarBelowImageStandard() { + return ( + <> + + + Title Bar Below Image Standard + + + + {itemData.map((item) => ( + + {item.title} + by: {item.author}} + position="below" + /> + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1551963831-b3b1ca40c98e', + title: 'Breakfast', + author: '@bkristastucchio', + }, + { + img: 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d', + title: 'Burger', + author: '@rollelflex_graphy726', + }, + { + img: 'https://images.unsplash.com/photo-1522770179533-24471fcdba45', + title: 'Camera', + author: '@helloimnik', + }, + { + img: 'https://images.unsplash.com/photo-1444418776041-9c7e33cc5a9c', + title: 'Coffee', + author: '@nolanissac', + }, + { + img: 'https://images.unsplash.com/photo-1533827432537-70133748f5c8', + title: 'Hats', + author: '@hjrc33', + }, + { + img: 'https://images.unsplash.com/photo-1558642452-9d2a7deb7f62', + title: 'Honey', + author: '@arwinneil', + }, + { + img: 'https://images.unsplash.com/photo-1516802273409-68526ee1bdd6', + title: 'Basketball', + author: '@tjdragotta', + }, + { + img: 'https://images.unsplash.com/photo-1518756131217-31eb79b20e8f', + title: 'Fern', + author: '@katie_wasserman', + }, + { + img: 'https://images.unsplash.com/photo-1597645587822-e99fa5d45d25', + title: 'Mushrooms', + author: '@silverdalex', + }, + { + img: 'https://images.unsplash.com/photo-1567306301408-9b74779a11af', + title: 'Tomato basil', + author: '@shelleypauls', + }, + { + img: 'https://images.unsplash.com/photo-1471357674240-e1a485acb3e1', + title: 'Sea star', + author: '@peterlaster', + }, + { + img: 'https://images.unsplash.com/photo-1589118949245-7d38baf380d6', + title: 'Bike', + author: '@southside_customs', + }, +]; \ No newline at end of file diff --git a/components/UIElements/ImageList/WovenImageList.js b/components/UIElements/ImageList/WovenImageList.js new file mode 100644 index 0000000..a9a635e --- /dev/null +++ b/components/UIElements/ImageList/WovenImageList.js @@ -0,0 +1,95 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ImageList from '@mui/material/ImageList'; +import ImageListItem from '@mui/material/ImageListItem'; + +export default function WovenImageList() { + return ( + <> + + + Woven Image List + + + + {itemData.map((item) => ( + + {item.title} + + ))} + + + + ); +} + +const itemData = [ + { + img: 'https://images.unsplash.com/photo-1549388604-817d15aa0110', + title: 'Bed', + }, + { + img: 'https://images.unsplash.com/photo-1563298723-dcfebaa392e3', + title: 'Kitchen', + }, + { + img: 'https://images.unsplash.com/photo-1523413651479-597eb2da0ad6', + title: 'Sink', + }, + { + img: 'https://images.unsplash.com/photo-1525097487452-6278ff080c31', + title: 'Books', + }, + { + img: 'https://images.unsplash.com/photo-1574180045827-681f8a1a9622', + title: 'Chairs', + }, + { + img: 'https://images.unsplash.com/photo-1597262975002-c5c3b14bbd62', + title: 'Candle', + }, + { + img: 'https://images.unsplash.com/photo-1530731141654-5993c3016c77', + title: 'Laptop', + }, + { + img: 'https://images.unsplash.com/photo-1481277542470-605612bd2d61', + title: 'Doors', + }, + { + img: 'https://images.unsplash.com/photo-1517487881594-2787fef5ebf7', + title: 'Coffee', + }, + { + img: 'https://images.unsplash.com/photo-1516455207990-7a41ce80f7ee', + title: 'Storage', + }, + { + img: 'https://images.unsplash.com/photo-1519710164239-da123dc03ef4', + title: 'Coffee table', + }, + { + img: 'https://images.unsplash.com/photo-1588436706487-9d55d73a39e3', + title: 'Blinds', + }, +]; \ No newline at end of file diff --git a/components/UIElements/List/BasicList.js b/components/UIElements/List/BasicList.js new file mode 100644 index 0000000..4dab6af --- /dev/null +++ b/components/UIElements/List/BasicList.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Divider from '@mui/material/Divider'; +import InboxIcon from '@mui/icons-material/Inbox'; +import DraftsIcon from '@mui/icons-material/Drafts'; + +export default function BasicList() { + return ( + <> + + + Basic List + + + + + + + + + + + + ); +} diff --git a/components/UIElements/List/FolderList.js b/components/UIElements/List/FolderList.js new file mode 100644 index 0000000..61a988e --- /dev/null +++ b/components/UIElements/List/FolderList.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemText from '@mui/material/ListItemText'; +import ListItemAvatar from '@mui/material/ListItemAvatar'; +import Avatar from '@mui/material/Avatar'; +import ImageIcon from '@mui/icons-material/Image'; +import WorkIcon from '@mui/icons-material/Work'; +import BeachAccessIcon from '@mui/icons-material/BeachAccess'; + +export default function FolderList() { + return ( + <> + + + FolderList + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/List/ListControls.js b/components/UIElements/List/ListControls.js new file mode 100644 index 0000000..666615c --- /dev/null +++ b/components/UIElements/List/ListControls.js @@ -0,0 +1,84 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import List from '@mui/material/List'; +import ListItem from '@mui/material/ListItem'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Checkbox from '@mui/material/Checkbox'; +import IconButton from '@mui/material/IconButton'; +import CommentIcon from '@mui/icons-material/Comment'; + +export default function ListControls() { + + const [checked, setChecked] = React.useState([0]); + + const handleToggle = (value) => () => { + const currentIndex = checked.indexOf(value); + const newChecked = [...checked]; + + if (currentIndex === -1) { + newChecked.push(value); + } else { + newChecked.splice(currentIndex, 1); + } + + setChecked(newChecked); + }; + + return ( + <> + + + List Controls + + + + {[0, 1, 2, 3].map((value) => { + const labelId = `checkbox-list-label-${value}`; + + return ( + + + + } + disablePadding + > + + + + + + + + ); + })} + + + + ); +} diff --git a/components/UIElements/List/NestedList.js b/components/UIElements/List/NestedList.js new file mode 100644 index 0000000..f9441fa --- /dev/null +++ b/components/UIElements/List/NestedList.js @@ -0,0 +1,92 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ListSubheader from '@mui/material/ListSubheader'; +import List from '@mui/material/List'; +import ListItemButton from '@mui/material/ListItemButton'; +import ListItemIcon from '@mui/material/ListItemIcon'; +import ListItemText from '@mui/material/ListItemText'; +import Collapse from '@mui/material/Collapse'; +import InboxIcon from '@mui/icons-material/MoveToInbox'; +import DraftsIcon from '@mui/icons-material/Drafts'; +import SendIcon from '@mui/icons-material/Send'; +import ExpandLess from '@mui/icons-material/ExpandLess'; +import ExpandMore from '@mui/icons-material/ExpandMore'; +import StarBorder from '@mui/icons-material/StarBorder'; + +export default function NestedList() { + const [open, setOpen] = React.useState(true); + + const handleClick = () => { + setOpen(!open); + }; + + return ( + <> + + + Nested List + + + + Nested List Items + + } + className="bg-black" + > + + + + + + + + + + + + + + + + + + + + {open ? : } + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Modal/BasicModal.js b/components/UIElements/Modal/BasicModal.js new file mode 100644 index 0000000..ab9ac11 --- /dev/null +++ b/components/UIElements/Modal/BasicModal.js @@ -0,0 +1,73 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Modal from '@mui/material/Modal'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + p: 4, +}; + +export default function BasicModal() { + + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + + + Basic Modal + + + + + + + + Text in a modal + + + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. + + + + + + ); +} diff --git a/components/UIElements/Modal/CustomizationDialog.js b/components/UIElements/Modal/CustomizationDialog.js new file mode 100644 index 0000000..8e89690 --- /dev/null +++ b/components/UIElements/Modal/CustomizationDialog.js @@ -0,0 +1,126 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import Button from '@mui/material/Button'; +import { styled } from '@mui/material/styles'; +import Dialog from '@mui/material/Dialog'; +import DialogTitle from '@mui/material/DialogTitle'; +import DialogContent from '@mui/material/DialogContent'; +import DialogActions from '@mui/material/DialogActions'; +import IconButton from '@mui/material/IconButton'; +import CloseIcon from '@mui/icons-material/Close'; +import Typography from '@mui/material/Typography'; +import Card from "@mui/material/Card"; + +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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; + +export default function CustomizationDialog() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Customization Dialog + + + + + +
    + + Modal title + + + + + Cras mattis consectetur purus sit amet fermentum. Cras justo odio, + dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac + consectetur ac, vestibulum at eros. + + + + Praesent commodo cursus magna, vel scelerisque nisl consectetur et. + Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. + + + + Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus + magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec + ullamcorper nulla non metus auctor fringilla. + + + + + + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/FullScreenDialogs.js b/components/UIElements/Modal/FullScreenDialogs.js new file mode 100644 index 0000000..6e0898f --- /dev/null +++ b/components/UIElements/Modal/FullScreenDialogs.js @@ -0,0 +1,96 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import ListItemText from '@mui/material/ListItemText'; +import ListItem from '@mui/material/ListItem'; +import List from '@mui/material/List'; +import Divider from '@mui/material/Divider'; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import CloseIcon from '@mui/icons-material/Close'; +import Slide from '@mui/material/Slide'; +import Card from "@mui/material/Card"; + +const Transition = React.forwardRef(function Transition(props, ref) { + return ; +}); + +export default function FullScreenDialogs() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Full Screen Dialog + + + + + + + + + + + + Sound + + + + + + + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/NestedModal.js b/components/UIElements/Modal/NestedModal.js new file mode 100644 index 0000000..91395c8 --- /dev/null +++ b/components/UIElements/Modal/NestedModal.js @@ -0,0 +1,103 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Modal from '@mui/material/Modal'; +import Button from '@mui/material/Button'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + pt: 2, + px: 4, + pb: 3, +}; + +function ChildModal() { + const [open, setOpen] = React.useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + + + + +

    Text in a child modal

    +

    + Lorem ipsum, dolor sit amet consectetur adipisicing elit. +

    + +
    +
    +
    + ); +} + +export default function NestedModal() { + + const [open, setOpen] = React.useState(false); + const handleOpen = () => { + setOpen(true); + }; + const handleClose = () => { + setOpen(false); + }; + + return ( + <> + + + Nested Modal + + + + + + +

    Text in a modal

    +

    + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. +

    + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Modal/ScrollingLongContent.js b/components/UIElements/Modal/ScrollingLongContent.js new file mode 100644 index 0000000..230ac40 --- /dev/null +++ b/components/UIElements/Modal/ScrollingLongContent.js @@ -0,0 +1,95 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; + +export default function ScrollingLongContent() { + const [open, setOpen] = React.useState(false); + const [scroll, setScroll] = React.useState('paper'); + + const handleClickOpen = (scrollType) => () => { + setOpen(true); + setScroll(scrollType); + }; + + const handleClose = () => { + setOpen(false); + }; + + const descriptionElementRef = React.useRef(null); + React.useEffect(() => { + if (open) { + const { current: descriptionElement } = descriptionElementRef; + if (descriptionElement !== null) { + descriptionElement.focus(); + } + } + }, [open]); + + return ( + <> + + + Scrolling Long Content + + + + + + + +
    + Subscribe + + + + {[...new Array(50)] + .map( + () => `Cras mattis consectetur purus sit amet fermentum. + Cras justo odio, dapibus ac facilisis in, egestas eget quam. + Morbi leo risus, porta ac consectetur ac, vestibulum at eros. + Praesent commodo cursus magna, vel scelerisque nisl consectetur et.`, + ) + .join('\n')} + + + + + + + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/UIElements/Modal/Transitions.js b/components/UIElements/Modal/Transitions.js new file mode 100644 index 0000000..8a56c12 --- /dev/null +++ b/components/UIElements/Modal/Transitions.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Backdrop from '@mui/material/Backdrop'; +import Box from '@mui/material/Box'; +import Modal from '@mui/material/Modal'; +import Fade from '@mui/material/Fade'; +import Button from '@mui/material/Button'; + +const style = { + position: 'absolute', + top: '50%', + left: '50%', + transform: 'translate(-50%, -50%)', + width: 400, + bgcolor: 'background.paper', + border: '2px solid #000', + boxShadow: 24, + p: 4, +}; + +export default function Transitions() { + const [open, setOpen] = React.useState(false); + const handleOpen = () => setOpen(true); + const handleClose = () => setOpen(false); + + return ( + <> + + + Transitions + + + + + + + + + Text in a modal + + + Duis mollis, est non commodo luctus, nisi erat porttitor ligula. + + + + + + + ); +} diff --git a/components/UIElements/Modal/TransitionsDialog.js b/components/UIElements/Modal/TransitionsDialog.js new file mode 100644 index 0000000..47a967c --- /dev/null +++ b/components/UIElements/Modal/TransitionsDialog.js @@ -0,0 +1,78 @@ +import * as React from 'react'; +import Button from '@mui/material/Button'; +import Dialog from '@mui/material/Dialog'; +import DialogActions from '@mui/material/DialogActions'; +import DialogContent from '@mui/material/DialogContent'; +import DialogContentText from '@mui/material/DialogContentText'; +import DialogTitle from '@mui/material/DialogTitle'; +import Slide from '@mui/material/Slide'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +const Transition = React.forwardRef(function Transition(props, ref) { + return ; +}); + +export default function TransitionsDialog() { + const [open, setOpen] = React.useState(false); + + const handleClickOpen = () => { + setOpen(true); + }; + + const handleClose = () => { + setOpen(false); + }; + + return ( + + + Transitions Dialog + + +
    + + + +
    + {"Use Google's location service?"} + + + + Let Google help apps determine location. This means sending anonymous + location data to Google, even when no apps are running. + + + + + + + +
    +
    +
    +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Pagination/BasicPagination.js b/components/UIElements/Pagination/BasicPagination.js new file mode 100644 index 0000000..69da8e8 --- /dev/null +++ b/components/UIElements/Pagination/BasicPagination.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function BasicPagination() { + return ( + <> + + + BasicPagination + + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/CustomIcons.js b/components/UIElements/Pagination/CustomIcons.js new file mode 100644 index 0000000..722735f --- /dev/null +++ b/components/UIElements/Pagination/CustomIcons.js @@ -0,0 +1,46 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import PaginationItem from '@mui/material/PaginationItem'; +import Stack from '@mui/material/Stack'; +import ArrowBackIcon from '@mui/icons-material/ArrowBack'; +import ArrowForwardIcon from '@mui/icons-material/ArrowForward'; + +export default function CustomIcons() { + return ( + <> + + + CustomIcons + + + + ( + + )} + /> + + + + ); +} diff --git a/components/UIElements/Pagination/OutlinedPagination.js b/components/UIElements/Pagination/OutlinedPagination.js new file mode 100644 index 0000000..da39b14 --- /dev/null +++ b/components/UIElements/Pagination/OutlinedPagination.js @@ -0,0 +1,38 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function OutlinedPagination() { + return ( + <> + + + Outlined Pagination + + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/PaginationSize.js b/components/UIElements/Pagination/PaginationSize.js new file mode 100644 index 0000000..69a1612 --- /dev/null +++ b/components/UIElements/Pagination/PaginationSize.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function PaginationSize() { + return ( + <> + + + PaginationSize + + + + + + + + + + ); +} diff --git a/components/UIElements/Pagination/RoundedPagination.js b/components/UIElements/Pagination/RoundedPagination.js new file mode 100644 index 0000000..667368e --- /dev/null +++ b/components/UIElements/Pagination/RoundedPagination.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Pagination from '@mui/material/Pagination'; +import Stack from '@mui/material/Stack'; + +export default function RoundedPagination() { + return ( + <> + + + Rounded Pagination + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/Circular.js b/components/UIElements/Progress/Circular.js new file mode 100644 index 0000000..d70d3e2 --- /dev/null +++ b/components/UIElements/Progress/Circular.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import CircularProgress from '@mui/material/CircularProgress'; + +export default function Circular() { + return ( + <> + + + Circular + + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/CircularDeterminate.js b/components/UIElements/Progress/CircularDeterminate.js new file mode 100644 index 0000000..f920abf --- /dev/null +++ b/components/UIElements/Progress/CircularDeterminate.js @@ -0,0 +1,52 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import CircularProgress from '@mui/material/CircularProgress'; + +export default function CircularDeterminate() { + + const [progress, setProgress] = React.useState(0); + + React.useEffect(() => { + const timer = setInterval(() => { + setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10)); + }, 800); + + return () => { + clearInterval(timer); + }; + }, []); + + return ( + <> + + + Circular Determinate + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Progress/CircularWithLabel.js b/components/UIElements/Progress/CircularWithLabel.js new file mode 100644 index 0000000..f3da4ac --- /dev/null +++ b/components/UIElements/Progress/CircularWithLabel.js @@ -0,0 +1,78 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import CircularProgress from '@mui/material/CircularProgress'; +import Typography from '@mui/material/Typography'; +import Box from '@mui/material/Box'; +import Card from "@mui/material/Card"; + +function CircularProgressWithLabel(props) { + return ( + + + + + {`${Math.round(props.value)}%`} + + + + ); +} + +CircularProgressWithLabel.propTypes = { + /** + * The value of the progress indicator for the determinate variant. + * Value between 0 and 100. + * @default 0 + */ + value: PropTypes.number.isRequired, +}; + +export default function CircularStatic() { + const [progress, setProgress] = React.useState(10); + + React.useEffect(() => { + const timer = setInterval(() => { + setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10)); + }, 800); + return () => { + clearInterval(timer); + }; + }, []); + + return ( + <> + + + Default + + + + + + ); +} \ No newline at end of file diff --git a/components/UIElements/Progress/Customization.js b/components/UIElements/Progress/Customization.js new file mode 100644 index 0000000..2df1fbf --- /dev/null +++ b/components/UIElements/Progress/Customization.js @@ -0,0 +1,88 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import CircularProgress, { + circularProgressClasses, +} from '@mui/material/CircularProgress'; +import LinearProgress, { linearProgressClasses } from '@mui/material/LinearProgress'; + +const BorderLinearProgress = styled(LinearProgress)(({ theme }) => ({ + height: 10, + borderRadius: 5, + [`&.${linearProgressClasses.colorPrimary}`]: { + backgroundColor: theme.palette.grey[theme.palette.mode === 'light' ? 200 : 800], + }, + [`& .${linearProgressClasses.bar}`]: { + borderRadius: 5, + backgroundColor: theme.palette.mode === 'light' ? '#1a90ff' : '#308fe8', + }, +})); + +// Inspired by the former Facebook spinners. +function FacebookCircularProgress(props) { + return ( + + + theme.palette.grey[theme.palette.mode === 'light' ? 200 : 800], + }} + size={40} + thickness={4} + {...props} + value={100} + /> + (theme.palette.mode === 'light' ? '#1a90ff' : '#308fe8'), + animationDuration: '550ms', + position: 'absolute', + left: 0, + [`& .${circularProgressClasses.circle}`]: { + strokeLinecap: 'round', + }, + }} + size={40} + thickness={4} + {...props} + /> + + ); +} + +export default function Customization() { + return ( + <> + + + Customization + + + + +
    + +
    +
    + + ); +} diff --git a/components/UIElements/Progress/InteractiveIntegration.js b/components/UIElements/Progress/InteractiveIntegration.js new file mode 100644 index 0000000..a706f47 --- /dev/null +++ b/components/UIElements/Progress/InteractiveIntegration.js @@ -0,0 +1,117 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import CircularProgress from '@mui/material/CircularProgress'; +import { green } from '@mui/material/colors'; +import Button from '@mui/material/Button'; +import Fab from '@mui/material/Fab'; +import CheckIcon from '@mui/icons-material/Check'; +import SaveIcon from '@mui/icons-material/Save'; + +export default function InteractiveIntegration() { + + const [loading, setLoading] = React.useState(false); + const [success, setSuccess] = React.useState(false); + const timer = React.useRef(); + + const buttonSx = { + ...(success && { + bgcolor: green[500], + '&:hover': { + bgcolor: green[700], + }, + }), + }; + + React.useEffect(() => { + return () => { + clearTimeout(timer.current); + }; + }, []); + + const handleButtonClick = () => { + if (!loading) { + setSuccess(false); + setLoading(true); + timer.current = window.setTimeout(() => { + setSuccess(true); + setLoading(false); + }, 2000); + } + }; + + return ( + <> + + + Interactive Integration + + + + + + {success ? : } + + {loading && ( + + )} + + + + + {loading && ( + + )} + + + + + ); +} diff --git a/components/UIElements/Progress/LinearIndeterminate.js b/components/UIElements/Progress/LinearIndeterminate.js new file mode 100644 index 0000000..f23a2b8 --- /dev/null +++ b/components/UIElements/Progress/LinearIndeterminate.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import LinearProgress from '@mui/material/LinearProgress'; + +export default function LinearIndeterminate() { + return ( + <> + + + Linear Indeterminate + + + + + + + + + + ); +} diff --git a/components/UIElements/Radio/Color.js b/components/UIElements/Radio/Color.js new file mode 100644 index 0000000..83d724c --- /dev/null +++ b/components/UIElements/Radio/Color.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { pink } from '@mui/material/colors'; +import Radio from '@mui/material/Radio'; + +export default function Color() { + + const [selectedValue, setSelectedValue] = React.useState('a'); + + const handleChange = (event) => { + setSelectedValue(event.target.value); + }; + + const controlProps = (item) => ({ + checked: selectedValue === item, + onChange: handleChange, + value: item, + name: 'color-radio-button-demo', + inputProps: { 'aria-label': item }, + }); + + return ( + <> + + + Color + + +
    + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Radio/Controlled.js b/components/UIElements/Radio/Controlled.js new file mode 100644 index 0000000..1e3ef42 --- /dev/null +++ b/components/UIElements/Radio/Controlled.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Controlled() { + const [value, setValue] = React.useState('female'); + + const handleChange = (event) => { + setValue(event.target.value); + }; + + return ( + <> + + + Controlled + + + + Gender + + } label="Female" /> + } label="Male" /> + + + + + ); +} diff --git a/components/UIElements/Radio/Direction.js b/components/UIElements/Radio/Direction.js new file mode 100644 index 0000000..3019ed2 --- /dev/null +++ b/components/UIElements/Radio/Direction.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Direction() { + return ( + <> + + + Direction + + + + Gender + + } label="Female" /> + } label="Male" /> + } label="Other" /> + } + label="other" + /> + + + + + ); +} diff --git a/components/UIElements/Radio/Group.js b/components/UIElements/Radio/Group.js new file mode 100644 index 0000000..ccb30a5 --- /dev/null +++ b/components/UIElements/Radio/Group.js @@ -0,0 +1,47 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +export default function Group() { + return ( + <> + + + Radio Group + + + + Gender + + } label="Female" /> + } label="Male" /> + } label="Other" /> + + + + + ); +} diff --git a/components/UIElements/Radio/Size.js b/components/UIElements/Radio/Size.js new file mode 100644 index 0000000..0a198d7 --- /dev/null +++ b/components/UIElements/Radio/Size.js @@ -0,0 +1,59 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Radio from '@mui/material/Radio'; + +export default function Size() { + + const [selectedValue, setSelectedValue] = React.useState('a'); + const handleChange = (event) => { + setSelectedValue(event.target.value); + }; + + const controlProps = (item) => ({ + checked: selectedValue === item, + onChange: handleChange, + value: item, + name: 'size-radio-button-demo', + inputProps: { 'aria-label': item }, + }); + + return ( + <> + + + Size + + +
    + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Rating/Basic.js b/components/UIElements/Rating/Basic.js new file mode 100644 index 0000000..7ad686c --- /dev/null +++ b/components/UIElements/Rating/Basic.js @@ -0,0 +1,57 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Rating from '@mui/material/Rating'; + +export default function Basic() { + const [value, setValue] = React.useState(2); + + return ( + <> + + + Basic + + + legend': { mt: 2 }, + }} + > + Controlled + { + setValue(newValue); + }} + /> + + Read only + + + Disabled + + + No rating given + + + + + ); +} diff --git a/components/UIElements/Rating/Customization.js b/components/UIElements/Rating/Customization.js new file mode 100644 index 0000000..89fde6e --- /dev/null +++ b/components/UIElements/Rating/Customization.js @@ -0,0 +1,61 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import Rating from '@mui/material/Rating'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; + +const StyledRating = styled(Rating)({ + '& .MuiRating-iconFilled': { + color: '#ff6d75', + }, + '& .MuiRating-iconHover': { + color: '#ff3d47', + }, +}); + +export default function Customization() { + return ( + <> + + + Customization + + + legend': { mt: 2 }, + }} + > + Custom icon and color + `${value} Heart${value !== 1 ? 's' : ''}`} + precision={0.5} + icon={} + emptyIcon={} + /> + 10 stars + + + + + ); +} diff --git a/components/UIElements/Rating/HoverFeedback.js b/components/UIElements/Rating/HoverFeedback.js new file mode 100644 index 0000000..53c15ce --- /dev/null +++ b/components/UIElements/Rating/HoverFeedback.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Box from '@mui/material/Box'; +import StarIcon from '@mui/icons-material/Star'; + +const labels = { + 0.5: 'Useless', + 1: 'Useless+', + 1.5: 'Poor', + 2: 'Poor+', + 2.5: 'Ok', + 3: 'Ok+', + 3.5: 'Good', + 4: 'Good+', + 4.5: 'Excellent', + 5: 'Excellent+', +}; + +function getLabelText(value) { + return `${value} Star${value !== 1 ? 's' : ''}, ${labels[value]}`; +} + +export default function HoverFeedback() { + + const [value, setValue] = React.useState(2); + const [hover, setHover] = React.useState(-1); + + return ( + <> + + + Hover Feedback + + + + { + setValue(newValue); + }} + onChangeActive={(event, newHover) => { + setHover(newHover); + }} + emptyIcon={} + /> + {value !== null && ( + + {labels[hover !== -1 ? hover : value]} + + )} + + + + ); +} diff --git a/components/UIElements/Rating/RadioGroup.js b/components/UIElements/Rating/RadioGroup.js new file mode 100644 index 0000000..457cded --- /dev/null +++ b/components/UIElements/Rating/RadioGroup.js @@ -0,0 +1,83 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import { styled } from '@mui/material/styles'; +import Rating from '@mui/material/Rating'; +import SentimentVeryDissatisfiedIcon from '@mui/icons-material/SentimentVeryDissatisfied'; +import SentimentDissatisfiedIcon from '@mui/icons-material/SentimentDissatisfied'; +import SentimentSatisfiedIcon from '@mui/icons-material/SentimentSatisfied'; +import SentimentSatisfiedAltIcon from '@mui/icons-material/SentimentSatisfiedAltOutlined'; +import SentimentVerySatisfiedIcon from '@mui/icons-material/SentimentVerySatisfied'; + +const StyledRating = styled(Rating)(({ theme }) => ({ + '& .MuiRating-iconEmpty .MuiSvgIcon-root': { + color: theme.palette.action.disabled, + }, +})); + +const customIcons = { + 1: { + icon: , + label: 'Very Dissatisfied', + }, + 2: { + icon: , + label: 'Dissatisfied', + }, + 3: { + icon: , + label: 'Neutral', + }, + 4: { + icon: , + label: 'Satisfied', + }, + 5: { + icon: , + label: 'Very Satisfied', + }, +}; + +function IconContainer(props) { + const { value, ...other } = props; + return {customIcons[value].icon}; +} + +IconContainer.propTypes = { + value: PropTypes.number.isRequired, +}; + +export default function RadioGroup() { + return ( + <> + + + Radio Group + + + customIcons[value].label} + highlightSelectedOnly + /> + + + ); +} diff --git a/components/UIElements/Rating/RatingPrecision.js b/components/UIElements/Rating/RatingPrecision.js new file mode 100644 index 0000000..97cf1ac --- /dev/null +++ b/components/UIElements/Rating/RatingPrecision.js @@ -0,0 +1,36 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Stack from '@mui/material/Stack'; + +export default function RatingPrecision() { + return ( + <> + + + Rating Precision + + + + + + + + + ); +} diff --git a/components/UIElements/Rating/Sizes.js b/components/UIElements/Rating/Sizes.js new file mode 100644 index 0000000..c425f3e --- /dev/null +++ b/components/UIElements/Rating/Sizes.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Rating from '@mui/material/Rating'; +import Stack from '@mui/material/Stack'; + +export default function Sizes() { + return ( + <> + + + Sizes + + + + + + + + + + ); +} diff --git a/components/UIElements/Select/AutoWidth.js b/components/UIElements/Select/AutoWidth.js new file mode 100644 index 0000000..3cb5d63 --- /dev/null +++ b/components/UIElements/Select/AutoWidth.js @@ -0,0 +1,61 @@ +import React from "react"; +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'; + +export default function AutoWidth() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Auto Width + + +
    + + Age + + +
    +
    + + ); +} diff --git a/components/UIElements/Select/Basic.js b/components/UIElements/Select/Basic.js new file mode 100644 index 0000000..c713d9e --- /dev/null +++ b/components/UIElements/Select/Basic.js @@ -0,0 +1,58 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +export default function Basic() { + + const [age, setAge] = React.useState(''); + + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Basic + + + + + Age + + + + + + ); +} diff --git a/components/UIElements/Select/Customization.js b/components/UIElements/Select/Customization.js new file mode 100644 index 0000000..b8743c0 --- /dev/null +++ b/components/UIElements/Select/Customization.js @@ -0,0 +1,115 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +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 NativeSelect from '@mui/material/NativeSelect'; +import InputBase from '@mui/material/InputBase'; + +const BootstrapInput = styled(InputBase)(({ theme }) => ({ + 'label + &': { + marginTop: theme.spacing(3), + }, + '& .MuiInputBase-input': { + borderRadius: 4, + position: 'relative', + backgroundColor: theme.palette.background.paper, + border: '1px solid #ced4da', + fontSize: 16, + padding: '10px 26px 10px 12px', + transition: theme.transitions.create(['border-color', 'box-shadow']), + // Use the system font instead of the default Roboto font. + fontFamily: [ + '-apple-system', + 'BlinkMacSystemFont', + '"Segoe UI"', + 'Roboto', + '"Helvetica Neue"', + 'Arial', + 'sans-serif', + '"Apple Color Emoji"', + '"Segoe UI Emoji"', + '"Segoe UI Symbol"', + ].join(','), + '&:focus': { + borderRadius: 4, + borderColor: '#80bdff', + boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)', + }, + }, +})); + +export default function Customization() { + + const [age, setAge] = React.useState(''); + const handleChange = (event) => { + setAge(event.target.value); + }; + + return ( + <> + + + Customization + + +
    + + Age + + + + + Age + + + + + Age + } + > + + + + + +
    +
    + + ); +} diff --git a/components/UIElements/Select/MultipleSelectCheckmarks.js b/components/UIElements/Select/MultipleSelectCheckmarks.js new file mode 100644 index 0000000..467b476 --- /dev/null +++ b/components/UIElements/Select/MultipleSelectCheckmarks.js @@ -0,0 +1,96 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import ListItemText from '@mui/material/ListItemText'; +import Select from '@mui/material/Select'; +import Checkbox from '@mui/material/Checkbox'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +export default function MultipleSelectCheckmarks() { + + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Checkmarks + + + <> + + Tag + + + + + + ); +} diff --git a/components/UIElements/Select/MultipleSelectChip.js b/components/UIElements/Select/MultipleSelectChip.js new file mode 100644 index 0000000..ddf3bd5 --- /dev/null +++ b/components/UIElements/Select/MultipleSelectChip.js @@ -0,0 +1,115 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +import OutlinedInput from '@mui/material/OutlinedInput'; +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 Chip from '@mui/material/Chip'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + +export default function MultipleSelectChip() { + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Chip + + + <> + + Chip + + + + + + ); +} diff --git a/components/UIElements/Select/MultipleSelectDefault.js b/components/UIElements/Select/MultipleSelectDefault.js new file mode 100644 index 0000000..c34c04c --- /dev/null +++ b/components/UIElements/Select/MultipleSelectDefault.js @@ -0,0 +1,108 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { useTheme } from '@mui/material/styles'; +import OutlinedInput from '@mui/material/OutlinedInput'; +import InputLabel from '@mui/material/InputLabel'; +import MenuItem from '@mui/material/MenuItem'; +import FormControl from '@mui/material/FormControl'; +import Select from '@mui/material/Select'; + +const ITEM_HEIGHT = 48; +const ITEM_PADDING_TOP = 8; +const MenuProps = { + PaperProps: { + style: { + maxHeight: ITEM_HEIGHT * 4.5 + ITEM_PADDING_TOP, + width: 250, + }, + }, +}; + +const names = [ + 'Oliver Hansen', + 'Van Henry', + 'April Tucker', + 'Ralph Hubbard', + 'Omar Alexander', + 'Carlos Abbott', + 'Miriam Wagner', + 'Bradley Wilkerson', + 'Virginia Andrews', + 'Kelly Snyder', +]; + +function getStyles(name, personName, theme) { + return { + fontWeight: + personName.indexOf(name) === -1 + ? theme.typography.fontWeightRegular + : theme.typography.fontWeightMedium, + }; +} + + +export default function MultipleSelectDefault() { + + const theme = useTheme(); + const [personName, setPersonName] = React.useState([]); + + const handleChange = (event) => { + const { + target: { value }, + } = event; + setPersonName( + // On autofill we get a stringified value. + typeof value === 'string' ? value.split(',') : value, + ); + }; + + return ( + <> + + + Multiple Select Default + + +
    + + Name + + +
    +
    + + ); +} diff --git a/components/UIElements/Skeleton/Animations.js b/components/UIElements/Skeleton/Animations.js new file mode 100644 index 0000000..3094467 --- /dev/null +++ b/components/UIElements/Skeleton/Animations.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Skeleton from '@mui/material/Skeleton'; + +export default function Animations() { + return ( + <> + + + Animations + + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/PulsateExample.js b/components/UIElements/Skeleton/PulsateExample.js new file mode 100644 index 0000000..ef70126 --- /dev/null +++ b/components/UIElements/Skeleton/PulsateExample.js @@ -0,0 +1,107 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import PropTypes from 'prop-types'; +import Grid from '@mui/material/Grid'; +import Box from '@mui/material/Box'; +import Typography from '@mui/material/Typography'; +import Skeleton from '@mui/material/Skeleton'; + +const data = [ + { + src: 'https://i.ytimg.com/vi/pLqipJNItIo/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLBkklsyaw9FxDmMKapyBYCn9tbPNQ', + title: 'Don Diablo @ Tomorrowland Main Stage 2019 | Official…', + channel: 'Don Diablo', + views: '396k views', + createdAt: 'a week ago', + }, + { + src: 'https://i.ytimg.com/vi/_Uu12zY01ts/hqdefault.jpg?sqp=-oaymwEZCPYBEIoBSFXyq4qpAwsIARUAAIhCGAFwAQ==&rs=AOn4CLCpX6Jan2rxrCAZxJYDXppTP4MoQA', + title: 'Queen - Greatest Hits', + channel: 'Queen Official', + views: '40M views', + createdAt: '3 years ago', + }, + { + src: 'https://i.ytimg.com/vi/kkLk2XWMBf8/hqdefault.jpg?sqp=-oaymwEYCNIBEHZIVfKriqkDCwgBFQAAiEIYAXAB&rs=AOn4CLB4GZTFu1Ju2EPPPXnhMZtFVvYBaw', + title: 'Calvin Harris, Sam Smith - Promises (Official Video)', + channel: 'Calvin Harris', + views: '130M views', + createdAt: '10 months ago', + }, +]; + +function Media(props) { + const { loading = false } = props; + + return ( + + {(loading ? Array.from(new Array(3)) : data).map((item, index) => ( + + {item ? ( + {item.title} + ) : ( + + )} + + {item ? ( + + + {item.title} + + + {item.channel} + + + {`${item.views} • ${item.createdAt}`} + + + ) : ( + + + + + )} + + ))} + + ); +} + +Media.propTypes = { + loading: PropTypes.bool, +}; + +export default function PulsateExample() { + return ( + <> + + + Pulsate Example + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/Variants.js b/components/UIElements/Skeleton/Variants.js new file mode 100644 index 0000000..4c59f0a --- /dev/null +++ b/components/UIElements/Skeleton/Variants.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Skeleton from '@mui/material/Skeleton'; +import Stack from '@mui/material/Stack'; + +export default function Variants() { + return ( + <> + + + Variants + + + + {/* For variant="text", adjust the height via font-size */} + + + {/* For other variants, adjust the size with `width` and `height` */} + + + + + + + + + ); +} diff --git a/components/UIElements/Skeleton/WaveExample.js b/components/UIElements/Skeleton/WaveExample.js new file mode 100644 index 0000000..990d6a3 --- /dev/null +++ b/components/UIElements/Skeleton/WaveExample.js @@ -0,0 +1,118 @@ +import React from "react"; +import PropTypes from 'prop-types'; +import Card from '@mui/material/Card'; +import CardHeader from '@mui/material/CardHeader'; +import CardContent from '@mui/material/CardContent'; +import CardMedia from '@mui/material/CardMedia'; +import Avatar from '@mui/material/Avatar'; +import Typography from '@mui/material/Typography'; +import IconButton from '@mui/material/IconButton'; +import MoreVertIcon from '@mui/icons-material/MoreVert'; +import Skeleton from '@mui/material/Skeleton'; + +function Media(props) { + const { loading = false } = props; + + return ( + + + ) : ( + + ) + } + action={ + loading ? null : ( + + + + ) + } + title={ + loading ? ( + + ) : ( + 'Ted' + ) + } + subheader={ + loading ? ( + + ) : ( + '5 hours ago' + ) + } + /> + {loading ? ( + + ) : ( + + )} + + + {loading ? ( + + + + + ) : ( + + { + "Why First Minister of Scotland Nicola Sturgeon thinks GDP is the wrong measure of a country's success:" + } + + )} + + + ); +} + +Media.propTypes = { + loading: PropTypes.bool, +}; + +export default function WaveExample() { + return ( + <> + + + Wave Example + + + <> + + + + + + ); +} diff --git a/components/UIElements/Slider/Continuous.js b/components/UIElements/Slider/Continuous.js new file mode 100644 index 0000000..f250c44 --- /dev/null +++ b/components/UIElements/Slider/Continuous.js @@ -0,0 +1,50 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stack from '@mui/material/Stack'; +import Slider from '@mui/material/Slider'; +import VolumeDown from '@mui/icons-material/VolumeDown'; +import VolumeUp from '@mui/icons-material/VolumeUp'; + +export default function Continuous() { + + const [value, setValue] = React.useState(30); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Continuous + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/CustomMarks.js b/components/UIElements/Slider/CustomMarks.js new file mode 100644 index 0000000..3ec83ef --- /dev/null +++ b/components/UIElements/Slider/CustomMarks.js @@ -0,0 +1,65 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +export default function CustomMarks() { + return ( + <> + + + Custom Marks + + + + + + + + ); +} diff --git a/components/UIElements/Slider/Discrete.js b/components/UIElements/Slider/Discrete.js new file mode 100644 index 0000000..75d6994 --- /dev/null +++ b/components/UIElements/Slider/Discrete.js @@ -0,0 +1,49 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +function valuetext(value) { + return `${value}°C`; +} + +export default function Discrete() { + return ( + <> + + + Discrete + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/LabelAlwaysVisible.js b/components/UIElements/Slider/LabelAlwaysVisible.js new file mode 100644 index 0000000..47fe862 --- /dev/null +++ b/components/UIElements/Slider/LabelAlwaysVisible.js @@ -0,0 +1,65 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +export default function LabelAlwaysVisible() { + return ( + <> + + + Label Always Visible + + + + + + + + ); +} diff --git a/components/UIElements/Slider/RestrictedValues.js b/components/UIElements/Slider/RestrictedValues.js new file mode 100644 index 0000000..5aa158d --- /dev/null +++ b/components/UIElements/Slider/RestrictedValues.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +const marks = [ + { + value: 0, + label: '0°C', + }, + { + value: 20, + label: '20°C', + }, + { + value: 37, + label: '37°C', + }, + { + value: 100, + label: '100°C', + }, +]; + +function valuetext(value) { + return `${value}°C`; +} + +function valueLabelFormat(value) { + return marks.findIndex((mark) => mark.value === value) + 1; +} + +export default function RestrictedValues() { + return ( + <> + + + Restricted Values + + + + + + + + ); +} diff --git a/components/UIElements/Slider/Sizes.js b/components/UIElements/Slider/Sizes.js new file mode 100644 index 0000000..88c4a1f --- /dev/null +++ b/components/UIElements/Slider/Sizes.js @@ -0,0 +1,41 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +export default function Sizes() { + return ( + <> + + + Sizes + + + + + + + + + ); +} diff --git a/components/UIElements/Slider/SmallSteps.js b/components/UIElements/Slider/SmallSteps.js new file mode 100644 index 0000000..ead94d0 --- /dev/null +++ b/components/UIElements/Slider/SmallSteps.js @@ -0,0 +1,48 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Slider from '@mui/material/Slider'; + +function valuetext(value) { + return `${value}°C`; +} + +export default function SmallSteps() { + return ( + <> + + + Small Steps + + + + + + + + ); +} diff --git a/components/UIElements/Snackbar/ComplementaryProjects.js b/components/UIElements/Snackbar/ComplementaryProjects.js new file mode 100644 index 0000000..1345e30 --- /dev/null +++ b/components/UIElements/Snackbar/ComplementaryProjects.js @@ -0,0 +1,55 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import { SnackbarProvider, useSnackbar } from 'notistack'; + +function MyApp() { + const { enqueueSnackbar } = useSnackbar(); + + const handleClick = () => { + enqueueSnackbar('I love snacks.'); + }; + + const handleClickVariant = (variant) => () => { + // variant could be success, error, warning, info, or default + enqueueSnackbar('This is a success message!', { variant }); + }; + + return ( + + + + + ); +} + +export default function ComplementaryProjects() { + return ( + <> + + + Complementary Projects + + + + + + + + ); +} diff --git a/components/UIElements/Snackbar/Customization.js b/components/UIElements/Snackbar/Customization.js new file mode 100644 index 0000000..8a38638 --- /dev/null +++ b/components/UIElements/Snackbar/Customization.js @@ -0,0 +1,72 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Stack from '@mui/material/Stack'; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; +import MuiAlert from '@mui/material/Alert'; + +const Alert = React.forwardRef(function Alert(props, ref) { + return ; +}); + +export default function Customization() { + + const [open, setOpen] = React.useState(false); + + const handleClick = () => { + setOpen(true); + }; + + const handleClose = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + setOpen(false); + }; + + return ( + <> + + + Customization + + + + + + + + This is a success message! + + + + This is an error message! + + This is a warning message! + + This is an information message! + + This is a success message! + + + + ); +} diff --git a/components/UIElements/Snackbar/PositionedSnackbars.js b/components/UIElements/Snackbar/PositionedSnackbars.js new file mode 100644 index 0000000..f9ef58f --- /dev/null +++ b/components/UIElements/Snackbar/PositionedSnackbars.js @@ -0,0 +1,111 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; + +export default function PositionedSnackbars() { + + const [state, setState] = React.useState({ + open: false, + vertical: 'top', + horizontal: 'center', + }); + const { vertical, horizontal, open } = state; + + const handleClick = (newState) => () => { + setState({ open: true, ...newState }); + }; + + const handleClose = () => { + setState({ ...state, open: false }); + }; + + const buttons = ( + + + + + + + + + ); + + return ( + <> + + + Positioned Snackbars + + +
    + {buttons} + +
    +
    + + ); +} diff --git a/components/UIElements/Snackbar/SimpleSnackbars.js b/components/UIElements/Snackbar/SimpleSnackbars.js new file mode 100644 index 0000000..27a1134 --- /dev/null +++ b/components/UIElements/Snackbar/SimpleSnackbars.js @@ -0,0 +1,77 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Button from '@mui/material/Button'; +import Snackbar from '@mui/material/Snackbar'; +import IconButton from '@mui/material/IconButton'; +import CloseIcon from '@mui/icons-material/Close'; + +export default function SimpleSnackbars() { + + const [open, setOpen] = React.useState(false); + + const handleClick = () => { + setOpen(true); + }; + + const handleClose = (event, reason) => { + if (reason === 'clickaway') { + return; + } + + setOpen(false); + }; + + const action = ( + + + + + + + ); + + return ( + <> + + + Simple Snackbars + + + <> + + + + + + ); +} diff --git a/components/UIElements/Stepper/AlternativeLabel.js b/components/UIElements/Stepper/AlternativeLabel.js new file mode 100644 index 0000000..bcb189a --- /dev/null +++ b/components/UIElements/Stepper/AlternativeLabel.js @@ -0,0 +1,49 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; + +const steps = [ + 'Select master blaster campaign settings', + 'Create an ad group', + 'Create an ad', +]; + +export default function AlternativeLabel() { + return ( + <> + + + Alternative Label + + + + + {steps.map((label) => ( + + {label} + + ))} + + + + + ); +} diff --git a/components/UIElements/Stepper/CustomizedHorizontalStepper.js b/components/UIElements/Stepper/CustomizedHorizontalStepper.js new file mode 100644 index 0000000..40af482 --- /dev/null +++ b/components/UIElements/Stepper/CustomizedHorizontalStepper.js @@ -0,0 +1,211 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import { styled } from '@mui/material/styles'; +import Stack from '@mui/material/Stack'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import Check from '@mui/icons-material/Check'; +import SettingsIcon from '@mui/icons-material/Settings'; +import GroupAddIcon from '@mui/icons-material/GroupAdd'; +import VideoLabelIcon from '@mui/icons-material/VideoLabel'; +import StepConnector, { stepConnectorClasses } from '@mui/material/StepConnector'; + +const QontoConnector = styled(StepConnector)(({ theme }) => ({ + [`&.${stepConnectorClasses.alternativeLabel}`]: { + top: 10, + left: 'calc(-50% + 16px)', + right: 'calc(50% + 16px)', + }, + [`&.${stepConnectorClasses.active}`]: { + [`& .${stepConnectorClasses.line}`]: { + borderColor: '#784af4', + }, + }, + [`&.${stepConnectorClasses.completed}`]: { + [`& .${stepConnectorClasses.line}`]: { + borderColor: '#784af4', + }, + }, + [`& .${stepConnectorClasses.line}`]: { + borderColor: theme.palette.mode === 'dark' ? theme.palette.grey[800] : '#eaeaf0', + borderTopWidth: 3, + borderRadius: 1, + }, +})); + +const QontoStepIconRoot = styled('div')(({ theme, ownerState }) => ({ + color: theme.palette.mode === 'dark' ? theme.palette.grey[700] : '#eaeaf0', + display: 'flex', + height: 22, + alignItems: 'center', + ...(ownerState.active && { + color: '#784af4', + }), + '& .QontoStepIcon-completedIcon': { + color: '#784af4', + zIndex: 1, + fontSize: 18, + }, + '& .QontoStepIcon-circle': { + width: 8, + height: 8, + borderRadius: '50%', + backgroundColor: 'currentColor', + }, +})); + +function QontoStepIcon(props) { + const { active, completed, className } = props; + + return ( + + {completed ? ( + + ) : ( +
    + )} + + ); +} + +QontoStepIcon.propTypes = { + /** + * Whether this step is active. + * @default false + */ + active: PropTypes.bool, + className: PropTypes.string, + /** + * Mark the step as completed. Is passed to child components. + * @default false + */ + completed: PropTypes.bool, +}; + +const ColorlibConnector = styled(StepConnector)(({ theme }) => ({ + [`&.${stepConnectorClasses.alternativeLabel}`]: { + top: 22, + }, + [`&.${stepConnectorClasses.active}`]: { + [`& .${stepConnectorClasses.line}`]: { + backgroundImage: + 'linear-gradient( 95deg,rgb(242,113,33) 0%,rgb(233,64,87) 50%,rgb(138,35,135) 100%)', + }, + }, + [`&.${stepConnectorClasses.completed}`]: { + [`& .${stepConnectorClasses.line}`]: { + backgroundImage: + 'linear-gradient( 95deg,rgb(242,113,33) 0%,rgb(233,64,87) 50%,rgb(138,35,135) 100%)', + }, + }, + [`& .${stepConnectorClasses.line}`]: { + height: 3, + border: 0, + backgroundColor: + theme.palette.mode === 'dark' ? theme.palette.grey[800] : '#eaeaf0', + borderRadius: 1, + }, +})); + +const ColorlibStepIconRoot = styled('div')(({ theme, ownerState }) => ({ + backgroundColor: theme.palette.mode === 'dark' ? theme.palette.grey[700] : '#ccc', + zIndex: 1, + color: '#fff', + width: 50, + height: 50, + display: 'flex', + borderRadius: '50%', + justifyContent: 'center', + alignItems: 'center', + ...(ownerState.active && { + backgroundImage: + 'linear-gradient( 136deg, rgb(242,113,33) 0%, rgb(233,64,87) 50%, rgb(138,35,135) 100%)', + boxShadow: '0 4px 10px 0 rgba(0,0,0,.25)', + }), + ...(ownerState.completed && { + backgroundImage: + 'linear-gradient( 136deg, rgb(242,113,33) 0%, rgb(233,64,87) 50%, rgb(138,35,135) 100%)', + }), +})); + +function ColorlibStepIcon(props) { + const { active, completed, className } = props; + + const icons = { + 1: , + 2: , + 3: , + }; + + return ( + + {icons[String(props.icon)]} + + ); +} + +ColorlibStepIcon.propTypes = { + /** + * Whether this step is active. + * @default false + */ + active: PropTypes.bool, + className: PropTypes.string, + /** + * Mark the step as completed. Is passed to child components. + * @default false + */ + completed: PropTypes.bool, + /** + * The label displayed in the step icon. + */ + icon: PropTypes.node, +}; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function CustomizedHorizontalStepper() { + return ( + <> + + + Customized Horizontal Stepper + + + + }> + {steps.map((label) => ( + + {label} + + ))} + + }> + {steps.map((label) => ( + + {label} + + ))} + + + + + ); +} diff --git a/components/UIElements/Stepper/ErrorStep.js b/components/UIElements/Stepper/ErrorStep.js new file mode 100644 index 0000000..e49c61e --- /dev/null +++ b/components/UIElements/Stepper/ErrorStep.js @@ -0,0 +1,62 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function ErrorStep() { + const isStepFailed = (step) => { + return step === 1; + }; + + return ( + <> + + + Error Step + + + + + {steps.map((label, index) => { + const labelProps = {}; + if (isStepFailed(index)) { + labelProps.optional = ( + + Alert message + + ); + + labelProps.error = true; + } + + return ( + + {label} + + ); + })} + + + + + ); +} diff --git a/components/UIElements/Stepper/HorizontalStepper.js b/components/UIElements/Stepper/HorizontalStepper.js new file mode 100644 index 0000000..375d154 --- /dev/null +++ b/components/UIElements/Stepper/HorizontalStepper.js @@ -0,0 +1,139 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import Button from '@mui/material/Button'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function HorizontalStepper() { + + const [activeStep, setActiveStep] = React.useState(0); + const [skipped, setSkipped] = React.useState(new Set()); + + const isStepOptional = (step) => { + return step === 1; + }; + + const isStepSkipped = (step) => { + return skipped.has(step); + }; + + const handleNext = () => { + let newSkipped = skipped; + if (isStepSkipped(activeStep)) { + newSkipped = new Set(newSkipped.values()); + newSkipped.delete(activeStep); + } + + setActiveStep((prevActiveStep) => prevActiveStep + 1); + setSkipped(newSkipped); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleSkip = () => { + if (!isStepOptional(activeStep)) { + // You probably want to guard against something like this, + // it should never occur unless someone's actively trying to break something. + throw new Error("You can't skip a step that isn't optional."); + } + + setActiveStep((prevActiveStep) => prevActiveStep + 1); + setSkipped((prevSkipped) => { + const newSkipped = new Set(prevSkipped.values()); + newSkipped.add(activeStep); + return newSkipped; + }); + }; + + const handleReset = () => { + setActiveStep(0); + }; + + return ( + <> + + + Horizontal Stepper + + + + + {steps.map((label, index) => { + const stepProps = {}; + const labelProps = {}; + if (isStepOptional(index)) { + labelProps.optional = ( + Optional + ); + } + if (isStepSkipped(index)) { + stepProps.completed = false; + } + return ( + + {label} + + ); + })} + + {activeStep === steps.length ? ( + + + All steps completed - you're finished + + + + + + + ) : ( + + Step {activeStep + 1} + + + + {isStepOptional(activeStep) && ( + + )} + + + + + )} + + + + ); +} diff --git a/components/UIElements/Stepper/MobileStepperText.js b/components/UIElements/Stepper/MobileStepperText.js new file mode 100644 index 0000000..1118584 --- /dev/null +++ b/components/UIElements/Stepper/MobileStepperText.js @@ -0,0 +1,122 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import { useTheme } from '@mui/material/styles'; +import MobileStepper from '@mui/material/MobileStepper'; +import Paper from '@mui/material/Paper'; +import Button from '@mui/material/Button'; +import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'; +import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'; + +const steps = [ + { + label: 'Select campaign settings', + description: `For each ad campaign that you create, you can control how much + you're willing to spend on clicks and conversions, which networks + and geographical locations you want your ads to show on, and more.`, + }, + { + label: 'Create an ad group', + description: + 'An ad group contains one or more ads which target a shared set of keywords.', + }, + { + label: 'Create an ad', + description: `Try out different ad text to see what brings in the most customers, + and learn how to enhance your ads using features like ad extensions. + If you run into any problems with your ads, find out how to tell if + they're running and how to resolve approval issues.`, + }, +]; + +export default function MobileStepperText() { + const theme = useTheme(); + const [activeStep, setActiveStep] = React.useState(0); + const maxSteps = steps.length; + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + return ( + <> + + + Mobile Stepper + + + + + {steps[activeStep].label} + + + + {steps[activeStep].description} + + + + Next + {theme.direction === 'rtl' ? ( + + ) : ( + + )} + + } + backButton={ + + } + className="bg-black" + /> + + + + ); +} diff --git a/components/UIElements/Stepper/NonLinear.js b/components/UIElements/Stepper/NonLinear.js new file mode 100644 index 0000000..6ab4a1f --- /dev/null +++ b/components/UIElements/Stepper/NonLinear.js @@ -0,0 +1,148 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepButton from '@mui/material/StepButton'; +import Button from '@mui/material/Button'; + +const steps = ['Select campaign settings', 'Create an ad group', 'Create an ad']; + +export default function NonLinear() { + + const [activeStep, setActiveStep] = React.useState(0); + const [completed, setCompleted] = React.useState({}); + + const totalSteps = () => { + return steps.length; + }; + + const completedSteps = () => { + return Object.keys(completed).length; + }; + + const isLastStep = () => { + return activeStep === totalSteps() - 1; + }; + + const allStepsCompleted = () => { + return completedSteps() === totalSteps(); + }; + + const handleNext = () => { + const newActiveStep = + isLastStep() && !allStepsCompleted() + ? // It's the last step, but not all steps have been completed, + // find the first step that has been completed + steps.findIndex((step, i) => !(i in completed)) + : activeStep + 1; + setActiveStep(newActiveStep); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleStep = (step) => () => { + setActiveStep(step); + }; + + const handleComplete = () => { + const newCompleted = completed; + newCompleted[activeStep] = true; + setCompleted(newCompleted); + handleNext(); + }; + + const handleReset = () => { + setActiveStep(0); + setCompleted({}); + }; + + return ( + <> + + + Non Linear + + + + + {steps.map((label, index) => ( + + + {label} + + + ))} + + +
    + {allStepsCompleted() ? ( + + + All steps completed - you're finished + + + + + + + ) : ( + + + Step {activeStep + 1} + + + + + + + + + + {activeStep !== steps.length && + (completed[activeStep] ? ( + + Step {activeStep + 1} already completed + + ) : ( + + ))} + + + )} +
    +
    +
    + + ); +} diff --git a/components/UIElements/Stepper/VerticalStepper.js b/components/UIElements/Stepper/VerticalStepper.js new file mode 100644 index 0000000..8e7cf35 --- /dev/null +++ b/components/UIElements/Stepper/VerticalStepper.js @@ -0,0 +1,121 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Stepper from '@mui/material/Stepper'; +import Step from '@mui/material/Step'; +import StepLabel from '@mui/material/StepLabel'; +import StepContent from '@mui/material/StepContent'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; + +const steps = [ + { + label: 'Select campaign settings', + description: `For each ad campaign that you create, you can control how much + you're willing to spend on clicks and conversions, which networks + and geographical locations you want your ads to show on, and more.`, + }, + { + label: 'Create an ad group', + description: + 'An ad group contains one or more ads which target a shared set of keywords.', + }, + { + label: 'Create an ad', + description: `Try out different ad text to see what brings in the most customers, + and learn how to enhance your ads using features like ad extensions. + If you run into any problems with your ads, find out how to tell if + they're running and how to resolve approval issues.`, + }, +]; + +export default function VerticalStepper() { + + const [activeStep, setActiveStep] = React.useState(0); + + const handleNext = () => { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + }; + + const handleBack = () => { + setActiveStep((prevActiveStep) => prevActiveStep - 1); + }; + + const handleReset = () => { + setActiveStep(0); + }; + + return ( + <> + + + Vertical Stepper + + + + + {steps.map((step, index) => ( + + Last step + ) : null + } + > + {step.label} + + + {step.description} + +
    + + +
    +
    +
    +
    + ))} +
    + {activeStep === steps.length && ( + + All steps completed - you're finished + + + )} +
    +
    + + ); +} diff --git a/components/UIElements/SwiperSlider/AutoplaySlider.js b/components/UIElements/SwiperSlider/AutoplaySlider.js new file mode 100644 index 0000000..116a6b1 --- /dev/null +++ b/components/UIElements/SwiperSlider/AutoplaySlider.js @@ -0,0 +1,66 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Autoplay, Pagination, Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function AutoplaySlider() { + return ( + <> + + + Autoplay + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/Default.js b/components/UIElements/SwiperSlider/Default.js new file mode 100644 index 0000000..cd28fde --- /dev/null +++ b/components/UIElements/SwiperSlider/Default.js @@ -0,0 +1,52 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function Default() { + return ( + <> + + + Default + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/NavigationSlider.js b/components/UIElements/SwiperSlider/NavigationSlider.js new file mode 100644 index 0000000..fef10a4 --- /dev/null +++ b/components/UIElements/SwiperSlider/NavigationSlider.js @@ -0,0 +1,57 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function NavigationSlider() { + return ( + <> + + + Navigation + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationDynamic.js b/components/UIElements/SwiperSlider/PaginationDynamic.js new file mode 100644 index 0000000..159992e --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationDynamic.js @@ -0,0 +1,59 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationDynamic() { + return ( + <> + + + Pagination Dynamic + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationProgress.js b/components/UIElements/SwiperSlider/PaginationProgress.js new file mode 100644 index 0000000..0756f95 --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationProgress.js @@ -0,0 +1,60 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination, Navigation } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationProgress() { + return ( + <> + + + Pagination Progress + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/SwiperSlider/PaginationSlider.js b/components/UIElements/SwiperSlider/PaginationSlider.js new file mode 100644 index 0000000..1070509 --- /dev/null +++ b/components/UIElements/SwiperSlider/PaginationSlider.js @@ -0,0 +1,57 @@ +import React from "react"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Pagination } from "swiper"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function PaginationSlider() { + return ( + <> + + + With Pagination Slider + + + + + Image + + + + Image + + + + Image + + + + Image + + + + Image + + + + + ); +} diff --git a/components/UIElements/Switch/Basic.js b/components/UIElements/Switch/Basic.js new file mode 100644 index 0000000..7a44ac1 --- /dev/null +++ b/components/UIElements/Switch/Basic.js @@ -0,0 +1,39 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +const label = { inputProps: { 'aria-label': 'Switch demo' } }; + +export default function Basic() { + return ( + <> + + + Basic + + + <> + + + + + + + + ); +} diff --git a/components/UIElements/Switch/Color.js b/components/UIElements/Switch/Color.js new file mode 100644 index 0000000..73d5130 --- /dev/null +++ b/components/UIElements/Switch/Color.js @@ -0,0 +1,52 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { alpha, styled } from '@mui/material/styles'; +import { pink } from '@mui/material/colors'; +import Switch from '@mui/material/Switch'; + +const GreenSwitch = styled(Switch)(({ theme }) => ({ + '& .MuiSwitch-switchBase.Mui-checked': { + color: pink[500], + '&:hover': { + backgroundColor: alpha(pink[500], theme.palette.action.hoverOpacity), + }, + }, + '& .MuiSwitch-switchBase.Mui-checked + .MuiSwitch-track': { + backgroundColor: pink[500], + }, +})); + +const label = { inputProps: { 'aria-label': 'Color switch demo' } }; + +export default function Color() { + return ( + <> + + + Color + + + + + + + + + + ); +} diff --git a/components/UIElements/Switch/Controlled.js b/components/UIElements/Switch/Controlled.js new file mode 100644 index 0000000..441eeed --- /dev/null +++ b/components/UIElements/Switch/Controlled.js @@ -0,0 +1,43 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +export default function Controlled() { + + const [checked, setChecked] = React.useState(true); + + const handleChange = (event) => { + setChecked(event.target.checked); + }; + + return ( + <> + + + Controlled + + + + + + ); +} diff --git a/components/UIElements/Switch/Label.js b/components/UIElements/Switch/Label.js new file mode 100644 index 0000000..2672abb --- /dev/null +++ b/components/UIElements/Switch/Label.js @@ -0,0 +1,37 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; + +export default function Label() { + return ( + <> + + + Label + + + + } label="Label" /> + } label="Disabled" /> + + + + ); +} diff --git a/components/UIElements/Switch/Size.js b/components/UIElements/Switch/Size.js new file mode 100644 index 0000000..00c7c28 --- /dev/null +++ b/components/UIElements/Switch/Size.js @@ -0,0 +1,35 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Switch from '@mui/material/Switch'; + +const label = { inputProps: { 'aria-label': 'Size switch demo' } }; + +export default function Size() { + return ( + <> + + + Size + + + + + + + ); +} diff --git a/components/UIElements/Switch/SwitchesWithFormGroup.js b/components/UIElements/Switch/SwitchesWithFormGroup.js new file mode 100644 index 0000000..4fc4011 --- /dev/null +++ b/components/UIElements/Switch/SwitchesWithFormGroup.js @@ -0,0 +1,74 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import FormLabel from '@mui/material/FormLabel'; +import FormControl from '@mui/material/FormControl'; +import FormGroup from '@mui/material/FormGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormHelperText from '@mui/material/FormHelperText'; +import Switch from '@mui/material/Switch'; + +export default function SwitchesWithFormGroup() { + + const [state, setState] = React.useState({ + gilad: true, + jason: false, + antoine: true, + }); + + const handleChange = (event) => { + setState({ + ...state, + [event.target.name]: event.target.checked, + }); + }; + + return ( + <> + + + Switches With Form Group + + + + Assign responsibility + + + } + label="Gilad Gray" + /> + + } + label="Jason Killian" + /> + + } + label="Antoine Llorca" + /> + + Be careful + + + + ); +} diff --git a/components/UIElements/Table/BasicTable.js b/components/UIElements/Table/BasicTable.js new file mode 100644 index 0000000..e780911 --- /dev/null +++ b/components/UIElements/Table/BasicTable.js @@ -0,0 +1,78 @@ +import React from "react"; +import Card from "@mui/material/Card"; +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'; + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function BasicTable() { + return ( + <> + + + Basic Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/CustomizationTable.js b/components/UIElements/Table/CustomizationTable.js new file mode 100644 index 0000000..7e1b769 --- /dev/null +++ b/components/UIElements/Table/CustomizationTable.js @@ -0,0 +1,97 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { styled } from '@mui/material/styles'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell, { tableCellClasses } 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'; + +const StyledTableCell = styled(TableCell)(({ theme }) => ({ + [`&.${tableCellClasses.head}`]: { + backgroundColor: theme.palette.common.black, + color: theme.palette.common.white, + }, + [`&.${tableCellClasses.body}`]: { + fontSize: 14, + }, +})); + +const StyledTableRow = styled(TableRow)(({ theme }) => ({ + '&:nth-of-type(odd)': { + backgroundColor: theme.palette.action.hover, + }, + // hide last border + '&:last-child td, &:last-child th': { + border: 0, + }, +})); + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function CustomizationTable() { + return ( + <> + + + Customization Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/DataTable.js b/components/UIElements/Table/DataTable.js new file mode 100644 index 0000000..239bbcc --- /dev/null +++ b/components/UIElements/Table/DataTable.js @@ -0,0 +1,74 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import { DataGrid } from '@mui/x-data-grid'; + +const columns = [ + { field: 'id', headerName: 'ID', width: 70 }, + { field: 'firstName', headerName: 'First name', width: 130 }, + { field: 'lastName', headerName: 'Last name', width: 130 }, + { + field: 'age', + headerName: 'Age', + type: 'number', + width: 90, + }, + { + field: 'fullName', + headerName: 'Full name', + description: 'This column has a value getter and is not sortable.', + sortable: false, + width: 160, + valueGetter: (params) => + `${params.row.firstName || ''} ${params.row.lastName || ''}`, + }, +]; + +const rows = [ + { id: 1, lastName: 'Snow', firstName: 'Jon', age: 35 }, + { id: 2, lastName: 'Lannister', firstName: 'Cersei', age: 42 }, + { id: 3, lastName: 'Lannister', firstName: 'Jaime', age: 45 }, + { id: 4, lastName: 'Stark', firstName: 'Arya', age: 16 }, + { id: 5, lastName: 'Targaryen', firstName: 'Daenerys', age: null }, + { id: 6, lastName: 'Melisandre', firstName: null, age: 150 }, + { id: 7, lastName: 'Clifford', firstName: 'Ferrara', age: 44 }, + { id: 8, lastName: 'Frances', firstName: 'Rossini', age: 36 }, + { id: 9, lastName: 'Roxie', firstName: 'Harvey', age: 65 }, +]; + +export default function DataTable() { + return ( + <> + + + Data Table + + +
    + +
    +
    + + ); +} diff --git a/components/UIElements/Table/DenseTable.js b/components/UIElements/Table/DenseTable.js new file mode 100644 index 0000000..c481469 --- /dev/null +++ b/components/UIElements/Table/DenseTable.js @@ -0,0 +1,79 @@ +import React from "react"; +import Card from "@mui/material/Card"; +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'; + +function createData(name, calories, fat, carbs, protein) { + return { name, calories, fat, carbs, protein }; +} + +const rows = [ + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Gingerbread', 356, 16.0, 49, 3.9), +]; + +export default function DenseTable() { + return ( + <> + + + Dense Table + + + + + + + Dessert (100g serving) + Calories + Fat (g) + Carbs (g) + Protein (g) + + + + + {rows.map((row) => ( + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ))} + +
    +
    +
    + + ); +} diff --git a/components/UIElements/Table/SortingSelectingTable.js b/components/UIElements/Table/SortingSelectingTable.js new file mode 100644 index 0000000..626c6c9 --- /dev/null +++ b/components/UIElements/Table/SortingSelectingTable.js @@ -0,0 +1,402 @@ +import * as React from 'react'; +import PropTypes from 'prop-types'; +import { alpha } from '@mui/material/styles'; +import Box from '@mui/material/Box'; +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 TablePagination from '@mui/material/TablePagination'; +import TableRow from '@mui/material/TableRow'; +import TableSortLabel from '@mui/material/TableSortLabel'; +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; +import Paper from '@mui/material/Paper'; +import Checkbox from '@mui/material/Checkbox'; +import IconButton from '@mui/material/IconButton'; +import Tooltip from '@mui/material/Tooltip'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Switch from '@mui/material/Switch'; +import DeleteIcon from '@mui/icons-material/Delete'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import { visuallyHidden } from '@mui/utils'; +import Card from "@mui/material/Card"; + +function createData(name, calories, fat, carbs, protein) { + return { + name, + calories, + fat, + carbs, + protein, + }; +} + +const rows = [ + createData('Cupcake', 305, 3.7, 67, 4.3), + createData('Donut', 452, 25.0, 51, 4.9), + createData('Eclair', 262, 16.0, 24, 6.0), + createData('Frozen yoghurt', 159, 6.0, 24, 4.0), + createData('Gingerbread', 356, 16.0, 49, 3.9), + createData('Honeycomb', 408, 3.2, 87, 6.5), + createData('Ice cream sandwich', 237, 9.0, 37, 4.3), + createData('Jelly Bean', 375, 0.0, 94, 0.0), + createData('KitKat', 518, 26.0, 65, 7.0), + createData('Lollipop', 392, 0.2, 98, 0.0), + createData('Marshmallow', 318, 0, 81, 2.0), + createData('Nougat', 360, 19.0, 9, 37.0), + createData('Oreo', 437, 18.0, 63, 4.0), +]; + +function descendingComparator(a, b, orderBy) { + if (b[orderBy] < a[orderBy]) { + return -1; + } + if (b[orderBy] > a[orderBy]) { + return 1; + } + return 0; +} + +function getComparator(order, orderBy) { + return order === 'desc' + ? (a, b) => descendingComparator(a, b, orderBy) + : (a, b) => -descendingComparator(a, b, orderBy); +} + +// This method is created for cross-browser compatibility, if you don't +// need to support IE11, you can use Array.prototype.sort() directly +function stableSort(array, comparator) { + const stabilizedThis = array.map((el, index) => [el, index]); + stabilizedThis.sort((a, b) => { + const order = comparator(a[0], b[0]); + if (order !== 0) { + return order; + } + return a[1] - b[1]; + }); + return stabilizedThis.map((el) => el[0]); +} + +const headCells = [ + { + id: 'name', + numeric: false, + disablePadding: true, + label: 'Dessert (100g serving)', + }, + { + id: 'calories', + numeric: true, + disablePadding: false, + label: 'Calories', + }, + { + id: 'fat', + numeric: true, + disablePadding: false, + label: 'Fat (g)', + }, + { + id: 'carbs', + numeric: true, + disablePadding: false, + label: 'Carbs (g)', + }, + { + id: 'protein', + numeric: true, + disablePadding: false, + label: 'Protein (g)', + }, +]; + +function EnhancedTableHead(props) { + const { onSelectAllClick, order, orderBy, numSelected, rowCount, onRequestSort } = + props; + const createSortHandler = (property) => (event) => { + onRequestSort(event, property); + }; + + return ( + + + + 0 && numSelected < rowCount} + checked={rowCount > 0 && numSelected === rowCount} + onChange={onSelectAllClick} + inputProps={{ + 'aria-label': 'select all desserts', + }} + /> + + {headCells.map((headCell) => ( + + + {headCell.label} + {orderBy === headCell.id ? ( + + {order === 'desc' ? 'sorted descending' : 'sorted ascending'} + + ) : null} + + + ))} + + + ); +} + +EnhancedTableHead.propTypes = { + numSelected: PropTypes.number.isRequired, + onRequestSort: PropTypes.func.isRequired, + onSelectAllClick: PropTypes.func.isRequired, + order: PropTypes.oneOf(['asc', 'desc']).isRequired, + orderBy: PropTypes.string.isRequired, + rowCount: PropTypes.number.isRequired, +}; + +function EnhancedTableToolbar(props) { + const { numSelected } = props; + + return ( + 0 && { + bgcolor: (theme) => + alpha(theme.palette.primary.main, theme.palette.action.activatedOpacity), + }), + }} + className='ss-table-toolbar' + > + {numSelected > 0 ? ( + + {numSelected} selected + + ) : ( + + Nutrition + + )} + + {numSelected > 0 ? ( + + + + + + ) : ( + + + + + + )} + + ); +} + +EnhancedTableToolbar.propTypes = { + numSelected: PropTypes.number.isRequired, +}; + +export default function EnhancedTable() { + const [order, setOrder] = React.useState('asc'); + const [orderBy, setOrderBy] = React.useState('calories'); + const [selected, setSelected] = React.useState([]); + const [page, setPage] = React.useState(0); + const [dense, setDense] = React.useState(false); + const [rowsPerPage, setRowsPerPage] = React.useState(5); + + const handleRequestSort = (event, property) => { + const isAsc = orderBy === property && order === 'asc'; + setOrder(isAsc ? 'desc' : 'asc'); + setOrderBy(property); + }; + + const handleSelectAllClick = (event) => { + if (event.target.checked) { + const newSelected = rows.map((n) => n.name); + setSelected(newSelected); + return; + } + setSelected([]); + }; + + const handleClick = (event, name) => { + const selectedIndex = selected.indexOf(name); + let newSelected = []; + + if (selectedIndex === -1) { + newSelected = newSelected.concat(selected, name); + } else if (selectedIndex === 0) { + newSelected = newSelected.concat(selected.slice(1)); + } else if (selectedIndex === selected.length - 1) { + newSelected = newSelected.concat(selected.slice(0, -1)); + } else if (selectedIndex > 0) { + newSelected = newSelected.concat( + selected.slice(0, selectedIndex), + selected.slice(selectedIndex + 1), + ); + } + + setSelected(newSelected); + }; + + const handleChangePage = (event, newPage) => { + setPage(newPage); + }; + + const handleChangeRowsPerPage = (event) => { + setRowsPerPage(parseInt(event.target.value, 10)); + setPage(0); + }; + + const handleChangeDense = (event) => { + setDense(event.target.checked); + }; + + const isSelected = (name) => selected.indexOf(name) !== -1; + + // 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; + + return ( + + + Sorting & Selecting + + + + + + + + + + {/* if you don't need to support IE11, you can replace the `stableSort` call with: + rows.sort(getComparator(order, orderBy)).slice() */} + {stableSort(rows, getComparator(order, orderBy)) + .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) + .map((row, index) => { + const isItemSelected = isSelected(row.name); + const labelId = `enhanced-table-checkbox-${index}`; + + return ( + handleClick(event, row.name)} + role="checkbox" + aria-checked={isItemSelected} + tabIndex={-1} + key={row.name} + selected={isItemSelected} + > + + + + + {row.name} + + {row.calories} + {row.fat} + {row.carbs} + {row.protein} + + ); + })} + {emptyRows > 0 && ( + + + + )} + +
    +
    + + +
    + + } + label="Dense padding" + /> +
    +
    + ); +} \ No newline at end of file diff --git a/components/UIElements/Tabs/BasicTabs.js b/components/UIElements/Tabs/BasicTabs.js new file mode 100644 index 0000000..397afcf --- /dev/null +++ b/components/UIElements/Tabs/BasicTabs.js @@ -0,0 +1,90 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + + ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.number.isRequired, + value: PropTypes.number.isRequired, +}; + +function a11yProps(index) { + return { + id: `simple-tab-${index}`, + 'aria-controls': `simple-tabpanel-${index}`, + }; +} + +export default function BasicTabs() { + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + return ( + <> + + + Basic Tabs + + + + + + + + + + + + Item One + + + Item Two + + + Item Three + + + + + ); +} diff --git a/components/UIElements/Tabs/ExperimentalAPI.js b/components/UIElements/Tabs/ExperimentalAPI.js new file mode 100644 index 0000000..de31963 --- /dev/null +++ b/components/UIElements/Tabs/ExperimentalAPI.js @@ -0,0 +1,56 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Tab from '@mui/material/Tab'; +import TabContext from '@mui/lab/TabContext'; +import TabList from '@mui/lab/TabList'; +import TabPanel from '@mui/lab/TabPanel'; + +export default function ExperimentalAPI() { + + const [value, setValue] = React.useState('1'); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Experimental API + + + + + + + + + + + + Item One + Item Two + Item Three + + + + + ); +} diff --git a/components/UIElements/Tabs/IconPosition.js b/components/UIElements/Tabs/IconPosition.js new file mode 100644 index 0000000..b63c45b --- /dev/null +++ b/components/UIElements/Tabs/IconPosition.js @@ -0,0 +1,53 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import PhoneIcon from '@mui/icons-material/Phone'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import PersonPinIcon from '@mui/icons-material/PersonPin'; +import PhoneMissedIcon from '@mui/icons-material/PhoneMissed'; + +export default function IconPosition() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Icon Position + + + + } label="top" /> + } iconPosition="start" label="start" /> + } iconPosition="end" label="end" /> + } iconPosition="bottom" label="bottom" /> + + + + ); +} diff --git a/components/UIElements/Tabs/IconTabs.js b/components/UIElements/Tabs/IconTabs.js new file mode 100644 index 0000000..1067b3e --- /dev/null +++ b/components/UIElements/Tabs/IconTabs.js @@ -0,0 +1,47 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import PhoneIcon from '@mui/icons-material/Phone'; +import FavoriteIcon from '@mui/icons-material/Favorite'; +import PersonPinIcon from '@mui/icons-material/PersonPin'; + +export default function IconTabs() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Icon Tabs + + + + } aria-label="phone" /> + } aria-label="favorite" /> + } aria-label="person" /> + + + + ); +} diff --git a/components/UIElements/Tabs/VerticalTabs.js b/components/UIElements/Tabs/VerticalTabs.js new file mode 100644 index 0000000..441b317 --- /dev/null +++ b/components/UIElements/Tabs/VerticalTabs.js @@ -0,0 +1,123 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PropTypes from 'prop-types'; +import Tabs from '@mui/material/Tabs'; +import Tab from '@mui/material/Tab'; +import Box from '@mui/material/Box'; + +function TabPanel(props) { + const { children, value, index, ...other } = props; + + return ( + + ); +} + +TabPanel.propTypes = { + children: PropTypes.node, + index: PropTypes.number.isRequired, + value: PropTypes.number.isRequired, +}; + +function a11yProps(index) { + return { + id: `vertical-tab-${index}`, + 'aria-controls': `vertical-tabpanel-${index}`, + }; +} + +export default function VerticalTabs() { + + const [value, setValue] = React.useState(0); + + const handleChange = (event, newValue) => { + setValue(newValue); + }; + + return ( + <> + + + Vertical Tabs + + + + + + + + + + + + + + + Item One + + + + Item Two + + + + Item Three + + + + Item Four + + + + Item Five + + + + Item Six + + + + Item Seven + + + + + ); +} diff --git a/components/UIElements/Tooltip/BasicTooltip.js b/components/UIElements/Tooltip/BasicTooltip.js new file mode 100644 index 0000000..181a5c4 --- /dev/null +++ b/components/UIElements/Tooltip/BasicTooltip.js @@ -0,0 +1,55 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Tooltip from '@mui/material/Tooltip'; +import IconButton from '@mui/material/IconButton'; +import Stack from '@mui/material/Stack'; +import DeleteIcon from '@mui/icons-material/Delete'; +import AlarmIcon from '@mui/icons-material/Alarm'; +import AddShoppingCartIcon from '@mui/icons-material/AddShoppingCart'; + +export default function BasicTooltip() { + return ( + <> + + + Basic Tooltip + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/components/UIElements/Tooltip/PositionedTooltips.js b/components/UIElements/Tooltip/PositionedTooltips.js new file mode 100644 index 0000000..93c6cec --- /dev/null +++ b/components/UIElements/Tooltip/PositionedTooltips.js @@ -0,0 +1,101 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Grid from '@mui/material/Grid'; +import Button from '@mui/material/Button'; +import Tooltip from '@mui/material/Tooltip'; + +export default function PositionedTooltips() { + return ( + <> + + + Positioned Tooltips + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    + + + View Demo + +
    + + ); +} diff --git a/components/UIElements/Transitions/CollapseTransitions.js b/components/UIElements/Transitions/CollapseTransitions.js new file mode 100644 index 0000000..5e73944 --- /dev/null +++ b/components/UIElements/Transitions/CollapseTransitions.js @@ -0,0 +1,93 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Collapse from '@mui/material/Collapse'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function CollapseTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Collapse + + + + } + label="Show" + /> + :not(style)': { + display: 'flex', + justifyContent: 'space-around', + height: 120, + width: 250, + }, + }} + > +
    + {icon} + + {icon} + +
    +
    + + + {icon} + + + + + {icon} + + +
    +
    +
    +
    + + ); +} diff --git a/components/UIElements/Transitions/FadeTransitions.js b/components/UIElements/Transitions/FadeTransitions.js new file mode 100644 index 0000000..f666c2e --- /dev/null +++ b/components/UIElements/Transitions/FadeTransitions.js @@ -0,0 +1,67 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Fade from '@mui/material/Fade'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function FadeTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Fade + + + + } + label="Show" + /> + + {icon} + + + + + ); +} diff --git a/components/UIElements/Transitions/GrowTransitions.js b/components/UIElements/Transitions/GrowTransitions.js new file mode 100644 index 0000000..8bd30c7 --- /dev/null +++ b/components/UIElements/Transitions/GrowTransitions.js @@ -0,0 +1,75 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Grow from '@mui/material/Grow'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function GrowTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Grow Transitions + + + + } + label="Show" + /> + + {icon} + {/* Conditionally applies the timeout prop to change the entry speed. */} + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/SlideRelativeToAContainer.js b/components/UIElements/Transitions/SlideRelativeToAContainer.js new file mode 100644 index 0000000..3bf88a2 --- /dev/null +++ b/components/UIElements/Transitions/SlideRelativeToAContainer.js @@ -0,0 +1,82 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Slide from '@mui/material/Slide'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); +export default function SlideRelativeToAContainer() { + + const [checked, setChecked] = React.useState(false); + const containerRef = React.useRef(null); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Slide Relative To A Container + + + + theme.palette.mode === 'light' ? 'grey.100' : 'grey.900', + overflow: 'hidden', + }} + ref={containerRef} + className="bg-black" + > + + } + label="Show from target" + /> + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/SlideTransitions.js b/components/UIElements/Transitions/SlideTransitions.js new file mode 100644 index 0000000..e672a3a --- /dev/null +++ b/components/UIElements/Transitions/SlideTransitions.js @@ -0,0 +1,69 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Slide from '@mui/material/Slide'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function SlideTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + Slide Transitions + + + + + } + label="Show" + /> + + {icon} + + + + + + ); +} diff --git a/components/UIElements/Transitions/ZoomTransitions.js b/components/UIElements/Transitions/ZoomTransitions.js new file mode 100644 index 0000000..91cfdc6 --- /dev/null +++ b/components/UIElements/Transitions/ZoomTransitions.js @@ -0,0 +1,70 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Switch from '@mui/material/Switch'; +import Paper from '@mui/material/Paper'; +import Zoom from '@mui/material/Zoom'; +import FormControlLabel from '@mui/material/FormControlLabel'; + +const icon = ( + + + theme.palette.common.white, + stroke: (theme) => theme.palette.divider, + strokeWidth: 1, + }} + points="0,100 50,00, 100,100" + /> + + +); + +export default function ZoomTransitions() { + + const [checked, setChecked] = React.useState(false); + + const handleChange = () => { + setChecked((prev) => !prev); + }; + + return ( + <> + + + ZoomTransitions + + + + } + label="Show" + /> + + {icon} + + {icon} + + + + + + ); +} diff --git a/components/_App/ControlPanelModal/DarkAndLightMode.js b/components/_App/ControlPanelModal/DarkAndLightMode.js new file mode 100644 index 0000000..a7d19b9 --- /dev/null +++ b/components/_App/ControlPanelModal/DarkAndLightMode.js @@ -0,0 +1,54 @@ +import React, { useState, useEffect } from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const DarkAndLightMode = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("theme"); + if (storedPreference === "dark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem("theme", isDarkMode ? "dark" : "light"); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector("html"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Dark/Light Mode

    + + +
    + + ); +}; + +export default DarkAndLightMode; diff --git a/components/_App/ControlPanelModal/DarkAndLightMode.module.css b/components/_App/ControlPanelModal/DarkAndLightMode.module.css new file mode 100644 index 0000000..5fd83dc --- /dev/null +++ b/components/_App/ControlPanelModal/DarkAndLightMode.module.css @@ -0,0 +1,11 @@ +.darkModeBox { + margin-bottom: 30px; +} +.darkModeBox h3 { + font-weight: 500; + border-bottom: 1px solid #eee !important; + padding-bottom: 5px; + margin: 0 0 15px 0; + font-size: 15px; + color: var(--headingColor) !important; +} \ No newline at end of file diff --git a/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js b/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js new file mode 100644 index 0000000..3780732 --- /dev/null +++ b/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode.js @@ -0,0 +1,56 @@ +import React, { useState, useEffect } from "react"; +import Button from "@mui/material/Button"; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const OnlyLeftSidebarDarkMode = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("leftSidebarTheme"); + if (storedPreference === "leftSidebarDark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem( + "leftSidebarTheme", isDarkMode ? "leftSidebarDark" : "light" + ); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector(".leftSidebarDark"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Only Left Sidebar Dark/Light Mode

    + + +
    + + ); +}; + +export default OnlyLeftSidebarDarkMode; diff --git a/components/_App/ControlPanelModal/OnlyTopNavbarDark.js b/components/_App/ControlPanelModal/OnlyTopNavbarDark.js new file mode 100644 index 0000000..c6aca18 --- /dev/null +++ b/components/_App/ControlPanelModal/OnlyTopNavbarDark.js @@ -0,0 +1,54 @@ +import React, { useState, useEffect } from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/DarkAndLightMode.module.css"; + +const OnlyTopNavbarDark = () => { + // Light/Dark Mode + const [isDarkMode, setIsDarkMode] = useState(false); + + useEffect(() => { + // Retrieve the user's preference from local storage + const storedPreference = localStorage.getItem("topNavbarDarkTheme"); + if (storedPreference === "TopNavbarDark") { + setIsDarkMode(true); + } + }, []); + + const handleToggle = () => { + setIsDarkMode(!isDarkMode); + }; + + useEffect(() => { + // Update the user's preference in local storage + localStorage.setItem("topNavbarDarkTheme", isDarkMode ? "TopNavbarDark" : "light"); + + // Update the class on the element to apply the selected mode + const htmlElement = document.querySelector(".topNavbarDark"); + if (isDarkMode) { + htmlElement.classList.add("dark"); + } else { + htmlElement.classList.remove("dark"); + } + }, [isDarkMode]); + + return ( + <> +
    +

    Only Top Navbar Dark/Light Mode

    + + +
    + + ); +}; + +export default OnlyTopNavbarDark; diff --git a/components/_App/ControlPanelModal/RTLSwitch.js b/components/_App/ControlPanelModal/RTLSwitch.js new file mode 100644 index 0000000..362b153 --- /dev/null +++ b/components/_App/ControlPanelModal/RTLSwitch.js @@ -0,0 +1,40 @@ +import React from "react"; +import Button from '@mui/material/Button'; +import styles from "@/components/_App/ControlPanelModal/RTLSwitch.module.css"; + +const RTLSwitch = () => { + return ( + <> +
    +

    LTR/RTL Demos

    + +
    + + + +
    +
    + + ); +}; + +export default RTLSwitch; diff --git a/components/_App/ControlPanelModal/RTLSwitch.module.css b/components/_App/ControlPanelModal/RTLSwitch.module.css new file mode 100644 index 0000000..5fd83dc --- /dev/null +++ b/components/_App/ControlPanelModal/RTLSwitch.module.css @@ -0,0 +1,11 @@ +.darkModeBox { + margin-bottom: 30px; +} +.darkModeBox h3 { + font-weight: 500; + border-bottom: 1px solid #eee !important; + padding-bottom: 5px; + margin: 0 0 15px 0; + font-size: 15px; + color: var(--headingColor) !important; +} \ No newline at end of file diff --git a/components/_App/ControlPanelModal/index.js b/components/_App/ControlPanelModal/index.js new file mode 100644 index 0000000..9bdb3db --- /dev/null +++ b/components/_App/ControlPanelModal/index.js @@ -0,0 +1,98 @@ +import React, { useState } from "react"; +import AppBar from '@mui/material/AppBar'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import CloseIcon from '@mui/icons-material/Close'; +import { Box } from "@mui/material"; +import Tooltip from "@mui/material/Tooltip"; +import Button from "@mui/material/Button"; +import RTLSwitch from '@/components/_App/ControlPanelModal/RTLSwitch'; +import DarkAndLightMode from '@/components/_App/ControlPanelModal/DarkAndLightMode'; +import OnlyLeftSidebarDarkMode from '@/components/_App/ControlPanelModal/OnlyLeftSidebarDarkMode'; +import OnlyTopNavbarDark from '@/components/_App/ControlPanelModal/OnlyTopNavbarDark'; + +export default function ControlPanelModal() { + + const [isActiveSearchModal, setActiveSearchModal] = useState("false"); + const handleToggleSearchModal = () => { + setActiveSearchModal(!isActiveSearchModal); + }; + + return ( + <> +
    + + +
    + +
    +
    + +
    + + + + + + + + Control Panel + + + + + + {/* DarkAndLightMode */} + + + {/* OnlyLeftSidebarDarkMode */} + + + {/* OnlyTopNavbarDark */} + + + {/* RTLSwitch */} + + + +
    + +
    +
    +
    + + ); +} \ No newline at end of file diff --git a/components/_App/Footer.js b/components/_App/Footer.js new file mode 100644 index 0000000..f7f50a7 --- /dev/null +++ b/components/_App/Footer.js @@ -0,0 +1,36 @@ +import React from "react"; +import { Stack, Box, Typography, Link } from "@mui/material"; + +const Footer = () => { + return ( + <> + + + + Copyright {' '} + CMS Client by {' '} + + Works + + + + + + ); +}; + +export default Footer; diff --git a/components/_App/Layout.js b/components/_App/Layout.js new file mode 100644 index 0000000..cee1751 --- /dev/null +++ b/components/_App/Layout.js @@ -0,0 +1,75 @@ +import React, { useState } from "react"; +import Head from "next/head"; +import { useRouter } from "next/router"; +import LeftSidebar from "@/components/_App/LeftSidebar"; +import TopNavbar from "@/components/_App/TopNavbar"; +import Footer from "@/components/_App/Footer"; +import ScrollToTop from "./ScrollToTop"; +import ControlPanelModal from "./ControlPanelModal"; + +const Layout = ({ children }) => { + const router = useRouter(); + + const [active, setActive] = useState(false); + + const toogleActive = () => { + setActive(!active); + }; + + return ( + <> + + + CMC - Client + + + + +
    + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) && ( + <> + + + + + )} + +
    + {children} + + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) &&
    } +
    +
    + + {/* ScrollToTop */} + + + {!( + router.pathname === "/authentication/sign-in" || + router.pathname === "/authentication/sign-up" || + router.pathname === "/authentication/forgot-password" || + router.pathname === "/authentication/lock-screen" || + router.pathname === "/authentication/confirm-mail" || + router.pathname === "/authentication/logout" + ) && + + } + + ); +}; + +export default Layout; diff --git a/components/_App/LeftSidebar/SidebarData.js b/components/_App/LeftSidebar/SidebarData.js new file mode 100644 index 0000000..69434c0 --- /dev/null +++ b/components/_App/LeftSidebar/SidebarData.js @@ -0,0 +1,516 @@ +import React from "react"; +import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight"; +import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; +import GridViewIcon from "@mui/icons-material/GridView"; +import LayersIcon from "@mui/icons-material/Layers"; +import CheckBoxOutlineBlankIcon from "@mui/icons-material/CheckBoxOutlineBlank"; +import ContentCopyIcon from "@mui/icons-material/ContentCopy"; +import LockIcon from "@mui/icons-material/Lock"; +import SettingsIcon from "@mui/icons-material/Settings"; +import PostAddIcon from "@mui/icons-material/PostAdd"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; +import AddchartIcon from "@mui/icons-material/Addchart"; +import CopyAllIcon from "@mui/icons-material/CopyAll"; +import ShoppingCartCheckoutIcon from "@mui/icons-material/ShoppingCartCheckout"; +import ViewQuiltIcon from "@mui/icons-material/ViewQuilt"; +import NotificationsNoneIcon from "@mui/icons-material/NotificationsNone"; + +export const SidebarData = [ + { + title: "Dashboard", + path: "/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "eCommerce", + path: "/ecommerce/", + }, + { + title: "Analytics", + path: "/analytics/", + }, + { + title: "Project Management", + path: "/project-management/", + }, + { + title: "LMS Courses", + path: "/lms-courses/", + }, + { + title: "Crypto", + path: "/crypto/", + }, + { + title: "Help/Support Desk", + path: "/help-desk/", + }, + { + title: "SaaS App", + path: "/saas-app/", + }, + ], + }, + { + title: "Apps", + path: "/apps/file-manager/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "File Manager", + path: "/apps/file-manager/", + }, + { + title: "Chat", + path: "/apps/chat/", + }, + { + title: "To Do", + path: "/apps/to-do/", + }, + { + title: "Calendar", + path: "/apps/calendar/", + }, + ], + }, + { + title: "Email", + path: "/email/inbox/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Inbox", + path: "/email/inbox/", + }, + { + title: "Read Email", + path: "/email/read-email/", + }, + ], + }, + { + title: "Contact List", + path: "/contact-list/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Contact List", + path: "/contact-list/", + }, + { + title: "Members Grid", + path: "/contact-list/contact-list2/", + }, + { + title: "Members List", + path: "/contact-list/members-list/", + }, + { + title: "Profile", + path: "/contact-list/profile/", + }, + ], + }, + { + title: "Projects", + path: "/projects/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Projects", + path: "/projects/", + }, + { + title: "Project Create", + path: "/projects/project-create/", + }, + { + title: "Clients", + path: "/projects/clients/", + }, + { + title: "Team", + path: "/projects/team/", + }, + { + title: "Task", + path: "/projects/task/", + }, + { + title: "User", + path: "/projects/user/", + }, + { + title: "Kanban board", + path: "/projects/kanban-board/", + }, + ], + }, + { + title: "Analytics", + path: "/analytics/customers/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Customers", + path: "/analytics/customers/", + }, + { + title: "Reports", + path: "/analytics/reports/", + }, + ], + }, + { + title: "eCommerce", + path: "/ecommerce/products/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Products", + path: "/ecommerce/products/", + }, + { + title: "Product Details", + path: "/ecommerce/product-details/", + }, + { + title: "Create Product", + path: "/ecommerce/create-product/", + }, + { + title: "Orders List", + path: "/ecommerce/orders-list/", + }, + { + title: "Order Details", + path: "/ecommerce/order-details/", + }, + { + title: "Customers", + path: "/ecommerce/customers/", + }, + { + title: "Cart", + path: "/ecommerce/cart/", + }, + { + title: "Checkout", + path: "/ecommerce/checkout/", + }, + { + title: "Sellers", + path: "/ecommerce/sellers/", + }, + ], + }, + { + title: "UI Elements", + path: "/ui-elements/alerts/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Alerts", + path: "/ui-elements/alerts/", + }, + { + title: "Autocomplete", + path: "/ui-elements/autocomplete/", + }, + { + title: "Avatar", + path: "/ui-elements/avatar/", + }, + { + title: "Badge", + path: "/ui-elements/badge/", + }, + { + title: "Buttons", + path: "/ui-elements/buttons/", + }, + { + title: "Cards", + path: "/ui-elements/cards/", + }, + { + title: "Checkbox", + path: "/ui-elements/checkbox/", + }, + { + title: "Swiper Slider", + path: "/ui-elements/swiper-slider/", + }, + { + title: "Radio", + path: "/ui-elements/radio/", + }, + { + title: "Rating", + path: "/ui-elements/rating/", + }, + { + title: "Select", + path: "/ui-elements/select/", + }, + { + title: "Slider", + path: "/ui-elements/slider/", + }, + { + title: "Switch", + path: "/ui-elements/switch/", + }, + { + title: "Chip", + path: "/ui-elements/chip/", + }, + { + title: "List", + path: "/ui-elements/list/", + }, + { + title: "Modal", + path: "/ui-elements/modal/", + }, + { + title: "Table", + path: "/ui-elements/table/", + }, + { + title: "Tooltip", + path: "/ui-elements/tooltip/", + }, + { + title: "Progress", + path: "/ui-elements/progress/", + }, + { + title: "Skeleton", + path: "/ui-elements/skeleton/", + }, + { + title: "Snackbar", + path: "/ui-elements/snackbar/", + }, + { + title: "Accordion", + path: "/ui-elements/accordion/", + }, + { + title: "Pagination", + path: "/ui-elements/pagination/", + }, + { + title: "Stepper", + path: "/ui-elements/stepper/", + }, + { + title: "Tabs", + path: "/ui-elements/tabs/", + }, + { + title: "Image List", + path: "/ui-elements/image-list/", + }, + { + title: "Transitions", + path: "/ui-elements/transitions/", + }, + ], + }, + { + title: "Forms", + path: "/forms/form-layouts/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Basic Elements", + path: "/forms/form-layouts/", + }, + { + title: "Advanced Elements", + path: "/forms/advanced-elements/", + }, + { + title: "Editors", + path: "/forms/editors/", + }, + { + title: "File Uploader", + path: "/forms/file-uploader/", + }, + ], + }, + { + title: "Pages", + path: "/pages/invoice/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Invoice", + path: "/pages/invoice/", + }, + { + title: "Invoice Details", + path: "/pages/invoice-details/", + }, + { + title: "ApexCharts", + path: "/pages/apexcharts/", + }, + { + title: "Recharts", + path: "/pages/recharts/", + }, + { + title: "Profile", + path: "/pages/profile/", + }, + { + title: "Pricing", + path: "/pages/pricing/", + }, + { + title: "Testimonials", + path: "/pages/testimonials/", + }, + { + title: "Timeline", + path: "/pages/timeline/", + }, + { + title: "FAQ", + path: "/pages/faq/", + }, + { + title: "Gallery", + path: "/pages/gallery/", + }, + { + title: "Support", + path: "/pages/support/", + }, + { + title: "Search", + path: "/pages/search/", + }, + { + title: "Material Icons", + path: "/pages/material-icons/", + }, + { + title: "Remixicon", + path: "/pages/remixicon/", + }, + { + title: "Maps", + path: "/pages/maps/", + }, + { + title: "404 Error Page", + path: "/404/", + }, + { + title: "Terms & Conditions", + path: "/pages/terms-conditions/", + }, + ], + }, + { + title: "Authentication", + path: "/authentication/sign-in/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Sign Up", + path: "/authentication/sign-up/", + }, + { + title: "Forgot Password", + path: "/authentication/forgot-password/", + }, + { + title: "Lock Screen", + path: "/authentication/lock-screen/", + }, + { + title: "Confirm Mail", + path: "/authentication/confirm-mail/", + }, + { + title: "Logout", + path: "/authentication/logout/", + }, + ], + }, + { + title: "Notification", + path: "/notification/", + icon: , + }, + { + title: "Settings", + path: "/settings/account/", + icon: , + iconClosed: , + iconOpened: , + + subNav: [ + { + title: "Account", + path: "/settings/account/", + }, + { + title: "Security", + path: "/settings/security/", + }, + { + title: "Privacy Policy", + path: "/settings/privacy-policy/", + }, + { + title: "Terms & Conditions", + path: "/pages/terms-conditions/", + }, + { + title: "Logout", + path: "/authentication/logout/", + }, + ], + }, +]; diff --git a/components/_App/LeftSidebar/SubMenu.js b/components/_App/LeftSidebar/SubMenu.js new file mode 100644 index 0000000..d1013e2 --- /dev/null +++ b/components/_App/LeftSidebar/SubMenu.js @@ -0,0 +1,63 @@ +import React, { useState, useEffect } from "react"; +import { styled } from "@mui/material/styles"; +import Link from "next/link"; +import styles from "@/components/_App/LeftSidebar/SubMenu.module.css"; +import { useRouter } from "next/router"; + +const SidebarLabel = styled("span")(({ theme }) => ({ + position: "relative", + top: "-3px", +})); + +const SubMenu = ({ item }) => { + const [subnav, setSubnav] = useState(false); + const showSubnav = () => setSubnav(!subnav); + const [currentPath, setCurrentPath] = useState(""); + const router = useRouter(); + // console.log(router.asPath) + + useEffect(() => { + setCurrentPath(router.asPath); + }, [router]); + + return ( + <> + +
    + {item.icon} + {item.title} +
    +
    + {item.subNav && subnav + ? item.iconOpened + : item.subNav + ? item.iconClosed + : null} +
    + + {subnav && + item.subNav.map((item, index) => { + return ( + + {item.icon} + {item.title} + + ); + })} + + ); +}; + +export default SubMenu; diff --git a/components/_App/LeftSidebar/SubMenu.module.css b/components/_App/LeftSidebar/SubMenu.module.css new file mode 100644 index 0000000..4c456af --- /dev/null +++ b/components/_App/LeftSidebar/SubMenu.module.css @@ -0,0 +1,92 @@ +.sidebarLink { + display: flex; + color: #260944; + justify-content: space-between; + align-items: center; + padding: 9px 20px; + text-decoration: none; + font-size: 14.5px; + border-radius: 5px; + font-weight: 500; + margin-top: 3px; + margin-bottom: 3px; +} +.sidebarLink svg { + fill: #818093; + position: relative; + top: 2px; +} +.sidebarLink:hover { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} +.sidebarLink2 { + display: block; + color: #5B5B98; + justify-content: space-between; + align-items: center; + padding: 9px 20px 9px 50px; + text-decoration: none; + font-size: 14px; + border-radius: 5px; + font-weight: 500; + position: relative; +} +.sidebarLink2::before { + content: ""; + background-color: #818093; + width: 6px; + height: 6px; + border-radius: 100%; + position: absolute; + left: 30px; + top: 16px; +} +.sidebarLink2:hover::before { + background-color: #fff; +} +.sidebarLink2:hover { + background: #757FEF; + color: #fff; +} + +/* For RTL Style */ +[dir=rtl] .sidebarLink2 { + padding: 9px 50px 9px 20px; +} +[dir=rtl] .sidebarLink2::before { + left: auto; + right: 30px; +} + +/* For dark mode */ +[class="dark"] .sidebarLink, [class="leftSidebarDark dark"] .sidebarLink { + color: #f3f3f3; +} +[class="dark"] .sidebarLink svg, [class="leftSidebarDark dark"] .sidebarLink svg { + fill: #f3f3f3; +} +[class="dark"] .sidebarLink span, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #f3f3f3; +} +[class="dark"] .sidebarLink:hover, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #fff; +} +[class="dark"] .sidebarLink:hover span, [class="leftSidebarDark dark"] .sidebarLink svg { + color: #fff; +} +[class="dark"] .sidebarLink:hover svg, [class="leftSidebarDark dark"] .sidebarLink svg { + fill: #fff; +} + +[class="dark"] .sidebarLink2, [class="leftSidebarDark dark"] .sidebarLink2 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .sidebarLink2 span, [class="leftSidebarDark dark"] .sidebarLink2 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .sidebarLink2:hover, [class="leftSidebarDark dark"] .sidebarLink2 { + color: #fff; +} +[class="dark"] .sidebarLink2:hover span, [class="leftSidebarDark dark"] .sidebarLink2 { + color: #fff; +} \ No newline at end of file diff --git a/components/_App/LeftSidebar/index.js b/components/_App/LeftSidebar/index.js new file mode 100644 index 0000000..2726187 --- /dev/null +++ b/components/_App/LeftSidebar/index.js @@ -0,0 +1,82 @@ +import React from 'react'; +import { + Box +} from "@mui/material"; +import { styled } from "@mui/material/styles"; +import { SidebarData } from './SidebarData'; +import SubMenu from './SubMenu'; +import Link from 'next/link'; +import ClearIcon from '@mui/icons-material/Clear'; +import IconButton from '@mui/material/IconButton'; + +const SidebarNav = styled("nav")(({ theme }) => ({ + background: '#fff', + boxShadow: "0px 4px 20px rgba(47, 143, 232, 0.07)", + width: '300px', + padding: '30px 10px', + height: '100vh', + display: 'flex', + justifyContent: 'center', + position: 'fixed', + top: 0, + left: 0, + transition: '350ms', + zIndex: '10', + overflowY: 'auto' +})); + +const SidebarWrap = styled("div")(({ theme }) => ({ + width: '100%' +})); + +const Sidebar = ({ toogleActive }) => { + return ( + <> +
    + + + + + Logo + + {/* For Dark Variation */} + Logo + + + + + + + + {SidebarData.map((item, index) => { + return ; + })} + + +
    + + ); +}; + +export default Sidebar; diff --git a/components/_App/ScrollToTop.js b/components/_App/ScrollToTop.js new file mode 100644 index 0000000..0f0b429 --- /dev/null +++ b/components/_App/ScrollToTop.js @@ -0,0 +1,40 @@ +import React, { useState, useEffect } from "react"; + +const ScrollToTop = () => { + const [showScroll, setShowScroll] = useState(false); + + useEffect(() => { + window.addEventListener("scroll", checkScrollTop); + return function cleanup() { + window.removeEventListener("scroll", checkScrollTop); + }; + }); + + const checkScrollTop = () => { + if (!showScroll && window.pageYOffset > 100) { + setShowScroll(true); + } else if (showScroll && window.pageYOffset <= 100) { + setShowScroll(false); + } + }; + + const scrollTop = () => { + window.scrollTo({ top: 0, behavior: "smooth" }); + }; + + return ( + <> +
    + +
    + + ); +}; + +export default ScrollToTop; diff --git a/components/_App/TopNavbar/CurrentDate.js b/components/_App/TopNavbar/CurrentDate.js new file mode 100644 index 0000000..74fda3d --- /dev/null +++ b/components/_App/TopNavbar/CurrentDate.js @@ -0,0 +1,24 @@ +import React, { useState, useEffect } from 'react'; +import styles from "@/components/_App/TopNavbar/CurrentDate.module.css"; + +function CurrentDate() { + const [currentDate, setCurrentDate] = useState(''); + + useEffect(() => { + const options = { day: '2-digit', month: 'long', year: 'numeric' }; + const formatter = new Intl.DateTimeFormat('en-US', options); + const date = new Date(); + setCurrentDate(formatter.format(date)); + }, []); + + return ( + <> +
    + + {currentDate} +
    + + ); +} + +export default CurrentDate; diff --git a/components/_App/TopNavbar/CurrentDate.module.css b/components/_App/TopNavbar/CurrentDate.module.css new file mode 100644 index 0000000..8892a2c --- /dev/null +++ b/components/_App/TopNavbar/CurrentDate.module.css @@ -0,0 +1,31 @@ +.currentDate { + border: 1px solid #E2E8F0; + border-radius: 4px; + display: flex; + align-items: center; + color: var(--primaryColor); + padding: 10px 20px 10px 50px; + font-weight: 500; + font-size: 14px; + position: relative; +} +.currentDate i { + margin-right: 10px; + font-size: 20px; + position: absolute; + left: 20px; +} + +@media only screen and (max-width: 767px) { + .currentDate { + display: none; + } +} + +/* For dark mode */ +[class="dark"] .currentDate { + border: 1px solid #373a40; +} +[class="topNavbarDark dark"] .currentDate { + border: 1px solid #373a40; +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Email.js b/components/_App/TopNavbar/Email.js new file mode 100644 index 0000000..553c9af --- /dev/null +++ b/components/_App/TopNavbar/Email.js @@ -0,0 +1,225 @@ +import * as React from "react"; +import styles from "@/components/_App/TopNavbar/Email.module.css"; +import { + IconButton, + Button, + Typography, + Tooltip, + Menu, + Link, +} from "@mui/material"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; + +const Email = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + +
    + Emails + +
    + +
    +
    +
    + User + + + Invoices have been paid + + + Lorem ipsum dolor sit amet, consectetur... + + +
    + + + 1 min ago + +
    + +
    +
    + User + + + Allow users to like products + + + Sed ut perspiciatis unde omnis iste natus... + + +
    + + + 2 min ago + +
    + +
    +
    + User + + + Sales report + + + At vero eos et accusamus et iusto odio... + + +
    + + + 3 min ago + +
    + + + + View All{" "} + + + + + +
    +
    + + ); +}; + +export default Email; diff --git a/components/_App/TopNavbar/Email.module.css b/components/_App/TopNavbar/Email.module.css new file mode 100644 index 0000000..b51d293 --- /dev/null +++ b/components/_App/TopNavbar/Email.module.css @@ -0,0 +1,41 @@ +.header { + border-bottom: 1px solid #eee; + display: flex; + align-items: center; + justify-content: space-between; +} +.header h4 { + font-size: 16px; + color: #030229; + font-weight: 500; +} +.header button { + text-transform: capitalize; +} +.notificationList { + padding-top: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #EEF0F7; + max-width: 300px; + width: 100%; + cursor: pointer; +} +.notificationListContent { + display: flex; + align-items: center; +} +.rightArrow { + position: relative; + top: 2px; +} + +/* For Dark Mode */ +[class="dark"] .header { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .header h4 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .notificationList { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Notification.js b/components/_App/TopNavbar/Notification.js new file mode 100644 index 0000000..c36f452 --- /dev/null +++ b/components/_App/TopNavbar/Notification.js @@ -0,0 +1,179 @@ +import * as React from "react"; +import styles from "@/components/_App/TopNavbar/Notification.module.css"; +import { + IconButton, + Button, + Typography, + Tooltip, + Menu, + Link, + Badge, +} from "@mui/material"; +import NotificationsActiveIcon from "@mui/icons-material/NotificationsActive"; + +const Notification = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + + + +
    + Notifications + +
    +
    +
    + + 8 Invoices have been paid + + +
    + PDF Icon + + Invoices have been paid to the company. + +
    + + + 11:47 PM Wednesday + +
    + +
    + + Create a new project for client + + +
    + avatar Img + + Allow users to like products in your WooCommerce + +
    + + + 2:00 PM Wednesday + +
    + + + + View All{" "} + + + + + +
    +
    + + ); +}; + +export default Notification; diff --git a/components/_App/TopNavbar/Notification.module.css b/components/_App/TopNavbar/Notification.module.css new file mode 100644 index 0000000..f4cff4a --- /dev/null +++ b/components/_App/TopNavbar/Notification.module.css @@ -0,0 +1,64 @@ +.header { + border-bottom: 1px solid #eee; + display: flex; + align-items: center; + justify-content: space-between; +} +.header h4 { + font-size: 16px; + color: #030229; + font-weight: 500; +} +.header button { + text-transform: capitalize; +} +.notificationList { + position: relative; + padding-left: 20px; + padding-top: 15px; + padding-bottom: 15px; + border-bottom: 1px solid #EEF0F7; + max-width: 255px; + width: 100%; + cursor: pointer; +} +.notificationList::before { + content: ''; + position: absolute; + left: 0; + top: 17px; + 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%; +} +.notificationListContent { + display: flex; + align-items: center; +} +.rightArrow { + position: relative; + top: 2px; +} + +/* For RTL Style */ +[dir=rtl] .notificationList { + padding-left: 0; + padding-right: 20px; +} +[dir=rtl] .notificationList::before { + left: auto; + right: 0; +} + +/* For Dark Mode */ +[class="dark"] .header { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .header h4 { + color: var(--darkHeadingTextColor); +} +[class="dark"] .notificationList { + border-bottom: 1px solid var(--borderColor); +} \ No newline at end of file diff --git a/components/_App/TopNavbar/Profile.js b/components/_App/TopNavbar/Profile.js new file mode 100644 index 0000000..e3a28fa --- /dev/null +++ b/components/_App/TopNavbar/Profile.js @@ -0,0 +1,199 @@ +import * as React from "react"; +import { + IconButton, + Typography, + Box, + Tooltip, + Avatar, + Menu, + MenuItem, + Link, + ListItemIcon, + Divider, +} from "@mui/material"; +import PersonIcon from "@mui/icons-material/Person"; +import Settings from "@mui/icons-material/Settings"; +import MailOutlineIcon from "@mui/icons-material/MailOutline"; +import ChatBubbleOutlineIcon from "@mui/icons-material/ChatBubbleOutline"; +import AttachMoneyIcon from "@mui/icons-material/AttachMoney"; +import Logout from "@mui/icons-material/Logout"; + +const Profile = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + return ( + <> + + + + + + + + + + + + Admin + + + Adison Jeck + + + + + + + + + + + + Profile + + + + + + + + + Inbox + + + + + + + + + Chat + + + + + + + + + Settings + + + + + + + + + Pricing + + + + + + + + + + + + Logout + + + + + ); +}; + +export default Profile; diff --git a/components/_App/TopNavbar/SearchForm.js b/components/_App/TopNavbar/SearchForm.js new file mode 100644 index 0000000..f412fa7 --- /dev/null +++ b/components/_App/TopNavbar/SearchForm.js @@ -0,0 +1,69 @@ +import * as React from "react"; +import { styled, alpha } from "@mui/material/styles"; +import InputBase from "@mui/material/InputBase"; +import SearchIcon from "@mui/icons-material/Search"; + +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: "15px", + width: "100%", + [theme.breakpoints.up("sm")]: { + 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", + "& .MuiInputBase-input": { + backgroundColor: "#F5F7FA", + borderRadius: "30px", + padding: theme.spacing(1.4, 0, 1.4, 2), + // vertical padding + font size from searchIcon + paddingRight: `calc(1em + ${theme.spacing(4)})`, + transition: theme.transitions.create("width"), + width: "100%", + [theme.breakpoints.up("sm")]: { + width: "260px", + "&:focus": { + width: "280px", + }, + }, + }, +})); + +export default function SearchForm() { + return ( + <> + + + + + + + + + ); +} diff --git a/components/_App/TopNavbar/TopNavbar.module.css b/components/_App/TopNavbar/TopNavbar.module.css new file mode 100644 index 0000000..e69de29 diff --git a/components/_App/TopNavbar/index.js b/components/_App/TopNavbar/index.js new file mode 100644 index 0000000..5b893ab --- /dev/null +++ b/components/_App/TopNavbar/index.js @@ -0,0 +1,62 @@ +import * as React from "react"; +import { AppBar, Toolbar, IconButton, Stack, Typography } from "@mui/material"; +import SearchForm from "./SearchForm"; +import Email from "./Email"; +import Notification from "./Notification"; +import Profile from "./Profile"; +import Tooltip from "@mui/material/Tooltip"; +import CurrentDate from "./CurrentDate"; + +const TopNavbar = ({ toogleActive }) => { + return ( + <> +
    + + + + + + + + + {/* Search form */} + + + + + + {/* CurrentDate */} + + + {/* Notification */} + + + {/* Notification */} + + + {/* Profile */} + + + + +
    + + ); +}; + +export default TopNavbar; diff --git a/components/eCommerce/Cart/HaveAPromoCode.js b/components/eCommerce/Cart/HaveAPromoCode.js new file mode 100644 index 0000000..ee76683 --- /dev/null +++ b/components/eCommerce/Cart/HaveAPromoCode.js @@ -0,0 +1,78 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; + +const HaveAPromoCode = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + return ( + <> + + + Have a Promo Code? + + + + + + + + + + ); +}; + +export default HaveAPromoCode; diff --git a/components/eCommerce/Cart/OrderSummary.js b/components/eCommerce/Cart/OrderSummary.js new file mode 100644 index 0000000..abec661 --- /dev/null +++ b/components/eCommerce/Cart/OrderSummary.js @@ -0,0 +1,188 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import AddIcon from "@mui/icons-material/Add"; +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'; + +const OrderSummary = () => { + return ( + <> + + + Order Summary + + + + + + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ) +} + +export default OrderSummary; \ No newline at end of file diff --git a/components/eCommerce/Cart/ShoppingCart.js b/components/eCommerce/Cart/ShoppingCart.js new file mode 100644 index 0000000..2c6df9c --- /dev/null +++ b/components/eCommerce/Cart/ShoppingCart.js @@ -0,0 +1,562 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, 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 IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/Delete'; +import { TextareaAutosize } from '@mui/base/TextareaAutosize'; +import Button from '@mui/material/Button'; +import ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import Tooltip from '@mui/material/Tooltip'; +import Link from 'next/link'; + +const ShoppingCart = () => { + return ( + <> + + + Shopping Cart + + + + + + + + Product + + + + Price + + + + Quantity + + + + Total Amount + + + + Action + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + 02 + + + + $200 + + + + + + + + + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + 01 + + + + $200 + + + + + + + + + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + + + + + +
    +
    + + + Add a Note: + + + + + + + + +
    + + ) +} + +export default ShoppingCart; \ No newline at end of file diff --git a/components/eCommerce/Checkout/BillingInformation.js b/components/eCommerce/Checkout/BillingInformation.js new file mode 100644 index 0000000..6d56a4d --- /dev/null +++ b/components/eCommerce/Checkout/BillingInformation.js @@ -0,0 +1,334 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +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 RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const BillingInformation = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select dropdown + const [countrySelect, setCountrySelect] = React.useState(''); + const handleChange = (event) => { + setCountrySelect(event.target.value); + }; + + return ( + <> + + + + Billing Information + + + + + + First Name + + + + + + + + Last Name + + + + + + + + Email Address + + + + + + + + Phone + + + + + + + + Address + + + + + + + + Country + + + + Select + + + + + + + Town/City + + + + + + + + + State + + + + + + + + Zip Code + + + + + + + + Order Notes : + + + + + + + + + + + + + ) +} + +export default BillingInformation; \ No newline at end of file diff --git a/components/eCommerce/Checkout/ShoppingCart.js b/components/eCommerce/Checkout/ShoppingCart.js new file mode 100644 index 0000000..b6aaf00 --- /dev/null +++ b/components/eCommerce/Checkout/ShoppingCart.js @@ -0,0 +1,440 @@ +import * as React from "react"; +import Card from "@mui/material/Card"; +import { Box, 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"; + +const ShoppingCart = () => { + return ( + <> + + + Shopping Cart + + + + + + + + Product + + + + Price + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ); +}; + +export default ShoppingCart; diff --git a/components/eCommerce/Customers/CustomersLists.js b/components/eCommerce/Customers/CustomersLists.js new file mode 100644 index 0000000..8cdbef1 --- /dev/null +++ b/components/eCommerce/Customers/CustomersLists.js @@ -0,0 +1,965 @@ +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 Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +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 Checkbox from '@mui/material/Checkbox'; +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'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new 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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new Modal + +function CustomersList(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +CustomersList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, image, userName, email, phone, balance, orders, status, badgeClass, joiningDate, projects) { + return { + name, + image, + userName, + email, + phone, + balance, + orders, + status, + badgeClass, + joiningDate, + projects, + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "/images/user1.png", + "@jstevenson5c", + "jordansteve@gmail.com", + "0018 5054 8877", + "$3365.12", + "165", + "Active", + "successBadge", + "Jan 1, 2023", + ), + createData( + "Candice Munoz", + "/images/user2.png", + "@candice3unoz", + "candicemunoz@gmail.com", + "0018 5054 7532", + "$3550", + "112", + "Active", + "successBadge", + "Jan 2, 2023", + ), + createData( + "Mike Mcclain", + "/images/user3.png", + "@mike4mcclain", + "mikemcclain@gmail.com", + "0018 3567 8422", + "$3928", + "240", + "Deactivate", + "dangerBadge", + "Jan 3, 2023", + ), + createData( + "Bernard Langley", + "/images/user4.png", + "@bernardlangley", + "bernardlangley@gmail.com", + "0018 9382 4820", + "$4932", + "350", + "Active", + "successBadge", + "Jan 4, 2023", + ), + createData( + "Kristie Hall", + "/images/user5.png", + "@kristie7hall", + "kristiehall@gmail.com", + "0018 4663 5732", + "$4922", + "384", + "Active", + "successBadge", + "Jan 5, 2023", + ), + createData( + "Bolton Obrien", + "/images/user6.png", + "@bolton4obrien", + "boltonobrien@gmail.com", + "0018 5743 5657", + "$4663.12", + "145", + "Active", + "successBadge", + "Jan 6, 2023", + ), + createData( + "Dee Alvarado", + "/images/user7.png", + "@dee3alvarado", + "deealvarado@gmail.com", + "0018 4532 6666", + "$2343.12", + "435", + "Active", + "successBadge", + "Jan 7, 2023", + ), + createData( + "Cervantes Kramer", + "/images/user8.png", + "@cervantes4kramer", + "cervantes4kramer@gmail.com", + "0018 54545 7878", + "$345", + "24", + "Active", + "successBadge", + "Jan 8, 2023", + ), + createData( + "Dejesus Michael", + "/images/user9.png", + "@dejesus1michael", + "dejesusmichael@gmail.com", + "0018 3552 6678", + "$3365.12", + "56", + "Active", + "successBadge", + "Jan 9, 2023", + ), + createData( + "Alissa Nelson", + "/images/user10.png", + "@alissa1nelson", + "alissa1nelson@gmail.com", + "0018 3354 6822", + "$3522.12", + "165", + "Active", + "successBadge", + "Jan 10, 2023", + ), + createData( + "Milton", + "/images/user11.png", + "@milton", + "milton@gmail.com", + "0018 366 2232", + "$3434", + "222", + "Active", + "successBadge", + "Jan 11, 2023", + ), + createData( + "Claude", + "/images/user12.png", + "@claude", + "claude@gmail.com", + "0018 4614 23211", + "$4554.12", + "673", + "Active", + "successBadge", + "Jan 12, 2023", + ), + createData( + "Joshua", + "/images/user13.png", + "@joshua", + "joshua@gmail.com", + "0018 3354 2532", + "$2434.12", + "463", + "Active", + "successBadge", + "Jan 13, 2023", + ), + createData( + "Harvey", + "/images/user14.png", + "@harvey", + "harvey@gmail.com", + "0018 3331 2224", + "$453.12", + "445", + "Active", + "successBadge", + "Jan 14, 2023", + ), + createData( + "Antonio", + "/images/user15.png", + "@antonio", + "antonio@gmail.com", + "0018 3354 6822", + "$3522.12", + "165", + "Active", + "successBadge", + "Jan 15, 2023", + ), + createData( + "Julian", + "/images/user16.png", + "@julian", + "julian@gmail.com", + "0018 4322 1231", + "$455.12", + "165", + "Active", + "successBadge", + "Jan 16, 2023", + ), + createData( + "Harold", + "/images/user17.png", + "@harold", + "harold@gmail.com", + "0018 455 3323", + "$3422.12", + "564", + "Active", + "successBadge", + "Jan 17, 2023", + ), + createData( + "Kingston", + "/images/user18.png", + "@kingston", + "kingston@info.com", + "0018 3453 4325", + "$442.12", + "6776", + "Active", + "successBadge", + "Jan 18, 2023", + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function CustomersLists() { + // 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); + }; + + // Create new 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 Create new Modal + + return ( + <> + + + + Customers Lists + + + + + + + + + + + Name + + + + Email + + + + Phone + + + + Balance + + + + Orders + + + + Status + + + + Joining Date + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.phone} + + + + {row.balance} + + + + {row.orders} + + + + {row.status} + + + + {row.joiningDate} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new modal */} + + + + + Create New + + + + + + + + + + + + + Image + + + + + + + Name + + + + + + + User Name + + + + + + + Email + + + + + + + Phone Number + + + + + + + Balance + + + + + + + + + + + + + + ); +} diff --git a/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js b/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js new file mode 100644 index 0000000..a1ac749 --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/OrderTable.js @@ -0,0 +1,612 @@ +import * as React from 'react'; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import AddIcon from "@mui/icons-material/Add"; +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'; + +const OrderTable = () => { + return ( + <> + + + + Order #VL2667 + + + + + + + + + + + Product + + + + Price + + + + Quantity + + + + Total Amount + + + + + + + + + Product Img + + Laptop Macos Pro + + + + + + $100.00 + + + + 02 + + + + $200 + + + + + + + Product Img + + Smart Camera XD6 + + + + + + $200.00 + + + + 01 + + + + $200 + + + + + + + Product Img + + Pixi 8 Wireless Airphone + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + Product Img + + Jebble Smart Watch + + + + + + $120.00 + + + + 01 + + + + $120 + + + + + + + Product Img + + Airpod + + + + + + $120.00 + + + + 01 + + + + $120 + + + + {/* For Total Amount */} + + + Sub Total : + + + + $760.00 + + + + + + Discount : + + + + $60.00 + + + + + + Shipping Charge : + + + + $50.00 + + + + + + Estimated Tax : + + + + $00.00 + + + + + + Total (USD) : + + + + $750.00 + + + +
    +
    +
    + + ) +} + +export default OrderTable; \ No newline at end of file diff --git a/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css b/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css new file mode 100644 index 0000000..79b79ac --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css @@ -0,0 +1,73 @@ +.timelineList .tList { + position: relative; + padding-left: 20px; + margin-bottom: 16px; + padding-bottom: 16px; + 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 10px; +} +.timelineList .tList .date { + color: #A9A9C8; + font-size: 12px; + margin: 0; +} +.timelineList .tList .text { + margin: 10px 0 0; + font-size: 13px; +} + + +/* 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; +} + +/* For dark mode */ +[class="dark"] .timelineList .tList { + border-bottom: 1px solid var(--borderColor); +} +[class="dark"] .timelineList .tList:last-child { + border-bottom: none; +} +.timelineList .tList::after { + background: var(--borderColor); +} \ No newline at end of file diff --git a/components/eCommerce/OrderDetails/TrackOrder/index.js b/components/eCommerce/OrderDetails/TrackOrder/index.js new file mode 100644 index 0000000..a8ad578 --- /dev/null +++ b/components/eCommerce/OrderDetails/TrackOrder/index.js @@ -0,0 +1,124 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import styles from "@/components/eCommerce/OrderDetails/TrackOrder/TrackOrder.module.css"; + +const ActivityTimelineData = [ + { + id: "1", + title: "Order Placed", + date: "April 21 2019 07:22 AM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "2", + title: "Packed", + date: "April 22 2019 12:16 AM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "3", + title: "Shipped", + date: "April 22 2019 05:16 PM", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, + { + id: "4", + title: "Delivered", + date: "Estimated Delivery Within 3 Days", + text: "There are many variations of passages of Lorem Ipsum available, but the majority have suffered.", + }, +]; + +const TrackOrder = () => { + return ( + <> + + + Track Order + + + + + + Order ID: + + + + #VL2667 + + + + + + Tracking ID: + + + + 1004152012012 + + + + +
    + {ActivityTimelineData.slice(0, 4).map((timeline) => ( +
    +

    {timeline.title}

    +

    {timeline.date}

    +

    + {timeline.text} +

    +
    + ))} +
    +
    + + ); +}; + +export default TrackOrder; diff --git a/components/eCommerce/OrdersList/Features.js b/components/eCommerce/OrdersList/Features.js new file mode 100644 index 0000000..eb0090c --- /dev/null +++ b/components/eCommerce/OrdersList/Features.js @@ -0,0 +1,170 @@ +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, + iconName: "ri-money-dollar-circle-line", + progress: "1.3%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "All Orders", + number: "18k", + }, + { + id: 2, + title: "Pending Orders", + number: "5k", + }, + { + id: 3, + title: "Complited Orders", + number: "13k", + } + ] + }, + { + id: 2, + iconName: "ri-bar-chart-line", + progress: "50%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "Canceled", + number: "2k", + }, + { + id: 2, + title: "Orders Returned", + number: "3k", + }, + { + id: 3, + title: "Damaged", + number: "1k", + } + ] + }, + { + id: 3, + iconName: "ri-star-fill", + progress: "70%", + title: "Up from past week", + lists: [ + { + id: 1, + title: "Abandoned Cart", + number: "5k", + }, + { + id: 2, + title: "Customers", + number: "10k", + }, + { + id: 3, + title: "In Progress", + number: "16k", + } + ] + }, +] + +const Features = () => { + return ( + <> + + {featuresData.map((feature) => ( + + + + + + + + + {feature.progress} {feature.title} + + + + + {feature.lists.map((list) => ( + + + {list.title} + + + + {list.number} + + + ))} + + + + ))} + + + ) +} + +export default Features; \ No newline at end of file diff --git a/components/eCommerce/OrdersList/OrdersLists.js b/components/eCommerce/OrdersList/OrdersLists.js new file mode 100644 index 0000000..df76bf2 --- /dev/null +++ b/components/eCommerce/OrdersList/OrdersLists.js @@ -0,0 +1,679 @@ +import * as 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 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"; + +function OrdersList(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +OrdersList.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating +) { + return { + orderID, + productImg, + productTitle, + customer, + price, + vendor, + date, + status, + badgeClass, + rating, + }; +} + +const rows = [ + createData( + "#SK258", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK259", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK260", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK261", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK262", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK263", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK264", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK265", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK266", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK267", + "/images/product1.png", + "Laptop Macos Pro", + "Colin Firth", + "$289.50", + "Boetic Fashion", + "2021-12-19", + "Pending", + "primaryBadge", + "5.0 (61 votes)" + ), + createData( + "#SK268", + "/images/product2.png", + "Smart Camera XD6", + "Wade Dave", + "$189.50", + "Aronic Conver", + "2021-12-19", + "Out of Stock", + "dangerBadge", + "5.0 (61 votes)" + ), + createData( + "#SK269", + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Seth Riley", + "$250.50", + "Lotu Arnich", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK270", + "/images/product4.png", + "Jebble Smart Watch", + "Gilbert Dan", + "$289.50", + "Zoetic Fashion", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK271", + "/images/product5.png", + "Admas Airpod x-Zon", + "Joshua Glen", + "$289.50", + "Airpod", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK272", + "/images/product6.png", + "Smart Satch F8 Pro", + "Lewis Milton", + "$289.50", + "Smart Satch", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK273", + "/images/product7.png", + "Nord Fold ZL", + "Liam Ethan", + "$289.50", + "Nord", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK274", + "/images/product8.png", + "Wall Clock Cimbina", + "Ramon Miles", + "$289.50", + "Clock", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), + createData( + "#SK275", + "/images/product9.png", + "Galaxo T6 Munsun", + "Brian Roberto", + "$289.50", + "Smart Phone", + "2021-12-19", + "Delivered", + "successBadge", + "5.0 (61 votes)" + ), +].sort((a, b) => (a.orderID < b.orderID ? -1 : 1)); + +export default function OrdersLists() { + // Select + const [select, setSelect] = React.useState(""); + const handleChange = (event) => { + setSelect(event.target.value); + }; + + // 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 ( + <> + + + + Recent Orders + + + + + + Select + + + + + + + + + + + + Order ID + + + + Product + + + + Customer + + + + Price + + + + Vendor + + + + Date + + + + Status + + + + Rating + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + {row.orderID} + + + + + Product Img + + {row.productTitle} + + + + + + {row.customer} + + + + {row.price} + + + + {row.vendor} + + + + {row.date} + + + + {row.status} + + + + {row.rating} + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + ); +} diff --git a/components/eCommerce/ProductDetails/ProductDescription.js b/components/eCommerce/ProductDetails/ProductDescription.js new file mode 100644 index 0000000..c63b399 --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDescription.js @@ -0,0 +1,23 @@ +import React from 'react'; + +const ProductDescription = () => { + return ( + <> +
    +

    Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    + +
      +
    • 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.
    • + +
    • Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
    • +
    + +

    At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio.

    + +

    On the other hand, we denounce with righteous indignation and dislike men who are so beguiled and demoralized by the charms of pleasure of the moment, so blinded by desire, that they cannot foresee the pain and trouble that are bound to ensue; and equal blame belongs to those who fail in their duty through weakness of will, which is the same as saying through shrinking from toil and pain.

    +
    + + ) +} + +export default ProductDescription; \ No newline at end of file diff --git a/components/eCommerce/ProductDetails/ProductDetailsContent.js b/components/eCommerce/ProductDetails/ProductDetailsContent.js new file mode 100644 index 0000000..ed62096 --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDetailsContent.js @@ -0,0 +1,177 @@ +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 StarIcon from "@mui/icons-material/Star"; +import Button from "@mui/material/Button"; +import ShoppingCartIcon from "@mui/icons-material/ShoppingCart"; +import { Swiper, SwiperSlide } from "swiper/react"; +import { Navigation } from "swiper"; +import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; +import styles from "@/components/eCommerce/ProductDetails/ProductDetailsContent.module.css"; +import ProductDescription from "./ProductDescription"; +import ProductReviews from "./ProductReviews"; + +const ProductDetailsContent = () => { + return ( + <> + + + + + + product + + + + product + + + + product + + + + + + + + Black T-Shirt Sleeve + + + + + + + + + + + 5.0 (61 votes) + + + + + Price:{" "} + + $200 + {" "} + $150 + + + + Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do + eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut + enim adlino minim veniam, quis nostrud exercitation ullamco + laboris nisi ut aliquip ex ea commodo consequat. + + +
      +
    • + Category : T-Shirt +
    • +
    • + Availability : In Stock 10 Items +
    • +
    + + + + +
    +
    +
    + + + + + Description + Reviews (3) + + + + {/* ProductDescription */} + + + + + {/* ProductReviews */} + + + + +
    + + ); +}; + +export default ProductDetailsContent; diff --git a/components/eCommerce/ProductDetails/ProductDetailsContent.module.css b/components/eCommerce/ProductDetails/ProductDetailsContent.module.css new file mode 100644 index 0000000..4103ddf --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductDetailsContent.module.css @@ -0,0 +1,57 @@ +.metaTagList { + list-style-type: none; + margin: 0 0 15px; + padding: 0; +} +.metaTagList li { + margin-bottom: 10px; +} +.metaTagList li:last-child { + margin-bottom: 0; +} +.metaTagList li span { + font-weight: 500; + width: 100px; + display: inline-block; +} + +.socialLink { + list-style-type: none; + margin: 0 0 25px; + padding: 0; +} +.socialLink li { + display: inline-block; + margin-right: 10px; +} +.socialLink li:last-child { + margin-right: 0; +} +.socialLink li span { + font-weight: 500; +} +.socialLink li a { + text-decoration: none; + background: #EDEFF5; + border-radius: 10px; + color: var(--primaryColor); + display: inline-block; + width: 33px; + height: 33px; + line-height: 33px; + border-radius: 100%; + text-align: center; +} +.socialLink li a:hover { + background-color: var(--primaryColor); + color: #fff; +} + +/* For RTL Style */ +[dir="rtl"] .socialLink li { + margin-right: 0; + margin-left: 10px; +} +[dir="rtl"] .socialLink li:last-child { + margin-left: 0; +} \ No newline at end of file diff --git a/components/eCommerce/ProductDetails/ProductReviews.js b/components/eCommerce/ProductDetails/ProductReviews.js new file mode 100644 index 0000000..cb027db --- /dev/null +++ b/components/eCommerce/ProductDetails/ProductReviews.js @@ -0,0 +1,83 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; + +const ProductReviews = () => { + return ( + <> + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Alvarado Turner

    +
    +
    +
    + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Riley Dave

    +
    +
    +
    + + +
    +
    +
    + + + + + +
    + +

    This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit.

    + + down-arrow +
    +
    + User +

    Ivan Dan

    +
    +
    +
    +
    + + ) +} + +export default ProductReviews; \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..80e8f1e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3' +services: + cms-client: + build: + context: . + dockerfile: docker/Dockerfile + #dockerfile: Dockerfile + restart: unless-stopped + # image: registry.chiefsoft.net/wrenchboardmainsite_wrenchboard-www:latest + ports: + - 50015:3000 + extra_hosts: + - backend.wrenchboard.api.live:10.10.33.15 + - backend.wrenchboard.api.test:10.10.33.15 + # #- backend.wrenchboard.api.live:172.31.4.27 + # #- backend.wrenchboard.api.test:10.20.30.27 + - apigateway.wrenchboard.app.dev.fluxtra.net:10.20.30.19 + - apigateway.wrenchboard.app.lotus.fluxtra.net:172.31.4.19 + environment: + - CHOKIDAR_USEPOLLING=true +volumes: + src: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..c742827 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +# Run command with node if the first argument contains a "-" or is not a system command. The last +# part inside the "{}" is a workaround for the following bug in ash/dash: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264 +if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then + set -- node "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..8940cf1 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,127 @@ +FROM alpine:3.14 + +ENV NODE_VERSION 16.15.1 + +RUN addgroup -g 1000 node \ + && adduser -u 1000 -G node -s /bin/sh -D node \ + && apk add --no-cache \ + libstdc++ \ + && apk add --no-cache --virtual .build-deps \ + curl \ + && ARCH= && alpineArch="$(apk --print-arch)" \ + && case "${alpineArch##*-}" in \ + x86_64) \ + ARCH='x64' \ + CHECKSUM="3acef00c21ca044a74710a56492c40d715ea5a707ce8629d6df2415f3cf89fec" \ + ;; \ + *) ;; \ + esac \ + && if [ -n "${CHECKSUM}" ]; then \ + set -eu; \ + curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"; \ + echo "$CHECKSUM node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c - \ + && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \ + && ln -s /usr/local/bin/node /usr/local/bin/nodejs; \ + else \ + echo "Building from source" \ + # backup build + && apk add --no-cache --virtual .build-deps-full \ + binutils-gold \ + g++ \ + gcc \ + gnupg \ + libgcc \ + linux-headers \ + make \ + python3 \ + # gpg keys listed at https://github.com/nodejs/node#release-keys + && for key in \ + 4ED778F539E3634C779C87C6D7062848A1AB005C \ + 141F07595B7B3FFE74309A937405533BE57C7D57 \ + 94AE36675C464D64BAFA68DD7434390BDBE9B9C5 \ + 74F12602B6F1C4E913FAA37AD3A89613643B6201 \ + 71DCFD284A79C3B38668286BC97EC7A07EDE3FC1 \ + 61FC681DFB92A079F1685E77973F295594EC4689 \ + 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 \ + C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8 \ + 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 \ + C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C \ + DD8F2338BAE7501E3DD5AC78C273792F7D83545D \ + A48C2BEE680E841632CD4E44F07496B3EB3C1762 \ + 108F52B48DB57BB0CC439B2997B01419BD92F80A \ + B9E2F5981AA6E0CD28160D9FF13993A75599653C \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz" \ + && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc" \ + && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc \ + && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c - \ + && tar -xf "node-v$NODE_VERSION.tar.xz" \ + && cd "node-v$NODE_VERSION" \ + && ./configure \ + && make -j$(getconf _NPROCESSORS_ONLN) V= \ + && make install \ + && apk del .build-deps-full \ + && cd .. \ + && rm -Rf "node-v$NODE_VERSION" \ + && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt; \ + fi \ + && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" \ + && apk del .build-deps \ + # smoke tests + && node --version \ + && npm --version + +ENV YARN_VERSION 1.22.19 + +RUN apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ + && for key in \ + 6A010C5166006599AA17F08146C2130DFD2497F5 \ + ; do \ + gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" || \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" ; \ + done \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ + && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ + && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && mkdir -p /opt \ + && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn \ + && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg \ + && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ + && apk del .build-deps-yarn \ + # smoke test + && yarn --version + +COPY docker-entrypoint.sh /usr/local/bin/ +ENTRYPOINT ["docker-entrypoint.sh"] +# COPY docker-entrypoint.sh /usr/local/bin/ +# ENTRYPOINT ["docker-entrypoint.sh"] + +# set working directory +WORKDIR /app + +# add `/app/node_modules/.bin` to $PATH +ENV PATH /app/node_modules/.bin:$PATH + +# install app dependencies +COPY package.json ./ +#COPY package-lock.json ./ +# RUN npm install --silent +RUN npm install +RUN npm install react-scripts@3.4.1 -g --silent +RUN npm install -g serve + +# add app +COPY . ./ + +# build app +# RUN npm run-script build + +# start app +# CMD ["serve", "-s", "build"] + +# CMD ["npm", "start"] +CMD ["npm", "run", "dev"] diff --git a/docker/docker-entrypoint.sh b/docker/docker-entrypoint.sh new file mode 100644 index 0000000..c742827 --- /dev/null +++ b/docker/docker-entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/sh +set -e + +# Run command with node if the first argument contains a "-" or is not a system command. The last +# part inside the "{}" is a workaround for the following bug in ash/dash: +# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=874264 +if [ "${1#-}" != "${1}" ] || [ -z "$(command -v "${1}")" ] || { [ -f "${1}" ] && ! [ -x "${1}" ]; }; then + set -- node "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 0000000..ae165f5 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/components/*": ["components/*"], + "@/public/*": ["public/*"], + "@/utils/*": ["utils/*"], + "@/styles/*": ["styles/*"] + } + } +} \ No newline at end of file diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..c538366 --- /dev/null +++ b/next.config.js @@ -0,0 +1,20 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + reactStrictMode: true, + trailingSlash: true, + eslint: { + // Warning: This allows production builds to successfully complete even if + // your project has ESLint errors. + ignoreDuringBuilds: true, + }, + images: { + unoptimized: true + }, + optimizeFonts: false, + i18n: { + locales: ['en', 'ar'], + defaultLocale: 'en', + } +} + +module.exports = nextConfig diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..427ce87 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5603 @@ +{ + "name": "cms-client", + "version": "1.6.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "admash", + "version": "1.6.0", + "dependencies": { + "@emotion/react": "^11.11.0", + "@emotion/styled": "^11.10.5", + "@fullcalendar/core": "^6.0.2", + "@fullcalendar/daygrid": "^6.0.2", + "@fullcalendar/react": "^6.0.2", + "@mantine/core": "^5.10.5", + "@mantine/hooks": "^5.10.5", + "@mantine/rte": "^5.10.5", + "@mui/base": "^5.0.0-beta.10", + "@mui/icons-material": "^5.10.15", + "@mui/lab": "^5.0.0-alpha.115", + "@mui/material": "^5.11.4", + "@mui/x-data-grid": "^5.17.17", + "@mui/x-date-pickers": "^5.0.12", + "@ramonak/react-progress-bar": "^5.0.3", + "apexcharts": "^3.36.3", + "chart.js": "^4.3.0", + "dayjs": "^1.11.7", + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "next": "^13.3.0", + "notistack": "^2.0.8", + "react": "^18.2.0", + "react-apexcharts": "^1.4.0", + "react-chartjs-2": "^5.0.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", + "react-router-dom": "^6.4.3", + "react-simple-maps": "^3.0.0", + "react-tabs": "^6.0.0", + "recharts": "^2.2.0", + "swiper": "^8.4.5" + }, + "devDependencies": { + "sass": "^1.57.1" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", + "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", + "dependencies": { + "@babel/highlight": "^7.22.10", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", + "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", + "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", + "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.5", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", + "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", + "dependencies": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@date-io/core": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/core/-/core-2.17.0.tgz", + "integrity": "sha512-+EQE8xZhRM/hsY0CDTVyayMDDY5ihc4MqXCrPxooKw19yAzUIC6uUqsZeaOFNL9YKTNxYKrJP5DFgE8o5xRCOw==" + }, + "node_modules/@date-io/date-fns": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/date-fns/-/date-fns-2.17.0.tgz", + "integrity": "sha512-L0hWZ/mTpy3Gx/xXJ5tq5CzHo0L7ry6KEO9/w/JWiFWFLZgiNVo3ex92gOl3zmzjHqY/3Ev+5sehAr8UnGLEng==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "date-fns": "^2.0.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + } + } + }, + "node_modules/@date-io/dayjs": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/dayjs/-/dayjs-2.17.0.tgz", + "integrity": "sha512-Iq1wjY5XzBh0lheFA0it6Dsyv94e8mTiNR8vuTai+KopxDkreL3YjwTmZHxkgB7/vd0RMIACStzVgWvPATnDCA==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "dayjs": "^1.8.17" + }, + "peerDependenciesMeta": { + "dayjs": { + "optional": true + } + } + }, + "node_modules/@date-io/luxon": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/luxon/-/luxon-2.17.0.tgz", + "integrity": "sha512-l712Vdm/uTddD2XWt9TlQloZUiTiRQtY5TCOG45MQ/8u0tu8M17BD6QYHar/3OrnkGybALAMPzCy1r5D7+0HBg==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "luxon": "^1.21.3 || ^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "luxon": { + "optional": true + } + } + }, + "node_modules/@date-io/moment": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/@date-io/moment/-/moment-2.17.0.tgz", + "integrity": "sha512-e4nb4CDZU4k0WRVhz1Wvl7d+hFsedObSauDHKtZwU9kt7gdYEAzKgnrSCTHsEaXrDumdrkCYTeZ0Tmyk7uV4tw==", + "dependencies": { + "@date-io/core": "^2.17.0" + }, + "peerDependencies": { + "moment": "^2.24.0" + }, + "peerDependenciesMeta": { + "moment": { + "optional": true + } + } + }, + "node_modules/@emotion/babel-plugin": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/serialize": "^1.1.2", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", + "dependencies": { + "@emotion/memoize": "^0.8.1", + "@emotion/sheet": "^1.2.2", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "dependencies": { + "@emotion/memoize": "^0.8.1" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" + }, + "node_modules/@emotion/react": { + "version": "11.11.1", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/cache": "^11.11.0", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1", + "@emotion/weak-memoize": "^0.3.1", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "dependencies": { + "@emotion/hash": "^0.9.1", + "@emotion/memoize": "^0.8.1", + "@emotion/unitless": "^0.8.1", + "@emotion/utils": "^1.2.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" + }, + "node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "dependencies": { + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.1.tgz", + "integrity": "sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw==", + "dependencies": { + "@floating-ui/core": "^1.4.1", + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.19.2.tgz", + "integrity": "sha512-JyNk4A0Ezirq8FlXECvRtQOX/iBe5Ize0W/pLkrZjfHW9GUV7Xnq6zm6fyZuQzaHHqEnVizmvlA96e1/CkZv+w==", + "dependencies": { + "@floating-ui/react-dom": "^1.3.0", + "aria-hidden": "^1.1.3", + "tabbable": "^6.0.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-1.3.0.tgz", + "integrity": "sha512-htwHm67Ji5E/pROEAr7f8IKFShuiCKHwUC/UY4vC3I5jiSvGFAYnSYiZO5MlGmads+QqvUkR9ANHEguGrDv72g==", + "dependencies": { + "@floating-ui/dom": "^1.2.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==" + }, + "node_modules/@fullcalendar/core": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-6.1.8.tgz", + "integrity": "sha512-i8JBIvZCWGO9dsMEDcx9bnsQZ9PtGSJdOXGgWbhLaGq2iq41OBdp9g9gM4b/Otv2oK8bL5Gl6CsMmb/HkDtA6Q==", + "dependencies": { + "preact": "~10.12.1" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-6.1.8.tgz", + "integrity": "sha512-kCZxQFKb9Vqa3CZRX0v7rMSJ2mlTt4gDpyLfiNJKxUAq7W51uKurPaFZWicaXy1ESHVBxKNlbx5uNjBpyu50JQ==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8" + } + }, + "node_modules/@fullcalendar/react": { + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/@fullcalendar/react/-/react-6.1.8.tgz", + "integrity": "sha512-E8GQSQyZHkjpwxQW5Vci7iZgN7f33ntuRcvfGii4Fn35t9VHGz2SEyKAWXpVf38elcKTZKVgajU9ipStd+1LEg==", + "peerDependencies": { + "@fullcalendar/core": "~6.1.8", + "react": "^16.7.0 || ^17 || ^18", + "react-dom": "^16.7.0 || ^17 || ^18" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==" + }, + "node_modules/@mantine/core": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-5.10.5.tgz", + "integrity": "sha512-F4tqHSEVM9D6/iSqHfPda+Xl5XgSEPHAAkT01Zwzj4Jnbd10qGrlqr/SFUop2CIcuKYnmra9XltUahUPXBC2BQ==", + "dependencies": { + "@floating-ui/react": "^0.19.1", + "@mantine/styles": "5.10.5", + "@mantine/utils": "5.10.5", + "@radix-ui/react-scroll-area": "1.0.2", + "react-textarea-autosize": "8.3.4" + }, + "peerDependencies": { + "@mantine/hooks": "5.10.5", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/hooks": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-5.10.5.tgz", + "integrity": "sha512-hFQp71QZDfivPzfIUOQZfMKLiOL/Cn2EnzacRlbUr55myteTfzYN8YMt+nzniE/6c4IRopFHEAdbKEtfyQc6kg==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@mantine/rte": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/rte/-/rte-5.10.5.tgz", + "integrity": "sha512-UEBVsuSM1Q1ymZLp/mSCbFMxGaC7z/5gwUYFFmkWJoO5fM/B5ZOaBKMuOHTVWhkwG5K3dgLjyXwaScSrLABiHA==", + "dependencies": { + "@tabler/icons": "^1.119.0", + "quill-mention": "^3.0.8", + "react-quill": "2.0.0" + }, + "peerDependencies": { + "@mantine/core": "5.10.5", + "@mantine/hooks": "5.10.5", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/styles": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/styles/-/styles-5.10.5.tgz", + "integrity": "sha512-0NXk8c/XGzuTUkZc6KceF2NaTCMEu5mHR4ru0x+ttb9DGnLpHuGWduTHjSfr4hl6eAJgedD0zauO+VAhDzO9zA==", + "dependencies": { + "clsx": "1.1.1", + "csstype": "3.0.9" + }, + "peerDependencies": { + "@emotion/react": ">=11.9.0", + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@mantine/styles/node_modules/csstype": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + }, + "node_modules/@mantine/utils": { + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/@mantine/utils/-/utils-5.10.5.tgz", + "integrity": "sha512-FGMq4dGs5HhDAtI0z46uzxzKKPmZ3h5uKUyKg1ZHoFR1mBtcUMbB6FylFmHqKFRWlJ5IXqX9dwmiVrLYUOfTmA==", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.10", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.10.tgz", + "integrity": "sha512-moTAhGwFfQffj7hsu61FnqcGqVcd53A1CrOhnskM9TF0Uh2rnLDMCuar4JRUWWpaJofAfQEbQBBFPadFQLI4PA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@emotion/is-prop-valid": "^1.2.1", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@popperjs/core": "^2.11.8", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.4.tgz", + "integrity": "sha512-pW2XghSi3hpYKX57Wu0SCWMTSpzvXZmmucj3TcOJWaCiFt4xr05w2gcwBZi36dAp9uvd9//9N51qbblmnD+GPg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + } + }, + "node_modules/@mui/icons-material": { + "version": "5.14.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.3.tgz", + "integrity": "sha512-XkxWPhageu1OPUm2LWjo5XqeQ0t2xfGe8EiLkRW9oz2LHMMZmijvCxulhgquUVTF1DnoSh+3KoDLSsoAFtVNVw==", + "dependencies": { + "@babel/runtime": "^7.22.6" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab": { + "version": "5.0.0-alpha.139", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.139.tgz", + "integrity": "sha512-YlKKELtGZEpd3Hj9cUo6ekwB6RSDzGBw+LlaCBntudhVb4aRn5mQYFej3BYn6fOYz5335jkTgvBt0sEwlSo4qA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/lab/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.4.tgz", + "integrity": "sha512-2XUV3KyRC07BQPPzEgd+ss3x/ezXtHeKtOGCMCNmx3MauZojPYUpSwFkE0fYgYCD9dMQMVG4DY/VF38P0KShsg==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/base": "5.0.0-beta.10", + "@mui/core-downloads-tracker": "^5.14.4", + "@mui/system": "^5.14.4", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "@types/react-transition-group": "^4.4.6", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/private-theming": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.4.tgz", + "integrity": "sha512-ISXsHDiQ3z1XA4IuKn+iXDWvDjcz/UcQBiFZqtdoIsEBt8CB7wgdQf3LwcwqO81dl5ofg/vNQBEnXuKfZHrnYA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/utils": "^5.14.4", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.13.2", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz", + "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==", + "dependencies": { + "@babel/runtime": "^7.21.0", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.4.tgz", + "integrity": "sha512-oPgfWS97QNfHcDBapdkZIs4G5i85BJt69Hp6wbXF6s7vi3Evcmhdk8AbCRW6n0sX4vTj8oe0mh0RIm1G2A1KDA==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@mui/private-theming": "^5.14.4", + "@mui/styled-engine": "^5.13.2", + "@mui/types": "^7.2.4", + "@mui/utils": "^5.14.4", + "clsx": "^2.0.0", + "csstype": "^3.1.2", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/types": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", + "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "peerDependencies": { + "@types/react": "*" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.14.4", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.4.tgz", + "integrity": "sha512-4ANV0txPD3x0IcTCSEHKDWnsutg1K3m6Vz5IckkbLXVYu17oOZCVUdOKsb/txUmaCd0v0PmSRe5PW+Mlvns5dQ==", + "dependencies": { + "@babel/runtime": "^7.22.6", + "@types/prop-types": "^15.7.5", + "@types/react-is": "^18.2.1", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@mui/x-data-grid": { + "version": "5.17.26", + "resolved": "https://registry.npmjs.org/@mui/x-data-grid/-/x-data-grid-5.17.26.tgz", + "integrity": "sha512-eGJq9J0g9cDGLFfMmugOadZx0mJeOd/yQpHwEa5gUXyONS6qF0OhXSWyDOhDdA3l2TOoQzotMN5dY/T4Wl1KYA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@mui/utils": "^5.10.3", + "clsx": "^1.2.1", + "prop-types": "^15.8.1", + "reselect": "^4.1.6" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + } + }, + "node_modules/@mui/x-data-grid/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/x-date-pickers": { + "version": "5.0.20", + "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz", + "integrity": "sha512-ERukSeHIoNLbI1C2XRhF9wRhqfsr+Q4B1SAw2ZlU7CWgcG8UBOxgqRKDEOVAIoSWL+DWT6GRuQjOKvj6UXZceA==", + "dependencies": { + "@babel/runtime": "^7.18.9", + "@date-io/core": "^2.15.0", + "@date-io/date-fns": "^2.15.0", + "@date-io/dayjs": "^2.15.0", + "@date-io/luxon": "^2.15.0", + "@date-io/moment": "^2.15.0", + "@mui/utils": "^5.10.3", + "@types/react-transition-group": "^4.4.5", + "clsx": "^1.2.1", + "prop-types": "^15.7.2", + "react-transition-group": "^4.4.5", + "rifm": "^0.12.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui" + }, + "peerDependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/material": "^5.4.1", + "@mui/system": "^5.4.1", + "date-fns": "^2.25.0", + "dayjs": "^1.10.7", + "luxon": "^1.28.0 || ^2.0.0 || ^3.0.0", + "moment": "^2.29.1", + "react": "^17.0.2 || ^18.0.0", + "react-dom": "^17.0.2 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } + } + }, + "node_modules/@mui/x-date-pickers/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@next/env": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/env/-/env-13.4.13.tgz", + "integrity": "sha512-fwz2QgVg08v7ZL7KmbQBLF2PubR/6zQdKBgmHEl3BCyWTEDsAQEijjw2gbFhI1tcKfLdOOJUXntz5vZ4S0Polg==" + }, + "node_modules/@next/eslint-plugin-next": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.0.5.tgz", + "integrity": "sha512-H9U9B1dFnCDmylDZ6/dYt95Ie1Iu+SLBMcO6rkIGIDcj5UK+DNyMiWm83xWBZ1gREM8cfp5Srv1g6wqf8pM4lw==", + "dependencies": { + "glob": "7.1.7" + } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.13.tgz", + "integrity": "sha512-ZptVhHjzUuivnXMNCJ6lER33HN7lC+rZ01z+PM10Ows21NHFYMvGhi5iXkGtBDk6VmtzsbqnAjnx4Oz5um0FjA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.13.tgz", + "integrity": "sha512-t9nTiWCLApw8W4G1kqJyYP7y6/7lyal3PftmRturIxAIBlZss9wrtVN8nci50StDHmIlIDxfguYIEGVr9DbFTg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.13.tgz", + "integrity": "sha512-xEHUqC8eqR5DHe8SOmMnDU1K3ggrJ28uIKltrQAwqFSSSmzjnN/XMocZkcVhuncuxYrpbri0iMQstRyRVdQVWg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.13.tgz", + "integrity": "sha512-sNf3MnLAm8rquSSAoeD9nVcdaDeRYOeey4stOWOyWIgbBDtP+C93amSgH/LPTDoUV7gNiU6f+ghepTjTjRgIUQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.4.13.tgz", + "integrity": "sha512-WhcRaJJSHyx9OWmKjjz+OWHumiPZWRqmM/09Bt7Up4UqUJFFhGExeztR4trtv3rflvULatu9IH/nTV8fUUgaMA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.4.13.tgz", + "integrity": "sha512-+Y4LLhOWWZQIDKVwr2R17lq2KSN0F1c30QVgGIWfnjjHpH8nrIWHEndhqYU+iFuW8It78CiJjQKTw4f51HD7jA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.13.tgz", + "integrity": "sha512-rWurdOR20uxjfqd1X9vDAgv0Jb26KjyL8akF9CBeFqX8rVaBAnW/Wf6A2gYEwyYY4Bai3T7p1kro6DFrsvBAAw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.13.tgz", + "integrity": "sha512-E8bSPwRuY5ibJ3CzLQmJEt8qaWrPYuUTwnrwygPUEWoLzD5YRx9SD37oXRdU81TgGwDzCxpl7z5Nqlfk50xAog==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.13.tgz", + "integrity": "sha512-4KlyC6jWRubPnppgfYsNTPeWfGCxtWLh5vaOAW/kdzAk9widqho8Qb5S4K2vHmal1tsURi7Onk2MMCV1phvyqA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.0.tgz", + "integrity": "sha512-Ofwh/1HX69ZfJRiRBMTy7rgjAzHmwe4kW9C9Y99HTRUcYLUuVT0KESFj15rPjRgKJs20GPq8Bm5aEDJ8DuA3vA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.0.tgz", + "integrity": "sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz", + "integrity": "sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz", + "integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.0.tgz", + "integrity": "sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.0.tgz", + "integrity": "sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz", + "integrity": "sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.2.tgz", + "integrity": "sha512-k8VseTxI26kcKJaX0HPwkvlNBPTs56JRdYzcZ/vzrNUkDlvXBy8sMc7WvCpYzZkHgb+hd72VW9MqkqecGtuNgg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.0", + "@radix-ui/primitive": "1.0.0", + "@radix-ui/react-compose-refs": "1.0.0", + "@radix-ui/react-context": "1.0.0", + "@radix-ui/react-direction": "1.0.0", + "@radix-ui/react-presence": "1.0.0", + "@radix-ui/react-primitive": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.0", + "@radix-ui/react-use-layout-effect": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.1.tgz", + "integrity": "sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.0" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz", + "integrity": "sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz", + "integrity": "sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/@ramonak/react-progress-bar": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@ramonak/react-progress-bar/-/react-progress-bar-5.0.3.tgz", + "integrity": "sha512-VxXGKN74q94jYoeYuFNJm3xvWhVz9dy+alFZ8S4ZmTTr/05CCq9PjwthT8JB27UdAvn8pHvKBmemV8JU2cZi6A==", + "peerDependencies": { + "react": "^16.0.0 || ^17 || ^18", + "react-dom": "^16.0.0 || ^17 || ^18" + } + }, + "node_modules/@remix-run/router": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz", + "integrity": "sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==", + "engines": { + "node": ">=14" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.3.3.tgz", + "integrity": "sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==" + }, + "node_modules/@swc/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@tabler/icons": { + "version": "1.119.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-1.119.0.tgz", + "integrity": "sha512-Fk3Qq4w2SXcTjc/n1cuL5bccPkylrOMo7cYpQIf/yw6zP76LQV9dtLcHQUjFiUnaYuswR645CnURIhlafyAh9g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + }, + "peerDependencies": { + "react": "^16.x || 17.x || 18.x", + "react-dom": "^16.x || 17.x || 18.x" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@types/d3-array": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz", + "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A==" + }, + "node_modules/@types/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==" + }, + "node_modules/@types/d3-ease": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", + "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==" + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", + "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz", + "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-shape": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz", + "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", + "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + }, + "node_modules/@types/prop-types": { + "version": "15.7.5", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", + "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" + }, + "node_modules/@types/quill": { + "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@types/quill/-/quill-1.3.10.tgz", + "integrity": "sha512-IhW3fPW+bkt9MLNlycw8u8fWb7oO7W5URC9MfZYHBlA24rex9rs23D5DETChu1zvgVdc5ka64ICjJOgQMr6Shw==", + "dependencies": { + "parchment": "^1.1.2" + } + }, + "node_modules/@types/react": { + "version": "18.2.20", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.20.tgz", + "integrity": "sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-is": { + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz", + "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", + "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/scheduler": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", + "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "devOptional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.1.tgz", + "integrity": "sha512-kta8fhXrfZYqW7K9kF7FqZ6imQaC6moyRgcUZjwIky/oeHVVISSN/2rjUIvZXnwxWHiSdDHMqLy+TqJhB4DXFA==", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", + "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" + }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "devOptional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001519", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", + "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.3.3.tgz", + "integrity": "sha512-aTk7pBw+x6sQYhon/NR3ikfUJuym/LdgpTlgZRe2PaEhjUMKBKyNaFCMVRAyTEWYFNO7qRu7iQVqOw/OqzxZxQ==", + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=7" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/classnames": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clsx": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-unit-converter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz", + "integrity": "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" + }, + "node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" + }, + "node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==" + }, + "node_modules/d3-drag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", + "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-selection": "2" + } + }, + "node_modules/d3-ease": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", + "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", + "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "dependencies": { + "d3-array": "^2.5.0" + } + }, + "node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==" + }, + "node_modules/d3-transition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", + "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "dependencies": { + "d3-color": "1 - 2", + "d3-dispatch": "1 - 2", + "d3-ease": "1 - 2", + "d3-interpolate": "1 - 2", + "d3-timer": "1 - 2" + }, + "peerDependencies": { + "d3-selection": "2" + } + }, + "node_modules/d3-zoom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", + "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" + }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom7": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.6.tgz", + "integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==", + "dependencies": { + "ssr-window": "^4.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.28.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.28.0.tgz", + "integrity": "sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==", + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-next": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.0.5.tgz", + "integrity": "sha512-lge94W7ME6kNCO96eCykq5GbKbllzmcDNDhh1/llMCRgNPl0+GIQ8dOoM0I7uRQVW56VmTXFybJFXgow11a5pg==", + "dependencies": { + "@next/eslint-plugin-next": "13.0.5", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", + "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "dependencies": { + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.0.tgz", + "integrity": "sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.findlastindex": "^1.2.2", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.8.0", + "has": "^1.0.3", + "is-core-module": "^2.12.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.6", + "object.groupby": "^1.0.0", + "object.values": "^1.1.6", + "resolve": "^1.22.3", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.1.tgz", + "integrity": "sha512-L093k0WAMvr6VhNwReB8VgOq5s2LesZmrpPdKz/kZElQDzqS7G7+DnKoqT+w4JwuiGeAhAvHO0fvy0Eyk4ejDA==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "node_modules/fast-equals": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", + "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-selector": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", + "dependencies": { + "tslib": "^2.4.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", + "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "devOptional": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "devOptional": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" + }, + "node_modules/language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dependencies": { + "language-subtag-registry": "~0.3.2" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/next": { + "version": "13.4.13", + "resolved": "https://registry.npmjs.org/next/-/next-13.4.13.tgz", + "integrity": "sha512-A3YVbVDNeXLhWsZ8Nf6IkxmNlmTNz0yVg186NJ97tGZqPDdPzTrHotJ+A1cuJm2XfuWPrKOUZILl5iBQkIf8Jw==", + "dependencies": { + "@next/env": "13.4.13", + "@swc/helpers": "0.5.1", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001406", + "postcss": "8.4.14", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0", + "zod": "3.21.4" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": ">=16.8.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "13.4.13", + "@next/swc-darwin-x64": "13.4.13", + "@next/swc-linux-arm64-gnu": "13.4.13", + "@next/swc-linux-arm64-musl": "13.4.13", + "@next/swc-linux-x64-gnu": "13.4.13", + "@next/swc-linux-x64-musl": "13.4.13", + "@next/swc-win32-arm64-msvc": "13.4.13", + "@next/swc-win32-ia32-msvc": "13.4.13", + "@next/swc-win32-x64-msvc": "13.4.13" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "devOptional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/notistack": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-2.0.8.tgz", + "integrity": "sha512-/IY14wkFp5qjPgKNvAdfL5Jp6q90+MjgKTPh4c81r/lW70KeuX6b9pE/4f8L4FG31cNudbN9siiFS5ql1aSLRw==", + "dependencies": { + "clsx": "^1.1.0", + "hoist-non-react-statics": "^3.3.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/notistack" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "@mui/material": "^5.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", + "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.21.2", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" + }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/quill-mention": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/quill-mention/-/quill-mention-3.4.0.tgz", + "integrity": "sha512-Ztc/60xujIBDfjf2xTmAkdsGF6ol2sSasWE0EDquZHtz6yWgrXzScU8Ovvb5ZyDpgTMQnOIIzH6pxwGunq0evQ==", + "dependencies": { + "quill": "^1.3.7" + } + }, + "node_modules/react": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-apexcharts": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.4.1.tgz", + "integrity": "sha512-G14nVaD64Bnbgy8tYxkjuXEUp/7h30Q0U33xc3AwtGFijJB9nHqOt1a6eG0WBn055RgRg+NwqbKGtqPxy15d0Q==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": "^3.41.0", + "react": ">=0.13" + } + }, + "node_modules/react-chartjs-2": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-5.2.0.tgz", + "integrity": "sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==", + "peerDependencies": { + "chart.js": "^4.1.1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dropzone": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.6.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "react": ">= 16.8 || 18.0.0" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, + "node_modules/react-lifecycles-compat": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + }, + "node_modules/react-quill": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/react-quill/-/react-quill-2.0.0.tgz", + "integrity": "sha512-4qQtv1FtCfLgoD3PXAur5RyxuUbPXQGOHgTlFie3jtxp43mXDtzCKaOgQ3mLyZfi1PUlyjycfivKelFhy13QUg==", + "dependencies": { + "@types/quill": "^1.3.10", + "lodash": "^4.17.4", + "quill": "^1.3.7" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18" + } + }, + "node_modules/react-resize-detector": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-8.1.0.tgz", + "integrity": "sha512-S7szxlaIuiy5UqLhLL1KY3aoyGHbZzsTpYal9eYMwCyKqoqoVLCmIgAgNyIM1FhnP2KyBygASJxdhejrzjMb+w==", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-router": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz", + "integrity": "sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==", + "dependencies": { + "@remix-run/router": "1.7.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.14.2.tgz", + "integrity": "sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==", + "dependencies": { + "@remix-run/router": "1.7.2", + "react-router": "6.14.2" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/react-simple-maps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-simple-maps/-/react-simple-maps-3.0.0.tgz", + "integrity": "sha512-vKNFrvpPG8Vyfdjnz5Ne1N56rZlDfHXv5THNXOVZMqbX1rWZA48zQuYT03mx6PAKanqarJu/PDLgshIZAfHHqw==", + "dependencies": { + "d3-geo": "^2.0.2", + "d3-selection": "^2.0.0", + "d3-zoom": "^2.0.0", + "topojson-client": "^3.1.0" + }, + "peerDependencies": { + "prop-types": "^15.7.2", + "react": "^16.8.0 || 17.x || 18.x", + "react-dom": "^16.8.0 || 17.x || 18.x" + } + }, + "node_modules/react-smooth": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.3.tgz", + "integrity": "sha512-yl4y3XiMorss7ayF5QnBiSprig0+qFHui8uh7Hgg46QX5O+aRMRKlfGGNGLHno35JkQSvSYY8eCWkBfHfrSHfg==", + "dependencies": { + "fast-equals": "^5.0.0", + "react-transition-group": "2.9.0" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-smooth/node_modules/dom-helpers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", + "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/react-smooth/node_modules/react-transition-group": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.9.0.tgz", + "integrity": "sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==", + "dependencies": { + "dom-helpers": "^3.4.0", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2", + "react-lifecycles-compat": "^3.0.4" + }, + "peerDependencies": { + "react": ">=15.0.0", + "react-dom": ">=15.0.0" + } + }, + "node_modules/react-tabs": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-6.0.2.tgz", + "integrity": "sha512-aQXTKolnM28k3KguGDBSAbJvcowOQr23A+CUJdzJtOSDOtTwzEaJA+1U4KwhNL9+Obe+jFS7geuvA7ICQPXOnQ==", + "dependencies": { + "clsx": "^2.0.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": "^18.0.0" + } + }, + "node_modules/react-tabs/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz", + "integrity": "sha512-CdtmP8Dc19xL8/R6sWvtknD/eCXkQr30dtvC4VmGInhRsfF8X/ihXCq6+9l9qbxmKRiq407/7z5fxE7cVWQNgQ==", + "dependencies": { + "@babel/runtime": "^7.10.2", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "devOptional": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/recharts": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.7.3.tgz", + "integrity": "sha512-cKoO9jUZRQavn06H6Ih2EcG82zUNdQH3OEGWVCmluSDyp3d7fIpDAsbMTd8hE8+T+MD8P76iicv/J4pJspDP7A==", + "dependencies": { + "classnames": "^2.2.5", + "eventemitter3": "^4.0.1", + "lodash": "^4.17.19", + "react-is": "^16.10.2", + "react-resize-detector": "^8.0.4", + "react-smooth": "^2.0.2", + "recharts-scale": "^0.4.4", + "reduce-css-calc": "^2.1.8", + "victory-vendor": "^36.6.8" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prop-types": "^15.6.0", + "react": "^16.0.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/recharts-scale": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", + "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", + "dependencies": { + "decimal.js-light": "^2.4.1" + } + }, + "node_modules/recharts/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/recharts/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/reduce-css-calc": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz", + "integrity": "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==", + "dependencies": { + "css-unit-converter": "^1.1.1", + "postcss-value-parser": "^3.3.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/reselect": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.1.8.tgz", + "integrity": "sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rifm": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/rifm/-/rifm-0.12.1.tgz", + "integrity": "sha512-OGA1Bitg/dSJtI/c4dh90svzaUPt228kzFsUkJbtA2c964IqEAwWXeL9ZJi86xWv3j5SMqRvGULl7bA6cK0Bvg==", + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sass": { + "version": "1.65.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.65.1.tgz", + "integrity": "sha512-9DINwtHmA41SEd36eVPQ9BJKpn7eKDQmUHmpI0y5Zv2Rcorrh0zS+cFrt050hdNbmmCNKTW3hV5mWfuegNRsEA==", + "devOptional": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/swiper": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz", + "integrity": "sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "hasInstallScript": true, + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/victory-vendor": { + "version": "36.6.11", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.6.11.tgz", + "integrity": "sha512-nT8kCiJp8dQh8g991J/R5w5eE2KnO8EAIP0xocWlh9l2okngMWglOPoMZzJvek8Q1KUc4XE/mJxTZnvOB1sTYg==", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/victory-vendor/node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/victory-vendor/node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8bdeb0d --- /dev/null +++ b/package.json @@ -0,0 +1,48 @@ +{ + "name": "cms-client", + "version": "2.1.1", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@emotion/react": "^11.11.0", + "@emotion/styled": "^11.10.5", + "@fullcalendar/core": "^6.0.2", + "@fullcalendar/daygrid": "^6.0.2", + "@fullcalendar/react": "^6.0.2", + "@mantine/core": "^5.10.5", + "@mantine/hooks": "^5.10.5", + "@mantine/rte": "^5.10.5", + "@mui/base": "^5.0.0-beta.10", + "@mui/icons-material": "^5.10.15", + "@mui/lab": "^5.0.0-alpha.115", + "@mui/material": "^5.11.4", + "@mui/x-data-grid": "^5.17.17", + "@mui/x-date-pickers": "^5.0.12", + "@ramonak/react-progress-bar": "^5.0.3", + "apexcharts": "^3.36.3", + "chart.js": "^4.3.0", + "dayjs": "^1.11.7", + "eslint": "8.28.0", + "eslint-config-next": "13.0.5", + "next": "^13.3.0", + "notistack": "^2.0.8", + "react": "^18.2.0", + "react-apexcharts": "^1.4.0", + "react-chartjs-2": "^5.0.1", + "react-dom": "^18.2.0", + "react-dropzone": "^14.2.3", + "react-router-dom": "^6.4.3", + "react-simple-maps": "^3.0.0", + "react-tabs": "^6.0.0", + "recharts": "^2.2.0", + "swiper": "^8.4.5" + }, + "devDependencies": { + "sass": "^1.57.1" + } +} diff --git a/pages/404.js b/pages/404.js new file mode 100644 index 0000000..1098e4b --- /dev/null +++ b/pages/404.js @@ -0,0 +1,54 @@ +import React from 'react'; +import { Typography } from "@mui/material"; +import Box from '@mui/material/Box'; +import Link from 'next/link'; +import Button from "@mui/material/Button"; + +export default function ErrorPage() { + return ( + <> + + error + + + Oops!! The page you are looking for doesn't exist! + + + + The page you are looking for might have been removed had its name changed or is temporarily unavailable. + + + + + + + + ); +} diff --git a/pages/_app.js b/pages/_app.js new file mode 100644 index 0000000..779b3c8 --- /dev/null +++ b/pages/_app.js @@ -0,0 +1,34 @@ +import React from 'react'; +import '../styles/remixicon.css' +import 'react-tabs/style/react-tabs.css'; +import "swiper/css"; +import "swiper/css/bundle"; + +// Chat Styles +import '../styles/chat.css' +// Globals Styles +import '../styles/globals.css' +// Rtl Styles +import '../styles/rtl.css' +// Dark Mode Styles +import '../styles/dark.css' +// Theme Styles +import theme from '../styles/theme' + +import { ThemeProvider, CssBaseline } from "@mui/material"; +import Layout from "@/components/_App/Layout"; + +function MyApp({ Component, pageProps }) { + return ( + <> + + + + + + + + ); +} + +export default MyApp diff --git a/pages/_document.js b/pages/_document.js new file mode 100644 index 0000000..0473ec7 --- /dev/null +++ b/pages/_document.js @@ -0,0 +1,25 @@ +import Document, { Html, Head, Main, NextScript } from "next/document"; + +class MyDocument extends Document { + render() { + const { locale } = this.props.__NEXT_DATA__; + const dir = locale === "ar" ? "rtl" : "ltr"; + return ( + + + + + + +
    + + + + ); + } +} + +export default MyDocument; diff --git a/pages/analytics.js b/pages/analytics.js new file mode 100644 index 0000000..d889ca3 --- /dev/null +++ b/pages/analytics.js @@ -0,0 +1,128 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/Analytics/Features"; +import Welcome from "@/components/Dashboard/Analytics/Welcome"; +import AudienceOverview from "@/components/Dashboard/Analytics/AudienceOverview"; +import VisitsByDayAndNetIncome from "@/components/Dashboard/Analytics/VisitsByDayAndNetIncome"; +import SalesAnalytics from "@/components/Dashboard/Analytics/SalesAnalytics"; +import TotalRevenue from "@/components/Dashboard/Analytics/TotalRevenue"; +import ActivityTimeline from "@/components/Dashboard/Analytics/ActivityTimeline"; +import RevenueReport from "@/components/Dashboard/Analytics/RevenueReport"; +import SessionsByCountries from "@/components/Dashboard/Analytics/SessionsByCountries"; +import TotalTransactions from "@/components/Dashboard/Analytics/TotalTransactions"; +import BrowserUsedTrafficReports from "@/components/Dashboard/Analytics/BrowserUsedTrafficReports"; +import Terminals from "@/components/Dashboard/Analytics/Terminals"; +import NewReturning from "@/components/Dashboard/Analytics/NewReturning"; +import Gender from "@/components/Dashboard/Analytics/Gender"; +import VisitorsAge from "@/components/Dashboard/Analytics/VisitorsAge"; +import SessionsDevice from "@/components/Dashboard/Analytics/SessionsDevice"; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; + +export default function Analytics() { + return ( + <> + {/* Page title */} +
    +

    Analytics

    +
      +
    • + Dashboard +
    • +
    • + Analytics +
    • +
    +
    + + + + {/* Welcome */} + + + {/* ImpressionGoalConversions */} + + + {/* VisitsByDayAndNetIncome */} + + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + + + + + {/* SalesAnalytics */} + + + {/* RevenueRepor */} + + + + + {/* TotalRevenue */} + + + {/* ActivityTimelin */} + + + + + + + {/* SessionsByCountries */} + + + {/* TotalTransactions */} + + + + + + + {/* BrowserUsedTrafficReports */} + + + + + {/* Terminals */} + + + + + + + {/* SessionsDevice */} + + + + + {/* NewReturning */} + + + + + {/* Gender */} + + + + + {/* VisitorsAge */} + + + + + ); +} diff --git a/pages/analytics/customers.js b/pages/analytics/customers.js new file mode 100644 index 0000000..d4360e8 --- /dev/null +++ b/pages/analytics/customers.js @@ -0,0 +1,50 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import AudienceOverview from '@/components/Dashboard/Analytics/AudienceOverview'; +import VisitsByDay from "@/components/Analytics/Customers/VisitsByDay"; +import NetIncome from "@/components/Analytics/Customers/NetIncome"; +import NewSessions from "@/components/Analytics/Customers/NewSessions"; +import CustomersDetails from "@/components/Analytics/Customers/CustomersDetails"; + +export default function Customers() { + return ( + <> + {/* Page title */} +
    +

    Customers

    +
      +
    • + Dashboard +
    • +
    • Customers
    • +
    +
    + + {/* AudienceOverview */} + + + + + + + + + + + + + + + + + {/* CustomersDetails */} + + + ); +} diff --git a/pages/analytics/reports.js b/pages/analytics/reports.js new file mode 100644 index 0000000..d6dff08 --- /dev/null +++ b/pages/analytics/reports.js @@ -0,0 +1,44 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import RevenueReport from "@/components/Dashboard/Analytics/RevenueReport"; +import AvarageReport from "@/components/Analytics/Reports/AvarageReport"; +import SessionsByCountries from "@/components/Dashboard/Analytics/SessionsByCountries"; +import BrowserUsedAndTrafficReports from "@/components/Analytics/Reports/BrowserUsedAndTrafficReports"; + +export default function Reports() { + return ( + <> + {/* Page title */} +
    +

    Reports

    +
      +
    • + Dashboard +
    • +
    • Reports
    • +
    +
    + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/apps/calendar.js b/pages/apps/calendar.js new file mode 100644 index 0000000..60e6ad9 --- /dev/null +++ b/pages/apps/calendar.js @@ -0,0 +1,269 @@ +import React from "react"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import FullCalendar from "@fullcalendar/react"; +import dayGridPlugin from "@fullcalendar/daygrid"; +import events from "@/components/Apps/Calendar/Events"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import IconButton from "@mui/material/IconButton"; +import Grid from "@mui/material/Grid"; +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"; +import dayjs from "dayjs"; +import Stack from "@mui/material/Stack"; +import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider"; +import { AdapterDayjs } from "@mui/x-date-pickers/AdapterDayjs"; +import { DateTimePicker } from "@mui/x-date-pickers/DateTimePicker"; + +// Add event 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 Calendar = () => { + // Add event modal + const [open, setOpen] = React.useState(false); + const handleOpen = () => 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"), + }); + }; + + // Date & Time ickers + const [value, setValue] = React.useState(dayjs("2023-01-01T21:11:54")); + + const handleChange = (newValue) => { + setValue(newValue); + }; + + return ( + <> + {/* Page title */} +
    +

    Calendar

    +
      +
    • + Dashboard +
    • +
    • Calendar
    • +
    +
    + + + + + Calendar + + + + + + + + + {/* Add event modal */} + + + + + + Add New Event + + + + + + + + + + + + + Event Name + + + + + + + + Date & Time + + + + + } + /> + + + + + + + + + + + + + + + ); +}; + +export default Calendar; diff --git a/pages/apps/chat/index.js b/pages/apps/chat/index.js new file mode 100644 index 0000000..a585e4c --- /dev/null +++ b/pages/apps/chat/index.js @@ -0,0 +1,716 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import { styled, alpha } from "@mui/material/styles"; +import InputBase from "@mui/material/InputBase"; +import SearchIcon from "@mui/icons-material/Search"; +import Badge from "@mui/material/Badge"; +import { Tab, Tabs, TabList, TabPanel } from "react-tabs"; +import ChatBox from "@/components/Apps/Chat/ChatBox"; +import ChatBoxTwo from "@/components/Apps/Chat/ChatBoxTwo"; +import ChatBoxThree from "@/components/Apps/Chat/ChatBoxThree"; + +// 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: 20, + 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), + }, +})); + +export default function Chat() { + return ( + <> + {/* Page title */} +
    +

    Chat

    +
      +
    • + Dashboard +
    • +
    • + Chat +
    • +
    +
    + + + + + + + Messages + + + {/* Search */} + + + + + + + + {/* All Messages */} + + ALL MESSAGES + + + + {/* Tab 1 */} + + + + + User + + + + + + Laurent Perrier + + Typing... + + + + + + 4:30 PM + + + + + + + + + + {/* Tab 2 */} + + + + + User + + + + + + Nunez Faulkner + + + Hello everyone ... + + + + + + + 9.36 AM + + + + + + + + + + {/* Tab 3 */} + + + + + User + + + + + + Bernard Langley + + + That cool, go for it... + + + + + + + 7.18 PM + + + + + + {/* Tab 4 */} + + + + + User + + + + + + Edwards Mckenz + + Great ! 🔥 + + + + + + 08:30 PM + + + + + + {/* Tab 5 */} + + + + + User + + + + + + Elsie Melendez + + Typing... + + + + + + 2:30 PM + + + + + + + + + + {/* Tab 6 */} + + + + + User + + + + + + Mcleod Wagner + + What are you... + + + + + + 1:30 PM + + + + + + {/* Tab 7 */} + + + + + User + + + + + Joseph Strickland + + Hello Joseph!! + + + + + + 7:30 PM + + + + + + {/* Tab 8 */} + + + + + User + + + + + Joseph Strickland + + How are you? + + + + + + 5:30 PM + + + + + + {/* Tab 9 */} + + + + + User + + + + + Silva Foster + + Cool! 🔥 + + + + + + 8:30 PM + + + + + + + + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + {/* ChatBox */} + + + + + + + + ); +} diff --git a/pages/apps/file-manager/assets.js b/pages/apps/file-manager/assets.js new file mode 100644 index 0000000..2cafcd6 --- /dev/null +++ b/pages/apps/file-manager/assets.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllAssets from '@/components/Apps/FileManager/AllAssets'; + +export default function Assets() { + return ( + <> + {/* Page title */} +
    +

    Assets

    +
      +
    • + Dashboard +
    • +
    • Assets
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllAssets */} + + + + + ); +} diff --git a/pages/apps/file-manager/documents.js b/pages/apps/file-manager/documents.js new file mode 100644 index 0000000..b979b27 --- /dev/null +++ b/pages/apps/file-manager/documents.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import DocumentsFiles from '@/components/Apps/FileManager/DocumentsFiles'; + +export default function Documents() { + return ( + <> + {/* Page title */} +
    +

    Documents

    +
      +
    • + Dashboard +
    • +
    • Documents
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* DocumentsFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/important.js b/pages/apps/file-manager/important.js new file mode 100644 index 0000000..43191ef --- /dev/null +++ b/pages/apps/file-manager/important.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import ImportantFiles from '@/components/Apps/FileManager/ImportantFiles'; + +export default function Important() { + return ( + <> + {/* Page title */} +
    +

    Important

    +
      +
    • + Dashboard +
    • +
    • Important
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* ImportantFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/index.js b/pages/apps/file-manager/index.js new file mode 100644 index 0000000..bd2d486 --- /dev/null +++ b/pages/apps/file-manager/index.js @@ -0,0 +1,49 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Grid from "@mui/material/Grid"; +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import MyDrive from '@/components/Apps/FileManager/MyDrive'; +import RecentFiles from '@/components/Apps/FileManager/RecentFiles'; +import Files from '@/components/Apps/FileManager/Files'; + +export default function FileManager() { + return ( + <> + {/* Page title */} +
    +

    File Manager

    +
      +
    • + Dashboard +
    • +
    • + File Manager +
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* MyDrive */} + + + {/* RecentFiles */} + + + {/* Files */} + + + + + ); +} diff --git a/pages/apps/file-manager/media.js b/pages/apps/file-manager/media.js new file mode 100644 index 0000000..85d6008 --- /dev/null +++ b/pages/apps/file-manager/media.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import MediaFiles from '@/components/Apps/FileManager/MediaFiles'; + +export default function Media() { + return ( + <> + {/* Page title */} +
    +

    Media

    +
      +
    • + Dashboard +
    • +
    • Media
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* MediaFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/personal.js b/pages/apps/file-manager/personal.js new file mode 100644 index 0000000..f2f1408 --- /dev/null +++ b/pages/apps/file-manager/personal.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import PersonalFiles from '@/components/Apps/FileManager/PersonalFiles'; + +export default function Personal() { + return ( + <> + {/* Page title */} +
    +

    Personal

    +
      +
    • + Dashboard +
    • +
    • Personal
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* PersonalFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/projects.js b/pages/apps/file-manager/projects.js new file mode 100644 index 0000000..e41bf04 --- /dev/null +++ b/pages/apps/file-manager/projects.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllProjects from '@/components/Apps/FileManager/AllProjects'; + +export default function Projects() { + return ( + <> + {/* Page title */} +
    +

    Projects

    +
      +
    • + Dashboard +
    • +
    • Projects
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllProjects */} + + + + + ); +} diff --git a/pages/apps/file-manager/recents.js b/pages/apps/file-manager/recents.js new file mode 100644 index 0000000..5d7bdfc --- /dev/null +++ b/pages/apps/file-manager/recents.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import AllRecentFiles from '@/components/Apps/FileManager/AllRecentFiles'; + +export default function Recents() { + return ( + <> + {/* Page title */} +
    +

    Recents

    +
      +
    • + Dashboard +
    • +
    • Recents
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* AllRecentFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/templates.js b/pages/apps/file-manager/templates.js new file mode 100644 index 0000000..45d2d18 --- /dev/null +++ b/pages/apps/file-manager/templates.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import TemplateFiles from '@/components/Apps/FileManager/TemplateFiles'; + +export default function Templates() { + return ( + <> + {/* Page title */} +
    +

    Templates

    +
      +
    • + Dashboard +
    • +
    • Templates
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* TemplateFiles */} + + + + + ); +} diff --git a/pages/apps/file-manager/trash.js b/pages/apps/file-manager/trash.js new file mode 100644 index 0000000..1844b34 --- /dev/null +++ b/pages/apps/file-manager/trash.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Apps/FileManager/LeftSidebar'; +import TrashFiles from '@/components/Apps/FileManager/TrashFiles'; + +export default function Trash() { + return ( + <> + {/* Page title */} +
    +

    Trash

    +
      +
    • + Dashboard +
    • +
    • Trash
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* TrashFiles */} + + + + + ); +} diff --git a/pages/apps/to-do.js b/pages/apps/to-do.js new file mode 100644 index 0000000..1b29051 --- /dev/null +++ b/pages/apps/to-do.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import ToDoLists from '@/components/Apps/ToDoLists' + +export default function ToDo() { + return ( + <> + {/* Page title */} +
    +

    To Do

    +
      +
    • + Dashboard +
    • +
    • To Do
    • +
    +
    + + + + ); +} diff --git a/pages/authentication/confirm-mail.js b/pages/authentication/confirm-mail.js new file mode 100644 index 0000000..29f68c4 --- /dev/null +++ b/pages/authentication/confirm-mail.js @@ -0,0 +1,72 @@ +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import Button from "@mui/material/Button"; + +export default function ConfirmMail() { + return ( + <> +
    + + + + Black logo + White logo + + + + Message + + + + Success! + + + A email has been send to{" "} + + envytheme@info.com + + . Please check for an email from company and click on the included + link to reset your password. + + + + + +
    + + ); +} diff --git a/pages/authentication/forgot-password.js b/pages/authentication/forgot-password.js new file mode 100644 index 0000000..2d3c5b7 --- /dev/null +++ b/pages/authentication/forgot-password.js @@ -0,0 +1,9 @@ +import ForgotPasswordForm from '@/components/Authentication/ForgotPasswordForm'; + +export default function SignIn() { + return ( + <> + + + ); +} diff --git a/pages/authentication/lock-screen.js b/pages/authentication/lock-screen.js new file mode 100644 index 0000000..c7659ed --- /dev/null +++ b/pages/authentication/lock-screen.js @@ -0,0 +1,9 @@ +import LockScreenForm from '@/components/Authentication/LockScreenForm'; + +export default function LockScreen() { + return ( + <> + + + ); +} diff --git a/pages/authentication/logout.js b/pages/authentication/logout.js new file mode 100644 index 0000000..64e6fd9 --- /dev/null +++ b/pages/authentication/logout.js @@ -0,0 +1,74 @@ +import { Typography } from "@mui/material"; +import { Box } from "@mui/system"; +import Button from "@mui/material/Button"; + +export default function Logout() { + return ( + <> +
    + + + + Black logo + + White logo + + + + Coffee + + + + You are Logged Out + + + + Thank you for using Admash admin template + + + + + +
    + + ); +} diff --git a/pages/authentication/sign-in.js b/pages/authentication/sign-in.js new file mode 100644 index 0000000..392f744 --- /dev/null +++ b/pages/authentication/sign-in.js @@ -0,0 +1,9 @@ +import SignInForm from '@/components/Authentication/SignInForm'; + +export default function SignIn() { + return ( + <> + + + ); +} diff --git a/pages/authentication/sign-up.js b/pages/authentication/sign-up.js new file mode 100644 index 0000000..bca462f --- /dev/null +++ b/pages/authentication/sign-up.js @@ -0,0 +1,9 @@ +import SignUpForm from '@/components/Authentication/SignUpForm'; + +export default function SignUp() { + return ( + <> + + + ); +} diff --git a/pages/contact-list/contact-list2.js b/pages/contact-list/contact-list2.js new file mode 100644 index 0000000..e5644f2 --- /dev/null +++ b/pages/contact-list/contact-list2.js @@ -0,0 +1,227 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import CallIcon from '@mui/icons-material/Call'; +import MailOutlineIcon from '@mui/icons-material/MailOutline'; +import Stack from '@mui/material/Stack'; +import IconButton from '@mui/material/IconButton'; +import DeleteIcon from '@mui/icons-material/Delete'; +import EditIcon from '@mui/icons-material/Edit'; +import Tooltip from '@mui/material/Tooltip'; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; + +const contactLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + designation: 'React Developer', + phonNumber: '+9003526765', + email: 'alvarado@gmail.com', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + designation: 'Angular Developer', + phonNumber: '+9003526765', + email: 'evangelina@gmail.com', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + designation: 'Vue Developer', + phonNumber: '+9003526766', + email: 'candice@gmail.com', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + designation: 'UI/UX Designer', + phonNumber: '+9003526767', + email: 'bernard@gmail.com', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + designation: 'Software Analyst', + phonNumber: '+9003526846', + email: 'kristie@gmail.com', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + designation: 'Support Engineer', + phonNumber: '+9003526865', + email: 'bolton@gmail.com', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + designation: 'SEO Specialist', + phonNumber: '+9003526456', + email: 'alvarado@gmail.com', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + designation: 'Product Designer', + phonNumber: '+9003526456', + email: 'cervantes@gmail.com', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + designation: 'Content Writer', + email: 'dejesus@gmail.com', + phonNumber: '+9003526456', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + designation: 'Theme Developer', + email: 'alissa@gmail.com', + phonNumber: '+9003526355', + }, + { + image: '/images/member11.png', + name: 'English Haney', + designation: 'Digital Marketing Executive', + email: 'english@gmail.com', + phonNumber: '+9003526456', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + designation: 'Support Engineer', + email: 'edwards@gmail.com', + phonNumber: '+9003526456', + }, +]; + +export default function ContactList2() { + return ( + <> + {/* Page title */} +
    +

    Contact List

    +
      +
    • + Dashboard +
    • +
    • Contact List
    • +
    +
    + + + {contactLists.map((contactList) => ( + + + + + + + + + + + + + + + + + + + Member + + {contactList.name} + + + + {contactList.designation} + + + + + + + {contactList.phonNumber} + + + + + + + {contactList.email} + + + + + + ))} + + + ); +} diff --git a/pages/contact-list/index.js b/pages/contact-list/index.js new file mode 100644 index 0000000..56cc3c4 --- /dev/null +++ b/pages/contact-list/index.js @@ -0,0 +1,265 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const contactLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + userName: '@alvaradoTurner', + email: 'alvaradoTurner@gmail.com', + projectUrl: '#', + post: '18k', + followers: '5.21k', + followings: '32k', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + userName: '@evangelinaMcclain', + email: 'evangelinaMcclain@gmail.com', + projectUrl: '#', + post: '10k', + followers: '4.20k', + followings: '15k', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + userName: '@candiceMunoz', + email: 'candiceMunoz@gmail.com', + projectUrl: '#', + post: '5k', + followers: '2.20k', + followings: '12k', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + userName: '@bernardLangley', + email: 'bernardLangley@gmail.com', + projectUrl: '#', + post: '19k', + followers: '10.20k', + followings: '30k', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + userName: '@kristieHall', + email: 'kristieHall@gmail.com', + projectUrl: '#', + post: '14k', + followers: '9.20k', + followings: '40k', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + userName: '@boltonObrien', + email: 'boltonObrien@gmail.com', + projectUrl: '#', + post: '20k', + followers: '19.20k', + followings: '50k', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + userName: '@deeAlvarado', + email: 'deeAlvarado@gmail.com', + projectUrl: '#', + post: '22k', + followers: '30.20k', + followings: '50k', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + userName: '@cervantesKramer', + email: 'cervantesKramer@gmail.com', + projectUrl: '#', + post: '25k', + followers: '35.20k', + followings: '10k', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + userName: '@dejesusMichael', + email: 'dejesusMichael@gmail.com', + projectUrl: '#', + post: '16k', + followers: '20.20k', + followings: '5k', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + userName: '@alissaNelson', + email: 'alissaNelson@gmail.com', + projectUrl: '#', + post: '13k', + followers: '20.20k', + followings: '250', + }, + { + image: '/images/member11.png', + name: 'English Haney', + userName: '@englishHaney', + email: 'englishHaney@gmail.com', + projectUrl: '#', + post: '12k', + followers: '12.20k', + followings: '1205', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + userName: '@edwardsMckenzie', + email: 'edwardsMckenzie@gmail.com', + projectUrl: '#', + post: '11k', + followers: '30.20k', + followings: '5k', + }, +]; + +export default function ContactList() { + return ( + <> + {/* Page title */} +
    +

    Contact List

    +
      +
    • + Dashboard +
    • +
    • Contact List
    • +
    +
    + + + {contactLists.map((contactList) => ( + + + Member + + {contactList.name} + + + + {contactList.userName} + + + + + + + + + + + + + + + + Post + + + {contactList.post} + + + + + + Followers + + + {contactList.followers} + + + + + + Followings + + + {contactList.followings} + + + + + + ))} + + + ); +} diff --git a/pages/contact-list/members-list.js b/pages/contact-list/members-list.js new file mode 100644 index 0000000..02e7ca3 --- /dev/null +++ b/pages/contact-list/members-list.js @@ -0,0 +1,883 @@ +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 Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +import DeleteIcon from "@mui/icons-material/Delete"; +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"; +import Checkbox from '@mui/material/Checkbox'; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; +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'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new user 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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new user Modal + +function MembersLists(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +MembersLists.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData(name, image, userName, email, tags, projects) { + return { + name, + image, + userName, + email, + tags, + projects, + }; +} + +const rows = [ + createData( + "Evangelina Mcclain", + "/images/user1.png", + "@jstevenson5c", + "jordansteve@gmail.com", + "HTML, CSS & JS", + "165" + ), + createData( + "Candice Munoz", + "/images/user2.png", + "@candice3unoz", + "candicemunoz@gmail.com", + "React, Next.js", + "120" + ), + createData( + "Mike Mcclain", + "/images/user3.png", + "@mike4mcclain", + "mikemcclain@gmail.com", + "Angular, Gatsby", + "220" + ), + createData( + "Bernard Langley", + "/images/user4.png", + "@bernardlangley", + "bernardlangley@gmail.com", + "HTML, React & Sass", + "122" + ), + createData( + "Kristie Hall", + "/images/user5.png", + "@kristie7hall", + "kristiehall@gmail.com", + "React, Next.js & Sass", + "360" + ), + createData( + "Bolton Obrien", + "/images/user6.png", + "@bolton4obrien", + "boltonobrien@gmail.com", + "Angular, HTML & Sass", + "250" + ), + createData( + "Dee Alvarado", + "/images/user7.png", + "@dee3alvarado", + "deealvarado@gmail.com", + "React, Next.js & Sass", + "140" + ), + createData( + "Cervantes Kramer", + "/images/user8.png", + "@cervantes4kramer", + "cervantes4kramer@gmail.com", + "Gatsby, React & Sass", + "345" + ), + createData( + "Dejesus Michael", + "/images/user9.png", + "@dejesus1michael", + "dejesusmichael@gmail.com", + "React, Gatsby & Sass", + "323" + ), + createData( + "Alissa Nelson", + "/images/user10.png", + "@alissa1nelson", + "alissa1nelson@gmail.com", + "React, Gatsby & Sass", + "451" + ), + createData( + "Milton", + "/images/user11.png", + "@milton", + "milton@gmail.com", + "React, HTML & Sass", + "432" + ), + createData( + "Claude", + "/images/user12.png", + "@claude", + "claude@gmail.com", + "React, Gatsby & Sass", + "543" + ), + createData( + "Joshua", + "/images/user13.png", + "@joshua", + "joshua@gmail.com", + "React, Gatsby & Sass", + "543" + ), + createData( + "Harvey", + "/images/user14.png", + "@harvey", + "harvey@gmail.com", + "React, Gatsby & Sass", + "432" + ), + createData( + "Antonio", + "/images/user15.png", + "@antonio", + "antonio@gmail.com", + "React, Gatsby & Sass", + "765" + ), + createData( + "Julian", + "/images/user16.png", + "@julian", + "julian@gmail.com", + "React, Gatsby & Sass", + "678" + ), + createData( + "Harold", + "/images/user17.png", + "@harold", + "harold@gmail.com", + "React, Gatsby & Sass", + "165" + ), + createData( + "Kingston", + "/images/user18.png", + "@kingston", + "kingston@info.com", + "React, Gatsby & Sass", + "165" + ), +].sort((a, b) => (a.name < b.name ? -1 : 1)); + +export default function MembersList() { + // 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); + }; + + // Create new user 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 ( + <> + {/* Page title */} +
    +

    Member List

    +
      +
    • + Dashboard +
    • +
    • Member List
    • +
    +
    + + + + + Users List + + + + + + + + + + + Name + + + + Email + + + + Tags + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + + {row.userName} + + + + + + + {row.email} + + + + {row.tags} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new user modal */} + + + + + Create New User + + + + + + + + + + + + + Image + + + + + + + + Name + + + + + + + + User Name + + + + + + + + Email + + + + + + + + Tags + + + + + + + + Projects + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/contact-list/profile.js b/pages/contact-list/profile.js new file mode 100644 index 0000000..0439d48 --- /dev/null +++ b/pages/contact-list/profile.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ProfileInfo from '@/components/ContactList/ProfileInfo'; +import Features from '@/components/ContactList/Features'; +import PersonalInformation from '@/components/ContactList/PersonalInformation'; +import ActivityTimeline from '@/components/ContactList/ActivityTimeline'; +import Overview from '@/components/ContactList/Overview'; +import MyTasks from '@/components/ContactList/MyTasks'; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; +import styles from '@/styles/PageTitle.module.css' +import Link from 'next/link'; + +export default function Profile() { + return ( + <> + {/* Page title */} +
    +

    Profile

    +
      +
    • + Dashboard +
    • +
    • Profile
    • +
    +
    + + + + {/* ProfileInfo */} + + + {/* ImpressionGoalConversions */} + + + {/* Personal Information */} + + + {/* ActivityTimeline */} + + + + + {/* Features */} + + + {/* Overview */} + + + {/* MyTasks */} + + + + + ); +} diff --git a/pages/crypto.js b/pages/crypto.js new file mode 100644 index 0000000..f2a83f7 --- /dev/null +++ b/pages/crypto.js @@ -0,0 +1,65 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Features from "@/components/Dashboard/Crypto/Features"; +import MarketGraph from "@/components/Dashboard/Crypto/MarketGraph"; +import CurrentRate from "@/components/Dashboard/Crypto/CurrentRate"; +import MyProfile from "@/components/Dashboard/Crypto/MyProfile"; +import UserActivities from "@/components/Dashboard/Crypto/UserActivities"; +import OrdersActivities from "@/components/Dashboard/Crypto/OrdersActivities"; +import MyCurrencies from "@/components/Dashboard/Crypto/MyCurrencies"; +import Trading from "@/components/Dashboard/Crypto/Trading"; + +export default function Crypto() { + return ( + <> + {/* Page title */} +
    +

    Crypto

    +
      +
    • + Dashboard +
    • +
    • Crypto
    • +
    +
    + + + + {/* Features */} + + + {/* MarketGraph */} + + + {/* CurrentRate */} + + + + + {/* MyProfile */} + + + {/* UserActivities */} + + + + + {/* OrdersActivities */} + + + + + {/* MyCurrencies */} + + + + + {/* Trading */} + + + + + ); +} diff --git a/pages/ecommerce.js b/pages/ecommerce.js new file mode 100644 index 0000000..54720af --- /dev/null +++ b/pages/ecommerce.js @@ -0,0 +1,102 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/eCommerce/Features"; +import Ratings from "@/components/Dashboard/eCommerce/Ratings"; +import AudienceOverview from "@/components/Dashboard/eCommerce/AudienceOverview"; +import VisitsByDay from "@/components/Dashboard/eCommerce/VisitsByDay"; +import Impressions from "@/components/Dashboard/eCommerce/Impressions"; +import ActivityTimeline from "@/components/Dashboard/eCommerce/ActivityTimeline"; +import RevenuStatus from "@/components/Dashboard/eCommerce/RevenuStatus"; +import SalesByCountries from "@/components/Dashboard/eCommerce/SalesByCountries"; +import NewCustomers from "@/components/Dashboard/eCommerce/NewCustomers"; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts"; +import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite"; + +export default function eCommerce() { + return ( + <> + {/* Page title */} +
    +

    eCommerce

    +
      +
    • + Dashboard +
    • +
    • + eCommerce +
    • +
    +
    + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + {/* VisitsByDay */} + + + + + {/* Impressions */} + + + {/* ActivityTimeline */} + + + + + {/* RevenuStatus */} + + + + + + + {/* Ratings */} + + + {/* LiveVisitsOnOurSite */} + + + {/* SalesByLocations */} + + + {/* NewCustomers */} + + + + + {/* Recent Orders */} + + + + + {/* TeamMembersList */} + + + + + {/* BestSellingProducts */} + + + + + ); +} diff --git a/pages/ecommerce/cart.js b/pages/ecommerce/cart.js new file mode 100644 index 0000000..a479b5a --- /dev/null +++ b/pages/ecommerce/cart.js @@ -0,0 +1,45 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ShoppingCart from '@/components/eCommerce/Cart/ShoppingCart'; +import OrderSummary from '@/components/eCommerce/Cart/OrderSummary'; +import HaveAPromoCode from '@/components/eCommerce/Cart/HaveAPromoCode'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const Cart = () => { + return ( + <> + {/* Page title */} +
    +

    Cart

    +
      +
    • + Dashboard +
    • +
    • Cart
    • +
    +
    + + + + {/* ShoppingCart */} + + + + + {/* OrderSummary */} + + + {/* HaveAPromoCode */} + + + + + ) +} + +export default Cart; \ No newline at end of file diff --git a/pages/ecommerce/checkout.js b/pages/ecommerce/checkout.js new file mode 100644 index 0000000..cb99b39 --- /dev/null +++ b/pages/ecommerce/checkout.js @@ -0,0 +1,41 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ShoppingCart from '@/components/eCommerce/Checkout/ShoppingCart'; +import BillingInformation from '@/components/eCommerce/Checkout/BillingInformation'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const Checkout = () => { + return ( + <> + {/* Page title */} +
    +

    Checkout

    +
      +
    • + Dashboard +
    • +
    • Checkout
    • +
    +
    + + + + {/* ShoppingCart */} + + + + + {/* BillingInformation */} + + + + + ) +} + +export default Checkout; \ No newline at end of file diff --git a/pages/ecommerce/create-product.js b/pages/ecommerce/create-product.js new file mode 100644 index 0000000..9fba186 --- /dev/null +++ b/pages/ecommerce/create-product.js @@ -0,0 +1,384 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +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 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const CreateProduct = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select dropdown + const [categorySelect, setCategorySelect] = React.useState(''); + const handleChange = (event) => { + setCategorySelect(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Create Product

    +
      +
    • + Dashboard +
    • +
    • Create Product
    • +
    +
    + + + + + Create Product + + + + + + Product Name + + + + + + + Short Description + + + + + + + Category + + + + Select + + + + + + + Price + + + + + + + Discount Price + + + + + + + Stock + + + + + + + Product Description + + + + + + + + Meta Title + + + + + + + Meta Keywords + + + + + + + Meta Description + + + + + + + + Product Image + + + + + product + + + + + + + + + + + ) +} + +export default CreateProduct; \ No newline at end of file diff --git a/pages/ecommerce/customers.js b/pages/ecommerce/customers.js new file mode 100644 index 0000000..99fd6d2 --- /dev/null +++ b/pages/ecommerce/customers.js @@ -0,0 +1,25 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import CustomersLists from '@/components/eCommerce/Customers/CustomersLists'; + +const Customers = () => { + return ( + <> + {/* Page title */} +
    +

    Customers

    +
      +
    • + Dashboard +
    • +
    • Customers
    • +
    +
    + + + + ) +} + +export default Customers; \ No newline at end of file diff --git a/pages/ecommerce/order-details.js b/pages/ecommerce/order-details.js new file mode 100644 index 0000000..ff6998e --- /dev/null +++ b/pages/ecommerce/order-details.js @@ -0,0 +1,344 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import TrackOrder from "@/components/eCommerce/OrderDetails/TrackOrder"; +import OrderTable from "@/components/eCommerce/OrderDetails/TrackOrder/OrderTable"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const OrderDetails = () => { + return ( + <> + {/* Page title */} +
    +

    Order Details

    +
      +
    • + Dashboard +
    • +
    • Order Details
    • +
    +
    + + + + {/* TrackOrder */} + + + + + {/* OrderTable */} + + + + + + + + + Shipping Information + + + + Thomas Adison + + + + + + Address: + + 3559 Roosevelt Wilson Lane San Bernardino, CA 92405 + + + + + Phone: + + (123) 456-7890 + + + + + Email: + + contact@gmail.com + + + + + + + + + Billing Information + + + + Thomas Adison + + + + + + Payment Type: + + Credit Card + + + + + Provider: + + Visa ending in 2851 + + + + + Valid Date: + + April 22 2019 + + + + + CVV: + + xxx + + + + + + + + + Delivery Info + + + + UPS Delivery + + + + + + Order ID : + + xxxx235 + + + + + Payment Mode : + + COD + + + + + Email: + + info@contact.com + + + + + + + ); +}; + +export default OrderDetails; diff --git a/pages/ecommerce/orders-list.js b/pages/ecommerce/orders-list.js new file mode 100644 index 0000000..514620d --- /dev/null +++ b/pages/ecommerce/orders-list.js @@ -0,0 +1,30 @@ +import React from 'react'; +import OrdersLists from '@/components/eCommerce/OrdersList/OrdersLists'; +import Features from '@/components/eCommerce/OrdersList/Features'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +const OrdersList = () => { + return ( + <> + {/* Page title */} +
    +

    Orders List

    +
      +
    • + Dashboard +
    • +
    • Orders List
    • +
    +
    + + {/* Features */} + + + {/* OrdersLists */} + + + ) +} + +export default OrdersList; \ No newline at end of file diff --git a/pages/ecommerce/product-details.js b/pages/ecommerce/product-details.js new file mode 100644 index 0000000..121a220 --- /dev/null +++ b/pages/ecommerce/product-details.js @@ -0,0 +1,23 @@ +import React from 'react'; +import ProductDetailsContent from "@/components/eCommerce/ProductDetails/ProductDetailsContent"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function ProductDetails() { + return ( + <> + {/* Page title */} +
    +

    Product Details

    +
      +
    • + Dashboard +
    • +
    • Product Details
    • +
    +
    + + + + ); +} diff --git a/pages/ecommerce/products.js b/pages/ecommerce/products.js new file mode 100644 index 0000000..8cc5f55 --- /dev/null +++ b/pages/ecommerce/products.js @@ -0,0 +1,1017 @@ +import * as React from "react"; +import { Box } from "@mui/material"; +import Grid from "@mui/material/Grid"; +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 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 VisibilityIcon from '@mui/icons-material/Visibility'; +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"; +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 ShoppingCartIcon from '@mui/icons-material/ShoppingCart'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +import dynamic from 'next/dynamic' +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +// Create Product Modal Style +const style = { + position: "absolute", + top: "50%", + left: "50%", + transform: "translate(-50%, -50%)", + height: "100%", + maxWidth: '700px', + width: '100%', + overflow: "auto", + bgcolor: "background.paper", + boxShadow: 24, + borderRadius: "8px", +}; + +function Product(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +Product.propTypes = { + count: PropTypes.number.isRequired, + onPageChange: PropTypes.func.isRequired, + page: PropTypes.number.isRequired, + rowsPerPage: PropTypes.number.isRequired, +}; + +function createData( + productImg, + productTitle, + category, + price, + orders, + stock, + rating, +) { + return { + productImg, + productTitle, + category, + price, + orders, + stock, + rating, + }; +} + +const rows = [ + createData( + "/images/product1.png", + "Laptop Macos Pro", + "Laptop", + "$289.50", + "46", + "12", + "5.0 (61 votes)", + ), + createData( + "/images/product2.png", + "Smart Camera XD6", + "Camera", + "$189.50", + "50", + "Out of Stock", + "5.0 (40 votes)" + ), + createData( + "/images/product3.png", + "Pixi 8 Wireless Airphone", + "Phone", + "$250.50", + "45", + "400", + "5.0 (15 votes)" + ), + createData( + "/images/product4.png", + "Jebble Smart Watch", + "Watch", + "$289.50", + "100", + "200", + "5.0 (99 votes)" + ), + createData( + "/images/product5.png", + "Admas Airpod x-Zon", + "Airpod", + "$289.50", + "120", + "Out of Stock", + "5.0 (150 votes)" + ), + createData( + "/images/product6.png", + "Smart Watch F8 Pro", + "Watch", + "$289.50", + "20", + "100", + "5.0 (5 votes)" + ), + createData( + "/images/product7.png", + "Nord Fold ZL", + "Pone", + "$289.50", + "55", + "108", + "5.0 (11 votes)" + ), + createData( + "/images/product8.png", + "Wall Clock Cimbina", + "Clock", + "$289.50", + "40", + "100", + "5.0 (4 votes)" + ), + createData( + "/images/product9.png", + "Galaxo T6 Munsun", + "Smart Phone", + "$289.50", + "50", + "130", + "5.0 (55 votes)" + ), + createData( + "/images/product1.png", + "Macbook Pro", + "Laptop", + "$1,299.00", + "120", + "1500", + "5.0 (150 votes)" + ), + createData( + "/images/product2.png", + "iphone 14 pro max", + "Phone", + "$1029", + "200", + "599", + "5.0 (200 votes)" + ), + createData( + "/images/product3.png", + "HeadPhone", + "HeadPhone", + "$100.50", + "25", + "50", + "5.0 (61 votes)" + ), + createData( + "/images/product4.png", + "Superstar shoes", + "shoes", + "$59.50", + "45", + "50", + "5.0 (45 votes)" + ), + createData( + "/images/product5.png", + "Nike shirts", + "Shirts", + "$30.50", + "32", + "40", + "5.0 (22 votes)" + ), + createData( + "/images/product6.png", + "Nike caps", + "Caps", + "$15.50", + "33", + "50", + "5.0 (3 votes)" + ), + createData( + "/images/product7.png", + "Hoodie (Blue)", + "Hoodie", + "$59.50", + "30", + "55", + "5.0 (44 votes)" + ), + createData( + "/images/product8.png", + "Wall Clock China", + "Clock", + "$100.50", + "30", + "230", + "5.0 (45 votes)" + ), + createData( + "/images/product9.png", + "Galaxo T6 Munsun 2", + "Phone", + "$220.50", + "22", + "50", + "5.0 (24 votes)" + ), +].sort((a, b) => (a.productTitle < b.productTitle ? -1 : 1)); + +export default function Products() { + // 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); + }; + + // Create Product Modal & Form + const [open, setOpen] = React.useState(false); + const handleOpen = () => 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"), + }); + }; + + // Select dropdown + const [categorySelect, setCategorySelect] = React.useState(''); + const handleChange = (event) => { + setCategorySelect(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Products

    +
      +
    • + Dashboard +
    • +
    • Products
    • +
    +
    + + + + + Products + + + + + + + + + + + Product Name + + + + Category + + + + Price + + + + Orders + + + + Stock + + + + Rating + + + + Actions + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + Product Img + + {row.productTitle} + + + + + + {row.category} + + + + {row.price} + + + + {row.orders} + + + + {row.stock} + + + + {row.rating} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create Product Modal */} + + + + + + Create Product + + + + + + + + + + + + + Product Name + + + + + + + Short Description + + + + + + + Category + + + + Select + + + + + + + Price + + + + + + + + Discount Price + + + + + + + + Stock + + + + + + + + Product Description + + + + + + + + Product Image + + + + + + product + + + + + + + + + + + + + + + + ); +} diff --git a/pages/ecommerce/sellers.js b/pages/ecommerce/sellers.js new file mode 100644 index 0000000..7d01631 --- /dev/null +++ b/pages/ecommerce/sellers.js @@ -0,0 +1,207 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Button from "@mui/material/Button"; +import IconButton from "@mui/material/IconButton"; +import DeleteIcon from "@mui/icons-material/Delete"; +import Tooltip from "@mui/material/Tooltip"; +import BorderColorIcon from "@mui/icons-material/BorderColor"; +import Link from "next/link"; +import styles from '@/styles/PageTitle.module.css' + +const sellerLists = [ + { + id: 1, + brandLogo: "/images/seller1.png", + brandName: "Nesta Technologies", + sellersName: "Katia Stapleton", + itemStock: "12,0558", + walletBalance: "$48,450.00", + viewUrl: "#", + }, + { + id: 2, + brandLogo: "/images/seller2.png", + brandName: "Force Medicines", + sellersName: "Wade Dave", + itemStock: "10,500", + walletBalance: "$50,500.00", + viewUrl: "#", + }, + { + id: 3, + brandLogo: "/images/seller3.png", + brandName: "Metelgo Sys", + sellersName: "Gilbert Dan", + itemStock: "8,450", + walletBalance: "$60,450.00", + viewUrl: "#", + }, + { + id: 4, + brandLogo: "/images/seller4.png", + brandName: "Digito Galatoxy", + sellersName: "Roberto Ramon", + itemStock: "15,0587", + walletBalance: "$78,450.00", + viewUrl: "#", + }, + { + id: 5, + brandLogo: "/images/seller5.png", + brandName: "Micro Technology", + sellersName: "Nathaniel Liam", + itemStock: "18,0558", + walletBalance: "$65,450.00", + viewUrl: "#", + }, + { + id: 6, + brandLogo: "/images/seller6.png", + brandName: "iTest Factory", + sellersName: "Ethan Milton", + itemStock: "19,0558", + walletBalance: "$76,450.00", + viewUrl: "#", + }, + { + id: 7, + brandLogo: "/images/seller7.png", + brandName: "Syntech Service", + sellersName: "Joshua Harvey", + itemStock: "20,0558", + walletBalance: "$56,450.00", + viewUrl: "#", + }, + { + id: 8, + brandLogo: "/images/seller8.png", + brandName: "Zotic Mentex", + sellersName: "Antonio Connor", + itemStock: "22,0558", + walletBalance: "$90,450.00", + viewUrl: "#", + }, +]; + +const Sellers = () => { + return ( + <> + {/* Page title */} +
    +

    Sellers

    +
      +
    • + Dashboard +
    • +
    • Sellers
    • +
    +
    + + + {sellerLists.map((seller) => ( + + + Seller + + + {seller.brandName} + + + {seller.sellersName} + + + + + + + + Item Stock + + + {seller.itemStock} + + + + + Wallet Balance + + + {seller.walletBalance} + + + + + {/* Edit & Delete Button */} + + + + + + + + + + + + + + + + ))} + + + ); +}; + +export default Sellers; diff --git a/pages/email/inbox.js b/pages/email/inbox.js new file mode 100644 index 0000000..0daaa48 --- /dev/null +++ b/pages/email/inbox.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Email/LeftSidebar'; +import EmailLists from '@/components/Email/EmailLists'; + +export default function Inbox() { + return ( + <> + {/* Page title */} +
    +

    Email

    +
      +
    • + Dashboard +
    • +
    • Email
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* EmailList */} + + + + + ); +} diff --git a/pages/email/read-email.js b/pages/email/read-email.js new file mode 100644 index 0000000..e98fe0a --- /dev/null +++ b/pages/email/read-email.js @@ -0,0 +1,39 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import LeftSidebar from '@/components/Email/LeftSidebar'; +import ReadEmailContent from '@/components/Email/ReadEmailContent'; + +export default function ReadEmail() { + return ( + <> + {/* Page title */} +
    +

    Read Email

    +
      +
    • + Dashboard +
    • +
    • Read Email
    • +
    +
    + + + + {/* LeftSidebar */} + + + + + {/* ReadEmailContent */} + + + + + ); +} diff --git a/pages/forms/advanced-elements.js b/pages/forms/advanced-elements.js new file mode 100644 index 0000000..77d799e --- /dev/null +++ b/pages/forms/advanced-elements.js @@ -0,0 +1,57 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import DefaultSelect from '@/components/Forms/AdvancedElements/DefaultSelect'; +import MultiSelect from '@/components/Forms/AdvancedElements/MultiSelect'; +import MultipleSelectChip from '@/components/Forms/AdvancedElements/MultipleSelectChip'; +import CountrySelect from '@/components/Forms/AdvancedElements/CountrySelect'; +import BasicDatePicker from '@/components/Forms/AdvancedElements/BasicDatePicker'; +import BasicTimePicker from '@/components/Forms/AdvancedElements/BasicTimePicker'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function AdvancedElements() { + return ( + <> + {/* Page title */} +
    +

    Advanced Elements

    +
      +
    • + Dashboard +
    • +
    • Advanced Elements
    • +
    +
    + + + + {/* DefaultSelect */} + + + + + {/* MultiSelect */} + + + + + {/* MultipleSelectChip */} + + + + + {/* CountrySelect */} + + + {/* BasicTimePicker */} + + + {/* BasicDatePicker */} + + + ); +} diff --git a/pages/forms/editors.js b/pages/forms/editors.js new file mode 100644 index 0000000..2e5ba3b --- /dev/null +++ b/pages/forms/editors.js @@ -0,0 +1,23 @@ +import React from 'react'; +import EditorArea from '@/components/Forms/EditorArea'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function Editors() { + return ( + <> + {/* Page title */} +
    +

    Editors

    +
      +
    • + Dashboard +
    • +
    • Editors
    • +
    +
    + + + + ); +} diff --git a/pages/forms/file-uploader.js b/pages/forms/file-uploader.js new file mode 100644 index 0000000..1693d85 --- /dev/null +++ b/pages/forms/file-uploader.js @@ -0,0 +1,23 @@ +import React from 'react'; +import UploadMultipleFiles from '@/components/Forms/FileUploader/UploadMultipleFiles'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FileUploader() { + return ( + <> + {/* Page title */} +
    +

    File Uploader

    +
      +
    • + Dashboard +
    • +
    • File Uploader
    • +
    +
    + + + + ); +} diff --git a/pages/forms/form-layouts.js b/pages/forms/form-layouts.js new file mode 100644 index 0000000..55aad24 --- /dev/null +++ b/pages/forms/form-layouts.js @@ -0,0 +1,50 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicForm from '@/components/Forms/FormLayouts/BasicForm'; +import BasicWithIcons from '@/components/Forms/FormLayouts/BasicWithIcons'; +import SignInForm from '@/components/Forms/FormLayouts/SignInForm'; +import SignUpForm from '@/components/Forms/FormLayouts/SignUpForm'; +import CustomStyles from '@/components/Forms/FormLayouts/CustomStyles'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FormLayouts() { + return ( + <> + {/* Page title */} +
    +

    Form Layouts

    +
      +
    • + Dashboard +
    • +
    • Form Layouts
    • +
    +
    + + + + {/* BasicForm */} + + + {/* SignIn */} + + + + + {/* BasicWithIcons */} + + + {/* SignUpForm */} + + + + + + + ); +} diff --git a/pages/help-desk.js b/pages/help-desk.js new file mode 100644 index 0000000..3ce09dc --- /dev/null +++ b/pages/help-desk.js @@ -0,0 +1,74 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Features from "@/components/Dashboard/HelpDesk/Features"; +import TicketsStatus from "@/components/Dashboard/HelpDesk/TicketsStatus"; +import CustomerSatisfaction from "@/components/Dashboard/HelpDesk/CustomerSatisfaction"; +import SupportStatus from "@/components/Dashboard/HelpDesk/SupportStatus"; +import AverageSpeedOfAnswer from "@/components/Dashboard/HelpDesk/AverageSpeedOfAnswer"; +import AgentPerformance from "@/components/Dashboard/HelpDesk/AgentPerformance"; +import TimeToResolveComplaint from "@/components/Dashboard/HelpDesk/TimeToResolveComplaint"; +import Activity from "@/components/Dashboard/HelpDesk/Activity"; + +export default function HelpDesk() { + return ( + <> + {/* Page title */} +
    +

    Help/Support Desk

    +
      +
    • + Dashboard +
    • +
    • Help or Support Desk
    • +
    +
    + + {/* Features */} + + + + + {/* TicketsStatus */} + + + + + {/* CustomerSatisfaction */} + + + + + + + + + {/* AverageSpeedOfAnswer */} + + + {/* TimeToResolveComplaint */} + + + + + {/* SupportStatus */} + + + + + + + {/* Activity */} + + + + + {/* AgentPerformance */} + + + ); +} diff --git a/pages/index.js b/pages/index.js new file mode 100644 index 0000000..54720af --- /dev/null +++ b/pages/index.js @@ -0,0 +1,102 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from "@/components/Dashboard/eCommerce/Features"; +import Ratings from "@/components/Dashboard/eCommerce/Ratings"; +import AudienceOverview from "@/components/Dashboard/eCommerce/AudienceOverview"; +import VisitsByDay from "@/components/Dashboard/eCommerce/VisitsByDay"; +import Impressions from "@/components/Dashboard/eCommerce/Impressions"; +import ActivityTimeline from "@/components/Dashboard/eCommerce/ActivityTimeline"; +import RevenuStatus from "@/components/Dashboard/eCommerce/RevenuStatus"; +import SalesByCountries from "@/components/Dashboard/eCommerce/SalesByCountries"; +import NewCustomers from "@/components/Dashboard/eCommerce/NewCustomers"; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BestSellingProducts from "@/components/Dashboard/eCommerce/BestSellingProducts"; +import LiveVisitsOnOurSite from "@/components/Dashboard/eCommerce/LiveVisitsOnOurSite"; + +export default function eCommerce() { + return ( + <> + {/* Page title */} +
    +

    eCommerce

    +
      +
    • + Dashboard +
    • +
    • + eCommerce +
    • +
    +
    + + + + {/* Features */} + + + {/* AudienceOverview */} + + + + + {/* VisitsByDay */} + + + + + {/* Impressions */} + + + {/* ActivityTimeline */} + + + + + {/* RevenuStatus */} + + + + + + + {/* Ratings */} + + + {/* LiveVisitsOnOurSite */} + + + {/* SalesByLocations */} + + + {/* NewCustomers */} + + + + + {/* Recent Orders */} + + + + + {/* TeamMembersList */} + + + + + {/* BestSellingProducts */} + + + + + ); +} diff --git a/pages/lms-courses.js b/pages/lms-courses.js new file mode 100644 index 0000000..276ee25 --- /dev/null +++ b/pages/lms-courses.js @@ -0,0 +1,87 @@ +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from '@/components/Dashboard/LMSCourses/Features'; +import YourProgress from "@/components/Dashboard/LMSCourses/YourProgress"; +import ExperienceIQ from "@/components/Dashboard/LMSCourses/ExperienceIQ"; +import HoursSpent from "@/components/Dashboard/LMSCourses/HoursSpent"; +import MyPlanning from "@/components/Dashboard/LMSCourses/MyPlanning"; +import TopInstructor from "@/components/Dashboard/LMSCourses/TopInstructor"; +import TotalWatched from "@/components/Dashboard/LMSCourses/TotalWatched"; +import CurrentCourses from "@/components/Dashboard/LMSCourses/CurrentCourses"; +import Courses from "@/components/Dashboard/LMSCourses/Courses"; +import ActiveCourse from "@/components/Dashboard/LMSCourses/ActiveCourse"; +import CourseCompletion from "@/components/Dashboard/LMSCourses/CourseCompletion"; +import Messages from "@/components/Dashboard/LMSCourses/Messages"; +import TopStudents from "@/components/Dashboard/LMSCourses/TopStudents"; + +export default function LMSCourses() { + return ( + <> + {/* Page title */} +
    +

    LMS Courses

    +
      +
    • + Dashboard +
    • +
    • + LMS Courses +
    • +
    +
    + + {/* Features */} + + + + + {/* YourProgress */} + + + + + {/* HoursSpent */} + + + {/* TopInstructor */} + + + + + {/* MyPlanning */} + + + {/* TotalWatched */} + + + + + {/* CurrentCourse */} + + + {/* Courses */} + + + + + {/* ExperienceIQ */} + + + {/* ActiveCourse */} + + + {/* CourseCompletion */} + + + {/* Messages */} + + + {/* TopStudents */} + + + + + + ); +} diff --git a/pages/notification.js b/pages/notification.js new file mode 100644 index 0000000..8a36811 --- /dev/null +++ b/pages/notification.js @@ -0,0 +1,22 @@ +import NotificationTable from '@/components/Notification/NotificationTable'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Notification() { + return ( + <> + {/* Page title */} +
    +

    Notification

    +
      +
    • + Dashboard +
    • +
    • Notification
    • +
    +
    + + + + ); +} diff --git a/pages/pages/apexcharts.js b/pages/pages/apexcharts.js new file mode 100644 index 0000000..216b059 --- /dev/null +++ b/pages/pages/apexcharts.js @@ -0,0 +1,399 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import { Typography } from "@mui/material"; +import Basic from '@/components/Pages/Charts/ApexCharts/LineCharts/Basic'; +import Stepline from '@/components/Pages/Charts/ApexCharts/LineCharts/Stepline'; +import Gradient from '@/components/Pages/Charts/ApexCharts/LineCharts/Gradient'; +import Dashed from '@/components/Pages/Charts/ApexCharts/LineCharts/Dashed'; +import BasicAreaCharts from '@/components/Pages/Charts/ApexCharts/AreaCharts/BasicAreaCharts'; +import Spline from '@/components/Pages/Charts/ApexCharts/AreaCharts/Spline'; +import DatetimeXAxis from '@/components/Pages/Charts/ApexCharts/AreaCharts/DatetimeXAxis'; +import Negative from '@/components/Pages/Charts/ApexCharts/AreaCharts/Negative'; +import BasicColumnCharts from '@/components/Pages/Charts/ApexCharts/ColumnCharts/BasicColumnCharts'; +import ColumnWithDataLabels from '@/components/Pages/Charts/ApexCharts/ColumnCharts/ColumnWithDataLabels'; +import StackedColumns from '@/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns'; +import StackedColumns100 from '@/components/Pages/Charts/ApexCharts/ColumnCharts/StackedColumns100'; +import BasicBarCharts from '@/components/Pages/Charts/ApexCharts/BarCharts/BasicBarCharts'; +import Grouped from '@/components/Pages/Charts/ApexCharts/BarCharts/Grouped'; +import StackedBar from '@/components/Pages/Charts/ApexCharts/BarCharts/StackedBar'; +import StackedBars100 from '@/components/Pages/Charts/ApexCharts/BarCharts/StackedBars100'; +import LineColumn from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineColumn'; +import MultipleYAxis from '@/components/Pages/Charts/ApexCharts/MixedCharts/MultipleYAxis'; +import LineArea from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineArea'; +import LineColumnArea from '@/components/Pages/Charts/ApexCharts/MixedCharts/LineColumnArea'; +import BasicPolarAreaCharts from '@/components/Pages/Charts/ApexCharts/PolarAreaCharts/BasicPolarAreaCharts'; +import Monochrome from '@/components/Pages/Charts/ApexCharts/PolarAreaCharts/Monochrome'; +import BasicRadarCharts from '@/components/Pages/Charts/ApexCharts/RadarCharts/BasicRadarCharts'; +import RadarMultipleSeries from '@/components/Pages/Charts/ApexCharts/RadarCharts/RadarMultipleSeries'; +import RadarWithPolygonFill from '@/components/Pages/Charts/ApexCharts/RadarCharts/RadarWithPolygonFill'; +import BasicRadialBarCharts from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/BasicRadialBarCharts'; +import MultipleRadialbars from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/MultipleRadialbars'; +import CustomAngleCircle from '@/components/Pages/Charts/ApexCharts/RadialBarCharts/CustomAngleCircle'; +import SimplePieChart from '@/components/Pages/Charts/ApexCharts/PieCharts/SimplePieChart'; +import SimpleDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/SimpleDonut'; +import UpdateDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/UpdateDonut'; +import MonochromePie from '@/components/Pages/Charts/ApexCharts/PieCharts/MonochromePie'; +import GradientDonut from '@/components/Pages/Charts/ApexCharts/PieCharts/GradientDonut'; +import PieCharts from '@/components/Pages/Charts/ApexCharts/PieCharts/DonutWithPattern'; +import NavBar from '@/components/Pages/Charts/NavBar'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function Charts() { + return ( + <> + {/* Page title */} +
    +

    Charts

    +
      +
    • + Dashboard +
    • +
    • Charts
    • +
    +
    + + {/* Nav */} + + + {/* Line Charts */} + + Line Charts + + + + + {/* Basic */} + + + {/* Gradient */} + + + + + {/* Stepline */} + + + {/* Dashed */} + + + + + {/* Area Charts */} + + Area Charts + + + + + {/* BasicAreaCharts */} + + + {/* DatetimeXAxis */} + + + + + {/* Spline */} + + + {/* Negative */} + + + + + {/* Column Charts */} + + Column Charts + + + + + {/* BasicColumnCharts */} + + + {/* StackedColumns */} + + + + + {/* ColumnWithDataLabels */} + + + {/* StackedColumns100 */} + + + + + {/* Bar Charts */} + + Bar Charts + + + + + {/* BasicBarCharts */} + + + {/* StackedBar */} + + + + + {/* Grouped */} + + + {/* StackedBars100 */} + + + + + {/* Mixed Charts */} + + Mixed Charts + + + + + {/* LineColumn */} + + + {/* LineArea */} + + + + + {/* MultipleYAxis */} + + + {/* LineColumnArea */} + + + + + {/* Polar Area Charts */} + + Polar Area Charts + + + + + {/* BasicPolarAreaCharts */} + + + + + {/* Monochrome */} + + + + + {/* Radar Charts */} + + Radar Charts + + + + + {/* BasicRadarCharts */} + + + + + {/* RadarMultipleSeries */} + + + + + {/* RadarWithPolygonFill */} + + + + + {/* RadialBar Charts */} + + RadialBar Charts + + + + + {/* BasicRadialBarCharts */} + + + + + {/* MultipleRadialbars */} + + + + + {/* CustomAngleCircle */} + + + + + {/* PieCharts */} + + Pie Charts + + + + + {/* SimplePieChart */} + + + {/* UpdateDonut */} + + + {/* MonochromePie */} + + + + + {/* SimpleDonut */} + + + {/* GradientDonut */} + + + {/* PieCharts */} + + + + + ); +} diff --git a/pages/pages/faq.js b/pages/pages/faq.js new file mode 100644 index 0000000..9e55ab8 --- /dev/null +++ b/pages/pages/faq.js @@ -0,0 +1,32 @@ +import React from 'react'; +import BasicAccordion from '@/components/UIElements/Accordion/BasicAccordion'; +import ControlledAccordion from '@/components/UIElements/Accordion/ControlledAccordion'; +import Customization from '@/components/UIElements/Accordion/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function FAQ() { + return ( + <> + {/* Page title */} +
    +

    FAQ

    +
      +
    • + Dashboard +
    • +
    • FAQ
    • +
    +
    + + {/* BasicAccordion */} + + + {/* ControlledAccordion */} + + + {/* Customization */} + + + ); +} diff --git a/pages/pages/gallery.js b/pages/pages/gallery.js new file mode 100644 index 0000000..21f1a2b --- /dev/null +++ b/pages/pages/gallery.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import GalleryContent from '@/components/Pages/Gallery/GalleryContent'; + +export default function Gallery() { + return ( + <> + {/* Page title */} +
    +

    Gallery

    +
      +
    • + Dashboard +
    • +
    • Gallery
    • +
    +
    + + + + ); +} diff --git a/pages/pages/invoice-details.js b/pages/pages/invoice-details.js new file mode 100644 index 0000000..0c770ad --- /dev/null +++ b/pages/pages/invoice-details.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import InvoiceDetailsContent from '@/components/Pages/Invoice/InvoiceDetailsContent' + +export default function InvoiceDetails() { + return ( + <> + {/* Page title */} +
    +

    Invoice Details

    +
      +
    • + Dashboard +
    • +
    • Invoice Details
    • +
    +
    + + + + ); +} diff --git a/pages/pages/invoice.js b/pages/pages/invoice.js new file mode 100644 index 0000000..814811c --- /dev/null +++ b/pages/pages/invoice.js @@ -0,0 +1,23 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import InvoiceLists from '@/components/Pages/Invoice/InvoiceLists'; + +export default function Invoice() { + return ( + <> + {/* Page title */} +
    +

    Invoice

    +
      +
    • + Dashboard +
    • +
    • Invoice
    • +
    +
    + + + + ); +} diff --git a/pages/pages/maps.js b/pages/pages/maps.js new file mode 100644 index 0000000..fc72744 --- /dev/null +++ b/pages/pages/maps.js @@ -0,0 +1,32 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import GoogleMap from '@/components/Pages/Maps/GoogleMap'; +import BasicMarkers from '@/components/Pages/Maps/BasicMarkers'; +import EuropeMapWithGraticule from '@/components/Pages/Maps/EuropeMapWithGraticule'; + +export default function Maps() { + return ( + <> + {/* Page title */} +
    +

    Maps

    +
      +
    • + Dashboard +
    • +
    • Maps
    • +
    +
    + + {/* GoogleMap */} + + + {/* BasicMarkers */} + + + {/* EuropeMapWithGraticule */} + + + ); +} diff --git a/pages/pages/material-icons.js b/pages/pages/material-icons.js new file mode 100644 index 0000000..a3cc13e --- /dev/null +++ b/pages/pages/material-icons.js @@ -0,0 +1,558 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import AbcIcon from '@mui/icons-material/Abc'; +import AcUnitIcon from '@mui/icons-material/AcUnit'; +import AccessAlarmIcon from '@mui/icons-material/AccessAlarm'; +import AccessAlarmsIcon from '@mui/icons-material/AccessAlarms'; +import AccessTimeIcon from '@mui/icons-material/AccessTime'; +import AccessTimeFilledIcon from '@mui/icons-material/AccessTimeFilled'; +import AccessibilityIcon from '@mui/icons-material/Accessibility'; +import AccessibilityNewIcon from '@mui/icons-material/AccessibilityNew'; +import AccessibleIcon from '@mui/icons-material/Accessible'; +import AccessibleForwardIcon from '@mui/icons-material/AccessibleForward'; +import AccountBalanceIcon from '@mui/icons-material/AccountBalance'; +import AccountBalanceWalletIcon from '@mui/icons-material/AccountBalanceWallet'; +import AccountBoxIcon from '@mui/icons-material/AccountBox'; +import AccountCircleIcon from '@mui/icons-material/AccountCircle'; +import AccountTreeIcon from '@mui/icons-material/AccountTree'; +import AdUnitsIcon from '@mui/icons-material/AdUnits'; +import AdbIcon from '@mui/icons-material/Adb'; +import AddIcon from '@mui/icons-material/Add'; +import AddAPhotoIcon from '@mui/icons-material/AddAPhoto'; +import AddAlarmIcon from '@mui/icons-material/AddAlarm'; +import AddAlertIcon from '@mui/icons-material/AddAlert'; +import AddBoxIcon from '@mui/icons-material/AddBox'; +import AddBusinessIcon from '@mui/icons-material/AddBusiness'; +import AddCardIcon from '@mui/icons-material/AddCard'; +import AddCircleIcon from '@mui/icons-material/AddCircle'; +import AddCircleOutlineIcon from '@mui/icons-material/AddCircleOutline'; +import AddToQueueIcon from '@mui/icons-material/AddToQueue'; +import AlbumIcon from '@mui/icons-material/Album'; +import AlignVerticalBottomIcon from '@mui/icons-material/AlignVerticalBottom'; +import AllInboxIcon from '@mui/icons-material/AllInbox'; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' + +export default function MaterialIcons() { + return ( + <> + {/* Page title */} +
    +

    Material Icons

    +
      +
    • + Dashboard +
    • +
    • Material Icons
    • +
    +
    + + + + Material Icons + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/pages/pricing.js b/pages/pages/pricing.js new file mode 100644 index 0000000..3783134 --- /dev/null +++ b/pages/pages/pricing.js @@ -0,0 +1,26 @@ +import React from 'react'; +import PricingPlanStyle1 from '@/components/Pages/Pricing/PricingPlanStyle1'; +import PricingPlanStyle2 from '@/components/Pages/Pricing/PricingPlanStyle2'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Pricing() { + return ( + <> + {/* Page title */} +
    +

    Pricing

    +
      +
    • + Dashboard +
    • +
    • Pricing
    • +
    +
    + + + + + + ); +} diff --git a/pages/pages/profile.js b/pages/pages/profile.js new file mode 100644 index 0000000..cb5a6fd --- /dev/null +++ b/pages/pages/profile.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Features from '@/components/Pages/Profile/Features'; +import PersonalInformation from '@/components/Pages/Profile/PersonalInformation'; +import ActivityTimeline from '@/components/Pages/Profile/ActivityTimeline'; +import Overview from '@/components/Pages/Profile/Overview'; +import MyTasks from '@/components/Pages/Profile/MyTasks'; +import ProfileContent from '@/components/Pages/Profile/ProfileContent'; +import ImpressionGoalConversions from "@/components/Dashboard/Analytics/ImpressionGoalConversions"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Profile() { + return ( + <> + {/* Page title */} +
    +

    Profile

    +
      +
    • + Dashboard +
    • +
    • Profile
    • +
    +
    + + + + {/* ProfileContent */} + + + {/* ImpressionGoalConversions */} + + + {/* Personal Information */} + + + {/* ActivityTimeline */} + + + + + {/* Features */} + + + {/* Overview */} + + + {/* MyTasks */} + + + + + ); +} diff --git a/pages/pages/recharts.js b/pages/pages/recharts.js new file mode 100644 index 0000000..30da6b8 --- /dev/null +++ b/pages/pages/recharts.js @@ -0,0 +1,151 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import NavBar from '@/components/Pages/Charts/NavBar'; +import SimpleLineChart from '@/components/Pages/Charts/Recharts/LineChart/SimpleLineChart'; +import VerticalLineChart from '@/components/Pages/Charts/Recharts/LineChart/VerticalLineChart'; +import SimpleAreaChart from '@/components/Pages/Charts/Recharts/AreaChart/SimpleAreaChart'; +import StackedAreaChart from '@/components/Pages/Charts/Recharts/AreaChart/StackedAreaChart'; +import TinyBarChart from '@/components/Pages/Charts/Recharts/BarChart/TinyBarChart'; +import SimpleBarChart from '@/components/Pages/Charts/Recharts/BarChart/SimpleBarChart'; +import LineBarAreaComposedChart from '@/components/Pages/Charts/Recharts/ComposedChart/LineBarAreaComposedChart'; +import SameDataComposedChart from '@/components/Pages/Charts/Recharts/ComposedChart/SameDataComposedChart'; +import SimpleScatterChart from '@/components/Pages/Charts/Recharts/ScatterChart/SimpleScatterChart'; +import ThreeDimScatterChart from '@/components/Pages/Charts/Recharts/ScatterChart/ThreeDimScatterChart'; +import TwoLevelPieChart from './../../components/Pages/Charts/Recharts/PieChart/TwoLevelPieChart'; +import TwoSimplePieChart from '@/components/Pages/Charts/Recharts/PieChart/TwoSimplePieChart'; +import SimpleRadarChart from '@/components/Pages/Charts/Recharts/RadarChart/SimpleRadarChart'; +import SpecifiedDomainRadarChart from '@/components/Pages/Charts/Recharts/RadarChart/SpecifiedDomainRadarChart'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Recharts() { + return ( + <> + {/* Page title */} +
    +

    Recharts

    +
      +
    • + Dashboard +
    • +
    • Recharts
    • +
    +
    + + {/* Nav */} + + + + + {/* SimpleLineChart */} + + + + + {/* VerticalLineChart */} + + + + + + + {/* SimpleAreaChart */} + + + + + {/* StackedAreaChart */} + + + + + + + {/* TinyBarChart */} + + + + + {/* SimpleBarChart */} + + + + + + + {/* LineBarAreaComposedChart */} + + + + + {/* SameDataComposedChart */} + + + + + + + {/* SimpleScatterChart */} + + + + + {/* ThreeDimScatterChart */} + + + + + + + {/* TwoLevelPieChart */} + + + + + {/* TwoSimplePieChart */} + + + + + + + {/* SimpleRadarChart */} + + + + + {/* SpecifiedDomainRadarChart */} + + + + + ); +} diff --git a/pages/pages/remixicon.js b/pages/pages/remixicon.js new file mode 100644 index 0000000..e09fe0e --- /dev/null +++ b/pages/pages/remixicon.js @@ -0,0 +1,528 @@ +import React from "react"; +import Card from "@mui/material/Card"; +import { Box, Typography } from "@mui/material"; +import Grid from "@mui/material/Grid"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Remixicon() { + return ( + <> + {/* Page title */} +
    +

    Remixicon

    +
      +
    • + Dashboard +
    • +
    • Remixicon
    • +
    +
    + + + + Remixicon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} diff --git a/pages/pages/search.js b/pages/pages/search.js new file mode 100644 index 0000000..5264c63 --- /dev/null +++ b/pages/pages/search.js @@ -0,0 +1,23 @@ +import React from 'react'; +import SearchContent from '@/components/Pages/Search/SearchContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Search() { + return ( + <> + {/* Page title */} +
    +

    Search

    +
      +
    • + Dashboard +
    • +
    • Search
    • +
    +
    + + + + ); +} diff --git a/pages/pages/support.js b/pages/pages/support.js new file mode 100644 index 0000000..062b6d8 --- /dev/null +++ b/pages/pages/support.js @@ -0,0 +1,24 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import SupportForm from '@/components/Pages/Support/SupportForm'; + +export default function Support() { + return ( + <> + {/* Page title */} +
    +

    Support

    +
      +
    • + Dashboard +
    • +
    • Support
    • +
    +
    + + {/* SupportForm */} + + + ); +} diff --git a/pages/pages/terms-conditions.js b/pages/pages/terms-conditions.js new file mode 100644 index 0000000..b3c8e1d --- /dev/null +++ b/pages/pages/terms-conditions.js @@ -0,0 +1,23 @@ +import React from 'react'; +import TermsConditionsContent from '@/components/Pages/TermsConditions/TermsConditionsContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function TermsConditions() { + return ( + <> + {/* Page title */} +
    +

    Terms & Conditions

    +
      +
    • + Dashboard +
    • +
    • Terms & Conditions
    • +
    +
    + + + + ); +} diff --git a/pages/pages/testimonials.js b/pages/pages/testimonials.js new file mode 100644 index 0000000..bc037ac --- /dev/null +++ b/pages/pages/testimonials.js @@ -0,0 +1,29 @@ +import React from 'react'; +import TestimonialsOne from '@/components/Pages/Testimonials/TestimonialsOne'; +import TestimonialsTwo from '@/components/Pages/Testimonials/TestimonialsTwo'; +import TestimonialsThree from '@/components/Pages/Testimonials/TestimonialsThree'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Testimonials() { + return ( + <> + {/* Page title */} +
    +

    Testimonials

    +
      +
    • + Dashboard +
    • +
    • Testimonials
    • +
    +
    + + + + + + + + ); +} diff --git a/pages/pages/timeline.js b/pages/pages/timeline.js new file mode 100644 index 0000000..e19b636 --- /dev/null +++ b/pages/pages/timeline.js @@ -0,0 +1,26 @@ +import React from 'react'; +import TimelineStyle1 from '@/components/Pages/Timeline/TimelineStyle1'; +import TimelineStyle2 from '@/components/Pages/Timeline/TimelineStyle2'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Timeline() { + return ( + <> + {/* Page title */} +
    +

    Timeline

    +
      +
    • + Dashboard +
    • +
    • Timeline
    • +
    +
    + + + + + + ); +} diff --git a/pages/project-management.js b/pages/project-management.js new file mode 100644 index 0000000..4f07b24 --- /dev/null +++ b/pages/project-management.js @@ -0,0 +1,95 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import Features from '@/components/Dashboard/ProjectManagement/Features'; +import TaskDistribution from '@/components/Dashboard/ProjectManagement/TaskDistribution'; +import MyTasks from '@/components/Dashboard/ProjectManagement/MyTasks'; +import TotalUsers from '@/components/Dashboard/ProjectManagement/TotalUsers'; +import CompletedTasks from '@/components/Dashboard/ProjectManagement/CompletedTasks'; +import TasksPerformance from '@/components/Dashboard/ProjectManagement/TasksPerformance'; +import IssuesSummary from '@/components/Dashboard/ProjectManagement/IssuesSummary'; +import AllProjects from '@/components/Dashboard/ProjectManagement/AllProjects'; +import TeamMembers from '@/components/Dashboard/ProjectManagement/TeamMembers'; +import ActivityTimeline from '@/components/Dashboard/ProjectManagement/ActivityTimeline'; + +export default function ProjectManagement() { + return ( + <> + {/* Page title */} +
    +

    Project Management

    +
      +
    • + Dashboard +
    • +
    • + Project Management +
    • +
    +
    + + {/* Features */} + + + + + {/* TaskDistribution */} + + + + + {/* MyTasks */} + + + + + + + {/* TotalUsers */} + + + + + {/* CompletedTasks */} + + + + + {/* TasksPerformance */} + + + + + + + {/* IssuesSummary */} + + + {/* AllProjects */} + + + + + {/* TeamMembers */} + + + {/* ActivityTimeline */} + + + + + ); +} diff --git a/pages/projects/clients.js b/pages/projects/clients.js new file mode 100644 index 0000000..ea439d0 --- /dev/null +++ b/pages/projects/clients.js @@ -0,0 +1,245 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Card from "@mui/material/Card"; +import Typography from "@mui/material/Typography"; +import Box from "@mui/material/Box"; +import Button from '@mui/material/Button'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const clientsLists = [ + { + image: '/images/member1.png', + name: 'Alvarado Turner', + userName: '@alvaradoTurner', + email: 'alvaradoturner@gmail.com', + projectsUrl: '#', + location: 'New York, USA', + phone: '+1 123 456 789', + }, + { + image: '/images/member2.png', + name: 'Evangelina Mcclain', + userName: '@evangelinaMcclain', + email: 'evangelina@gmail.com', + projectsUrl: '#', + location: 'Switzerland', + phone: '+1 123 468 789', + }, + { + image: '/images/member3.png', + name: 'Candice Munoz', + userName: '@candiceMunoz', + email: 'candiceMunoz@gmail.com', + projectsUrl: '#', + location: 'Germany', + phone: '+1 123 456 842', + }, + { + image: '/images/member4.png', + name: 'Bernard Langley', + userName: '@bernardLangley', + email: 'bernardLangley@gmail.com', + projectsUrl: '#', + location: 'Canada', + phone: '+1 123 256 789', + }, + { + image: '/images/member5.png', + name: 'Kristie Hall', + userName: '@kristieHall', + email: 'kristieHall@gmail.com', + projectsUrl: '#', + location: 'United States', + phone: '+1 123 456 742', + }, + { + image: '/images/member6.png', + name: 'Bolton Obrien', + userName: '@boltonObrien', + email: 'boltonObrien@gmail.com', + projectsUrl: '#', + location: 'Sweden', + phone: '+1 123 346 789', + }, + { + image: '/images/member7.png', + name: 'Dee Alvarado', + userName: '@deeAlvarado', + email: 'deeAlvarado@gmail.com', + projectsUrl: '#', + location: 'Japan', + phone: '+1 123 456 953', + }, + { + image: '/images/member8.png', + name: 'Cervantes Kramer', + userName: '@cervantesKramer', + email: 'cervantesKramer@gmail.com', + projectsUrl: '#', + location: 'Australia', + phone: '+1 123 368 789', + }, + { + image: '/images/member9.png', + name: 'Dejesus Michael', + userName: '@dejesusMichael', + email: 'dejesusMichael@gmail.com', + projectsUrl: '#', + location: 'United Kingdom', + phone: '+1 123 456 742', + }, + { + image: '/images/member10.png', + name: 'Alissa Nelson', + userName: '@alissaNelson', + email: 'alissaNelson@gmail.com', + projectsUrl: '#', + location: 'France', + phone: '+1 123 356 789', + }, + { + image: '/images/member11.png', + name: 'English Haney', + userName: '@englishHaney', + email: 'englishHaney@gmail.com', + projectsUrl: '#', + location: 'Denmark', + phone: '+1 123 456 566', + }, + { + image: '/images/member12.png', + name: 'Edwards Mckenzie', + userName: '@edwardsMckenzie', + email: 'edwardsMckenzie@gmail.com', + projectsUrl: '#', + location: 'New Zealand', + phone: '+1 123 357 789', + }, +]; + +export default function Clients() { + return ( + <> + {/* Page title */} +
    +

    Clients

    +
      +
    • + Dashboard +
    • +
    • Clients
    • +
    +
    + + + {clientsLists.map((client) => ( + + + Member + + {client.name} + + + + {client.userName} + + + + + + + + + + + + + + + + Location + + + {client.location} + + + + + + Phone + + + {client.phone} + + + + + + ))} + + + ); +} diff --git a/pages/projects/index.js b/pages/projects/index.js new file mode 100644 index 0000000..2253a2e --- /dev/null +++ b/pages/projects/index.js @@ -0,0 +1,25 @@ +import React from 'react'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css' +import AllProjects from '@/components/Projects/AllProjects'; + +const Projects = () => { + return ( + <> + {/* Page title */} +
    +

    Projects

    +
      +
    • + Dashboard +
    • +
    • Projects
    • +
    +
    + + + + ) +} + +export default Projects; \ No newline at end of file diff --git a/pages/projects/kanban-board.js b/pages/projects/kanban-board.js new file mode 100644 index 0000000..5a6bea6 --- /dev/null +++ b/pages/projects/kanban-board.js @@ -0,0 +1,48 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import NewProjects from "@/components/Projects/KanbanBoard/NewProjects"; +import ToDo from "@/components/Projects/KanbanBoard/ToDo"; +import InReview from "@/components/Projects/KanbanBoard/InReview"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const KanbanBoard = () => { + return ( + <> + {/* Page title */} +
    +

    Kanban Board

    +
      +
    • + Dashboard +
    • +
    • Kanban Board
    • +
    +
    + + + + {/* NewProjects */} + + + + + {/* ToDo */} + + + + + {/* InReview */} + + + + + ); +}; + +export default KanbanBoard; diff --git a/pages/projects/project-create.js b/pages/projects/project-create.js new file mode 100644 index 0000000..3883c97 --- /dev/null +++ b/pages/projects/project-create.js @@ -0,0 +1,286 @@ +import React from 'react'; +import { Box, Typography } from "@mui/material"; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Button from "@mui/material/Button"; +import TextField from "@mui/material/TextField"; +import AddIcon from "@mui/icons-material/Add"; +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 CategoriesSelect from '@/components/Projects/ProjectCreate/CategoriesSelect'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +import dynamic from 'next/dynamic' +import MemberSelect from '@/components/Projects/ProjectCreate/MemberSelect'; +const RichTextEditor = dynamic(() => import('@mantine/rte'), { + ssr: false, +}) + +const ProjectCreate = () => { + const handleSubmit = (event) => { + event.preventDefault(); + const data = new FormData(event.currentTarget); + console.log({ + email: data.get("email"), + password: data.get("password"), + }); + }; + + // Select Priority + const [priority, setPriority] = React.useState(''); + const handleChange = (event) => { + setPriority(event.target.value); + }; + + return ( + <> + {/* Page title */} +
    +

    Project Create

    +
      +
    • + Dashboard +
    • +
    • Project Create
    • +
    +
    + + + + Create Project + + + + + + + Project Name + + + + + + + Start Date + + + + + + + End Date + + + + + + + Project Description + + + + + + + + Budget + + + + + + + Priority Status + + + + Priority + + + + + + + Categories + + + {/* CategoriesSelect */} + + + + + + Members + + + {/* MemberSelect */} + + + + + + + + + + + ) +} + +export default ProjectCreate; \ No newline at end of file diff --git a/pages/projects/task.js b/pages/projects/task.js new file mode 100644 index 0000000..1a69f38 --- /dev/null +++ b/pages/projects/task.js @@ -0,0 +1,51 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import TotalUsers from "@/components/Projects/Task/TotalUsers"; +import CompletedTasks from "@/components/Projects/Task/CompletedTasks"; +import TasksPerformance from "@/components/Projects/Task/TasksPerformance"; +import MyTasks from "@/components/Projects/Task/MyTasks"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +const Task = () => { + return ( + <> + {/* Page title */} +
    +

    Task

    +
      +
    • + Dashboard +
    • +
    • Task
    • +
    +
    + + + + {/* TotalUsers */} + + + + + {/* CompletedTasks */} + + + + + {/* TasksPerformance */} + + + + + {/* MyTasks */} + + + ); +}; + +export default Task; diff --git a/pages/projects/team.js b/pages/projects/team.js new file mode 100644 index 0000000..352400a --- /dev/null +++ b/pages/projects/team.js @@ -0,0 +1,549 @@ +import React from "react"; +import { Box, Typography } from "@mui/material"; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import Card from "@mui/material/Card"; +import Grid from "@mui/material/Grid"; +import Avatar from '@mui/material/Avatar'; +import AvatarGroup from '@mui/material/AvatarGroup'; +import Button from '@mui/material/Button'; +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"; + +const TeamMembers = [ + { + id: 1, + name: "Jason Haston", + image: "/images/member1.png", + designation: "Team Leader", + teamName: "Laravel Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member1.png", + }, + { + id: 2, + image: "/images/member2.png", + }, + { + id: 3, + image: "/images/member3.png", + }, + { + id: 4, + image: "/images/member4.png", + }, + { + id: 5, + image: "/images/member5.png", + }, + { + id: 6, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Laravel Project", + totalTask: "40/80", + taskProgress: "50", + }, + { + id: 2, + name: "Willie Miller", + image: "/images/member2.png", + designation: "Team Leader", + teamName: "Frontend Developer Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member2.png", + }, + { + id: 2, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 4, + image: "/images/member5.png", + }, + { + id: 5, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Web Design", + totalTask: "60/100", + taskProgress: "60", + }, + { + id: 3, + name: "Jordan Stevenson", + image: "/images/member3.png", + designation: "Team Leader", + teamName: "Web Design Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member3.png", + }, + { + id: 2, + image: "/images/member4.png", + }, + { + id: 3, + image: "/images/member5.png", + }, + { + id: 4, + image: "/images/member6.png", + }, + { + id: 5, + image: "/images/member7.png", + }, + ], + viewDetailsLink: "#", + projectName: "HTML Project", + totalTask: "70/100", + taskProgress: "70", + }, + { + id: 4, + name: "Stevenson", + image: "/images/member4.png", + designation: "Team Leader", + teamName: "ReactJS Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member4.png", + }, + { + id: 2, + image: "/images/member5.png", + }, + { + id: 3, + image: "/images/member6.png", + }, + { + id: 4, + image: "/images/member7.png", + }, + { + id: 5, + image: "/images/member8.png", + }, + ], + viewDetailsLink: "#", + projectName: "React App", + totalTask: "80/100", + taskProgress: "80", + }, + { + id: 5, + name: "Marnie Flowers", + image: "/images/member5.png", + designation: "Team Leader", + teamName: "Angular JS Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member5.png", + }, + { + id: 2, + image: "/images/member6.png", + }, + { + id: 3, + image: "/images/member7.png", + }, + { + id: 4, + image: "/images/member8.png", + }, + { + id: 5, + image: "/images/member9.png", + }, + ], + viewDetailsLink: "#", + projectName: "Angular App", + totalTask: "90/100", + taskProgress: "90", + }, + { + id: 6, + name: "Steven Hari", + image: "/images/member6.png", + designation: "Team Leader", + teamName: "Vue.js Team", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member6.png", + }, + { + id: 2, + image: "/images/member7.png", + }, + { + id: 3, + image: "/images/member8.png", + }, + { + id: 4, + image: "/images/member9.png", + }, + { + id: 5, + image: "/images/member10.png", + }, + ], + viewDetailsLink: "#", + projectName: "Vue app", + totalTask: "100/100", + taskProgress: "100", + }, + { + id: 7, + name: "Keith", + image: "/images/member7.png", + designation: "Team Leader", + teamName: "Content Writing", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member7.png", + }, + { + id: 2, + image: "/images/member8.png", + }, + { + id: 3, + image: "/images/member9.png", + }, + { + id: 4, + image: "/images/member10.png", + }, + { + id: 5, + image: "/images/member11.png", + }, + ], + viewDetailsLink: "#", + projectName: "Blogging Template", + totalTask: "40/100", + taskProgress: "40", + }, + { + id: 8, + name: "Marion", + image: "/images/member8.png", + designation: "Team Leader", + teamName: "E-commerce", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member9.png", + }, + { + id: 2, + image: "/images/member1.png", + }, + { + id: 3, + image: "/images/member2.png", + }, + { + id: 4, + image: "/images/member3.png", + }, + { + id: 5, + image: "/images/member4.png", + }, + ], + viewDetailsLink: "#", + projectName: "E-commerce Template", + totalTask: "55/100", + taskProgress: "55", + }, + { + id: 9, + name: "Marshall", + image: "/images/member9.png", + designation: "Team Leader", + teamName: "App Development", + introText: "Lorem ipsum dolor sit amet, consectetur adipiscing elit", + teamMemberLists: [ + { + id: 1, + image: "/images/member9.png", + }, + { + id: 2, + image: "/images/member3.png", + }, + { + id: 3, + image: "/images/member4.png", + }, + { + id: 4, + image: "/images/member5.png", + }, + { + id: 5, + image: "/images/member6.png", + }, + ], + viewDetailsLink: "#", + projectName: "Admin Template", + totalTask: "40/100", + taskProgress: "40", + }, +] + +const Team = () => { + const [anchorEl, setAnchorEl] = React.useState(null); + const open = Boolean(anchorEl); + const handleClick = (event) => { + setAnchorEl(event.currentTarget); + }; + const handleClose = () => { + setAnchorEl(null); + }; + + return ( + <> + {/* Page title */} +
    +

    Team

    +
      +
    • + Dashboard +
    • +
    • Team
    • +
    +
    + + + {TeamMembers.map((member) => ( + + + + + Member + + + {member.name} + + + {member.designation} + + + + + + + + + + + + + + + + + + + + + + + {member.teamName} + + + {member.introText} + + + + + + + + {member.projectName} + + + Task: {member.totalTask} + + + + + + {member.taskProgress}% Completed + + + + + + + + + {member.teamMemberLists.map((team) => ( + + ))} + + + + + + + + + + + + + ))} + + + ); +}; + +export default Team; diff --git a/pages/projects/user.js b/pages/projects/user.js new file mode 100644 index 0000000..c59178d --- /dev/null +++ b/pages/projects/user.js @@ -0,0 +1,910 @@ +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 Grid from "@mui/material/Grid"; +import Tooltip from "@mui/material/Tooltip"; +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 Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; +import Checkbox from '@mui/material/Checkbox'; +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'; + +const label = { inputProps: { 'aria-label': 'Checkbox demo' } }; + +// Create new user 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 ( + + {children} + {onClose ? ( + theme.palette.grey[500], + }} + > + + + ) : null} + + ); +} + +BootstrapDialogTitle.propTypes = { + children: PropTypes.node, + onClose: PropTypes.func.isRequired, +}; +// End Create new user Modal + +function UsersList(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 ( + + + {theme.direction === "rtl" ? : } + + + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="next page" + > + {theme.direction === "rtl" ? ( + + ) : ( + + )} + + = Math.ceil(count / rowsPerPage) - 1} + aria-label="last page" + > + {theme.direction === "rtl" ? : } + + + ); +} + +UsersList.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 User() { + // 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); + }; + + // Create new user 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 ( + <> + {/* Page title */} +
    +

    Users

    +
      +
    • + Dashboard +
    • +
    • Users
    • +
    +
    + + + + + Users List + + + + + + + + + + + Name + + + + Email + + + + Rolls + + + + Status + + + + Projects + + + + Action + + + + + + {(rowsPerPage > 0 + ? rows.slice( + page * rowsPerPage, + page * rowsPerPage + rowsPerPage + ) + : rows + ).map((row) => ( + + + + + User + + + {row.name} + + + {row.userName} + + + + + + + {row.email} + + + + {row.rolls} + + + + {row.status} + + + + {row.projects} + + + + + + + + + + + + + + + + + + + ))} + + {emptyRows > 0 && ( + + + + )} + + + + + + + +
    +
    +
    + + {/* Create new user modal */} + + + + + Create New User + + + + + + + + + + + + + Image + + + + + + + + Name + + + + + + + + User Name + + + + + + + + Email + + + + + + + + Rolls + + + + + + + + Projects + + + + + + + + + + + + + + + ); +} diff --git a/pages/saas-app.js b/pages/saas-app.js new file mode 100644 index 0000000..a905f33 --- /dev/null +++ b/pages/saas-app.js @@ -0,0 +1,97 @@ +import React from "react"; +import Grid from "@mui/material/Grid"; +import Link from "next/link"; +import styles from "@/styles/PageTitle.module.css"; +import Profile from "@/components/Dashboard/SaasApp/Profile"; +import IncomeStatus from "@/components/Dashboard/SaasApp/IncomeStatus"; +import TotalOrders from "@/components/Dashboard/SaasApp/TotalOrders"; +import Features from "@/components/Dashboard/SaasApp/Features"; +import RevenueSummary from "@/components/Dashboard/SaasApp/RevenueSummary"; +import SalesAnalytics from "@/components/Dashboard/SaasApp/SalesAnalytics"; +import AudienceOverview from "@/components/Dashboard/SaasApp/AudienceOverview"; +import AllProjects from "@/components/Dashboard/SaasApp/AllProjects"; +import Messages from "@/components/Dashboard/SaasApp/Messages"; +import CompletedTasks from "@/components/Dashboard/SaasApp/CompletedTasks"; +import TasksPerformance from "@/components/Dashboard/SaasApp/TasksPerformance"; +import MilestonesOverview from "@/components/Dashboard/SaasApp/MilestonesOverview"; + +export default function SaasApp() { + return ( + <> + {/* Page title */} +
    +

    SaaS App

    +
      +
    • + Dashboard +
    • +
    • SaaS App
    • +
    +
    + + + + {/* Profile */} + + + + + {/* IncomeStatus */} + + + + + {/* TotalOrders */} + + + + + {/* Features */} + + + + + {/* RevenueSummary */} + + + + + {/* SalesAnalytics */} + + + + + {/* AudienceOverview */} + + + + + {/* AllProjects */} + + + + + {/* Messages */} + + + + + + + {/* MilestonesOverview */} + + + + + {/* TasksPerformance */} + + + + + {/* TasksPerformance */} + + + + + ); +} diff --git a/pages/settings/account.js b/pages/settings/account.js new file mode 100644 index 0000000..278544e --- /dev/null +++ b/pages/settings/account.js @@ -0,0 +1,39 @@ +import Profile from "@/components/Settings/Account/Profile"; +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; + +export default function Account() { + return ( + <> + + + Settings + + + {/* NavBar */} + + + {/* Profile */} + + + + ); +} diff --git a/pages/settings/privacy-policy.js b/pages/settings/privacy-policy.js new file mode 100644 index 0000000..9a2b465 --- /dev/null +++ b/pages/settings/privacy-policy.js @@ -0,0 +1,39 @@ +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import PrivacyPolicyContent from "@/components/Settings/Account/PrivacyPolicyContent"; + +export default function PrivacyPolicy() { + return ( + <> + + + Privacy Policy + + + {/* NavBar */} + + + {/* PrivacyPolicyContent */} + + + + ); +} diff --git a/pages/settings/security.js b/pages/settings/security.js new file mode 100644 index 0000000..8c1d128 --- /dev/null +++ b/pages/settings/security.js @@ -0,0 +1,39 @@ +import NavBar from "@/components/Settings/NavBar"; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import ChangePassword from "@/components/Settings/Account/ChangePassword"; + +export default function Account() { + return ( + <> + + + Settings + + + {/* NavBar */} + + + {/* ChangePassword */} + + + + ); +} diff --git a/pages/ui-elements/accordion.js b/pages/ui-elements/accordion.js new file mode 100644 index 0000000..a9c63dd --- /dev/null +++ b/pages/ui-elements/accordion.js @@ -0,0 +1,43 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicAccordion from '@/components/UIElements/Accordion/BasicAccordion'; +import ControlledAccordion from '@/components/UIElements/Accordion/ControlledAccordion'; +import Customization from '@/components/UIElements/Accordion/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Accordion() { + return ( + <> + {/* Page title */} +
    +

    Accordion

    +
      +
    • + Dashboard +
    • +
    • Accordion
    • +
    +
    + + + + {/* BasicAccordion */} + + + {/* Customization */} + + + + + {/* ControlledAccordion */} + + + + + ); +} diff --git a/pages/ui-elements/alerts.js b/pages/ui-elements/alerts.js new file mode 100644 index 0000000..a63dea7 --- /dev/null +++ b/pages/ui-elements/alerts.js @@ -0,0 +1,63 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicAlerts from '@/components/UIElements/Alerts/BasicAlerts'; +import DescriptionAlerts from '@/components/UIElements/Alerts/DescriptionAlerts'; +import Actions from '@/components/UIElements/Alerts/Actions'; +import Transition from '@/components/UIElements/Alerts/Transition'; +import Icons from '@/components/UIElements/Alerts/Icons'; +import Variants from '@/components/UIElements/Alerts/Variants'; +import Filled from '@/components/UIElements/Alerts/Filled'; +import Color from '@/components/UIElements/Alerts/Color'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Alerts() { + return ( + <> + {/* Page title */} +
    +

    Alerts

    +
      +
    • + Dashboard +
    • +
    • Alerts
    • +
    +
    + + + + {/* BasicAlerts */} + + + {/* DescriptionAlerts */} + + + {/* Variants */} + + + + + {/* Actions */} + + + {/* Transition */} + + + {/* Icons */} + + + {/* Filled */} + + + {/* Color */} + + + + + ); +} diff --git a/pages/ui-elements/autocomplete.js b/pages/ui-elements/autocomplete.js new file mode 100644 index 0000000..e315a49 --- /dev/null +++ b/pages/ui-elements/autocomplete.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import ComboBox from '@/components/UIElements/Autocomplete/ComboBox'; +import CountrySelect from '@/components/UIElements/Autocomplete/CountrySelect'; +import CustomizedHook from '@/components/UIElements/Autocomplete/CustomizedHook'; +import LimitTags from '@/components/UIElements/Autocomplete/LimitTags'; +import CustomizeTextareaComponent from '@/components/UIElements/Autocomplete/CustomizeTextareaComponent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Autocomplete() { + return ( + <> + {/* Page title */} +
    +

    Autocomplete

    +
      +
    • + Dashboard +
    • +
    • Autocomplete
    • +
    +
    + + + + {/* ComboBox */} + + + {/* CustomizedHook */} + + + {/* CustomizeTextareaComponent */} + + + + + {/* CountrySelect */} + + + {/* LimitTags */} + + + + + ); +} diff --git a/pages/ui-elements/avatar.js b/pages/ui-elements/avatar.js new file mode 100644 index 0000000..02aa3e4 --- /dev/null +++ b/pages/ui-elements/avatar.js @@ -0,0 +1,67 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import SingleUserExample from '@/components/UIElements/Avatar/SingleUserExample'; +import GroupUserExample from '@/components/UIElements/Avatar/GroupUserExample'; +import ImageAvatars from '@/components/UIElements/Avatar/ImageAvatars'; +import LetterAvatars from '@/components/UIElements/Avatar/LetterAvatars'; +import SizesAvatars from '@/components/UIElements/Avatar/SizesAvatars'; +import IconAvatars from '@/components/UIElements/Avatar/IconAvatars'; +import Grouped from '@/components/UIElements/Avatar/Grouped'; +import TotalAvatars from '@/components/UIElements/Avatar/TotalAvatars'; +import WithBadge from '@/components/UIElements/Avatar/WithBadge'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Avatar() { + return ( + <> + {/* Page title */} +
    +

    Avatar

    +
      +
    • + Dashboard +
    • +
    • Avatar
    • +
    +
    + + + + {/* SingleUserExample */} + + + {/* ImageAvatars */} + + + {/* SizesAvatars */} + + + {/* Grouped */} + + + {/* WithBadge */} + + + + + {/* GroupUserExample */} + + + {/* LetterAvatars */} + + + {/* IconAvatars */} + + + {/* TotalAvatars */} + + + + + ); +} diff --git a/pages/ui-elements/badge.js b/pages/ui-elements/badge.js new file mode 100644 index 0000000..2137db8 --- /dev/null +++ b/pages/ui-elements/badge.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicBadge from '@/components/UIElements/Badge/BasicBadge'; +import Dynamic from '@/components/UIElements/Badge/Dynamic'; +import MaximumValue from '@/components/UIElements/Badge/MaximumValue'; +import BadgeOverlap from '@/components/UIElements/Badge/BadgeOverlap'; +import Accessibility from '@/components/UIElements/Badge/Accessibility'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Badge() { + return ( + <> + {/* Page title */} +
    +

    Badge

    +
      +
    • + Dashboard +
    • +
    • Badge
    • +
    +
    + + + + {/* BasicBadge */} + + + {/* MaximumValue */} + + + {/* BadgeOverlap */} + + + + + {/* Dynamic */} + + + {/* Accessibility */} + + + + + ); +} diff --git a/pages/ui-elements/buttons.js b/pages/ui-elements/buttons.js new file mode 100644 index 0000000..b35c35c --- /dev/null +++ b/pages/ui-elements/buttons.js @@ -0,0 +1,71 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import DefaultButtons from '@/components/UIElements/Buttons/DefaultButtons'; +import OutlineButtons from '@/components/UIElements/Buttons/OutlineButtons'; +import SoftButtons from '@/components/UIElements/Buttons/SoftButtons'; +import ButtonsWithIcon from '@/components/UIElements/Buttons/ButtonsWithIcon'; +import RoundedButtons from '@/components/UIElements/Buttons/RoundedButtons'; +import OutlineRoundedButtons from '@/components/UIElements/Buttons/OutlineRoundedButtons'; +import SizesButtons from '@/components/UIElements/Buttons/SizesButtons'; +import Loading from '@/components/UIElements/Buttons/Loading'; +import BlockButtons from '@/components/UIElements/Buttons/BlockButtons'; +import BasicFAB from '@/components/UIElements/Buttons/BasicFAB'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Buttons() { + return ( + <> + {/* Page title */} +
    +

    Buttons

    +
      +
    • + Dashboard +
    • +
    • Buttons
    • +
    +
    + + + + {/* DefaultButtons */} + + + {/* SoftButtons */} + + + {/* RoundedButtons */} + + + {/* SizesButtons */} + + + {/* BlockButtons */} + + + + + {/* OutlineButtons */} + + + {/* ButtonsWithIcon */} + + + {/* OutlineRoundedButtons */} + + + {/* BasicFAB */} + + + {/* Loading */} + + + + + ); +} diff --git a/pages/ui-elements/cards.js b/pages/ui-elements/cards.js new file mode 100644 index 0000000..d770e2c --- /dev/null +++ b/pages/ui-elements/cards.js @@ -0,0 +1,975 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import { Box } from "@mui/material"; +import Button from '@mui/material/Button'; +import Card from "@mui/material/Card"; +import { Typography } from "@mui/material"; +import Link from 'next/link'; +import styles from '@/components/UIElements/Cards/Cards.module.css' +import BasicCard from '@/components/UIElements/Cards/BasicCard'; +import ComplexInteraction from '@/components/UIElements/Cards/ComplexInteraction'; +import Media from '@/components/UIElements/Cards/Media'; +import UIControls from '@/components/UIElements/Cards/UIControls'; + +export default function Cards() { + return ( + <> + + + {/* BasicCard */} + + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + + card + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + + + {/* ComplexInteraction */} + + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} +
    + + + + {/* Media */} + + + {/* Start Card */} + + + + + + + + + + card + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} +
    + + + {/* UIControls */} + + + {/* Start Card */} + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} + + {/* Start Card */} +
    + + + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + +
    + {/* End Card */} + + {/* Start Card */} + + + + + + + + + Nesta Technologies + + + + When you enter into any new area of science, you almost always find. + + + + + + + {/* End Card */} +
    +
    + + ); +} diff --git a/pages/ui-elements/checkbox.js b/pages/ui-elements/checkbox.js new file mode 100644 index 0000000..7927618 --- /dev/null +++ b/pages/ui-elements/checkbox.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Checkbox/Basic'; +import Label from '@/components/UIElements/Checkbox/Label'; +import Size from '@/components/UIElements/Checkbox/Size'; +import Color from '@/components/UIElements/Checkbox/Color'; +import Icon from '@/components/UIElements/Checkbox/Icon'; +import Controlled from '@/components/UIElements/Checkbox/Controlled'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Checkbox() { + return ( + <> + {/* Page title */} +
    +

    Checkbox

    +
      +
    • + Dashboard +
    • +
    • Checkbox
    • +
    +
    + + + + {/* Basic */} + + + {/* Size */} + + + {/* Icon */} + + + + + {/* Label */} + + + + ); +} diff --git a/pages/ui-elements/chip.js b/pages/ui-elements/chip.js new file mode 100644 index 0000000..39b6fad --- /dev/null +++ b/pages/ui-elements/chip.js @@ -0,0 +1,76 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Chip/Basic'; +import ChipActions from '@/components/UIElements/Chip/ChipActions'; +import Deletable from '@/components/UIElements/Chip/Deletable'; +import ClickableAndDeletable from '@/components/UIElements/Chip/ClickableAndDeletable'; +import ClickableLink from '@/components/UIElements/Chip/ClickableLink'; +import CustomDeleteIcon from '@/components/UIElements/Chip/CustomDeleteIcon'; +import ChipAdornments from '@/components/UIElements/Chip/ChipAdornments'; +import IconChip from '@/components/UIElements/Chip/IconChip'; +import ColorChip from '@/components/UIElements/Chip/ColorChip'; +import SizesChip from '@/components/UIElements/Chip/SizesChip'; +import ChipArray from '@/components/UIElements/Chip/ChipArray'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Chip() { + return ( + <> + {/* Page title */} +
    +

    Chip

    +
      +
    • + Dashboard +
    • +
    • Chip
    • +
    +
    + + + + {/* Basic */} + + + {/* Deletable */} + + + {/* ClickableLink */} + + + {/* ChipAdornments */} + + + {/* ColorChip */} + + + + + + {/* ChipActions */} + + + {/* ClickableAndDeletable */} + + + {/* CustomDeleteIcon */} + + + {/* IconChip */} + + + {/* SizesChip */} + + + {/* ChipArray */} + + + + + ); +} diff --git a/pages/ui-elements/image-list.js b/pages/ui-elements/image-list.js new file mode 100644 index 0000000..c7d3546 --- /dev/null +++ b/pages/ui-elements/image-list.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import StandardImageList from '@/components/UIElements/ImageList/StandardImageList'; +import QuiltedImageList from '@/components/UIElements/ImageList/QuiltedImageList'; +import WovenImageList from '@/components/UIElements/ImageList/WovenImageList'; +import MasonryImageList from '@/components/UIElements/ImageList/MasonryImageList'; +import ImageListWithTitleBars from '@/components/UIElements/ImageList/ImageListWithTitleBars'; +import TitleBarBelowImageStandard from '@/components/UIElements/ImageList/TitleBarBelowImageStandard'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function ImageList() { + return ( + <> + {/* Page title */} +
    +

    Image List

    +
      +
    • + Dashboard +
    • +
    • Image List
    • +
    +
    + + + + {/* StandardImageList */} + + + {/* WovenImageList */} + + + {/* ImageListWithTitleBars */} + + + + + {/* QuiltedImageList */} + + + {/* MasonryImageList */} + + + {/* TitleBarBelowImageStandard */} + + + + + ); +} diff --git a/pages/ui-elements/list.js b/pages/ui-elements/list.js new file mode 100644 index 0000000..7fa113a --- /dev/null +++ b/pages/ui-elements/list.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicList from '@/components/UIElements/List/BasicList'; +import NestedList from '@/components/UIElements/List/NestedList'; +import FolderList from '@/components/UIElements/List/FolderList'; +import ListControls from '@/components/UIElements/List/ListControls'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function List() { + return ( + <> + {/* Page title */} +
    +

    List

    +
      +
    • + Dashboard +
    • +
    • List
    • +
    +
    + + + + {/* BasicList */} + + + {/* FolderList */} + + + + + {/* NestedList */} + + + {/* ListControls */} + + + + + ); +} diff --git a/pages/ui-elements/modal.js b/pages/ui-elements/modal.js new file mode 100644 index 0000000..b79cc3d --- /dev/null +++ b/pages/ui-elements/modal.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicModal from '@/components/UIElements/Modal/BasicModal'; +import NestedModal from '@/components/UIElements/Modal/NestedModal'; +import Transitions from '@/components/UIElements/Modal/Transitions'; +import TransitionsDialog from '@/components/UIElements/Modal/TransitionsDialog'; +import CustomizationDialog from '@/components/UIElements/Modal/CustomizationDialog'; +import FullScreenDialogs from '@/components/UIElements/Modal/FullScreenDialogs'; +import ScrollingLongContent from '@/components/UIElements/Modal/ScrollingLongContent'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Modal() { + return ( + <> + {/* Page title */} +
    +

    Modal

    +
      +
    • + Dashboard +
    • +
    • Modal
    • +
    +
    + + + + {/* BasicModal */} + + + {/* Transitions */} + + + {/* TransitionsDialog */} + + + {/* FullScreenDialogs */} + + + + + {/* NestedModal */} + + + {/* CustomizationDialog */} + + + {/* ScrollingLongContent */} + + + + + ); +} diff --git a/pages/ui-elements/pagination.js b/pages/ui-elements/pagination.js new file mode 100644 index 0000000..fa63a54 --- /dev/null +++ b/pages/ui-elements/pagination.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicPagination from '@/components/UIElements/Pagination/BasicPagination'; +import OutlinedPagination from '@/components/UIElements/Pagination/OutlinedPagination'; +import RoundedPagination from '@/components/UIElements/Pagination/RoundedPagination'; +import PaginationSize from '@/components/UIElements/Pagination/PaginationSize'; +import CustomIcons from '@/components/UIElements/Pagination/CustomIcons'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Pagination() { + return ( + <> + {/* Page title */} +
    +

    Pagination

    +
      +
    • + Dashboard +
    • +
    • Pagination
    • +
    +
    + + + + {/* BasicPagination */} + + + {/* RoundedPagination */} + + + {/* CustomIcons */} + + + + + {/* OutlinedPagination */} + + + {/* PaginationSize */} + + + + + ); +} diff --git a/pages/ui-elements/progress.js b/pages/ui-elements/progress.js new file mode 100644 index 0000000..02a1da6 --- /dev/null +++ b/pages/ui-elements/progress.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Circular from '@/components/UIElements/Progress/Circular'; +import CircularDeterminate from '@/components/UIElements/Progress/CircularDeterminate'; +import InteractiveIntegration from '@/components/UIElements/Progress/InteractiveIntegration'; +import CircularWithLabel from '@/components/UIElements/Progress/CircularWithLabel'; +import LinearIndeterminate from '@/components/UIElements/Progress/LinearIndeterminate'; +import Customization from '@/components/UIElements/Progress/Customization'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Progress() { + return ( + <> + {/* Page title */} +
    +

    Progress

    +
      +
    • + Dashboard +
    • +
    • Progress
    • +
    +
    + + + + {/* Circular */} + + + {/* InteractiveIntegration */} + + + {/* LinearIndeterminate */} + + + + + {/* CircularDeterminate */} + + + {/* CircularWithLabel */} + + + {/* Customization */} + + + + + ); +} diff --git a/pages/ui-elements/radio.js b/pages/ui-elements/radio.js new file mode 100644 index 0000000..3084379 --- /dev/null +++ b/pages/ui-elements/radio.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Group from '@/components/UIElements/Radio/Group'; +import Direction from '@/components/UIElements/Radio/Direction'; +import Controlled from '@/components/UIElements/Radio/Controlled'; +import Size from '@/components/UIElements/Radio/Size'; +import Color from '@/components/UIElements/Radio/Color'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Radio() { + return ( + <> + {/* Page title */} +
    +

    Radio

    +
      +
    • + Dashboard +
    • +
    • Radio
    • +
    +
    + + + + {/* Group */} + + + {/* Controlled */} + + + + + {/* Direction */} + + + {/* Size */} + + + {/* Color */} + + + + + ); +} diff --git a/pages/ui-elements/rating.js b/pages/ui-elements/rating.js new file mode 100644 index 0000000..1c1f134 --- /dev/null +++ b/pages/ui-elements/rating.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Rating/Basic'; +import RatingPrecision from '@/components/UIElements/Rating/RatingPrecision'; +import HoverFeedback from '@/components/UIElements/Rating/HoverFeedback'; +import Sizes from '@/components/UIElements/Rating/Sizes'; +import Customization from '@/components/UIElements/Rating/Customization'; +import RadioGroup from '@/components/UIElements/Rating/RadioGroup'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Rating() { + return ( + <> + {/* Page title */} +
    +

    Rating

    +
      +
    • + Dashboard +
    • +
    • Rating
    • +
    +
    + + + + {/* Basic */} + + + {/* Customization */} + + + + + {/* RatingPrecision */} + + + {/* HoverFeedback */} + + + {/* Sizes */} + + + {/* RadioGroup */} + + + + + ); +} diff --git a/pages/ui-elements/select.js b/pages/ui-elements/select.js new file mode 100644 index 0000000..b0e4076 --- /dev/null +++ b/pages/ui-elements/select.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Select/Basic'; +import AutoWidth from '@/components/UIElements/Select/AutoWidth'; +import Customization from '@/components/UIElements/Select/Customization'; +import MultipleSelectDefault from '@/components/UIElements/Select/MultipleSelectDefault'; +import MultipleSelectCheckmarks from '@/components/UIElements/Select/MultipleSelectCheckmarks'; +import MultipleSelectChip from '@/components/UIElements/Select/MultipleSelectChip'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Select() { + return ( + <> + {/* Page title */} +
    +

    Select

    +
      +
    • + Dashboard +
    • +
    • Select
    • +
    +
    + + + + {/* Basic */} + + + {/* Customization */} + + + {/* MultipleSelectDefault */} + + + + + {/* AutoWidth */} + + + {/* MultipleSelectCheckmarks */} + + + {/* MultipleSelectChip */} + + + + + ); +} diff --git a/pages/ui-elements/skeleton.js b/pages/ui-elements/skeleton.js new file mode 100644 index 0000000..cf3eb51 --- /dev/null +++ b/pages/ui-elements/skeleton.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Variants from '@/components/UIElements/Skeleton/Variants'; +import Animations from '@/components/UIElements/Skeleton/Animations'; +import PulsateExample from '@/components/UIElements/Skeleton/PulsateExample'; +import WaveExample from '@/components/UIElements/Skeleton/WaveExample'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Skeleton() { + return ( + <> + {/* Page title */} +
    +

    Skeleton

    +
      +
    • + Dashboard +
    • +
    • Skeleton
    • +
    +
    + + + + {/* Variants */} + + + {/* Animations */} + + + {/* WaveExample */} + + + + + {/* PulsateExample */} + + + + + ); +} diff --git a/pages/ui-elements/slider.js b/pages/ui-elements/slider.js new file mode 100644 index 0000000..198159a --- /dev/null +++ b/pages/ui-elements/slider.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Continuous from '@/components/UIElements/Slider/Continuous'; +import Sizes from '@/components/UIElements/Slider/Sizes'; +import Discrete from '@/components/UIElements/Slider/Discrete'; +import SmallSteps from '@/components/UIElements/Slider/SmallSteps'; +import CustomMarks from '@/components/UIElements/Slider/CustomMarks'; +import RestrictedValues from '@/components/UIElements/Slider/RestrictedValues'; +import LabelAlwaysVisible from '@/components/UIElements/Slider/LabelAlwaysVisible'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Slider() { + return ( + <> + {/* Page title */} +
    +

    Slider

    +
      +
    • + Dashboard +
    • +
    • Slider
    • +
    +
    + + + + {/* Continuous */} + + + {/* Discrete */} + + + {/* CustomMarks */} + + + {/* LabelAlwaysVisible */} + + + + + {/* Sizes */} + + + {/* SmallSteps */} + + + {/* RestrictedValues */} + + + + + ); +} diff --git a/pages/ui-elements/snackbar.js b/pages/ui-elements/snackbar.js new file mode 100644 index 0000000..0fe38e6 --- /dev/null +++ b/pages/ui-elements/snackbar.js @@ -0,0 +1,47 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import SimpleSnackbars from '@/components/UIElements/Snackbar/SimpleSnackbars'; +import Customization from '@/components/UIElements/Snackbar/Customization'; +import PositionedSnackbars from '@/components/UIElements/Snackbar/PositionedSnackbars'; +import ComplementaryProjects from '@/components/UIElements/Snackbar/ComplementaryProjects'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Snackbar() { + return ( + <> + {/* Page title */} +
    +

    Snackbar

    +
      +
    • + Dashboard +
    • +
    • Snackbar
    • +
    +
    + + + + {/* SimpleSnackbars */} + + + {/* PositionedSnackbars */} + + + {/* ComplementaryProjects */} + + + + + {/* Customization */} + + + + + ); +} diff --git a/pages/ui-elements/stepper.js b/pages/ui-elements/stepper.js new file mode 100644 index 0000000..c4421a5 --- /dev/null +++ b/pages/ui-elements/stepper.js @@ -0,0 +1,59 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import HorizontalStepper from '@/components/UIElements/Stepper/HorizontalStepper'; +import NonLinear from '@/components/UIElements/Stepper/NonLinear'; +import AlternativeLabel from '@/components/UIElements/Stepper/AlternativeLabel'; +import ErrorStep from '@/components/UIElements/Stepper/ErrorStep'; +import CustomizedHorizontalStepper from '@/components/UIElements/Stepper/CustomizedHorizontalStepper'; +import VerticalStepper from '@/components/UIElements/Stepper/VerticalStepper'; +import MobileStepperText from '@/components/UIElements/Stepper/MobileStepperText'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Stepper() { + return ( + <> + {/* Page title */} +
    +

    Stepper

    +
      +
    • + Dashboard +
    • +
    • Stepper
    • +
    +
    + + + + {/* HorizontalStepper */} + + + {/* AlternativeLabel */} + + + {/* CustomizedHorizontalStepper */} + + + {/* MobileStepper */} + + + + + {/* NonLinear */} + + + {/* ErrorStep */} + + + {/* VerticalStepper */} + + + + + ); +} diff --git a/pages/ui-elements/swiper-slider.js b/pages/ui-elements/swiper-slider.js new file mode 100644 index 0000000..8d95b4d --- /dev/null +++ b/pages/ui-elements/swiper-slider.js @@ -0,0 +1,63 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Default from '@/components/UIElements/SwiperSlider/Default'; +import NavigationSlider from '@/components/UIElements/SwiperSlider/NavigationSlider'; +import PaginationSlider from '@/components/UIElements/SwiperSlider/PaginationSlider'; +import PaginationDynamic from '@/components/UIElements/SwiperSlider/PaginationDynamic'; +import PaginationProgress from '@/components/UIElements/SwiperSlider/PaginationProgress'; +import AutoplaySlider from '@/components/UIElements/SwiperSlider/AutoplaySlider'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function SwiperSlider() { + return ( + <> + {/* Page title */} +
    +

    Swiper Slider

    +
      +
    • + Dashboard +
    • +
    • Swiper Slider
    • +
    +
    + + + + {/* Default */} + + + + + {/* PaginationDynamic */} + + + + + {/* NavigationSlider */} + + + + + {/* PaginationProgress */} + + + + + {/* PaginationSlider */} + + + + + {/* AutoplaySlider */} + + + + + ); +} diff --git a/pages/ui-elements/switch.js b/pages/ui-elements/switch.js new file mode 100644 index 0000000..3e89a6c --- /dev/null +++ b/pages/ui-elements/switch.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import Basic from '@/components/UIElements/Switch/Basic'; +import Label from '@/components/UIElements/Switch/Label'; +import Size from '@/components/UIElements/Switch/Size'; +import Color from '@/components/UIElements/Switch/Color'; +import Controlled from '@/components/UIElements/Switch/Controlled'; +import SwitchesWithFormGroup from '@/components/UIElements/Switch/SwitchesWithFormGroup'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Switch() { + return ( + <> + {/* Page title */} +
    +

    Switch

    +
      +
    • + Dashboard +
    • +
    • Switch
    • +
    +
    + + + + {/* Basic */} + + + {/* Size */} + + + {/* SwitchesWithFormGroup */} + + + + + {/* Label */} + + + + ); +} diff --git a/pages/ui-elements/table.js b/pages/ui-elements/table.js new file mode 100644 index 0000000..30e145d --- /dev/null +++ b/pages/ui-elements/table.js @@ -0,0 +1,61 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicTable from '@/components/UIElements/Table/BasicTable'; +import RecentOrders from "@/components/Dashboard/eCommerce/RecentOrders"; +import TeamMembersList from "@/components/Dashboard/eCommerce/TeamMembersList"; +import BrowserUsedTrafficReports from "@/components/Dashboard/Analytics/BrowserUsedTrafficReports"; +import MyTasks from '@/components/Dashboard/ProjectManagement/MyTasks'; +import AllProjects from '@/components/Dashboard/ProjectManagement/AllProjects'; +import DataTable from '@/components/UIElements/Table/DataTable'; +import DenseTable from '@/components/UIElements/Table/DenseTable'; +import SortingSelectingTable from '@/components/UIElements/Table/SortingSelectingTable'; +import CustomizationTable from '@/components/UIElements/Table/CustomizationTable'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Table() { + return ( + <> + {/* Page title */} +
    +

    Table

    +
      +
    • + Dashboard +
    • +
    • Table
    • +
    +
    + + {/* BasicTable */} + + + {/* RecentOrders */} + + + {/* TeamMembersList */} + + + {/* BrowserUsedTrafficReports */} + + + {/* MyTasks */} + + + {/* AllProjects */} + + + {/* DataTable */} + + + {/* DenseTable */} + + + {/* SortingSelectingTable */} + + + {/* CustomizationTable */} + + + ); +} diff --git a/pages/ui-elements/tabs.js b/pages/ui-elements/tabs.js new file mode 100644 index 0000000..79c1737 --- /dev/null +++ b/pages/ui-elements/tabs.js @@ -0,0 +1,51 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import BasicTabs from '@/components/UIElements/Tabs/BasicTabs'; +import ExperimentalAPI from '@/components/UIElements/Tabs/ExperimentalAPI'; +import VerticalTabs from '@/components/UIElements/Tabs/VerticalTabs'; +import IconTabs from '@/components/UIElements/Tabs/IconTabs'; +import IconPosition from '@/components/UIElements/Tabs/IconPosition'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Tabs() { + return ( + <> + {/* Page title */} +
    +

    Tabs

    +
      +
    • + Dashboard +
    • +
    • Tabs
    • +
    +
    + + + + {/* BasicTabs */} + + + {/* FixedTabs */} + + + + + {/* ExperimentalAPI */} + + + {/* IconTabs */} + + + {/* IconPosition */} + + + + + ); +} diff --git a/pages/ui-elements/tooltip.js b/pages/ui-elements/tooltip.js new file mode 100644 index 0000000..a87421d --- /dev/null +++ b/pages/ui-elements/tooltip.js @@ -0,0 +1,28 @@ +import React from 'react'; +import BasicTooltip from '@/components/UIElements/Tooltip/BasicTooltip'; +import PositionedTooltips from '@/components/UIElements/Tooltip/PositionedTooltips'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Tooltip() { + return ( + <> + {/* Page title */} +
    +

    Tooltip

    +
      +
    • + Dashboard +
    • +
    • Tooltip
    • +
    +
    + + {/* BasicTooltip */} + + + {/* PositionedTooltips */} + + + ); +} diff --git a/pages/ui-elements/transitions.js b/pages/ui-elements/transitions.js new file mode 100644 index 0000000..9b9cf60 --- /dev/null +++ b/pages/ui-elements/transitions.js @@ -0,0 +1,55 @@ +import React from 'react'; +import Grid from "@mui/material/Grid"; +import CollapseTransitions from '@/components/UIElements/Transitions/CollapseTransitions'; +import FadeTransitions from '@/components/UIElements/Transitions/FadeTransitions'; +import GrowTransitions from '@/components/UIElements/Transitions/GrowTransitions'; +import SlideTransitions from '@/components/UIElements/Transitions/SlideTransitions'; +import SlideRelativeToAContainer from '@/components/UIElements/Transitions/SlideRelativeToAContainer'; +import ZoomTransitions from '@/components/UIElements/Transitions/ZoomTransitions'; +import Link from 'next/link'; +import styles from '@/styles/PageTitle.module.css'; + +export default function Transitions() { + return ( + <> + {/* Page title */} +
    +

    Transitions

    +
      +
    • + Dashboard +
    • +
    • Transitions
    • +
    +
    + + + + {/* CollapseTransitions */} + + + {/* SlideTransitions */} + + + {/* SlideRelativeToAContainer */} + + + + + {/* FadeTransitions */} + + + {/* GrowTransitions */} + + + {/* ZoomTransitions */} + + + + + ); +} diff --git a/public/fonts/remixicon.eot b/public/fonts/remixicon.eot new file mode 100644 index 0000000..40629af Binary files /dev/null and b/public/fonts/remixicon.eot differ diff --git a/public/fonts/remixicon.svg b/public/fonts/remixicon.svg new file mode 100644 index 0000000..a348334 --- /dev/null +++ b/public/fonts/remixicon.svg @@ -0,0 +1,6835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/remixicon.symbol.svg b/public/fonts/remixicon.symbol.svg new file mode 100644 index 0000000..2522b6c --- /dev/null +++ b/public/fonts/remixicon.symbol.svg @@ -0,0 +1,11356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/remixicon.ttf b/public/fonts/remixicon.ttf new file mode 100644 index 0000000..c461f40 Binary files /dev/null and b/public/fonts/remixicon.ttf differ diff --git a/public/fonts/remixicon.woff b/public/fonts/remixicon.woff new file mode 100644 index 0000000..62a756b Binary files /dev/null and b/public/fonts/remixicon.woff differ diff --git a/public/fonts/remixicon.woff2 b/public/fonts/remixicon.woff2 new file mode 100644 index 0000000..89a0b99 Binary files /dev/null and b/public/fonts/remixicon.woff2 differ diff --git a/public/images/3d1.png b/public/images/3d1.png new file mode 100644 index 0000000..63cdbf6 Binary files /dev/null and b/public/images/3d1.png differ diff --git a/public/images/3d2.png b/public/images/3d2.png new file mode 100644 index 0000000..36aa918 Binary files /dev/null and b/public/images/3d2.png differ diff --git a/public/images/3d3.png b/public/images/3d3.png new file mode 100644 index 0000000..3c5d737 Binary files /dev/null and b/public/images/3d3.png differ diff --git a/public/images/3d4.png b/public/images/3d4.png new file mode 100644 index 0000000..e944392 Binary files /dev/null and b/public/images/3d4.png differ diff --git a/public/images/apps-icon.png b/public/images/apps-icon.png new file mode 100644 index 0000000..501d89a Binary files /dev/null and b/public/images/apps-icon.png differ diff --git a/public/images/avatar2.png b/public/images/avatar2.png new file mode 100644 index 0000000..7dac0e7 Binary files /dev/null and b/public/images/avatar2.png differ diff --git a/public/images/binance.png b/public/images/binance.png new file mode 100644 index 0000000..b6c623b Binary files /dev/null and b/public/images/binance.png differ diff --git a/public/images/bitcoin.png b/public/images/bitcoin.png new file mode 100644 index 0000000..622189a Binary files /dev/null and b/public/images/bitcoin.png differ diff --git a/public/images/bitcoin2.png b/public/images/bitcoin2.png new file mode 100644 index 0000000..cb031f1 Binary files /dev/null and b/public/images/bitcoin2.png differ diff --git a/public/images/bitcoin3.png b/public/images/bitcoin3.png new file mode 100644 index 0000000..fe90ddd Binary files /dev/null and b/public/images/bitcoin3.png differ diff --git a/public/images/bitcoin4.png b/public/images/bitcoin4.png new file mode 100644 index 0000000..d962d99 Binary files /dev/null and b/public/images/bitcoin4.png differ diff --git a/public/images/btc.png b/public/images/btc.png new file mode 100644 index 0000000..91af6d3 Binary files /dev/null and b/public/images/btc.png differ diff --git a/public/images/burger-menu-icon.png b/public/images/burger-menu-icon.png new file mode 100644 index 0000000..94bbbe6 Binary files /dev/null and b/public/images/burger-menu-icon.png differ diff --git a/public/images/c+.png b/public/images/c+.png new file mode 100644 index 0000000..58ed6ea Binary files /dev/null and b/public/images/c+.png differ diff --git a/public/images/card-img1.png b/public/images/card-img1.png new file mode 100644 index 0000000..5585d79 Binary files /dev/null and b/public/images/card-img1.png differ diff --git a/public/images/card-img2.png b/public/images/card-img2.png new file mode 100644 index 0000000..1dee837 Binary files /dev/null and b/public/images/card-img2.png differ diff --git a/public/images/card-img3.png b/public/images/card-img3.png new file mode 100644 index 0000000..0ae120d Binary files /dev/null and b/public/images/card-img3.png differ diff --git a/public/images/card-img4.png b/public/images/card-img4.png new file mode 100644 index 0000000..8634bff Binary files /dev/null and b/public/images/card-img4.png differ diff --git a/public/images/card-img5.png b/public/images/card-img5.png new file mode 100644 index 0000000..7f93b65 Binary files /dev/null and b/public/images/card-img5.png differ diff --git a/public/images/cardano.png b/public/images/cardano.png new file mode 100644 index 0000000..000845e Binary files /dev/null and b/public/images/cardano.png differ diff --git a/public/images/chart1.png b/public/images/chart1.png new file mode 100644 index 0000000..ba9ddf3 Binary files /dev/null and b/public/images/chart1.png differ diff --git a/public/images/chart2.png b/public/images/chart2.png new file mode 100644 index 0000000..affcc68 Binary files /dev/null and b/public/images/chart2.png differ diff --git a/public/images/chart3.png b/public/images/chart3.png new file mode 100644 index 0000000..e37f90e Binary files /dev/null and b/public/images/chart3.png differ diff --git a/public/images/chart4.png b/public/images/chart4.png new file mode 100644 index 0000000..12e27b1 Binary files /dev/null and b/public/images/chart4.png differ diff --git a/public/images/coffee.png b/public/images/coffee.png new file mode 100644 index 0000000..154c7ec Binary files /dev/null and b/public/images/coffee.png differ diff --git a/public/images/comp-bidr.png b/public/images/comp-bidr.png new file mode 100644 index 0000000..52896ce Binary files /dev/null and b/public/images/comp-bidr.png differ diff --git a/public/images/comp.png b/public/images/comp.png new file mode 100644 index 0000000..70068b2 Binary files /dev/null and b/public/images/comp.png differ diff --git a/public/images/contemplative-reptile.jpg b/public/images/contemplative-reptile.jpg new file mode 100644 index 0000000..2348454 Binary files /dev/null and b/public/images/contemplative-reptile.jpg differ diff --git a/public/images/coupon-icon.png b/public/images/coupon-icon.png new file mode 100644 index 0000000..f6751f8 Binary files /dev/null and b/public/images/coupon-icon.png differ diff --git a/public/images/course-brand1.png b/public/images/course-brand1.png new file mode 100644 index 0000000..14e71ff Binary files /dev/null and b/public/images/course-brand1.png differ diff --git a/public/images/course-brand2.png b/public/images/course-brand2.png new file mode 100644 index 0000000..bffbe85 Binary files /dev/null and b/public/images/course-brand2.png differ diff --git a/public/images/course-brand3.png b/public/images/course-brand3.png new file mode 100644 index 0000000..6c3840b Binary files /dev/null and b/public/images/course-brand3.png differ diff --git a/public/images/course-brand4.png b/public/images/course-brand4.png new file mode 100644 index 0000000..6eca91f Binary files /dev/null and b/public/images/course-brand4.png differ diff --git a/public/images/dash.png b/public/images/dash.png new file mode 100644 index 0000000..d42fa67 Binary files /dev/null and b/public/images/dash.png differ diff --git a/public/images/dollar.png b/public/images/dollar.png new file mode 100644 index 0000000..9a42c03 Binary files /dev/null and b/public/images/dollar.png differ diff --git a/public/images/down-arrow.png b/public/images/down-arrow.png new file mode 100644 index 0000000..c389bb4 Binary files /dev/null and b/public/images/down-arrow.png differ diff --git a/public/images/error.png b/public/images/error.png new file mode 100644 index 0000000..31fc3f1 Binary files /dev/null and b/public/images/error.png differ diff --git a/public/images/ethereum.png b/public/images/ethereum.png new file mode 100644 index 0000000..1102dae Binary files /dev/null and b/public/images/ethereum.png differ diff --git a/public/images/ethereum2.png b/public/images/ethereum2.png new file mode 100644 index 0000000..016946f Binary files /dev/null and b/public/images/ethereum2.png differ diff --git a/public/images/ethereum3.png b/public/images/ethereum3.png new file mode 100644 index 0000000..9bf85be Binary files /dev/null and b/public/images/ethereum3.png differ diff --git a/public/images/favicon.ico b/public/images/favicon.ico new file mode 100644 index 0000000..718d6fe Binary files /dev/null and b/public/images/favicon.ico differ diff --git a/public/images/favicon.png b/public/images/favicon.png new file mode 100644 index 0000000..9db9b7a Binary files /dev/null and b/public/images/favicon.png differ diff --git a/public/images/fb-icon.png b/public/images/fb-icon.png new file mode 100644 index 0000000..7982c0e Binary files /dev/null and b/public/images/fb-icon.png differ diff --git a/public/images/file1.png b/public/images/file1.png new file mode 100644 index 0000000..c2f4acf Binary files /dev/null and b/public/images/file1.png differ diff --git a/public/images/file10.png b/public/images/file10.png new file mode 100644 index 0000000..c2f4acf Binary files /dev/null and b/public/images/file10.png differ diff --git a/public/images/file2.png b/public/images/file2.png new file mode 100644 index 0000000..6376c15 Binary files /dev/null and b/public/images/file2.png differ diff --git a/public/images/file3.png b/public/images/file3.png new file mode 100644 index 0000000..30331f9 Binary files /dev/null and b/public/images/file3.png differ diff --git a/public/images/file4.png b/public/images/file4.png new file mode 100644 index 0000000..d86c175 Binary files /dev/null and b/public/images/file4.png differ diff --git a/public/images/file5.png b/public/images/file5.png new file mode 100644 index 0000000..160475c Binary files /dev/null and b/public/images/file5.png differ diff --git a/public/images/file6.png b/public/images/file6.png new file mode 100644 index 0000000..c2cd3d1 Binary files /dev/null and b/public/images/file6.png differ diff --git a/public/images/file7.png b/public/images/file7.png new file mode 100644 index 0000000..6c8c4f7 Binary files /dev/null and b/public/images/file7.png differ diff --git a/public/images/file8.png b/public/images/file8.png new file mode 100644 index 0000000..82fcab5 Binary files /dev/null and b/public/images/file8.png differ diff --git a/public/images/file9.png b/public/images/file9.png new file mode 100644 index 0000000..1c65ce7 Binary files /dev/null and b/public/images/file9.png differ diff --git a/public/images/folder.png b/public/images/folder.png new file mode 100644 index 0000000..5cbbe2e Binary files /dev/null and b/public/images/folder.png differ diff --git a/public/images/google-icon.png b/public/images/google-icon.png new file mode 100644 index 0000000..3d66f35 Binary files /dev/null and b/public/images/google-icon.png differ diff --git a/public/images/graph-icon.png b/public/images/graph-icon.png new file mode 100644 index 0000000..e0be787 Binary files /dev/null and b/public/images/graph-icon.png differ diff --git a/public/images/haskell.png b/public/images/haskell.png new file mode 100644 index 0000000..68d8659 Binary files /dev/null and b/public/images/haskell.png differ diff --git a/public/images/hex-map.png b/public/images/hex-map.png new file mode 100644 index 0000000..0fe5895 Binary files /dev/null and b/public/images/hex-map.png differ diff --git a/public/images/icon1.png b/public/images/icon1.png new file mode 100644 index 0000000..939692b Binary files /dev/null and b/public/images/icon1.png differ diff --git a/public/images/icon2.png b/public/images/icon2.png new file mode 100644 index 0000000..417bab4 Binary files /dev/null and b/public/images/icon2.png differ diff --git a/public/images/icon3.png b/public/images/icon3.png new file mode 100644 index 0000000..5a82f32 Binary files /dev/null and b/public/images/icon3.png differ diff --git a/public/images/icon4.png b/public/images/icon4.png new file mode 100644 index 0000000..14c85d5 Binary files /dev/null and b/public/images/icon4.png differ diff --git a/public/images/icon5.png b/public/images/icon5.png new file mode 100644 index 0000000..9d29260 Binary files /dev/null and b/public/images/icon5.png differ diff --git a/public/images/icon6.png b/public/images/icon6.png new file mode 100644 index 0000000..a52ec38 Binary files /dev/null and b/public/images/icon6.png differ diff --git a/public/images/icon7.png b/public/images/icon7.png new file mode 100644 index 0000000..4e89fdf Binary files /dev/null and b/public/images/icon7.png differ diff --git a/public/images/js.png b/public/images/js.png new file mode 100644 index 0000000..bdaec9a Binary files /dev/null and b/public/images/js.png differ diff --git a/public/images/litecoin.png b/public/images/litecoin.png new file mode 100644 index 0000000..17cd524 Binary files /dev/null and b/public/images/litecoin.png differ diff --git a/public/images/litecoin2.png b/public/images/litecoin2.png new file mode 100644 index 0000000..f691620 Binary files /dev/null and b/public/images/litecoin2.png differ diff --git a/public/images/litecoin3.png b/public/images/litecoin3.png new file mode 100644 index 0000000..5ac9a7e Binary files /dev/null and b/public/images/litecoin3.png differ diff --git a/public/images/live-from-space.jpg b/public/images/live-from-space.jpg new file mode 100644 index 0000000..f74b27b Binary files /dev/null and b/public/images/live-from-space.jpg differ diff --git a/public/images/logo-white.png b/public/images/logo-white.png new file mode 100644 index 0000000..ba8421d Binary files /dev/null and b/public/images/logo-white.png differ diff --git a/public/images/logo.png b/public/images/logo.png new file mode 100644 index 0000000..ba8421d Binary files /dev/null and b/public/images/logo.png differ diff --git a/public/images/man.png b/public/images/man.png new file mode 100644 index 0000000..fbe0587 Binary files /dev/null and b/public/images/man.png differ diff --git a/public/images/matic.png b/public/images/matic.png new file mode 100644 index 0000000..f9425b6 Binary files /dev/null and b/public/images/matic.png differ diff --git a/public/images/matic2.png b/public/images/matic2.png new file mode 100644 index 0000000..0afecf1 Binary files /dev/null and b/public/images/matic2.png differ diff --git a/public/images/matic3.png b/public/images/matic3.png new file mode 100644 index 0000000..2d9c46b Binary files /dev/null and b/public/images/matic3.png differ diff --git a/public/images/media.png b/public/images/media.png new file mode 100644 index 0000000..42a2631 Binary files /dev/null and b/public/images/media.png differ diff --git a/public/images/member1.png b/public/images/member1.png new file mode 100644 index 0000000..c5f1a78 Binary files /dev/null and b/public/images/member1.png differ diff --git a/public/images/member10.png b/public/images/member10.png new file mode 100644 index 0000000..4eeec1a Binary files /dev/null and b/public/images/member10.png differ diff --git a/public/images/member11.png b/public/images/member11.png new file mode 100644 index 0000000..10de3ec Binary files /dev/null and b/public/images/member11.png differ diff --git a/public/images/member12.png b/public/images/member12.png new file mode 100644 index 0000000..a00dea1 Binary files /dev/null and b/public/images/member12.png differ diff --git a/public/images/member2.png b/public/images/member2.png new file mode 100644 index 0000000..382e829 Binary files /dev/null and b/public/images/member2.png differ diff --git a/public/images/member3.png b/public/images/member3.png new file mode 100644 index 0000000..841a3f8 Binary files /dev/null and b/public/images/member3.png differ diff --git a/public/images/member4.png b/public/images/member4.png new file mode 100644 index 0000000..fb84e97 Binary files /dev/null and b/public/images/member4.png differ diff --git a/public/images/member5.png b/public/images/member5.png new file mode 100644 index 0000000..43bd6b6 Binary files /dev/null and b/public/images/member5.png differ diff --git a/public/images/member6.png b/public/images/member6.png new file mode 100644 index 0000000..0f20f0b Binary files /dev/null and b/public/images/member6.png differ diff --git a/public/images/member7.png b/public/images/member7.png new file mode 100644 index 0000000..e42e982 Binary files /dev/null and b/public/images/member7.png differ diff --git a/public/images/member8.png b/public/images/member8.png new file mode 100644 index 0000000..3738b87 Binary files /dev/null and b/public/images/member8.png differ diff --git a/public/images/member9.png b/public/images/member9.png new file mode 100644 index 0000000..0dda776 Binary files /dev/null and b/public/images/member9.png differ diff --git a/public/images/message.png b/public/images/message.png new file mode 100644 index 0000000..af720e9 Binary files /dev/null and b/public/images/message.png differ diff --git a/public/images/oval.png b/public/images/oval.png new file mode 100644 index 0000000..d240fbe Binary files /dev/null and b/public/images/oval.png differ diff --git a/public/images/paella.jpg b/public/images/paella.jpg new file mode 100644 index 0000000..1747662 Binary files /dev/null and b/public/images/paella.jpg differ diff --git a/public/images/pdf-icon.png b/public/images/pdf-icon.png new file mode 100644 index 0000000..61e3d77 Binary files /dev/null and b/public/images/pdf-icon.png differ diff --git a/public/images/product-preview.png b/public/images/product-preview.png new file mode 100644 index 0000000..29b9d6c Binary files /dev/null and b/public/images/product-preview.png differ diff --git a/public/images/product1.png b/public/images/product1.png new file mode 100644 index 0000000..bb81ba3 Binary files /dev/null and b/public/images/product1.png differ diff --git a/public/images/product2.png b/public/images/product2.png new file mode 100644 index 0000000..ce3eab1 Binary files /dev/null and b/public/images/product2.png differ diff --git a/public/images/product3.png b/public/images/product3.png new file mode 100644 index 0000000..3f4ab26 Binary files /dev/null and b/public/images/product3.png differ diff --git a/public/images/product4.png b/public/images/product4.png new file mode 100644 index 0000000..23c21e1 Binary files /dev/null and b/public/images/product4.png differ diff --git a/public/images/product5.png b/public/images/product5.png new file mode 100644 index 0000000..e9d3895 Binary files /dev/null and b/public/images/product5.png differ diff --git a/public/images/product6.png b/public/images/product6.png new file mode 100644 index 0000000..4121822 Binary files /dev/null and b/public/images/product6.png differ diff --git a/public/images/product7.png b/public/images/product7.png new file mode 100644 index 0000000..83b1e64 Binary files /dev/null and b/public/images/product7.png differ diff --git a/public/images/product8.png b/public/images/product8.png new file mode 100644 index 0000000..fc559f7 Binary files /dev/null and b/public/images/product8.png differ diff --git a/public/images/product9.png b/public/images/product9.png new file mode 100644 index 0000000..5aeab00 Binary files /dev/null and b/public/images/product9.png differ diff --git a/public/images/profile.png b/public/images/profile.png new file mode 100644 index 0000000..0f74d45 Binary files /dev/null and b/public/images/profile.png differ diff --git a/public/images/project-logo1.png b/public/images/project-logo1.png new file mode 100644 index 0000000..80cf823 Binary files /dev/null and b/public/images/project-logo1.png differ diff --git a/public/images/project-logo10.png b/public/images/project-logo10.png new file mode 100644 index 0000000..79bbf51 Binary files /dev/null and b/public/images/project-logo10.png differ diff --git a/public/images/project-logo11.png b/public/images/project-logo11.png new file mode 100644 index 0000000..4eb6892 Binary files /dev/null and b/public/images/project-logo11.png differ diff --git a/public/images/project-logo12.png b/public/images/project-logo12.png new file mode 100644 index 0000000..6161607 Binary files /dev/null and b/public/images/project-logo12.png differ diff --git a/public/images/project-logo13.png b/public/images/project-logo13.png new file mode 100644 index 0000000..a85b6c7 Binary files /dev/null and b/public/images/project-logo13.png differ diff --git a/public/images/project-logo14.png b/public/images/project-logo14.png new file mode 100644 index 0000000..5f4637b Binary files /dev/null and b/public/images/project-logo14.png differ diff --git a/public/images/project-logo2.png b/public/images/project-logo2.png new file mode 100644 index 0000000..1b71dbf Binary files /dev/null and b/public/images/project-logo2.png differ diff --git a/public/images/project-logo3.png b/public/images/project-logo3.png new file mode 100644 index 0000000..7cf4b2e Binary files /dev/null and b/public/images/project-logo3.png differ diff --git a/public/images/project-logo4.png b/public/images/project-logo4.png new file mode 100644 index 0000000..03ba7a2 Binary files /dev/null and b/public/images/project-logo4.png differ diff --git a/public/images/project-logo5.png b/public/images/project-logo5.png new file mode 100644 index 0000000..3ccbb68 Binary files /dev/null and b/public/images/project-logo5.png differ diff --git a/public/images/project-logo6.png b/public/images/project-logo6.png new file mode 100644 index 0000000..cd93c50 Binary files /dev/null and b/public/images/project-logo6.png differ diff --git a/public/images/project-logo7.png b/public/images/project-logo7.png new file mode 100644 index 0000000..2fb4578 Binary files /dev/null and b/public/images/project-logo7.png differ diff --git a/public/images/project-logo8.png b/public/images/project-logo8.png new file mode 100644 index 0000000..a60c97e Binary files /dev/null and b/public/images/project-logo8.png differ diff --git a/public/images/project-logo9.png b/public/images/project-logo9.png new file mode 100644 index 0000000..8c28885 Binary files /dev/null and b/public/images/project-logo9.png differ diff --git a/public/images/seller1.png b/public/images/seller1.png new file mode 100644 index 0000000..5296124 Binary files /dev/null and b/public/images/seller1.png differ diff --git a/public/images/seller2.png b/public/images/seller2.png new file mode 100644 index 0000000..6cccf04 Binary files /dev/null and b/public/images/seller2.png differ diff --git a/public/images/seller3.png b/public/images/seller3.png new file mode 100644 index 0000000..3a1f353 Binary files /dev/null and b/public/images/seller3.png differ diff --git a/public/images/seller4.png b/public/images/seller4.png new file mode 100644 index 0000000..a06ff9d Binary files /dev/null and b/public/images/seller4.png differ diff --git a/public/images/seller5.png b/public/images/seller5.png new file mode 100644 index 0000000..b8dea35 Binary files /dev/null and b/public/images/seller5.png differ diff --git a/public/images/seller6.png b/public/images/seller6.png new file mode 100644 index 0000000..25e999a Binary files /dev/null and b/public/images/seller6.png differ diff --git a/public/images/seller7.png b/public/images/seller7.png new file mode 100644 index 0000000..505e54d Binary files /dev/null and b/public/images/seller7.png differ diff --git a/public/images/seller8.png b/public/images/seller8.png new file mode 100644 index 0000000..77292ed Binary files /dev/null and b/public/images/seller8.png differ diff --git a/public/images/shape-1.png b/public/images/shape-1.png new file mode 100644 index 0000000..454a400 Binary files /dev/null and b/public/images/shape-1.png differ diff --git a/public/images/shape-2-icon.png b/public/images/shape-2-icon.png new file mode 100644 index 0000000..8d11b94 Binary files /dev/null and b/public/images/shape-2-icon.png differ diff --git a/public/images/slider-img1.jpg b/public/images/slider-img1.jpg new file mode 100644 index 0000000..60acbbb Binary files /dev/null and b/public/images/slider-img1.jpg differ diff --git a/public/images/slider-img2.jpg b/public/images/slider-img2.jpg new file mode 100644 index 0000000..8861147 Binary files /dev/null and b/public/images/slider-img2.jpg differ diff --git a/public/images/slider-img3.jpg b/public/images/slider-img3.jpg new file mode 100644 index 0000000..9c89781 Binary files /dev/null and b/public/images/slider-img3.jpg differ diff --git a/public/images/slider-img4.jpg b/public/images/slider-img4.jpg new file mode 100644 index 0000000..e80c2aa Binary files /dev/null and b/public/images/slider-img4.jpg differ diff --git a/public/images/slider-img5.jpg b/public/images/slider-img5.jpg new file mode 100644 index 0000000..7fc891e Binary files /dev/null and b/public/images/slider-img5.jpg differ diff --git a/public/images/small-product-img.png b/public/images/small-product-img.png new file mode 100644 index 0000000..3aa12f9 Binary files /dev/null and b/public/images/small-product-img.png differ diff --git a/public/images/small-product-img2.png b/public/images/small-product-img2.png new file mode 100644 index 0000000..ffb08fb Binary files /dev/null and b/public/images/small-product-img2.png differ diff --git a/public/images/small-product-img3.png b/public/images/small-product-img3.png new file mode 100644 index 0000000..43b6140 Binary files /dev/null and b/public/images/small-product-img3.png differ diff --git a/public/images/stack-icon.png b/public/images/stack-icon.png new file mode 100644 index 0000000..be12dad Binary files /dev/null and b/public/images/stack-icon.png differ diff --git a/public/images/support.png b/public/images/support.png new file mode 100644 index 0000000..1d93c11 Binary files /dev/null and b/public/images/support.png differ diff --git a/public/images/time.png b/public/images/time.png new file mode 100644 index 0000000..f99d66f Binary files /dev/null and b/public/images/time.png differ diff --git a/public/images/user1.png b/public/images/user1.png new file mode 100644 index 0000000..a592e0a Binary files /dev/null and b/public/images/user1.png differ diff --git a/public/images/user10.png b/public/images/user10.png new file mode 100644 index 0000000..e136879 Binary files /dev/null and b/public/images/user10.png differ diff --git a/public/images/user11.png b/public/images/user11.png new file mode 100644 index 0000000..c3808e8 Binary files /dev/null and b/public/images/user11.png differ diff --git a/public/images/user12.png b/public/images/user12.png new file mode 100644 index 0000000..d573a20 Binary files /dev/null and b/public/images/user12.png differ diff --git a/public/images/user13.png b/public/images/user13.png new file mode 100644 index 0000000..53f9513 Binary files /dev/null and b/public/images/user13.png differ diff --git a/public/images/user14.png b/public/images/user14.png new file mode 100644 index 0000000..afc98f7 Binary files /dev/null and b/public/images/user14.png differ diff --git a/public/images/user15.png b/public/images/user15.png new file mode 100644 index 0000000..3cdce43 Binary files /dev/null and b/public/images/user15.png differ diff --git a/public/images/user16.png b/public/images/user16.png new file mode 100644 index 0000000..e459d73 Binary files /dev/null and b/public/images/user16.png differ diff --git a/public/images/user17.png b/public/images/user17.png new file mode 100644 index 0000000..418fd6f Binary files /dev/null and b/public/images/user17.png differ diff --git a/public/images/user18.png b/public/images/user18.png new file mode 100644 index 0000000..646f17f Binary files /dev/null and b/public/images/user18.png differ diff --git a/public/images/user19.png b/public/images/user19.png new file mode 100644 index 0000000..669066e Binary files /dev/null and b/public/images/user19.png differ diff --git a/public/images/user2.png b/public/images/user2.png new file mode 100644 index 0000000..0ac355b Binary files /dev/null and b/public/images/user2.png differ diff --git a/public/images/user20.png b/public/images/user20.png new file mode 100644 index 0000000..42e9047 Binary files /dev/null and b/public/images/user20.png differ diff --git a/public/images/user21.png b/public/images/user21.png new file mode 100644 index 0000000..b0df234 Binary files /dev/null and b/public/images/user21.png differ diff --git a/public/images/user22.png b/public/images/user22.png new file mode 100644 index 0000000..7168073 Binary files /dev/null and b/public/images/user22.png differ diff --git a/public/images/user23.png b/public/images/user23.png new file mode 100644 index 0000000..0ac355b Binary files /dev/null and b/public/images/user23.png differ diff --git a/public/images/user3.png b/public/images/user3.png new file mode 100644 index 0000000..5242271 Binary files /dev/null and b/public/images/user3.png differ diff --git a/public/images/user4.png b/public/images/user4.png new file mode 100644 index 0000000..d3a8ff0 Binary files /dev/null and b/public/images/user4.png differ diff --git a/public/images/user5.png b/public/images/user5.png new file mode 100644 index 0000000..76f95ab Binary files /dev/null and b/public/images/user5.png differ diff --git a/public/images/user6.png b/public/images/user6.png new file mode 100644 index 0000000..5f4d9fa Binary files /dev/null and b/public/images/user6.png differ diff --git a/public/images/user7.png b/public/images/user7.png new file mode 100644 index 0000000..3a7012e Binary files /dev/null and b/public/images/user7.png differ diff --git a/public/images/user8.png b/public/images/user8.png new file mode 100644 index 0000000..8ef5dd1 Binary files /dev/null and b/public/images/user8.png differ diff --git a/public/images/user9.png b/public/images/user9.png new file mode 100644 index 0000000..ff925ff Binary files /dev/null and b/public/images/user9.png differ diff --git a/public/images/users-icon.png b/public/images/users-icon.png new file mode 100644 index 0000000..7715296 Binary files /dev/null and b/public/images/users-icon.png differ diff --git a/public/images/work-icon.png b/public/images/work-icon.png new file mode 100644 index 0000000..34e4cf5 Binary files /dev/null and b/public/images/work-icon.png differ diff --git a/public/images/working-on-table.png b/public/images/working-on-table.png new file mode 100644 index 0000000..babd358 Binary files /dev/null and b/public/images/working-on-table.png differ diff --git a/styles/PageTitle.module.css b/styles/PageTitle.module.css new file mode 100644 index 0000000..ca4ab9c --- /dev/null +++ b/styles/PageTitle.module.css @@ -0,0 +1,65 @@ +.pageTitle { + display: flex; + justify-content: space-between; + margin-bottom: 15px; +} +.pageTitle h1 { + font-size: 17px; + margin: 0; +} +.pageTitle ul { + padding: 0; + margin: 0; +} +.pageTitle ul li { + display: inline-block; + color: #A9A9C8; + margin-right: 20px; + position: relative; + font-size: 14px; +} +.pageTitle ul li:last-child { + margin-right: 0; +} +.pageTitle ul li:last-child:before { + display: none; +} +.pageTitle ul li:before { + content: '/'; + position: absolute; + right: -13px; + top: 0; +} +.pageTitle ul li a { + color: #5B5B98; + text-decoration: none; +} +.pageTitle ul li a:hover { + color: var(--primaryColor); +} + +@media only screen and (max-width: 767px) { + .pageTitle h1 { + font-size: 15px; + } + .pageTitle ul li { + margin-right: 15px; + font-size: 11px; + } + .pageTitle ul li:before { + right: -10px; + } +} + +/* For RTL Style */ +[dir=rtl] .pageTitle ul li { + margin-right: 0; + margin-left: 20px; +} +[dir=rtl] .pageTitle ul li:last-child { + margin-left: 0; +} +[dir=rtl] .pageTitle ul li:before { + left: -13px; + right: auto; +} \ No newline at end of file diff --git a/styles/chat.css b/styles/chat.css new file mode 100644 index 0000000..5fe88af --- /dev/null +++ b/styles/chat.css @@ -0,0 +1,128 @@ +.chat-tabs .react-tabs__tab-list { + border: none; + margin: 0; + height: 648px; + overflow-y: auto; + padding-right: 10px; +} +.chat-tabs .react-tabs__tab-list .react-tabs__tab { + display: block; + padding: 5px 0; + border-radius: 0; + border-top: none; + border-left: none; + border-right: none; + border-bottom: 1px solid #F7FAFF; +} +.chat-tabs .react-tabs__tab-list .react-tabs__tab:focus, .chat-tabs .react-tabs__tab-list .react-tabs__tab:focus-visible { + outline: 0; +} +.chat-tabs .react-tabs__tab-list .react-tabs__tab:focus:after, .chat-tabs .react-tabs__tab-list .react-tabs__tab:focus-visible:after { + background: transparent; +} +.chat-tabs .react-tabs__tab-list .react-tabs__tab.react-tabs__tab--selected { + background-color: #fdfdfd; + color: #A9A9C8; +} + +.active-status { + width: 13px; + height: 13px; + position: absolute; + bottom: 4px; + right: 3px; + border: 2px solid #fff; + border-radius: 100%; +} + +.active-status2 { + width: 13px; + height: 13px; + display: inline-block; + border: 2px solid #fff; + border-radius: 100%; + position: relative; + top: 1px; +} + +.left-replay-box { + position: relative; +} + +.left-replay-box .hover-caption { + background: #fff; + box-shadow: 0px 10px 35px rgba(50, 110, 189, 0.2); + border-radius: 10px; + visibility: hidden; + transition: 0.6s; + position: absolute; + left: 0; + top: 30px; +} + +.left-replay-box:hover .hover-caption { + visibility: visible; +} + +.right-replay-box { + position: relative; +} + +.right-replay-box .hover-caption { + background: #fff; + box-shadow: 0px 10px 35px rgba(50, 110, 189, 0.2); + border-radius: 10px; + visibility: hidden; + transition: 0.6s; + position: absolute; + right: 0; + top: 30px; +} + +.right-replay-box:hover .hover-caption { + visibility: visible; +} + +.chat-list-box { + padding: 15px; + height: 585px; + overflow: auto; +} + +[dir=rtl] .chat-tabs .react-tabs__tab-list { + padding-right: 0; + padding-left: 10px; +} +[dir=rtl] .active-status { + right: 0; + left: 3px; +} +[dir=rtl] .left-replay-box .hover-caption { + left: auto; + right: 0; +} +[dir=rtl] .right-replay-box .hover-caption { + right: auto; + left: 0; +} + +/* For dark mode */ +[class=dark] .chat-tabs .react-tabs__tab-list .react-tabs__tab { + border-bottom: 1px solid var(--borderColor); +} +[class=dark] .chat-tabs .react-tabs__tab-list .react-tabs__tab.react-tabs__tab--selected { + background-color: var(--colorBlack); + color: #A9A9C8; +} +[class=dark] .chat-tabs .for-dark-text-white span { + color: #fff !important; +} +[class=dark] .chat-tabs .for-dark-chat-box { + border: 1px solid var(--borderColor); +} +[class=dark] .chat-tabs .for-dark-chat-header { + border-bottom: 1px solid var(--borderColor); +} +[class=dark] .chat-tabs .for-dark-button { + background: #000; +}/*# sourceMappingURL=chat.css.map */ \ No newline at end of file diff --git a/styles/chat.css.map b/styles/chat.css.map new file mode 100644 index 0000000..0c63bdf --- /dev/null +++ b/styles/chat.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["chat.scss","chat.css"],"names":[],"mappings":"AACE;EACE,YAAA;EACA,SAAA;EACA,aAAA;EACA,gBAAA;EACA,mBAAA;ACAJ;ADEI;EACE,cAAA;EACA,cAAA;EACA,gBAAA;EACA,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,gCAAA;ACAN;ADEM;EACE,UAAA;ACAR;ADCQ;EACE,uBAAA;ACCV;ADGM;EACE,yBAAA;EACA,cAAA;ACDR;;ADMA;EACE,WAAA;EACA,YAAA;EACA,kBAAA;EACA,WAAA;EACA,UAAA;EACA,sBAAA;EACA,mBAAA;ACHF;;ADKA;EACE,WAAA;EACA,YAAA;EACA,qBAAA;EACA,sBAAA;EACA,mBAAA;EACA,kBAAA;EACA,QAAA;ACFF;;ADMA;EACE,kBAAA;ACHF;;ADKA;EACE,gBAAA;EACA,iDAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,OAAA;EACA,SAAA;ACFF;;ADIA;EACE,mBAAA;ACDF;;ADKA;EACE,kBAAA;ACFF;;ADIA;EACE,gBAAA;EACA,iDAAA;EACA,mBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,QAAA;EACA,SAAA;ACDF;;ADGA;EACE,mBAAA;ACAF;;ADIA;EACE,aAAA;EACA,aAAA;EACA,cAAA;ACDF;;ADQI;EACE,gBAAA;EACA,kBAAA;ACLN;ADSE;EACE,QAAA;EACA,SAAA;ACPJ;ADWE;EACE,UAAA;EACA,QAAA;ACTJ;ADaE;EACE,WAAA;EACA,OAAA;ACXJ;;ADeA,kBAAA;AAII;EACE,2CAAA;ACfN;ADiBM;EACE,mCAAA;EACA,cAAA;ACfR;ADqBI;EACE,sBAAA;ACnBN;ADuBE;EACE,oCAAA;ACrBJ;ADuBE;EACE,2CAAA;ACrBJ;ADuBE;EACE,gBAAA;ACrBJ","file":"chat.css"} \ No newline at end of file diff --git a/styles/chat.scss b/styles/chat.scss new file mode 100644 index 0000000..2319656 --- /dev/null +++ b/styles/chat.scss @@ -0,0 +1,151 @@ +.chat-tabs { + .react-tabs__tab-list { + border: none; + margin: 0; + height: 648px; + overflow-y: auto; + padding-right: 10px; + + .react-tabs__tab { + display: block; + padding: 5px 0; + border-radius: 0; + border-top: none; + border-left: none; + border-right: none; + border-bottom: 1px solid #F7FAFF; + + &:focus, &:focus-visible { + outline: 0; + &:after { + background: transparent; + } + } + + &.react-tabs__tab--selected { + background-color: #fdfdfd; + color: #A9A9C8; + } + } + } +} +.active-status { + width: 13px; + height: 13px; + position: absolute; + bottom: 4px; + right: 3px; + border: 2px solid #fff; + border-radius: 100%; +} +.active-status2 { + width: 13px; + height: 13px; + display: inline-block; + border: 2px solid #fff; + border-radius: 100%; + position: relative; + top: 1px; +} + +// left-replay-box +.left-replay-box { + position: relative; +} +.left-replay-box .hover-caption { + background: #fff; + box-shadow: 0px 10px 35px rgba(50, 110, 189, 0.2); + border-radius: 10px; + visibility: hidden; + transition: .6s; + position: absolute; + left: 0; + top: 30px; +} +.left-replay-box:hover .hover-caption { + visibility: visible; +} + +// right-replay-box +.right-replay-box { + position: relative; +} +.right-replay-box .hover-caption { + background: #fff; + box-shadow: 0px 10px 35px rgba(50, 110, 189, 0.2); + border-radius: 10px; + visibility: hidden; + transition: .6s; + position: absolute; + right: 0; + top: 30px; +} +.right-replay-box:hover .hover-caption { + visibility: visible; +} + +// chat-list-box +.chat-list-box { + padding: 15px; + height: 585px; + overflow: auto; +} + + +// For RTL Style +[dir="rtl"] { + .chat-tabs { + .react-tabs__tab-list { + padding-right: 0; + padding-left: 10px; + } + } + + .active-status { + right: 0; + left: 3px; + } + + // left-replay-box + .left-replay-box .hover-caption { + left: auto; + right: 0; + } + + // right-replay-box + .right-replay-box .hover-caption { + right: auto; + left: 0; + } +} + +/* For dark mode */ +[class="dark"] .chat-tabs { + .react-tabs__tab-list { + + .react-tabs__tab { + border-bottom: 1px solid var(--borderColor); + + &.react-tabs__tab--selected { + background-color: var(--colorBlack); + color: #A9A9C8; + } + } + } + + .for-dark-text-white { + span { + color: #fff !important; + } + } + + .for-dark-chat-box { + border: 1px solid var(--borderColor); + } + .for-dark-chat-header { + border-bottom: 1px solid var(--borderColor); + } + .for-dark-button { + background: #000; + } +} \ No newline at end of file diff --git a/styles/dark.css b/styles/dark.css new file mode 100644 index 0000000..7f38ea7 --- /dev/null +++ b/styles/dark.css @@ -0,0 +1,290 @@ +:root { + --darkBodyTextColor: #828690; + --darkHeadingTextColor: #ced4da; + --bodyBg: #0d1015; + --cardBg: #14171c; + --colorBlack: #000000; + --borderColor: #1f2226; + --whiteColor: #0d1015; +} + +.dark { + background-color: var(--bodyBg) !important; +} +.dark body { + background-color: var(--bodyBg) !important; + color: var(--darkBodyTextColor) !important; +} +.dark h1, .dark h2, .dark h3, .dark h4, .dark h5, .dark h6 { + color: var(--darkHeadingTextColor) !important; +} +.dark ::-moz-placeholder { + color: var(--darkBodyTextColor); +} +.dark button, .dark a, .dark p, .dark q, .dark tspan, .dark li, .dark tbody, .dark tfoot, .dark thead, .dark th, .dark td, .dark canvas, .dark ::placeholder, .dark abbr, .dark address, .dark blockquote, .dark caption, .dark cite, .dark code, .dark dd, .dark dl, .dark mark, .dark option, .dark pre, .dark time, .dark del, .dark .MuiTypography-p, .dark .MuiTypography-root, .dark .MuiDataGrid-cellContent, .dark .MuiTabPanel-root { + color: var(--darkBodyTextColor); +} +.dark .whiteColor { + color: #fff; +} +.dark .whiteColor .MuiChip-label { + color: #fff !important; +} +.dark .primary { + color: var(--primaryColor); +} +.dark .secondary { + color: var(--secondaryColor); +} +.dark .success { + color: var(--successColor); +} +.dark .info { + color: var(--infoColor); +} +.dark .warning { + color: var(--warningColor); +} +.dark .danger { + color: var(--dangerColor); +} +.dark .Mui-disabled.MuiIconButton-root { + color: #5d5e5e; +} +.dark .MuiCard-root { + background-color: var(--cardBg); +} +.dark .MuiPopover-paper { + background-color: var(--bodyBg); +} +.dark .MuiPopover-paper:before { + background-color: var(--bodyBg); +} +.dark .card-dark-bg { + background-color: var(--cardBg); +} +.dark .dark-BG-101010 { + background-color: #101010; +} +.dark .bg-black { + background-color: var(--colorBlack) !important; +} +.dark .dark-text-white { + color: #fff !important; +} +.dark .MuiDialog-root .MuiDialog-container .MuiPaper-root { + background-color: #101010; +} +.dark .MuiOutlinedInput-notchedOutline { + border-color: #464545; +} +.dark .with-icons-input .MuiInput-underline::before { + border-bottom: 1px solid #464545; +} +.dark .modal-close { + color: var(--darkBodyTextColor); +} +.dark .modal-close:hover { + color: #fff; +} +.dark .select svg { + color: #fff; +} +.dark .dark-textarea { + background-color: var(--colorBlack) !important; + color: var(--darkBodyTextColor) !important; + border: 1px solid var(--borderColor) !important; +} +.dark .MuiBadge-badge { + color: #fff; +} +.dark .for-dark-border { + border: 1px solid var(--borderColor); +} +.dark .MuiRating-iconEmpty { + color: rgba(140, 140, 140, 0.26); +} +.dark .MuiRating-iconEmpty svg { + color: rgba(140, 140, 140, 0.26) !important; +} +.dark .MuiFormControl-root .MuiFormLabel-root { + color: var(--darkBodyTextColor); +} +.dark .MuiChip-root .MuiChip-label { + color: var(--darkBodyTextColor); +} +.dark .MuiListItemIcon-root { + color: var(--darkHeadingTextColor); +} +.dark .MuiDivider-root { + border-color: rgba(255, 255, 255, 0.12); +} +.dark .MuiDialogContent-dividers { + border-top: 1px solid var(--borderColor); + border-bottom: 1px solid var(--borderColor); +} +.dark .top-navbar-for-dark { + background-color: var(--cardBg); + box-shadow: none; +} +.dark .top-navbar-for-dark .ri-align-left { + color: var(--darkHeadingTextColor); +} +.dark .dark-menu { + background-color: var(--cardBg); +} +.dark .search-form input, .dark .ls-search-form input { + background-color: var(--colorBlack); + color: var(--darkHeadingTextColor); +} +.dark .for-dark-email:hover, .dark .for-dark-notification:hover { + background-color: #f5f5f5; +} +.dark .LeftSidebarNav { + background-color: var(--cardBg); + box-shadow: none; +} +.dark .black-logo { + display: none; +} +.dark .white-logo { + display: inline-block; +} +.dark .sidebarLinkActive { + color: var(--darkHeadingTextColor); +} +.dark .sidebarLinkActive span { + color: var(--darkHeadingTextColor); +} +.dark .sidebarLinkActive svg { + fill: var(--darkHeadingTextColor); +} +.dark .for-dark-bottom-border { + border-bottom: 1px solid var(--borderColor); +} +.dark .dark-border { + border: 1px solid var(--borderColor); +} +.dark .apexcharts-legend-text { + color: var(--darkBodyTextColor) !important; +} +.dark .apexcharts-tooltip.apexcharts-theme-light, .dark .apexcharts-theme-dark { + border: 1px solid #373a40; + background-color: var(--cardBg); +} +.dark .apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title, .dark .apexcharts-theme-dark .apexcharts-tooltip-title { + background: var(--cardBg); + border-bottom: 1px solid #373a40; + color: var(--darkHeadingTextColor); +} +.dark .apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-y-label, .dark .apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-text-y-value, .dark .apexcharts-theme-dark .apexcharts-tooltip-text-y-label, .dark .apexcharts-theme-dark .apexcharts-tooltip-text-y-value { + color: var(--darkHeadingTextColor); +} +.dark .apexcharts-text { + fill: #fff; +} +.dark .apexcharts-yaxis .apexcharts-text, .dark .apexcharts-xaxis .apexcharts-text { + fill: var(--darkBodyTextColor); +} +.dark .apexcharts-title-text { + fill: var(--darkHeadingTextColor); +} +.dark .apexcharts-graphical .apexcharts-grid .apexcharts-grid-row { + fill: #1a1717; +} +.dark .apexcharts-grid-borders line { + stroke: #424242; +} +.dark .apexcharts-gridline { + stroke: #424242; +} +.dark .recharts-text { + fill: var(--darkBodyTextColor); +} +.dark .recharts-cartesian-grid .recharts-cartesian-grid-horizontal line, .dark .recharts-cartesian-grid .recharts-cartesian-grid-vertical line { + stroke: #424242; +} +.dark .recharts-xAxis line, .dark .recharts-yAxis line { + stroke: #424242; +} +.dark .for-dark-impressions { + background-color: var(--cardBg); +} +.dark .dark-table thead { + background-color: var(--colorBlack); +} +.dark .dark-table thead tr th { + border-bottom: 1px solid var(--borderColor) !important; + color: var(--darkHeadingTextColor); +} +.dark .dark-table tbody, .dark .dark-table tfoot { + background-color: var(--bodyBg); +} +.dark .dark-table tbody tr td, .dark .dark-table tbody tr th, .dark .dark-table tfoot tr td, .dark .dark-table tfoot tr th { + border-bottom: 1px solid var(--borderColor) !important; +} +.dark .dark-data-table { + border: 1px solid var(--borderColor); +} +.dark .dark-data-table .MuiDataGrid-columnHeaders { + border-bottom: 1px solid var(--borderColor); +} +.dark .dark-data-table .MuiDataGrid-row .MuiDataGrid-cell { + border-bottom: 1px solid var(--borderColor); +} +.dark .dark-data-table .MuiDataGrid-footerContainer { + border-top: 1px solid var(--borderColor); +} +.dark .ss-table-toolbar, .dark .ss-table-table-pagination { + background-color: #1a1a1a; +} +.dark .MuiClock-root .MuiButtonBase-root span { + color: #fff !important; +} +.dark .mantine-1qycoz3 { + background-color: var(--colorBlack); + border: 1px solid #464545; +} +.dark .mantine-1qycoz3 .mantine-bdajhj { + background-color: #000; + border-bottom: 1px solid #464545; +} +.dark .for-dark-text-white { + color: #fff !important; +} +.dark .for-dark-text-white span { + color: #fff !important; +} +.dark .accordion-customization, .dark .controlled-accordion { + border-top: 1px solid var(--borderColor); + border-left: 1px solid var(--borderColor); + border-right: 1px solid var(--borderColor); +} +.dark .accordion-customization .MuiAccordionDetails-root, .dark .controlled-accordion .MuiAccordionDetails-root { + border-top: 1px solid var(--borderColor); +} +.dark .accordion-customization .MuiButtonBase-root .MuiAccordionSummary-expandIconWrapper svg, .dark .controlled-accordion .MuiButtonBase-root .MuiAccordionSummary-expandIconWrapper svg { + color: #fff; +} +.dark .mobile-stepper .Mui-disabled { + color: rgba(255, 255, 255, 0.26); +} +.dark .MuiTabs-vertical { + border-color: rgba(255, 255, 255, 0.12); +} +.dark .readEmail:hover { + color: var(--darkHeadingTextColor); +} +.dark .igc-box { + background-color: var(--cardBg); +} +.dark .team-card-dark { + background-color: #000000; +} +.dark .footer { + background-color: var(--cardBg); +} + +[class="leftSidebarDark dark"] .sidebarLinkActive span { + color: #f3f3f3; +}/*# sourceMappingURL=dark.css.map */ \ No newline at end of file diff --git a/styles/dark.css.map b/styles/dark.css.map new file mode 100644 index 0000000..36dc40c --- /dev/null +++ b/styles/dark.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["dark.scss","dark.css"],"names":[],"mappings":"AACA;EACE,4BAAA;EACA,+BAAA;EACA,iBAAA;EACA,iBAAA;EACA,qBAAA;EACA,sBAAA;EACA,qBAAA;ACAF;;ADGA;EACE,0CAAA;ACAF;ADEE;EACE,0CAAA;EACA,0CAAA;ACAJ;ADGE;EACE,6CAAA;ACDJ;ADIE;EACE,+BAAA;ACFJ;ADCE;EACE,+BAAA;ACFJ;ADKE;EACE,WAAA;ACHJ;ADII;EACE,sBAAA;ACFN;ADME;EACE,0BAAA;ACJJ;ADME;EACE,4BAAA;ACJJ;ADME;EACE,0BAAA;ACJJ;ADME;EACE,uBAAA;ACJJ;ADME;EACE,0BAAA;ACJJ;ADME;EACE,yBAAA;ACJJ;ADOE;EACE,cAAA;ACLJ;ADQE;EACE,+BAAA;ACNJ;ADSE;EACE,+BAAA;ACPJ;ADQI;EACE,+BAAA;ACNN;ADUE;EACE,+BAAA;ACRJ;ADUE;EACE,yBAAA;ACRJ;ADUE;EACE,8CAAA;ACRJ;ADUE;EACE,sBAAA;ACRJ;ADaM;EACE,yBAAA;ACXR;ADgBE;EACE,qBAAA;ACdJ;ADkBM;EACE,gCAAA;AChBR;ADqBE;EACE,+BAAA;ACnBJ;ADoBI;EACE,WAAA;AClBN;ADuBI;EACE,WAAA;ACrBN;ADyBE;EACE,8CAAA;EACA,0CAAA;EACA,+CAAA;ACvBJ;AD0BE;EACE,WAAA;ACxBJ;AD2BE;EACE,oCAAA;ACzBJ;AD4BE;EACE,gCAAA;AC1BJ;AD2BI;EACE,2CAAA;ACzBN;AD8BI;EACE,+BAAA;AC5BN;ADiCI;EACE,+BAAA;AC/BN;ADmCE;EACE,kCAAA;ACjCJ;ADmCE;EACE,uCAAA;ACjCJ;ADoCE;EACE,wCAAA;EACA,2CAAA;AClCJ;ADsCE;EACE,+BAAA;EACA,gBAAA;ACpCJ;ADqCI;EACE,kCAAA;ACnCN;ADsCE;EACE,+BAAA;ACpCJ;ADuCI;EACE,mCAAA;EACA,kCAAA;ACrCN;ADyCI;EACE,yBAAA;ACvCN;AD4CE;EACE,+BAAA;EACA,gBAAA;AC1CJ;AD4CE;EACE,aAAA;AC1CJ;AD4CE;EACE,qBAAA;AC1CJ;AD4CE;EACE,kCAAA;AC1CJ;AD4CI;EACE,kCAAA;AC1CN;AD6CI;EACE,iCAAA;AC3CN;ADgDE;EACE,2CAAA;AC9CJ;ADgDE;EACE,oCAAA;AC9CJ;ADkDE;EACE,0CAAA;AChDJ;ADkDE;EACE,yBAAA;EACA,+BAAA;AChDJ;ADkDI;EACE,yBAAA;EACA,gCAAA;EACA,kCAAA;AChDN;ADkDI;EACE,kCAAA;AChDN;ADmDE;EACE,UAAA;ACjDJ;ADoDI;EACE,8BAAA;AClDN;ADqDE;EACE,iCAAA;ACnDJ;ADuDM;EACE,aAAA;ACrDR;AD2DI;EACE,eAAA;ACzDN;AD4DE;EACE,eAAA;AC1DJ;AD8DE;EACE,8BAAA;AC5DJ;ADgEM;EACE,eAAA;AC9DR;ADmEI;EACE,eAAA;ACjEN;ADqEE;EACE,+BAAA;ACnEJ;ADwEI;EACE,mCAAA;ACtEN;ADwEQ;EACE,sDAAA;EACA,kCAAA;ACtEV;AD0EI;EACE,+BAAA;ACxEN;AD0EQ;EACE,sDAAA;ACxEV;AD8EE;EACE,oCAAA;AC5EJ;AD6EI;EACE,2CAAA;AC3EN;AD8EM;EACE,2CAAA;AC5ER;AD+EI;EACE,wCAAA;AC7EN;ADiFE;EACE,yBAAA;AC/EJ;ADsFM;EACE,sBAAA;ACpFR;ADyFE;EACE,mCAAA;EACA,yBAAA;ACvFJ;ADwFI;EACE,sBAAA;EACA,gCAAA;ACtFN;AD0FE;EACE,sBAAA;ACxFJ;ADyFI;EACE,sBAAA;ACvFN;AD4FE;EACE,wCAAA;EACA,yCAAA;EACA,0CAAA;AC1FJ;AD4FI;EACE,wCAAA;AC1FN;AD+FQ;EACE,WAAA;AC7FV;ADqGI;EACE,gCAAA;ACnGN;ADuGE;EACE,uCAAA;ACrGJ;ADwGE;EACE,kCAAA;ACtGJ;ADyGE;EACE,+BAAA;ACvGJ;AD0GE;EACE,yBAAA;ACxGJ;AD4GE;EACE,+BAAA;AC1GJ;;AD8GA;EACE,cAAA;AC3GF","file":"dark.css"} \ No newline at end of file diff --git a/styles/dark.scss b/styles/dark.scss new file mode 100644 index 0000000..519bac7 --- /dev/null +++ b/styles/dark.scss @@ -0,0 +1,395 @@ +// Globals variables +:root { + --darkBodyTextColor: #828690; + --darkHeadingTextColor: #ced4da; + --bodyBg: #0d1015; + --cardBg: #14171c; + --colorBlack: #000000; + --borderColor: #1f2226; + --whiteColor: #0d1015; +} + +.dark { + background-color: var(--bodyBg) !important; + + body { + background-color: var(--bodyBg) !important; + color: var(--darkBodyTextColor) !important; + } + + h1, h2, h3, h4, h5, h6 { + color: var(--darkHeadingTextColor) !important; + } + + button, a, p, q, tspan, li, tbody, tfoot, thead, th, td, canvas, ::placeholder, abbr, address, blockquote, caption, cite, code, dd, dl, mark, option, pre, time, del, .MuiTypography-p, .MuiTypography-root, .MuiDataGrid-cellContent, .MuiTabPanel-root { + color: var(--darkBodyTextColor); + } + + .whiteColor { + color: #fff; + .MuiChip-label { + color: #fff !important; + } + } + + .primary { + color: var(--primaryColor); + } + .secondary { + color: var(--secondaryColor); + } + .success { + color: var(--successColor); + } + .info { + color: var(--infoColor); + } + .warning { + color: var(--warningColor); + } + .danger { + color: var(--dangerColor); + } + + .Mui-disabled.MuiIconButton-root { + color: #5d5e5e; + } + + .MuiCard-root { + background-color: var(--cardBg); + } + + .MuiPopover-paper { + background-color: var(--bodyBg); + &:before { + background-color: var(--bodyBg); + } + } + + .card-dark-bg { + background-color: var(--cardBg); + } + .dark-BG-101010 { + background-color: #101010; + } + .bg-black { + background-color: var(--colorBlack) !important; + } + .dark-text-white { + color: #fff !important; + } + + .MuiDialog-root { + .MuiDialog-container { + .MuiPaper-root { + background-color: #101010; + } + } + } + + .MuiOutlinedInput-notchedOutline { + border-color: #464545; + } + .with-icons-input { + .MuiInput-underline { + &::before { + border-bottom: 1px solid #464545; + } + } + } + + .modal-close { + color: var(--darkBodyTextColor); + &:hover { + color: #fff; + } + } + + .select { + svg { + color: #fff; + } + } + + .dark-textarea { + background-color: var(--colorBlack) !important; + color: var(--darkBodyTextColor) !important; + border: 1px solid var(--borderColor) !important; + } + + .MuiBadge-badge { + color: #fff; + } + + .for-dark-border { + border: 1px solid var(--borderColor); + } + + .MuiRating-iconEmpty { + color: rgb(140 140 140 / 26%); + svg { + color: rgb(140 140 140 / 26%) !important; + } + } + + .MuiFormControl-root { + .MuiFormLabel-root { + color: var(--darkBodyTextColor); + } + } + + .MuiChip-root { + .MuiChip-label { + color: var(--darkBodyTextColor); + } + } + + .MuiListItemIcon-root { + color: var(--darkHeadingTextColor); + } + .MuiDivider-root { + border-color: rgb(255 255 255 / 12%); + } + + .MuiDialogContent-dividers { + border-top: 1px solid var(--borderColor); + border-bottom: 1px solid var(--borderColor); + } + + // top-navbar + .top-navbar-for-dark { + background-color: var(--cardBg); + box-shadow: none; + .ri-align-left { + color: var(--darkHeadingTextColor); + } + } + .dark-menu { + background-color: var(--cardBg); + } + .search-form, .ls-search-form { + input { + background-color: var(--colorBlack); + color: var(--darkHeadingTextColor); + } + } + .for-dark-email, .for-dark-notification { + &:hover { + background-color: #f5f5f5; + } + } + + // LeftSidebarNav + .LeftSidebarNav { + background-color: var(--cardBg); + box-shadow: none; + } + .black-logo { + display: none; + } + .white-logo { + display: inline-block; + } + .sidebarLinkActive { + color: var(--darkHeadingTextColor); + + span { + color: var(--darkHeadingTextColor); + } + + svg { + fill: var(--darkHeadingTextColor); + } + } + + // for-dark-title + .for-dark-bottom-border { + border-bottom: 1px solid var(--borderColor); + } + .dark-border { + border: 1px solid var(--borderColor); + } + + // apexcharts-legend-text + .apexcharts-legend-text { + color: var(--darkBodyTextColor) !important; + } + .apexcharts-tooltip.apexcharts-theme-light, .apexcharts-theme-dark { + border: 1px solid #373a40; + background-color: var(--cardBg); + + .apexcharts-tooltip-title { + background: var(--cardBg); + border-bottom: 1px solid #373a40; + color: var(--darkHeadingTextColor); + } + .apexcharts-tooltip-text-y-label, .apexcharts-tooltip-text-y-value { + color: var(--darkHeadingTextColor); + } + } + .apexcharts-text { + fill: #fff; + } + .apexcharts-yaxis, .apexcharts-xaxis { + .apexcharts-text { + fill: var(--darkBodyTextColor); + } + } + .apexcharts-title-text { + fill: var(--darkHeadingTextColor); + } + .apexcharts-graphical { + .apexcharts-grid { + .apexcharts-grid-row { + fill: #1a1717; + } + } + } + + .apexcharts-grid-borders { + line { + stroke: #424242; + } + } + .apexcharts-gridline { + stroke: #424242; + } + + // Recharts + .recharts-text { + fill: var(--darkBodyTextColor); + } + .recharts-cartesian-grid { + .recharts-cartesian-grid-horizontal, .recharts-cartesian-grid-vertical { + line { + stroke: #424242; + } + } + } + .recharts-xAxis, .recharts-yAxis { + line { + stroke: #424242; + } + } + + .for-dark-impressions { + background-color: var(--cardBg); + } + + // dark-table + .dark-table { + thead { + background-color: var(--colorBlack); + tr { + th { + border-bottom: 1px solid var(--borderColor) !important; + color: var(--darkHeadingTextColor); + } + } + } + tbody, tfoot { + background-color: var(--bodyBg); + tr { + td, th { + border-bottom: 1px solid var(--borderColor) !important; + } + } + } + } + + .dark-data-table { + border: 1px solid var(--borderColor); + .MuiDataGrid-columnHeaders { + border-bottom: 1px solid var(--borderColor); + } + .MuiDataGrid-row { + .MuiDataGrid-cell { + border-bottom: 1px solid var(--borderColor); + } + } + .MuiDataGrid-footerContainer { + border-top: 1px solid var(--borderColor); + } + } + + .ss-table-toolbar, .ss-table-table-pagination { + background-color: #1a1a1a; + } + + + // date-time-picker + .MuiClock-root { + .MuiButtonBase-root { + span { + color: #fff !important; + } + } + } + + .mantine-1qycoz3 { + background-color: var(--colorBlack); + border: 1px solid #464545; + .mantine-bdajhj { + background-color: #000; + border-bottom: 1px solid #464545; + } + } + + .for-dark-text-white { + color: #fff !important; + span { + color: #fff !important; + } + } + + // MuiAccordion-root + .accordion-customization, .controlled-accordion { + border-top: 1px solid var(--borderColor); + border-left: 1px solid var(--borderColor); + border-right: 1px solid var(--borderColor); + + .MuiAccordionDetails-root { + border-top: 1px solid var(--borderColor); + } + + .MuiButtonBase-root { + .MuiAccordionSummary-expandIconWrapper { + svg { + color: #fff; + } + } + } + } + + // mobile-stepper + .mobile-stepper { + .Mui-disabled { + color: rgb(255 255 255 / 26%); + } + } + + .MuiTabs-vertical { + border-color: rgb(255 255 255 / 12%); + } + + .readEmail:hover { + color: var(--darkHeadingTextColor); + } + + .igc-box { + background-color: var(--cardBg); + } + + .team-card-dark { + background-color: #000000; + } + + // footer + .footer { + background-color: var(--cardBg); + } +} + +[class="leftSidebarDark dark"] .sidebarLinkActive span { + color: #f3f3f3; +} \ No newline at end of file diff --git a/styles/globals.css b/styles/globals.css new file mode 100644 index 0000000..58984c5 --- /dev/null +++ b/styles/globals.css @@ -0,0 +1,1183 @@ +:root { + --bodyFontFamily: "Roboto", sans-serif !important; + --bodyTextColor: #5B5B98; + --primaryColor: #757FEF; + --secondaryColor: #818093; + --successColor: #00B69B; + --infoColor: #2DB6F5; + --warningColor: #FFBC2B; + --dangerColor: #EE368C; + --darkColor: #260944; + --headingColor: #260944; + --whiteColor: #ffffff; + --fontSize: 15px; + --transition: all ease .5s; + --box-shadow: 0 0 20px 3px rgba(0, 0, 0, 0.05); +} + +html, body { + background-color: #F5F5F5 !important; + font-family: var(--bodyFontFamily) !important; +} + +h1, h2, h3, h4, h5, h6 { + color: var(--headingColor); +} + +::-moz-placeholder { + font-family: var(--bodyFontFamily) !important; +} + +div, label, a, p, tspan, span, li, table, tbody, tfoot, thead, th, td, canvas, button, input, ::placeholder, abbr, address, blockquote, caption, cite, code, dd, dl, mark, option, pre, select, time, del { + font-family: var(--bodyFontFamily) !important; +} + +img { + max-width: 100%; +} + +.text-decoration-none { + text-decoration: none; +} + +.borRadius100 { + border-radius: 100%; +} + +.borderRadius10 { + border-radius: 10px; +} + +/* Color */ +.primaryColor { + color: var(--primaryColor) !important; +} + +.secondaryColor { + color: var(--secondaryColor) !important; +} + +.successColor { + color: var(--successColor) !important; +} + +.infoColor { + color: var(--infoColor) !important; +} + +.warningColor { + color: var(--warningColor) !important; +} + +.dangerColor { + color: var(--dangerColor) !important; +} + +.darkColor { + color: var(--darkColor) !important; +} + +/* BG Color */ +.primaryBgColor { + background-color: var(--primaryColor) !important; +} + +.secondaryBgColor { + background-color: var(--secondaryColor) !important; +} + +.successBgColor { + background-color: var(--successColor) !important; +} + +.infoBgColor { + background-color: var(--infoColor) !important; +} + +.warningBgColor { + background-color: var(--warningColor) !important; +} + +.dangerBgColor { + background-color: var(--dangerColor) !important; +} + +.darkBgColor { + background-color: var(--darkColor) !important; +} + +/* Badge custom style */ +.primaryBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--primaryColor) !important; + padding: 5px 13px; + display: inline-block; +} + +.secondaryBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--secondaryColor) !important; + padding: 5px 13px; + display: inline-block; +} + +.successBadge { + background: rgba(0, 182, 155, 0.1); + border-radius: 4px; + color: var(--successColor) !important; + padding: 5px 13px; + display: inline-block; +} + +.infoBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--infoColor) !important; + padding: 5px 13px; + display: inline-block; +} + +.dangerBadge { + background: rgba(238, 54, 140, 0.1); + border-radius: 4px; + color: var(--dangerColor) !important; + padding: 5px 13px; + display: inline-block; +} + +.float-left { + float: left; +} + +.float-right { + float: right; +} + +.ml-auto { + margin-left: auto !important; +} + +.ml-1 { + margin-left: 8px !important; +} + +.ml-2 { + margin-left: 16px !important; +} + +.ml-3 { + margin-left: 24px !important; +} + +.ml-4 { + margin-left: 32px !important; +} + +.ml-5 { + margin-left: 40px !important; +} + +.mr-1 { + margin-right: 8px !important; +} + +.mr-2 { + margin-right: 16px !important; +} + +.mr-3 { + margin-right: 24px !important; +} + +.mr-4 { + margin-right: 32px !important; +} + +.mr-5 { + margin-right: 40px !important; +} + +.ml-2px { + margin-left: 2px !important; +} + +.ml-3px { + margin-left: 3px !important; +} + +.ml-5px { + margin-left: 5px !important; +} + +.ml-6px { + margin-left: 6px !important; +} + +.ml-7px { + margin-left: 7px !important; +} + +.ml-8px { + margin-left: 8px !important; +} + +.ml-9px { + margin-left: 9px !important; +} + +.ml-10px { + margin-left: 10px !important; +} + +.ml-11px { + margin-left: 11px !important; +} + +.ml-12px { + margin-left: 12px !important; +} + +.ml-13px { + margin-left: 13px !important; +} + +.ml-14px { + margin-left: 14px !important; +} + +.ml-15px { + margin-left: 15px !important; +} + +.ml-16px { + margin-left: 16px !important; +} + +.ml-17px { + margin-left: 17px !important; +} + +.ml-18px { + margin-left: 18px !important; +} + +.ml-19px { + margin-left: 19px !important; +} + +.ml-20px { + margin-left: 20px !important; +} + +.ml-21px { + margin-left: 21px !important; +} + +.ml-22px { + margin-left: 22px !important; +} + +.ml-23px { + margin-left: 23px !important; +} + +.ml-24px { + margin-left: 24px !important; +} + +.ml-25px { + margin-left: 25px !important; +} + +.ml-26px { + margin-left: 26px !important; +} + +.ml-27px { + margin-left: 27px !important; +} + +.ml-28px { + margin-left: 28px !important; +} + +.ml-29px { + margin-left: 29px !important; +} + +.ml-30px { + margin-left: 30px !important; +} + +.mr-2px { + margin-right: 2px !important; +} + +.mr-5px { + margin-right: 5px !important; +} + +.mr-6px { + margin-right: 6px !important; +} + +.mr-7px { + margin-right: 7px !important; +} + +.ml-8px { + margin-right: 8px !important; +} + +.mr-9px { + margin-right: 9px !important; +} + +.mr-10px { + margin-right: 10px !important; +} + +.mr-11px { + margin-right: 11px !important; +} + +.mr-12px { + margin-right: 12px !important; +} + +.mr-13px { + margin-right: 13px !important; +} + +.mr-14px { + margin-right: 14px !important; +} + +.mr-15px { + margin-right: 15px !important; +} + +.mr-16px { + margin-right: 16px !important; +} + +.mr-17px { + margin-right: 17px !important; +} + +.mr-18px { + margin-right: 18px !important; +} + +.mr-19px { + margin-right: 19px !important; +} + +.mr-20px { + margin-right: 20px !important; +} + +.mr-21px { + margin-right: 21px !important; +} + +.mr-22px { + margin-right: 22px !important; +} + +.mr-23px { + margin-right: 23px !important; +} + +.mr-24px { + margin-right: 24px !important; +} + +.mr-25px { + margin-right: 25px !important; +} + +.mr-26px { + margin-right: 26px !important; +} + +.mr-27px { + margin-right: 27px !important; +} + +.mr-28px { + margin-right: 28px !important; +} + +.mr-29px { + margin-right: 29px !important; +} + +.mr-30px { + margin-right: 30px !important; +} + +.pr-5px { + padding-right: 5px; +} + +.pr-6px { + padding-right: 6px; +} + +.pr-7px { + padding-right: 7px; +} + +.pr-8px { + padding-right: 8px; +} + +.pr-9px { + padding-right: 9px; +} + +.pr-10px { + padding-right: 10px; +} + +.pr-11px { + padding-right: 11px; +} + +.pr-12px { + padding-right: 12px; +} + +.pr-13px { + padding-right: 13px; +} + +.pr-14px { + padding-right: 14px; +} + +.pr-15px { + padding-right: 15px; +} + +.pr-16px { + padding-right: 16px; +} + +.pr-17px { + padding-right: 17px; +} + +.pr-18px { + padding-right: 18px; +} + +.pr-19px { + padding-right: 19px; +} + +.pr-20px { + padding-right: 20px; +} + +.pr-21px { + padding-right: 21px; +} + +.pr-22px { + padding-right: 22px; +} + +.pr-23px { + padding-right: 23px; +} + +.pr-24px { + padding-right: 24px; +} + +.pr-25px { + padding-right: 25px; +} + +.pr-26px { + padding-right: 26px; +} + +.pr-27px { + padding-right: 27px; +} + +.pr-28px { + padding-right: 28px; +} + +.pr-29px { + padding-right: 29px; +} + +.pr-30px { + padding-right: 30px; +} + +.pr-35px { + padding-right: 35px; +} + +.pr-40px { + padding-right: 40px; +} + +.pr-45px { + padding-right: 45px; +} + +.pr-50px { + padding-right: 50px; +} + +.pr-55px { + padding-right: 55px; +} + +.pr-60px { + padding-right: 60px; +} + +.pl-5px { + padding-left: 5px; +} + +.pl-6px { + padding-left: 6px; +} + +.pl-7px { + padding-left: 7px; +} + +.pl-8px { + padding-left: 8px; +} + +.pl-9px { + padding-left: 9px; +} + +.pl-10px { + padding-left: 10px; +} + +.pl-11px { + padding-left: 11px; +} + +.pl-12px { + padding-left: 12px; +} + +.pl-13px { + padding-left: 13px; +} + +.pl-14px { + padding-left: 14px; +} + +.pl-15px { + padding-left: 15px; +} + +.pl-16px { + padding-left: 16px; +} + +.pl-17px { + padding-left: 17px; +} + +.pl-18px { + padding-left: 18px; +} + +.pl-19px { + padding-left: 19px; +} + +.pl-20px { + padding-left: 20px; +} + +.pl-21px { + padding-left: 21px; +} + +.pl-22px { + padding-left: 22px; +} + +.pl-23px { + padding-left: 23px; +} + +.pl-24px { + padding-left: 24px; +} + +.pl-25px { + padding-left: 25px; +} + +.pl-26px { + padding-left: 26px; +} + +.pl-27px { + padding-left: 27px; +} + +.pl-28px { + padding-left: 28px; +} + +.pl-29px { + padding-left: 29px; +} + +.pl-30px { + padding-left: 30px; +} + +.pl-35px { + padding-left: 35px; +} + +.pl-40px { + padding-left: 40px; +} + +.pl-45px { + padding-left: 45px; +} + +.pl-50px { + padding-left: 50px; +} + +.pl-55px { + padding-left: 55px; +} + +.pl-60px { + padding-left: 60px; +} + +.right-5px { + right: 5px; +} + +.right-6px { + right: 6px; +} + +.right-7px { + right: 7px; +} + +.right-8px { + right: 8px; +} + +.right-9px { + right: 9px; +} + +.right-10px { + right: 10px; +} + +.right-11px { + right: 11px; +} + +.right-12px { + right: 12px; +} + +.right-13px { + right: 13px; +} + +.right-14px { + right: 14px; +} + +.right-15px { + right: 15px; +} + +.right-16px { + right: 16px; +} + +.right-17px { + right: 17px; +} + +.right-18px { + right: 18px; +} + +.right-19px { + right: 19px; +} + +.right-20px { + right: 20px; +} + +.right-21px { + right: 21px; +} + +.right-22px { + right: 22px; +} + +.right-23px { + right: 23px; +} + +.right-24px { + right: 24px; +} + +.right-25px { + right: 25px; +} + +.right-26px { + right: 27px; +} + +.right-28px { + right: 28px; +} + +.right-29px { + right: 29px; +} + +.right-30px { + right: 30px; +} + +/* LeftSidebarNav */ +.white-logo { + display: none; +} + +.sidebarLinkActive { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} + +.sidebarLinkActive2 { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} + +.sidebarLinkActive2::before { + background-color: #fff !important; +} + +.sidebarLinkActive2 { + background: #757FEF; + color: #fff !important; +} + +/* Main wrapper content */ +.main-wrapper-content { + padding-left: 330px; + position: relative; + transition: all 0.5s ease-out; +} +.main-wrapper-content.active { + padding-left: 0; +} +.main-wrapper-content.active .LeftSidebarNav { + left: -100%; +} +.main-wrapper-content.active .main-content { + padding-left: 30px; + padding-right: 30px; +} +.main-wrapper-content .main-content { + padding-right: 30px; +} + +@media only screen and (max-width: 767px) { + .main-wrapper-content .main-content { + padding-left: 15px !important; + padding-right: 15px !important; + } +} +@media only screen and (max-width: 1199px) { + .main-wrapper-content { + padding: 0; + } + .main-wrapper-content .LeftSidebarNav { + left: -100%; + width: 280px; + } + .main-wrapper-content .main-content { + padding-left: 30px; + padding-right: 30px; + } + .main-wrapper-content.active .LeftSidebarNav { + z-index: 99999; + left: 0; + } +} +@media only screen and (min-width: 2200px) { + .main-wrapper-content .main-content { + max-width: 2200px; + margin-left: auto; + margin-right: auto; + } +} +/* End Main wrapper content */ +/* React Tabs Tab List */ +.react-tabs__tab-list .react-tabs__tab--selected { + background-color: var(--primaryColor); + color: #fff; +} + +/* End React Tabs Tab List */ +/* Read Email */ +.readEmail { + color: var(--bodyTextColor); + text-decoration: none; +} + +.readEmail:hover { + color: #260944; +} + +/* Product Details Tabs */ +.product-img-slider .swiper-button-next:after, .product-img-slider .swiper-button-prev:after { + color: var(--primaryColor); + font-size: 25px; +} + +.product-details-tabs .react-tabs__tab-list { + border-bottom: 1px solid #dfdfdf; +} +.product-details-tabs .react-tabs__tab-list .react-tabs__tab { + color: #A9A9C8; + font-weight: 500; + font-size: 15px; + padding-left: 0; + padding-right: 0; + margin-right: 30px; + border-top: none; + border-right: none; + border-left: none; + border-bottom: 2px solid transparent; +} +.product-details-tabs .react-tabs__tab-list .react-tabs__tab:last-child { + margin-right: 0; +} +.product-details-tabs .react-tabs__tab-list .react-tabs__tab:hover, .product-details-tabs .react-tabs__tab-list .react-tabs__tab.react-tabs__tab--selected { + background-color: transparent; + border-top: none; + border-right: none; + border-left: none; + border-bottom: 2px solid var(--primaryColor); + color: #260944; +} +.product-details-tabs .react-tabs__tab-list .react-tabs__tab:focus:after { + background: transparent; +} +.product-details-tabs .react-tabs__tab-panel { + margin-top: 20px; +} +.product-details-tabs .product-description h1 { + font-size: 22px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description h2 { + font-size: 20px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description h3 { + font-size: 18px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description h4 { + font-size: 16px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description h5 { + font-size: 15px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description h6 { + font-size: 14px; + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .product-description p:last-child { + margin-bottom: 0; +} +.product-details-tabs .product-description ul li, .product-details-tabs .product-description ol li { + margin-bottom: 10px; +} +.product-details-tabs .product-description ul li:last-child, .product-details-tabs .product-description ol li:last-child { + margin-bottom: 0; +} +.product-details-tabs .review-card .content { + background: #F7FAFF; + border-radius: 8px; + position: relative; + padding: 25px; + margin-bottom: 30px; +} +.product-details-tabs .review-card .content .reating { + color: #FFBC2B; + margin-bottom: 10px; + font-size: 15px; +} +.product-details-tabs .review-card .content .reating i { + margin-right: 5px; +} +.product-details-tabs .review-card .content .reating i:last-child { + margin-right: 0; +} +.product-details-tabs .review-card .content p { + margin-top: 0; + margin-bottom: 10px; +} +.product-details-tabs .review-card .content p:last-child { + margin-bottom: 0; +} +.product-details-tabs .review-card .content .down-arrow { + position: absolute; + bottom: -20px; + left: 25px; +} +.product-details-tabs .review-card .info { + display: flex; + align-items: center; + margin-left: 30px; +} +.product-details-tabs .review-card .info img { + border-radius: 100%; + width: 30px; + height: 30px; + margin-right: 10px; +} +.product-details-tabs .review-card .info h4 { + margin: 0; + font-weight: 500; + font-size: 14px; +} + +/* For dark mode */ +[class=dark] .product-details-tabs .react-tabs__tab-list { + border-bottom: 1px solid var(--borderColor); +} +[class=dark] .product-details-tabs .react-tabs__tab-list .react-tabs__tab:hover, [class=dark] .product-details-tabs .react-tabs__tab-list .react-tabs__tab.react-tabs__tab--selected { + color: var(--primaryColor); +} + +[dir=rtl] .product-details-tabs .react-tabs__tab-list .react-tabs__tab { + margin-right: 0; + margin-left: 30px; +} +[dir=rtl] .product-details-tabs .react-tabs__tab-list .react-tabs__tab:last-child { + margin-left: 0; +} +[dir=rtl] .product-details-tabs .review-card .content .reating i { + margin-right: 0; + margin-left: 5px; +} +[dir=rtl] .product-details-tabs .review-card .content .reating i:last-child { + margin-left: 0; +} +[dir=rtl] .product-details-tabs .review-card .content .down-arrow { + left: auto; + right: 25px; +} +[dir=rtl] .product-details-tabs .review-card .info { + margin-left: auto; + margin-right: 30px; +} +[dir=rtl] .product-details-tabs .review-card .info img { + margin-right: 0; + margin-left: 10px; +} + +/* Testimonial Style */ +.testimonialStyle1 .swiper-button-next, .testimonialStyle1 .swiper-button-prev, .testimonialStyle2 .swiper-button-next, .testimonialStyle2 .swiper-button-prev { + color: var(--primaryColor); +} +.testimonialStyle1 .swiper-button-next::after, .testimonialStyle1 .swiper-button-prev::after, .testimonialStyle2 .swiper-button-next::after, .testimonialStyle2 .swiper-button-prev::after { + font-size: 25px; +} +.testimonialStyle1 .swiper-button-next, .testimonialStyle2 .swiper-button-next { + right: 0; +} +.testimonialStyle1 .swiper-button-prev, .testimonialStyle2 .swiper-button-prev { + left: 0; +} + +[dir=rtl] .testimonialStyle1 .swiper-button-next, [dir=rtl] .testimonialStyle2 .swiper-button-next { + right: auto; + left: 0; +} +[dir=rtl] .testimonialStyle1 .swiper-button-prev, [dir=rtl] .testimonialStyle2 .swiper-button-prev { + left: auto; + right: 0; +} + +.testimonialStyle3 .swiper-pagination { + position: relative; +} +.testimonialStyle3 .swiper-pagination .swiper-pagination-bullet { + width: 10px; + height: 10px; +} +.testimonialStyle3 .swiper-pagination .swiper-pagination-bullet.swiper-pagination-bullet-active { + background-color: var(--primaryColor); +} + +/* Active File Manager Link */ +.activeFMLink > a { + color: var(--primaryColor) !important; +} + +.fc .fc-toolbar-title { + font-size: 20px !important; +} + +/* Authentication box */ +.main-wrapper-content:has(div.authenticationBox) { + padding: 0; +} + +/* End Authentication box */ +.apexcharts-yaxis text, .apexcharts-xaxis text { + fill: #A9A9C8; +} + +.scroll-to-top i { + position: fixed; + cursor: pointer; + bottom: 20px; + right: 20px; + color: #fff !important; + background-color: var(--primaryColor); + width: 40px; + text-align: center; + height: 40px; + line-height: 40px; + border-radius: 50%; + font-size: 20px; + transition: var(--transition); + box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.1); + z-index: 1290; +} +.scroll-to-top i:hover { + transition: var(--transition); + box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08); + transform: translateY(-5px); +} + +.control-panel-modal { + position: fixed; + right: -100%; + top: 0; + z-index: 999999; + height: 100%; + width: 100%; + background-color: rgba(0, 0, 0, 0.2); + transition: var(--transition); +} +.control-panel-modal.show { + right: 0; +} +.control-panel-modal .settings-btn { + position: fixed; + bottom: 70px; + right: 15px; + background-color: var(--dangerColor); + color: #fff; + z-index: 1290; + width: 50px; + height: 50px; + text-align: center; + line-height: 50px; + border-radius: 100%; + font-size: 25px; + cursor: pointer; + transition: var(--transition); + animation: rotate 2s linear infinite; +} +.control-panel-modal .settings-btn:hover { + background-color: #d32979; +} + +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.control-panel-dialog { + width: 320px; + background: #fff; + height: 100%; + margin-left: auto; + z-index: 999999; + position: relative; +} +.control-panel-dialog .control-panel-content { + overflow-y: auto; + height: 100%; + padding-bottom: 150px; +} +.control-panel-dialog .control-panel-footer { + position: absolute; + bottom: 0; + left: 0; + background-color: #F5F5F5; + padding: 16px 24px; + width: 100%; +} + +.ProgressBar span { + padding: 0 2px 0 0 !important; +} + +.igc-box { + background: #fff; + border-radius: 8px; + margin-bottom: 15px; + padding: 30px 20px; +} + +.progressIcon { + font-size: 20px; + position: absolute; + top: 0px; + margin-left: 3px; +}/*# sourceMappingURL=globals.css.map */ \ No newline at end of file diff --git a/styles/globals.css.map b/styles/globals.css.map new file mode 100644 index 0000000..bd67c26 --- /dev/null +++ b/styles/globals.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["globals.scss","globals.css"],"names":[],"mappings":"AACA;EACE,iDAAA;EACA,wBAAA;EACA,uBAAA;EACA,yBAAA;EACA,uBAAA;EACA,oBAAA;EACA,uBAAA;EACA,sBAAA;EACA,oBAAA;EACA,uBAAA;EACA,qBAAA;EACA,gBAAA;EACA,0BAAA;EACA,8CAAA;ACAF;;ADGA;EACE,oCAAA;EACA,6CAAA;ACAF;;ADEA;EACE,0BAAA;ACCF;;ADCA;EACE,6CAAA;ACEF;;ADHA;EACE,6CAAA;ACEF;;ADAA;EACE,eAAA;ACGF;;ADDA;EACE,qBAAA;ACIF;;ADFA;EACE,mBAAA;ACKF;;ADHA;EACE,mBAAA;ACMF;;ADHA,UAAA;AACA;EACE,qCAAA;ACMF;;ADJA;EACE,uCAAA;ACOF;;ADLA;EACE,qCAAA;ACQF;;ADNA;EACE,kCAAA;ACSF;;ADPA;EACE,qCAAA;ACUF;;ADRA;EACE,oCAAA;ACWF;;ADTA;EACE,kCAAA;ACYF;;ADTA,aAAA;AACA;EACE,gDAAA;ACYF;;ADVA;EACE,kDAAA;ACaF;;ADXA;EACE,gDAAA;ACcF;;ADZA;EACE,6CAAA;ACeF;;ADbA;EACE,gDAAA;ACgBF;;ADdA;EACE,+CAAA;ACiBF;;ADfA;EACE,6CAAA;ACkBF;;ADfA,uBAAA;AACA;EACE,oCAAA;EACA,kBAAA;EACA,qCAAA;EACA,iBAAA;EACA,qBAAA;ACkBF;;ADhBA;EACE,oCAAA;EACA,kBAAA;EACA,uCAAA;EACA,iBAAA;EACA,qBAAA;ACmBF;;ADjBA;EACE,kCAAA;EACA,kBAAA;EACA,qCAAA;EACA,iBAAA;EACA,qBAAA;ACoBF;;ADlBA;EACE,oCAAA;EACA,kBAAA;EACA,kCAAA;EACA,iBAAA;EACA,qBAAA;ACqBF;;ADnBA;EACE,mCAAA;EACA,kBAAA;EACA,oCAAA;EACA,iBAAA;EACA,qBAAA;ACsBF;;ADlBA;EACE,WAAA;ACqBF;;ADnBA;EACE,YAAA;ACsBF;;ADlBA;EACE,4BAAA;ACqBF;;ADnBA;EACE,2BAAA;ACsBF;;ADpBA;EACE,4BAAA;ACuBF;;ADrBA;EACE,4BAAA;ACwBF;;ADtBA;EACE,4BAAA;ACyBF;;ADvBA;EACE,4BAAA;AC0BF;;ADtBA;EACE,4BAAA;ACyBF;;ADvBA;EACE,6BAAA;AC0BF;;ADxBA;EACE,6BAAA;AC2BF;;ADzBA;EACE,6BAAA;AC4BF;;AD1BA;EACE,6BAAA;AC6BF;;ADzBA;EACE,2BAAA;AC4BF;;AD1BA;EACE,2BAAA;AC6BF;;AD3BA;EACE,2BAAA;AC8BF;;AD5BA;EACE,2BAAA;AC+BF;;AD7BA;EACE,2BAAA;ACgCF;;AD9BA;EACE,2BAAA;ACiCF;;AD/BA;EACE,2BAAA;ACkCF;;ADhCA;EACE,4BAAA;ACmCF;;ADjCA;EACE,4BAAA;ACoCF;;ADlCA;EACE,4BAAA;ACqCF;;ADnCA;EACE,4BAAA;ACsCF;;ADpCA;EACE,4BAAA;ACuCF;;ADrCA;EACE,4BAAA;ACwCF;;ADtCA;EACE,4BAAA;ACyCF;;ADvCA;EACE,4BAAA;AC0CF;;ADxCA;EACE,4BAAA;AC2CF;;ADzCA;EACE,4BAAA;AC4CF;;AD1CA;EACE,4BAAA;AC6CF;;AD3CA;EACE,4BAAA;AC8CF;;AD5CA;EACE,4BAAA;AC+CF;;AD7CA;EACE,4BAAA;ACgDF;;AD9CA;EACE,4BAAA;ACiDF;;AD/CA;EACE,4BAAA;ACkDF;;ADhDA;EACE,4BAAA;ACmDF;;ADjDA;EACE,4BAAA;ACoDF;;ADlDA;EACE,4BAAA;ACqDF;;ADnDA;EACE,4BAAA;ACsDF;;ADpDA;EACE,4BAAA;ACuDF;;ADnDA;EACE,4BAAA;ACsDF;;ADpDA;EACE,4BAAA;ACuDF;;ADrDA;EACE,4BAAA;ACwDF;;ADtDA;EACE,4BAAA;ACyDF;;ADvDA;EACE,4BAAA;AC0DF;;ADxDA;EACE,4BAAA;AC2DF;;ADzDA;EACE,6BAAA;AC4DF;;AD1DA;EACE,6BAAA;AC6DF;;AD3DA;EACE,6BAAA;AC8DF;;AD5DA;EACE,6BAAA;AC+DF;;AD7DA;EACE,6BAAA;ACgEF;;AD9DA;EACE,6BAAA;ACiEF;;AD/DA;EACE,6BAAA;ACkEF;;ADhEA;EACE,6BAAA;ACmEF;;ADjEA;EACE,6BAAA;ACoEF;;ADlEA;EACE,6BAAA;ACqEF;;ADnEA;EACE,6BAAA;ACsEF;;ADpEA;EACE,6BAAA;ACuEF;;ADrEA;EACE,6BAAA;ACwEF;;ADtEA;EACE,6BAAA;ACyEF;;ADvEA;EACE,6BAAA;AC0EF;;ADxEA;EACE,6BAAA;AC2EF;;ADzEA;EACE,6BAAA;AC4EF;;AD1EA;EACE,6BAAA;AC6EF;;AD3EA;EACE,6BAAA;AC8EF;;AD5EA;EACE,6BAAA;AC+EF;;AD7EA;EACE,6BAAA;ACgFF;;AD5EA;EACE,kBAAA;AC+EF;;AD7EA;EACE,kBAAA;ACgFF;;AD9EA;EACE,kBAAA;ACiFF;;AD/EA;EACE,kBAAA;ACkFF;;ADhFA;EACE,kBAAA;ACmFF;;ADjFA;EACE,mBAAA;ACoFF;;ADlFA;EACE,mBAAA;ACqFF;;ADnFA;EACE,mBAAA;ACsFF;;ADpFA;EACE,mBAAA;ACuFF;;ADrFA;EACE,mBAAA;ACwFF;;ADtFA;EACE,mBAAA;ACyFF;;ADvFA;EACE,mBAAA;AC0FF;;ADxFA;EACE,mBAAA;AC2FF;;ADzFA;EACE,mBAAA;AC4FF;;AD1FA;EACE,mBAAA;AC6FF;;AD3FA;EACE,mBAAA;AC8FF;;AD5FA;EACE,mBAAA;AC+FF;;AD7FA;EACE,mBAAA;ACgGF;;AD9FA;EACE,mBAAA;ACiGF;;AD/FA;EACE,mBAAA;ACkGF;;ADhGA;EACE,mBAAA;ACmGF;;ADjGA;EACE,mBAAA;ACoGF;;ADlGA;EACE,mBAAA;ACqGF;;ADnGA;EACE,mBAAA;ACsGF;;ADpGA;EACE,mBAAA;ACuGF;;ADrGA;EACE,mBAAA;ACwGF;;ADtGA;EACE,mBAAA;ACyGF;;ADvGA;EACE,mBAAA;AC0GF;;ADxGA;EACE,mBAAA;AC2GF;;ADzGA;EACE,mBAAA;AC4GF;;AD1GA;EACE,mBAAA;AC6GF;;AD3GA;EACE,mBAAA;AC8GF;;AD1GA;EACE,iBAAA;AC6GF;;AD3GA;EACE,iBAAA;AC8GF;;AD5GA;EACE,iBAAA;AC+GF;;AD7GA;EACE,iBAAA;ACgHF;;AD9GA;EACE,iBAAA;ACiHF;;AD/GA;EACE,kBAAA;ACkHF;;ADhHA;EACE,kBAAA;ACmHF;;ADjHA;EACE,kBAAA;ACoHF;;ADlHA;EACE,kBAAA;ACqHF;;ADnHA;EACE,kBAAA;ACsHF;;ADpHA;EACE,kBAAA;ACuHF;;ADrHA;EACE,kBAAA;ACwHF;;ADtHA;EACE,kBAAA;ACyHF;;ADvHA;EACE,kBAAA;AC0HF;;ADxHA;EACE,kBAAA;AC2HF;;ADzHA;EACE,kBAAA;AC4HF;;AD1HA;EACE,kBAAA;AC6HF;;AD3HA;EACE,kBAAA;AC8HF;;AD5HA;EACE,kBAAA;AC+HF;;AD7HA;EACE,kBAAA;ACgIF;;AD9HA;EACE,kBAAA;ACiIF;;AD/HA;EACE,kBAAA;ACkIF;;ADhIA;EACE,kBAAA;ACmIF;;ADjIA;EACE,kBAAA;ACoIF;;ADlIA;EACE,kBAAA;ACqIF;;ADnIA;EACE,kBAAA;ACsIF;;ADpIA;EACE,kBAAA;ACuIF;;ADrIA;EACE,kBAAA;ACwIF;;ADtIA;EACE,kBAAA;ACyIF;;ADvIA;EACE,kBAAA;AC0IF;;ADxIA;EACE,kBAAA;AC2IF;;ADzIA;EACE,kBAAA;AC4IF;;ADxIA;EACE,UAAA;AC2IF;;ADzIA;EACE,UAAA;AC4IF;;AD1IA;EACE,UAAA;AC6IF;;AD3IA;EACE,UAAA;AC8IF;;AD5IA;EACE,UAAA;AC+IF;;AD7IA;EACE,WAAA;ACgJF;;AD9IA;EACE,WAAA;ACiJF;;AD/IA;EACE,WAAA;ACkJF;;ADhJA;EACE,WAAA;ACmJF;;ADjJA;EACE,WAAA;ACoJF;;ADlJA;EACE,WAAA;ACqJF;;ADnJA;EACE,WAAA;ACsJF;;ADpJA;EACE,WAAA;ACuJF;;ADrJA;EACE,WAAA;ACwJF;;ADtJA;EACE,WAAA;ACyJF;;ADvJA;EACE,WAAA;AC0JF;;ADxJA;EACE,WAAA;AC2JF;;ADzJA;EACE,WAAA;AC4JF;;AD1JA;EACE,WAAA;AC6JF;;AD3JA;EACE,WAAA;AC8JF;;AD5JA;EACE,WAAA;AC+JF;;AD7JA;EACE,WAAA;ACgKF;;AD9JA;EACE,WAAA;ACiKF;;AD/JA;EACE,WAAA;ACkKF;;ADhKA;EACE,WAAA;ACmKF;;ADhKA,mBAAA;AACA;EACE,aAAA;ACmKF;;ADjKA;EACE,iGAAA;ACoKF;;ADlKA;EACE,iGAAA;ACqKF;;ADnKA;EACE,iCAAA;ACsKF;;ADpKA;EACE,mBAAA;EACA,sBAAA;ACuKF;;ADpKA,yBAAA;AACA;EACE,mBAAA;EACA,kBAAA;EACA,6BAAA;ACuKF;ADrKE;EACE,eAAA;ACuKJ;ADrKI;EACE,WAAA;ACuKN;ADrKI;EACE,kBAAA;EACA,mBAAA;ACuKN;ADnKE;EACE,mBAAA;ACqKJ;;ADjKA;EAEI;IACE,6BAAA;IACA,8BAAA;ECmKJ;AACF;AD/JA;EACE;IACE,UAAA;ECiKF;ED/JE;IACE,WAAA;IACA,YAAA;ECiKJ;ED/JE;IACE,kBAAA;IACA,mBAAA;ECiKJ;ED7JI;IACE,cAAA;IACA,OAAA;EC+JN;AACF;AD3JA;EAEI;IACE,iBAAA;IACA,iBAAA;IACA,kBAAA;EC4JJ;AACF;ADzJA,6BAAA;AAEA,wBAAA;AAEE;EACE,qCAAA;EACA,WAAA;ACyJJ;;ADtJA,4BAAA;AAEA,eAAA;AACA;EACE,2BAAA;EACA,qBAAA;ACwJF;;ADtJA;EACE,cAAA;ACyJF;;ADtJA,yBAAA;AAEE;EACE,0BAAA;EACA,eAAA;ACwJJ;;ADpJE;EACE,gCAAA;ACuJJ;ADrJI;EACE,cAAA;EACA,gBAAA;EACA,eAAA;EACA,eAAA;EACA,gBAAA;EACA,kBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,oCAAA;ACuJN;ADrJM;EACE,eAAA;ACuJR;ADpJM;EACE,6BAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,4CAAA;EACA,cAAA;ACsJR;ADnJM;EACE,uBAAA;ACqJR;ADjJE;EACE,gBAAA;ACmJJ;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;ADhJI;EACE,eAAA;EACA,aAAA;EACA,mBAAA;ACkJN;AD/IM;EACE,gBAAA;ACiJR;AD7IM;EACE,mBAAA;AC+IR;AD9IQ;EACE,gBAAA;ACgJV;AD1II;EACE,mBAAA;EACA,kBAAA;EACA,kBAAA;EACA,aAAA;EACA,mBAAA;AC4IN;AD1IM;EACE,cAAA;EACA,mBAAA;EACA,eAAA;AC4IR;AD3IQ;EACE,iBAAA;AC6IV;AD5IU;EACE,eAAA;AC8IZ;AD1IM;EACE,aAAA;EACA,mBAAA;AC4IR;AD3IQ;EACE,gBAAA;AC6IV;AD1IM;EACE,kBAAA;EACA,aAAA;EACA,UAAA;AC4IR;ADzII;EACE,aAAA;EACA,mBAAA;EACA,iBAAA;AC2IN;AD1IM;EACE,mBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;AC4IR;AD1IM;EACE,SAAA;EACA,gBAAA;EACA,eAAA;AC4IR;;ADtIA,kBAAA;AAEE;EACI,2CAAA;ACwIN;ADtIM;EACE,0BAAA;ACwIR;;AD7HM;EACE,eAAA;EACA,iBAAA;ACgIR;AD9HQ;EACE,cAAA;ACgIV;ADxHU;EACE,eAAA;EACA,gBAAA;AC0HZ;ADxHY;EACE,cAAA;AC0Hd;ADtHQ;EACE,UAAA;EACA,WAAA;ACwHV;ADrHM;EACE,iBAAA;EACA,kBAAA;ACuHR;ADtHQ;EACE,eAAA;EACA,iBAAA;ACwHV;;ADhHA,sBAAA;AAEE;EACE,0BAAA;ACkHJ;ADjHI;EACE,eAAA;ACmHN;ADhHE;EACE,QAAA;ACkHJ;ADhHE;EACE,OAAA;ACkHJ;;AD7GI;EACE,WAAA;EACA,OAAA;ACgHN;AD9GI;EACE,UAAA;EACA,QAAA;ACgHN;;AD3GE;EACE,kBAAA;AC8GJ;AD7GI;EACE,WAAA;EACA,YAAA;AC+GN;AD9GM;EACE,qCAAA;ACgHR;;AD1GA,6BAAA;AAEE;EACE,qCAAA;AC4GJ;;ADtGE;EACE,0BAAA;ACyGJ;;ADrGA,uBAAA;AACA;EACE,UAAA;ACwGF;;ADtGA,2BAAA;AAIE;EACE,aAAA;ACsGJ;;ADhGE;EACE,eAAA;EACA,eAAA;EACA,YAAA;EACA,WAAA;EACA,sBAAA;EACA,qCAAA;EACA,WAAA;EACA,kBAAA;EACA,YAAA;EACA,iBAAA;EACA,kBAAA;EACA,eAAA;EACA,6BAAA;EACA,2CAAA;EACA,aAAA;ACmGJ;ADjGI;EACE,6BAAA;EACA,2EAAA;EAEA,2BAAA;ACkGN;;AD5FA;EACE,eAAA;EACA,YAAA;EACA,MAAA;EACA,eAAA;EACA,YAAA;EACA,WAAA;EACA,oCAAA;EACA,6BAAA;AC+FF;AD7FE;EACE,QAAA;AC+FJ;AD5FE;EACE,eAAA;EACA,YAAA;EACA,WAAA;EACA,oCAAA;EACA,WAAA;EACA,aAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;EACA,6BAAA;EACA,oCAAA;AC8FJ;AD5FI;EACE,yBAAA;AC8FN;;AD1FA;EACE;IACE,uBAAA;EC6FF;ED3FA;IACE,yBAAA;EC6FF;AACF;AD3FA;EACE,YAAA;EACA,gBAAA;EACA,YAAA;EACA,iBAAA;EACA,eAAA;EACA,kBAAA;AC6FF;AD3FE;EACE,gBAAA;EACA,YAAA;EACA,qBAAA;AC6FJ;AD1FE;EACE,kBAAA;EACA,SAAA;EACA,OAAA;EACA,yBAAA;EACA,kBAAA;EACA,WAAA;AC4FJ;;ADvFE;EACE,6BAAA;AC0FJ;;ADtFA;EACE,gBAAA;EACA,kBAAA;EACA,mBAAA;EACA,kBAAA;ACyFF;;ADtFA;EACE,eAAA;EACA,kBAAA;EACA,QAAA;EACA,gBAAA;ACyFF","file":"globals.css"} \ No newline at end of file diff --git a/styles/globals.scss b/styles/globals.scss new file mode 100644 index 0000000..4363c0f --- /dev/null +++ b/styles/globals.scss @@ -0,0 +1,1092 @@ +// Globals variables +:root { + --bodyFontFamily: 'Roboto', sans-serif !important; + --bodyTextColor: #5B5B98; + --primaryColor: #757FEF; + --secondaryColor: #818093; + --successColor: #00B69B; + --infoColor: #2DB6F5; + --warningColor: #FFBC2B; + --dangerColor: #EE368C; + --darkColor: #260944; + --headingColor: #260944; + --whiteColor: #ffffff; + --fontSize: 15px; + --transition: all ease .5s; + --box-shadow: 0 0 20px 3px rgba(0, 0, 0, 0.05); +} + +html, body { + background-color: #F5F5F5 !important; + font-family: var(--bodyFontFamily) !important; +} +h1, h2, h3, h4, h5, h6 { + color: var(--headingColor); +} +div, label, a, p, tspan, span, li, table, tbody, tfoot, thead, th, td, canvas, button, input, ::placeholder, abbr, address, blockquote, caption, cite, code, dd, dl, mark, option, pre, select, time, del { + font-family: var(--bodyFontFamily) !important; +} +img { + max-width: 100%; +} +.text-decoration-none { + text-decoration: none; +} +.borRadius100 { + border-radius: 100%; +} +.borderRadius10 { + border-radius: 10px; +} + +/* Color */ +.primaryColor { + color: var(--primaryColor) !important; +} +.secondaryColor { + color: var(--secondaryColor) !important; +} +.successColor { + color: var(--successColor) !important; +} +.infoColor { + color: var(--infoColor) !important; +} +.warningColor { + color: var(--warningColor) !important; +} +.dangerColor { + color: var(--dangerColor) !important; +} +.darkColor { + color: var(--darkColor) !important; +} + +/* BG Color */ +.primaryBgColor { + background-color: var(--primaryColor) !important; +} +.secondaryBgColor { + background-color: var(--secondaryColor) !important; +} +.successBgColor { + background-color: var(--successColor) !important; +} +.infoBgColor { + background-color: var(--infoColor) !important; +} +.warningBgColor { + background-color: var(--warningColor) !important; +} +.dangerBgColor { + background-color: var(--dangerColor) !important; +} +.darkBgColor { + background-color: var(--darkColor) !important; +} + +/* Badge custom style */ +.primaryBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--primaryColor) !important; + padding: 5px 13px; + display: inline-block; +} +.secondaryBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--secondaryColor) !important; + padding: 5px 13px; + display: inline-block; +} +.successBadge { + background: rgba(0, 182, 155, 0.1); + border-radius: 4px; + color: var(--successColor) !important; + padding: 5px 13px; + display: inline-block; +} +.infoBadge { + background: rgba(117, 127, 239, 0.1); + border-radius: 4px; + color: var(--infoColor) !important; + padding: 5px 13px; + display: inline-block; +} +.dangerBadge { + background: rgba(238, 54, 140, 0.1); + border-radius: 4px; + color: var(--dangerColor) !important; + padding: 5px 13px; + display: inline-block; +} + +// Float +.float-left { + float: left; +} +.float-right { + float: right; +} + +// Margin Left +.ml-auto { + margin-left: auto !important; +} +.ml-1 { + margin-left: 8px !important; +} +.ml-2 { + margin-left: 16px !important; +} +.ml-3 { + margin-left: 24px !important; +} +.ml-4 { + margin-left: 32px !important; +} +.ml-5 { + margin-left: 40px !important; +} + +// Margin Right +.mr-1 { + margin-right: 8px !important; +} +.mr-2 { + margin-right: 16px !important; +} +.mr-3 { + margin-right: 24px !important; +} +.mr-4 { + margin-right: 32px !important; +} +.mr-5 { + margin-right: 40px !important; +} + +// Margin Left +.ml-2px { + margin-left: 2px !important; +} +.ml-3px { + margin-left: 3px !important; +} +.ml-5px { + margin-left: 5px !important; +} +.ml-6px { + margin-left: 6px !important; +} +.ml-7px { + margin-left: 7px !important; +} +.ml-8px { + margin-left: 8px !important; +} +.ml-9px { + margin-left: 9px !important; +} +.ml-10px { + margin-left: 10px !important; +} +.ml-11px { + margin-left: 11px !important; +} +.ml-12px { + margin-left: 12px !important; +} +.ml-13px { + margin-left: 13px !important; +} +.ml-14px { + margin-left: 14px !important; +} +.ml-15px { + margin-left: 15px !important; +} +.ml-16px { + margin-left: 16px !important; +} +.ml-17px { + margin-left: 17px !important; +} +.ml-18px { + margin-left: 18px !important; +} +.ml-19px { + margin-left: 19px !important; +} +.ml-20px { + margin-left: 20px !important; +} +.ml-21px { + margin-left: 21px !important; +} +.ml-22px { + margin-left: 22px !important; +} +.ml-23px { + margin-left: 23px !important; +} +.ml-24px { + margin-left: 24px !important; +} +.ml-25px { + margin-left: 25px !important; +} +.ml-26px { + margin-left: 26px !important; +} +.ml-27px { + margin-left: 27px !important; +} +.ml-28px { + margin-left: 28px !important; +} +.ml-29px { + margin-left: 29px !important; +} +.ml-30px { + margin-left: 30px !important; +} + +// Margin Right +.mr-2px { + margin-right: 2px !important; +} +.mr-5px { + margin-right: 5px !important; +} +.mr-6px { + margin-right: 6px !important; +} +.mr-7px { + margin-right: 7px !important; +} +.ml-8px { + margin-right: 8px !important; +} +.mr-9px { + margin-right: 9px !important; +} +.mr-10px { + margin-right: 10px !important; +} +.mr-11px { + margin-right: 11px !important; +} +.mr-12px { + margin-right: 12px !important; +} +.mr-13px { + margin-right: 13px !important; +} +.mr-14px { + margin-right: 14px !important; +} +.mr-15px { + margin-right: 15px !important; +} +.mr-16px { + margin-right: 16px !important; +} +.mr-17px { + margin-right: 17px !important; +} +.mr-18px { + margin-right: 18px !important; +} +.mr-19px { + margin-right: 19px !important; +} +.mr-20px { + margin-right: 20px !important; +} +.mr-21px { + margin-right: 21px !important; +} +.mr-22px { + margin-right: 22px !important; +} +.mr-23px { + margin-right: 23px !important; +} +.mr-24px { + margin-right: 24px !important; +} +.mr-25px { + margin-right: 25px !important; +} +.mr-26px { + margin-right: 26px !important; +} +.mr-27px { + margin-right: 27px !important; +} +.mr-28px { + margin-right: 28px !important; +} +.mr-29px { + margin-right: 29px !important; +} +.mr-30px { + margin-right: 30px !important; +} + +// Padding Right +.pr-5px { + padding-right: 5px; +} +.pr-6px { + padding-right: 6px; +} +.pr-7px { + padding-right: 7px; +} +.pr-8px { + padding-right: 8px; +} +.pr-9px { + padding-right: 9px; +} +.pr-10px { + padding-right: 10px; +} +.pr-11px { + padding-right: 11px; +} +.pr-12px { + padding-right: 12px; +} +.pr-13px { + padding-right: 13px; +} +.pr-14px { + padding-right: 14px; +} +.pr-15px { + padding-right: 15px; +} +.pr-16px { + padding-right: 16px; +} +.pr-17px { + padding-right: 17px; +} +.pr-18px { + padding-right: 18px; +} +.pr-19px { + padding-right: 19px; +} +.pr-20px { + padding-right: 20px; +} +.pr-21px { + padding-right: 21px; +} +.pr-22px { + padding-right: 22px; +} +.pr-23px { + padding-right: 23px; +} +.pr-24px { + padding-right: 24px; +} +.pr-25px { + padding-right: 25px; +} +.pr-26px { + padding-right: 26px; +} +.pr-27px { + padding-right: 27px; +} +.pr-28px { + padding-right: 28px; +} +.pr-29px { + padding-right: 29px; +} +.pr-30px { + padding-right: 30px; +} +.pr-35px { + padding-right: 35px; +} +.pr-40px { + padding-right: 40px; +} +.pr-45px { + padding-right: 45px; +} +.pr-50px { + padding-right: 50px; +} +.pr-55px { + padding-right: 55px; +} +.pr-60px { + padding-right: 60px; +} + +// Padding Left +.pl-5px { + padding-left: 5px; +} +.pl-6px { + padding-left: 6px; +} +.pl-7px { + padding-left: 7px; +} +.pl-8px { + padding-left: 8px; +} +.pl-9px { + padding-left: 9px; +} +.pl-10px { + padding-left: 10px; +} +.pl-11px { + padding-left: 11px; +} +.pl-12px { + padding-left: 12px; +} +.pl-13px { + padding-left: 13px; +} +.pl-14px { + padding-left: 14px; +} +.pl-15px { + padding-left: 15px; +} +.pl-16px { + padding-left: 16px; +} +.pl-17px { + padding-left: 17px; +} +.pl-18px { + padding-left: 18px; +} +.pl-19px { + padding-left: 19px; +} +.pl-20px { + padding-left: 20px; +} +.pl-21px { + padding-left: 21px; +} +.pl-22px { + padding-left: 22px; +} +.pl-23px { + padding-left: 23px; +} +.pl-24px { + padding-left: 24px; +} +.pl-25px { + padding-left: 25px; +} +.pl-26px { + padding-left: 26px; +} +.pl-27px { + padding-left: 27px; +} +.pl-28px { + padding-left: 28px; +} +.pl-29px { + padding-left: 29px; +} +.pl-30px { + padding-left: 30px; +} +.pl-35px { + padding-left: 35px; +} +.pl-40px { + padding-left: 40px; +} +.pl-45px { + padding-left: 45px; +} +.pl-50px { + padding-left: 50px; +} +.pl-55px { + padding-left: 55px; +} +.pl-60px { + padding-left: 60px; +} + +// Right +.right-5px { + right: 5px; +} +.right-6px { + right: 6px; +} +.right-7px { + right: 7px; +} +.right-8px { + right: 8px; +} +.right-9px { + right: 9px; +} +.right-10px { + right: 10px; +} +.right-11px { + right: 11px; +} +.right-12px { + right: 12px; +} +.right-13px { + right: 13px; +} +.right-14px { + right: 14px; +} +.right-15px { + right: 15px; +} +.right-16px { + right: 16px; +} +.right-17px { + right: 17px; +} +.right-18px { + right: 18px; +} +.right-19px { + right: 19px; +} +.right-20px { + right: 20px; +} +.right-21px { + right: 21px; +} +.right-22px { + right: 22px; +} +.right-23px { + right: 23px; +} +.right-24px { + right: 24px; +} +.right-25px { + right: 25px; +} +.right-26px { + right: 27px; +} +.right-28px { + right: 28px; +} +.right-29px { + right: 29px; +} +.right-30px { + right: 30px; +} + +/* LeftSidebarNav */ +.white-logo { + display: none; +} +.sidebarLinkActive { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} +.sidebarLinkActive2 { + background: linear-gradient(90deg, rgba(172, 169, 255, 0.6) 0%, rgba(172, 169, 255, 0.37) 91.25%); +} +.sidebarLinkActive2::before { + background-color: #fff !important; +} +.sidebarLinkActive2 { + background: #757FEF; + color: #fff !important; +} + +/* Main wrapper content */ +.main-wrapper-content { + padding-left: 330px; + position: relative; + transition: all 0.5s ease-out; + + &.active { + padding-left: 0; + + .LeftSidebarNav { + left: -100%; + } + .main-content { + padding-left: 30px; + padding-right: 30px; + } + } + + .main-content { + padding-right: 30px; + } +} + +@media only screen and (max-width: 767px) { + .main-wrapper-content { + .main-content { + padding-left: 15px !important; + padding-right: 15px !important; + } + } +} + +@media only screen and (max-width: 1199px) { + .main-wrapper-content { + padding: 0; + + .LeftSidebarNav { + left: -100%; + width: 280px; + } + .main-content { + padding-left: 30px; + padding-right: 30px; + } + + &.active { + .LeftSidebarNav { + z-index: 99999; + left: 0; + } + } + } +} +@media only screen and (min-width: 2200px) { + .main-wrapper-content { + .main-content { + max-width: 2200px; + margin-left: auto; + margin-right: auto; + } + } +} +/* End Main wrapper content */ + +/* React Tabs Tab List */ +.react-tabs__tab-list { + .react-tabs__tab--selected { + background-color: var(--primaryColor); + color: #fff; + } +} +/* End React Tabs Tab List */ + +/* Read Email */ +.readEmail { + color: var(--bodyTextColor); + text-decoration: none; +} +.readEmail:hover { + color: #260944; +} + +/* Product Details Tabs */ +.product-img-slider { + .swiper-button-next:after, .swiper-button-prev:after { + color: var(--primaryColor); + font-size: 25px; + } +} +.product-details-tabs { + .react-tabs__tab-list { + border-bottom: 1px solid #dfdfdf; + + .react-tabs__tab { + color: #A9A9C8; + font-weight: 500; + font-size: 15px; + padding-left: 0; + padding-right: 0; + margin-right: 30px; + border-top: none; + border-right: none; + border-left: none; + border-bottom: 2px solid transparent; + + &:last-child { + margin-right: 0; + } + + &:hover, &.react-tabs__tab--selected { + background-color: transparent; + border-top: none; + border-right: none; + border-left: none; + border-bottom: 2px solid var(--primaryColor); + color: #260944; + } + + &:focus:after { + background: transparent; + } + } + } + .react-tabs__tab-panel { + margin-top: 20px; + } + .product-description { + h1 { + font-size: 22px; + margin-top: 0; + margin-bottom: 10px; + } + h2 { + font-size: 20px; + margin-top: 0; + margin-bottom: 10px; + } + h3 { + font-size: 18px; + margin-top: 0; + margin-bottom: 10px; + } + h4 { + font-size: 16px; + margin-top: 0; + margin-bottom: 10px; + } + h5 { + font-size: 15px; + margin-top: 0; + margin-bottom: 10px; + } + h6 { + font-size: 14px; + margin-top: 0; + margin-bottom: 10px; + } + p { + &:last-child { + margin-bottom: 0; + } + } + ul, ol { + li { + margin-bottom: 10px; + &:last-child { + margin-bottom: 0; + } + } + } + } + .review-card { + .content { + background: #F7FAFF; + border-radius: 8px; + position: relative; + padding: 25px; + margin-bottom: 30px; + + .reating { + color: #FFBC2B; + margin-bottom: 10px; + font-size: 15px; + i { + margin-right: 5px; + &:last-child { + margin-right: 0; + } + } + } + p { + margin-top: 0; + margin-bottom: 10px; + &:last-child { + margin-bottom: 0; + } + } + .down-arrow { + position: absolute; + bottom: -20px; + left: 25px; + } + } + .info { + display: flex; + align-items: center; + margin-left: 30px; + img { + border-radius: 100%; + width: 30px; + height: 30px; + margin-right: 10px; + } + h4 { + margin: 0; + font-weight: 500; + font-size: 14px; + } + } + } +} + +/* For dark mode */ +[class="dark"] .product-details-tabs { + .react-tabs__tab-list { + border-bottom: 1px solid var(--borderColor); + .react-tabs__tab { + &:hover, &.react-tabs__tab--selected { + color: var(--primaryColor); + } + } + } +} + + +// For RTL Style +[dir="rtl"] { + .product-details-tabs { + .react-tabs__tab-list { + .react-tabs__tab { + margin-right: 0; + margin-left: 30px; + + &:last-child { + margin-left: 0; + } + } + } + + .review-card { + .content { + .reating { + i { + margin-right: 0; + margin-left: 5px; + + &:last-child { + margin-left: 0; + } + } + } + .down-arrow { + left: auto; + right: 25px; + } + } + .info { + margin-left: auto; + margin-right: 30px; + img { + margin-right: 0; + margin-left: 10px; + } + } + } + } +} + + +/* Testimonial Style */ +.testimonialStyle1, .testimonialStyle2 { + .swiper-button-next, .swiper-button-prev { + color: var(--primaryColor); + &::after { + font-size: 25px; + } + } + .swiper-button-next { + right: 0; + } + .swiper-button-prev { + left: 0; + } +} +[dir="rtl"] { + .testimonialStyle1, .testimonialStyle2 { + .swiper-button-next { + right: auto; + left: 0; + } + .swiper-button-prev { + left: auto; + right: 0; + } + } +} +.testimonialStyle3 { + .swiper-pagination{ + position: relative; + .swiper-pagination-bullet { + width: 10px; + height: 10px; + &.swiper-pagination-bullet-active { + background-color: var(--primaryColor); + } + } + } +} + +/* Active File Manager Link */ +.activeFMLink { + > a { + color: var(--primaryColor) !important; + } +} + +// Calendar Title +.fc { + .fc-toolbar-title { + font-size: 20px !important; + } +} + +/* Authentication box */ +.main-wrapper-content:has(div.authenticationBox) { + padding: 0; +} +/* End Authentication box */ + +// apexcharts +.apexcharts-yaxis, .apexcharts-xaxis { + text { + fill: #A9A9C8; + } +} + +// Scroll To Top CSS +.scroll-to-top { + i { + position: fixed; + cursor: pointer; + bottom: 20px; + right: 20px; + color: #fff !important; + background-color: var(--primaryColor); + width: 40px; + text-align: center; + height: 40px; + line-height: 40px; + border-radius: 50%; + font-size: 20px; + transition: var(--transition); + box-shadow: 0px 3px 10px rgba(0, 0, 0, 0.1); + z-index: 1290; + + &:hover { + transition: var(--transition); + box-shadow: 0 4px 6px rgba(50, 50, 93, 0.11), + 0 1px 3px rgba(0, 0, 0, 0.08); + transform: translateY(-5px); + } + } +} + +// control-panel-modal +.control-panel-modal { + position: fixed; + right: -100%; + top: 0; + z-index: 999999; + height: 100%; + width: 100%; + background-color: rgba(0, 0, 0, .2); + transition: var(--transition); + + &.show { + right: 0; + } + + .settings-btn { + position: fixed; + bottom: 70px; + right: 15px; + background-color: var(--dangerColor); + color: #fff; + z-index: 1290; + width: 50px; + height: 50px; + text-align: center; + line-height: 50px; + border-radius: 100%; + font-size: 25px; + cursor: pointer; + transition: var(--transition); + animation: rotate 2s linear infinite; + + &:hover { + background-color: #d32979; + } + } +} +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.control-panel-dialog { + width: 320px; + background: #fff; + height: 100%; + margin-left: auto; + z-index: 999999; + position: relative; + + .control-panel-content { + overflow-y: auto; + height: 100%; + padding-bottom: 150px; + } + + .control-panel-footer { + position: absolute; + bottom: 0; + left: 0; + background-color: #F5F5F5; + padding: 16px 24px; + width: 100%; + } +} + +.ProgressBar { + span { + padding: 0 2px 0 0 !important; + } +} + +.igc-box { + background: #fff; + border-radius: 8px; + margin-bottom: 15px; + padding: 30px 20px; +} + +.progressIcon { + font-size: 20px; + position: absolute; + top: 0px; + margin-left: 3px; +} + \ No newline at end of file diff --git a/styles/remixicon.css b/styles/remixicon.css new file mode 100644 index 0000000..aac5ec7 --- /dev/null +++ b/styles/remixicon.css @@ -0,0 +1,2317 @@ +/* +* Remix Icon v2.5.0 +* https://remixicon.com +* https://github.com/Remix-Design/RemixIcon +* +* Copyright RemixIcon.com +* Released under the Apache License Version 2.0 +* +* Date: 2020-05-23 +*/ +@font-face { + font-family: "remixicon"; + src: url('/fonts/remixicon.eot?t=1590207869815'); /* IE9*/ + src: url('/fonts/remixicon.eot?t=1590207869815#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url("/fonts/remixicon.woff2?t=1590207869815") format("woff2"), + url("/fonts/remixicon.woff?t=1590207869815") format("woff"), + url('/fonts/remixicon.ttf?t=1590207869815') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('/fonts/remixicon.svg?t=1590207869815#remixicon') format('svg'); /* iOS 4.1- */ + font-display: swap; +} + +[class^="ri-"], [class*=" ri-"] { + font-family: 'remixicon' !important; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.ri-lg { font-size: 1.3333em; line-height: 0.75em; vertical-align: -.0667em; } +.ri-xl { font-size: 1.5em; line-height: 0.6666em; vertical-align: -.075em; } +.ri-xxs { font-size: .5em; } +.ri-xs { font-size: .75em; } +.ri-sm { font-size: .875em } +.ri-1x { font-size: 1em; } +.ri-2x { font-size: 2em; } +.ri-3x { font-size: 3em; } +.ri-4x { font-size: 4em; } +.ri-5x { font-size: 5em; } +.ri-6x { font-size: 6em; } +.ri-7x { font-size: 7em; } +.ri-8x { font-size: 8em; } +.ri-9x { font-size: 9em; } +.ri-10x { font-size: 10em; } +.ri-fw { text-align: center; width: 1.25em; } + +.ri-24-hours-fill:before { content: "\ea01"; } +.ri-24-hours-line:before { content: "\ea02"; } +.ri-4k-fill:before { content: "\ea03"; } +.ri-4k-line:before { content: "\ea04"; } +.ri-a-b:before { content: "\ea05"; } +.ri-account-box-fill:before { content: "\ea06"; } +.ri-account-box-line:before { content: "\ea07"; } +.ri-account-circle-fill:before { content: "\ea08"; } +.ri-account-circle-line:before { content: "\ea09"; } +.ri-account-pin-box-fill:before { content: "\ea0a"; } +.ri-account-pin-box-line:before { content: "\ea0b"; } +.ri-account-pin-circle-fill:before { content: "\ea0c"; } +.ri-account-pin-circle-line:before { content: "\ea0d"; } +.ri-add-box-fill:before { content: "\ea0e"; } +.ri-add-box-line:before { content: "\ea0f"; } +.ri-add-circle-fill:before { content: "\ea10"; } +.ri-add-circle-line:before { content: "\ea11"; } +.ri-add-fill:before { content: "\ea12"; } +.ri-add-line:before { content: "\ea13"; } +.ri-admin-fill:before { content: "\ea14"; } +.ri-admin-line:before { content: "\ea15"; } +.ri-advertisement-fill:before { content: "\ea16"; } +.ri-advertisement-line:before { content: "\ea17"; } +.ri-airplay-fill:before { content: "\ea18"; } +.ri-airplay-line:before { content: "\ea19"; } +.ri-alarm-fill:before { content: "\ea1a"; } +.ri-alarm-line:before { content: "\ea1b"; } +.ri-alarm-warning-fill:before { content: "\ea1c"; } +.ri-alarm-warning-line:before { content: "\ea1d"; } +.ri-album-fill:before { content: "\ea1e"; } +.ri-album-line:before { content: "\ea1f"; } +.ri-alert-fill:before { content: "\ea20"; } +.ri-alert-line:before { content: "\ea21"; } +.ri-aliens-fill:before { content: "\ea22"; } +.ri-aliens-line:before { content: "\ea23"; } +.ri-align-bottom:before { content: "\ea24"; } +.ri-align-center:before { content: "\ea25"; } +.ri-align-justify:before { content: "\ea26"; } +.ri-align-left:before { content: "\ea27"; } +.ri-align-right:before { content: "\ea28"; } +.ri-align-top:before { content: "\ea29"; } +.ri-align-vertically:before { content: "\ea2a"; } +.ri-alipay-fill:before { content: "\ea2b"; } +.ri-alipay-line:before { content: "\ea2c"; } +.ri-amazon-fill:before { content: "\ea2d"; } +.ri-amazon-line:before { content: "\ea2e"; } +.ri-anchor-fill:before { content: "\ea2f"; } +.ri-anchor-line:before { content: "\ea30"; } +.ri-ancient-gate-fill:before { content: "\ea31"; } +.ri-ancient-gate-line:before { content: "\ea32"; } +.ri-ancient-pavilion-fill:before { content: "\ea33"; } +.ri-ancient-pavilion-line:before { content: "\ea34"; } +.ri-android-fill:before { content: "\ea35"; } +.ri-android-line:before { content: "\ea36"; } +.ri-angularjs-fill:before { content: "\ea37"; } +.ri-angularjs-line:before { content: "\ea38"; } +.ri-anticlockwise-2-fill:before { content: "\ea39"; } +.ri-anticlockwise-2-line:before { content: "\ea3a"; } +.ri-anticlockwise-fill:before { content: "\ea3b"; } +.ri-anticlockwise-line:before { content: "\ea3c"; } +.ri-app-store-fill:before { content: "\ea3d"; } +.ri-app-store-line:before { content: "\ea3e"; } +.ri-apple-fill:before { content: "\ea3f"; } +.ri-apple-line:before { content: "\ea40"; } +.ri-apps-2-fill:before { content: "\ea41"; } +.ri-apps-2-line:before { content: "\ea42"; } +.ri-apps-fill:before { content: "\ea43"; } +.ri-apps-line:before { content: "\ea44"; } +.ri-archive-drawer-fill:before { content: "\ea45"; } +.ri-archive-drawer-line:before { content: "\ea46"; } +.ri-archive-fill:before { content: "\ea47"; } +.ri-archive-line:before { content: "\ea48"; } +.ri-arrow-down-circle-fill:before { content: "\ea49"; } +.ri-arrow-down-circle-line:before { content: "\ea4a"; } +.ri-arrow-down-fill:before { content: "\ea4b"; } +.ri-arrow-down-line:before { content: "\ea4c"; } +.ri-arrow-down-s-fill:before { content: "\ea4d"; } +.ri-arrow-down-s-line:before { content: "\ea4e"; } +.ri-arrow-drop-down-fill:before { content: "\ea4f"; } +.ri-arrow-drop-down-line:before { content: "\ea50"; } +.ri-arrow-drop-left-fill:before { content: "\ea51"; } +.ri-arrow-drop-left-line:before { content: "\ea52"; } +.ri-arrow-drop-right-fill:before { content: "\ea53"; } +.ri-arrow-drop-right-line:before { content: "\ea54"; } +.ri-arrow-drop-up-fill:before { content: "\ea55"; } +.ri-arrow-drop-up-line:before { content: "\ea56"; } +.ri-arrow-go-back-fill:before { content: "\ea57"; } +.ri-arrow-go-back-line:before { content: "\ea58"; } +.ri-arrow-go-forward-fill:before { content: "\ea59"; } +.ri-arrow-go-forward-line:before { content: "\ea5a"; } +.ri-arrow-left-circle-fill:before { content: "\ea5b"; } +.ri-arrow-left-circle-line:before { content: "\ea5c"; } +.ri-arrow-left-down-fill:before { content: "\ea5d"; } +.ri-arrow-left-down-line:before { content: "\ea5e"; } +.ri-arrow-left-fill:before { content: "\ea5f"; } +.ri-arrow-left-line:before { content: "\ea60"; } +.ri-arrow-left-right-fill:before { content: "\ea61"; } +.ri-arrow-left-right-line:before { content: "\ea62"; } +.ri-arrow-left-s-fill:before { content: "\ea63"; } +.ri-arrow-left-s-line:before { content: "\ea64"; } +.ri-arrow-left-up-fill:before { content: "\ea65"; } +.ri-arrow-left-up-line:before { content: "\ea66"; } +.ri-arrow-right-circle-fill:before { content: "\ea67"; } +.ri-arrow-right-circle-line:before { content: "\ea68"; } +.ri-arrow-right-down-fill:before { content: "\ea69"; } +.ri-arrow-right-down-line:before { content: "\ea6a"; } +.ri-arrow-right-fill:before { content: "\ea6b"; } +.ri-arrow-right-line:before { content: "\ea6c"; } +.ri-arrow-right-s-fill:before { content: "\ea6d"; } +.ri-arrow-right-s-line:before { content: "\ea6e"; } +.ri-arrow-right-up-fill:before { content: "\ea6f"; } +.ri-arrow-right-up-line:before { content: "\ea70"; } +.ri-arrow-up-circle-fill:before { content: "\ea71"; } +.ri-arrow-up-circle-line:before { content: "\ea72"; } +.ri-arrow-up-down-fill:before { content: "\ea73"; } +.ri-arrow-up-down-line:before { content: "\ea74"; } +.ri-arrow-up-fill:before { content: "\ea75"; } +.ri-arrow-up-line:before { content: "\ea76"; } +.ri-arrow-up-s-fill:before { content: "\ea77"; } +.ri-arrow-up-s-line:before { content: "\ea78"; } +.ri-artboard-2-fill:before { content: "\ea79"; } +.ri-artboard-2-line:before { content: "\ea7a"; } +.ri-artboard-fill:before { content: "\ea7b"; } +.ri-artboard-line:before { content: "\ea7c"; } +.ri-article-fill:before { content: "\ea7d"; } +.ri-article-line:before { content: "\ea7e"; } +.ri-aspect-ratio-fill:before { content: "\ea7f"; } +.ri-aspect-ratio-line:before { content: "\ea80"; } +.ri-asterisk:before { content: "\ea81"; } +.ri-at-fill:before { content: "\ea82"; } +.ri-at-line:before { content: "\ea83"; } +.ri-attachment-2:before { content: "\ea84"; } +.ri-attachment-fill:before { content: "\ea85"; } +.ri-attachment-line:before { content: "\ea86"; } +.ri-auction-fill:before { content: "\ea87"; } +.ri-auction-line:before { content: "\ea88"; } +.ri-award-fill:before { content: "\ea89"; } +.ri-award-line:before { content: "\ea8a"; } +.ri-baidu-fill:before { content: "\ea8b"; } +.ri-baidu-line:before { content: "\ea8c"; } +.ri-ball-pen-fill:before { content: "\ea8d"; } +.ri-ball-pen-line:before { content: "\ea8e"; } +.ri-bank-card-2-fill:before { content: "\ea8f"; } +.ri-bank-card-2-line:before { content: "\ea90"; } +.ri-bank-card-fill:before { content: "\ea91"; } +.ri-bank-card-line:before { content: "\ea92"; } +.ri-bank-fill:before { content: "\ea93"; } +.ri-bank-line:before { content: "\ea94"; } +.ri-bar-chart-2-fill:before { content: "\ea95"; } +.ri-bar-chart-2-line:before { content: "\ea96"; } +.ri-bar-chart-box-fill:before { content: "\ea97"; } +.ri-bar-chart-box-line:before { content: "\ea98"; } +.ri-bar-chart-fill:before { content: "\ea99"; } +.ri-bar-chart-grouped-fill:before { content: "\ea9a"; } +.ri-bar-chart-grouped-line:before { content: "\ea9b"; } +.ri-bar-chart-horizontal-fill:before { content: "\ea9c"; } +.ri-bar-chart-horizontal-line:before { content: "\ea9d"; } +.ri-bar-chart-line:before { content: "\ea9e"; } +.ri-barcode-box-fill:before { content: "\ea9f"; } +.ri-barcode-box-line:before { content: "\eaa0"; } +.ri-barcode-fill:before { content: "\eaa1"; } +.ri-barcode-line:before { content: "\eaa2"; } +.ri-barricade-fill:before { content: "\eaa3"; } +.ri-barricade-line:before { content: "\eaa4"; } +.ri-base-station-fill:before { content: "\eaa5"; } +.ri-base-station-line:before { content: "\eaa6"; } +.ri-basketball-fill:before { content: "\eaa7"; } +.ri-basketball-line:before { content: "\eaa8"; } +.ri-battery-2-charge-fill:before { content: "\eaa9"; } +.ri-battery-2-charge-line:before { content: "\eaaa"; } +.ri-battery-2-fill:before { content: "\eaab"; } +.ri-battery-2-line:before { content: "\eaac"; } +.ri-battery-charge-fill:before { content: "\eaad"; } +.ri-battery-charge-line:before { content: "\eaae"; } +.ri-battery-fill:before { content: "\eaaf"; } +.ri-battery-line:before { content: "\eab0"; } +.ri-battery-low-fill:before { content: "\eab1"; } +.ri-battery-low-line:before { content: "\eab2"; } +.ri-battery-saver-fill:before { content: "\eab3"; } +.ri-battery-saver-line:before { content: "\eab4"; } +.ri-battery-share-fill:before { content: "\eab5"; } +.ri-battery-share-line:before { content: "\eab6"; } +.ri-bear-smile-fill:before { content: "\eab7"; } +.ri-bear-smile-line:before { content: "\eab8"; } +.ri-behance-fill:before { content: "\eab9"; } +.ri-behance-line:before { content: "\eaba"; } +.ri-bell-fill:before { content: "\eabb"; } +.ri-bell-line:before { content: "\eabc"; } +.ri-bike-fill:before { content: "\eabd"; } +.ri-bike-line:before { content: "\eabe"; } +.ri-bilibili-fill:before { content: "\eabf"; } +.ri-bilibili-line:before { content: "\eac0"; } +.ri-bill-fill:before { content: "\eac1"; } +.ri-bill-line:before { content: "\eac2"; } +.ri-billiards-fill:before { content: "\eac3"; } +.ri-billiards-line:before { content: "\eac4"; } +.ri-bit-coin-fill:before { content: "\eac5"; } +.ri-bit-coin-line:before { content: "\eac6"; } +.ri-blaze-fill:before { content: "\eac7"; } +.ri-blaze-line:before { content: "\eac8"; } +.ri-bluetooth-connect-fill:before { content: "\eac9"; } +.ri-bluetooth-connect-line:before { content: "\eaca"; } +.ri-bluetooth-fill:before { content: "\eacb"; } +.ri-bluetooth-line:before { content: "\eacc"; } +.ri-blur-off-fill:before { content: "\eacd"; } +.ri-blur-off-line:before { content: "\eace"; } +.ri-body-scan-fill:before { content: "\eacf"; } +.ri-body-scan-line:before { content: "\ead0"; } +.ri-bold:before { content: "\ead1"; } +.ri-book-2-fill:before { content: "\ead2"; } +.ri-book-2-line:before { content: "\ead3"; } +.ri-book-3-fill:before { content: "\ead4"; } +.ri-book-3-line:before { content: "\ead5"; } +.ri-book-fill:before { content: "\ead6"; } +.ri-book-line:before { content: "\ead7"; } +.ri-book-mark-fill:before { content: "\ead8"; } +.ri-book-mark-line:before { content: "\ead9"; } +.ri-book-open-fill:before { content: "\eada"; } +.ri-book-open-line:before { content: "\eadb"; } +.ri-book-read-fill:before { content: "\eadc"; } +.ri-book-read-line:before { content: "\eadd"; } +.ri-booklet-fill:before { content: "\eade"; } +.ri-booklet-line:before { content: "\eadf"; } +.ri-bookmark-2-fill:before { content: "\eae0"; } +.ri-bookmark-2-line:before { content: "\eae1"; } +.ri-bookmark-3-fill:before { content: "\eae2"; } +.ri-bookmark-3-line:before { content: "\eae3"; } +.ri-bookmark-fill:before { content: "\eae4"; } +.ri-bookmark-line:before { content: "\eae5"; } +.ri-boxing-fill:before { content: "\eae6"; } +.ri-boxing-line:before { content: "\eae7"; } +.ri-braces-fill:before { content: "\eae8"; } +.ri-braces-line:before { content: "\eae9"; } +.ri-brackets-fill:before { content: "\eaea"; } +.ri-brackets-line:before { content: "\eaeb"; } +.ri-briefcase-2-fill:before { content: "\eaec"; } +.ri-briefcase-2-line:before { content: "\eaed"; } +.ri-briefcase-3-fill:before { content: "\eaee"; } +.ri-briefcase-3-line:before { content: "\eaef"; } +.ri-briefcase-4-fill:before { content: "\eaf0"; } +.ri-briefcase-4-line:before { content: "\eaf1"; } +.ri-briefcase-5-fill:before { content: "\eaf2"; } +.ri-briefcase-5-line:before { content: "\eaf3"; } +.ri-briefcase-fill:before { content: "\eaf4"; } +.ri-briefcase-line:before { content: "\eaf5"; } +.ri-bring-forward:before { content: "\eaf6"; } +.ri-bring-to-front:before { content: "\eaf7"; } +.ri-broadcast-fill:before { content: "\eaf8"; } +.ri-broadcast-line:before { content: "\eaf9"; } +.ri-brush-2-fill:before { content: "\eafa"; } +.ri-brush-2-line:before { content: "\eafb"; } +.ri-brush-3-fill:before { content: "\eafc"; } +.ri-brush-3-line:before { content: "\eafd"; } +.ri-brush-4-fill:before { content: "\eafe"; } +.ri-brush-4-line:before { content: "\eaff"; } +.ri-brush-fill:before { content: "\eb00"; } +.ri-brush-line:before { content: "\eb01"; } +.ri-bubble-chart-fill:before { content: "\eb02"; } +.ri-bubble-chart-line:before { content: "\eb03"; } +.ri-bug-2-fill:before { content: "\eb04"; } +.ri-bug-2-line:before { content: "\eb05"; } +.ri-bug-fill:before { content: "\eb06"; } +.ri-bug-line:before { content: "\eb07"; } +.ri-building-2-fill:before { content: "\eb08"; } +.ri-building-2-line:before { content: "\eb09"; } +.ri-building-3-fill:before { content: "\eb0a"; } +.ri-building-3-line:before { content: "\eb0b"; } +.ri-building-4-fill:before { content: "\eb0c"; } +.ri-building-4-line:before { content: "\eb0d"; } +.ri-building-fill:before { content: "\eb0e"; } +.ri-building-line:before { content: "\eb0f"; } +.ri-bus-2-fill:before { content: "\eb10"; } +.ri-bus-2-line:before { content: "\eb11"; } +.ri-bus-fill:before { content: "\eb12"; } +.ri-bus-line:before { content: "\eb13"; } +.ri-bus-wifi-fill:before { content: "\eb14"; } +.ri-bus-wifi-line:before { content: "\eb15"; } +.ri-cactus-fill:before { content: "\eb16"; } +.ri-cactus-line:before { content: "\eb17"; } +.ri-cake-2-fill:before { content: "\eb18"; } +.ri-cake-2-line:before { content: "\eb19"; } +.ri-cake-3-fill:before { content: "\eb1a"; } +.ri-cake-3-line:before { content: "\eb1b"; } +.ri-cake-fill:before { content: "\eb1c"; } +.ri-cake-line:before { content: "\eb1d"; } +.ri-calculator-fill:before { content: "\eb1e"; } +.ri-calculator-line:before { content: "\eb1f"; } +.ri-calendar-2-fill:before { content: "\eb20"; } +.ri-calendar-2-line:before { content: "\eb21"; } +.ri-calendar-check-fill:before { content: "\eb22"; } +.ri-calendar-check-line:before { content: "\eb23"; } +.ri-calendar-event-fill:before { content: "\eb24"; } +.ri-calendar-event-line:before { content: "\eb25"; } +.ri-calendar-fill:before { content: "\eb26"; } +.ri-calendar-line:before { content: "\eb27"; } +.ri-calendar-todo-fill:before { content: "\eb28"; } +.ri-calendar-todo-line:before { content: "\eb29"; } +.ri-camera-2-fill:before { content: "\eb2a"; } +.ri-camera-2-line:before { content: "\eb2b"; } +.ri-camera-3-fill:before { content: "\eb2c"; } +.ri-camera-3-line:before { content: "\eb2d"; } +.ri-camera-fill:before { content: "\eb2e"; } +.ri-camera-lens-fill:before { content: "\eb2f"; } +.ri-camera-lens-line:before { content: "\eb30"; } +.ri-camera-line:before { content: "\eb31"; } +.ri-camera-off-fill:before { content: "\eb32"; } +.ri-camera-off-line:before { content: "\eb33"; } +.ri-camera-switch-fill:before { content: "\eb34"; } +.ri-camera-switch-line:before { content: "\eb35"; } +.ri-capsule-fill:before { content: "\eb36"; } +.ri-capsule-line:before { content: "\eb37"; } +.ri-car-fill:before { content: "\eb38"; } +.ri-car-line:before { content: "\eb39"; } +.ri-car-washing-fill:before { content: "\eb3a"; } +.ri-car-washing-line:before { content: "\eb3b"; } +.ri-caravan-fill:before { content: "\eb3c"; } +.ri-caravan-line:before { content: "\eb3d"; } +.ri-cast-fill:before { content: "\eb3e"; } +.ri-cast-line:before { content: "\eb3f"; } +.ri-cellphone-fill:before { content: "\eb40"; } +.ri-cellphone-line:before { content: "\eb41"; } +.ri-celsius-fill:before { content: "\eb42"; } +.ri-celsius-line:before { content: "\eb43"; } +.ri-centos-fill:before { content: "\eb44"; } +.ri-centos-line:before { content: "\eb45"; } +.ri-character-recognition-fill:before { content: "\eb46"; } +.ri-character-recognition-line:before { content: "\eb47"; } +.ri-charging-pile-2-fill:before { content: "\eb48"; } +.ri-charging-pile-2-line:before { content: "\eb49"; } +.ri-charging-pile-fill:before { content: "\eb4a"; } +.ri-charging-pile-line:before { content: "\eb4b"; } +.ri-chat-1-fill:before { content: "\eb4c"; } +.ri-chat-1-line:before { content: "\eb4d"; } +.ri-chat-2-fill:before { content: "\eb4e"; } +.ri-chat-2-line:before { content: "\eb4f"; } +.ri-chat-3-fill:before { content: "\eb50"; } +.ri-chat-3-line:before { content: "\eb51"; } +.ri-chat-4-fill:before { content: "\eb52"; } +.ri-chat-4-line:before { content: "\eb53"; } +.ri-chat-check-fill:before { content: "\eb54"; } +.ri-chat-check-line:before { content: "\eb55"; } +.ri-chat-delete-fill:before { content: "\eb56"; } +.ri-chat-delete-line:before { content: "\eb57"; } +.ri-chat-download-fill:before { content: "\eb58"; } +.ri-chat-download-line:before { content: "\eb59"; } +.ri-chat-follow-up-fill:before { content: "\eb5a"; } +.ri-chat-follow-up-line:before { content: "\eb5b"; } +.ri-chat-forward-fill:before { content: "\eb5c"; } +.ri-chat-forward-line:before { content: "\eb5d"; } +.ri-chat-heart-fill:before { content: "\eb5e"; } +.ri-chat-heart-line:before { content: "\eb5f"; } +.ri-chat-history-fill:before { content: "\eb60"; } +.ri-chat-history-line:before { content: "\eb61"; } +.ri-chat-new-fill:before { content: "\eb62"; } +.ri-chat-new-line:before { content: "\eb63"; } +.ri-chat-off-fill:before { content: "\eb64"; } +.ri-chat-off-line:before { content: "\eb65"; } +.ri-chat-poll-fill:before { content: "\eb66"; } +.ri-chat-poll-line:before { content: "\eb67"; } +.ri-chat-private-fill:before { content: "\eb68"; } +.ri-chat-private-line:before { content: "\eb69"; } +.ri-chat-quote-fill:before { content: "\eb6a"; } +.ri-chat-quote-line:before { content: "\eb6b"; } +.ri-chat-settings-fill:before { content: "\eb6c"; } +.ri-chat-settings-line:before { content: "\eb6d"; } +.ri-chat-smile-2-fill:before { content: "\eb6e"; } +.ri-chat-smile-2-line:before { content: "\eb6f"; } +.ri-chat-smile-3-fill:before { content: "\eb70"; } +.ri-chat-smile-3-line:before { content: "\eb71"; } +.ri-chat-smile-fill:before { content: "\eb72"; } +.ri-chat-smile-line:before { content: "\eb73"; } +.ri-chat-upload-fill:before { content: "\eb74"; } +.ri-chat-upload-line:before { content: "\eb75"; } +.ri-chat-voice-fill:before { content: "\eb76"; } +.ri-chat-voice-line:before { content: "\eb77"; } +.ri-check-double-fill:before { content: "\eb78"; } +.ri-check-double-line:before { content: "\eb79"; } +.ri-check-fill:before { content: "\eb7a"; } +.ri-check-line:before { content: "\eb7b"; } +.ri-checkbox-blank-circle-fill:before { content: "\eb7c"; } +.ri-checkbox-blank-circle-line:before { content: "\eb7d"; } +.ri-checkbox-blank-fill:before { content: "\eb7e"; } +.ri-checkbox-blank-line:before { content: "\eb7f"; } +.ri-checkbox-circle-fill:before { content: "\eb80"; } +.ri-checkbox-circle-line:before { content: "\eb81"; } +.ri-checkbox-fill:before { content: "\eb82"; } +.ri-checkbox-indeterminate-fill:before { content: "\eb83"; } +.ri-checkbox-indeterminate-line:before { content: "\eb84"; } +.ri-checkbox-line:before { content: "\eb85"; } +.ri-checkbox-multiple-blank-fill:before { content: "\eb86"; } +.ri-checkbox-multiple-blank-line:before { content: "\eb87"; } +.ri-checkbox-multiple-fill:before { content: "\eb88"; } +.ri-checkbox-multiple-line:before { content: "\eb89"; } +.ri-china-railway-fill:before { content: "\eb8a"; } +.ri-china-railway-line:before { content: "\eb8b"; } +.ri-chrome-fill:before { content: "\eb8c"; } +.ri-chrome-line:before { content: "\eb8d"; } +.ri-clapperboard-fill:before { content: "\eb8e"; } +.ri-clapperboard-line:before { content: "\eb8f"; } +.ri-clipboard-fill:before { content: "\eb90"; } +.ri-clipboard-line:before { content: "\eb91"; } +.ri-clockwise-2-fill:before { content: "\eb92"; } +.ri-clockwise-2-line:before { content: "\eb93"; } +.ri-clockwise-fill:before { content: "\eb94"; } +.ri-clockwise-line:before { content: "\eb95"; } +.ri-close-circle-fill:before { content: "\eb96"; } +.ri-close-circle-line:before { content: "\eb97"; } +.ri-close-fill:before { content: "\eb98"; } +.ri-close-line:before { content: "\eb99"; } +.ri-closed-captioning-fill:before { content: "\eb9a"; } +.ri-closed-captioning-line:before { content: "\eb9b"; } +.ri-cloud-fill:before { content: "\eb9c"; } +.ri-cloud-line:before { content: "\eb9d"; } +.ri-cloud-off-fill:before { content: "\eb9e"; } +.ri-cloud-off-line:before { content: "\eb9f"; } +.ri-cloud-windy-fill:before { content: "\eba0"; } +.ri-cloud-windy-line:before { content: "\eba1"; } +.ri-cloudy-2-fill:before { content: "\eba2"; } +.ri-cloudy-2-line:before { content: "\eba3"; } +.ri-cloudy-fill:before { content: "\eba4"; } +.ri-cloudy-line:before { content: "\eba5"; } +.ri-code-box-fill:before { content: "\eba6"; } +.ri-code-box-line:before { content: "\eba7"; } +.ri-code-fill:before { content: "\eba8"; } +.ri-code-line:before { content: "\eba9"; } +.ri-code-s-fill:before { content: "\ebaa"; } +.ri-code-s-line:before { content: "\ebab"; } +.ri-code-s-slash-fill:before { content: "\ebac"; } +.ri-code-s-slash-line:before { content: "\ebad"; } +.ri-code-view:before { content: "\ebae"; } +.ri-codepen-fill:before { content: "\ebaf"; } +.ri-codepen-line:before { content: "\ebb0"; } +.ri-coin-fill:before { content: "\ebb1"; } +.ri-coin-line:before { content: "\ebb2"; } +.ri-coins-fill:before { content: "\ebb3"; } +.ri-coins-line:before { content: "\ebb4"; } +.ri-collage-fill:before { content: "\ebb5"; } +.ri-collage-line:before { content: "\ebb6"; } +.ri-command-fill:before { content: "\ebb7"; } +.ri-command-line:before { content: "\ebb8"; } +.ri-community-fill:before { content: "\ebb9"; } +.ri-community-line:before { content: "\ebba"; } +.ri-compass-2-fill:before { content: "\ebbb"; } +.ri-compass-2-line:before { content: "\ebbc"; } +.ri-compass-3-fill:before { content: "\ebbd"; } +.ri-compass-3-line:before { content: "\ebbe"; } +.ri-compass-4-fill:before { content: "\ebbf"; } +.ri-compass-4-line:before { content: "\ebc0"; } +.ri-compass-discover-fill:before { content: "\ebc1"; } +.ri-compass-discover-line:before { content: "\ebc2"; } +.ri-compass-fill:before { content: "\ebc3"; } +.ri-compass-line:before { content: "\ebc4"; } +.ri-compasses-2-fill:before { content: "\ebc5"; } +.ri-compasses-2-line:before { content: "\ebc6"; } +.ri-compasses-fill:before { content: "\ebc7"; } +.ri-compasses-line:before { content: "\ebc8"; } +.ri-computer-fill:before { content: "\ebc9"; } +.ri-computer-line:before { content: "\ebca"; } +.ri-contacts-book-2-fill:before { content: "\ebcb"; } +.ri-contacts-book-2-line:before { content: "\ebcc"; } +.ri-contacts-book-fill:before { content: "\ebcd"; } +.ri-contacts-book-line:before { content: "\ebce"; } +.ri-contacts-book-upload-fill:before { content: "\ebcf"; } +.ri-contacts-book-upload-line:before { content: "\ebd0"; } +.ri-contacts-fill:before { content: "\ebd1"; } +.ri-contacts-line:before { content: "\ebd2"; } +.ri-contrast-2-fill:before { content: "\ebd3"; } +.ri-contrast-2-line:before { content: "\ebd4"; } +.ri-contrast-drop-2-fill:before { content: "\ebd5"; } +.ri-contrast-drop-2-line:before { content: "\ebd6"; } +.ri-contrast-drop-fill:before { content: "\ebd7"; } +.ri-contrast-drop-line:before { content: "\ebd8"; } +.ri-contrast-fill:before { content: "\ebd9"; } +.ri-contrast-line:before { content: "\ebda"; } +.ri-copper-coin-fill:before { content: "\ebdb"; } +.ri-copper-coin-line:before { content: "\ebdc"; } +.ri-copper-diamond-fill:before { content: "\ebdd"; } +.ri-copper-diamond-line:before { content: "\ebde"; } +.ri-copyleft-fill:before { content: "\ebdf"; } +.ri-copyleft-line:before { content: "\ebe0"; } +.ri-copyright-fill:before { content: "\ebe1"; } +.ri-copyright-line:before { content: "\ebe2"; } +.ri-coreos-fill:before { content: "\ebe3"; } +.ri-coreos-line:before { content: "\ebe4"; } +.ri-coupon-2-fill:before { content: "\ebe5"; } +.ri-coupon-2-line:before { content: "\ebe6"; } +.ri-coupon-3-fill:before { content: "\ebe7"; } +.ri-coupon-3-line:before { content: "\ebe8"; } +.ri-coupon-4-fill:before { content: "\ebe9"; } +.ri-coupon-4-line:before { content: "\ebea"; } +.ri-coupon-5-fill:before { content: "\ebeb"; } +.ri-coupon-5-line:before { content: "\ebec"; } +.ri-coupon-fill:before { content: "\ebed"; } +.ri-coupon-line:before { content: "\ebee"; } +.ri-cpu-fill:before { content: "\ebef"; } +.ri-cpu-line:before { content: "\ebf0"; } +.ri-creative-commons-by-fill:before { content: "\ebf1"; } +.ri-creative-commons-by-line:before { content: "\ebf2"; } +.ri-creative-commons-fill:before { content: "\ebf3"; } +.ri-creative-commons-line:before { content: "\ebf4"; } +.ri-creative-commons-nc-fill:before { content: "\ebf5"; } +.ri-creative-commons-nc-line:before { content: "\ebf6"; } +.ri-creative-commons-nd-fill:before { content: "\ebf7"; } +.ri-creative-commons-nd-line:before { content: "\ebf8"; } +.ri-creative-commons-sa-fill:before { content: "\ebf9"; } +.ri-creative-commons-sa-line:before { content: "\ebfa"; } +.ri-creative-commons-zero-fill:before { content: "\ebfb"; } +.ri-creative-commons-zero-line:before { content: "\ebfc"; } +.ri-criminal-fill:before { content: "\ebfd"; } +.ri-criminal-line:before { content: "\ebfe"; } +.ri-crop-2-fill:before { content: "\ebff"; } +.ri-crop-2-line:before { content: "\ec00"; } +.ri-crop-fill:before { content: "\ec01"; } +.ri-crop-line:before { content: "\ec02"; } +.ri-css3-fill:before { content: "\ec03"; } +.ri-css3-line:before { content: "\ec04"; } +.ri-cup-fill:before { content: "\ec05"; } +.ri-cup-line:before { content: "\ec06"; } +.ri-currency-fill:before { content: "\ec07"; } +.ri-currency-line:before { content: "\ec08"; } +.ri-cursor-fill:before { content: "\ec09"; } +.ri-cursor-line:before { content: "\ec0a"; } +.ri-customer-service-2-fill:before { content: "\ec0b"; } +.ri-customer-service-2-line:before { content: "\ec0c"; } +.ri-customer-service-fill:before { content: "\ec0d"; } +.ri-customer-service-line:before { content: "\ec0e"; } +.ri-dashboard-2-fill:before { content: "\ec0f"; } +.ri-dashboard-2-line:before { content: "\ec10"; } +.ri-dashboard-3-fill:before { content: "\ec11"; } +.ri-dashboard-3-line:before { content: "\ec12"; } +.ri-dashboard-fill:before { content: "\ec13"; } +.ri-dashboard-line:before { content: "\ec14"; } +.ri-database-2-fill:before { content: "\ec15"; } +.ri-database-2-line:before { content: "\ec16"; } +.ri-database-fill:before { content: "\ec17"; } +.ri-database-line:before { content: "\ec18"; } +.ri-delete-back-2-fill:before { content: "\ec19"; } +.ri-delete-back-2-line:before { content: "\ec1a"; } +.ri-delete-back-fill:before { content: "\ec1b"; } +.ri-delete-back-line:before { content: "\ec1c"; } +.ri-delete-bin-2-fill:before { content: "\ec1d"; } +.ri-delete-bin-2-line:before { content: "\ec1e"; } +.ri-delete-bin-3-fill:before { content: "\ec1f"; } +.ri-delete-bin-3-line:before { content: "\ec20"; } +.ri-delete-bin-4-fill:before { content: "\ec21"; } +.ri-delete-bin-4-line:before { content: "\ec22"; } +.ri-delete-bin-5-fill:before { content: "\ec23"; } +.ri-delete-bin-5-line:before { content: "\ec24"; } +.ri-delete-bin-6-fill:before { content: "\ec25"; } +.ri-delete-bin-6-line:before { content: "\ec26"; } +.ri-delete-bin-7-fill:before { content: "\ec27"; } +.ri-delete-bin-7-line:before { content: "\ec28"; } +.ri-delete-bin-fill:before { content: "\ec29"; } +.ri-delete-bin-line:before { content: "\ec2a"; } +.ri-delete-column:before { content: "\ec2b"; } +.ri-delete-row:before { content: "\ec2c"; } +.ri-device-fill:before { content: "\ec2d"; } +.ri-device-line:before { content: "\ec2e"; } +.ri-device-recover-fill:before { content: "\ec2f"; } +.ri-device-recover-line:before { content: "\ec30"; } +.ri-dingding-fill:before { content: "\ec31"; } +.ri-dingding-line:before { content: "\ec32"; } +.ri-direction-fill:before { content: "\ec33"; } +.ri-direction-line:before { content: "\ec34"; } +.ri-disc-fill:before { content: "\ec35"; } +.ri-disc-line:before { content: "\ec36"; } +.ri-discord-fill:before { content: "\ec37"; } +.ri-discord-line:before { content: "\ec38"; } +.ri-discuss-fill:before { content: "\ec39"; } +.ri-discuss-line:before { content: "\ec3a"; } +.ri-dislike-fill:before { content: "\ec3b"; } +.ri-dislike-line:before { content: "\ec3c"; } +.ri-disqus-fill:before { content: "\ec3d"; } +.ri-disqus-line:before { content: "\ec3e"; } +.ri-divide-fill:before { content: "\ec3f"; } +.ri-divide-line:before { content: "\ec40"; } +.ri-donut-chart-fill:before { content: "\ec41"; } +.ri-donut-chart-line:before { content: "\ec42"; } +.ri-door-closed-fill:before { content: "\ec43"; } +.ri-door-closed-line:before { content: "\ec44"; } +.ri-door-fill:before { content: "\ec45"; } +.ri-door-line:before { content: "\ec46"; } +.ri-door-lock-box-fill:before { content: "\ec47"; } +.ri-door-lock-box-line:before { content: "\ec48"; } +.ri-door-lock-fill:before { content: "\ec49"; } +.ri-door-lock-line:before { content: "\ec4a"; } +.ri-door-open-fill:before { content: "\ec4b"; } +.ri-door-open-line:before { content: "\ec4c"; } +.ri-dossier-fill:before { content: "\ec4d"; } +.ri-dossier-line:before { content: "\ec4e"; } +.ri-douban-fill:before { content: "\ec4f"; } +.ri-douban-line:before { content: "\ec50"; } +.ri-double-quotes-l:before { content: "\ec51"; } +.ri-double-quotes-r:before { content: "\ec52"; } +.ri-download-2-fill:before { content: "\ec53"; } +.ri-download-2-line:before { content: "\ec54"; } +.ri-download-cloud-2-fill:before { content: "\ec55"; } +.ri-download-cloud-2-line:before { content: "\ec56"; } +.ri-download-cloud-fill:before { content: "\ec57"; } +.ri-download-cloud-line:before { content: "\ec58"; } +.ri-download-fill:before { content: "\ec59"; } +.ri-download-line:before { content: "\ec5a"; } +.ri-draft-fill:before { content: "\ec5b"; } +.ri-draft-line:before { content: "\ec5c"; } +.ri-drag-drop-fill:before { content: "\ec5d"; } +.ri-drag-drop-line:before { content: "\ec5e"; } +.ri-drag-move-2-fill:before { content: "\ec5f"; } +.ri-drag-move-2-line:before { content: "\ec60"; } +.ri-drag-move-fill:before { content: "\ec61"; } +.ri-drag-move-line:before { content: "\ec62"; } +.ri-dribbble-fill:before { content: "\ec63"; } +.ri-dribbble-line:before { content: "\ec64"; } +.ri-drive-fill:before { content: "\ec65"; } +.ri-drive-line:before { content: "\ec66"; } +.ri-drizzle-fill:before { content: "\ec67"; } +.ri-drizzle-line:before { content: "\ec68"; } +.ri-drop-fill:before { content: "\ec69"; } +.ri-drop-line:before { content: "\ec6a"; } +.ri-dropbox-fill:before { content: "\ec6b"; } +.ri-dropbox-line:before { content: "\ec6c"; } +.ri-dual-sim-1-fill:before { content: "\ec6d"; } +.ri-dual-sim-1-line:before { content: "\ec6e"; } +.ri-dual-sim-2-fill:before { content: "\ec6f"; } +.ri-dual-sim-2-line:before { content: "\ec70"; } +.ri-dv-fill:before { content: "\ec71"; } +.ri-dv-line:before { content: "\ec72"; } +.ri-dvd-fill:before { content: "\ec73"; } +.ri-dvd-line:before { content: "\ec74"; } +.ri-e-bike-2-fill:before { content: "\ec75"; } +.ri-e-bike-2-line:before { content: "\ec76"; } +.ri-e-bike-fill:before { content: "\ec77"; } +.ri-e-bike-line:before { content: "\ec78"; } +.ri-earth-fill:before { content: "\ec79"; } +.ri-earth-line:before { content: "\ec7a"; } +.ri-earthquake-fill:before { content: "\ec7b"; } +.ri-earthquake-line:before { content: "\ec7c"; } +.ri-edge-fill:before { content: "\ec7d"; } +.ri-edge-line:before { content: "\ec7e"; } +.ri-edit-2-fill:before { content: "\ec7f"; } +.ri-edit-2-line:before { content: "\ec80"; } +.ri-edit-box-fill:before { content: "\ec81"; } +.ri-edit-box-line:before { content: "\ec82"; } +.ri-edit-circle-fill:before { content: "\ec83"; } +.ri-edit-circle-line:before { content: "\ec84"; } +.ri-edit-fill:before { content: "\ec85"; } +.ri-edit-line:before { content: "\ec86"; } +.ri-eject-fill:before { content: "\ec87"; } +.ri-eject-line:before { content: "\ec88"; } +.ri-emotion-2-fill:before { content: "\ec89"; } +.ri-emotion-2-line:before { content: "\ec8a"; } +.ri-emotion-fill:before { content: "\ec8b"; } +.ri-emotion-happy-fill:before { content: "\ec8c"; } +.ri-emotion-happy-line:before { content: "\ec8d"; } +.ri-emotion-laugh-fill:before { content: "\ec8e"; } +.ri-emotion-laugh-line:before { content: "\ec8f"; } +.ri-emotion-line:before { content: "\ec90"; } +.ri-emotion-normal-fill:before { content: "\ec91"; } +.ri-emotion-normal-line:before { content: "\ec92"; } +.ri-emotion-sad-fill:before { content: "\ec93"; } +.ri-emotion-sad-line:before { content: "\ec94"; } +.ri-emotion-unhappy-fill:before { content: "\ec95"; } +.ri-emotion-unhappy-line:before { content: "\ec96"; } +.ri-empathize-fill:before { content: "\ec97"; } +.ri-empathize-line:before { content: "\ec98"; } +.ri-emphasis-cn:before { content: "\ec99"; } +.ri-emphasis:before { content: "\ec9a"; } +.ri-english-input:before { content: "\ec9b"; } +.ri-equalizer-fill:before { content: "\ec9c"; } +.ri-equalizer-line:before { content: "\ec9d"; } +.ri-eraser-fill:before { content: "\ec9e"; } +.ri-eraser-line:before { content: "\ec9f"; } +.ri-error-warning-fill:before { content: "\eca0"; } +.ri-error-warning-line:before { content: "\eca1"; } +.ri-evernote-fill:before { content: "\eca2"; } +.ri-evernote-line:before { content: "\eca3"; } +.ri-exchange-box-fill:before { content: "\eca4"; } +.ri-exchange-box-line:before { content: "\eca5"; } +.ri-exchange-cny-fill:before { content: "\eca6"; } +.ri-exchange-cny-line:before { content: "\eca7"; } +.ri-exchange-dollar-fill:before { content: "\eca8"; } +.ri-exchange-dollar-line:before { content: "\eca9"; } +.ri-exchange-fill:before { content: "\ecaa"; } +.ri-exchange-funds-fill:before { content: "\ecab"; } +.ri-exchange-funds-line:before { content: "\ecac"; } +.ri-exchange-line:before { content: "\ecad"; } +.ri-external-link-fill:before { content: "\ecae"; } +.ri-external-link-line:before { content: "\ecaf"; } +.ri-eye-2-fill:before { content: "\ecb0"; } +.ri-eye-2-line:before { content: "\ecb1"; } +.ri-eye-close-fill:before { content: "\ecb2"; } +.ri-eye-close-line:before { content: "\ecb3"; } +.ri-eye-fill:before { content: "\ecb4"; } +.ri-eye-line:before { content: "\ecb5"; } +.ri-eye-off-fill:before { content: "\ecb6"; } +.ri-eye-off-line:before { content: "\ecb7"; } +.ri-facebook-box-fill:before { content: "\ecb8"; } +.ri-facebook-box-line:before { content: "\ecb9"; } +.ri-facebook-circle-fill:before { content: "\ecba"; } +.ri-facebook-circle-line:before { content: "\ecbb"; } +.ri-facebook-fill:before { content: "\ecbc"; } +.ri-facebook-line:before { content: "\ecbd"; } +.ri-fahrenheit-fill:before { content: "\ecbe"; } +.ri-fahrenheit-line:before { content: "\ecbf"; } +.ri-feedback-fill:before { content: "\ecc0"; } +.ri-feedback-line:before { content: "\ecc1"; } +.ri-file-2-fill:before { content: "\ecc2"; } +.ri-file-2-line:before { content: "\ecc3"; } +.ri-file-3-fill:before { content: "\ecc4"; } +.ri-file-3-line:before { content: "\ecc5"; } +.ri-file-4-fill:before { content: "\ecc6"; } +.ri-file-4-line:before { content: "\ecc7"; } +.ri-file-add-fill:before { content: "\ecc8"; } +.ri-file-add-line:before { content: "\ecc9"; } +.ri-file-chart-2-fill:before { content: "\ecca"; } +.ri-file-chart-2-line:before { content: "\eccb"; } +.ri-file-chart-fill:before { content: "\eccc"; } +.ri-file-chart-line:before { content: "\eccd"; } +.ri-file-cloud-fill:before { content: "\ecce"; } +.ri-file-cloud-line:before { content: "\eccf"; } +.ri-file-code-fill:before { content: "\ecd0"; } +.ri-file-code-line:before { content: "\ecd1"; } +.ri-file-copy-2-fill:before { content: "\ecd2"; } +.ri-file-copy-2-line:before { content: "\ecd3"; } +.ri-file-copy-fill:before { content: "\ecd4"; } +.ri-file-copy-line:before { content: "\ecd5"; } +.ri-file-damage-fill:before { content: "\ecd6"; } +.ri-file-damage-line:before { content: "\ecd7"; } +.ri-file-download-fill:before { content: "\ecd8"; } +.ri-file-download-line:before { content: "\ecd9"; } +.ri-file-edit-fill:before { content: "\ecda"; } +.ri-file-edit-line:before { content: "\ecdb"; } +.ri-file-excel-2-fill:before { content: "\ecdc"; } +.ri-file-excel-2-line:before { content: "\ecdd"; } +.ri-file-excel-fill:before { content: "\ecde"; } +.ri-file-excel-line:before { content: "\ecdf"; } +.ri-file-fill:before { content: "\ece0"; } +.ri-file-forbid-fill:before { content: "\ece1"; } +.ri-file-forbid-line:before { content: "\ece2"; } +.ri-file-gif-fill:before { content: "\ece3"; } +.ri-file-gif-line:before { content: "\ece4"; } +.ri-file-history-fill:before { content: "\ece5"; } +.ri-file-history-line:before { content: "\ece6"; } +.ri-file-hwp-fill:before { content: "\ece7"; } +.ri-file-hwp-line:before { content: "\ece8"; } +.ri-file-info-fill:before { content: "\ece9"; } +.ri-file-info-line:before { content: "\ecea"; } +.ri-file-line:before { content: "\eceb"; } +.ri-file-list-2-fill:before { content: "\ecec"; } +.ri-file-list-2-line:before { content: "\eced"; } +.ri-file-list-3-fill:before { content: "\ecee"; } +.ri-file-list-3-line:before { content: "\ecef"; } +.ri-file-list-fill:before { content: "\ecf0"; } +.ri-file-list-line:before { content: "\ecf1"; } +.ri-file-lock-fill:before { content: "\ecf2"; } +.ri-file-lock-line:before { content: "\ecf3"; } +.ri-file-mark-fill:before { content: "\ecf4"; } +.ri-file-mark-line:before { content: "\ecf5"; } +.ri-file-music-fill:before { content: "\ecf6"; } +.ri-file-music-line:before { content: "\ecf7"; } +.ri-file-paper-2-fill:before { content: "\ecf8"; } +.ri-file-paper-2-line:before { content: "\ecf9"; } +.ri-file-paper-fill:before { content: "\ecfa"; } +.ri-file-paper-line:before { content: "\ecfb"; } +.ri-file-pdf-fill:before { content: "\ecfc"; } +.ri-file-pdf-line:before { content: "\ecfd"; } +.ri-file-ppt-2-fill:before { content: "\ecfe"; } +.ri-file-ppt-2-line:before { content: "\ecff"; } +.ri-file-ppt-fill:before { content: "\ed00"; } +.ri-file-ppt-line:before { content: "\ed01"; } +.ri-file-reduce-fill:before { content: "\ed02"; } +.ri-file-reduce-line:before { content: "\ed03"; } +.ri-file-search-fill:before { content: "\ed04"; } +.ri-file-search-line:before { content: "\ed05"; } +.ri-file-settings-fill:before { content: "\ed06"; } +.ri-file-settings-line:before { content: "\ed07"; } +.ri-file-shield-2-fill:before { content: "\ed08"; } +.ri-file-shield-2-line:before { content: "\ed09"; } +.ri-file-shield-fill:before { content: "\ed0a"; } +.ri-file-shield-line:before { content: "\ed0b"; } +.ri-file-shred-fill:before { content: "\ed0c"; } +.ri-file-shred-line:before { content: "\ed0d"; } +.ri-file-text-fill:before { content: "\ed0e"; } +.ri-file-text-line:before { content: "\ed0f"; } +.ri-file-transfer-fill:before { content: "\ed10"; } +.ri-file-transfer-line:before { content: "\ed11"; } +.ri-file-unknow-fill:before { content: "\ed12"; } +.ri-file-unknow-line:before { content: "\ed13"; } +.ri-file-upload-fill:before { content: "\ed14"; } +.ri-file-upload-line:before { content: "\ed15"; } +.ri-file-user-fill:before { content: "\ed16"; } +.ri-file-user-line:before { content: "\ed17"; } +.ri-file-warning-fill:before { content: "\ed18"; } +.ri-file-warning-line:before { content: "\ed19"; } +.ri-file-word-2-fill:before { content: "\ed1a"; } +.ri-file-word-2-line:before { content: "\ed1b"; } +.ri-file-word-fill:before { content: "\ed1c"; } +.ri-file-word-line:before { content: "\ed1d"; } +.ri-file-zip-fill:before { content: "\ed1e"; } +.ri-file-zip-line:before { content: "\ed1f"; } +.ri-film-fill:before { content: "\ed20"; } +.ri-film-line:before { content: "\ed21"; } +.ri-filter-2-fill:before { content: "\ed22"; } +.ri-filter-2-line:before { content: "\ed23"; } +.ri-filter-3-fill:before { content: "\ed24"; } +.ri-filter-3-line:before { content: "\ed25"; } +.ri-filter-fill:before { content: "\ed26"; } +.ri-filter-line:before { content: "\ed27"; } +.ri-filter-off-fill:before { content: "\ed28"; } +.ri-filter-off-line:before { content: "\ed29"; } +.ri-find-replace-fill:before { content: "\ed2a"; } +.ri-find-replace-line:before { content: "\ed2b"; } +.ri-finder-fill:before { content: "\ed2c"; } +.ri-finder-line:before { content: "\ed2d"; } +.ri-fingerprint-2-fill:before { content: "\ed2e"; } +.ri-fingerprint-2-line:before { content: "\ed2f"; } +.ri-fingerprint-fill:before { content: "\ed30"; } +.ri-fingerprint-line:before { content: "\ed31"; } +.ri-fire-fill:before { content: "\ed32"; } +.ri-fire-line:before { content: "\ed33"; } +.ri-firefox-fill:before { content: "\ed34"; } +.ri-firefox-line:before { content: "\ed35"; } +.ri-first-aid-kit-fill:before { content: "\ed36"; } +.ri-first-aid-kit-line:before { content: "\ed37"; } +.ri-flag-2-fill:before { content: "\ed38"; } +.ri-flag-2-line:before { content: "\ed39"; } +.ri-flag-fill:before { content: "\ed3a"; } +.ri-flag-line:before { content: "\ed3b"; } +.ri-flashlight-fill:before { content: "\ed3c"; } +.ri-flashlight-line:before { content: "\ed3d"; } +.ri-flask-fill:before { content: "\ed3e"; } +.ri-flask-line:before { content: "\ed3f"; } +.ri-flight-land-fill:before { content: "\ed40"; } +.ri-flight-land-line:before { content: "\ed41"; } +.ri-flight-takeoff-fill:before { content: "\ed42"; } +.ri-flight-takeoff-line:before { content: "\ed43"; } +.ri-flood-fill:before { content: "\ed44"; } +.ri-flood-line:before { content: "\ed45"; } +.ri-flow-chart:before { content: "\ed46"; } +.ri-flutter-fill:before { content: "\ed47"; } +.ri-flutter-line:before { content: "\ed48"; } +.ri-focus-2-fill:before { content: "\ed49"; } +.ri-focus-2-line:before { content: "\ed4a"; } +.ri-focus-3-fill:before { content: "\ed4b"; } +.ri-focus-3-line:before { content: "\ed4c"; } +.ri-focus-fill:before { content: "\ed4d"; } +.ri-focus-line:before { content: "\ed4e"; } +.ri-foggy-fill:before { content: "\ed4f"; } +.ri-foggy-line:before { content: "\ed50"; } +.ri-folder-2-fill:before { content: "\ed51"; } +.ri-folder-2-line:before { content: "\ed52"; } +.ri-folder-3-fill:before { content: "\ed53"; } +.ri-folder-3-line:before { content: "\ed54"; } +.ri-folder-4-fill:before { content: "\ed55"; } +.ri-folder-4-line:before { content: "\ed56"; } +.ri-folder-5-fill:before { content: "\ed57"; } +.ri-folder-5-line:before { content: "\ed58"; } +.ri-folder-add-fill:before { content: "\ed59"; } +.ri-folder-add-line:before { content: "\ed5a"; } +.ri-folder-chart-2-fill:before { content: "\ed5b"; } +.ri-folder-chart-2-line:before { content: "\ed5c"; } +.ri-folder-chart-fill:before { content: "\ed5d"; } +.ri-folder-chart-line:before { content: "\ed5e"; } +.ri-folder-download-fill:before { content: "\ed5f"; } +.ri-folder-download-line:before { content: "\ed60"; } +.ri-folder-fill:before { content: "\ed61"; } +.ri-folder-forbid-fill:before { content: "\ed62"; } +.ri-folder-forbid-line:before { content: "\ed63"; } +.ri-folder-history-fill:before { content: "\ed64"; } +.ri-folder-history-line:before { content: "\ed65"; } +.ri-folder-info-fill:before { content: "\ed66"; } +.ri-folder-info-line:before { content: "\ed67"; } +.ri-folder-keyhole-fill:before { content: "\ed68"; } +.ri-folder-keyhole-line:before { content: "\ed69"; } +.ri-folder-line:before { content: "\ed6a"; } +.ri-folder-lock-fill:before { content: "\ed6b"; } +.ri-folder-lock-line:before { content: "\ed6c"; } +.ri-folder-music-fill:before { content: "\ed6d"; } +.ri-folder-music-line:before { content: "\ed6e"; } +.ri-folder-open-fill:before { content: "\ed6f"; } +.ri-folder-open-line:before { content: "\ed70"; } +.ri-folder-received-fill:before { content: "\ed71"; } +.ri-folder-received-line:before { content: "\ed72"; } +.ri-folder-reduce-fill:before { content: "\ed73"; } +.ri-folder-reduce-line:before { content: "\ed74"; } +.ri-folder-settings-fill:before { content: "\ed75"; } +.ri-folder-settings-line:before { content: "\ed76"; } +.ri-folder-shared-fill:before { content: "\ed77"; } +.ri-folder-shared-line:before { content: "\ed78"; } +.ri-folder-shield-2-fill:before { content: "\ed79"; } +.ri-folder-shield-2-line:before { content: "\ed7a"; } +.ri-folder-shield-fill:before { content: "\ed7b"; } +.ri-folder-shield-line:before { content: "\ed7c"; } +.ri-folder-transfer-fill:before { content: "\ed7d"; } +.ri-folder-transfer-line:before { content: "\ed7e"; } +.ri-folder-unknow-fill:before { content: "\ed7f"; } +.ri-folder-unknow-line:before { content: "\ed80"; } +.ri-folder-upload-fill:before { content: "\ed81"; } +.ri-folder-upload-line:before { content: "\ed82"; } +.ri-folder-user-fill:before { content: "\ed83"; } +.ri-folder-user-line:before { content: "\ed84"; } +.ri-folder-warning-fill:before { content: "\ed85"; } +.ri-folder-warning-line:before { content: "\ed86"; } +.ri-folder-zip-fill:before { content: "\ed87"; } +.ri-folder-zip-line:before { content: "\ed88"; } +.ri-folders-fill:before { content: "\ed89"; } +.ri-folders-line:before { content: "\ed8a"; } +.ri-font-color:before { content: "\ed8b"; } +.ri-font-size-2:before { content: "\ed8c"; } +.ri-font-size:before { content: "\ed8d"; } +.ri-football-fill:before { content: "\ed8e"; } +.ri-football-line:before { content: "\ed8f"; } +.ri-footprint-fill:before { content: "\ed90"; } +.ri-footprint-line:before { content: "\ed91"; } +.ri-forbid-2-fill:before { content: "\ed92"; } +.ri-forbid-2-line:before { content: "\ed93"; } +.ri-forbid-fill:before { content: "\ed94"; } +.ri-forbid-line:before { content: "\ed95"; } +.ri-format-clear:before { content: "\ed96"; } +.ri-fridge-fill:before { content: "\ed97"; } +.ri-fridge-line:before { content: "\ed98"; } +.ri-fullscreen-exit-fill:before { content: "\ed99"; } +.ri-fullscreen-exit-line:before { content: "\ed9a"; } +.ri-fullscreen-fill:before { content: "\ed9b"; } +.ri-fullscreen-line:before { content: "\ed9c"; } +.ri-function-fill:before { content: "\ed9d"; } +.ri-function-line:before { content: "\ed9e"; } +.ri-functions:before { content: "\ed9f"; } +.ri-funds-box-fill:before { content: "\eda0"; } +.ri-funds-box-line:before { content: "\eda1"; } +.ri-funds-fill:before { content: "\eda2"; } +.ri-funds-line:before { content: "\eda3"; } +.ri-gallery-fill:before { content: "\eda4"; } +.ri-gallery-line:before { content: "\eda5"; } +.ri-gallery-upload-fill:before { content: "\eda6"; } +.ri-gallery-upload-line:before { content: "\eda7"; } +.ri-game-fill:before { content: "\eda8"; } +.ri-game-line:before { content: "\eda9"; } +.ri-gamepad-fill:before { content: "\edaa"; } +.ri-gamepad-line:before { content: "\edab"; } +.ri-gas-station-fill:before { content: "\edac"; } +.ri-gas-station-line:before { content: "\edad"; } +.ri-gatsby-fill:before { content: "\edae"; } +.ri-gatsby-line:before { content: "\edaf"; } +.ri-genderless-fill:before { content: "\edb0"; } +.ri-genderless-line:before { content: "\edb1"; } +.ri-ghost-2-fill:before { content: "\edb2"; } +.ri-ghost-2-line:before { content: "\edb3"; } +.ri-ghost-fill:before { content: "\edb4"; } +.ri-ghost-line:before { content: "\edb5"; } +.ri-ghost-smile-fill:before { content: "\edb6"; } +.ri-ghost-smile-line:before { content: "\edb7"; } +.ri-gift-2-fill:before { content: "\edb8"; } +.ri-gift-2-line:before { content: "\edb9"; } +.ri-gift-fill:before { content: "\edba"; } +.ri-gift-line:before { content: "\edbb"; } +.ri-git-branch-fill:before { content: "\edbc"; } +.ri-git-branch-line:before { content: "\edbd"; } +.ri-git-commit-fill:before { content: "\edbe"; } +.ri-git-commit-line:before { content: "\edbf"; } +.ri-git-merge-fill:before { content: "\edc0"; } +.ri-git-merge-line:before { content: "\edc1"; } +.ri-git-pull-request-fill:before { content: "\edc2"; } +.ri-git-pull-request-line:before { content: "\edc3"; } +.ri-git-repository-commits-fill:before { content: "\edc4"; } +.ri-git-repository-commits-line:before { content: "\edc5"; } +.ri-git-repository-fill:before { content: "\edc6"; } +.ri-git-repository-line:before { content: "\edc7"; } +.ri-git-repository-private-fill:before { content: "\edc8"; } +.ri-git-repository-private-line:before { content: "\edc9"; } +.ri-github-fill:before { content: "\edca"; } +.ri-github-line:before { content: "\edcb"; } +.ri-gitlab-fill:before { content: "\edcc"; } +.ri-gitlab-line:before { content: "\edcd"; } +.ri-global-fill:before { content: "\edce"; } +.ri-global-line:before { content: "\edcf"; } +.ri-globe-fill:before { content: "\edd0"; } +.ri-globe-line:before { content: "\edd1"; } +.ri-goblet-fill:before { content: "\edd2"; } +.ri-goblet-line:before { content: "\edd3"; } +.ri-google-fill:before { content: "\edd4"; } +.ri-google-line:before { content: "\edd5"; } +.ri-google-play-fill:before { content: "\edd6"; } +.ri-google-play-line:before { content: "\edd7"; } +.ri-government-fill:before { content: "\edd8"; } +.ri-government-line:before { content: "\edd9"; } +.ri-gps-fill:before { content: "\edda"; } +.ri-gps-line:before { content: "\eddb"; } +.ri-gradienter-fill:before { content: "\eddc"; } +.ri-gradienter-line:before { content: "\eddd"; } +.ri-grid-fill:before { content: "\edde"; } +.ri-grid-line:before { content: "\eddf"; } +.ri-group-2-fill:before { content: "\ede0"; } +.ri-group-2-line:before { content: "\ede1"; } +.ri-group-fill:before { content: "\ede2"; } +.ri-group-line:before { content: "\ede3"; } +.ri-guide-fill:before { content: "\ede4"; } +.ri-guide-line:before { content: "\ede5"; } +.ri-h-1:before { content: "\ede6"; } +.ri-h-2:before { content: "\ede7"; } +.ri-h-3:before { content: "\ede8"; } +.ri-h-4:before { content: "\ede9"; } +.ri-h-5:before { content: "\edea"; } +.ri-h-6:before { content: "\edeb"; } +.ri-hail-fill:before { content: "\edec"; } +.ri-hail-line:before { content: "\eded"; } +.ri-hammer-fill:before { content: "\edee"; } +.ri-hammer-line:before { content: "\edef"; } +.ri-hand-coin-fill:before { content: "\edf0"; } +.ri-hand-coin-line:before { content: "\edf1"; } +.ri-hand-heart-fill:before { content: "\edf2"; } +.ri-hand-heart-line:before { content: "\edf3"; } +.ri-hand-sanitizer-fill:before { content: "\edf4"; } +.ri-hand-sanitizer-line:before { content: "\edf5"; } +.ri-handbag-fill:before { content: "\edf6"; } +.ri-handbag-line:before { content: "\edf7"; } +.ri-hard-drive-2-fill:before { content: "\edf8"; } +.ri-hard-drive-2-line:before { content: "\edf9"; } +.ri-hard-drive-fill:before { content: "\edfa"; } +.ri-hard-drive-line:before { content: "\edfb"; } +.ri-hashtag:before { content: "\edfc"; } +.ri-haze-2-fill:before { content: "\edfd"; } +.ri-haze-2-line:before { content: "\edfe"; } +.ri-haze-fill:before { content: "\edff"; } +.ri-haze-line:before { content: "\ee00"; } +.ri-hd-fill:before { content: "\ee01"; } +.ri-hd-line:before { content: "\ee02"; } +.ri-heading:before { content: "\ee03"; } +.ri-headphone-fill:before { content: "\ee04"; } +.ri-headphone-line:before { content: "\ee05"; } +.ri-health-book-fill:before { content: "\ee06"; } +.ri-health-book-line:before { content: "\ee07"; } +.ri-heart-2-fill:before { content: "\ee08"; } +.ri-heart-2-line:before { content: "\ee09"; } +.ri-heart-3-fill:before { content: "\ee0a"; } +.ri-heart-3-line:before { content: "\ee0b"; } +.ri-heart-add-fill:before { content: "\ee0c"; } +.ri-heart-add-line:before { content: "\ee0d"; } +.ri-heart-fill:before { content: "\ee0e"; } +.ri-heart-line:before { content: "\ee0f"; } +.ri-heart-pulse-fill:before { content: "\ee10"; } +.ri-heart-pulse-line:before { content: "\ee11"; } +.ri-hearts-fill:before { content: "\ee12"; } +.ri-hearts-line:before { content: "\ee13"; } +.ri-heavy-showers-fill:before { content: "\ee14"; } +.ri-heavy-showers-line:before { content: "\ee15"; } +.ri-history-fill:before { content: "\ee16"; } +.ri-history-line:before { content: "\ee17"; } +.ri-home-2-fill:before { content: "\ee18"; } +.ri-home-2-line:before { content: "\ee19"; } +.ri-home-3-fill:before { content: "\ee1a"; } +.ri-home-3-line:before { content: "\ee1b"; } +.ri-home-4-fill:before { content: "\ee1c"; } +.ri-home-4-line:before { content: "\ee1d"; } +.ri-home-5-fill:before { content: "\ee1e"; } +.ri-home-5-line:before { content: "\ee1f"; } +.ri-home-6-fill:before { content: "\ee20"; } +.ri-home-6-line:before { content: "\ee21"; } +.ri-home-7-fill:before { content: "\ee22"; } +.ri-home-7-line:before { content: "\ee23"; } +.ri-home-8-fill:before { content: "\ee24"; } +.ri-home-8-line:before { content: "\ee25"; } +.ri-home-fill:before { content: "\ee26"; } +.ri-home-gear-fill:before { content: "\ee27"; } +.ri-home-gear-line:before { content: "\ee28"; } +.ri-home-heart-fill:before { content: "\ee29"; } +.ri-home-heart-line:before { content: "\ee2a"; } +.ri-home-line:before { content: "\ee2b"; } +.ri-home-smile-2-fill:before { content: "\ee2c"; } +.ri-home-smile-2-line:before { content: "\ee2d"; } +.ri-home-smile-fill:before { content: "\ee2e"; } +.ri-home-smile-line:before { content: "\ee2f"; } +.ri-home-wifi-fill:before { content: "\ee30"; } +.ri-home-wifi-line:before { content: "\ee31"; } +.ri-honor-of-kings-fill:before { content: "\ee32"; } +.ri-honor-of-kings-line:before { content: "\ee33"; } +.ri-honour-fill:before { content: "\ee34"; } +.ri-honour-line:before { content: "\ee35"; } +.ri-hospital-fill:before { content: "\ee36"; } +.ri-hospital-line:before { content: "\ee37"; } +.ri-hotel-bed-fill:before { content: "\ee38"; } +.ri-hotel-bed-line:before { content: "\ee39"; } +.ri-hotel-fill:before { content: "\ee3a"; } +.ri-hotel-line:before { content: "\ee3b"; } +.ri-hotspot-fill:before { content: "\ee3c"; } +.ri-hotspot-line:before { content: "\ee3d"; } +.ri-hq-fill:before { content: "\ee3e"; } +.ri-hq-line:before { content: "\ee3f"; } +.ri-html5-fill:before { content: "\ee40"; } +.ri-html5-line:before { content: "\ee41"; } +.ri-ie-fill:before { content: "\ee42"; } +.ri-ie-line:before { content: "\ee43"; } +.ri-image-2-fill:before { content: "\ee44"; } +.ri-image-2-line:before { content: "\ee45"; } +.ri-image-add-fill:before { content: "\ee46"; } +.ri-image-add-line:before { content: "\ee47"; } +.ri-image-edit-fill:before { content: "\ee48"; } +.ri-image-edit-line:before { content: "\ee49"; } +.ri-image-fill:before { content: "\ee4a"; } +.ri-image-line:before { content: "\ee4b"; } +.ri-inbox-archive-fill:before { content: "\ee4c"; } +.ri-inbox-archive-line:before { content: "\ee4d"; } +.ri-inbox-fill:before { content: "\ee4e"; } +.ri-inbox-line:before { content: "\ee4f"; } +.ri-inbox-unarchive-fill:before { content: "\ee50"; } +.ri-inbox-unarchive-line:before { content: "\ee51"; } +.ri-increase-decrease-fill:before { content: "\ee52"; } +.ri-increase-decrease-line:before { content: "\ee53"; } +.ri-indent-decrease:before { content: "\ee54"; } +.ri-indent-increase:before { content: "\ee55"; } +.ri-indeterminate-circle-fill:before { content: "\ee56"; } +.ri-indeterminate-circle-line:before { content: "\ee57"; } +.ri-information-fill:before { content: "\ee58"; } +.ri-information-line:before { content: "\ee59"; } +.ri-infrared-thermometer-fill:before { content: "\ee5a"; } +.ri-infrared-thermometer-line:before { content: "\ee5b"; } +.ri-ink-bottle-fill:before { content: "\ee5c"; } +.ri-ink-bottle-line:before { content: "\ee5d"; } +.ri-input-cursor-move:before { content: "\ee5e"; } +.ri-input-method-fill:before { content: "\ee5f"; } +.ri-input-method-line:before { content: "\ee60"; } +.ri-insert-column-left:before { content: "\ee61"; } +.ri-insert-column-right:before { content: "\ee62"; } +.ri-insert-row-bottom:before { content: "\ee63"; } +.ri-insert-row-top:before { content: "\ee64"; } +.ri-instagram-fill:before { content: "\ee65"; } +.ri-instagram-line:before { content: "\ee66"; } +.ri-install-fill:before { content: "\ee67"; } +.ri-install-line:before { content: "\ee68"; } +.ri-invision-fill:before { content: "\ee69"; } +.ri-invision-line:before { content: "\ee6a"; } +.ri-italic:before { content: "\ee6b"; } +.ri-kakao-talk-fill:before { content: "\ee6c"; } +.ri-kakao-talk-line:before { content: "\ee6d"; } +.ri-key-2-fill:before { content: "\ee6e"; } +.ri-key-2-line:before { content: "\ee6f"; } +.ri-key-fill:before { content: "\ee70"; } +.ri-key-line:before { content: "\ee71"; } +.ri-keyboard-box-fill:before { content: "\ee72"; } +.ri-keyboard-box-line:before { content: "\ee73"; } +.ri-keyboard-fill:before { content: "\ee74"; } +.ri-keyboard-line:before { content: "\ee75"; } +.ri-keynote-fill:before { content: "\ee76"; } +.ri-keynote-line:before { content: "\ee77"; } +.ri-knife-blood-fill:before { content: "\ee78"; } +.ri-knife-blood-line:before { content: "\ee79"; } +.ri-knife-fill:before { content: "\ee7a"; } +.ri-knife-line:before { content: "\ee7b"; } +.ri-landscape-fill:before { content: "\ee7c"; } +.ri-landscape-line:before { content: "\ee7d"; } +.ri-layout-2-fill:before { content: "\ee7e"; } +.ri-layout-2-line:before { content: "\ee7f"; } +.ri-layout-3-fill:before { content: "\ee80"; } +.ri-layout-3-line:before { content: "\ee81"; } +.ri-layout-4-fill:before { content: "\ee82"; } +.ri-layout-4-line:before { content: "\ee83"; } +.ri-layout-5-fill:before { content: "\ee84"; } +.ri-layout-5-line:before { content: "\ee85"; } +.ri-layout-6-fill:before { content: "\ee86"; } +.ri-layout-6-line:before { content: "\ee87"; } +.ri-layout-bottom-2-fill:before { content: "\ee88"; } +.ri-layout-bottom-2-line:before { content: "\ee89"; } +.ri-layout-bottom-fill:before { content: "\ee8a"; } +.ri-layout-bottom-line:before { content: "\ee8b"; } +.ri-layout-column-fill:before { content: "\ee8c"; } +.ri-layout-column-line:before { content: "\ee8d"; } +.ri-layout-fill:before { content: "\ee8e"; } +.ri-layout-grid-fill:before { content: "\ee8f"; } +.ri-layout-grid-line:before { content: "\ee90"; } +.ri-layout-left-2-fill:before { content: "\ee91"; } +.ri-layout-left-2-line:before { content: "\ee92"; } +.ri-layout-left-fill:before { content: "\ee93"; } +.ri-layout-left-line:before { content: "\ee94"; } +.ri-layout-line:before { content: "\ee95"; } +.ri-layout-masonry-fill:before { content: "\ee96"; } +.ri-layout-masonry-line:before { content: "\ee97"; } +.ri-layout-right-2-fill:before { content: "\ee98"; } +.ri-layout-right-2-line:before { content: "\ee99"; } +.ri-layout-right-fill:before { content: "\ee9a"; } +.ri-layout-right-line:before { content: "\ee9b"; } +.ri-layout-row-fill:before { content: "\ee9c"; } +.ri-layout-row-line:before { content: "\ee9d"; } +.ri-layout-top-2-fill:before { content: "\ee9e"; } +.ri-layout-top-2-line:before { content: "\ee9f"; } +.ri-layout-top-fill:before { content: "\eea0"; } +.ri-layout-top-line:before { content: "\eea1"; } +.ri-leaf-fill:before { content: "\eea2"; } +.ri-leaf-line:before { content: "\eea3"; } +.ri-lifebuoy-fill:before { content: "\eea4"; } +.ri-lifebuoy-line:before { content: "\eea5"; } +.ri-lightbulb-fill:before { content: "\eea6"; } +.ri-lightbulb-flash-fill:before { content: "\eea7"; } +.ri-lightbulb-flash-line:before { content: "\eea8"; } +.ri-lightbulb-line:before { content: "\eea9"; } +.ri-line-chart-fill:before { content: "\eeaa"; } +.ri-line-chart-line:before { content: "\eeab"; } +.ri-line-fill:before { content: "\eeac"; } +.ri-line-height:before { content: "\eead"; } +.ri-line-line:before { content: "\eeae"; } +.ri-link-m:before { content: "\eeaf"; } +.ri-link-unlink-m:before { content: "\eeb0"; } +.ri-link-unlink:before { content: "\eeb1"; } +.ri-link:before { content: "\eeb2"; } +.ri-linkedin-box-fill:before { content: "\eeb3"; } +.ri-linkedin-box-line:before { content: "\eeb4"; } +.ri-linkedin-fill:before { content: "\eeb5"; } +.ri-linkedin-line:before { content: "\eeb6"; } +.ri-links-fill:before { content: "\eeb7"; } +.ri-links-line:before { content: "\eeb8"; } +.ri-list-check-2:before { content: "\eeb9"; } +.ri-list-check:before { content: "\eeba"; } +.ri-list-ordered:before { content: "\eebb"; } +.ri-list-settings-fill:before { content: "\eebc"; } +.ri-list-settings-line:before { content: "\eebd"; } +.ri-list-unordered:before { content: "\eebe"; } +.ri-live-fill:before { content: "\eebf"; } +.ri-live-line:before { content: "\eec0"; } +.ri-loader-2-fill:before { content: "\eec1"; } +.ri-loader-2-line:before { content: "\eec2"; } +.ri-loader-3-fill:before { content: "\eec3"; } +.ri-loader-3-line:before { content: "\eec4"; } +.ri-loader-4-fill:before { content: "\eec5"; } +.ri-loader-4-line:before { content: "\eec6"; } +.ri-loader-5-fill:before { content: "\eec7"; } +.ri-loader-5-line:before { content: "\eec8"; } +.ri-loader-fill:before { content: "\eec9"; } +.ri-loader-line:before { content: "\eeca"; } +.ri-lock-2-fill:before { content: "\eecb"; } +.ri-lock-2-line:before { content: "\eecc"; } +.ri-lock-fill:before { content: "\eecd"; } +.ri-lock-line:before { content: "\eece"; } +.ri-lock-password-fill:before { content: "\eecf"; } +.ri-lock-password-line:before { content: "\eed0"; } +.ri-lock-unlock-fill:before { content: "\eed1"; } +.ri-lock-unlock-line:before { content: "\eed2"; } +.ri-login-box-fill:before { content: "\eed3"; } +.ri-login-box-line:before { content: "\eed4"; } +.ri-login-circle-fill:before { content: "\eed5"; } +.ri-login-circle-line:before { content: "\eed6"; } +.ri-logout-box-fill:before { content: "\eed7"; } +.ri-logout-box-line:before { content: "\eed8"; } +.ri-logout-box-r-fill:before { content: "\eed9"; } +.ri-logout-box-r-line:before { content: "\eeda"; } +.ri-logout-circle-fill:before { content: "\eedb"; } +.ri-logout-circle-line:before { content: "\eedc"; } +.ri-logout-circle-r-fill:before { content: "\eedd"; } +.ri-logout-circle-r-line:before { content: "\eede"; } +.ri-luggage-cart-fill:before { content: "\eedf"; } +.ri-luggage-cart-line:before { content: "\eee0"; } +.ri-luggage-deposit-fill:before { content: "\eee1"; } +.ri-luggage-deposit-line:before { content: "\eee2"; } +.ri-lungs-fill:before { content: "\eee3"; } +.ri-lungs-line:before { content: "\eee4"; } +.ri-mac-fill:before { content: "\eee5"; } +.ri-mac-line:before { content: "\eee6"; } +.ri-macbook-fill:before { content: "\eee7"; } +.ri-macbook-line:before { content: "\eee8"; } +.ri-magic-fill:before { content: "\eee9"; } +.ri-magic-line:before { content: "\eeea"; } +.ri-mail-add-fill:before { content: "\eeeb"; } +.ri-mail-add-line:before { content: "\eeec"; } +.ri-mail-check-fill:before { content: "\eeed"; } +.ri-mail-check-line:before { content: "\eeee"; } +.ri-mail-close-fill:before { content: "\eeef"; } +.ri-mail-close-line:before { content: "\eef0"; } +.ri-mail-download-fill:before { content: "\eef1"; } +.ri-mail-download-line:before { content: "\eef2"; } +.ri-mail-fill:before { content: "\eef3"; } +.ri-mail-forbid-fill:before { content: "\eef4"; } +.ri-mail-forbid-line:before { content: "\eef5"; } +.ri-mail-line:before { content: "\eef6"; } +.ri-mail-lock-fill:before { content: "\eef7"; } +.ri-mail-lock-line:before { content: "\eef8"; } +.ri-mail-open-fill:before { content: "\eef9"; } +.ri-mail-open-line:before { content: "\eefa"; } +.ri-mail-send-fill:before { content: "\eefb"; } +.ri-mail-send-line:before { content: "\eefc"; } +.ri-mail-settings-fill:before { content: "\eefd"; } +.ri-mail-settings-line:before { content: "\eefe"; } +.ri-mail-star-fill:before { content: "\eeff"; } +.ri-mail-star-line:before { content: "\ef00"; } +.ri-mail-unread-fill:before { content: "\ef01"; } +.ri-mail-unread-line:before { content: "\ef02"; } +.ri-mail-volume-fill:before { content: "\ef03"; } +.ri-mail-volume-line:before { content: "\ef04"; } +.ri-map-2-fill:before { content: "\ef05"; } +.ri-map-2-line:before { content: "\ef06"; } +.ri-map-fill:before { content: "\ef07"; } +.ri-map-line:before { content: "\ef08"; } +.ri-map-pin-2-fill:before { content: "\ef09"; } +.ri-map-pin-2-line:before { content: "\ef0a"; } +.ri-map-pin-3-fill:before { content: "\ef0b"; } +.ri-map-pin-3-line:before { content: "\ef0c"; } +.ri-map-pin-4-fill:before { content: "\ef0d"; } +.ri-map-pin-4-line:before { content: "\ef0e"; } +.ri-map-pin-5-fill:before { content: "\ef0f"; } +.ri-map-pin-5-line:before { content: "\ef10"; } +.ri-map-pin-add-fill:before { content: "\ef11"; } +.ri-map-pin-add-line:before { content: "\ef12"; } +.ri-map-pin-fill:before { content: "\ef13"; } +.ri-map-pin-line:before { content: "\ef14"; } +.ri-map-pin-range-fill:before { content: "\ef15"; } +.ri-map-pin-range-line:before { content: "\ef16"; } +.ri-map-pin-time-fill:before { content: "\ef17"; } +.ri-map-pin-time-line:before { content: "\ef18"; } +.ri-map-pin-user-fill:before { content: "\ef19"; } +.ri-map-pin-user-line:before { content: "\ef1a"; } +.ri-mark-pen-fill:before { content: "\ef1b"; } +.ri-mark-pen-line:before { content: "\ef1c"; } +.ri-markdown-fill:before { content: "\ef1d"; } +.ri-markdown-line:before { content: "\ef1e"; } +.ri-markup-fill:before { content: "\ef1f"; } +.ri-markup-line:before { content: "\ef20"; } +.ri-mastercard-fill:before { content: "\ef21"; } +.ri-mastercard-line:before { content: "\ef22"; } +.ri-mastodon-fill:before { content: "\ef23"; } +.ri-mastodon-line:before { content: "\ef24"; } +.ri-medal-2-fill:before { content: "\ef25"; } +.ri-medal-2-line:before { content: "\ef26"; } +.ri-medal-fill:before { content: "\ef27"; } +.ri-medal-line:before { content: "\ef28"; } +.ri-medicine-bottle-fill:before { content: "\ef29"; } +.ri-medicine-bottle-line:before { content: "\ef2a"; } +.ri-medium-fill:before { content: "\ef2b"; } +.ri-medium-line:before { content: "\ef2c"; } +.ri-men-fill:before { content: "\ef2d"; } +.ri-men-line:before { content: "\ef2e"; } +.ri-mental-health-fill:before { content: "\ef2f"; } +.ri-mental-health-line:before { content: "\ef30"; } +.ri-menu-2-fill:before { content: "\ef31"; } +.ri-menu-2-line:before { content: "\ef32"; } +.ri-menu-3-fill:before { content: "\ef33"; } +.ri-menu-3-line:before { content: "\ef34"; } +.ri-menu-4-fill:before { content: "\ef35"; } +.ri-menu-4-line:before { content: "\ef36"; } +.ri-menu-5-fill:before { content: "\ef37"; } +.ri-menu-5-line:before { content: "\ef38"; } +.ri-menu-add-fill:before { content: "\ef39"; } +.ri-menu-add-line:before { content: "\ef3a"; } +.ri-menu-fill:before { content: "\ef3b"; } +.ri-menu-fold-fill:before { content: "\ef3c"; } +.ri-menu-fold-line:before { content: "\ef3d"; } +.ri-menu-line:before { content: "\ef3e"; } +.ri-menu-unfold-fill:before { content: "\ef3f"; } +.ri-menu-unfold-line:before { content: "\ef40"; } +.ri-merge-cells-horizontal:before { content: "\ef41"; } +.ri-merge-cells-vertical:before { content: "\ef42"; } +.ri-message-2-fill:before { content: "\ef43"; } +.ri-message-2-line:before { content: "\ef44"; } +.ri-message-3-fill:before { content: "\ef45"; } +.ri-message-3-line:before { content: "\ef46"; } +.ri-message-fill:before { content: "\ef47"; } +.ri-message-line:before { content: "\ef48"; } +.ri-messenger-fill:before { content: "\ef49"; } +.ri-messenger-line:before { content: "\ef4a"; } +.ri-meteor-fill:before { content: "\ef4b"; } +.ri-meteor-line:before { content: "\ef4c"; } +.ri-mic-2-fill:before { content: "\ef4d"; } +.ri-mic-2-line:before { content: "\ef4e"; } +.ri-mic-fill:before { content: "\ef4f"; } +.ri-mic-line:before { content: "\ef50"; } +.ri-mic-off-fill:before { content: "\ef51"; } +.ri-mic-off-line:before { content: "\ef52"; } +.ri-mickey-fill:before { content: "\ef53"; } +.ri-mickey-line:before { content: "\ef54"; } +.ri-microscope-fill:before { content: "\ef55"; } +.ri-microscope-line:before { content: "\ef56"; } +.ri-microsoft-fill:before { content: "\ef57"; } +.ri-microsoft-line:before { content: "\ef58"; } +.ri-mind-map:before { content: "\ef59"; } +.ri-mini-program-fill:before { content: "\ef5a"; } +.ri-mini-program-line:before { content: "\ef5b"; } +.ri-mist-fill:before { content: "\ef5c"; } +.ri-mist-line:before { content: "\ef5d"; } +.ri-money-cny-box-fill:before { content: "\ef5e"; } +.ri-money-cny-box-line:before { content: "\ef5f"; } +.ri-money-cny-circle-fill:before { content: "\ef60"; } +.ri-money-cny-circle-line:before { content: "\ef61"; } +.ri-money-dollar-box-fill:before { content: "\ef62"; } +.ri-money-dollar-box-line:before { content: "\ef63"; } +.ri-money-dollar-circle-fill:before { content: "\ef64"; } +.ri-money-dollar-circle-line:before { content: "\ef65"; } +.ri-money-euro-box-fill:before { content: "\ef66"; } +.ri-money-euro-box-line:before { content: "\ef67"; } +.ri-money-euro-circle-fill:before { content: "\ef68"; } +.ri-money-euro-circle-line:before { content: "\ef69"; } +.ri-money-pound-box-fill:before { content: "\ef6a"; } +.ri-money-pound-box-line:before { content: "\ef6b"; } +.ri-money-pound-circle-fill:before { content: "\ef6c"; } +.ri-money-pound-circle-line:before { content: "\ef6d"; } +.ri-moon-clear-fill:before { content: "\ef6e"; } +.ri-moon-clear-line:before { content: "\ef6f"; } +.ri-moon-cloudy-fill:before { content: "\ef70"; } +.ri-moon-cloudy-line:before { content: "\ef71"; } +.ri-moon-fill:before { content: "\ef72"; } +.ri-moon-foggy-fill:before { content: "\ef73"; } +.ri-moon-foggy-line:before { content: "\ef74"; } +.ri-moon-line:before { content: "\ef75"; } +.ri-more-2-fill:before { content: "\ef76"; } +.ri-more-2-line:before { content: "\ef77"; } +.ri-more-fill:before { content: "\ef78"; } +.ri-more-line:before { content: "\ef79"; } +.ri-motorbike-fill:before { content: "\ef7a"; } +.ri-motorbike-line:before { content: "\ef7b"; } +.ri-mouse-fill:before { content: "\ef7c"; } +.ri-mouse-line:before { content: "\ef7d"; } +.ri-movie-2-fill:before { content: "\ef7e"; } +.ri-movie-2-line:before { content: "\ef7f"; } +.ri-movie-fill:before { content: "\ef80"; } +.ri-movie-line:before { content: "\ef81"; } +.ri-music-2-fill:before { content: "\ef82"; } +.ri-music-2-line:before { content: "\ef83"; } +.ri-music-fill:before { content: "\ef84"; } +.ri-music-line:before { content: "\ef85"; } +.ri-mv-fill:before { content: "\ef86"; } +.ri-mv-line:before { content: "\ef87"; } +.ri-navigation-fill:before { content: "\ef88"; } +.ri-navigation-line:before { content: "\ef89"; } +.ri-netease-cloud-music-fill:before { content: "\ef8a"; } +.ri-netease-cloud-music-line:before { content: "\ef8b"; } +.ri-netflix-fill:before { content: "\ef8c"; } +.ri-netflix-line:before { content: "\ef8d"; } +.ri-newspaper-fill:before { content: "\ef8e"; } +.ri-newspaper-line:before { content: "\ef8f"; } +.ri-node-tree:before { content: "\ef90"; } +.ri-notification-2-fill:before { content: "\ef91"; } +.ri-notification-2-line:before { content: "\ef92"; } +.ri-notification-3-fill:before { content: "\ef93"; } +.ri-notification-3-line:before { content: "\ef94"; } +.ri-notification-4-fill:before { content: "\ef95"; } +.ri-notification-4-line:before { content: "\ef96"; } +.ri-notification-badge-fill:before { content: "\ef97"; } +.ri-notification-badge-line:before { content: "\ef98"; } +.ri-notification-fill:before { content: "\ef99"; } +.ri-notification-line:before { content: "\ef9a"; } +.ri-notification-off-fill:before { content: "\ef9b"; } +.ri-notification-off-line:before { content: "\ef9c"; } +.ri-npmjs-fill:before { content: "\ef9d"; } +.ri-npmjs-line:before { content: "\ef9e"; } +.ri-number-0:before { content: "\ef9f"; } +.ri-number-1:before { content: "\efa0"; } +.ri-number-2:before { content: "\efa1"; } +.ri-number-3:before { content: "\efa2"; } +.ri-number-4:before { content: "\efa3"; } +.ri-number-5:before { content: "\efa4"; } +.ri-number-6:before { content: "\efa5"; } +.ri-number-7:before { content: "\efa6"; } +.ri-number-8:before { content: "\efa7"; } +.ri-number-9:before { content: "\efa8"; } +.ri-numbers-fill:before { content: "\efa9"; } +.ri-numbers-line:before { content: "\efaa"; } +.ri-nurse-fill:before { content: "\efab"; } +.ri-nurse-line:before { content: "\efac"; } +.ri-oil-fill:before { content: "\efad"; } +.ri-oil-line:before { content: "\efae"; } +.ri-omega:before { content: "\efaf"; } +.ri-open-arm-fill:before { content: "\efb0"; } +.ri-open-arm-line:before { content: "\efb1"; } +.ri-open-source-fill:before { content: "\efb2"; } +.ri-open-source-line:before { content: "\efb3"; } +.ri-opera-fill:before { content: "\efb4"; } +.ri-opera-line:before { content: "\efb5"; } +.ri-order-play-fill:before { content: "\efb6"; } +.ri-order-play-line:before { content: "\efb7"; } +.ri-organization-chart:before { content: "\efb8"; } +.ri-outlet-2-fill:before { content: "\efb9"; } +.ri-outlet-2-line:before { content: "\efba"; } +.ri-outlet-fill:before { content: "\efbb"; } +.ri-outlet-line:before { content: "\efbc"; } +.ri-page-separator:before { content: "\efbd"; } +.ri-pages-fill:before { content: "\efbe"; } +.ri-pages-line:before { content: "\efbf"; } +.ri-paint-brush-fill:before { content: "\efc0"; } +.ri-paint-brush-line:before { content: "\efc1"; } +.ri-paint-fill:before { content: "\efc2"; } +.ri-paint-line:before { content: "\efc3"; } +.ri-palette-fill:before { content: "\efc4"; } +.ri-palette-line:before { content: "\efc5"; } +.ri-pantone-fill:before { content: "\efc6"; } +.ri-pantone-line:before { content: "\efc7"; } +.ri-paragraph:before { content: "\efc8"; } +.ri-parent-fill:before { content: "\efc9"; } +.ri-parent-line:before { content: "\efca"; } +.ri-parentheses-fill:before { content: "\efcb"; } +.ri-parentheses-line:before { content: "\efcc"; } +.ri-parking-box-fill:before { content: "\efcd"; } +.ri-parking-box-line:before { content: "\efce"; } +.ri-parking-fill:before { content: "\efcf"; } +.ri-parking-line:before { content: "\efd0"; } +.ri-passport-fill:before { content: "\efd1"; } +.ri-passport-line:before { content: "\efd2"; } +.ri-patreon-fill:before { content: "\efd3"; } +.ri-patreon-line:before { content: "\efd4"; } +.ri-pause-circle-fill:before { content: "\efd5"; } +.ri-pause-circle-line:before { content: "\efd6"; } +.ri-pause-fill:before { content: "\efd7"; } +.ri-pause-line:before { content: "\efd8"; } +.ri-pause-mini-fill:before { content: "\efd9"; } +.ri-pause-mini-line:before { content: "\efda"; } +.ri-paypal-fill:before { content: "\efdb"; } +.ri-paypal-line:before { content: "\efdc"; } +.ri-pen-nib-fill:before { content: "\efdd"; } +.ri-pen-nib-line:before { content: "\efde"; } +.ri-pencil-fill:before { content: "\efdf"; } +.ri-pencil-line:before { content: "\efe0"; } +.ri-pencil-ruler-2-fill:before { content: "\efe1"; } +.ri-pencil-ruler-2-line:before { content: "\efe2"; } +.ri-pencil-ruler-fill:before { content: "\efe3"; } +.ri-pencil-ruler-line:before { content: "\efe4"; } +.ri-percent-fill:before { content: "\efe5"; } +.ri-percent-line:before { content: "\efe6"; } +.ri-phone-camera-fill:before { content: "\efe7"; } +.ri-phone-camera-line:before { content: "\efe8"; } +.ri-phone-fill:before { content: "\efe9"; } +.ri-phone-find-fill:before { content: "\efea"; } +.ri-phone-find-line:before { content: "\efeb"; } +.ri-phone-line:before { content: "\efec"; } +.ri-phone-lock-fill:before { content: "\efed"; } +.ri-phone-lock-line:before { content: "\efee"; } +.ri-picture-in-picture-2-fill:before { content: "\efef"; } +.ri-picture-in-picture-2-line:before { content: "\eff0"; } +.ri-picture-in-picture-exit-fill:before { content: "\eff1"; } +.ri-picture-in-picture-exit-line:before { content: "\eff2"; } +.ri-picture-in-picture-fill:before { content: "\eff3"; } +.ri-picture-in-picture-line:before { content: "\eff4"; } +.ri-pie-chart-2-fill:before { content: "\eff5"; } +.ri-pie-chart-2-line:before { content: "\eff6"; } +.ri-pie-chart-box-fill:before { content: "\eff7"; } +.ri-pie-chart-box-line:before { content: "\eff8"; } +.ri-pie-chart-fill:before { content: "\eff9"; } +.ri-pie-chart-line:before { content: "\effa"; } +.ri-pin-distance-fill:before { content: "\effb"; } +.ri-pin-distance-line:before { content: "\effc"; } +.ri-ping-pong-fill:before { content: "\effd"; } +.ri-ping-pong-line:before { content: "\effe"; } +.ri-pinterest-fill:before { content: "\efff"; } +.ri-pinterest-line:before { content: "\f000"; } +.ri-pinyin-input:before { content: "\f001"; } +.ri-pixelfed-fill:before { content: "\f002"; } +.ri-pixelfed-line:before { content: "\f003"; } +.ri-plane-fill:before { content: "\f004"; } +.ri-plane-line:before { content: "\f005"; } +.ri-plant-fill:before { content: "\f006"; } +.ri-plant-line:before { content: "\f007"; } +.ri-play-circle-fill:before { content: "\f008"; } +.ri-play-circle-line:before { content: "\f009"; } +.ri-play-fill:before { content: "\f00a"; } +.ri-play-line:before { content: "\f00b"; } +.ri-play-list-2-fill:before { content: "\f00c"; } +.ri-play-list-2-line:before { content: "\f00d"; } +.ri-play-list-add-fill:before { content: "\f00e"; } +.ri-play-list-add-line:before { content: "\f00f"; } +.ri-play-list-fill:before { content: "\f010"; } +.ri-play-list-line:before { content: "\f011"; } +.ri-play-mini-fill:before { content: "\f012"; } +.ri-play-mini-line:before { content: "\f013"; } +.ri-playstation-fill:before { content: "\f014"; } +.ri-playstation-line:before { content: "\f015"; } +.ri-plug-2-fill:before { content: "\f016"; } +.ri-plug-2-line:before { content: "\f017"; } +.ri-plug-fill:before { content: "\f018"; } +.ri-plug-line:before { content: "\f019"; } +.ri-polaroid-2-fill:before { content: "\f01a"; } +.ri-polaroid-2-line:before { content: "\f01b"; } +.ri-polaroid-fill:before { content: "\f01c"; } +.ri-polaroid-line:before { content: "\f01d"; } +.ri-police-car-fill:before { content: "\f01e"; } +.ri-police-car-line:before { content: "\f01f"; } +.ri-price-tag-2-fill:before { content: "\f020"; } +.ri-price-tag-2-line:before { content: "\f021"; } +.ri-price-tag-3-fill:before { content: "\f022"; } +.ri-price-tag-3-line:before { content: "\f023"; } +.ri-price-tag-fill:before { content: "\f024"; } +.ri-price-tag-line:before { content: "\f025"; } +.ri-printer-cloud-fill:before { content: "\f026"; } +.ri-printer-cloud-line:before { content: "\f027"; } +.ri-printer-fill:before { content: "\f028"; } +.ri-printer-line:before { content: "\f029"; } +.ri-product-hunt-fill:before { content: "\f02a"; } +.ri-product-hunt-line:before { content: "\f02b"; } +.ri-profile-fill:before { content: "\f02c"; } +.ri-profile-line:before { content: "\f02d"; } +.ri-projector-2-fill:before { content: "\f02e"; } +.ri-projector-2-line:before { content: "\f02f"; } +.ri-projector-fill:before { content: "\f030"; } +.ri-projector-line:before { content: "\f031"; } +.ri-psychotherapy-fill:before { content: "\f032"; } +.ri-psychotherapy-line:before { content: "\f033"; } +.ri-pulse-fill:before { content: "\f034"; } +.ri-pulse-line:before { content: "\f035"; } +.ri-pushpin-2-fill:before { content: "\f036"; } +.ri-pushpin-2-line:before { content: "\f037"; } +.ri-pushpin-fill:before { content: "\f038"; } +.ri-pushpin-line:before { content: "\f039"; } +.ri-qq-fill:before { content: "\f03a"; } +.ri-qq-line:before { content: "\f03b"; } +.ri-qr-code-fill:before { content: "\f03c"; } +.ri-qr-code-line:before { content: "\f03d"; } +.ri-qr-scan-2-fill:before { content: "\f03e"; } +.ri-qr-scan-2-line:before { content: "\f03f"; } +.ri-qr-scan-fill:before { content: "\f040"; } +.ri-qr-scan-line:before { content: "\f041"; } +.ri-question-answer-fill:before { content: "\f042"; } +.ri-question-answer-line:before { content: "\f043"; } +.ri-question-fill:before { content: "\f044"; } +.ri-question-line:before { content: "\f045"; } +.ri-question-mark:before { content: "\f046"; } +.ri-questionnaire-fill:before { content: "\f047"; } +.ri-questionnaire-line:before { content: "\f048"; } +.ri-quill-pen-fill:before { content: "\f049"; } +.ri-quill-pen-line:before { content: "\f04a"; } +.ri-radar-fill:before { content: "\f04b"; } +.ri-radar-line:before { content: "\f04c"; } +.ri-radio-2-fill:before { content: "\f04d"; } +.ri-radio-2-line:before { content: "\f04e"; } +.ri-radio-button-fill:before { content: "\f04f"; } +.ri-radio-button-line:before { content: "\f050"; } +.ri-radio-fill:before { content: "\f051"; } +.ri-radio-line:before { content: "\f052"; } +.ri-rainbow-fill:before { content: "\f053"; } +.ri-rainbow-line:before { content: "\f054"; } +.ri-rainy-fill:before { content: "\f055"; } +.ri-rainy-line:before { content: "\f056"; } +.ri-reactjs-fill:before { content: "\f057"; } +.ri-reactjs-line:before { content: "\f058"; } +.ri-record-circle-fill:before { content: "\f059"; } +.ri-record-circle-line:before { content: "\f05a"; } +.ri-record-mail-fill:before { content: "\f05b"; } +.ri-record-mail-line:before { content: "\f05c"; } +.ri-recycle-fill:before { content: "\f05d"; } +.ri-recycle-line:before { content: "\f05e"; } +.ri-red-packet-fill:before { content: "\f05f"; } +.ri-red-packet-line:before { content: "\f060"; } +.ri-reddit-fill:before { content: "\f061"; } +.ri-reddit-line:before { content: "\f062"; } +.ri-refresh-fill:before { content: "\f063"; } +.ri-refresh-line:before { content: "\f064"; } +.ri-refund-2-fill:before { content: "\f065"; } +.ri-refund-2-line:before { content: "\f066"; } +.ri-refund-fill:before { content: "\f067"; } +.ri-refund-line:before { content: "\f068"; } +.ri-registered-fill:before { content: "\f069"; } +.ri-registered-line:before { content: "\f06a"; } +.ri-remixicon-fill:before { content: "\f06b"; } +.ri-remixicon-line:before { content: "\f06c"; } +.ri-remote-control-2-fill:before { content: "\f06d"; } +.ri-remote-control-2-line:before { content: "\f06e"; } +.ri-remote-control-fill:before { content: "\f06f"; } +.ri-remote-control-line:before { content: "\f070"; } +.ri-repeat-2-fill:before { content: "\f071"; } +.ri-repeat-2-line:before { content: "\f072"; } +.ri-repeat-fill:before { content: "\f073"; } +.ri-repeat-line:before { content: "\f074"; } +.ri-repeat-one-fill:before { content: "\f075"; } +.ri-repeat-one-line:before { content: "\f076"; } +.ri-reply-all-fill:before { content: "\f077"; } +.ri-reply-all-line:before { content: "\f078"; } +.ri-reply-fill:before { content: "\f079"; } +.ri-reply-line:before { content: "\f07a"; } +.ri-reserved-fill:before { content: "\f07b"; } +.ri-reserved-line:before { content: "\f07c"; } +.ri-rest-time-fill:before { content: "\f07d"; } +.ri-rest-time-line:before { content: "\f07e"; } +.ri-restart-fill:before { content: "\f07f"; } +.ri-restart-line:before { content: "\f080"; } +.ri-restaurant-2-fill:before { content: "\f081"; } +.ri-restaurant-2-line:before { content: "\f082"; } +.ri-restaurant-fill:before { content: "\f083"; } +.ri-restaurant-line:before { content: "\f084"; } +.ri-rewind-fill:before { content: "\f085"; } +.ri-rewind-line:before { content: "\f086"; } +.ri-rewind-mini-fill:before { content: "\f087"; } +.ri-rewind-mini-line:before { content: "\f088"; } +.ri-rhythm-fill:before { content: "\f089"; } +.ri-rhythm-line:before { content: "\f08a"; } +.ri-riding-fill:before { content: "\f08b"; } +.ri-riding-line:before { content: "\f08c"; } +.ri-road-map-fill:before { content: "\f08d"; } +.ri-road-map-line:before { content: "\f08e"; } +.ri-roadster-fill:before { content: "\f08f"; } +.ri-roadster-line:before { content: "\f090"; } +.ri-robot-fill:before { content: "\f091"; } +.ri-robot-line:before { content: "\f092"; } +.ri-rocket-2-fill:before { content: "\f093"; } +.ri-rocket-2-line:before { content: "\f094"; } +.ri-rocket-fill:before { content: "\f095"; } +.ri-rocket-line:before { content: "\f096"; } +.ri-rotate-lock-fill:before { content: "\f097"; } +.ri-rotate-lock-line:before { content: "\f098"; } +.ri-rounded-corner:before { content: "\f099"; } +.ri-route-fill:before { content: "\f09a"; } +.ri-route-line:before { content: "\f09b"; } +.ri-router-fill:before { content: "\f09c"; } +.ri-router-line:before { content: "\f09d"; } +.ri-rss-fill:before { content: "\f09e"; } +.ri-rss-line:before { content: "\f09f"; } +.ri-ruler-2-fill:before { content: "\f0a0"; } +.ri-ruler-2-line:before { content: "\f0a1"; } +.ri-ruler-fill:before { content: "\f0a2"; } +.ri-ruler-line:before { content: "\f0a3"; } +.ri-run-fill:before { content: "\f0a4"; } +.ri-run-line:before { content: "\f0a5"; } +.ri-safari-fill:before { content: "\f0a6"; } +.ri-safari-line:before { content: "\f0a7"; } +.ri-safe-2-fill:before { content: "\f0a8"; } +.ri-safe-2-line:before { content: "\f0a9"; } +.ri-safe-fill:before { content: "\f0aa"; } +.ri-safe-line:before { content: "\f0ab"; } +.ri-sailboat-fill:before { content: "\f0ac"; } +.ri-sailboat-line:before { content: "\f0ad"; } +.ri-save-2-fill:before { content: "\f0ae"; } +.ri-save-2-line:before { content: "\f0af"; } +.ri-save-3-fill:before { content: "\f0b0"; } +.ri-save-3-line:before { content: "\f0b1"; } +.ri-save-fill:before { content: "\f0b2"; } +.ri-save-line:before { content: "\f0b3"; } +.ri-scales-2-fill:before { content: "\f0b4"; } +.ri-scales-2-line:before { content: "\f0b5"; } +.ri-scales-3-fill:before { content: "\f0b6"; } +.ri-scales-3-line:before { content: "\f0b7"; } +.ri-scales-fill:before { content: "\f0b8"; } +.ri-scales-line:before { content: "\f0b9"; } +.ri-scan-2-fill:before { content: "\f0ba"; } +.ri-scan-2-line:before { content: "\f0bb"; } +.ri-scan-fill:before { content: "\f0bc"; } +.ri-scan-line:before { content: "\f0bd"; } +.ri-scissors-2-fill:before { content: "\f0be"; } +.ri-scissors-2-line:before { content: "\f0bf"; } +.ri-scissors-cut-fill:before { content: "\f0c0"; } +.ri-scissors-cut-line:before { content: "\f0c1"; } +.ri-scissors-fill:before { content: "\f0c2"; } +.ri-scissors-line:before { content: "\f0c3"; } +.ri-screenshot-2-fill:before { content: "\f0c4"; } +.ri-screenshot-2-line:before { content: "\f0c5"; } +.ri-screenshot-fill:before { content: "\f0c6"; } +.ri-screenshot-line:before { content: "\f0c7"; } +.ri-sd-card-fill:before { content: "\f0c8"; } +.ri-sd-card-line:before { content: "\f0c9"; } +.ri-sd-card-mini-fill:before { content: "\f0ca"; } +.ri-sd-card-mini-line:before { content: "\f0cb"; } +.ri-search-2-fill:before { content: "\f0cc"; } +.ri-search-2-line:before { content: "\f0cd"; } +.ri-search-eye-fill:before { content: "\f0ce"; } +.ri-search-eye-line:before { content: "\f0cf"; } +.ri-search-fill:before { content: "\f0d0"; } +.ri-search-line:before { content: "\f0d1"; } +.ri-secure-payment-fill:before { content: "\f0d2"; } +.ri-secure-payment-line:before { content: "\f0d3"; } +.ri-seedling-fill:before { content: "\f0d4"; } +.ri-seedling-line:before { content: "\f0d5"; } +.ri-send-backward:before { content: "\f0d6"; } +.ri-send-plane-2-fill:before { content: "\f0d7"; } +.ri-send-plane-2-line:before { content: "\f0d8"; } +.ri-send-plane-fill:before { content: "\f0d9"; } +.ri-send-plane-line:before { content: "\f0da"; } +.ri-send-to-back:before { content: "\f0db"; } +.ri-sensor-fill:before { content: "\f0dc"; } +.ri-sensor-line:before { content: "\f0dd"; } +.ri-separator:before { content: "\f0de"; } +.ri-server-fill:before { content: "\f0df"; } +.ri-server-line:before { content: "\f0e0"; } +.ri-service-fill:before { content: "\f0e1"; } +.ri-service-line:before { content: "\f0e2"; } +.ri-settings-2-fill:before { content: "\f0e3"; } +.ri-settings-2-line:before { content: "\f0e4"; } +.ri-settings-3-fill:before { content: "\f0e5"; } +.ri-settings-3-line:before { content: "\f0e6"; } +.ri-settings-4-fill:before { content: "\f0e7"; } +.ri-settings-4-line:before { content: "\f0e8"; } +.ri-settings-5-fill:before { content: "\f0e9"; } +.ri-settings-5-line:before { content: "\f0ea"; } +.ri-settings-6-fill:before { content: "\f0eb"; } +.ri-settings-6-line:before { content: "\f0ec"; } +.ri-settings-fill:before { content: "\f0ed"; } +.ri-settings-line:before { content: "\f0ee"; } +.ri-shape-2-fill:before { content: "\f0ef"; } +.ri-shape-2-line:before { content: "\f0f0"; } +.ri-shape-fill:before { content: "\f0f1"; } +.ri-shape-line:before { content: "\f0f2"; } +.ri-share-box-fill:before { content: "\f0f3"; } +.ri-share-box-line:before { content: "\f0f4"; } +.ri-share-circle-fill:before { content: "\f0f5"; } +.ri-share-circle-line:before { content: "\f0f6"; } +.ri-share-fill:before { content: "\f0f7"; } +.ri-share-forward-2-fill:before { content: "\f0f8"; } +.ri-share-forward-2-line:before { content: "\f0f9"; } +.ri-share-forward-box-fill:before { content: "\f0fa"; } +.ri-share-forward-box-line:before { content: "\f0fb"; } +.ri-share-forward-fill:before { content: "\f0fc"; } +.ri-share-forward-line:before { content: "\f0fd"; } +.ri-share-line:before { content: "\f0fe"; } +.ri-shield-check-fill:before { content: "\f0ff"; } +.ri-shield-check-line:before { content: "\f100"; } +.ri-shield-cross-fill:before { content: "\f101"; } +.ri-shield-cross-line:before { content: "\f102"; } +.ri-shield-fill:before { content: "\f103"; } +.ri-shield-flash-fill:before { content: "\f104"; } +.ri-shield-flash-line:before { content: "\f105"; } +.ri-shield-keyhole-fill:before { content: "\f106"; } +.ri-shield-keyhole-line:before { content: "\f107"; } +.ri-shield-line:before { content: "\f108"; } +.ri-shield-star-fill:before { content: "\f109"; } +.ri-shield-star-line:before { content: "\f10a"; } +.ri-shield-user-fill:before { content: "\f10b"; } +.ri-shield-user-line:before { content: "\f10c"; } +.ri-ship-2-fill:before { content: "\f10d"; } +.ri-ship-2-line:before { content: "\f10e"; } +.ri-ship-fill:before { content: "\f10f"; } +.ri-ship-line:before { content: "\f110"; } +.ri-shirt-fill:before { content: "\f111"; } +.ri-shirt-line:before { content: "\f112"; } +.ri-shopping-bag-2-fill:before { content: "\f113"; } +.ri-shopping-bag-2-line:before { content: "\f114"; } +.ri-shopping-bag-3-fill:before { content: "\f115"; } +.ri-shopping-bag-3-line:before { content: "\f116"; } +.ri-shopping-bag-fill:before { content: "\f117"; } +.ri-shopping-bag-line:before { content: "\f118"; } +.ri-shopping-basket-2-fill:before { content: "\f119"; } +.ri-shopping-basket-2-line:before { content: "\f11a"; } +.ri-shopping-basket-fill:before { content: "\f11b"; } +.ri-shopping-basket-line:before { content: "\f11c"; } +.ri-shopping-cart-2-fill:before { content: "\f11d"; } +.ri-shopping-cart-2-line:before { content: "\f11e"; } +.ri-shopping-cart-fill:before { content: "\f11f"; } +.ri-shopping-cart-line:before { content: "\f120"; } +.ri-showers-fill:before { content: "\f121"; } +.ri-showers-line:before { content: "\f122"; } +.ri-shuffle-fill:before { content: "\f123"; } +.ri-shuffle-line:before { content: "\f124"; } +.ri-shut-down-fill:before { content: "\f125"; } +.ri-shut-down-line:before { content: "\f126"; } +.ri-side-bar-fill:before { content: "\f127"; } +.ri-side-bar-line:before { content: "\f128"; } +.ri-signal-tower-fill:before { content: "\f129"; } +.ri-signal-tower-line:before { content: "\f12a"; } +.ri-signal-wifi-1-fill:before { content: "\f12b"; } +.ri-signal-wifi-1-line:before { content: "\f12c"; } +.ri-signal-wifi-2-fill:before { content: "\f12d"; } +.ri-signal-wifi-2-line:before { content: "\f12e"; } +.ri-signal-wifi-3-fill:before { content: "\f12f"; } +.ri-signal-wifi-3-line:before { content: "\f130"; } +.ri-signal-wifi-error-fill:before { content: "\f131"; } +.ri-signal-wifi-error-line:before { content: "\f132"; } +.ri-signal-wifi-fill:before { content: "\f133"; } +.ri-signal-wifi-line:before { content: "\f134"; } +.ri-signal-wifi-off-fill:before { content: "\f135"; } +.ri-signal-wifi-off-line:before { content: "\f136"; } +.ri-sim-card-2-fill:before { content: "\f137"; } +.ri-sim-card-2-line:before { content: "\f138"; } +.ri-sim-card-fill:before { content: "\f139"; } +.ri-sim-card-line:before { content: "\f13a"; } +.ri-single-quotes-l:before { content: "\f13b"; } +.ri-single-quotes-r:before { content: "\f13c"; } +.ri-sip-fill:before { content: "\f13d"; } +.ri-sip-line:before { content: "\f13e"; } +.ri-skip-back-fill:before { content: "\f13f"; } +.ri-skip-back-line:before { content: "\f140"; } +.ri-skip-back-mini-fill:before { content: "\f141"; } +.ri-skip-back-mini-line:before { content: "\f142"; } +.ri-skip-forward-fill:before { content: "\f143"; } +.ri-skip-forward-line:before { content: "\f144"; } +.ri-skip-forward-mini-fill:before { content: "\f145"; } +.ri-skip-forward-mini-line:before { content: "\f146"; } +.ri-skull-2-fill:before { content: "\f147"; } +.ri-skull-2-line:before { content: "\f148"; } +.ri-skull-fill:before { content: "\f149"; } +.ri-skull-line:before { content: "\f14a"; } +.ri-skype-fill:before { content: "\f14b"; } +.ri-skype-line:before { content: "\f14c"; } +.ri-slack-fill:before { content: "\f14d"; } +.ri-slack-line:before { content: "\f14e"; } +.ri-slice-fill:before { content: "\f14f"; } +.ri-slice-line:before { content: "\f150"; } +.ri-slideshow-2-fill:before { content: "\f151"; } +.ri-slideshow-2-line:before { content: "\f152"; } +.ri-slideshow-3-fill:before { content: "\f153"; } +.ri-slideshow-3-line:before { content: "\f154"; } +.ri-slideshow-4-fill:before { content: "\f155"; } +.ri-slideshow-4-line:before { content: "\f156"; } +.ri-slideshow-fill:before { content: "\f157"; } +.ri-slideshow-line:before { content: "\f158"; } +.ri-smartphone-fill:before { content: "\f159"; } +.ri-smartphone-line:before { content: "\f15a"; } +.ri-snapchat-fill:before { content: "\f15b"; } +.ri-snapchat-line:before { content: "\f15c"; } +.ri-snowy-fill:before { content: "\f15d"; } +.ri-snowy-line:before { content: "\f15e"; } +.ri-sort-asc:before { content: "\f15f"; } +.ri-sort-desc:before { content: "\f160"; } +.ri-sound-module-fill:before { content: "\f161"; } +.ri-sound-module-line:before { content: "\f162"; } +.ri-soundcloud-fill:before { content: "\f163"; } +.ri-soundcloud-line:before { content: "\f164"; } +.ri-space-ship-fill:before { content: "\f165"; } +.ri-space-ship-line:before { content: "\f166"; } +.ri-space:before { content: "\f167"; } +.ri-spam-2-fill:before { content: "\f168"; } +.ri-spam-2-line:before { content: "\f169"; } +.ri-spam-3-fill:before { content: "\f16a"; } +.ri-spam-3-line:before { content: "\f16b"; } +.ri-spam-fill:before { content: "\f16c"; } +.ri-spam-line:before { content: "\f16d"; } +.ri-speaker-2-fill:before { content: "\f16e"; } +.ri-speaker-2-line:before { content: "\f16f"; } +.ri-speaker-3-fill:before { content: "\f170"; } +.ri-speaker-3-line:before { content: "\f171"; } +.ri-speaker-fill:before { content: "\f172"; } +.ri-speaker-line:before { content: "\f173"; } +.ri-spectrum-fill:before { content: "\f174"; } +.ri-spectrum-line:before { content: "\f175"; } +.ri-speed-fill:before { content: "\f176"; } +.ri-speed-line:before { content: "\f177"; } +.ri-speed-mini-fill:before { content: "\f178"; } +.ri-speed-mini-line:before { content: "\f179"; } +.ri-split-cells-horizontal:before { content: "\f17a"; } +.ri-split-cells-vertical:before { content: "\f17b"; } +.ri-spotify-fill:before { content: "\f17c"; } +.ri-spotify-line:before { content: "\f17d"; } +.ri-spy-fill:before { content: "\f17e"; } +.ri-spy-line:before { content: "\f17f"; } +.ri-stack-fill:before { content: "\f180"; } +.ri-stack-line:before { content: "\f181"; } +.ri-stack-overflow-fill:before { content: "\f182"; } +.ri-stack-overflow-line:before { content: "\f183"; } +.ri-stackshare-fill:before { content: "\f184"; } +.ri-stackshare-line:before { content: "\f185"; } +.ri-star-fill:before { content: "\f186"; } +.ri-star-half-fill:before { content: "\f187"; } +.ri-star-half-line:before { content: "\f188"; } +.ri-star-half-s-fill:before { content: "\f189"; } +.ri-star-half-s-line:before { content: "\f18a"; } +.ri-star-line:before { content: "\f18b"; } +.ri-star-s-fill:before { content: "\f18c"; } +.ri-star-s-line:before { content: "\f18d"; } +.ri-star-smile-fill:before { content: "\f18e"; } +.ri-star-smile-line:before { content: "\f18f"; } +.ri-steam-fill:before { content: "\f190"; } +.ri-steam-line:before { content: "\f191"; } +.ri-steering-2-fill:before { content: "\f192"; } +.ri-steering-2-line:before { content: "\f193"; } +.ri-steering-fill:before { content: "\f194"; } +.ri-steering-line:before { content: "\f195"; } +.ri-stethoscope-fill:before { content: "\f196"; } +.ri-stethoscope-line:before { content: "\f197"; } +.ri-sticky-note-2-fill:before { content: "\f198"; } +.ri-sticky-note-2-line:before { content: "\f199"; } +.ri-sticky-note-fill:before { content: "\f19a"; } +.ri-sticky-note-line:before { content: "\f19b"; } +.ri-stock-fill:before { content: "\f19c"; } +.ri-stock-line:before { content: "\f19d"; } +.ri-stop-circle-fill:before { content: "\f19e"; } +.ri-stop-circle-line:before { content: "\f19f"; } +.ri-stop-fill:before { content: "\f1a0"; } +.ri-stop-line:before { content: "\f1a1"; } +.ri-stop-mini-fill:before { content: "\f1a2"; } +.ri-stop-mini-line:before { content: "\f1a3"; } +.ri-store-2-fill:before { content: "\f1a4"; } +.ri-store-2-line:before { content: "\f1a5"; } +.ri-store-3-fill:before { content: "\f1a6"; } +.ri-store-3-line:before { content: "\f1a7"; } +.ri-store-fill:before { content: "\f1a8"; } +.ri-store-line:before { content: "\f1a9"; } +.ri-strikethrough-2:before { content: "\f1aa"; } +.ri-strikethrough:before { content: "\f1ab"; } +.ri-subscript-2:before { content: "\f1ac"; } +.ri-subscript:before { content: "\f1ad"; } +.ri-subtract-fill:before { content: "\f1ae"; } +.ri-subtract-line:before { content: "\f1af"; } +.ri-subway-fill:before { content: "\f1b0"; } +.ri-subway-line:before { content: "\f1b1"; } +.ri-subway-wifi-fill:before { content: "\f1b2"; } +.ri-subway-wifi-line:before { content: "\f1b3"; } +.ri-suitcase-2-fill:before { content: "\f1b4"; } +.ri-suitcase-2-line:before { content: "\f1b5"; } +.ri-suitcase-3-fill:before { content: "\f1b6"; } +.ri-suitcase-3-line:before { content: "\f1b7"; } +.ri-suitcase-fill:before { content: "\f1b8"; } +.ri-suitcase-line:before { content: "\f1b9"; } +.ri-sun-cloudy-fill:before { content: "\f1ba"; } +.ri-sun-cloudy-line:before { content: "\f1bb"; } +.ri-sun-fill:before { content: "\f1bc"; } +.ri-sun-foggy-fill:before { content: "\f1bd"; } +.ri-sun-foggy-line:before { content: "\f1be"; } +.ri-sun-line:before { content: "\f1bf"; } +.ri-superscript-2:before { content: "\f1c0"; } +.ri-superscript:before { content: "\f1c1"; } +.ri-surgical-mask-fill:before { content: "\f1c2"; } +.ri-surgical-mask-line:before { content: "\f1c3"; } +.ri-surround-sound-fill:before { content: "\f1c4"; } +.ri-surround-sound-line:before { content: "\f1c5"; } +.ri-survey-fill:before { content: "\f1c6"; } +.ri-survey-line:before { content: "\f1c7"; } +.ri-swap-box-fill:before { content: "\f1c8"; } +.ri-swap-box-line:before { content: "\f1c9"; } +.ri-swap-fill:before { content: "\f1ca"; } +.ri-swap-line:before { content: "\f1cb"; } +.ri-switch-fill:before { content: "\f1cc"; } +.ri-switch-line:before { content: "\f1cd"; } +.ri-sword-fill:before { content: "\f1ce"; } +.ri-sword-line:before { content: "\f1cf"; } +.ri-syringe-fill:before { content: "\f1d0"; } +.ri-syringe-line:before { content: "\f1d1"; } +.ri-t-box-fill:before { content: "\f1d2"; } +.ri-t-box-line:before { content: "\f1d3"; } +.ri-t-shirt-2-fill:before { content: "\f1d4"; } +.ri-t-shirt-2-line:before { content: "\f1d5"; } +.ri-t-shirt-air-fill:before { content: "\f1d6"; } +.ri-t-shirt-air-line:before { content: "\f1d7"; } +.ri-t-shirt-fill:before { content: "\f1d8"; } +.ri-t-shirt-line:before { content: "\f1d9"; } +.ri-table-2:before { content: "\f1da"; } +.ri-table-alt-fill:before { content: "\f1db"; } +.ri-table-alt-line:before { content: "\f1dc"; } +.ri-table-fill:before { content: "\f1dd"; } +.ri-table-line:before { content: "\f1de"; } +.ri-tablet-fill:before { content: "\f1df"; } +.ri-tablet-line:before { content: "\f1e0"; } +.ri-takeaway-fill:before { content: "\f1e1"; } +.ri-takeaway-line:before { content: "\f1e2"; } +.ri-taobao-fill:before { content: "\f1e3"; } +.ri-taobao-line:before { content: "\f1e4"; } +.ri-tape-fill:before { content: "\f1e5"; } +.ri-tape-line:before { content: "\f1e6"; } +.ri-task-fill:before { content: "\f1e7"; } +.ri-task-line:before { content: "\f1e8"; } +.ri-taxi-fill:before { content: "\f1e9"; } +.ri-taxi-line:before { content: "\f1ea"; } +.ri-taxi-wifi-fill:before { content: "\f1eb"; } +.ri-taxi-wifi-line:before { content: "\f1ec"; } +.ri-team-fill:before { content: "\f1ed"; } +.ri-team-line:before { content: "\f1ee"; } +.ri-telegram-fill:before { content: "\f1ef"; } +.ri-telegram-line:before { content: "\f1f0"; } +.ri-temp-cold-fill:before { content: "\f1f1"; } +.ri-temp-cold-line:before { content: "\f1f2"; } +.ri-temp-hot-fill:before { content: "\f1f3"; } +.ri-temp-hot-line:before { content: "\f1f4"; } +.ri-terminal-box-fill:before { content: "\f1f5"; } +.ri-terminal-box-line:before { content: "\f1f6"; } +.ri-terminal-fill:before { content: "\f1f7"; } +.ri-terminal-line:before { content: "\f1f8"; } +.ri-terminal-window-fill:before { content: "\f1f9"; } +.ri-terminal-window-line:before { content: "\f1fa"; } +.ri-test-tube-fill:before { content: "\f1fb"; } +.ri-test-tube-line:before { content: "\f1fc"; } +.ri-text-direction-l:before { content: "\f1fd"; } +.ri-text-direction-r:before { content: "\f1fe"; } +.ri-text-spacing:before { content: "\f1ff"; } +.ri-text-wrap:before { content: "\f200"; } +.ri-text:before { content: "\f201"; } +.ri-thermometer-fill:before { content: "\f202"; } +.ri-thermometer-line:before { content: "\f203"; } +.ri-thumb-down-fill:before { content: "\f204"; } +.ri-thumb-down-line:before { content: "\f205"; } +.ri-thumb-up-fill:before { content: "\f206"; } +.ri-thumb-up-line:before { content: "\f207"; } +.ri-thunderstorms-fill:before { content: "\f208"; } +.ri-thunderstorms-line:before { content: "\f209"; } +.ri-ticket-2-fill:before { content: "\f20a"; } +.ri-ticket-2-line:before { content: "\f20b"; } +.ri-ticket-fill:before { content: "\f20c"; } +.ri-ticket-line:before { content: "\f20d"; } +.ri-time-fill:before { content: "\f20e"; } +.ri-time-line:before { content: "\f20f"; } +.ri-timer-2-fill:before { content: "\f210"; } +.ri-timer-2-line:before { content: "\f211"; } +.ri-timer-fill:before { content: "\f212"; } +.ri-timer-flash-fill:before { content: "\f213"; } +.ri-timer-flash-line:before { content: "\f214"; } +.ri-timer-line:before { content: "\f215"; } +.ri-todo-fill:before { content: "\f216"; } +.ri-todo-line:before { content: "\f217"; } +.ri-toggle-fill:before { content: "\f218"; } +.ri-toggle-line:before { content: "\f219"; } +.ri-tools-fill:before { content: "\f21a"; } +.ri-tools-line:before { content: "\f21b"; } +.ri-tornado-fill:before { content: "\f21c"; } +.ri-tornado-line:before { content: "\f21d"; } +.ri-trademark-fill:before { content: "\f21e"; } +.ri-trademark-line:before { content: "\f21f"; } +.ri-traffic-light-fill:before { content: "\f220"; } +.ri-traffic-light-line:before { content: "\f221"; } +.ri-train-fill:before { content: "\f222"; } +.ri-train-line:before { content: "\f223"; } +.ri-train-wifi-fill:before { content: "\f224"; } +.ri-train-wifi-line:before { content: "\f225"; } +.ri-translate-2:before { content: "\f226"; } +.ri-translate:before { content: "\f227"; } +.ri-travesti-fill:before { content: "\f228"; } +.ri-travesti-line:before { content: "\f229"; } +.ri-treasure-map-fill:before { content: "\f22a"; } +.ri-treasure-map-line:before { content: "\f22b"; } +.ri-trello-fill:before { content: "\f22c"; } +.ri-trello-line:before { content: "\f22d"; } +.ri-trophy-fill:before { content: "\f22e"; } +.ri-trophy-line:before { content: "\f22f"; } +.ri-truck-fill:before { content: "\f230"; } +.ri-truck-line:before { content: "\f231"; } +.ri-tumblr-fill:before { content: "\f232"; } +.ri-tumblr-line:before { content: "\f233"; } +.ri-tv-2-fill:before { content: "\f234"; } +.ri-tv-2-line:before { content: "\f235"; } +.ri-tv-fill:before { content: "\f236"; } +.ri-tv-line:before { content: "\f237"; } +.ri-twitch-fill:before { content: "\f238"; } +.ri-twitch-line:before { content: "\f239"; } +.ri-twitter-fill:before { content: "\f23a"; } +.ri-twitter-line:before { content: "\f23b"; } +.ri-typhoon-fill:before { content: "\f23c"; } +.ri-typhoon-line:before { content: "\f23d"; } +.ri-u-disk-fill:before { content: "\f23e"; } +.ri-u-disk-line:before { content: "\f23f"; } +.ri-ubuntu-fill:before { content: "\f240"; } +.ri-ubuntu-line:before { content: "\f241"; } +.ri-umbrella-fill:before { content: "\f242"; } +.ri-umbrella-line:before { content: "\f243"; } +.ri-underline:before { content: "\f244"; } +.ri-uninstall-fill:before { content: "\f245"; } +.ri-uninstall-line:before { content: "\f246"; } +.ri-unsplash-fill:before { content: "\f247"; } +.ri-unsplash-line:before { content: "\f248"; } +.ri-upload-2-fill:before { content: "\f249"; } +.ri-upload-2-line:before { content: "\f24a"; } +.ri-upload-cloud-2-fill:before { content: "\f24b"; } +.ri-upload-cloud-2-line:before { content: "\f24c"; } +.ri-upload-cloud-fill:before { content: "\f24d"; } +.ri-upload-cloud-line:before { content: "\f24e"; } +.ri-upload-fill:before { content: "\f24f"; } +.ri-upload-line:before { content: "\f250"; } +.ri-usb-fill:before { content: "\f251"; } +.ri-usb-line:before { content: "\f252"; } +.ri-user-2-fill:before { content: "\f253"; } +.ri-user-2-line:before { content: "\f254"; } +.ri-user-3-fill:before { content: "\f255"; } +.ri-user-3-line:before { content: "\f256"; } +.ri-user-4-fill:before { content: "\f257"; } +.ri-user-4-line:before { content: "\f258"; } +.ri-user-5-fill:before { content: "\f259"; } +.ri-user-5-line:before { content: "\f25a"; } +.ri-user-6-fill:before { content: "\f25b"; } +.ri-user-6-line:before { content: "\f25c"; } +.ri-user-add-fill:before { content: "\f25d"; } +.ri-user-add-line:before { content: "\f25e"; } +.ri-user-fill:before { content: "\f25f"; } +.ri-user-follow-fill:before { content: "\f260"; } +.ri-user-follow-line:before { content: "\f261"; } +.ri-user-heart-fill:before { content: "\f262"; } +.ri-user-heart-line:before { content: "\f263"; } +.ri-user-line:before { content: "\f264"; } +.ri-user-location-fill:before { content: "\f265"; } +.ri-user-location-line:before { content: "\f266"; } +.ri-user-received-2-fill:before { content: "\f267"; } +.ri-user-received-2-line:before { content: "\f268"; } +.ri-user-received-fill:before { content: "\f269"; } +.ri-user-received-line:before { content: "\f26a"; } +.ri-user-search-fill:before { content: "\f26b"; } +.ri-user-search-line:before { content: "\f26c"; } +.ri-user-settings-fill:before { content: "\f26d"; } +.ri-user-settings-line:before { content: "\f26e"; } +.ri-user-shared-2-fill:before { content: "\f26f"; } +.ri-user-shared-2-line:before { content: "\f270"; } +.ri-user-shared-fill:before { content: "\f271"; } +.ri-user-shared-line:before { content: "\f272"; } +.ri-user-smile-fill:before { content: "\f273"; } +.ri-user-smile-line:before { content: "\f274"; } +.ri-user-star-fill:before { content: "\f275"; } +.ri-user-star-line:before { content: "\f276"; } +.ri-user-unfollow-fill:before { content: "\f277"; } +.ri-user-unfollow-line:before { content: "\f278"; } +.ri-user-voice-fill:before { content: "\f279"; } +.ri-user-voice-line:before { content: "\f27a"; } +.ri-video-add-fill:before { content: "\f27b"; } +.ri-video-add-line:before { content: "\f27c"; } +.ri-video-chat-fill:before { content: "\f27d"; } +.ri-video-chat-line:before { content: "\f27e"; } +.ri-video-download-fill:before { content: "\f27f"; } +.ri-video-download-line:before { content: "\f280"; } +.ri-video-fill:before { content: "\f281"; } +.ri-video-line:before { content: "\f282"; } +.ri-video-upload-fill:before { content: "\f283"; } +.ri-video-upload-line:before { content: "\f284"; } +.ri-vidicon-2-fill:before { content: "\f285"; } +.ri-vidicon-2-line:before { content: "\f286"; } +.ri-vidicon-fill:before { content: "\f287"; } +.ri-vidicon-line:before { content: "\f288"; } +.ri-vimeo-fill:before { content: "\f289"; } +.ri-vimeo-line:before { content: "\f28a"; } +.ri-vip-crown-2-fill:before { content: "\f28b"; } +.ri-vip-crown-2-line:before { content: "\f28c"; } +.ri-vip-crown-fill:before { content: "\f28d"; } +.ri-vip-crown-line:before { content: "\f28e"; } +.ri-vip-diamond-fill:before { content: "\f28f"; } +.ri-vip-diamond-line:before { content: "\f290"; } +.ri-vip-fill:before { content: "\f291"; } +.ri-vip-line:before { content: "\f292"; } +.ri-virus-fill:before { content: "\f293"; } +.ri-virus-line:before { content: "\f294"; } +.ri-visa-fill:before { content: "\f295"; } +.ri-visa-line:before { content: "\f296"; } +.ri-voice-recognition-fill:before { content: "\f297"; } +.ri-voice-recognition-line:before { content: "\f298"; } +.ri-voiceprint-fill:before { content: "\f299"; } +.ri-voiceprint-line:before { content: "\f29a"; } +.ri-volume-down-fill:before { content: "\f29b"; } +.ri-volume-down-line:before { content: "\f29c"; } +.ri-volume-mute-fill:before { content: "\f29d"; } +.ri-volume-mute-line:before { content: "\f29e"; } +.ri-volume-off-vibrate-fill:before { content: "\f29f"; } +.ri-volume-off-vibrate-line:before { content: "\f2a0"; } +.ri-volume-up-fill:before { content: "\f2a1"; } +.ri-volume-up-line:before { content: "\f2a2"; } +.ri-volume-vibrate-fill:before { content: "\f2a3"; } +.ri-volume-vibrate-line:before { content: "\f2a4"; } +.ri-vuejs-fill:before { content: "\f2a5"; } +.ri-vuejs-line:before { content: "\f2a6"; } +.ri-walk-fill:before { content: "\f2a7"; } +.ri-walk-line:before { content: "\f2a8"; } +.ri-wallet-2-fill:before { content: "\f2a9"; } +.ri-wallet-2-line:before { content: "\f2aa"; } +.ri-wallet-3-fill:before { content: "\f2ab"; } +.ri-wallet-3-line:before { content: "\f2ac"; } +.ri-wallet-fill:before { content: "\f2ad"; } +.ri-wallet-line:before { content: "\f2ae"; } +.ri-water-flash-fill:before { content: "\f2af"; } +.ri-water-flash-line:before { content: "\f2b0"; } +.ri-webcam-fill:before { content: "\f2b1"; } +.ri-webcam-line:before { content: "\f2b2"; } +.ri-wechat-2-fill:before { content: "\f2b3"; } +.ri-wechat-2-line:before { content: "\f2b4"; } +.ri-wechat-fill:before { content: "\f2b5"; } +.ri-wechat-line:before { content: "\f2b6"; } +.ri-wechat-pay-fill:before { content: "\f2b7"; } +.ri-wechat-pay-line:before { content: "\f2b8"; } +.ri-weibo-fill:before { content: "\f2b9"; } +.ri-weibo-line:before { content: "\f2ba"; } +.ri-whatsapp-fill:before { content: "\f2bb"; } +.ri-whatsapp-line:before { content: "\f2bc"; } +.ri-wheelchair-fill:before { content: "\f2bd"; } +.ri-wheelchair-line:before { content: "\f2be"; } +.ri-wifi-fill:before { content: "\f2bf"; } +.ri-wifi-line:before { content: "\f2c0"; } +.ri-wifi-off-fill:before { content: "\f2c1"; } +.ri-wifi-off-line:before { content: "\f2c2"; } +.ri-window-2-fill:before { content: "\f2c3"; } +.ri-window-2-line:before { content: "\f2c4"; } +.ri-window-fill:before { content: "\f2c5"; } +.ri-window-line:before { content: "\f2c6"; } +.ri-windows-fill:before { content: "\f2c7"; } +.ri-windows-line:before { content: "\f2c8"; } +.ri-windy-fill:before { content: "\f2c9"; } +.ri-windy-line:before { content: "\f2ca"; } +.ri-wireless-charging-fill:before { content: "\f2cb"; } +.ri-wireless-charging-line:before { content: "\f2cc"; } +.ri-women-fill:before { content: "\f2cd"; } +.ri-women-line:before { content: "\f2ce"; } +.ri-wubi-input:before { content: "\f2cf"; } +.ri-xbox-fill:before { content: "\f2d0"; } +.ri-xbox-line:before { content: "\f2d1"; } +.ri-xing-fill:before { content: "\f2d2"; } +.ri-xing-line:before { content: "\f2d3"; } +.ri-youtube-fill:before { content: "\f2d4"; } +.ri-youtube-line:before { content: "\f2d5"; } +.ri-zcool-fill:before { content: "\f2d6"; } +.ri-zcool-line:before { content: "\f2d7"; } +.ri-zhihu-fill:before { content: "\f2d8"; } +.ri-zhihu-line:before { content: "\f2d9"; } +.ri-zoom-in-fill:before { content: "\f2da"; } +.ri-zoom-in-line:before { content: "\f2db"; } +.ri-zoom-out-fill:before { content: "\f2dc"; } +.ri-zoom-out-line:before { content: "\f2dd"; } +.ri-zzz-fill:before { content: "\f2de"; } +.ri-zzz-line:before { content: "\f2df"; } + diff --git a/styles/rtl.css b/styles/rtl.css new file mode 100644 index 0000000..f4b0166 --- /dev/null +++ b/styles/rtl.css @@ -0,0 +1,780 @@ +[dir=rtl] table, [dir=rtl] th, [dir=rtl] tr, [dir=rtl] td { + text-align: right; +} +[dir=rtl] .float-left { + float: initial; + float: right; +} +[dir=rtl] .float-right { + float: initial; + float: left; +} +[dir=rtl] .ml-auto { + margin-left: 0 !important; + margin-right: auto !important; +} +[dir=rtl] .ml-1 { + margin-left: 0 !important; + margin-right: 8px !important; +} +[dir=rtl] .ml-2 { + margin-left: 0 !important; + margin-right: 16px !important; +} +[dir=rtl] .ml-3 { + margin-left: 0 !important; + margin-right: 24px !important; +} +[dir=rtl] .ml-4 { + margin-left: 0 !important; + margin-right: 32px !important; +} +[dir=rtl] .ml-5 { + margin-left: 0 !important; + margin-right: 40px !important; +} +[dir=rtl] .mr-1 { + margin-right: 0 !important; + margin-left: 8px !important; +} +[dir=rtl] .mr-2 { + margin-right: 0 !important; + margin-left: 16px !important; +} +[dir=rtl] .mr-3 { + margin-right: 0 !important; + margin-left: 24px !important; +} +[dir=rtl] .mr-4 { + margin-right: 0 !important; + margin-left: 32px !important; +} +[dir=rtl] .mr-5 { + margin-right: 0 !important; + margin-left: 40px !important; +} +[dir=rtl] .ml-2px { + margin-left: 0 !important; + margin-right: 2px !important; +} +[dir=rtl] .ml-3px { + margin-left: 0 !important; + margin-right: 3px !important; +} +[dir=rtl] .ml-5px { + margin-left: 0 !important; + margin-right: 5px !important; +} +[dir=rtl] .ml-6px { + margin-left: 0 !important; + margin-right: 6px !important; +} +[dir=rtl] .ml-7px { + margin-left: 0 !important; + margin-right: 7px !important; +} +[dir=rtl] .ml-8px { + margin-left: 0 !important; + margin-right: 8px !important; +} +[dir=rtl] .ml-9px { + margin-left: 0 !important; + margin-right: 9px !important; +} +[dir=rtl] .ml-10px { + margin-left: 0 !important; + margin-right: 10px !important; +} +[dir=rtl] .ml-11px { + margin-left: 0 !important; + margin-right: 11px !important; +} +[dir=rtl] .ml-12px { + margin-left: 0 !important; + margin-right: 12px !important; +} +[dir=rtl] .ml-13px { + margin-left: 0 !important; + margin-right: 13px !important; +} +[dir=rtl] .ml-14px { + margin-left: 0 !important; + margin-right: 14px !important; +} +[dir=rtl] .ml-15px { + margin-left: 0 !important; + margin-right: 15px !important; +} +[dir=rtl] .ml-16px { + margin-left: 0 !important; + margin-right: 16px !important; +} +[dir=rtl] .ml-17px { + margin-left: 0 !important; + margin-right: 17px !important; +} +[dir=rtl] .ml-18px { + margin-left: 0 !important; + margin-right: 18px !important; +} +[dir=rtl] .ml-19px { + margin-left: 0 !important; + margin-right: 19px !important; +} +[dir=rtl] .ml-20px { + margin-left: 0 !important; + margin-right: 20px !important; +} +[dir=rtl] .ml-21px { + margin-left: 0 !important; + margin-right: 21px !important; +} +[dir=rtl] .ml-22px { + margin-left: 0 !important; + margin-right: 22px !important; +} +[dir=rtl] .ml-23px { + margin-left: 0 !important; + margin-right: 23px !important; +} +[dir=rtl] .ml-24px { + margin-left: 0 !important; + margin-right: 24px !important; +} +[dir=rtl] .ml-25px { + margin-left: 0 !important; + margin-right: 25px !important; +} +[dir=rtl] .ml-26px { + margin-left: 0 !important; + margin-right: 26px !important; +} +[dir=rtl] .ml-27px { + margin-left: 0 !important; + margin-right: 27px !important; +} +[dir=rtl] .ml-28px { + margin-left: 0 !important; + margin-right: 28px !important; +} +[dir=rtl] .ml-29px { + margin-left: 0 !important; + margin-right: 29px !important; +} +[dir=rtl] .ml-30px { + margin-left: 0 !important; + margin-right: 30px !important; +} +[dir=rtl] .ml-2px { + margin-right: 0 !important; + margin-left: 2px !important; +} +[dir=rtl] .ml-3px { + margin-right: 0 !important; + margin-left: 3px !important; +} +[dir=rtl] .mr-5px { + margin-right: 0 !important; + margin-left: 5px !important; +} +[dir=rtl] .mr-6px { + margin-right: 0 !important; + margin-left: 6px !important; +} +[dir=rtl] .mr-7px { + margin-right: 0 !important; + margin-left: 7px !important; +} +[dir=rtl] .ml-8px { + margin-right: 0 !important; + margin-left: 8px !important; +} +[dir=rtl] .mr-9px { + margin-right: 0 !important; + margin-left: 9px !important; +} +[dir=rtl] .mr-10px { + margin-right: 0 !important; + margin-left: 10px !important; +} +[dir=rtl] .mr-11px { + margin-right: 0 !important; + margin-left: 11px !important; +} +[dir=rtl] .mr-12px { + margin-right: 0 !important; + margin-left: 12px !important; +} +[dir=rtl] .mr-13px { + margin-right: 0 !important; + margin-left: 13px !important; +} +[dir=rtl] .mr-14px { + margin-right: 0 !important; + margin-left: 14px !important; +} +[dir=rtl] .mr-15px { + margin-right: 0 !important; + margin-left: 15px !important; +} +[dir=rtl] .mr-16px { + margin-right: 0 !important; + margin-left: 16px !important; +} +[dir=rtl] .mr-17px { + margin-right: 0 !important; + margin-left: 17px !important; +} +[dir=rtl] .mr-18px { + margin-right: 0 !important; + margin-left: 18px !important; +} +[dir=rtl] .mr-19px { + margin-right: 0 !important; + margin-left: 19px !important; +} +[dir=rtl] .mr-20px { + margin-right: 0 !important; + margin-left: 20px !important; +} +[dir=rtl] .mr-21px { + margin-right: 0 !important; + margin-left: 21px !important; +} +[dir=rtl] .mr-22px { + margin-right: 0 !important; + margin-left: 22px !important; +} +[dir=rtl] .mr-23px { + margin-right: 0 !important; + margin-left: 23px !important; +} +[dir=rtl] .mr-24px { + margin-right: 0 !important; + margin-left: 24px !important; +} +[dir=rtl] .mr-25px { + margin-right: 0 !important; + margin-left: 25px !important; +} +[dir=rtl] .mr-26px { + margin-right: 0 !important; + margin-left: 26px !important; +} +[dir=rtl] .mr-27px { + margin-right: 0 !important; + margin-left: 27px !important; +} +[dir=rtl] .mr-28px { + margin-right: 0 !important; + margin-left: 28px !important; +} +[dir=rtl] .mr-29px { + margin-right: 0 !important; + margin-left: 29px !important; +} +[dir=rtl] .mr-30px { + margin-right: 0 !important; + margin-left: 30px !important; +} +[dir=rtl] .pr-5px { + padding-right: 0; + padding-left: 5px; +} +[dir=rtl] .pr-6px { + padding-right: 0; + padding-left: 6px; +} +[dir=rtl] .pr-7px { + padding-right: 0; + padding-left: 7px; +} +[dir=rtl] .pr-8px { + padding-right: 0; + padding-left: 8px; +} +[dir=rtl] .pr-9px { + padding-right: 0; + padding-left: 9px; +} +[dir=rtl] .pr-10px { + padding-right: 0; + padding-left: 10px; +} +[dir=rtl] .pr-11px { + padding-right: 0; + padding-left: 11px; +} +[dir=rtl] .pr-12px { + padding-right: 0; + padding-left: 12px; +} +[dir=rtl] .pr-13px { + padding-right: 0; + padding-left: 13px; +} +[dir=rtl] .pr-14px { + padding-right: 0; + padding-left: 14px; +} +[dir=rtl] .pr-15px { + padding-right: 0; + padding-left: 15px; +} +[dir=rtl] .pr-16px { + padding-right: 0; + padding-left: 16px; +} +[dir=rtl] .pr-17px { + padding-right: 0; + padding-left: 17px; +} +[dir=rtl] .pr-18px { + padding-right: 0; + padding-left: 18px; +} +[dir=rtl] .pr-19px { + padding-right: 0; + padding-left: 19px; +} +[dir=rtl] .pr-20px { + padding-right: 0; + padding-left: 20px; +} +[dir=rtl] .pr-21px { + padding-right: 0; + padding-left: 21px; +} +[dir=rtl] .pr-22px { + padding-right: 0; + padding-left: 22px; +} +[dir=rtl] .pr-23px { + padding-right: 0; + padding-left: 23px; +} +[dir=rtl] .pr-24px { + padding-right: 0; + padding-left: 24px; +} +[dir=rtl] .pr-25px { + padding-right: 0; + padding-left: 25px; +} +[dir=rtl] .pr-26px { + padding-right: 0; + padding-left: 26px; +} +[dir=rtl] .pr-27px { + padding-right: 0; + padding-left: 27px; +} +[dir=rtl] .pr-28px { + padding-right: 0; + padding-left: 28px; +} +[dir=rtl] .pr-29px { + padding-right: 0; + padding-left: 29px; +} +[dir=rtl] .pr-30px { + padding-right: 0; + padding-left: 30px; +} +[dir=rtl] .pr-35px { + padding-right: 0; + padding-left: 35px; +} +[dir=rtl] .pr-40px { + padding-right: 0; + padding-left: 40px; +} +[dir=rtl] .pr-45px { + padding-right: 0; + padding-left: 45px; +} +[dir=rtl] .pr-50px { + padding-right: 0; + padding-left: 50px; +} +[dir=rtl] .pr-55px { + padding-right: 0; + padding-left: 55px; +} +[dir=rtl] .pr-60px { + padding-right: 0; + padding-left: 60px; +} +[dir=rtl] .pl-5px { + padding-left: 0; + padding-right: 5px; +} +[dir=rtl] .pl-6px { + padding-left: 0; + padding-right: 6px; +} +[dir=rtl] .pl-7px { + padding-left: 0; + padding-right: 7px; +} +[dir=rtl] .pl-8px { + padding-left: 0; + padding-right: 8px; +} +[dir=rtl] .pl-9px { + padding-left: 0; + padding-right: 9px; +} +[dir=rtl] .pl-10px { + padding-left: 0; + padding-right: 10px; +} +[dir=rtl] .pl-11px { + padding-left: 0; + padding-right: 11px; +} +[dir=rtl] .pl-12px { + padding-left: 0; + padding-right: 12px; +} +[dir=rtl] .pl-13px { + padding-left: 0; + padding-right: 13px; +} +[dir=rtl] .pl-14px { + padding-left: 0; + padding-right: 14px; +} +[dir=rtl] .pl-15px { + padding-left: 0; + padding-right: 15px; +} +[dir=rtl] .pl-16px { + padding-left: 0; + padding-right: 16px; +} +[dir=rtl] .pl-17px { + padding-left: 0; + padding-right: 17px; +} +[dir=rtl] .pl-18px { + padding-left: 0; + padding-right: 18px; +} +[dir=rtl] .pl-19px { + padding-left: 0; + padding-right: 19px; +} +[dir=rtl] .pl-20px { + padding-left: 0; + padding-right: 20px; +} +[dir=rtl] .pl-21px { + padding-left: 0; + padding-right: 21px; +} +[dir=rtl] .pl-22px { + padding-left: 0; + padding-right: 22px; +} +[dir=rtl] .pl-23px { + padding-left: 0; + padding-right: 23px; +} +[dir=rtl] .pl-24px { + padding-left: 0; + padding-right: 24px; +} +[dir=rtl] .pl-25px { + padding-left: 0; + padding-right: 25px; +} +[dir=rtl] .pl-26px { + padding-left: 0; + padding-right: 26px; +} +[dir=rtl] .pl-27px { + padding-left: 0; + padding-right: 27px; +} +[dir=rtl] .pl-28px { + padding-left: 0; + padding-right: 28px; +} +[dir=rtl] .pl-29px { + padding-left: 0; + padding-right: 29px; +} +[dir=rtl] .pl-30px { + padding-left: 0; + padding-right: 30px; +} +[dir=rtl] .pl-35px { + padding-left: 0; + padding-right: 35px; +} +[dir=rtl] .pl-40px { + padding-left: 0; + padding-right: 40px; +} +[dir=rtl] .pl-45px { + padding-left: 0; + padding-right: 45px; +} +[dir=rtl] .pl-50px { + padding-left: 0; + padding-right: 50px; +} +[dir=rtl] .pl-55px { + padding-left: 0; + padding-right: 55px; +} +[dir=rtl] .pl-60px { + padding-left: 0; + padding-right: 60px; +} +[dir=rtl] .right-5px { + right: auto; + left: 5px; +} +[dir=rtl] .right-6px { + right: auto; + left: 6px; +} +[dir=rtl] .right-7px { + right: auto; + left: 7px; +} +[dir=rtl] .right-8px { + right: auto; + left: 8px; +} +[dir=rtl] .right-9px { + right: auto; + left: 9px; +} +[dir=rtl] .right-10px { + right: auto; + left: 10px; +} +[dir=rtl] .right-11px { + right: auto; + left: 11px; +} +[dir=rtl] .right-12px { + right: auto; + left: 12px; +} +[dir=rtl] .right-13px { + right: auto; + left: 13px; +} +[dir=rtl] .right-14px { + right: auto; + left: 14px; +} +[dir=rtl] .right-15px { + right: auto; + left: 15px; +} +[dir=rtl] .right-16px { + right: auto; + left: 16px; +} +[dir=rtl] .right-17px { + right: auto; + left: 17px; +} +[dir=rtl] .right-18px { + right: auto; + left: 18px; +} +[dir=rtl] .right-19px { + right: auto; + left: 19px; +} +[dir=rtl] .right-20px { + right: auto; + left: 20px; +} +[dir=rtl] .right-21px { + right: auto; + left: 21px; +} +[dir=rtl] .right-22px { + right: auto; + left: 22px; +} +[dir=rtl] .right-23px { + right: auto; + left: 23px; +} +[dir=rtl] .right-24px { + right: auto; + left: 24px; +} +[dir=rtl] .right-25px { + right: auto; + left: 25px; +} +[dir=rtl] .right-26px { + right: auto; + left: 27px; +} +[dir=rtl] .right-28px { + right: auto; + left: 28px; +} +[dir=rtl] .right-29px { + right: auto; + left: 29px; +} +[dir=rtl] .right-30px { + right: auto; + left: 30px; +} +[dir=rtl] .search-form { + margin-right: 20px; + margin-left: 0; +} +[dir=rtl] .LeftSidebarNav { + left: auto; + right: 0; +} +[dir=rtl] .main-wrapper-content { + padding-left: 0; + padding-right: 330px; +} +[dir=rtl] .main-wrapper-content .main-content { + padding-right: 0; + padding-left: 30px; +} +[dir=rtl] .main-wrapper-content.active { + padding-right: 30px; +} +[dir=rtl] .main-wrapper-content.active .LeftSidebarNav { + left: auto; + right: -100%; +} +@media only screen and (max-width: 767px) { + [dir=rtl] .main-wrapper-content .main-content { + padding-left: 15px !important; + padding-right: 15px !important; + } +} +@media only screen and (max-width: 1199px) { + [dir=rtl] .main-wrapper-content { + padding: 0; + } + [dir=rtl] .main-wrapper-content .LeftSidebarNav { + left: auto; + right: -100%; + width: 280px; + } + [dir=rtl] .main-wrapper-content .main-content { + padding-left: 30px; + padding-right: 30px; + } + [dir=rtl] .main-wrapper-content.active { + padding: 0; + } + [dir=rtl] .main-wrapper-content.active .LeftSidebarNav { + left: auto; + right: 0; + } +} +[dir=rtl] .apexcharts-legend-marker { + margin-right: 0; + margin-left: 3px; +} +[dir=rtl] .apexcharts-yaxis, [dir=rtl] .apexcharts-subtitle-text, [dir=rtl] .apexcharts-title-text { + direction: ltr; +} +[dir=rtl] .css-1qlw4ct-MuiPaper-root-MuiMenu-paper-MuiPaper-root-MuiPopover-paper:before, [dir=rtl] .css-1mpld98-MuiPaper-root-MuiMenu-paper-MuiPaper-root-MuiPopover-paper:before { + display: none; +} +[dir=rtl] .recharts-legend-item .recharts-surface { + margin-right: 0; + margin-left: 4px; +} +[dir=rtl] .ls-search-form input.MuiInputBase-input { + padding-right: 15px; +} +[dir=rtl] .ls-search-form .search-btn { + right: auto; + left: 0; +} +[dir=rtl] .css-s2uf1z { + text-align: left; +} +[dir=rtl] .MuiAlert-icon { + margin-right: 0; + margin-left: 12px; +} +[dir=rtl] .input-label label { + left: auto; + right: 0; + transform: translate(-15px, 16px) scale(1); +} +[dir=rtl] .css-b1hphm-MuiButtonBase-root-MuiChip-root .MuiChip-deleteIcon { + margin-right: 0; + margin-left: 10px; +} +[dir=rtl] .avatars-gap .MuiAvatar-root { + margin-left: 16px; +} +[dir=rtl] .avatars-gap .MuiAvatar-root:last-child { + margin-left: 0; +} +[dir=rtl] .gadge-gap .MuiBadge-root { + margin-left: 16px; +} +[dir=rtl] .gadge-gap .MuiBadge-root:last-child { + margin-left: 0; +} +[dir=rtl] .MuiButtonBase-root .MuiButton-startIcon { + margin-right: 0; + margin-left: 8px; +} +[dir=rtl] .MuiAlert-root .css-ki1hdl-MuiAlert-action { + margin-left: -8px; + margin-right: auto; +} +[dir=rtl] .chip-gap-for-rtl .MuiChip-root { + margin-left: 0; + margin-right: 15px; +} +[dir=rtl] .chip-gap-for-rtl .MuiChip-root:first-child { + margin-right: 0; +} +[dir=rtl] .direction-ltr { + direction: ltr; +} +[dir=rtl] .rtl-step-label .MuiStepLabel-iconContainer { + padding-right: 0; + padding-left: 10px; +} +[dir=rtl] .scroll-to-top i { + right: auto; + left: 20px; +} +[dir=rtl] .control-panel-modal { + right: auto; + left: -100%; +} +[dir=rtl] .control-panel-modal.show { + right: auto; + left: 0; +} +[dir=rtl] .control-panel-modal .settings-btn { + right: auto; + left: 15px; +} +[dir=rtl] .control-panel-dialog { + margin-left: 0; + margin-right: auto; +} +[dir=rtl] .progressIcon { + right: 7px; + margin: 0; +}/*# sourceMappingURL=rtl.css.map */ \ No newline at end of file diff --git a/styles/rtl.css.map b/styles/rtl.css.map new file mode 100644 index 0000000..12b1665 --- /dev/null +++ b/styles/rtl.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["rtl.scss","rtl.css"],"names":[],"mappings":"AAEE;EACE,iBAAA;ACDJ;ADKE;EACE,cAAA;EACA,YAAA;ACHJ;ADKE;EACE,cAAA;EACA,WAAA;ACHJ;ADOE;EACE,yBAAA;EACA,6BAAA;ACLJ;ADOE;EACE,yBAAA;EACA,4BAAA;ACLJ;ADOE;EACE,yBAAA;EACA,6BAAA;ACLJ;ADOE;EACE,yBAAA;EACA,6BAAA;ACLJ;ADOE;EACE,yBAAA;EACA,6BAAA;ACLJ;ADOE;EACE,yBAAA;EACA,6BAAA;ACLJ;ADSE;EACE,0BAAA;EACA,2BAAA;ACPJ;ADSE;EACE,0BAAA;EACA,4BAAA;ACPJ;ADSE;EACE,0BAAA;EACA,4BAAA;ACPJ;ADSE;EACE,0BAAA;EACA,4BAAA;ACPJ;ADSE;EACE,0BAAA;EACA,4BAAA;ACPJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,4BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADWE;EACE,yBAAA;EACA,6BAAA;ACTJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,2BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADaE;EACE,0BAAA;EACA,4BAAA;ACXJ;ADeE;EACE,gBAAA;EACA,iBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,iBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,iBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,iBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,iBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADeE;EACE,gBAAA;EACA,kBAAA;ACbJ;ADiBE;EACE,eAAA;EACA,kBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,kBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,kBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,kBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,kBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADiBE;EACE,eAAA;EACA,mBAAA;ACfJ;ADmBE;EACE,WAAA;EACA,SAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,SAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,SAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,SAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,SAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADmBE;EACE,WAAA;EACA,UAAA;ACjBJ;ADqBE;EACE,kBAAA;EACA,cAAA;ACnBJ;ADuBE;EACE,UAAA;EACA,QAAA;ACrBJ;ADyBE;EACE,eAAA;EACA,oBAAA;ACvBJ;ADwBI;EACE,gBAAA;EACA,kBAAA;ACtBN;ADwBI;EACE,mBAAA;ACtBN;ADuBM;EACE,UAAA;EACA,YAAA;ACrBR;AD0BE;EAEI;IACE,6BAAA;IACA,8BAAA;ECzBN;AACF;AD6BE;EACE;IACE,UAAA;EC3BJ;ED6BI;IACE,UAAA;IACA,YAAA;IACA,YAAA;EC3BN;ED6BI;IACE,kBAAA;IACA,mBAAA;EC3BN;ED8BI;IACE,UAAA;EC5BN;ED8BM;IACE,UAAA;IACA,QAAA;EC5BR;AACF;ADkCE;EACE,eAAA;EACA,gBAAA;AChCJ;ADkCE;EACE,cAAA;AChCJ;ADoCI;EACE,aAAA;AClCN;ADuCI;EACE,eAAA;EACA,gBAAA;ACrCN;AD2CI;EACE,mBAAA;ACzCN;AD2CI;EACE,WAAA;EACA,OAAA;ACzCN;AD6CE;EACE,gBAAA;AC3CJ;AD8CE;EACE,eAAA;EACA,iBAAA;AC5CJ;ADgDI;EACE,UAAA;EACA,QAAA;EACA,0CAAA;AC9CN;ADkDE;EACE,eAAA;EACA,iBAAA;AChDJ;ADoDI;EACE,iBAAA;AClDN;ADmDM;EACE,cAAA;ACjDR;ADsDI;EACE,iBAAA;ACpDN;ADqDM;EACE,cAAA;ACnDR;ADyDI;EACE,eAAA;EACA,gBAAA;ACvDN;AD2DI;EACE,iBAAA;EACA,kBAAA;ACzDN;AD6DI;EACE,cAAA;EACA,kBAAA;AC3DN;AD4DM;EACE,eAAA;AC1DR;AD+DE;EACE,cAAA;AC7DJ;AD+DE;EACE,gBAAA;EACA,kBAAA;AC7DJ;ADkEI;EACE,WAAA;EACA,UAAA;AChEN;ADqEE;EACE,WAAA;EACA,WAAA;ACnEJ;ADqEI;EACE,WAAA;EACA,OAAA;ACnEN;ADsEI;EACE,WAAA;EACA,UAAA;ACpEN;ADuEE;EACE,cAAA;EACA,kBAAA;ACrEJ;ADwEE;EACE,UAAA;EACA,SAAA;ACtEJ","file":"rtl.css"} \ No newline at end of file diff --git a/styles/rtl.scss b/styles/rtl.scss new file mode 100644 index 0000000..f36d6d8 --- /dev/null +++ b/styles/rtl.scss @@ -0,0 +1,853 @@ +[dir="rtl"] { + + table, th, tr, td { + text-align: right; + } + + // Float + .float-left { + float: initial; + float: right; + } + .float-right { + float: initial; + float: left; + } + + // Margin Left + .ml-auto { + margin-left: 0 !important; + margin-right: auto !important; + } + .ml-1 { + margin-left: 0 !important; + margin-right: 8px !important; + } + .ml-2 { + margin-left: 0 !important; + margin-right: 16px !important; + } + .ml-3 { + margin-left: 0 !important; + margin-right: 24px !important; + } + .ml-4 { + margin-left: 0 !important; + margin-right: 32px !important; + } + .ml-5 { + margin-left: 0 !important; + margin-right: 40px !important; + } + + // Margin Right + .mr-1 { + margin-right: 0 !important; + margin-left: 8px !important; + } + .mr-2 { + margin-right: 0 !important; + margin-left: 16px !important; + } + .mr-3 { + margin-right: 0 !important; + margin-left: 24px !important; + } + .mr-4 { + margin-right: 0 !important; + margin-left: 32px !important; + } + .mr-5 { + margin-right: 0 !important; + margin-left: 40px !important; + } + + // Margin Left + .ml-2px { + margin-left: 0 !important; + margin-right: 2px !important; + } + .ml-3px { + margin-left: 0 !important; + margin-right: 3px !important; + } + .ml-5px { + margin-left: 0 !important; + margin-right: 5px !important; + } + .ml-6px { + margin-left: 0 !important; + margin-right: 6px !important; + } + .ml-7px { + margin-left: 0 !important; + margin-right: 7px !important; + } + .ml-8px { + margin-left: 0 !important; + margin-right: 8px !important; + } + .ml-9px { + margin-left: 0 !important; + margin-right: 9px !important; + } + .ml-10px { + margin-left: 0 !important; + margin-right: 10px !important; + } + .ml-11px { + margin-left: 0 !important; + margin-right: 11px !important; + } + .ml-12px { + margin-left: 0 !important; + margin-right: 12px !important; + } + .ml-13px { + margin-left: 0 !important; + margin-right: 13px !important; + } + .ml-14px { + margin-left: 0 !important; + margin-right: 14px !important; + } + .ml-15px { + margin-left: 0 !important; + margin-right: 15px !important; + } + .ml-16px { + margin-left: 0 !important; + margin-right: 16px !important; + } + .ml-17px { + margin-left: 0 !important; + margin-right: 17px !important; + } + .ml-18px { + margin-left: 0 !important; + margin-right: 18px !important; + } + .ml-19px { + margin-left: 0 !important; + margin-right: 19px !important; + } + .ml-20px { + margin-left: 0 !important; + margin-right: 20px !important; + } + .ml-21px { + margin-left: 0 !important; + margin-right: 21px !important; + } + .ml-22px { + margin-left: 0 !important; + margin-right: 22px !important; + } + .ml-23px { + margin-left: 0 !important; + margin-right: 23px !important; + } + .ml-24px { + margin-left: 0 !important; + margin-right: 24px !important; + } + .ml-25px { + margin-left: 0 !important; + margin-right: 25px !important; + } + .ml-26px { + margin-left: 0 !important; + margin-right: 26px !important; + } + .ml-27px { + margin-left: 0 !important; + margin-right: 27px !important; + } + .ml-28px { + margin-left: 0 !important; + margin-right: 28px !important; + } + .ml-29px { + margin-left: 0 !important; + margin-right: 29px !important; + } + .ml-30px { + margin-left: 0 !important; + margin-right: 30px !important; + } + + // Margin Right + .ml-2px { + margin-right: 0 !important; + margin-left: 2px !important; + } + .ml-3px { + margin-right: 0 !important; + margin-left: 3px !important; + } + .mr-5px { + margin-right: 0 !important; + margin-left: 5px !important; + } + .mr-6px { + margin-right: 0 !important; + margin-left: 6px !important; + } + .mr-7px { + margin-right: 0 !important; + margin-left: 7px !important; + } + .ml-8px { + margin-right: 0 !important; + margin-left: 8px !important; + } + .mr-9px { + margin-right: 0 !important; + margin-left: 9px !important; + } + .mr-10px { + margin-right: 0 !important; + margin-left: 10px !important; + } + .mr-11px { + margin-right: 0 !important; + margin-left: 11px !important; + } + .mr-12px { + margin-right: 0 !important; + margin-left: 12px !important; + } + .mr-13px { + margin-right: 0 !important; + margin-left: 13px !important; + } + .mr-14px { + margin-right: 0 !important; + margin-left: 14px !important; + } + .mr-15px { + margin-right: 0 !important; + margin-left: 15px !important; + } + .mr-16px { + margin-right: 0 !important; + margin-left: 16px !important; + } + .mr-17px { + margin-right: 0 !important; + margin-left: 17px !important; + } + .mr-18px { + margin-right: 0 !important; + margin-left: 18px !important; + } + .mr-19px { + margin-right: 0 !important; + margin-left: 19px !important; + } + .mr-20px { + margin-right: 0 !important; + margin-left: 20px !important; + } + .mr-21px { + margin-right: 0 !important; + margin-left: 21px !important; + } + .mr-22px { + margin-right: 0 !important; + margin-left: 22px !important; + } + .mr-23px { + margin-right: 0 !important; + margin-left: 23px !important; + } + .mr-24px { + margin-right: 0 !important; + margin-left: 24px !important; + } + .mr-25px { + margin-right: 0 !important; + margin-left: 25px !important; + } + .mr-26px { + margin-right: 0 !important; + margin-left: 26px !important; + } + .mr-27px { + margin-right: 0 !important; + margin-left: 27px !important; + } + .mr-28px { + margin-right: 0 !important; + margin-left: 28px !important; + } + .mr-29px { + margin-right: 0 !important; + margin-left: 29px !important; + } + .mr-30px { + margin-right: 0 !important; + margin-left: 30px !important; + } + + // Padding Right + .pr-5px { + padding-right: 0; + padding-left: 5px; + } + .pr-6px { + padding-right: 0; + padding-left: 6px; + } + .pr-7px { + padding-right: 0; + padding-left: 7px; + } + .pr-8px { + padding-right: 0; + padding-left: 8px; + } + .pr-9px { + padding-right: 0; + padding-left: 9px; + } + .pr-10px { + padding-right: 0; + padding-left: 10px; + } + .pr-11px { + padding-right: 0; + padding-left: 11px; + } + .pr-12px { + padding-right: 0; + padding-left: 12px; + } + .pr-13px { + padding-right: 0; + padding-left: 13px; + } + .pr-14px { + padding-right: 0; + padding-left: 14px; + } + .pr-15px { + padding-right: 0; + padding-left: 15px; + } + .pr-16px { + padding-right: 0; + padding-left: 16px; + } + .pr-17px { + padding-right: 0; + padding-left: 17px; + } + .pr-18px { + padding-right: 0; + padding-left: 18px; + } + .pr-19px { + padding-right: 0; + padding-left: 19px; + } + .pr-20px { + padding-right: 0; + padding-left: 20px; + } + .pr-21px { + padding-right: 0; + padding-left: 21px; + } + .pr-22px { + padding-right: 0; + padding-left: 22px; + } + .pr-23px { + padding-right: 0; + padding-left: 23px; + } + .pr-24px { + padding-right: 0; + padding-left: 24px; + } + .pr-25px { + padding-right: 0; + padding-left: 25px; + } + .pr-26px { + padding-right: 0; + padding-left: 26px; + } + .pr-27px { + padding-right: 0; + padding-left: 27px; + } + .pr-28px { + padding-right: 0; + padding-left: 28px; + } + .pr-29px { + padding-right: 0; + padding-left: 29px; + } + .pr-30px { + padding-right: 0; + padding-left: 30px; + } + .pr-35px { + padding-right: 0; + padding-left: 35px; + } + .pr-40px { + padding-right: 0; + padding-left: 40px; + } + .pr-45px { + padding-right: 0; + padding-left: 45px; + } + .pr-50px { + padding-right: 0; + padding-left: 50px; + } + .pr-55px { + padding-right: 0; + padding-left: 55px; + } + .pr-60px { + padding-right: 0; + padding-left: 60px; + } + + // Padding Left + .pl-5px { + padding-left: 0; + padding-right: 5px; + } + .pl-6px { + padding-left: 0; + padding-right: 6px; + } + .pl-7px { + padding-left: 0; + padding-right: 7px; + } + .pl-8px { + padding-left: 0; + padding-right: 8px; + } + .pl-9px { + padding-left: 0; + padding-right: 9px; + } + .pl-10px { + padding-left: 0; + padding-right: 10px; + } + .pl-11px { + padding-left: 0; + padding-right: 11px; + } + .pl-12px { + padding-left: 0; + padding-right: 12px; + } + .pl-13px { + padding-left: 0; + padding-right: 13px; + } + .pl-14px { + padding-left: 0; + padding-right: 14px; + } + .pl-15px { + padding-left: 0; + padding-right: 15px; + } + .pl-16px { + padding-left: 0; + padding-right: 16px; + } + .pl-17px { + padding-left: 0; + padding-right: 17px; + } + .pl-18px { + padding-left: 0; + padding-right: 18px; + } + .pl-19px { + padding-left: 0; + padding-right: 19px; + } + .pl-20px { + padding-left: 0; + padding-right: 20px; + } + .pl-21px { + padding-left: 0; + padding-right: 21px; + } + .pl-22px { + padding-left: 0; + padding-right: 22px; + } + .pl-23px { + padding-left: 0; + padding-right: 23px; + } + .pl-24px { + padding-left: 0; + padding-right: 24px; + } + .pl-25px { + padding-left: 0; + padding-right: 25px; + } + .pl-26px { + padding-left: 0; + padding-right: 26px; + } + .pl-27px { + padding-left: 0; + padding-right: 27px; + } + .pl-28px { + padding-left: 0; + padding-right: 28px; + } + .pl-29px { + padding-left: 0; + padding-right: 29px; + } + .pl-30px { + padding-left: 0; + padding-right: 30px; + } + .pl-35px { + padding-left: 0; + padding-right: 35px; + } + .pl-40px { + padding-left: 0; + padding-right: 40px; + } + .pl-45px { + padding-left: 0; + padding-right: 45px; + } + .pl-50px { + padding-left: 0; + padding-right: 50px; + } + .pl-55px { + padding-left: 0; + padding-right: 55px; + } + .pl-60px { + padding-left: 0; + padding-right: 60px; + } + + // Right + .right-5px { + right: auto; + left: 5px; + } + .right-6px { + right: auto; + left: 6px; + } + .right-7px { + right: auto; + left: 7px; + } + .right-8px { + right: auto; + left: 8px; + } + .right-9px { + right: auto; + left: 9px; + } + .right-10px { + right: auto; + left: 10px; + } + .right-11px { + right: auto; + left: 11px; + } + .right-12px { + right: auto; + left: 12px; + } + .right-13px { + right: auto; + left: 13px; + } + .right-14px { + right: auto; + left: 14px; + } + .right-15px { + right: auto; + left: 15px; + } + .right-16px { + right: auto; + left: 16px; + } + .right-17px { + right: auto; + left: 17px; + } + .right-18px { + right: auto; + left: 18px; + } + .right-19px { + right: auto; + left: 19px; + } + .right-20px { + right: auto; + left: 20px; + } + .right-21px { + right: auto; + left: 21px; + } + .right-22px { + right: auto; + left: 22px; + } + .right-23px { + right: auto; + left: 23px; + } + .right-24px { + right: auto; + left: 24px; + } + .right-25px { + right: auto; + left: 25px; + } + .right-26px { + right: auto; + left: 27px; + } + .right-28px { + right: auto; + left: 28px; + } + .right-29px { + right: auto; + left: 29px; + } + .right-30px { + right: auto; + left: 30px; + } + + // Top Navbar + .search-form { + margin-right: 20px; + margin-left: 0; + } + + // LeftSidebarNav + .LeftSidebarNav { + left: auto; + right: 0; + } + + // main-wrapper-content + .main-wrapper-content { + padding-left: 0; + padding-right: 330px; + .main-content { + padding-right: 0; + padding-left: 30px; + } + &.active { + padding-right: 30px; + .LeftSidebarNav { + left: auto; + right: -100%; + } + } + } + + @media only screen and (max-width: 767px) { + .main-wrapper-content { + .main-content { + padding-left: 15px !important; + padding-right: 15px !important; + } + } + } + + @media only screen and (max-width: 1199px) { + .main-wrapper-content { + padding: 0; + + .LeftSidebarNav { + left: auto; + right: -100%; + width: 280px; + } + .main-content { + padding-left: 30px; + padding-right: 30px; + } + + &.active { + padding: 0; + + .LeftSidebarNav { + left: auto; + right: 0; + } + } + } + } + + // apexcharts + .apexcharts-legend-marker { + margin-right: 0; + margin-left: 3px; + } + .apexcharts-yaxis, .apexcharts-subtitle-text, .apexcharts-title-text { + direction: ltr; + } + + .css-1qlw4ct-MuiPaper-root-MuiMenu-paper-MuiPaper-root-MuiPopover-paper, .css-1mpld98-MuiPaper-root-MuiMenu-paper-MuiPaper-root-MuiPopover-paper{ + &:before { + display: none; + } + } + + .recharts-legend-item { + .recharts-surface { + margin-right: 0; + margin-left: 4px; + } + } + + // ls-search-form + .ls-search-form { + input.MuiInputBase-input { + padding-right: 15px; + } + .search-btn { + right: auto; + left: 0; + } + } + + .css-s2uf1z { + text-align: left; + } + + .MuiAlert-icon { + margin-right: 0; + margin-left: 12px; + } + + .input-label { + label { + left: auto; + right: 0; + transform: translate(-15px, 16px) scale(1); + } + } + + .css-b1hphm-MuiButtonBase-root-MuiChip-root .MuiChip-deleteIcon { + margin-right: 0; + margin-left: 10px; + } + + .avatars-gap { + .MuiAvatar-root { + margin-left: 16px; + &:last-child { + margin-left: 0; + } + } + } + .gadge-gap { + .MuiBadge-root { + margin-left: 16px; + &:last-child { + margin-left: 0; + } + } + } + + .MuiButtonBase-root { + .MuiButton-startIcon { + margin-right: 0; + margin-left: 8px; + } + } + .MuiAlert-root { + .css-ki1hdl-MuiAlert-action { + margin-left: -8px; + margin-right: auto; + } + } + .chip-gap-for-rtl { + .MuiChip-root { + margin-left: 0; + margin-right: 15px; + &:first-child { + margin-right: 0; + } + } + } + + .direction-ltr { + direction: ltr; + } + .rtl-step-label .MuiStepLabel-iconContainer { + padding-right: 0; + padding-left: 10px; + } + + // Scroll To Top CSS + .scroll-to-top { + i { + right: auto; + left: 20px; + } + } + + // control-panel-modal + .control-panel-modal { + right: auto; + left: -100%; + + &.show { + right: auto; + left: 0; + } + + .settings-btn { + right: auto; + left: 15px; + } + } + .control-panel-dialog { + margin-left: 0; + margin-right: auto; + } + + .progressIcon { + right: 7px; + margin: 0; + } +} + diff --git a/styles/theme/index.js b/styles/theme/index.js new file mode 100644 index 0000000..85d6b60 --- /dev/null +++ b/styles/theme/index.js @@ -0,0 +1,40 @@ +import { createTheme } from "@mui/material/styles"; + +// Create a theme instance. +const theme = createTheme({ + palette: { + text: { + primary: '#5B5B98', + secondary: '#5B5B98', + disabled: '#5B5B98', + hint: '#5B5B98', + }, + primary: { + main: "#757FEF", + }, + secondary: { + main: "#818093", + }, + success: { + main: "#00B69B", + }, + info: { + main: "#2DB6F5", + }, + warning: { + main: "#FFBC2B", + }, + danger: { + main: "#EE368C", + }, + dark: { + main: "#260944", + }, + }, + + typography: { + fontSize: 12 + }, +}); + +export default theme;