├── .prettierignore
├── styles
├── scss
│ ├── core
│ │ ├── _mixins.scss
│ │ ├── variables
│ │ │ ├── _brand.scss
│ │ │ ├── _bootstrap-material-design-base.scss
│ │ │ ├── _shadow.scss
│ │ │ └── _functions.scss
│ │ ├── _variables.scss
│ │ ├── _page-transition.scss
│ │ ├── _misc.scss
│ │ └── mixins
│ │ │ └── _colored-shadows.scss
│ ├── nextjs-material-kit.scss
│ └── plugins
│ │ └── _plugin-react-slick.scss
└── jss
│ └── nextjs-material-kit
│ ├── components
│ ├── cardBodyStyle.ts
│ ├── cardFooterStyle.ts
│ ├── cardHeaderStyle.ts
│ ├── cardStyle.ts
│ ├── parallaxStyle.ts
│ ├── badgeStyle.ts
│ ├── typographyStyle.ts
│ ├── infoStyle.ts
│ ├── footerStyle.ts
│ ├── customLinearProgressStyle.ts
│ ├── customTabsStyle.ts
│ ├── snackbarContentStyle.ts
│ ├── customInputStyle.ts
│ ├── headerLinksStyle.ts
│ ├── navPillsStyle.ts
│ ├── headerStyle.ts
│ ├── paginationStyle.ts
│ └── customDropdownStyle.ts
│ ├── pages
│ ├── componentsSections
│ │ ├── completedStyle.ts
│ │ ├── tabsStyle.ts
│ │ ├── carouselStyle.ts
│ │ ├── pillsStyle.ts
│ │ ├── exampleStyle.ts
│ │ ├── notificationsStyles.ts
│ │ ├── downloadStyle.ts
│ │ ├── basicsStyle.ts
│ │ ├── javascriptStyles.ts
│ │ ├── typographyStyle.ts
│ │ ├── loginStyle.ts
│ │ └── navbarsStyle.ts
│ ├── landingPageSections
│ │ ├── productStyle.ts
│ │ ├── workStyle.ts
│ │ └── teamStyle.ts
│ ├── landingPage.ts
│ ├── components.ts
│ ├── profilePage.ts
│ └── loginPage.ts
│ ├── tooltipsStyle.ts
│ ├── imagesStyles.ts
│ ├── modalStyle.ts
│ ├── popoverStyles.ts
│ └── customCheckboxRadioSwitch.ts
├── public
└── img
│ ├── bg.jpg
│ ├── bg2.jpg
│ ├── bg3.jpg
│ ├── bg4.jpg
│ ├── bg7.jpg
│ ├── sign.jpg
│ ├── favicon.png
│ ├── landing.jpg
│ ├── profile.jpg
│ ├── apple-icon.png
│ ├── faces
│ ├── avatar.jpg
│ ├── camp.jpg
│ ├── marc.jpg
│ ├── kendall.jpg
│ ├── christian.jpg
│ ├── card-profile1-square.jpg
│ ├── card-profile2-square.jpg
│ ├── card-profile4-square.jpg
│ ├── card-profile5-square.jpg
│ └── card-profile6-square.jpg
│ ├── landing-bg.jpg
│ ├── profile-bg.jpg
│ ├── nextjs_header.jpg
│ └── examples
│ ├── studio-1.jpg
│ ├── studio-2.jpg
│ ├── studio-3.jpg
│ ├── studio-4.jpg
│ ├── studio-5.jpg
│ ├── olu-eletu.jpg
│ ├── clem-onojegaw.jpg
│ ├── clem-onojeghuo.jpg
│ ├── cynthia-del-rio.jpg
│ └── mariya-georgieva.jpg
├── Documentation
└── assets
│ └── img
│ ├── mask.png
│ ├── cover.jpeg
│ ├── favicon.png
│ ├── new_logo.png
│ ├── apple-icon.png
│ ├── faces
│ └── marc.jpg
│ ├── reactlogo.png
│ ├── sidebar-1.jpg
│ ├── sidebar-2.jpg
│ ├── sidebar-3.jpg
│ ├── sidebar-4.jpg
│ └── tim_80x80.png
├── next.config.js
├── next-env.d.ts
├── types
└── global.d.ts
├── pages
├── 404.tsx
├── index.tsx
├── _error.tsx
├── api
│ └── post.ts
├── _document.tsx
├── landing.tsx
├── blog
│ ├── [slug].tsx
│ └── index.tsx
├── _app.tsx
└── components.tsx
├── .gitignore
├── components
├── Clearfix
│ └── Clearfix.tsx
├── Typography
│ ├── Small.tsx
│ ├── Primary.tsx
│ ├── Info.tsx
│ ├── Muted.tsx
│ ├── Success.tsx
│ ├── Danger.tsx
│ ├── Warning.tsx
│ └── Quote.tsx
├── Badge
│ └── Badge.tsx
├── Grid
│ ├── GridContainer.tsx
│ └── GridItem.tsx
├── Card
│ ├── CardFooter.tsx
│ ├── CardBody.tsx
│ ├── Card.tsx
│ └── CardHeader.tsx
├── CustomLinearProgress
│ └── CustomLinearProgress.tsx
├── PageChange
│ └── PageChange.tsx
├── Blog
│ └── BlogCard.tsx
├── InfoArea
│ └── InfoArea.tsx
├── Pagination
│ └── Pagination.tsx
├── CustomButtons
│ └── Button.tsx
├── Snackbar
│ └── SnackbarContent.tsx
├── Parallax
│ └── Parallax.tsx
├── CustomInput
│ └── CustomInput.tsx
├── Footer
│ └── Footer.tsx
├── CustomTabs
│ └── CustomTabs.tsx
├── NavPills
│ └── NavPills.tsx
└── Header
│ ├── HeaderLinks.tsx
│ └── Header.tsx
├── blog
├── simple-about.mdx
├── simple-article-2.mdx
├── simple-article-3.mdx
├── simple-article-4.mdx
└── react-article.mdx
├── LICENSE.md
├── pages-sections
├── Components-Sections
│ ├── SectionCompletedExamples.tsx
│ ├── SectionNotifications.tsx
│ ├── SectionExamples.tsx
│ ├── SectionCarousel.tsx
│ ├── SectionDownload.tsx
│ └── SectionLogin.tsx
└── LandingPage-Sections
│ ├── WorkSection.tsx
│ └── ProductSection.tsx
├── utils
└── markdown.ts
├── package.json
├── tsconfig.json
└── CHANGELOG.md
/.prettierignore:
--------------------------------------------------------------------------------
1 | Documentation/assets/js
2 |
--------------------------------------------------------------------------------
/styles/scss/core/_mixins.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/colored-shadows";
2 |
--------------------------------------------------------------------------------
/public/img/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/bg.jpg
--------------------------------------------------------------------------------
/public/img/bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/bg2.jpg
--------------------------------------------------------------------------------
/public/img/bg3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/bg3.jpg
--------------------------------------------------------------------------------
/public/img/bg4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/bg4.jpg
--------------------------------------------------------------------------------
/public/img/bg7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/bg7.jpg
--------------------------------------------------------------------------------
/public/img/sign.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/sign.jpg
--------------------------------------------------------------------------------
/public/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/favicon.png
--------------------------------------------------------------------------------
/public/img/landing.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/landing.jpg
--------------------------------------------------------------------------------
/public/img/profile.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/profile.jpg
--------------------------------------------------------------------------------
/public/img/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/apple-icon.png
--------------------------------------------------------------------------------
/public/img/faces/avatar.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/avatar.jpg
--------------------------------------------------------------------------------
/public/img/faces/camp.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/camp.jpg
--------------------------------------------------------------------------------
/public/img/faces/marc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/marc.jpg
--------------------------------------------------------------------------------
/public/img/landing-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/landing-bg.jpg
--------------------------------------------------------------------------------
/public/img/profile-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/profile-bg.jpg
--------------------------------------------------------------------------------
/public/img/faces/kendall.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/kendall.jpg
--------------------------------------------------------------------------------
/public/img/nextjs_header.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/nextjs_header.jpg
--------------------------------------------------------------------------------
/public/img/examples/studio-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/studio-1.jpg
--------------------------------------------------------------------------------
/public/img/examples/studio-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/studio-2.jpg
--------------------------------------------------------------------------------
/public/img/examples/studio-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/studio-3.jpg
--------------------------------------------------------------------------------
/public/img/examples/studio-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/studio-4.jpg
--------------------------------------------------------------------------------
/public/img/examples/studio-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/studio-5.jpg
--------------------------------------------------------------------------------
/public/img/faces/christian.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/christian.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/mask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/mask.png
--------------------------------------------------------------------------------
/public/img/examples/olu-eletu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/olu-eletu.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/cover.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/cover.jpeg
--------------------------------------------------------------------------------
/Documentation/assets/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/favicon.png
--------------------------------------------------------------------------------
/Documentation/assets/img/new_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/new_logo.png
--------------------------------------------------------------------------------
/public/img/examples/clem-onojegaw.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/clem-onojegaw.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/apple-icon.png
--------------------------------------------------------------------------------
/Documentation/assets/img/faces/marc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/faces/marc.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/reactlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/reactlogo.png
--------------------------------------------------------------------------------
/Documentation/assets/img/sidebar-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/sidebar-1.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/sidebar-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/sidebar-2.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/sidebar-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/sidebar-3.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/sidebar-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/sidebar-4.jpg
--------------------------------------------------------------------------------
/Documentation/assets/img/tim_80x80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/Documentation/assets/img/tim_80x80.png
--------------------------------------------------------------------------------
/public/img/examples/clem-onojeghuo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/clem-onojeghuo.jpg
--------------------------------------------------------------------------------
/public/img/examples/cynthia-del-rio.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/cynthia-del-rio.jpg
--------------------------------------------------------------------------------
/public/img/examples/mariya-georgieva.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/examples/mariya-georgieva.jpg
--------------------------------------------------------------------------------
/public/img/faces/card-profile1-square.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/card-profile1-square.jpg
--------------------------------------------------------------------------------
/public/img/faces/card-profile2-square.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/card-profile2-square.jpg
--------------------------------------------------------------------------------
/public/img/faces/card-profile4-square.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/card-profile4-square.jpg
--------------------------------------------------------------------------------
/public/img/faces/card-profile5-square.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/card-profile5-square.jpg
--------------------------------------------------------------------------------
/public/img/faces/card-profile6-square.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/app-generator/nextjs-material-kit/HEAD/public/img/faces/card-profile6-square.jpg
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {
3 | reactStrictMode: true,
4 | images: {
5 | unoptimized: true,
6 | },
7 | };
8 |
9 | module.exports = nextConfig;
10 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/cardBodyStyle.ts:
--------------------------------------------------------------------------------
1 | const cardBodyStyle = {
2 | cardBody: {
3 | padding: "0.9375rem 1.875rem",
4 | flex: "1 1 auto",
5 | },
6 | };
7 |
8 | export default cardBodyStyle;
9 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
4 | // NOTE: This file should not be edited
5 | // see https://nextjs.org/docs/basic-features/typescript for more information.
6 |
--------------------------------------------------------------------------------
/types/global.d.ts:
--------------------------------------------------------------------------------
1 | import { ReactNode } from "react";
2 |
3 | export interface ReactChildrenProps {
4 | children: ReactNode | ReactNode[];
5 | }
6 | export interface ReactClassChildrenProps extends ReactChildrenProps {
7 | className?: string;
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/styles/scss/core/variables/_brand.scss:
--------------------------------------------------------------------------------
1 | // Bootstrap brand color customization
2 | $brand-primary: $purple !default;
3 | $brand-success: $green !default;
4 | $brand-danger: $red !default;
5 | $brand-warning: $orange !default;
6 | $brand-info: $cyan !default;
7 | $brand-rose: $pink !default;
8 |
--------------------------------------------------------------------------------
/pages/404.tsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import Router from "next/router";
3 |
4 | export default class _error extends Component {
5 | componentDidMount = () => {
6 | Router.push("/components");
7 | };
8 |
9 | render() {
10 | return
;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/pages/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import Router from "next/router";
3 |
4 | export default class Index extends Component {
5 | componentDidMount = () => {
6 | Router.push("/components");
7 | };
8 |
9 | render() {
10 | return
;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/pages/_error.tsx:
--------------------------------------------------------------------------------
1 | import React, { Component } from "react";
2 | import Router from "next/router";
3 |
4 | export default class _error extends Component {
5 | componentDidMount = () => {
6 | Router.push("/components");
7 | };
8 |
9 | render() {
10 | return
;
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/cardFooterStyle.ts:
--------------------------------------------------------------------------------
1 | const cardFooterStyle = {
2 | cardFooter: {
3 | display: "flex",
4 | alignItems: "center",
5 | backgroundColor: "transparent",
6 | padding: "0.9375rem 1.875rem",
7 | },
8 | };
9 |
10 | export default cardFooterStyle;
11 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/completedStyle.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../../nextjs-material-kit";
2 |
3 | const completedStyle = {
4 | section: {
5 | padding: "70px 0"
6 | },
7 | container: {
8 | ...container,
9 | textAlign: "center !important"
10 | }
11 | };
12 |
13 | export default completedStyle;
14 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/tabsStyle.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../../nextjs-material-kit";
2 |
3 | const tabsStyle = {
4 | section: {
5 | background: "#EEEEEE",
6 | padding: "70px 0"
7 | },
8 | container,
9 | textCenter: {
10 | textAlign: "center"
11 | }
12 | };
13 |
14 | export default tabsStyle;
15 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/carouselStyle.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../../nextjs-material-kit";
2 |
3 | const carouselStyle = {
4 | section: {
5 | padding: "70px 0"
6 | },
7 | container,
8 | marginAuto: {
9 | marginLeft: "auto !important",
10 | marginRight: "auto !important"
11 | }
12 | };
13 |
14 | export default carouselStyle;
15 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/pillsStyle.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../../nextjs-material-kit";
2 |
3 | const pillsStyle = {
4 | section: {
5 | padding: "70px 0"
6 | },
7 | container,
8 | title: {
9 | ...title,
10 | marginTop: "30px",
11 | minHeight: "32px",
12 | textDecoration: "none"
13 | }
14 | };
15 |
16 | export default pillsStyle;
17 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 |
6 | # testing
7 | /coverage
8 |
9 | # production
10 | /build
11 | /out
12 |
13 | # misc
14 | .DS_Store
15 | .env.local
16 | .env.development.local
17 | .env.test.local
18 | .env.production.local
19 |
20 | package-lock.json
21 |
22 | npm-debug.log*
23 | yarn-debug.log*
24 | yarn-error.log*
25 |
26 | # package
27 | /dist
28 | /.next
29 | pnpm-lock.yaml
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/landingPageSections/productStyle.ts:
--------------------------------------------------------------------------------
1 | import { title } from "../../../nextjs-material-kit";
2 |
3 | const productStyle = {
4 | section: {
5 | padding: "70px 0",
6 | textAlign: "center"
7 | },
8 | title: {
9 | ...title,
10 | marginBottom: "1rem",
11 | marginTop: "30px",
12 | minHeight: "32px",
13 | textDecoration: "none"
14 | },
15 | description: {
16 | color: "#999"
17 | }
18 | };
19 |
20 | export default productStyle;
21 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/exampleStyle.ts:
--------------------------------------------------------------------------------
1 | import { containerFluid } from "../../../nextjs-material-kit";
2 |
3 | import imagesStyle from "../../../nextjs-material-kit/imagesStyles";
4 |
5 | const exampleStyle = {
6 | section: {
7 | padding: "70px 0"
8 | },
9 | container: {
10 | ...containerFluid,
11 | textAlign: "center !important"
12 | },
13 | ...imagesStyle,
14 | link: {
15 | textDecoration: "none"
16 | }
17 | };
18 |
19 | export default exampleStyle;
20 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/notificationsStyles.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../../nextjs-material-kit";
2 |
3 | const notificationsStyles = {
4 | section: {
5 | backgroundColor: "#FFFFFF",
6 | display: "block",
7 | width: "100%",
8 | position: "relative",
9 | padding: "0"
10 | },
11 | title: {
12 | ...title,
13 | marginTop: "30px",
14 | minHeight: "32px",
15 | textDecoration: "none"
16 | },
17 | container
18 | };
19 |
20 | export default notificationsStyles;
21 |
--------------------------------------------------------------------------------
/components/Clearfix/Clearfix.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | // mterial-ui components
4 | import { makeStyles } from "@material-ui/core/styles";
5 |
6 | const styles = {
7 | clearfix: {
8 | "&:after,&:before": {
9 | display: "table",
10 | content: '" "',
11 | },
12 | "&:after": {
13 | clear: "both",
14 | },
15 | },
16 | };
17 |
18 | const useStyles = makeStyles(styles);
19 |
20 | export default function Clearfix() {
21 | const classes = useStyles();
22 | return
;
23 | }
24 |
--------------------------------------------------------------------------------
/styles/scss/core/_variables.scss:
--------------------------------------------------------------------------------
1 | @import "variables/colors";
2 | @import "variables/shadow";
3 |
4 | @import "variables/bootstrap-material-design-base";
5 |
6 | // Customized BS variables
7 | @import "variables/brand";
8 |
9 | // import their vars after customization for use below
10 | $enable-flex: true; // fully adopt flexbox layouts
11 | $enable-shadows: true; // enable shadows, set to false to turn off shadows
12 |
13 | // // Core Bootstrap Variables
14 | @import "variables/functions";
15 | @import "variables/variables";
16 |
17 | @import "variables/bootstrap-material-design";
18 |
--------------------------------------------------------------------------------
/blog/simple-about.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: About me
3 | published: 2022-01-16
4 | description: This is a simple post.
5 | image_url: "/img/examples/studio-1.jpg"
6 | ---
7 |
8 | # About
9 |
10 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
11 |
12 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
13 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/downloadStyle.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../../nextjs-material-kit";
2 |
3 | const downloadStyle = {
4 | section: {
5 | padding: "70px 0"
6 | },
7 | container,
8 | textCenter: {
9 | textAlign: "center"
10 | },
11 | sharingArea: {
12 | marginTop: "80px"
13 | },
14 | socials: {
15 | maxWidth: "24px",
16 | marginTop: "0",
17 | width: "100%",
18 | transform: "none",
19 | left: "0",
20 | top: "0",
21 | height: "100%",
22 | fontSize: "20px",
23 | marginRight: "4px"
24 | }
25 | };
26 |
27 | export default downloadStyle;
28 |
--------------------------------------------------------------------------------
/blog/simple-article-2.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: About me
3 | published: 2022-01-16
4 | description: This is a simple post.
5 | image_url: "/img/examples/studio-1.jpg"
6 | ---
7 |
8 | # About
9 |
10 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
11 |
12 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
13 |
--------------------------------------------------------------------------------
/blog/simple-article-3.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: About me
3 | published: 2022-01-16
4 | description: This is a simple post.
5 | image_url: "/img/examples/studio-1.jpg"
6 | ---
7 |
8 | # About
9 |
10 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
11 |
12 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
13 |
--------------------------------------------------------------------------------
/blog/simple-article-4.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: About me
3 | published: 2022-01-16
4 | description: This is a simple post.
5 | image_url: "/img/examples/studio-1.jpg"
6 | ---
7 |
8 | # About
9 |
10 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
11 |
12 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa, pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
13 |
--------------------------------------------------------------------------------
/components/Typography/Small.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 |
8 | const useStyles = makeStyles(styles);
9 |
10 | export default function Small(props:ReactChildrenProps) {
11 | const classes = useStyles();
12 | const { children } = props;
13 | return (
14 |
15 | {children}
16 |
17 | );
18 | }
--------------------------------------------------------------------------------
/components/Typography/Primary.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 |
8 | const useStyles = makeStyles(styles);
9 |
10 | export default function Primary(props:ReactChildrenProps) {
11 | const classes = useStyles();
12 | const { children } = props;
13 | return (
14 |
15 | {children}
16 |
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/pages/api/post.ts:
--------------------------------------------------------------------------------
1 | import {getAllArticles} from "../../utils/markdown";
2 |
3 | export default async function handler(req, res) {
4 | const {page} = req.query;
5 |
6 | const articles = await getAllArticles(page);
7 |
8 | articles
9 | .map((post) => post)
10 | .sort((a, b) => {
11 | if (a.published > b.published) return 1;
12 | if (a.published < b.published) return -1;
13 |
14 | return 0;
15 | });
16 |
17 | const posts = articles.map((post) => {
18 | return {
19 | ...post,
20 | published: new Date(post.published).toDateString(),
21 | };
22 | });
23 |
24 | res.status(200).json(posts);
25 | }
26 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/landingPageSections/workStyle.ts:
--------------------------------------------------------------------------------
1 | import { title } from "../../../nextjs-material-kit";
2 |
3 | const workStyle = {
4 | section: {
5 | padding: "70px 0"
6 | },
7 | title: {
8 | ...title,
9 | marginBottom: "50px",
10 | marginTop: "30px",
11 | minHeight: "32px",
12 | textDecoration: "none",
13 | textAlign: "center" as "center"
14 | },
15 | description: {
16 | color: "#999",
17 | textAlign: "center" as "center"
18 | },
19 | textCenter: {
20 | textAlign: "center" as "center"
21 | },
22 | textArea: {
23 | marginRight: "15px",
24 | marginLeft: "15px"
25 | }
26 | };
27 |
28 | export default workStyle;
29 |
--------------------------------------------------------------------------------
/components/Typography/Info.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 | import { ReactChildrenProps } from "../../types/global";
8 |
9 | const useStyles = makeStyles(styles);
10 |
11 | export default function Info(props: ReactChildrenProps) {
12 | const classes = useStyles();
13 | const { children } = props;
14 | return (
15 |
16 | {children}
17 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/components/Typography/Muted.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 | import { ReactChildrenProps } from "../../types/global";
8 |
9 | const useStyles = makeStyles(styles);
10 |
11 | export default function Muted(props: ReactChildrenProps) {
12 | const classes = useStyles();
13 | const { children } = props;
14 | return (
15 |
16 | {children}
17 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/components/Typography/Success.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 | import { ReactChildrenProps } from "../../types/global";
8 |
9 | const useStyles = makeStyles(styles);
10 |
11 | export default function Success(props:ReactChildrenProps) {
12 | const classes = useStyles();
13 | const { children } = props;
14 | return (
15 |
16 | {children}
17 |
18 | );
19 | }
--------------------------------------------------------------------------------
/components/Typography/Danger.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 | import { ReactChildrenProps } from "../../types/global";
8 |
9 | const useStyles = makeStyles(styles);
10 |
11 | export default function Danger(props: ReactChildrenProps) {
12 | const classes = useStyles();
13 | const { children } = props;
14 | return (
15 |
16 | {children}
17 |
18 | );
19 | }
20 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/cardHeaderStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | warningCardHeader,
3 | successCardHeader,
4 | dangerCardHeader,
5 | infoCardHeader,
6 | primaryCardHeader
7 | } from "../../nextjs-material-kit";
8 |
9 | const cardHeaderStyle = {
10 | cardHeader: {
11 | borderRadius: "3px",
12 | padding: "1rem 15px",
13 | marginLeft: "15px",
14 | marginRight: "15px",
15 | marginTop: "-30px",
16 | border: "0",
17 | marginBottom: "0"
18 | },
19 | cardHeaderPlain: {
20 | marginLeft: "0px",
21 | marginRight: "0px"
22 | },
23 | warningCardHeader,
24 | successCardHeader,
25 | dangerCardHeader,
26 | infoCardHeader,
27 | primaryCardHeader
28 | };
29 |
30 | export default cardHeaderStyle;
31 |
--------------------------------------------------------------------------------
/blog/react-article.mdx:
--------------------------------------------------------------------------------
1 | ---
2 | title: React Buttons
3 | published: 2022-05-16
4 | description: This is a simple post about React.
5 | image_url: "/img/examples/studio-2.jpg"
6 | ---
7 |
8 | import Button from "../components/CustomButtons/Button";
9 |
10 | ## A Button with MDX
11 |
12 | This is an example of component passed to the MDX. The component is imported following this code:
13 | ```js
14 | import Button from "../components/CustomButtons/Button";
15 | ```
16 | Read now
17 |
18 | ## Random Text
19 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. Ea deserunt ab maiores eligendi nemo, ipsa,
20 | pariatur blanditiis, ullam exercitationem beatae incidunt deleniti ut sit est accusantium dolorum temporibus ipsam quae.
21 |
--------------------------------------------------------------------------------
/components/Typography/Warning.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { createStyles, makeStyles, Theme } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 | import { ReactChildrenProps } from "../../types/global";
8 |
9 | const useStyles = makeStyles((theme: Theme) =>
10 | createStyles(
11 | styles
12 | )
13 | );
14 |
15 | export default function Warning(props: ReactChildrenProps) {
16 | const classes = useStyles();
17 | const { children } = props;
18 | return (
19 |
20 | {children}
21 |
22 | );
23 | }
24 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/basicsStyle.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../../nextjs-material-kit";
2 | import customCheckboxRadioSwitch from "../../../nextjs-material-kit/customCheckboxRadioSwitch";
3 |
4 | const basicsStyle = {
5 | sections: {
6 | padding: "70px 0",
7 | },
8 | container,
9 | title: {
10 | ...title,
11 | marginTop: "30px",
12 | minHeight: "32px",
13 | textDecoration: "none",
14 | },
15 | space50: {
16 | height: "50px",
17 | display: "block",
18 | },
19 | space70: {
20 | height: "70px",
21 | display: "block",
22 | },
23 | icons: {
24 | width: "17px",
25 | height: "17px",
26 | color: "#FFFFFF",
27 | },
28 | ...customCheckboxRadioSwitch,
29 | };
30 |
31 | export default basicsStyle;
32 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/cardStyle.ts:
--------------------------------------------------------------------------------
1 | const cardStyle = {
2 | card: {
3 | border: "0",
4 | marginBottom: "30px",
5 | marginTop: "30px",
6 | borderRadius: "6px",
7 | color: "rgba(0, 0, 0, 0.87)",
8 | background: "#fff",
9 | width: "100%",
10 | boxShadow:
11 | "0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12)",
12 | position: "relative",
13 | display: "flex",
14 | flexDirection: "column",
15 | minWidth: "0",
16 | wordWrap: "break-word",
17 | fontSize: ".875rem",
18 | transition: "all 300ms linear",
19 | },
20 | cardPlain: {
21 | background: "transparent",
22 | boxShadow: "none",
23 | },
24 | cardCarousel: {
25 | overflow: "hidden",
26 | },
27 | };
28 |
29 | export default cardStyle;
30 |
--------------------------------------------------------------------------------
/components/Badge/Badge.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library to set properties for components
3 |
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 |
7 | import styles from "../../styles/jss/nextjs-material-kit/components/badgeStyle";
8 |
9 | const useStyles = makeStyles(styles);
10 |
11 | export type BadgeProps = {
12 | color?:
13 | | "primary"
14 | | "warning"
15 | | "danger"
16 | | "success"
17 | | "info"
18 | | "rose"
19 | | "gray";
20 | children: ReactNode;
21 | };
22 | export default function Badge(props: BadgeProps) {
23 | const classes = useStyles();
24 | const { color, children } = props;
25 | return (
26 |
27 | {children}
28 |
29 | );
30 | }
31 |
--------------------------------------------------------------------------------
/components/Typography/Quote.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // core components
6 | import styles from "../../styles/jss/nextjs-material-kit/components/typographyStyle";
7 |
8 | const useStyles = makeStyles(styles);
9 |
10 | export default function Quote(props: QuoteProps) {
11 | const { text, author } = props;
12 | const classes = useStyles();
13 | return (
14 |
15 | {text}
16 | {author}
17 |
18 | );
19 | }
20 |
21 | export interface QuoteProps {
22 | text: ReactNode,
23 | author: ReactNode
24 | };
25 |
--------------------------------------------------------------------------------
/styles/scss/core/_page-transition.scss:
--------------------------------------------------------------------------------
1 | .body-page-transition{
2 | overflow: hidden;
3 | #page-transition {
4 | position: fixed;
5 | z-index: 9999;
6 | width: 100%;
7 | display: flex;
8 | height: 100%;
9 | justify-content: center;
10 | align-items: center;
11 | }
12 |
13 | #page-transition > div{
14 | &:after{
15 | content: "";
16 | background-image: url("/img/bg7.jpg");
17 | background-size: cover;
18 | position: fixed;
19 | z-index: 9998;
20 | width: 100%;
21 | height: 100%;
22 | top: 0;
23 | left: 0;
24 | }
25 | &:before {
26 | top: 0;
27 | left: 0;
28 | width: 100%;
29 | height: 100%;
30 | content: '';
31 | display: block;
32 | z-index: 9999;
33 | position: absolute;
34 | background: rgba(0, 0, 0, 0.5);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/tooltipsStyle.ts:
--------------------------------------------------------------------------------
1 | const tooltipsStyle = {
2 | tooltip: {
3 | padding: "10px 15px",
4 | minWidth: "130px",
5 | color: "#555555",
6 | lineHeight: "1.7em",
7 | background: "#FFFFFF",
8 | border: "none",
9 | borderRadius: "3px",
10 | boxShadow:
11 | "0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.2)",
12 | maxWidth: "200px",
13 | textAlign: "center",
14 | fontFamily: '"Helvetica Neue",Helvetica,Arial,sans-serif',
15 | fontSize: "0.875em",
16 | fontStyle: "normal",
17 | fontWeight: "400",
18 | textShadow: "none",
19 | textTransform: "none",
20 | letterSpacing: "normal",
21 | wordBreak: "normal",
22 | wordSpacing: "normal",
23 | wordWrap: "normal",
24 | whiteSpace: "normal",
25 | lineBreak: "auto",
26 | },
27 | };
28 |
29 | export default tooltipsStyle;
30 |
--------------------------------------------------------------------------------
/components/Grid/GridContainer.tsx:
--------------------------------------------------------------------------------
1 | import React, { ElementType, ReactNode } from "react";
2 | // nodejs library to set properties for components
3 |
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 | import Grid, { GridTypeMap } from "@material-ui/core/Grid";
7 |
8 | const styles = {
9 | grid: {
10 | marginRight: "-15px",
11 | marginLeft: "-15px",
12 | width: "auto",
13 | },
14 | };
15 |
16 | export interface GridContainerProps {
17 | children: JSX.Element | JSX.Element[];
18 | className?: string;
19 | };
20 |
21 | const useStyles = makeStyles(styles);
22 |
23 | export default function GridContainer(props: GridContainerProps) {
24 | const classes = useStyles();
25 | const { children, className, ...rest } = props;
26 | return (
27 |
28 | {children}
29 |
30 | );
31 | }
32 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/landingPage.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../nextjs-material-kit";
2 |
3 | const landingPageStyle = {
4 | container: {
5 | zIndex: "12",
6 | color: "#FFFFFF",
7 | ...container
8 | },
9 | title: {
10 | ...title,
11 | display: "inline-block",
12 | position: "relative",
13 | marginTop: "30px",
14 | minHeight: "32px",
15 | color: "#FFFFFF",
16 | textDecoration: "none"
17 | },
18 | subtitle: {
19 | fontSize: "1.313rem",
20 | maxWidth: "500px",
21 | margin: "10px auto 0"
22 | },
23 | main: {
24 | background: "#FFFFFF",
25 | position: "relative",
26 | zIndex: "3"
27 | },
28 | mainRaised: {
29 | margin: "-60px 30px 0px",
30 | borderRadius: "6px",
31 | boxShadow:
32 | "0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)"
33 | }
34 | };
35 |
36 | export default landingPageStyle;
37 |
--------------------------------------------------------------------------------
/components/Grid/GridItem.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactElement, ReactNode } from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | import Grid, { GridTypeMap } from "@material-ui/core/Grid";
6 |
7 | const styles = {
8 | grid: {
9 | position: "relative",
10 | width: "100%",
11 | minHeight: "1px",
12 | paddingRight: "15px",
13 | paddingLeft: "15px",
14 | flexBasis: "auto",
15 | },
16 | };
17 |
18 | const useStyles = makeStyles(styles);
19 |
20 | export interface GridItemProps {
21 | children: JSX.Element | JSX.Element[];
22 | className?: string;
23 |
24 | }
25 | export default function GridItem(props: GridItemProps) {
26 | const classes = useStyles();
27 | const { children, className, ...rest } = props;
28 | return (
29 |
30 | {children}
31 |
32 | );
33 | }
34 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/parallaxStyle.ts:
--------------------------------------------------------------------------------
1 | const parallaxStyle = (theme) => ({
2 | parallax: {
3 | height: "90vh",
4 | maxHeight: "1000px",
5 | overflow: "hidden",
6 | position: "relative",
7 | backgroundPosition: "center top",
8 | backgroundSize: "cover",
9 | margin: "0",
10 | padding: "0",
11 | border: "0",
12 | display: "flex",
13 | alignItems: "center",
14 | },
15 | filter: {
16 | "&:before": {
17 | background: "rgba(0, 0, 0, 0.5)",
18 | },
19 | "&:after,&:before": {
20 | position: "absolute",
21 | zIndex: "1",
22 | width: "100%",
23 | height: "100%",
24 | display: "block",
25 | left: "0",
26 | top: "0",
27 | content: "''",
28 | },
29 | },
30 | small: {
31 | height: "380px",
32 | },
33 | parallaxResponsive: {
34 | [theme.breakpoints.down("md")]: {
35 | minHeight: "660px",
36 | },
37 | },
38 | });
39 |
40 | export default parallaxStyle;
41 |
--------------------------------------------------------------------------------
/components/Card/CardFooter.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | // @material-ui/icons
8 |
9 | // core components
10 | import styles from "../../styles/jss/nextjs-material-kit/components/cardFooterStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function CardFooter(props: CardFooterProps) {
15 | const classes = useStyles();
16 | const { className, children, ...rest } = props;
17 | const cardFooterClasses = classNames({
18 | [classes.cardFooter]: true,
19 | [className]: className !== undefined
20 | });
21 | return (
22 |
23 | {children}
24 |
25 | );
26 | }
27 |
28 | export interface CardFooterProps {
29 | className?: string;
30 | children: ReactNode;
31 | };
32 |
--------------------------------------------------------------------------------
/components/Card/CardBody.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactElement, ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | // @material-ui/icons
8 |
9 | // core components
10 | import styles from "../../styles/jss/nextjs-material-kit/components/cardBodyStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function CardBody(props: CardBodyProps) {
15 | const classes = useStyles();
16 | const { className, children, ...rest } = props;
17 | const cardBodyClasses = classNames({
18 | [classes.cardBody]: true,
19 | [className]: className !== undefined
20 | });
21 | return (
22 |
23 | {children}
24 |
25 | );
26 | }
27 |
28 | export interface CardBodyProps {
29 | className?: string;
30 | children: ReactElement | ReactElement[];
31 | };
32 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/components.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../nextjs-material-kit";
2 |
3 | const componentsStyle = {
4 | container,
5 | brand: {
6 | color: "#FFFFFF",
7 | textAlign: "left"
8 | },
9 | title: {
10 | fontSize: "4.2rem",
11 | fontWeight: "600",
12 | display: "inline-block",
13 | position: "relative"
14 | },
15 | subtitle: {
16 | fontSize: "1.313rem",
17 | maxWidth: "510px",
18 | margin: "10px 0 0"
19 | },
20 | main: {
21 | background: "#FFFFFF",
22 | position: "relative",
23 | zIndex: "3"
24 | },
25 | mainRaised: {
26 | margin: "-60px 30px 0px",
27 | borderRadius: "6px",
28 | boxShadow:
29 | "0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)",
30 | "@media (max-width: 830px)": {
31 | marginLeft: "10px",
32 | marginRight: "10px"
33 | }
34 | },
35 | link: {
36 | textDecoration: "none"
37 | },
38 | textCenter: {
39 | textAlign: "center"
40 | }
41 | };
42 |
43 | export default componentsStyle;
44 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/badgeStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | primaryColor,
3 | warningColor,
4 | dangerColor,
5 | successColor,
6 | infoColor,
7 | roseColor
8 | } from "../../nextjs-material-kit";
9 |
10 | const badgeStyle = {
11 | badge: {
12 | marginRight: "3px",
13 | borderRadius: "12px",
14 | padding: "5px 12px",
15 | textTransform: "uppercase",
16 | fontSize: "10px",
17 | fontWeight: "500",
18 | lineHeight: "1",
19 | color: "#fff",
20 | textAlign: "center",
21 | whiteSpace: "nowrap",
22 | verticalAlign: "baseline",
23 | display: "inline-block"
24 | },
25 | primary: {
26 | backgroundColor: primaryColor
27 | },
28 | warning: {
29 | backgroundColor: warningColor
30 | },
31 | danger: {
32 | backgroundColor: dangerColor
33 | },
34 | success: {
35 | backgroundColor: successColor
36 | },
37 | info: {
38 | backgroundColor: infoColor
39 | },
40 | rose: {
41 | backgroundColor: roseColor
42 | },
43 | gray: {
44 | backgroundColor: "#6c757d"
45 | }
46 | };
47 |
48 | export default badgeStyle;
49 |
--------------------------------------------------------------------------------
/components/CustomLinearProgress/CustomLinearProgress.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 |
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 | import LinearProgress from "@material-ui/core/LinearProgress";
7 | // core components
8 | import styles from "../../styles/jss/nextjs-material-kit/components/customLinearProgressStyle";
9 |
10 | const useStyles = makeStyles(styles);
11 |
12 | export default function CustomLinearProgress(props: CustomLinearProgressProps) {
13 | const classes = useStyles();
14 | const { color, ...rest } = props;
15 | return (
16 |
23 | );
24 | }
25 |
26 | export interface CustomLinearProgressProps {
27 | color:
28 | | "primary"
29 | | "warning"
30 | | "danger"
31 | | "success"
32 | | "info"
33 | | "rose"
34 | | "gray";
35 | }
36 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/landingPageSections/teamStyle.ts:
--------------------------------------------------------------------------------
1 | import { cardTitle, title } from "../../../nextjs-material-kit";
2 | import imagesStyle from "../../../nextjs-material-kit/imagesStyles";
3 |
4 | const teamStyle = {
5 | section: {
6 | padding: "70px 0",
7 | textAlign: "center"
8 | },
9 | title: {
10 | ...title,
11 | marginBottom: "1rem",
12 | marginTop: "30px",
13 | minHeight: "32px",
14 | textDecoration: "none"
15 | },
16 | ...imagesStyle,
17 | itemGrid: {
18 | marginLeft: "auto",
19 | marginRight: "auto"
20 | },
21 | cardTitle,
22 | smallTitle: {
23 | color: "#6c757d"
24 | },
25 | description: {
26 | color: "#999"
27 | },
28 | justifyCenter: {
29 | justifyContent: "center !important"
30 | },
31 | socials: {
32 | marginTop: "0",
33 | width: "100%",
34 | transform: "none",
35 | left: "0",
36 | top: "0",
37 | height: "100%",
38 | lineHeight: "41px",
39 | fontSize: "20px",
40 | color: "#999"
41 | },
42 | margin5: {
43 | margin: "5px"
44 | }
45 | };
46 |
47 | export default teamStyle;
48 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/javascriptStyles.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../../nextjs-material-kit";
2 |
3 | import modalStyle from "../../../nextjs-material-kit/modalStyle";
4 | import tooltipsStyle from "../../../nextjs-material-kit/tooltipsStyle";
5 | import popoverStyles from "../../../nextjs-material-kit/popoverStyles";
6 |
7 | const javascriptStyles = {
8 | section: {
9 | padding: "70px 0 0"
10 | },
11 | container,
12 | title: {
13 | ...title,
14 | marginTop: "30px",
15 | minHeight: "32px",
16 | textDecoration: "none"
17 | },
18 | icon: {
19 | width: "17px",
20 | height: "17px",
21 | marginRight: "4px"
22 | },
23 | ...modalStyle,
24 | label: {
25 | color: "rgba(0, 0, 0, 0.26)",
26 | cursor: "pointer",
27 | display: "inline-flex",
28 | fontSize: "14px",
29 | transition: "0.3s ease all",
30 | lineHeight: "1.428571429",
31 | fontWeight: "400",
32 | paddingLeft: "0",
33 | letterSpacing: "normal"
34 | },
35 | ...tooltipsStyle,
36 | ...popoverStyles
37 | };
38 |
39 | export default javascriptStyles;
40 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/typographyStyle.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../../nextjs-material-kit";
2 |
3 | import imagesStyles from "../../imagesStyles";
4 |
5 | const typographyStyle = {
6 | section: {
7 | padding: "70px 0"
8 | },
9 | container,
10 | space50: {
11 | height: "50px",
12 | display: "block"
13 | },
14 | title: {
15 | ...title,
16 | marginTop: "30px",
17 | minHeight: "32px",
18 | textDecoration: "none"
19 | },
20 | typo: {
21 | paddingLeft: "25%",
22 | marginBottom: "40px",
23 | position: "relative",
24 | width: "100%"
25 | },
26 | note: {
27 | fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
28 | bottom: "10px",
29 | color: "#c0c1c2",
30 | display: "block",
31 | fontWeight: "400",
32 | fontSize: "13px",
33 | lineHeight: "13px",
34 | left: "0",
35 | marginLeft: "20px",
36 | position: "absolute",
37 | width: "260px"
38 | },
39 | marginLeft: {
40 | marginLeft: "auto !important"
41 | },
42 | ...imagesStyles
43 | };
44 |
45 | export default typographyStyle;
46 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/imagesStyles.ts:
--------------------------------------------------------------------------------
1 | const imagesStyles = {
2 | imgFluid: {
3 | maxWidth: "100%",
4 | height: "auto",
5 | },
6 | imgRounded: {
7 | borderRadius: "6px !important",
8 | },
9 | imgRoundedCircle: {
10 | borderRadius: "50% !important",
11 | },
12 | imgRaised: {
13 | boxShadow:
14 | "0 5px 15px -8px rgba(0, 0, 0, 0.24), 0 8px 10px -5px rgba(0, 0, 0, 0.2)",
15 | },
16 | imgGallery: {
17 | width: "100%",
18 | marginBottom: "2.142rem",
19 | },
20 | imgCardTop: {
21 | width: "100%",
22 | borderTopLeftRadius: "calc(.25rem - 1px)",
23 | borderTopRightRadius: "calc(.25rem - 1px)",
24 | },
25 | imgCardBottom: {
26 | width: "100%",
27 | borderBottomLeftRadius: "calc(.25rem - 1px)",
28 | borderBottomRightRadius: "calc(.25rem - 1px)",
29 | },
30 | imgCard: {
31 | width: "100%",
32 | borderRadius: "calc(.25rem - 1px)",
33 | },
34 | imgCardOverlay: {
35 | position: "absolute",
36 | top: "0",
37 | right: "0",
38 | bottom: "0",
39 | left: "0",
40 | padding: "1.25rem",
41 | },
42 | };
43 |
44 | export default imagesStyles;
45 |
--------------------------------------------------------------------------------
/styles/scss/nextjs-material-kit.scss:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * NextJS Material Kit v1.2.1 based on Material Kit Free - v2.0.2 (Bootstrap 4.0.0 Final Edition) and Material Kit React v1.8.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/nextjs-material-kit
8 | * Copyright 2022 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/nextjs-material-kit/blob/main/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | @import "core/variables";
19 | @import "core/mixins";
20 |
21 | // Core Components
22 | @import "core/misc";
23 | @import "core/page-transition";
24 |
25 | // Core Plugins
26 |
27 | // @import "plugins/plugin-datetime-picker";
28 | @import "plugins/plugin-nouislider";
29 | @import "plugins/plugin-react-datetime";
30 | @import "plugins/plugin-react-slick";
31 |
--------------------------------------------------------------------------------
/components/Card/Card.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | // @material-ui/icons
8 |
9 | // core components
10 | import styles from "../../styles/jss/nextjs-material-kit/components/cardStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function Card(props: CardProps) {
15 | const classes = useStyles();
16 | const { className, children, plain, carousel, ...rest } = props;
17 | const cardClasses = classNames({
18 | [classes.card]: true,
19 | [classes.cardPlain]: plain,
20 | [classes.cardCarousel]: carousel,
21 | });
22 | if(className !== undefined) {
23 | cardClasses.concat(" " + className)
24 | }
25 | return (
26 |
27 | {children}
28 |
29 | );
30 | }
31 |
32 | export interface CardProps {
33 | className?: string;
34 | plain?: boolean;
35 | carousel?: boolean;
36 | children: ReactNode;
37 | };
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 - present App Generator
4 |
5 | > Note: Initially coded by Creative Tim (https://bit.ly/3fKQZaL)
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/components/PageChange/PageChange.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 |
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | import CircularProgress from "@material-ui/core/CircularProgress";
6 |
7 | // core components
8 | import { infoColor, title } from "../../styles/jss/nextjs-material-kit";
9 |
10 | const useStyles = makeStyles({
11 | progress: {
12 | color: infoColor,
13 | width: "6rem !important",
14 | height: "6rem !important"
15 | },
16 | wrapperDiv: {
17 | margin: "100px auto",
18 | padding: "0px",
19 | maxWidth: "360px",
20 | textAlign: "center",
21 | position: "relative",
22 | zIndex: 9999,
23 | top: "0"
24 | },
25 | iconWrapper: {
26 | display: "block"
27 | },
28 | title: {
29 | ...title,
30 | color: "#FFFFFF"
31 | }
32 | });
33 |
34 | export default function PageChange(props) {
35 | const classes = useStyles();
36 | return (
37 |
38 |
39 |
40 |
41 |
42 |
43 | Loading page contents for: {props.path}
44 |
45 |
46 |
47 | );
48 | }
49 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionCompletedExamples.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @material-ui/core components
3 | import { makeStyles } from "@material-ui/core/styles";
4 | // @material-ui/icons
5 |
6 | // core components
7 | import GridContainer from "../../components/Grid/GridContainer";
8 | import GridItem from "../../components/Grid/GridItem";
9 |
10 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/completedStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function SectionCompletedExamples() {
15 | const classes = useStyles();
16 | return (
17 |
18 |
19 |
20 |
21 | Completed with examples
22 |
23 | The kit comes with three pre-built pages to help you get started
24 | faster. You can change the text and images and you{"'"}re good to
25 | go. More importantly, looking at them will give you a picture of
26 | what you can build with this powerful kit.
27 |
28 |
29 |
30 |
31 |
32 | );
33 | }
34 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/modalStyle.ts:
--------------------------------------------------------------------------------
1 | const modalStyle = {
2 | modal: {
3 | borderRadius: "6px",
4 | },
5 | modalHeader: {
6 | borderBottom: "none",
7 | paddingTop: "24px",
8 | paddingRight: "24px",
9 | paddingBottom: "0",
10 | paddingLeft: "24px",
11 | minHeight: "16.43px",
12 | },
13 | modalTitle: {
14 | margin: "0",
15 | lineHeight: "1.42857143",
16 | },
17 | modalCloseButton: {
18 | color: "#999999",
19 | marginTop: "-12px",
20 | WebkitAppearance: "none",
21 | padding: "0",
22 | cursor: "pointer",
23 | background: "0 0",
24 | border: "0",
25 | fontSize: "inherit",
26 | opacity: ".9",
27 | textShadow: "none",
28 | fontWeight: "700",
29 | lineHeight: "1",
30 | float: "right",
31 | },
32 | modalClose: {
33 | width: "16px",
34 | height: "16px",
35 | },
36 | modalBody: {
37 | paddingTop: "24px",
38 | paddingRight: "24px",
39 | paddingBottom: "16px",
40 | paddingLeft: "24px",
41 | position: "relative",
42 | },
43 | modalFooter: {
44 | padding: "15px",
45 | textAlign: "right",
46 | paddingTop: "0",
47 | margin: "0",
48 | },
49 | modalFooterCenter: {
50 | marginLeft: "auto",
51 | marginRight: "auto",
52 | },
53 | };
54 |
55 | export default modalStyle;
56 |
--------------------------------------------------------------------------------
/components/Card/CardHeader.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | // @material-ui/icons
8 |
9 | // core components
10 | import styles from "../../styles/jss/nextjs-material-kit/components/cardHeaderStyle";
11 | import { CardHeaderTypeMap } from "@material-ui/core";
12 |
13 | const useStyles = makeStyles(styles);
14 |
15 | export default function CardHeader(props: CardHeaderProps) {
16 | const classes = useStyles();
17 | const { className, children, color, plain, ...rest } = props;
18 | const cardHeaderClasses = classNames({
19 | [classes.cardHeader]: true,
20 | [classes[color + "CardHeader"]]: color,
21 | [classes.cardHeaderPlain]: plain,
22 | });
23 | if(className !== undefined)
24 | cardHeaderClasses.concat(" " + className);
25 | return (
26 |
27 | {children}
28 |
29 | );
30 | }
31 |
32 | export interface CardHeaderProps {
33 | className?: string;
34 | color: "warning" | "success" | "danger" | "info" | "primary" | "rose";
35 | plain?: boolean;
36 | children: ReactNode;
37 | }
38 |
--------------------------------------------------------------------------------
/utils/markdown.ts:
--------------------------------------------------------------------------------
1 | import * as path from "path";
2 | import * as fs from "fs";
3 | import matter from "gray-matter";
4 |
5 | export async function getAllArticles(pageIndex = 1) {
6 | const articles = fs.readdirSync(path.join(process.cwd(), "blog"));
7 |
8 | const totalArticles = articles.reduce((allArticles, articleSlug) => {
9 | // get parsed data from markdown files in the "blog" dir
10 | const source = fs.readFileSync(
11 | path.join(process.cwd(), "blog", articleSlug),
12 | "utf-8"
13 | );
14 | const { data } = matter(source);
15 |
16 | return [
17 | {
18 | ...data,
19 | slug: articleSlug.replace(".mdx", ""),
20 | published: data.published.toString(),
21 | },
22 | ...allArticles,
23 | ];
24 | }, []);
25 |
26 | return filterPostsByPageIndex(totalArticles, pageIndex);
27 | }
28 |
29 | export const filterPostsByPageIndex = (posts: [], pageIndex: number) => {
30 | const postPerPage = 5;
31 | // get the total posts from page 1 to current page
32 | const totalPagePosts = +pageIndex * postPerPage;
33 |
34 | // get the total posts from page 1 to previous page
35 | const prevPagePosts = totalPagePosts - postPerPage;
36 |
37 | return posts.filter(
38 | (post, index) => index < totalPagePosts && index >= prevPagePosts
39 | );
40 | };
41 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/typographyStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | defaultFont,
3 | primaryColor,
4 | infoColor,
5 | successColor,
6 | warningColor,
7 | dangerColor
8 | } from "../../nextjs-material-kit";
9 |
10 | const typographyStyle = {
11 | defaultFontStyle: {
12 | ...defaultFont,
13 | fontSize: "14px"
14 | },
15 | defaultHeaderMargins: {
16 | marginTop: "20px",
17 | marginBottom: "10px"
18 | },
19 | quote: {
20 | padding: "10px 20px",
21 | margin: "0 0 20px",
22 | fontSize: "17.5px",
23 | borderLeft: "5px solid #eee"
24 | },
25 | quoteText: {
26 | margin: "0 0 10px",
27 | fontStyle: "italic"
28 | },
29 | quoteAuthor: {
30 | display: "block",
31 | fontSize: "80%",
32 | lineHeight: "1.42857143",
33 | color: "#777"
34 | },
35 | mutedText: {
36 | color: "#777"
37 | },
38 | primaryText: {
39 | color: primaryColor
40 | },
41 | infoText: {
42 | color: infoColor
43 | },
44 | successText: {
45 | color: successColor
46 | },
47 | warningText: {
48 | color: warningColor
49 | },
50 | dangerText: {
51 | color: dangerColor
52 | },
53 | smallText: {
54 | fontSize: "65%",
55 | fontWeight: "400",
56 | lineHeight: "1",
57 | color: "#777"
58 | }
59 | };
60 |
61 | export default typographyStyle;
62 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/infoStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | primaryColor,
3 | warningColor,
4 | dangerColor,
5 | successColor,
6 | infoColor,
7 | roseColor,
8 | grayColor,
9 | title
10 | } from "../../nextjs-material-kit";
11 |
12 | const infoStyle = {
13 | infoArea: {
14 | maxWidth: "360px",
15 | margin: "0 auto",
16 | padding: "0px"
17 | },
18 | iconWrapper: {
19 | float: "left",
20 | marginTop: "24px",
21 | marginRight: "10px"
22 | },
23 | primary: {
24 | color: primaryColor
25 | },
26 | warning: {
27 | color: warningColor
28 | },
29 | danger: {
30 | color: dangerColor
31 | },
32 | success: {
33 | color: successColor
34 | },
35 | info: {
36 | color: infoColor
37 | },
38 | rose: {
39 | color: roseColor
40 | },
41 | gray: {
42 | color: grayColor
43 | },
44 | icon: {
45 | width: "36px",
46 | height: "36px"
47 | },
48 | descriptionWrapper: {
49 | color: grayColor,
50 | overflow: "hidden"
51 | },
52 | title,
53 | description: {
54 | color: grayColor,
55 | overflow: "hidden",
56 | marginTop: "0px",
57 | fontSize: "14px"
58 | },
59 | iconWrapperVertical: {
60 | float: "none"
61 | },
62 | iconVertical: {
63 | width: "61px",
64 | height: "61px"
65 | }
66 | };
67 |
68 | export default infoStyle;
69 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/popoverStyles.ts:
--------------------------------------------------------------------------------
1 | const popoverStyles = {
2 | popover: {
3 | padding: "0",
4 | boxShadow:
5 | "0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)",
6 | lineHeight: "1.5em",
7 | background: "#fff",
8 | border: "none",
9 | borderRadius: "3px",
10 | display: "block",
11 | maxWidth: "276px",
12 | fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
13 | fontStyle: "normal",
14 | fontWeight: "400",
15 | textAlign: "start",
16 | textDecoration: "none",
17 | textShadow: "none",
18 | textTransform: "none",
19 | letterSpacing: "normal",
20 | wordBreak: "normal",
21 | wordSpacing: "normal",
22 | whiteSpace: "normal",
23 | lineBreak: "auto",
24 | fontSize: "0.875rem",
25 | wordWrap: "break-word",
26 | },
27 | popoverBottom: {
28 | marginTop: "5px",
29 | },
30 | popoverHeader: {
31 | backgroundColor: "#fff",
32 | border: "none",
33 | padding: "15px 15px 5px",
34 | fontSize: "1.125rem",
35 | margin: "0",
36 | color: "#555",
37 | borderTopLeftRadius: "calc(0.3rem - 1px)",
38 | borderTopRightRadius: "calc(0.3rem - 1px)",
39 | },
40 | popoverBody: {
41 | padding: "10px 15px 15px",
42 | lineHeight: "1.4",
43 | color: "#555",
44 | },
45 | };
46 |
47 | export default popoverStyles;
48 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/footerStyle.ts:
--------------------------------------------------------------------------------
1 | import { container, primaryColor } from "../../nextjs-material-kit";
2 |
3 | const footerStyle = {
4 | block: {
5 | color: "inherit",
6 | padding: "0.9375rem",
7 | fontWeight: "500",
8 | fontSize: "12px",
9 | textTransform: "uppercase",
10 | borderRadius: "3px",
11 | textDecoration: "none",
12 | position: "relative",
13 | display: "block",
14 | },
15 | left: {
16 | float: "left!important",
17 | display: "block",
18 | },
19 | right: {
20 | padding: "15px 0",
21 | margin: "0",
22 | float: "right!important",
23 | },
24 | footer: {
25 | padding: "0.9375rem 0",
26 | textAlign: "center",
27 | display: "flex",
28 | zIndex: "2",
29 | position: "relative",
30 | },
31 | a: {
32 | color: primaryColor,
33 | textDecoration: "none",
34 | backgroundColor: "transparent",
35 | },
36 | footerWhiteFont: {
37 | "&,&:hover,&:focus": {
38 | color: "#FFFFFF",
39 | },
40 | },
41 | container,
42 | list: {
43 | marginBottom: "0",
44 | padding: "0",
45 | marginTop: "0",
46 | },
47 | inlineBlock: {
48 | display: "inline-block",
49 | padding: "0px",
50 | width: "auto",
51 | },
52 | icon: {
53 | width: "18px",
54 | height: "18px",
55 | position: "relative",
56 | top: "3px",
57 | },
58 | };
59 | export default footerStyle;
60 |
--------------------------------------------------------------------------------
/components/Blog/BlogCard.tsx:
--------------------------------------------------------------------------------
1 | import {
2 | Card,
3 | CardActionArea,
4 | CardActions,
5 | CardContent,
6 | CardMedia,
7 | Typography,
8 | } from "@material-ui/core";
9 | import Link from "next/link";
10 | import Button from "../CustomButtons/Button";
11 | import React from "react";
12 |
13 | type PostType = {
14 | title: string;
15 | description: string;
16 | published: string;
17 | image_url: string;
18 | slug: string;
19 | };
20 |
21 | export default function BlogCard(props: { post: PostType }) {
22 | const { post } = props;
23 | return (
24 |
25 |
26 |
32 |
33 |
34 | {post.title}
35 |
36 | Published on {post.published}
37 |
38 | {post.description}
39 |
40 |
41 |
42 |
43 |
44 |
45 | Read now
46 |
47 |
48 |
49 |
50 | );
51 | }
52 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/customLinearProgressStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | primaryColor,
3 | warningColor,
4 | dangerColor,
5 | successColor,
6 | infoColor,
7 | roseColor,
8 | grayColor
9 | } from "../../nextjs-material-kit";
10 |
11 | const customLinearProgressStyle = {
12 | root: {
13 | height: "4px",
14 | marginBottom: "20px",
15 | overflow: "hidden"
16 | },
17 | bar: {
18 | height: "4px"
19 | },
20 | primary: {
21 | backgroundColor: primaryColor
22 | },
23 | warning: {
24 | backgroundColor: warningColor
25 | },
26 | danger: {
27 | backgroundColor: dangerColor
28 | },
29 | success: {
30 | backgroundColor: successColor
31 | },
32 | info: {
33 | backgroundColor: infoColor
34 | },
35 | rose: {
36 | backgroundColor: roseColor
37 | },
38 | gray: {
39 | backgroundColor: grayColor
40 | },
41 | primaryBackground: {
42 | background: "rgba(156, 39, 176, 0.2)"
43 | },
44 | warningBackground: {
45 | background: "rgba(255, 152, 0, 0.2)"
46 | },
47 | dangerBackground: {
48 | background: "rgba(244, 67, 54, 0.2)"
49 | },
50 | successBackground: {
51 | background: "rgba(76, 175, 80, 0.2)"
52 | },
53 | infoBackground: {
54 | background: "rgba(0, 188, 212, 0.2)"
55 | },
56 | roseBackground: {
57 | background: "rgba(233, 30, 99, 0.2)"
58 | },
59 | grayBackground: {
60 | background: "rgba(221, 221, 221, 0.2)"
61 | }
62 | };
63 |
64 | export default customLinearProgressStyle;
65 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/loginStyle.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../../nextjs-material-kit";
2 |
3 | const loginStyle = {
4 | section: {
5 | minHeight: "110vh",
6 | maxHeight: "1600px",
7 | overflow: "hidden",
8 | padding: "70px 0",
9 | backgroundPosition: "top center",
10 | backgroundSize: "cover",
11 | margin: "0",
12 | border: "0",
13 | display: "flex",
14 | alignItems: "center",
15 | backgroundImage: "url('/img/sign.jpg')"
16 | },
17 | container,
18 | form: {
19 | margin: "0"
20 | },
21 | cardHeader: {
22 | width: "auto",
23 | textAlign: "center",
24 | marginLeft: "20px",
25 | marginRight: "20px",
26 | marginTop: "-40px",
27 | padding: "20px 0",
28 | marginBottom: "15px"
29 | },
30 | socialIcons: {
31 | maxWidth: "24px",
32 | marginTop: "0",
33 | width: "100%",
34 | transform: "none",
35 | left: "0",
36 | top: "0",
37 | height: "100%",
38 | lineHeight: "41px",
39 | fontSize: "20px"
40 | },
41 | divider: {
42 | marginTop: "30px",
43 | marginBottom: "0px",
44 | textAlign: "center"
45 | },
46 | cardFooter: {
47 | paddingTop: "0rem",
48 | border: "0",
49 | borderRadius: "6px",
50 | justifyContent: "center !important"
51 | },
52 | socialLine: {
53 | marginTop: "1rem",
54 | textAlign: "center",
55 | padding: "0"
56 | },
57 | inputIconsColor: {
58 | color: "#495057"
59 | }
60 | };
61 |
62 | export default loginStyle;
63 |
--------------------------------------------------------------------------------
/components/InfoArea/InfoArea.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // nodejs library that concatenates classes
4 | import classNames from "classnames";
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 |
8 | import styles from "../../styles/jss/nextjs-material-kit/components/infoStyle";
9 |
10 | const useStyles = makeStyles(styles);
11 |
12 | export default function InfoArea(props: InfoAreaProps) {
13 | const classes = useStyles();
14 | const { title, description, iconColor, vertical } = props;
15 | const iconWrapper = classNames({
16 | [classes.iconWrapper]: true,
17 | [classes[iconColor || "gray"]]: true,
18 | [classes.iconWrapperVertical]: vertical
19 | });
20 | const iconClasses = classNames({
21 | [classes.icon]: true,
22 | [classes.iconVertical]: vertical
23 | });
24 | return (
25 |
26 |
29 |
30 |
{title}
31 |
{description}
32 |
33 |
34 | );
35 | }
36 |
37 | export interface InfoAreaProps {
38 | icon: any;
39 | title: any;
40 | description: string;
41 | iconColor?:
42 | | "primary"
43 | | "warning"
44 | | "danger"
45 | | "success"
46 | | "info"
47 | | "rose"
48 | | "gray"
49 | vertical: boolean;
50 | };
51 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/profilePage.ts:
--------------------------------------------------------------------------------
1 | import { container, title } from "../../nextjs-material-kit";
2 |
3 | import imagesStyle from "../../nextjs-material-kit/imagesStyles";
4 |
5 | const profilePageStyle = {
6 | container,
7 | profile: {
8 | textAlign: "center",
9 | "& img": {
10 | maxWidth: "160px",
11 | width: "100%",
12 | margin: "0 auto",
13 | transform: "translate3d(0, -50%, 0)"
14 | }
15 | },
16 | description: {
17 | margin: "1.071rem auto 0",
18 | maxWidth: "600px",
19 | color: "#999",
20 | textAlign: "center !important"
21 | },
22 | name: {
23 | marginTop: "-80px"
24 | },
25 | ...imagesStyle,
26 | main: {
27 | background: "#FFFFFF",
28 | position: "relative",
29 | zIndex: "3"
30 | },
31 | mainRaised: {
32 | margin: "-60px 30px 0px",
33 | borderRadius: "6px",
34 | boxShadow:
35 | "0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.2)"
36 | },
37 | title: {
38 | ...title,
39 | display: "inline-block",
40 | position: "relative",
41 | marginTop: "30px",
42 | minHeight: "32px",
43 | textDecoration: "none"
44 | },
45 | socials: {
46 | marginTop: "0",
47 | width: "100%",
48 | transform: "none",
49 | left: "0",
50 | top: "0",
51 | height: "100%",
52 | lineHeight: "41px",
53 | fontSize: "20px",
54 | color: "#999"
55 | },
56 | navWrapper: {
57 | margin: "20px auto 50px auto",
58 | textAlign: "center"
59 | }
60 | };
61 |
62 | export default profilePageStyle;
63 |
--------------------------------------------------------------------------------
/styles/scss/core/variables/_bootstrap-material-design-base.scss:
--------------------------------------------------------------------------------
1 | $gray-lighter: rgba($black, 0.12) !default;
2 | $gray-light: #999 !default;
3 | $gray-alpha: 0.54 !default;
4 | $gray: #555 !default; // spec color
5 | $gray-dark: rgba(
6 | $black,
7 | 0.87
8 | ) !default; // used for text color - others use grey-600 which is considerably lighter
9 |
10 | $bmd-font-weight-base: 400;
11 |
12 | // wondering if any of these could still be refactored out, but are definitely in use.
13 | $bmd-inverse: rgba($white, 1) !default;
14 | $bmd-inverse-light: rgba($white, 0.84) !default;
15 | $bmd-inverse-lighter: rgba($white, 0.54) !default;
16 |
17 | $bmd-label-color: $gray-color !default;
18 | $bmd-label-color-inner-focus: $gray !default; // e.g. radio label or text-muted not a control-label which is primary
19 |
20 | $border-radius-base: 3px !default;
21 | $border-radius-small: 2px !default;
22 | $border-radius-large: 6px !default;
23 | $border-radius-huge: 10px !default;
24 | $border-radius-label: 12px !default;
25 | $border-radius-extreme: 30px !default;
26 |
27 | // Typography elements
28 | $mdb-font-family: "Roboto", "Helvetica", "Arial", sans-serif !default;
29 | $mdb-text-color-light: $white !default;
30 | $mdb-text-color-light-hex: $white !default; // for contrast function in inverse
31 | $mdb-text-color-primary: unquote("rgba(#{$rgb-black}, 0.87)") !default;
32 | $mdb-text-color-primary-hex: $black !default; // for contrast function in inverse
33 | $icon-color: rgba(0, 0, 0, 0.5) !default;
34 |
35 | $mdb-label-color: unquote("rgba(#{$rgb-black}, 0.26)") !default;
36 | $mdb-label-color-toggle-focus: unquote("rgba(#{$rgb-black}, .54)") !default;
37 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/customTabsStyle.ts:
--------------------------------------------------------------------------------
1 | const customTabsStyle = {
2 | cardTitle: {
3 | float: "left",
4 | padding: "10px 10px 10px 0px",
5 | lineHeight: "24px",
6 | },
7 | cardTitleRTL: {
8 | float: "right",
9 | padding: "10px 0px 10px 10px !important",
10 | },
11 | displayNone: {
12 | display: "none !important",
13 | },
14 | tabsRoot: {
15 | minHeight: "unset !important",
16 | },
17 | tabRootButton: {
18 | minHeight: "unset !important",
19 | minWidth: "unset !important",
20 | width: "unset !important",
21 | height: "unset !important",
22 | maxWidth: "unset !important",
23 | maxHeight: "unset !important",
24 | padding: "10px 15px",
25 | borderRadius: "3px",
26 | lineHeight: "24px",
27 | border: "0 !important",
28 | color: "#fff !important",
29 | marginLeft: "4px",
30 | fontWeight: "500",
31 | fontSize: "12px",
32 | "&:last-child": {
33 | marginLeft: "0px",
34 | },
35 | },
36 | tabSelected: {
37 | backgroundColor: "rgba(255, 255, 255, 0.2)",
38 | transition: "0.2s background-color 0.1s",
39 | },
40 | tabWrapper: {
41 | display: "inline-block",
42 | minHeight: "unset !important",
43 | minWidth: "unset !important",
44 | width: "unset !important",
45 | height: "unset !important",
46 | maxWidth: "unset !important",
47 | maxHeight: "unset !important",
48 | "& > svg": {
49 | verticalAlign: "middle",
50 | margin: "-1.55px 5px 0 0 !important",
51 | },
52 | "&,& *": {
53 | letterSpacing: "normal !important",
54 | },
55 | },
56 | };
57 |
58 | export default customTabsStyle;
59 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/componentsSections/navbarsStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | container,
3 | title,
4 | grayColor
5 | } from "../../../nextjs-material-kit";
6 | import headerLinksStyle from "../../components/headerLinksStyle";
7 |
8 | const navbarsStyle = (theme) => ({
9 | section: {
10 | padding: "70px 0",
11 | paddingTop: "0"
12 | },
13 | container,
14 | title: {
15 | ...title,
16 | marginTop: "30px",
17 | minHeight: "32px",
18 | textDecoration: "none"
19 | },
20 | navbar: {
21 | marginBottom: "-20px",
22 | zIndex: "100",
23 | position: "relative",
24 | overflow: "hidden",
25 | "& header": {
26 | borderRadius: "0"
27 | }
28 | },
29 | navigation: {
30 | backgroundPosition: "center center",
31 | backgroundSize: "cover",
32 | marginTop: "0",
33 | minHeight: "740px"
34 | },
35 | formControl: {
36 | [theme.breakpoints.down("md")]: {
37 | margin: "10px 0 0 15px !important",
38 | color: grayColor
39 | },
40 | margin: "10px 0 0 0 !important",
41 | paddingTop: "0"
42 | },
43 | inputRootCustomClasses: {
44 | margin: "0!important"
45 | },
46 | searchIcon: {
47 | width: "20px",
48 | height: "20px",
49 | color: "inherit"
50 | },
51 | ...headerLinksStyle(theme),
52 | img: {
53 | width: "40px",
54 | height: "40px",
55 | borderRadius: "50%"
56 | },
57 | imageDropdownButton: {
58 | [theme.breakpoints.down("md")]: {
59 | top: "0",
60 | margin: "5px 15px"
61 | },
62 | padding: "0px",
63 | top: "4px",
64 | borderRadius: "50%",
65 | marginLeft: "5px"
66 | }
67 | });
68 |
69 | export default navbarsStyle;
70 |
--------------------------------------------------------------------------------
/components/Pagination/Pagination.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // nodejs library that concatenates classes
4 | import classNames from "classnames";
5 |
6 | // @material-ui/core components
7 | import { makeStyles } from "@material-ui/core/styles";
8 | import Button from "@material-ui/core/Button";
9 |
10 | import styles from "../../styles/jss/nextjs-material-kit/components/paginationStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function Pagination(props: PaginationProps) {
15 | const classes = useStyles();
16 | const { pages, color } = props;
17 | return (
18 |
19 | {pages.map((prop, key) => {
20 | const paginationLink = classNames({
21 | [classes.paginationLink]: true,
22 | [classes[color || "primary"]]: prop.active,
23 | [classes.disabled]: prop.disabled,
24 | });
25 | return (
26 |
27 | {prop.onClick ? (
28 |
29 | {prop.text}
30 |
31 | ) : (
32 | alert("you've clicked " + prop.text)}
34 | className={paginationLink}
35 | >
36 | {prop.text}
37 |
38 | )}
39 |
40 | );
41 | })}
42 |
43 | );
44 | }
45 | export interface PaginationProps {
46 | pages: {
47 | active: boolean;
48 | disabled: boolean;
49 | text: number | "PREV" | "NEXT" | "...";
50 | onClick?: any;
51 | }[];
52 | color: "primary" | "info" | "success" | "warning" | "danger";
53 | }
54 |
--------------------------------------------------------------------------------
/styles/scss/core/variables/_shadow.scss:
--------------------------------------------------------------------------------
1 | // Shadows (originally from mdl http://www.getmdl.io/)
2 | $bmd-shadow-umbra-opacity: 0.2 !default;
3 | $bmd-shadow-penumbra-opacity: 0.14 !default;
4 | $bmd-shadow-ambient-opacity: 0.12 !default;
5 |
6 | // Declare the following for reuse with both mixins and the bootstrap variables
7 | $bmd-shadow-focus: 0 0 8px rgba($black, 0.18), 0 8px 16px rgba($black, 0.36);
8 |
9 | $bmd-shadow-2dp: 0 2px 2px 0 rgba($black, $bmd-shadow-penumbra-opacity),
10 | 0 3px 1px -2px rgba($black, $bmd-shadow-umbra-opacity),
11 | 0 1px 5px 0 rgba($black, $bmd-shadow-ambient-opacity);
12 |
13 | $bmd-shadow-3dp: 0 3px 4px 0 rgba($black, $bmd-shadow-penumbra-opacity),
14 | 0 3px 3px -2px rgba($black, $bmd-shadow-umbra-opacity),
15 | 0 1px 8px 0 rgba($black, $bmd-shadow-ambient-opacity);
16 |
17 | $bmd-shadow-4dp: 0 4px 5px 0 rgba($black, $bmd-shadow-penumbra-opacity),
18 | 0 1px 10px 0 rgba($black, $bmd-shadow-ambient-opacity),
19 | 0 2px 4px -1px rgba($black, $bmd-shadow-umbra-opacity);
20 |
21 | $bmd-shadow-6dp: 0 6px 10px 0 rgba($black, $bmd-shadow-penumbra-opacity),
22 | 0 1px 18px 0 rgba($black, $bmd-shadow-ambient-opacity),
23 | 0 3px 5px -1px rgba($black, $bmd-shadow-umbra-opacity);
24 |
25 | $bmd-shadow-8dp: 0 8px 10px 1px rgba($black, $bmd-shadow-penumbra-opacity),
26 | 0 3px 14px 2px rgba($black, $bmd-shadow-ambient-opacity),
27 | 0 5px 5px -3px rgba($black, $bmd-shadow-umbra-opacity);
28 |
29 | $bmd-shadow-16dp: 0 16px 24px 2px rgba($black, $bmd-shadow-penumbra-opacity),
30 | 0 6px 30px 5px rgba($black, $bmd-shadow-ambient-opacity),
31 | 0 8px 10px -5px rgba($black, $bmd-shadow-umbra-opacity);
32 |
33 | $bmd-shadow-24dp: 0 9px 46px 8px rgba($black, $bmd-shadow-penumbra-opacity),
34 | 0 11px 15px -7px rgba($black, $bmd-shadow-ambient-opacity),
35 | 0 24px 38px 3px rgba($black, $bmd-shadow-umbra-opacity);
36 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/snackbarContentStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | defaultFont,
3 | primaryBoxShadow,
4 | infoBoxShadow,
5 | successBoxShadow,
6 | warningBoxShadow,
7 | dangerBoxShadow,
8 | container
9 | } from "../../nextjs-material-kit";
10 |
11 | const snackbarContentStyle = {
12 | root: {
13 | ...defaultFont,
14 | position: "relative",
15 | padding: "20px 15px",
16 | lineHeight: "20px",
17 | marginBottom: "20px",
18 | fontSize: "14px",
19 | backgroundColor: "white",
20 | color: "#555555",
21 | borderRadius: "0px",
22 | maxWidth: "100%",
23 | minWidth: "auto",
24 | boxShadow:
25 | "0 12px 20px -10px rgba(255, 255, 255, 0.28), 0 4px 20px 0px rgba(0, 0, 0, 0.12), 0 7px 8px -5px rgba(255, 255, 255, 0.2)"
26 | },
27 | info: {
28 | backgroundColor: "#00d3ee",
29 | color: "#ffffff",
30 | ...infoBoxShadow
31 | },
32 | success: {
33 | backgroundColor: "#5cb860",
34 | color: "#ffffff",
35 | ...successBoxShadow
36 | },
37 | warning: {
38 | backgroundColor: "#ffa21a",
39 | color: "#ffffff",
40 | ...warningBoxShadow
41 | },
42 | danger: {
43 | backgroundColor: "#f55a4e",
44 | color: "#ffffff",
45 | ...dangerBoxShadow
46 | },
47 | primary: {
48 | backgroundColor: "#af2cc5",
49 | color: "#ffffff",
50 | ...primaryBoxShadow
51 | },
52 | message: {
53 | padding: "0",
54 | display: "block",
55 | maxWidth: "89%",
56 | "&,& *": {
57 | letterSpacing: "normal"
58 | }
59 | },
60 | close: {
61 | width: "14px",
62 | height: "14px"
63 | },
64 | iconButton: {
65 | width: "24px",
66 | height: "24px",
67 | float: "right",
68 | fontSize: "1.5rem",
69 | fontWeight: "500",
70 | lineHeight: "1",
71 | position: "absolute",
72 | right: "-4px",
73 | top: "0",
74 | padding: "0"
75 | },
76 | icon: {
77 | display: "block",
78 | float: "left",
79 | marginRight: "1.071rem"
80 | },
81 | container: {
82 | ...container,
83 | position: "relative"
84 | }
85 | };
86 |
87 | export default snackbarContentStyle;
88 |
--------------------------------------------------------------------------------
/components/CustomButtons/Button.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library to set properties for components
3 | // nodejs library that concatenates classes
4 | import classNames from "classnames";
5 |
6 | // @material-ui/core components
7 | import makeStyles from "@material-ui/core/styles/makeStyles";
8 | import Button, { ButtonTypeMap } from "@material-ui/core/Button";
9 |
10 | // core components
11 |
12 | import buttonStyle from "../../styles/jss/nextjs-material-kit/components/buttonStyle";
13 |
14 | const makeComponentStyles = makeStyles(() => ({
15 | ...buttonStyle,
16 | }));
17 |
18 | const RegularButton = React.forwardRef((props: RegularButtonProp, ref: any) => {
19 | const {
20 | color,
21 | round,
22 | children,
23 | fullWidth,
24 | disabled,
25 | simple,
26 | size,
27 | block,
28 | link,
29 | justIcon,
30 | className,
31 | ...rest
32 | } = props;
33 |
34 | const classes = makeComponentStyles();
35 |
36 | const btnClasses = classNames({
37 | [classes.button]: true,
38 | [classes[size]]: size,
39 | [classes[color]]: color,
40 | [classes.round]: round,
41 | [classes.fullWidth]: fullWidth,
42 | [classes.disabled]: disabled,
43 | [classes.simple]: simple,
44 | [classes.block]: block,
45 | [classes.link]: link,
46 | [classes.justIcon]: justIcon,
47 | [className]: className,
48 | });
49 | return (
50 |
51 | {children}
52 |
53 | );
54 | });
55 |
56 | export interface RegularButtonProp {
57 | color:
58 | | "primary"
59 | | "info"
60 | | "success"
61 | | "warning"
62 | | "danger"
63 | | "rose"
64 | | "white"
65 | | "facebook"
66 | | "twitter"
67 | | "google"
68 | | "github"
69 | | "transparent";
70 | size?: "sm" | "lg";
71 | simple?: boolean;
72 | round?: boolean;
73 | fullWidth?: boolean;
74 | disabled?: boolean;
75 | block?: boolean;
76 | link?: boolean;
77 | justIcon?: boolean;
78 | children: ReactNode;
79 | className?: string;
80 | }
81 |
82 | export default RegularButton;
83 |
--------------------------------------------------------------------------------
/components/Snackbar/SnackbarContent.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library to set properties for components
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | import Snack from "@material-ui/core/SnackbarContent";
6 | import IconButton from "@material-ui/core/IconButton";
7 | import Icon from "@material-ui/core/Icon";
8 | // @material-ui/icons
9 | import Close from "@material-ui/icons/Close";
10 | // core components
11 |
12 | import styles from "../../styles/jss/nextjs-material-kit/components/snackbarContentStyle";
13 |
14 | const useStyles = makeStyles(styles);
15 |
16 | export default function SnackbarContent(props: SnackbarContentProps) {
17 | const { message, color, close, icon } = props;
18 | const classes = useStyles();
19 | var action:JSX.Element[] = [];
20 | const closeAlert = () => {
21 | setAlert(null);
22 | };
23 | if (close !== undefined) {
24 | action = [
25 |
32 |
33 | ,
34 | ];
35 | }
36 | let snackIcon: JSX.Element|null = null;
37 | if(icon) {
38 | if(typeof icon === 'string') {
39 | snackIcon = {props.icon} ;
40 | } else {
41 | snackIcon = ;
42 | }
43 | }
44 | const [alert, setAlert] = React.useState(
45 |
48 | {snackIcon}
49 | {message}
50 | {close !== undefined ? action : null}
51 |
52 | }
53 | classes={{
54 | root: classes.root + " " + classes[color],
55 | message: classes.message + " " + classes.container,
56 | }}
57 | />
58 | );
59 | return alert;
60 | }
61 |
62 | export interface SnackbarContentProps {
63 | message: Element | Element[];
64 | color: "info" | "success" | "warning" | "danger" | "primary";
65 | close: boolean;
66 | icon?: string | Element;
67 | }
68 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/customInputStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | primaryColor,
3 | dangerColor,
4 | successColor,
5 | defaultFont
6 | } from "../../nextjs-material-kit";
7 |
8 | const customInputStyle = {
9 | disabled: {
10 | "&:before": {
11 | borderColor: "transparent !important"
12 | }
13 | },
14 | underline: {
15 | "&:hover:not($disabled):before,&:before": {
16 | borderColor: "#D2D2D2 !important",
17 | borderWidth: "1px !important"
18 | },
19 | "&:after": {
20 | borderColor: primaryColor
21 | }
22 | },
23 | underlineError: {
24 | "&:after": {
25 | borderColor: dangerColor
26 | }
27 | },
28 | underlineSuccess: {
29 | "&:after": {
30 | borderColor: successColor
31 | }
32 | },
33 | whiteUnderline: {
34 | "&:hover:not($disabled):before,&:before": {
35 | borderColor: "#FFFFFF"
36 | },
37 | "&:after": {
38 | borderColor: "#FFFFFF"
39 | }
40 | },
41 | labelRoot: {
42 | ...defaultFont,
43 | color: "#AAAAAA !important",
44 | fontWeight: "400",
45 | fontSize: "14px",
46 | lineHeight: "1.42857",
47 | top: "10px",
48 | letterSpacing: "unset",
49 | "& + $underline": {
50 | marginTop: "0px"
51 | }
52 | },
53 | labelRootError: {
54 | color: dangerColor + " !important"
55 | },
56 | labelRootSuccess: {
57 | color: successColor + " !important"
58 | },
59 | formControl: {
60 | margin: "0 0 17px 0",
61 | paddingTop: "27px",
62 | position: "relative",
63 | "& svg,& .fab,& .far,& .fal,& .fas,& .material-icons": {
64 | color: "#495057"
65 | }
66 | },
67 | input: {
68 | color: "#495057",
69 | height: "unset",
70 | "&,&::placeholder": {
71 | fontSize: "14px",
72 | fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
73 | fontWeight: "400",
74 | lineHeight: "1.42857",
75 | opacity: "1"
76 | },
77 | "&::placeholder": {
78 | color: "#AAAAAA"
79 | }
80 | },
81 | whiteInput: {
82 | "&,&::placeholder": {
83 | color: "#FFFFFF",
84 | opacity: "1"
85 | }
86 | }
87 | };
88 |
89 | export default customInputStyle;
90 |
--------------------------------------------------------------------------------
/components/Parallax/Parallax.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 |
8 | // core components
9 | import styles from "../../styles/jss/nextjs-material-kit/components/parallaxStyle";
10 |
11 | const useStyles = makeStyles(styles);
12 |
13 | export default function Parallax(props) {
14 | let windowScrollTop;
15 | // if (window.innerWidth >= 768) {
16 | // windowScrollTop = window.pageYOffset / 3;
17 | // } else {
18 | // windowScrollTop = 0;
19 | // }
20 | const [transform, setTransform] = React.useState("translate3d(0,0px,0)");
21 | React.useEffect(() => {
22 | if (window.innerWidth >= 768) {
23 | window.addEventListener("scroll", resetTransform);
24 | }
25 | return function cleanup() {
26 | if (window.innerWidth >= 768) {
27 | window.removeEventListener("scroll", resetTransform);
28 | }
29 | };
30 | });
31 | const resetTransform = () => {
32 | var windowScrollTop = window.pageYOffset / 3;
33 | setTransform("translate3d(0," + windowScrollTop + "px,0)");
34 | };
35 | const { filter, className, children, style, image, small, responsive } =
36 | props;
37 | const classes = useStyles();
38 | const parallaxClasses = classNames({
39 | [classes.parallax]: true,
40 | [classes.filter]: filter,
41 | [classes.small]: small,
42 | [classes.parallaxResponsive]: responsive,
43 | [className]: className !== undefined
44 | });
45 | return (
46 |
54 | {children}
55 |
56 | );
57 | }
58 |
59 | export interface ParallaxProps {
60 | className: string,
61 | filter: boolean,
62 | children: Element|Element[],
63 | style: string,
64 | image: string,
65 | small: boolean,
66 | // this will add a min-height of 660px on small screens
67 | responsive: boolean
68 | };
69 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/pages/loginPage.ts:
--------------------------------------------------------------------------------
1 | import { container } from "../../nextjs-material-kit";
2 |
3 | const signupPageStyle = {
4 | container: {
5 | ...container,
6 | zIndex: "2",
7 | position: "relative",
8 | paddingTop: "20vh",
9 | color: "#FFFFFF",
10 | paddingBottom: "200px"
11 | },
12 | cardHidden: {
13 | opacity: "0",
14 | transform: "translate3d(0, -60px, 0)"
15 | },
16 | pageHeader: {
17 | minHeight: "100vh",
18 | height: "auto",
19 | display: "inherit",
20 | position: "relative",
21 | margin: "0",
22 | padding: "0",
23 | border: "0",
24 | alignItems: "center",
25 | "&:before": {
26 | background: "rgba(0, 0, 0, 0.5)"
27 | },
28 | "&:before,&:after": {
29 | position: "absolute",
30 | zIndex: "1",
31 | width: "100%",
32 | height: "100%",
33 | display: "block",
34 | left: "0",
35 | top: "0",
36 | content: '""'
37 | },
38 | "& footer li a,& footer li a:hover,& footer li a:active": {
39 | color: "#FFFFFF"
40 | },
41 | "& footer": {
42 | position: "absolute",
43 | bottom: "0",
44 | width: "100%"
45 | }
46 | },
47 | form: {
48 | margin: "0"
49 | },
50 | cardHeader: {
51 | width: "auto",
52 | textAlign: "center",
53 | marginLeft: "20px",
54 | marginRight: "20px",
55 | marginTop: "-40px",
56 | padding: "20px 0",
57 | marginBottom: "15px"
58 | },
59 | socialIcons: {
60 | maxWidth: "24px",
61 | marginTop: "0",
62 | width: "100%",
63 | transform: "none",
64 | left: "0",
65 | top: "0",
66 | height: "100%",
67 | lineHeight: "41px",
68 | fontSize: "20px"
69 | },
70 | divider: {
71 | marginTop: "30px",
72 | marginBottom: "0px",
73 | textAlign: "center"
74 | },
75 | cardFooter: {
76 | paddingTop: "0rem",
77 | border: "0",
78 | borderRadius: "6px",
79 | justifyContent: "center !important"
80 | },
81 | socialLine: {
82 | marginTop: "1rem",
83 | textAlign: "center",
84 | padding: "0"
85 | },
86 | inputIconsColor: {
87 | color: "#495057"
88 | }
89 | };
90 |
91 | export default signupPageStyle;
92 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "next-material-kit",
3 | "version": "1.2.1",
4 | "description": "NextJS Version of Material Kit React by Creative Tim (https://creative-tim.com)",
5 | "scripts": {
6 | "test": "echo \"Error: no test specified\" && exit 1",
7 | "dev": "next dev",
8 | "build": "next build",
9 | "start": "next start",
10 | "export": "next export",
11 | "install:clean": "rm -rf node_modules/ && rm -rf package-lock.json && rm -rf .next/ && npm install && npm run dev"
12 | },
13 | "repository": {
14 | "type": "git",
15 | "url": "git+https://github.com/creativetimofficial/nextjs-material-kit.git"
16 | },
17 | "keywords": [
18 | "next",
19 | "nextjs",
20 | "react",
21 | "reactjs",
22 | "npx",
23 | "material",
24 | "material-design",
25 | "material-kit",
26 | "material-kit-react",
27 | "next-material-kit"
28 | ],
29 | "author": "Creative Tim",
30 | "license": "MIT",
31 | "bugs": {
32 | "url": "https://github.com/creativetimofficial/nextjs-material-kit/issues"
33 | },
34 | "homepage": "https://demos.creative-tim.com/nextjs-material-kit",
35 | "dependencies": {
36 | "@material-ui/core": "^4.12.4",
37 | "@material-ui/icons": "^4.11.3",
38 | "@mdx-js/loader": "^2.0.0-rc.2",
39 | "@mdx-js/react": "^2.0.0-rc.2",
40 | "@reach/disclosure": "^0.17.0",
41 | "@reach/tooltip": "^0.17.0",
42 | "@types/glob": "^8.0.0",
43 | "classnames": "^2.3.2",
44 | "glob": "^8.0.3",
45 | "gray-matter": "^4.0.3",
46 | "moment": "^2.29.4",
47 | "next": "^12.3.0",
48 | "next-mdx-remote": "^4.1.0",
49 | "nouislider": "^15.6.1",
50 | "react": "^18.2.0",
51 | "react-datetime": "^3.1.1",
52 | "react-dom": "^18.2.0",
53 | "react-slick": "^0.29.0",
54 | "rehype-highlight": "^5.0.2",
55 | "remark-frontmatter": "^4.0.1",
56 | "sass": "^1.54.9",
57 | "styled-components": "^5.3.5",
58 | "webpack": "^5.74.0"
59 | },
60 | "peerDependencies": {
61 | "react": ">=16.0.0",
62 | "react-dom": ">=16.0.0"
63 | },
64 | "devDependencies": {
65 | "@types/node": "^18.7.17",
66 | "@types/react": "^18.0.19",
67 | "prettier": "^2.7.1",
68 | "typescript": "^4.8.3"
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionNotifications.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @material-ui/core components
3 | import { makeStyles } from "@material-ui/core/styles";
4 | // @material-ui/icons
5 | import Check from "@material-ui/icons/Check";
6 | import Warning from "@material-ui/icons/Warning";
7 | // core components
8 | import SnackbarContent from "../../components/Snackbar/SnackbarContent";
9 | import Clearfix from "../../components/Clearfix/Clearfix";
10 |
11 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/notificationsStyles";
12 |
13 | const useStyles = makeStyles(styles);
14 |
15 | export default function SectionNotifications() {
16 | const classes = useStyles();
17 | return (
18 |
19 |
20 |
21 |
Notifications
22 |
23 |
24 |
27 | INFO ALERT: You{"'"}ve got some friends nearby, stop looking
28 | at your phone and find them...
29 |
30 | }
31 | close
32 | color="info"
33 | icon="info_outline"
34 | />
35 |
38 | SUCCESS ALERT: You{"'"}ve got some friends nearby, stop
39 | looking at your phone and find them...
40 |
41 | }
42 | close
43 | color="success"
44 | icon={Check}
45 | />
46 |
49 | WARNING ALERT: You{"'"}ve got some friends nearby, stop
50 | looking at your phone and find them...
51 |
52 | }
53 | close
54 | color="warning"
55 | icon={Warning}
56 | />
57 |
60 | DANGER ALERT: You{"'"}ve got some friends nearby, stop
61 | looking at your phone and find them...
62 |
63 | }
64 | close
65 | color="danger"
66 | icon="info_outline"
67 | />
68 |
69 |
70 | );
71 | }
72 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionExamples.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // react components for routing our app without refresh
3 | import Link from "next/link";
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 | // @material-ui/icons
7 |
8 | // core components
9 | import GridContainer from "../../components/Grid/GridContainer";
10 | import GridItem from "../../components/Grid/GridItem";
11 | import Button from "../../components/CustomButtons/Button";
12 |
13 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/exampleStyle";
14 |
15 | const useStyles = makeStyles(styles);
16 |
17 | export default function SectionExamples() {
18 | const classes = useStyles();
19 | return (
20 |
66 | );
67 | }
68 |
--------------------------------------------------------------------------------
/styles/scss/core/_misc.scss:
--------------------------------------------------------------------------------
1 | html * {
2 | -webkit-font-smoothing: antialiased;
3 | -moz-osx-font-smoothing: grayscale;
4 | }
5 | body {
6 | font-size: 1rem;
7 | }
8 | body,
9 | h1,
10 | h2,
11 | h3,
12 | h4,
13 | h5,
14 | h6 {
15 | font-family: "Roboto", "Helvetica", "Arial", sans-serif;
16 | font-weight: 300;
17 | line-height: 1.5em;
18 | }
19 | h1,
20 | h2,
21 | h3,
22 | h4,
23 | h5,
24 | h6 {
25 | color: inherit;
26 | }
27 | h1,
28 | h2,
29 | h3 {
30 | margin-top: 20px;
31 | margin-bottom: 10px;
32 | }
33 | h4,
34 | h5,
35 | h6 {
36 | margin-top: 10px;
37 | margin-bottom: 10px;
38 | }
39 | h1 {
40 | font-size: 3.3125rem;
41 | line-height: 1.15em;
42 | }
43 | h2 {
44 | font-size: 2.25rem;
45 | line-height: 1.5em;
46 | }
47 | h3 {
48 | font-size: 1.5625rem;
49 | line-height: 1.4em;
50 | }
51 | h4 {
52 | font-size: 1.125rem;
53 | line-height: 1.5em;
54 | }
55 | h5 {
56 | font-size: 1.0625rem;
57 | line-height: 1.55em;
58 | }
59 | h6 {
60 | font-size: 0.75rem;
61 | text-transform: uppercase;
62 | font-weight: 500;
63 | }
64 | p {
65 | font-size: 14px;
66 | margin: 0 0 10px;
67 | }
68 | html {
69 | font-family: sans-serif;
70 | line-height: 1.15;
71 | -webkit-text-size-adjust: 100%;
72 | -ms-text-size-adjust: 100%;
73 | -ms-overflow-style: scrollbar;
74 | -webkit-tap-highlight-color: transparent;
75 | }
76 | body {
77 | background-color: #e5e5e5;
78 | color: $black-color;
79 | margin: 0;
80 | font-size: 1rem;
81 | text-align: left;
82 | }
83 |
84 | legend {
85 | border-bottom: 0;
86 | }
87 |
88 | // Prevent highlight on mobile
89 | * {
90 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0);
91 | -webkit-tap-highlight-color: transparent;
92 | box-sizing: border-box;
93 | &:focus {
94 | outline: 0;
95 | }
96 | }
97 |
98 | a {
99 | color: $link-color;
100 | text-decoration: none;
101 | background-color: transparent;
102 | &:hover,
103 | &:focus {
104 | color: darken($link-color, 5%);
105 | text-decoration: none;
106 | }
107 | }
108 |
109 | label {
110 | font-size: 14px;
111 | line-height: 1.42857;
112 | color: $checkboxes-text-color;
113 | font-weight: 400;
114 | }
115 | small {
116 | font-size: 75%;
117 | color: #777;
118 | font-weight: 400;
119 | }
120 | img {
121 | vertical-align: middle;
122 | border-style: none;
123 | }
124 | form {
125 | margin-bottom: 1.125rem;
126 | }
127 |
--------------------------------------------------------------------------------
/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import Document, { Html, Head, Main, NextScript } from "next/document";
3 | import { ServerStyleSheets } from "@material-ui/styles";
4 |
5 | class MyDocument extends Document {
6 | render() {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 |
18 | {/* Fonts and icons */}
19 |
24 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | );
36 | }
37 | }
38 |
39 | MyDocument.getInitialProps = async (ctx) => {
40 | // Resolution order
41 | //
42 | // On the server:
43 | // 1. app.getInitialProps
44 | // 2. page.getInitialProps
45 | // 3. document.getInitialProps
46 | // 4. app.render
47 | // 5. page.render
48 | // 6. document.render
49 | //
50 | // On the server with error:
51 | // 1. document.getInitialProps
52 | // 2. app.render
53 | // 3. page.render
54 | // 4. document.render
55 | //
56 | // On the client
57 | // 1. app.getInitialProps
58 | // 2. page.getInitialProps
59 | // 3. app.render
60 | // 4. page.render
61 |
62 | // Render app and page and get the context of the page with collected side effects.
63 | const sheets = new ServerStyleSheets();
64 | const originalRenderPage = ctx.renderPage;
65 |
66 | ctx.renderPage = () =>
67 | originalRenderPage({
68 | enhanceApp: (App) => (props) => sheets.collect( ),
69 | });
70 |
71 | const initialProps = await Document.getInitialProps(ctx);
72 |
73 | return {
74 | ...initialProps,
75 | // Styles fragment is rendered after the app and page rendering finish.
76 | styles: [
77 |
78 | {initialProps.styles}
79 | {sheets.getStyleElement()}
80 | ,
81 | ],
82 | };
83 | };
84 |
85 | export default MyDocument;
86 |
--------------------------------------------------------------------------------
/pages-sections/LandingPage-Sections/WorkSection.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @material-ui/core components
3 | import { makeStyles } from "@material-ui/core/styles";
4 |
5 | // @material-ui/icons
6 |
7 | // core components
8 | import GridContainer from "../../components/Grid/GridContainer";
9 | import GridItem from "../../components/Grid/GridItem";
10 | import CustomInput from "../../components/CustomInput/CustomInput";
11 | import Button from "../../components/CustomButtons/Button";
12 |
13 | import styles from "../../styles/jss/nextjs-material-kit/pages/landingPageSections/workStyle";
14 |
15 | const useStyles = makeStyles(styles);
16 |
17 | export default function WorkSection() {
18 | const classes = useStyles();
19 | return (
20 |
21 |
22 |
23 | Work with us
24 |
25 | Divide details about your product or agency work into parts. Write a
26 | few lines about each one and contact us about any further
27 | collaboration. We will responde get back to you in a couple of
28 | hours.
29 |
30 |
67 |
68 |
69 |
70 | );
71 | }
72 |
--------------------------------------------------------------------------------
/components/CustomInput/CustomInput.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library to set properties for components
3 | // nodejs library that concatenates classes
4 | import classNames from "classnames";
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | import FormControl from "@material-ui/core/FormControl";
8 | import InputLabel from "@material-ui/core/InputLabel";
9 | import Input from "@material-ui/core/Input";
10 |
11 | import styles from "../../styles/jss/nextjs-material-kit/components/customInputStyle";
12 |
13 | const useStyles = makeStyles(styles);
14 |
15 | export default function CustomInput(props: CustomInputProps) {
16 | const classes = useStyles();
17 | const {
18 | formControlProps,
19 | labelText,
20 | id,
21 | labelProps,
22 | inputProps,
23 | error,
24 | white,
25 | inputRootCustomClasses,
26 | success
27 | } = props;
28 |
29 | const labelClasses = classNames({
30 | [" " + classes.labelRootError]: error,
31 | [" " + classes.labelRootSuccess]: success && !error
32 | });
33 | const underlineClasses = classNames({
34 | [classes.underlineError]: error,
35 | [classes.underlineSuccess]: success && !error,
36 | [classes.underline]: true,
37 | [classes.whiteUnderline]: white
38 | });
39 | const marginTop = classNames({
40 | [inputRootCustomClasses]: inputRootCustomClasses !== undefined
41 | });
42 | const inputClasses = classNames({
43 | [classes.input]: true,
44 | [classes.whiteInput]: white
45 | });
46 | var formControlClasses;
47 | if (formControlProps !== undefined) {
48 | formControlClasses = classNames(
49 | formControlProps.className,
50 | classes.formControl
51 | );
52 | } else {
53 | formControlClasses = classes.formControl;
54 | }
55 | return (
56 |
57 | {labelText !== undefined ? (
58 |
63 | {labelText}
64 |
65 | ) : null}
66 |
76 |
77 | );
78 | }
79 |
80 | export interface CustomInputProps {
81 | labelText?: string;
82 | labelProps?: any;
83 | id?: string;
84 | inputProps?: any;
85 | formControlProps?: any;
86 | inputRootCustomClasses?: string;
87 | error?: boolean;
88 | success?: boolean;
89 | white?: boolean;
90 | };
91 |
--------------------------------------------------------------------------------
/pages-sections/LandingPage-Sections/ProductSection.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @material-ui/core components
3 | import { makeStyles } from "@material-ui/core/styles";
4 |
5 | // @material-ui/icons
6 | import Chat from "@material-ui/icons/Chat";
7 | import VerifiedUser from "@material-ui/icons/VerifiedUser";
8 | import Fingerprint from "@material-ui/icons/Fingerprint";
9 | // core components
10 | import GridContainer from "../../components/Grid/GridContainer";
11 | import GridItem from "../../components/Grid/GridItem";
12 | import InfoArea from "../../components/InfoArea/InfoArea";
13 |
14 | import styles from "../../styles/jss/nextjs-material-kit/pages/landingPageSections/productStyle";
15 |
16 | const useStyles = makeStyles(styles);
17 |
18 | export default function ProductSection() {
19 | const classes = useStyles();
20 | return (
21 |
22 |
23 |
24 | Let{"'"}s talk product
25 |
26 | This is the paragraph where you can write more details about your
27 | product. Keep you user engaged by providing meaningful information.
28 | Remember that by this time, the user is curious, otherwise he wouldn
29 | {"'"}t scroll to get here. Add a button if you want the user to see
30 | more.
31 |
32 |
33 |
34 |
35 |
36 |
37 |
44 |
45 |
46 |
53 |
54 |
55 |
62 |
63 |
64 |
65 |
66 | );
67 | }
68 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionCarousel.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // react component for creating beautiful carousel
3 | import Carousel from "react-slick";
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 | // @material-ui/icons
7 | import LocationOn from "@material-ui/icons/LocationOn";
8 | // core components
9 | import GridContainer from "../../components/Grid/GridContainer";
10 | import GridItem from "../../components/Grid/GridItem";
11 | import Card from "../../components/Card/Card";
12 |
13 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/carouselStyle";
14 |
15 | const useStyles = makeStyles(styles);
16 |
17 | export default function SectionCarousel() {
18 | const classes = useStyles();
19 | const settings = {
20 | dots: true,
21 | infinite: true,
22 | speed: 500,
23 | slidesToShow: 1,
24 | slidesToScroll: 1,
25 | autoplay: false
26 | };
27 | return (
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
40 |
41 |
42 |
43 | Yellowstone National Park, United States
44 |
45 |
46 |
47 |
48 |
53 |
54 |
55 |
56 | Somewhere Beyond, United States
57 |
58 |
59 |
60 |
61 |
66 |
67 |
68 |
69 | Yellowstone National Park, United States
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | );
80 | }
81 |
--------------------------------------------------------------------------------
/pages/landing.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // @material-ui/core components
5 | import { makeStyles } from "@material-ui/core/styles";
6 |
7 | // @material-ui/icons
8 |
9 | // core components
10 | import Header from "../components/Header/Header";
11 | import Footer from "../components/Footer/Footer";
12 | import GridContainer from "../components/Grid/GridContainer";
13 | import GridItem from "../components/Grid/GridItem";
14 | import Button from "../components/CustomButtons/Button";
15 | import HeaderLinks from "../components/Header/HeaderLinks";
16 | import Parallax from "../components/Parallax/Parallax";
17 |
18 | import styles from "../styles/jss/nextjs-material-kit/pages/landingPage";
19 |
20 | // Sections for this page
21 | import ProductSection from "../pages-sections/LandingPage-Sections/ProductSection";
22 | import TeamSection from "../pages-sections/LandingPage-Sections/TeamSection";
23 | import WorkSection from "../pages-sections/LandingPage-Sections/WorkSection";
24 |
25 | const dashboardRoutes = [];
26 |
27 | const useStyles = makeStyles(styles);
28 |
29 | export default function LandingPage(props) {
30 | const classes = useStyles();
31 | const { ...rest } = props;
32 | return (
33 |
34 |
}
39 | fixed
40 | changeColorOnScroll={{
41 | height: 400,
42 | color: "white"
43 | }}
44 | {...rest}
45 | />
46 |
47 |
48 |
49 |
50 | Your Story Starts With Us.
51 |
52 | Every landing page needs a small description after the big bold
53 | title, that{"'"}s why we added this text here. Add here all the
54 | information that can make you or your product create the first
55 | impression.
56 |
57 |
58 |
65 |
66 | Watch video
67 |
68 |
69 |
70 |
71 |
72 |
79 |
80 |
81 | );
82 | }
83 |
--------------------------------------------------------------------------------
/styles/scss/core/variables/_functions.scss:
--------------------------------------------------------------------------------
1 | // Bootstrap functions
2 | //
3 | // Utility mixins and functions for evalutating source code across our variables, maps, and mixins.
4 |
5 | // Ascending
6 | // Used to evaluate Sass maps like our grid breakpoints.
7 | @mixin _assert-ascending($map, $map-name) {
8 | $prev-key: null;
9 | $prev-num: null;
10 | @each $key, $num in $map {
11 | @if $prev-num == null {
12 | // Do nothing
13 | } @else if not comparable($prev-num, $num) {
14 | @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
15 | } @else if $prev-num >= $num {
16 | @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
17 | }
18 | $prev-key: $key;
19 | $prev-num: $num;
20 | }
21 | }
22 |
23 | // Starts at zero
24 | // Another grid mixin that ensures the min-width of the lowest breakpoint starts at 0.
25 | @mixin _assert-starts-at-zero($map) {
26 | $values: map-values($map);
27 | $first-value: nth($values, 1);
28 | @if $first-value != 0 {
29 | @warn "First breakpoint in `$grid-breakpoints` must start at 0, but starts at #{$first-value}.";
30 | }
31 | }
32 |
33 | // Replace `$search` with `$replace` in `$string`
34 | // Used on our SVG icon backgrounds for custom forms.
35 | //
36 | // @author Hugo Giraudel
37 | // @param {String} $string - Initial string
38 | // @param {String} $search - Substring to replace
39 | // @param {String} $replace ('') - New value
40 | // @return {String} - Updated string
41 | @function str-replace($string, $search, $replace: "") {
42 | $index: str-index($string, $search);
43 |
44 | @if $index {
45 | @return str-slice($string, 1, $index - 1) + $replace +
46 | str-replace(
47 | str-slice($string, $index + str-length($search)),
48 | $search,
49 | $replace
50 | );
51 | }
52 |
53 | @return $string;
54 | }
55 |
56 | // Color contrast
57 | @function color-yiq($color) {
58 | $r: red($color);
59 | $g: green($color);
60 | $b: blue($color);
61 |
62 | $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
63 |
64 | @if ($yiq >= $yiq-contrasted-threshold) {
65 | @return $yiq-text-dark;
66 | } @else {
67 | @return $yiq-text-light;
68 | }
69 | }
70 |
71 | // Retrieve color Sass maps
72 | @function color($key: "blue") {
73 | @return map-get($colors, $key);
74 | }
75 |
76 | @function theme-color($key: "primary") {
77 | @return map-get($theme-colors, $key);
78 | }
79 |
80 | @function gray($key: "100") {
81 | @return map-get($grays, $key);
82 | }
83 |
84 | // Request a theme color level
85 | @function theme-color-level($color-name: "primary", $level: 0) {
86 | $color: theme-color($color-name);
87 | $color-base: if($level > 0, #000, #fff);
88 | $level: abs($level);
89 |
90 | @return mix($color-base, $color, $level * $theme-color-interval);
91 | }
92 |
--------------------------------------------------------------------------------
/components/Footer/Footer.tsx:
--------------------------------------------------------------------------------
1 | /*eslint-disable*/
2 | import React from "react";
3 | // nodejs library to set properties for components
4 | // nodejs library that concatenates classes
5 | import classNames from "classnames";
6 | // material-ui core components
7 | import { List, ListItem } from "@material-ui/core";
8 | import { makeStyles } from "@material-ui/core/styles";
9 |
10 | // @material-ui/icons
11 | import Favorite from "@material-ui/icons/Favorite";
12 |
13 | import styles from "../../styles/jss/nextjs-material-kit/components/footerStyle";
14 |
15 | const useStyles = makeStyles(styles);
16 |
17 | export default function Footer(props: FooterProps) {
18 | const classes = useStyles();
19 | const { whiteFont } = props;
20 | const footerClasses = classNames({
21 | [classes.footer]: true,
22 | [classes.footerWhiteFont]: whiteFont
23 | });
24 | const aClasses = classNames({
25 | [classes.a]: true,
26 | [classes.footerWhiteFont]: whiteFont
27 | });
28 | return (
29 |
30 |
31 |
71 |
72 | © {1900 + new Date().getYear()} , made with{" "}
73 |
by{" "}
74 |
79 | Creative Tim
80 | {" "}
81 | for a better web.
82 |
83 |
84 |
85 | );
86 | }
87 |
88 | export interface FooterProps {
89 | whiteFont?: boolean
90 | };
91 |
--------------------------------------------------------------------------------
/components/CustomTabs/CustomTabs.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 |
6 | // material-ui components
7 | import { makeStyles } from "@material-ui/core/styles";
8 | import Tabs from "@material-ui/core/Tabs";
9 | import Tab from "@material-ui/core/Tab";
10 | import Icon from "@material-ui/core/Icon";
11 | // core components
12 | import Card from "../Card/Card";
13 | import CardBody from "../Card/CardBody";
14 | import CardHeader from "../Card/CardHeader";
15 |
16 | import styles from "../../styles/jss/nextjs-material-kit/components/customTabsStyle";
17 |
18 | const useStyles = makeStyles(styles);
19 |
20 | export default function CustomTabs(props: CustomTabsProps) {
21 | const [value, setValue] = React.useState(0);
22 |
23 | const handleChange = (event, value) => {
24 | setValue(value);
25 | };
26 | const classes = useStyles();
27 | const { headerColor, plainTabs, tabs, title, rtlActive } = props;
28 | const cardTitle = classNames({
29 | [classes.cardTitle]: true,
30 | [classes.cardTitleRTL]: rtlActive,
31 | });
32 | return (
33 |
34 |
35 | {title !== undefined ? {title}
: null}
36 |
44 | {tabs.map((prop, key) => {
45 | var icon = {};
46 | if (prop.tabIcon) {
47 | icon = {
48 | icon:
49 | typeof prop.tabIcon === "string" ? (
50 | {prop.tabIcon}
51 | ) : (
52 |
53 | ),
54 | };
55 | }
56 | return (
57 |
68 | );
69 | })}
70 |
71 |
72 |
73 | <>
74 | {tabs.map((prop, key) => {
75 | if (key === value) {
76 | return {prop.tabContent}
;
77 | }
78 | return null;
79 | })}
80 | >
81 |
82 |
83 | );
84 | }
85 |
86 | export interface CustomTabsProps {
87 | headerColor: "warning" | "success" | "danger" | "info" | "primary" | "rose";
88 |
89 | title: string;
90 | tabs: {
91 | tabName: string;
92 | tabIcon: any;
93 | tabContent: JSX.Element;
94 | }[];
95 | rtlActive: boolean;
96 | plainTabs: boolean;
97 | }
98 |
--------------------------------------------------------------------------------
/pages/blog/[slug].tsx:
--------------------------------------------------------------------------------
1 | import * as fs from "fs";
2 | import * as path from "path";
3 | import matter from "gray-matter";
4 | import React from "react";
5 | import { MDXRemote } from "next-mdx-remote";
6 | import Image from "next/image";
7 | import { Box, Typography } from "@material-ui/core";
8 | import { serialize } from "next-mdx-remote/serialize";
9 | import Button from "../../components/CustomButtons/Button";
10 | import Parallax from "../../components/Parallax/Parallax";
11 | import { makeStyles } from "@material-ui/core/styles";
12 | import styles from "../../styles/jss/nextjs-material-kit/pages/components";
13 | import GridItem from "../../components/Grid/GridItem";
14 | import GridContainer from "../../components/Grid/GridContainer";
15 | import classNames from "classnames";
16 | import Header from "../../components/Header/Header";
17 | import HeaderLinks from "../../components/Header/HeaderLinks";
18 |
19 | const useStyles = makeStyles(styles);
20 |
21 | export const PostPage = (props: { frontMatter; mdxSource }) => {
22 | const { frontMatter, mdxSource } = props;
23 | const classes = useStyles();
24 |
25 | return (
26 |
27 |
}
30 | fixed
31 | color="white"
32 | />
33 |
34 |
35 |
36 |
37 |
38 |
{frontMatter.title}
39 | {frontMatter.published}
40 |
41 | {frontMatter.description}
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
54 |
55 |
59 |
60 |
61 |
62 |
63 | );
64 | };
65 |
66 | const getStaticPaths = async () => {
67 | const files = fs.readdirSync(path.join("blog"));
68 | const paths = files.map((filename) => ({
69 | params: {
70 | slug: filename.replace(".mdx", ""),
71 | },
72 | }));
73 | return {
74 | paths,
75 | fallback: false,
76 | };
77 | };
78 |
79 | const getStaticProps = async ({ params: { slug } }) => {
80 | const markdownWithMeta = fs.readFileSync(
81 | path.join("blog/", slug + ".mdx"),
82 | "utf-8"
83 | );
84 |
85 | const { data: frontMatter, content } = matter(markdownWithMeta);
86 | const mdxSource = await serialize(content);
87 |
88 | return {
89 | props: {
90 | mdxSource,
91 | frontMatter: {
92 | ...frontMatter,
93 | published: new Date(frontMatter.published).toDateString(),
94 | },
95 | },
96 | };
97 | };
98 |
99 | export { getStaticProps, getStaticPaths };
100 | export default PostPage;
101 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/headerLinksStyle.ts:
--------------------------------------------------------------------------------
1 | import { defaultFont
2 | } from "../../nextjs-material-kit";
3 |
4 | import tooltip from "../../nextjs-material-kit/tooltipsStyle";
5 |
6 | const headerLinksStyle = (theme) => ({
7 | list: {
8 | ...defaultFont,
9 | fontSize: "14px",
10 | margin: 0,
11 | paddingLeft: "0",
12 | listStyle: "none",
13 | paddingTop: "0",
14 | paddingBottom: "0",
15 | color: "inherit"
16 | },
17 | listItem: {
18 | float: "left",
19 | color: "inherit",
20 | position: "relative",
21 | display: "block",
22 | width: "auto",
23 | margin: "0",
24 | padding: "0",
25 | [theme.breakpoints.down("sm")]: {
26 | width: "100%",
27 | "&:after": {
28 | width: "calc(100% - 30px)",
29 | content: '""',
30 | display: "block",
31 | height: "1px",
32 | marginLeft: "15px",
33 | backgroundColor: "#e5e5e5"
34 | }
35 | }
36 | },
37 | listItemText: {
38 | padding: "0 !important"
39 | },
40 | navLink: {
41 | color: "inherit",
42 | position: "relative",
43 | padding: "0.9375rem",
44 | fontWeight: "400",
45 | fontSize: "12px",
46 | textTransform: "uppercase",
47 | borderRadius: "3px",
48 | lineHeight: "20px",
49 | textDecoration: "none",
50 | margin: "0px",
51 | display: "inline-flex",
52 | "&:hover,&:focus": {
53 | color: "inherit",
54 | background: "rgba(200, 200, 200, 0.2)"
55 | },
56 | [theme.breakpoints.down("sm")]: {
57 | width: "calc(100% - 30px)",
58 | marginLeft: "15px",
59 | marginBottom: "8px",
60 | marginTop: "8px",
61 | textAlign: "left",
62 | "& > span:first-child": {
63 | justifyContent: "flex-start"
64 | }
65 | }
66 | },
67 | notificationNavLink: {
68 | [theme.breakpoints.down("md")]: {
69 | top: "0",
70 | margin: "5px 15px"
71 | },
72 | color: "#FFF",
73 | padding: "0.9375rem",
74 | fontWeight: "400",
75 | fontSize: "12px",
76 | textTransform: "uppercase",
77 | lineHeight: "20px",
78 | textDecoration: "none",
79 | margin: "0px",
80 | display: "inline-flex",
81 | top: "4px"
82 | },
83 | registerNavLink: {
84 | [theme.breakpoints.down("md")]: {
85 | top: "0",
86 | margin: "5px 15px"
87 | },
88 | top: "3px",
89 | position: "relative",
90 | fontWeight: "400",
91 | fontSize: "12px",
92 | textTransform: "uppercase",
93 | lineHeight: "20px",
94 | textDecoration: "none",
95 | margin: "0px",
96 | display: "inline-flex"
97 | },
98 | navLinkActive: {
99 | color: "inherit",
100 | backgroundColor: "rgba(255, 255, 255, 0.1)"
101 | },
102 | icons: {
103 | width: "20px",
104 | height: "20px",
105 | marginRight: "3px"
106 | },
107 | socialIcons: {
108 | position: "relative",
109 | fontSize: "20px !important",
110 | marginRight: "4px"
111 | },
112 | dropdownLink: {
113 | "&,&:hover,&:focus": {
114 | color: "inherit",
115 | textDecoration: "none",
116 | display: "block",
117 | padding: "10px 20px"
118 | }
119 | },
120 | ...tooltip,
121 | marginRight5: {
122 | marginRight: "5px"
123 | }
124 | });
125 |
126 | export default headerLinksStyle;
127 |
--------------------------------------------------------------------------------
/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * NextJS Material Kit v1.2.1 based on Material Kit Free - v2.0.2 (Bootstrap 4.0.0 Final Edition) and Material Kit React v1.8.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/nextjs-material-kit
8 | * Copyright 2022 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (https://github.com/creativetimofficial/nextjs-material-kit/blob/main/LICENSE.md)
10 |
11 | * Coded by Creative Tim
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 | import React from "react";
19 | import ReactDOM from "react-dom";
20 | import App from "next/app";
21 | import Head from "next/head";
22 | import Router from "next/router";
23 |
24 | import PageChange from "../components/PageChange/PageChange";
25 |
26 | import "/styles/scss/nextjs-material-kit.scss?v=1.2.0";
27 |
28 | Router.events.on("routeChangeStart", (url) => {
29 | console.log(`Loading: ${url}`);
30 | document.body.classList.add("body-page-transition");
31 | ReactDOM.render(
32 | ,
33 | document.getElementById("page-transition")
34 | );
35 | });
36 | Router.events.on("routeChangeComplete", () => {
37 | ReactDOM.unmountComponentAtNode(document.getElementById("page-transition"));
38 | document.body.classList.remove("body-page-transition");
39 | });
40 | Router.events.on("routeChangeError", () => {
41 | ReactDOM.unmountComponentAtNode(document.getElementById("page-transition"));
42 | document.body.classList.remove("body-page-transition");
43 | });
44 |
45 | export default class MyApp extends App {
46 | componentDidMount() {
47 | let comment = document.createComment(`
48 |
49 | =========================================================
50 | * NextJS Material Kit v1.2.1 based on Material Kit Free - v2.0.2 (Bootstrap 4.0.0 Final Edition) and Material Kit React v1.8.0
51 | =========================================================
52 |
53 | * Product Page: https://www.creative-tim.com/product/nextjs-material-kit
54 | * Copyright 2022 Creative Tim (https://www.creative-tim.com)
55 | * Licensed under MIT (https://github.com/creativetimofficial/nextjs-material-kit/blob/main/LICENSE.md)
56 |
57 | * Coded by Creative Tim
58 |
59 | =========================================================
60 |
61 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
62 |
63 | `);
64 | document.insertBefore(comment, document.documentElement);
65 | }
66 | static async getInitialProps({ Component, router, ctx }) {
67 | let pageProps = {};
68 |
69 | if (Component.getInitialProps) {
70 | pageProps = await Component.getInitialProps(ctx);
71 | }
72 |
73 | return { pageProps };
74 | }
75 | render() {
76 | const { Component, pageProps } = this.props;
77 |
78 | return (
79 |
80 |
81 |
85 | NextJS Material Kit by Creative Tim
86 |
87 |
88 |
89 | );
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/pages/blog/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from "react";
2 | import { getAllArticles } from "../../utils/markdown";
3 | import Header from "../../components/Header/Header";
4 | import HeaderLinks from "../../components/Header/HeaderLinks";
5 | import Parallax from "../../components/Parallax/Parallax";
6 | import GridContainer from "../../components/Grid/GridContainer";
7 | import GridItem from "../../components/Grid/GridItem";
8 | import { makeStyles } from "@material-ui/core/styles";
9 | import styles from "../../styles/jss/nextjs-material-kit/pages/components";
10 | import Footer from "../../components/Footer/Footer";
11 | import classNames from "classnames";
12 | import BlogCard from "../../components/Blog/BlogCard";
13 | import Button from "../../components/CustomButtons/Button";
14 |
15 | const useStyles = makeStyles(styles);
16 |
17 | type PostType = {
18 | title: string;
19 | description: string;
20 | published: string;
21 | image_url: string;
22 | slug: string;
23 | };
24 |
25 | export default function BlogPage(props: { posts: PostType[] }) {
26 | const classes = useStyles();
27 |
28 | const { posts } = props;
29 |
30 | const [filteredPosts, setFilteredPosts] = useState(posts);
31 | const [currentPageIndex, setCurrentPageIndex] = useState(1);
32 |
33 | const loadMorePosts = async () => {
34 | const res = await fetch(`/api/post?page=${currentPageIndex + 1}`); // absolute url is supported here
35 | const posts = await res.json();
36 |
37 | setFilteredPosts((_posts) => [..._posts, ...posts]);
38 | setCurrentPageIndex((_pageIndex) => _pageIndex + 1);
39 | };
40 |
41 | return (
42 |
43 |
}
46 | fixed
47 | color="transparent"
48 | changeColorOnScroll={{
49 | height: 400,
50 | color: "white",
51 | }}
52 | />
53 |
54 |
55 |
56 |
57 |
58 |
NextJS Blog.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | {filteredPosts.map((post, index) => (
69 |
70 | ))}
71 |
72 |
73 | Load more
74 |
75 |
76 |
77 |
78 |
79 |
80 | );
81 | }
82 |
83 | export const getStaticProps = async () => {
84 | const articles: PostType[] = await getAllArticles();
85 |
86 | articles
87 | .map((post) => post)
88 | .sort((a, b) => {
89 | if (a.published > b.published) return 1;
90 | if (a.published < b.published) return -1;
91 |
92 | return 0;
93 | });
94 |
95 | const posts = articles.map((post) => {
96 | return {
97 | ...post,
98 | published: new Date(post.published).toDateString(),
99 | };
100 | });
101 |
102 | return {
103 | props: {
104 | posts,
105 | },
106 | };
107 | };
108 |
--------------------------------------------------------------------------------
/components/NavPills/NavPills.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactNode } from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // nodejs library to set properties for components
5 |
6 | // @material-ui/core components
7 | import { makeStyles } from "@material-ui/core/styles";
8 | import Tabs from "@material-ui/core/Tabs";
9 | import Tab from "@material-ui/core/Tab";
10 |
11 | // core components
12 | import GridContainer from "../Grid/GridContainer";
13 | import GridItem from "../Grid/GridItem";
14 |
15 | import styles from "../../styles/jss/nextjs-material-kit/components/navPillsStyle";
16 |
17 | const useStyles = makeStyles(styles);
18 |
19 | export default function NavPills(props: NavPillsProps) {
20 | const [active, setActive] = React.useState(props.active || 0);
21 | const handleChange = (event, active: number) => {
22 | setActive(active);
23 | };
24 | const handleChangeIndex = (index: number) => {
25 | setActive(index);
26 | };
27 | const classes = useStyles();
28 | const { tabs, color, horizontal, alignCenter } = props;
29 | const flexContainerClasses = classNames({
30 | [classes.flexContainer]: true,
31 | [classes.horizontalDisplay]: horizontal !== undefined
32 | });
33 | const tabButtons = (
34 |
45 | {tabs.map((prop, key) => {
46 | var icon = {};
47 | if (prop.tabIcon !== undefined) {
48 | icon["icon"] = ;
49 | }
50 | const pillsClasses = classNames({
51 | [classes.pills]: true,
52 | [classes.horizontalPills]: horizontal !== undefined,
53 | [classes.pillsWithIcons]: prop.tabIcon !== undefined
54 | });
55 | return (
56 |
66 | );
67 | })}
68 |
69 | );
70 | const tabContent = (
71 |
72 | {tabs.map((prop, key) => {
73 | if (key !== active) {
74 | return null;
75 | } else {
76 | return (
77 |
78 | {prop.tabContent}
79 |
80 | );
81 | }
82 | })}
83 |
84 | );
85 | return horizontal !== undefined ? (
86 |
87 | {tabButtons}
88 | {tabContent}
89 |
90 | ) : (
91 |
92 | {tabButtons}
93 | {tabContent}
94 |
95 | );
96 | }
97 |
98 | export interface NavPillsProps {
99 | // index of the default active pill
100 | active?: number;
101 | tabs: {
102 | tabButton: string;
103 | tabIcon: any;
104 | tabContent: ReactNode;
105 | }[];
106 | color?:
107 | | "primary"
108 | | "warning"
109 | | "danger"
110 | | "success"
111 | | "info"
112 | | "rose";
113 | horizontal?: {
114 | tabsGrid: any;
115 | contentGrid: any;
116 | },
117 | alignCenter?: boolean
118 | };
119 |
--------------------------------------------------------------------------------
/pages/components.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // nodejs library that concatenates classes
3 | import classNames from "classnames";
4 | // react components for routing our app without refresh
5 | import Link from "next/link";
6 | // @material-ui/core components
7 | import { makeStyles } from "@material-ui/core/styles";
8 | // @material-ui/icons
9 | // core components
10 | import Header from "../components/Header/Header";
11 | import HeaderLinks from "../components/Header/HeaderLinks";
12 | import Footer from "../components/Footer/Footer";
13 | import GridContainer from "../components/Grid/GridContainer";
14 | import GridItem from "../components/Grid/GridItem";
15 | import Button from "../components/CustomButtons/Button";
16 | import Parallax from "../components/Parallax/Parallax";
17 | // sections for this page
18 | import SectionNavbars from "../pages-sections/Components-Sections/SectionNavbars";
19 | import SectionBasics from "../pages-sections/Components-Sections/SectionBasics";
20 | import SectionTabs from "../pages-sections/Components-Sections/SectionTabs";
21 | import SectionPills from "../pages-sections/Components-Sections/SectionPills";
22 | import SectionNotifications from "../pages-sections/Components-Sections/SectionNotifications";
23 | import SectionTypography from "../pages-sections/Components-Sections/SectionTypography";
24 | import SectionJavascript from "../pages-sections/Components-Sections/SectionJavascript";
25 | import SectionCarousel from "../pages-sections/Components-Sections/SectionCarousel";
26 | import SectionCompletedExamples from "../pages-sections/Components-Sections/SectionCompletedExamples";
27 | import SectionLogin from "../pages-sections/Components-Sections/SectionLogin";
28 | import SectionExamples from "../pages-sections/Components-Sections/SectionExamples";
29 | import SectionDownload from "../pages-sections/Components-Sections/SectionDownload";
30 |
31 | import styles from "../styles/jss/nextjs-material-kit/pages/components";
32 |
33 | const useStyles = makeStyles(styles);
34 |
35 | export default function Components(props) {
36 | const classes = useStyles();
37 | const { ...rest } = props;
38 | return (
39 |
40 |
}
43 | fixed
44 | color="transparent"
45 | changeColorOnScroll={{
46 | height: 400,
47 | color: "white",
48 | }}
49 | {...rest}
50 | />
51 |
52 |
53 |
54 |
55 |
56 |
NextJS Material Kit.
57 |
58 | A Badass Material Kit based on Material-UI and NextJS.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
89 |
90 |
91 | );
92 | }
93 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/navPillsStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | hexToRGBAlpha,
3 | roseColor,
4 | primaryColor,
5 | infoColor,
6 | successColor,
7 | warningColor,
8 | dangerColor
9 | } from "../../nextjs-material-kit";
10 |
11 | const navPillsStyle = (theme) => ({
12 | root: {
13 | marginTop: "20px",
14 | paddingLeft: "0",
15 | marginBottom: "0",
16 | overflow: "visible !important",
17 | lineHeight: "24px",
18 | textTransform: "uppercase",
19 | fontSize: "12px",
20 | fontWeight: "500",
21 | position: "relative",
22 | display: "block",
23 | color: "inherit"
24 | },
25 | flexContainer: {
26 | [theme.breakpoints.down("xs")]: {
27 | display: "flex",
28 | flexWrap: "wrap"
29 | }
30 | },
31 | displayNone: {
32 | display: "none !important"
33 | },
34 | fixed: {
35 | overflow: "visible !important"
36 | },
37 | horizontalDisplay: {
38 | display: "block"
39 | },
40 | pills: {
41 | float: "left",
42 | position: "relative",
43 | display: "block",
44 | borderRadius: "30px",
45 | minWidth: "100px",
46 | textAlign: "center",
47 | transition: "all .3s",
48 | padding: "10px 15px",
49 | color: "#555555",
50 | height: "auto",
51 | opacity: "1",
52 | maxWidth: "100%",
53 | margin: "0 5px"
54 | },
55 | pillsWithIcons: {
56 | borderRadius: "4px"
57 | },
58 | tabIcon: {
59 | width: "30px",
60 | height: "30px",
61 | display: "block",
62 | margin: "15px 0 !important",
63 | "&, & *": {
64 | letterSpacing: "normal !important"
65 | }
66 | },
67 | horizontalPills: {
68 | width: "100%",
69 | float: "none !important",
70 | "& + button": {
71 | margin: "10px 0"
72 | }
73 | },
74 | contentWrapper: {
75 | marginTop: "20px"
76 | },
77 | primary: {
78 | "&,&:hover": {
79 | color: "#FFFFFF",
80 | backgroundColor: primaryColor,
81 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px ${hexToRGBAlpha(
82 | primaryColor,
83 | 0.4
84 | )}`
85 | }
86 | },
87 | info: {
88 | "&,&:hover": {
89 | color: "#FFFFFF",
90 | backgroundColor: infoColor,
91 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px ${hexToRGBAlpha(
92 | infoColor,
93 | 0.4
94 | )}`
95 | }
96 | },
97 | success: {
98 | "&,&:hover": {
99 | color: "#FFFFFF",
100 | backgroundColor: successColor,
101 | boxShadow: `0 2px 2px 0 ${hexToRGBAlpha(
102 | successColor,
103 | 0.14
104 | )}, 0 3px 1px -2px ${hexToRGBAlpha(
105 | successColor,
106 | 0.2
107 | )}, 0 1px 5px 0 ${hexToRGBAlpha(successColor, 0.12)}`
108 | }
109 | },
110 | warning: {
111 | "&,&:hover": {
112 | color: "#FFFFFF",
113 | backgroundColor: warningColor,
114 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px ${hexToRGBAlpha(
115 | warningColor,
116 | 0.4
117 | )}`
118 | }
119 | },
120 | danger: {
121 | "&,&:hover": {
122 | color: "#FFFFFF",
123 | backgroundColor: dangerColor,
124 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px ${hexToRGBAlpha(
125 | dangerColor,
126 | 0.4
127 | )}`
128 | }
129 | },
130 | rose: {
131 | "&,&:hover": {
132 | color: "#FFFFFF",
133 | backgroundColor: roseColor,
134 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px ${hexToRGBAlpha(
135 | roseColor,
136 | 0.4
137 | )}`
138 | }
139 | },
140 | alignCenter: {
141 | alignItems: "center",
142 | justifyContent: "center"
143 | },
144 | tabWrapper: {
145 | color: "inherit",
146 | position: "relative",
147 | fontSize: "12px",
148 | lineHeight: "24px",
149 | fontWeight: "500",
150 | textTransform: "uppercase",
151 | "&,& *": {
152 | letterSpacing: "normal"
153 | }
154 | }
155 | });
156 |
157 | export default navPillsStyle;
158 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionDownload.tsx:
--------------------------------------------------------------------------------
1 | /*eslint-disable*/
2 | import React from "react";
3 | // @material-ui/core components
4 | import { makeStyles } from "@material-ui/core/styles";
5 | // @material-ui/icons
6 | import GridContainer from "../../components/Grid/GridContainer";
7 | import GridItem from "../../components/Grid/GridItem";
8 | import Button from "../../components/CustomButtons/Button";
9 | // core components
10 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/downloadStyle";
11 |
12 | const useStyles = makeStyles(styles);
13 |
14 | export default function SectionDownload() {
15 | const classes = useStyles();
16 | return (
17 |
18 |
19 |
20 |
21 | Do you love this UI Kit?
22 |
23 | Cause if you do, it can be yours for FREE. Hit the buttons below
24 | to navigate to our website where you can find the kit. We also
25 | have the Bootstrap 4 version on plain HTML. Start a new project or
26 | give an old Bootstrap project a new look!
27 |
28 |
29 |
30 |
36 | Free NextJS Download
37 |
38 |
44 | Free React Downoad
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 | Want more?
53 |
54 | We've just launched{" "}
55 | e.preventDefault()}>
56 | NextJS Material Kit PRO{" "}
57 |
58 | .It has a huge number of components, sections and example pages.
59 | Start Your Development With A Badass Material-UI and NexJS Kit
60 | inspired by Material Design.
61 |
62 |
63 |
64 |
70 | NextJS Material Kit PRO
71 |
72 |
78 | Material Kit PRO React
79 |
80 |
81 |
82 |
83 |
84 | Thank you for supporting us!
85 |
86 |
87 | Tweet
88 |
89 |
90 | Share
91 |
92 |
93 |
94 | Share
95 |
96 |
97 | Star
98 |
99 |
100 |
101 |
102 | );
103 | }
104 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/headerStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | container,
3 | hexToRGBAlpha,
4 | defaultFont,
5 | primaryColor,
6 | infoColor,
7 | successColor,
8 | warningColor,
9 | dangerColor,
10 | roseColor,
11 | transition,
12 | boxShadow,
13 | drawerWidth
14 | } from "../../nextjs-material-kit";
15 |
16 | const headerStyle = {
17 | appBar: {
18 | display: "flex",
19 | border: "0",
20 | borderRadius: "3px",
21 | padding: "0.625rem 0",
22 | marginBottom: "20px",
23 | color: "#555",
24 | width: "100%",
25 | backgroundColor: "#fff",
26 | boxShadow:
27 | "0 4px 18px 0px rgba(0, 0, 0, 0.12), 0 7px 10px -5px rgba(0, 0, 0, 0.15)",
28 | transition: "all 150ms ease 0s",
29 | alignItems: "center",
30 | flexFlow: "row nowrap",
31 | justifyContent: "flex-start",
32 | position: "relative",
33 | zIndex: "unset"
34 | },
35 | absolute: {
36 | position: "absolute",
37 | zIndex: 1100
38 | },
39 | fixed: {
40 | position: "fixed",
41 | zIndex: 1100
42 | },
43 | container: {
44 | ...container,
45 | minHeight: "50px",
46 | flex: "1",
47 | alignItems: "center",
48 | justifyContent: "space-between",
49 | display: "flex",
50 | flexWrap: "nowrap"
51 | },
52 | flex: {
53 | flex: 1
54 | },
55 | title: {
56 | ...defaultFont,
57 | lineHeight: "30px",
58 | fontSize: "18px",
59 | borderRadius: "3px",
60 | textTransform: "none",
61 | color: "inherit",
62 | padding: "8px 16px",
63 | letterSpacing: "unset",
64 | "&:hover,&:focus": {
65 | color: "inherit",
66 | background: "transparent"
67 | }
68 | },
69 | appResponsive: {
70 | margin: "20px 10px"
71 | },
72 | primary: {
73 | backgroundColor: primaryColor,
74 | color: "#FFFFFF",
75 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
76 | primaryColor,
77 | 0.46
78 | )}`
79 | },
80 | info: {
81 | backgroundColor: infoColor,
82 | color: "#FFFFFF",
83 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
84 | infoColor,
85 | 0.46
86 | )}`
87 | },
88 | success: {
89 | backgroundColor: successColor,
90 | color: "#FFFFFF",
91 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
92 | successColor,
93 | 0.46
94 | )}`
95 | },
96 | warning: {
97 | backgroundColor: warningColor,
98 | color: "#FFFFFF",
99 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
100 | warningColor,
101 | 0.46
102 | )}`
103 | },
104 | danger: {
105 | backgroundColor: dangerColor,
106 | color: "#FFFFFF",
107 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
108 | dangerColor,
109 | 0.46
110 | )}`
111 | },
112 | rose: {
113 | backgroundColor: roseColor,
114 | color: "#FFFFFF",
115 | boxShadow: `0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px ${hexToRGBAlpha(
116 | roseColor,
117 | 0.46
118 | )}`
119 | },
120 | transparent: {
121 | backgroundColor: "transparent !important",
122 | boxShadow: "none",
123 | paddingTop: "25px",
124 | color: "#FFFFFF"
125 | },
126 | dark: {
127 | color: "#FFFFFF",
128 | backgroundColor: "#212121 !important",
129 | boxShadow:
130 | "0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 12px -5px rgba(33, 33, 33, 0.46)"
131 | },
132 | white: {
133 | border: "0",
134 | padding: "0.625rem 0",
135 | marginBottom: "20px",
136 | color: "#555",
137 | backgroundColor: "#fff !important",
138 | boxShadow:
139 | "0 4px 18px 0px rgba(0, 0, 0, 0.12), 0 7px 10px -5px rgba(0, 0, 0, 0.15)"
140 | },
141 | drawerPaper: {
142 | border: "none",
143 | bottom: "0",
144 | transitionProperty: "top, bottom, width",
145 | transitionDuration: ".2s, .2s, .35s",
146 | transitionTimingFunction: "linear, linear, ease",
147 | width: drawerWidth,
148 | ...boxShadow,
149 | position: "fixed",
150 | display: "block",
151 | top: "0",
152 | height: "100vh",
153 | right: "0",
154 | left: "auto",
155 | visibility: "visible",
156 | overflowY: "visible",
157 | borderTop: "none",
158 | textAlign: "left",
159 | paddingRight: "0px",
160 | paddingLeft: "0",
161 | ...transition
162 | }
163 | };
164 |
165 | export default headerStyle;
166 |
--------------------------------------------------------------------------------
/components/Header/HeaderLinks.tsx:
--------------------------------------------------------------------------------
1 | /*eslint-disable*/
2 | import React from "react";
3 | import Link from "next/link";
4 |
5 | // @material-ui/core components
6 | import { makeStyles } from "@material-ui/core/styles";
7 | import List from "@material-ui/core/List";
8 | import ListItem from "@material-ui/core/ListItem";
9 | import Tooltip from "@material-ui/core/Tooltip";
10 | import Icon from "@material-ui/core/Icon";
11 |
12 | // @material-ui/icons
13 | import { Apps, CloudDownload } from "@material-ui/icons";
14 | import DeleteIcon from "@material-ui/icons/Delete";
15 | import IconButton from "@material-ui/core/IconButton";
16 |
17 | // core components
18 | import CustomDropdown from "../CustomDropdown/CustomDropdown";
19 | import Button from "../CustomButtons/Button";
20 |
21 | import styles from "../../styles/jss/nextjs-material-kit/components/headerLinksStyle";
22 |
23 | const useStyles = makeStyles(styles);
24 |
25 | export default function HeaderLinks(props) {
26 | const classes = useStyles();
27 | return (
28 |
29 |
30 |
41 | All components
42 | ,
43 |
48 | Documentation
49 |
50 | ]}
51 | />
52 |
53 |
54 |
59 | Blog
60 |
61 |
62 |
63 |
69 | Download
70 |
71 |
72 |
73 | {/*
74 |
75 |
76 |
77 | */}
78 |
93 |
94 |
95 |
101 |
107 |
108 |
109 |
110 |
111 |
112 |
118 |
124 |
125 |
126 |
127 |
128 |
129 | );
130 | }
131 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/customCheckboxRadioSwitch.ts:
--------------------------------------------------------------------------------
1 | import {
2 | primaryColor,
3 | dangerColor,
4 | roseColor,
5 | grayColor,
6 | hexToRGBAlpha
7 | } from "../nextjs-material-kit";
8 |
9 | const customCheckboxRadioSwitch = {
10 | checkRoot: {
11 | padding: "12px",
12 | "&:hover": {
13 | backgroundColor: hexToRGBAlpha(primaryColor, 0.04) + "!important"
14 | }
15 | },
16 | radioRoot: {
17 | padding: "12px",
18 | "&:hover": {
19 | backgroundColor: hexToRGBAlpha(primaryColor, 0.04) + "!important"
20 | }
21 | },
22 | labelRoot: {
23 | marginLeft: "-14px"
24 | },
25 | checkboxAndRadio: {
26 | position: "relative",
27 | display: "block",
28 | marginTop: "10px",
29 | marginBottom: "10px"
30 | },
31 | checkboxAndRadioHorizontal: {
32 | position: "relative",
33 | display: "block",
34 | "&:first-child": {
35 | marginTop: "10px"
36 | },
37 | "&:not(:first-child)": {
38 | marginTop: "-14px"
39 | },
40 | marginTop: "0",
41 | marginBottom: "0"
42 | },
43 | checked: {
44 | color: primaryColor + "!important"
45 | },
46 | checkedIcon: {
47 | width: "20px",
48 | height: "20px",
49 | border: "1px solid rgba(0, 0, 0, .54)",
50 | borderRadius: "3px"
51 | },
52 | uncheckedIcon: {
53 | width: "0px",
54 | height: "0px",
55 | padding: "9px",
56 | border: "1px solid rgba(0, 0, 0, .54)",
57 | borderRadius: "3px"
58 | },
59 | disabledCheckboxAndRadio: {
60 | opacity: "0.45"
61 | },
62 | label: {
63 | cursor: "pointer",
64 | paddingLeft: "0",
65 | color: "rgba(0, 0, 0, 0.26)",
66 | fontSize: "14px",
67 | lineHeight: "1.428571429",
68 | fontWeight: "400",
69 | display: "inline-flex",
70 | transition: "0.3s ease all",
71 | letterSpacing: "unset"
72 | },
73 | labelHorizontal: {
74 | color: "rgba(0, 0, 0, 0.26)",
75 | cursor: "pointer",
76 | display: "inline-flex",
77 | fontSize: "14px",
78 | lineHeight: "1.428571429",
79 | fontWeight: "400",
80 | paddingTop: "39px",
81 | marginRight: "0",
82 | "@media (min-width: 992px)": {
83 | float: "right"
84 | }
85 | },
86 | labelHorizontalRadioCheckbox: {
87 | paddingTop: "22px"
88 | },
89 | labelLeftHorizontal: {
90 | color: "rgba(0, 0, 0, 0.26)",
91 | cursor: "pointer",
92 | display: "inline-flex",
93 | fontSize: "14px",
94 | lineHeight: "1.428571429",
95 | fontWeight: "400",
96 | paddingTop: "22px",
97 | marginRight: "0"
98 | },
99 | labelError: {
100 | color: dangerColor
101 | },
102 | radio: {
103 | color: primaryColor + "!important"
104 | },
105 | radioChecked: {
106 | width: "16px",
107 | height: "16px",
108 | border: "1px solid " + primaryColor,
109 | borderRadius: "50%"
110 | },
111 | radioUnchecked: {
112 | width: "0px",
113 | height: "0px",
114 | padding: "7px",
115 | border: "1px solid rgba(0, 0, 0, .54)",
116 | borderRadius: "50%"
117 | },
118 | inlineChecks: {
119 | marginTop: "8px"
120 | },
121 | iconCheckbox: {
122 | height: "116px",
123 | width: "116px",
124 | color: grayColor,
125 | "& > span:first-child": {
126 | borderWidth: "4px",
127 | borderStyle: "solid",
128 | borderColor: "#CCCCCC",
129 | textAlign: "center",
130 | verticalAlign: "middle",
131 | borderRadius: "50%",
132 | color: "inherit",
133 | margin: "0 auto 20px",
134 | transition: "all 0.2s"
135 | },
136 | "&:hover": {
137 | color: roseColor,
138 | "& > span:first-child": {
139 | borderColor: roseColor
140 | }
141 | }
142 | },
143 | iconCheckboxChecked: {
144 | color: roseColor,
145 | "& > span:first-child": {
146 | borderColor: roseColor
147 | }
148 | },
149 | iconCheckboxIcon: {
150 | fontSize: "40px",
151 | lineHeight: "111px"
152 | },
153 | switchBase: {
154 | color: primaryColor + "!important"
155 | },
156 | switchIcon: {
157 | boxShadow: "0 1px 3px 1px rgba(0, 0, 0, 0.4)",
158 | color: "#FFFFFF !important",
159 | border: "1px solid rgba(0, 0, 0, .54)"
160 | },
161 | switchBar: {
162 | width: "30px",
163 | height: "15px",
164 | backgroundColor: "rgb(80, 80, 80)",
165 | borderRadius: "15px",
166 | opacity: "0.7!important"
167 | },
168 | switchChecked: {
169 | "& + $switchBar": {
170 | backgroundColor: "rgba(156, 39, 176, 1) !important"
171 | },
172 | "& $switchIcon": {
173 | borderColor: "#9c27b0"
174 | }
175 | },
176 | switchRoot: {
177 | height: "48px"
178 | }
179 | };
180 |
181 | export default customCheckboxRadioSwitch;
182 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/paginationStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | hexToRGBAlpha,
3 | grayColor,
4 | primaryColor,
5 | infoColor,
6 | successColor,
7 | warningColor,
8 | dangerColor,
9 | roseColor
10 | } from "../../nextjs-material-kit";
11 |
12 | const paginationStyle = {
13 | pagination: {
14 | display: "inline-block",
15 | paddingLeft: "0",
16 | margin: "0 0 20px 0",
17 | borderRadius: "4px"
18 | },
19 | paginationItem: {
20 | display: "inline"
21 | },
22 | paginationLink: {
23 | ":first-of-type": {
24 | marginleft: "0"
25 | },
26 | letterSpacing: "unset",
27 | border: "0",
28 | borderRadius: "30px !important",
29 | transition: "all .3s",
30 | padding: "0px 11px",
31 | margin: "0 3px",
32 | minWidth: "30px",
33 | height: "30px",
34 | minHeight: "auto",
35 | lineHeight: "30px",
36 | fontWeight: "400",
37 | fontSize: "12px",
38 | textTransform: "uppercase",
39 | background: "transparent",
40 | position: "relative",
41 | float: "left",
42 | textDecoration: "none",
43 | boxSizing: "border-box",
44 | "&,&:hover,&:focus": {
45 | color: grayColor
46 | },
47 | "&:hover,&:focus": {
48 | zIndex: "3",
49 | backgroundColor: "#eee",
50 | borderColor: "#ddd"
51 | },
52 | "&:hover": {
53 | cursor: "pointer"
54 | }
55 | },
56 | primary: {
57 | "&,&:hover,&:focus": {
58 | backgroundColor: primaryColor,
59 | borderColor: primaryColor,
60 | color: "#FFFFFF",
61 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
62 | primaryColor,
63 | 0.14
64 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
65 | primaryColor,
66 | 0.12
67 | )}, 0 2px 4px -1px ${hexToRGBAlpha(primaryColor, 0.2)}`
68 | },
69 | "&:hover,&:focus": {
70 | zIndex: "2",
71 | cursor: "default"
72 | }
73 | },
74 | info: {
75 | "&,&:hover,&:focus": {
76 | backgroundColor: infoColor,
77 | borderColor: infoColor,
78 | color: "#FFFFFF",
79 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
80 | infoColor,
81 | 0.14
82 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
83 | infoColor,
84 | 0.12
85 | )}, 0 2px 4px -1px ${hexToRGBAlpha(infoColor, 0.2)}`
86 | },
87 | "&:hover,&:focus": {
88 | zIndex: "2",
89 | cursor: "default"
90 | }
91 | },
92 | success: {
93 | "&,&:hover,&:focus": {
94 | backgroundColor: successColor,
95 | borderColor: successColor,
96 | color: "#FFFFFF",
97 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
98 | successColor,
99 | 0.14
100 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
101 | successColor,
102 | 0.12
103 | )}, 0 2px 4px -1px ${hexToRGBAlpha(successColor, 0.2)}`
104 | },
105 | "&:hover,&:focus": {
106 | zIndex: "2",
107 | cursor: "default"
108 | }
109 | },
110 | warning: {
111 | "&,&:hover,&:focus": {
112 | backgroundColor: warningColor,
113 | borderColor: warningColor,
114 | color: "#FFFFFF",
115 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
116 | warningColor,
117 | 0.14
118 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
119 | warningColor,
120 | 0.12
121 | )}, 0 2px 4px -1px ${hexToRGBAlpha(warningColor, 0.2)}`
122 | },
123 | "&:hover,&:focus": {
124 | zIndex: "2",
125 | cursor: "default"
126 | }
127 | },
128 | danger: {
129 | "&,&:hover,&:focus": {
130 | backgroundColor: dangerColor,
131 | borderColor: dangerColor,
132 | color: "#FFFFFF",
133 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
134 | dangerColor,
135 | 0.14
136 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
137 | dangerColor,
138 | 0.12
139 | )}, 0 2px 4px -1px ${hexToRGBAlpha(dangerColor, 0.2)}`
140 | },
141 | "&:hover,&:focus": {
142 | zIndex: "2",
143 | cursor: "default"
144 | }
145 | },
146 | rose: {
147 | "&,&:hover,&:focus": {
148 | backgroundColor: roseColor,
149 | borderColor: roseColor,
150 | color: "#FFFFFF",
151 | boxShadow: `0 4px 5px 0 ${hexToRGBAlpha(
152 | roseColor,
153 | 0.14
154 | )}, 0 1px 10px 0 ${hexToRGBAlpha(
155 | roseColor,
156 | 0.12
157 | )}, 0 2px 4px -1px ${hexToRGBAlpha(roseColor, 0.2)}`
158 | },
159 | "&:hover,&:focus": {
160 | zIndex: "2",
161 | cursor: "default"
162 | }
163 | },
164 | disabled: {
165 | "&,&:hover,&:focus": {
166 | color: "#777",
167 | cursor: "not-allowed",
168 | backgroundColor: "#fff",
169 | borderColor: "#ddd"
170 | }
171 | }
172 | };
173 |
174 | export default paginationStyle;
175 |
--------------------------------------------------------------------------------
/components/Header/Header.tsx:
--------------------------------------------------------------------------------
1 | import React, { ReactElement } from "react";
2 | import Link from "next/link";
3 | // nodejs library that concatenates classes
4 | import classNames from "classnames";
5 | // nodejs library to set properties for components
6 | // @material-ui/core components
7 | import { makeStyles } from "@material-ui/core/styles";
8 | import AppBar from "@material-ui/core/AppBar";
9 | import Toolbar from "@material-ui/core/Toolbar";
10 | import IconButton from "@material-ui/core/IconButton";
11 | import Button from "@material-ui/core/Button";
12 | import Hidden from "@material-ui/core/Hidden";
13 | import Drawer from "@material-ui/core/Drawer";
14 | // @material-ui/icons
15 | import Menu from "@material-ui/icons/Menu";
16 | // core components
17 | import styles from "../../styles/jss/nextjs-material-kit/components/headerStyle";
18 |
19 | const useStyles = makeStyles(styles);
20 |
21 | export default function Header(props: HeaderProps) {
22 | const classes = useStyles();
23 | const [mobileOpen, setMobileOpen] = React.useState(false);
24 | React.useEffect(() => {
25 | if (props.changeColorOnScroll) {
26 | window.addEventListener("scroll", headerColorChange);
27 | }
28 | return function cleanup() {
29 | if (props.changeColorOnScroll) {
30 | window.removeEventListener("scroll", headerColorChange);
31 | }
32 | };
33 | });
34 | const handleDrawerToggle = () => {
35 | setMobileOpen(!mobileOpen);
36 | };
37 | const headerColorChange = () => {
38 | const { color, changeColorOnScroll } = props;
39 | const windowsScrollTop = window.pageYOffset;
40 | if (changeColorOnScroll) {
41 | if (windowsScrollTop > changeColorOnScroll.height) {
42 | document.body
43 | .getElementsByTagName("header")[0]
44 | .classList.remove(classes[color || "primary"]);
45 | document.body
46 | .getElementsByTagName("header")[0]
47 | .classList.add(classes[changeColorOnScroll.color]);
48 | } else {
49 | document.body
50 | .getElementsByTagName("header")[0]
51 | .classList.add(classes[color || "primary"]);
52 | document.body
53 | .getElementsByTagName("header")[0]
54 | .classList.remove(classes[changeColorOnScroll.color]);
55 | }
56 | }
57 | };
58 | const { color, rightLinks, leftLinks, brand, fixed, absolute } = props;
59 | const appBarClasses = classNames({
60 | [classes.appBar]: true,
61 | [classes[color || "primary"]]: color,
62 | [classes.absolute]: absolute,
63 | [classes.fixed]: fixed,
64 | });
65 | const brandComponent = (
66 |
67 | {brand}
68 |
69 | );
70 | return (
71 |
72 |
73 | {leftLinks !== undefined ? brandComponent : null}
74 |
75 | {leftLinks !== undefined ? (
76 |
77 | {leftLinks}
78 |
79 | ) : (
80 | brandComponent
81 | )}
82 |
83 |
84 | {rightLinks}
85 |
86 |
87 |
92 |
93 |
94 |
95 |
96 |
97 |
106 |
107 | {leftLinks}
108 | {rightLinks}
109 |
110 |
111 |
112 |
113 | );
114 | }
115 |
116 | export interface HeaderProps {
117 | color?:
118 | | "primary"
119 | | "info"
120 | | "success"
121 | | "warning"
122 | | "danger"
123 | | "transparent"
124 | | "white"
125 | | "rose"
126 | | "dark";
127 | rightLinks?: ReactElement;
128 | leftLinks?: ReactElement;
129 | brand: string;
130 | fixed?: boolean;
131 | absolute?: boolean;
132 | changeColorOnScroll?: {
133 | height: number;
134 | color:
135 | | "primary"
136 | | "info"
137 | | "success"
138 | | "warning"
139 | | "danger"
140 | | "transparent"
141 | | "white"
142 | | "rose"
143 | | "dark";
144 | };
145 | }
146 |
--------------------------------------------------------------------------------
/styles/scss/core/mixins/_colored-shadows.scss:
--------------------------------------------------------------------------------
1 | @mixin shadow-big() {
2 | box-shadow: 0 16px 38px -12px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity * 4),
3 | 0 4px 25px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
4 | 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
5 | }
6 |
7 | @mixin shadow-big-image() {
8 | // new box shadow optimized for Tables and Phones
9 | box-shadow: 0 5px 15px -8px rgba(0, 0, 0, $bmd-shadow-ambient-opacity * 2),
10 | 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
11 | }
12 |
13 | @mixin shadow-big-navbar() {
14 | box-shadow: 0 10px 20px -12px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity * 3),
15 | 0 3px 20px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
16 | 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
17 | }
18 |
19 | @mixin shadow-big-color($color) {
20 | // new box shadow optimized for Tables and Phones
21 | box-shadow: 0 5px 20px 0px rgba(0, 0, 0, 0.2),
22 | 0 13px 24px -11px rgba($color, 0.6);
23 | }
24 |
25 | @mixin shadow-small-color($color) {
26 | // new box shadow optimized for Tablets and Phones
27 | box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14),
28 | 0 7px 10px -5px rgba($color, 0.4);
29 | }
30 |
31 | @mixin shadow-navbar-color($color) {
32 | // new box shadow optimized for Tablets and Phones
33 |
34 | @if ($color == $white-color) {
35 | box-shadow: 0 4px 18px 0px rgba(0, 0, 0, 0.12),
36 | 0 7px 10px -5px rgba(0, 0, 0, 0.15);
37 | } @else {
38 | box-shadow: 0 4px 20px 0px rgba(0, 0, 0, 0.14),
39 | 0 7px 12px -5px rgba($color, 0.46);
40 | }
41 | }
42 |
43 | @mixin shadow-2dp() {
44 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity),
45 | 0 3px 1px -2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
46 | 0 1px 5px 0 rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
47 | }
48 |
49 | @mixin shadow-4dp() {
50 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity),
51 | 0 1px 10px 0 rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
52 | 0 2px 4px -1px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
53 | }
54 |
55 | @mixin shadow-6dp() {
56 | box-shadow: 0 6px 10px 0 rgba(0, 0, 0, $bmd-shadow-penumbra-opacity),
57 | 0 1px 18px 0 rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
58 | 0 3px 5px -1px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
59 | }
60 |
61 | @mixin shadow-8dp() {
62 | box-shadow: 0 8px 10px 1px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity),
63 | 0 3px 14px 2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
64 | 0 5px 5px -3px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
65 | }
66 |
67 | @mixin shadow-16dp() {
68 | box-shadow: 0 16px 24px 2px rgba(0, 0, 0, $bmd-shadow-penumbra-opacity),
69 | 0 6px 30px 5px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
70 | 0 8px 10px -5px rgba(0, 0, 0, $bmd-shadow-umbra-opacity);
71 | }
72 |
73 | @mixin shadow-2dp-color($color) {
74 | box-shadow: 0 2px 2px 0 rgba($color, $bmd-shadow-penumbra-opacity),
75 | 0 3px 1px -2px rgba($color, $bmd-shadow-umbra-opacity),
76 | 0 1px 5px 0 rgba($color, $bmd-shadow-ambient-opacity);
77 | }
78 |
79 | @mixin shadow-4dp-color($color) {
80 | box-shadow: 0 4px 5px 0 rgba($color, $bmd-shadow-penumbra-opacity),
81 | 0 1px 10px 0 rgba($color, $bmd-shadow-ambient-opacity),
82 | 0 2px 4px -1px rgba($color, $bmd-shadow-umbra-opacity);
83 | }
84 |
85 | @mixin shadow-8dp-color($color) {
86 | box-shadow: 0 8px 10px 1px rgba($color, $bmd-shadow-penumbra-opacity),
87 | 0 3px 14px 2px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
88 | 0 5px 5px -3px rgba($color, $bmd-shadow-umbra-opacity);
89 | }
90 |
91 | @mixin shadow-16dp-color($color) {
92 | box-shadow: 0 16px 24px 2px rgba($color, $bmd-shadow-penumbra-opacity),
93 | 0 6px 30px 5px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
94 | 0 8px 10px -5px rgba($color, $bmd-shadow-umbra-opacity);
95 | }
96 |
97 | @mixin button-shadow-color($color) {
98 | box-shadow: 0 14px 26px -12px rgba($color, $bmd-shadow-penumbra-opacity * 3),
99 | 0 4px 23px 0px rgba(0, 0, 0, $bmd-shadow-ambient-opacity),
100 | 0 8px 10px -5px rgba($color, $bmd-shadow-umbra-opacity);
101 | }
102 |
103 | @mixin shadow-z-1() {
104 | box-shadow: 0 1px 6px 0 rgba(0, 0, 0, 0.12), 0 1px 6px 0 rgba(0, 0, 0, 0.12);
105 | }
106 |
107 | @mixin shadow-z-1-hover() {
108 | box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15);
109 | }
110 |
111 | @mixin shadow-z-2() {
112 | box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
113 | }
114 |
115 | @mixin shadow-z-3() {
116 | box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24),
117 | 0 17px 50px 0 rgba(0, 0, 0, 0.19);
118 | }
119 |
120 | @mixin shadow-z-4() {
121 | box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22),
122 | 0 25px 55px 0 rgba(0, 0, 0, 0.21);
123 | }
124 |
125 | @mixin shadow-z-5() {
126 | box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2),
127 | 0 40px 77px 0 rgba(0, 0, 0, 0.22);
128 | }
129 |
--------------------------------------------------------------------------------
/styles/jss/nextjs-material-kit/components/customDropdownStyle.ts:
--------------------------------------------------------------------------------
1 | import {
2 | defaultFont,
3 | primaryColor,
4 | primaryBoxShadow,
5 | infoColor,
6 | infoBoxShadow,
7 | successColor,
8 | successBoxShadow,
9 | warningColor,
10 | warningBoxShadow,
11 | dangerColor,
12 | dangerBoxShadow,
13 | roseColor,
14 | roseBoxShadow
15 | } from "../../nextjs-material-kit";
16 |
17 | const customDropdownStyle = (theme) => ({
18 | popperClose: {
19 | pointerEvents: "none"
20 | },
21 | pooperNav: {
22 | [theme.breakpoints.down("sm")]: {
23 | position: "static !important",
24 | left: "unset !important",
25 | top: "unset !important",
26 | transform: "none !important",
27 | willChange: "none !important",
28 | "& > div": {
29 | boxShadow: "none !important",
30 | marginLeft: "1.5rem",
31 | marginRight: "1.5rem",
32 | transition: "none !important",
33 | marginTop: "0px !important",
34 | marginBottom: "5px !important",
35 | padding: "0px !important"
36 | }
37 | }
38 | },
39 | dropdown: {
40 | borderRadius: "3px",
41 | border: "0",
42 | boxShadow: "0 2px 5px 0 rgba(0, 0, 0, 0.26)",
43 | top: "100%",
44 | zIndex: "1000",
45 | minWidth: "160px",
46 | padding: "5px 0",
47 | margin: "2px 0 0",
48 | fontSize: "14px",
49 | textAlign: "left",
50 | listStyle: "none",
51 | backgroundColor: "#fff",
52 | backgroundClip: "padding-box"
53 | },
54 | menuList: {
55 | padding: "0"
56 | },
57 | popperResponsive: {
58 | zIndex: "1200",
59 | position: "absolute !important",
60 | [theme.breakpoints.down("sm")]: {
61 | zIndex: "1640",
62 | position: "static !important",
63 | float: "none",
64 | width: "auto",
65 | marginTop: "0",
66 | backgroundColor: "transparent",
67 | border: "0",
68 | boxShadow: "none",
69 | color: "black"
70 | }
71 | },
72 | dropdownItem: {
73 | ...defaultFont,
74 | fontSize: "13px",
75 | padding: "10px 20px",
76 | margin: "0 5px",
77 | borderRadius: "2px",
78 | position: "relative",
79 | transition: "all 150ms linear",
80 | display: "block",
81 | clear: "both",
82 | fontWeight: "400",
83 | height: "fit-content",
84 | color: "#333",
85 | whiteSpace: "nowrap",
86 | minHeight: "unset"
87 | },
88 | blackHover: {
89 | "&:hover": {
90 | boxShadow:
91 | "0 4px 20px 0px rgba(0, 0, 0, 0.14), 0 7px 10px -5px rgba(33, 33, 33, 0.4)",
92 | backgroundColor: "#212121",
93 | color: "#fff"
94 | }
95 | },
96 | primaryHover: {
97 | "&:hover": {
98 | backgroundColor: primaryColor,
99 | color: "#FFFFFF",
100 | ...primaryBoxShadow
101 | }
102 | },
103 | infoHover: {
104 | "&:hover": {
105 | backgroundColor: infoColor,
106 | color: "#FFFFFF",
107 | ...infoBoxShadow
108 | }
109 | },
110 | successHover: {
111 | "&:hover": {
112 | backgroundColor: successColor,
113 | color: "#FFFFFF",
114 | ...successBoxShadow
115 | }
116 | },
117 | warningHover: {
118 | "&:hover": {
119 | backgroundColor: warningColor,
120 | color: "#FFFFFF",
121 | ...warningBoxShadow
122 | }
123 | },
124 | dangerHover: {
125 | "&:hover": {
126 | backgroundColor: dangerColor,
127 | color: "#FFFFFF",
128 | ...dangerBoxShadow
129 | }
130 | },
131 | roseHover: {
132 | "&:hover": {
133 | backgroundColor: roseColor,
134 | color: "#FFFFFF",
135 | ...roseBoxShadow
136 | }
137 | },
138 | dropdownItemRTL: {
139 | textAlign: "right"
140 | },
141 | dropdownDividerItem: {
142 | margin: "5px 0",
143 | backgroundColor: "rgba(0, 0, 0, 0.12)",
144 | height: "1px",
145 | overflow: "hidden"
146 | },
147 | buttonIcon: {
148 | width: "20px",
149 | height: "20px"
150 | },
151 | caret: {
152 | transition: "all 150ms ease-in",
153 | display: "inline-block",
154 | width: "0",
155 | height: "0",
156 | marginLeft: "4px",
157 | verticalAlign: "middle",
158 | borderTop: "4px solid",
159 | borderRight: "4px solid transparent",
160 | borderLeft: "4px solid transparent"
161 | },
162 | caretActive: {
163 | transform: "rotate(180deg)"
164 | },
165 | caretRTL: {
166 | marginRight: "4px"
167 | },
168 | dropdownHeader: {
169 | display: "block",
170 | padding: "0.1875rem 1.25rem",
171 | fontSize: "0.75rem",
172 | lineHeight: "1.428571",
173 | color: "#777",
174 | whiteSpace: "nowrap",
175 | fontWeight: "inherit",
176 | marginTop: "10px",
177 | minHeight: "unset",
178 | "&:hover,&:focus": {
179 | backgroundColor: "transparent",
180 | cursor: "auto"
181 | }
182 | },
183 | noLiPadding: {
184 | padding: "0"
185 | }
186 | });
187 |
188 | export default customDropdownStyle;
189 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | /* Basic Options */
4 | "target": "esnext", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
5 | "module": "esnext", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
6 | "lib": [ /* Specify library files to be included in the compilation. */
7 | "es6",
8 | "es7",
9 | "esnext",
10 | "dom"
11 | ],
12 | "allowJs": false, /* Allow javascript files to be compiled. */// "checkJs": true, /* Report errors in .js files. */
13 | "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */// "declaration": true, /* Generates corresponding '.d.ts' file. */
14 | // "sourceMap": true, /* Generates corresponding '.map' file. */
15 | // "outFile": "./", /* Concatenate and emit output to single file. */
16 | // "outDir": "./", /* Redirect output structure to the directory. */
17 | // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
18 | "removeComments": false, /* Do not emit comments to output. */// "noEmit": true, /* Do not emit outputs. */
19 | // "importHelpers": true, /* Import emit helpers from 'tslib'. */
20 | // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
21 | // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
22 | /* Strict Type-Checking Options */
23 | "strict": false, /* Enable all strict type-checking options. */
24 | "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
25 | "strictNullChecks": true, /* Enable strict null checks. */
26 | "strictFunctionTypes": true, /* Enable strict checking of function types. */
27 | "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
28 | "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
29 | "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. *//* Additional Checks */
30 | "noUnusedLocals": true, /* Report errors on unused locals. */
31 | "noUnusedParameters": true, /* Report errors on unused parameters. */
32 | "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
33 | "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. *//* Module Resolution Options */
34 | "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
35 | "baseUrl": ".", /* Base directory to resolve non-absolute module names. */// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
36 | // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
37 | // "typeRoots": [], /* List of folders to include type definitions from. */
38 | // "types": [], /* Type declaration files to be included in compilation. */
39 | "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
40 | "esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
41 | /* Source Map Options */
42 | // "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
43 | // "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
44 | "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
45 | "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
46 | "skipLibCheck": true,
47 | "forceConsistentCasingInFileNames": true,
48 | "noEmit": true,
49 | "incremental": true,
50 | "resolveJsonModule": true,
51 | "isolatedModules": true
52 | /* Experimental Options */
53 | // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
54 | // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
55 | },
56 | "include": [
57 | "src"
58 | ],
59 | "exclude": [
60 | "node_modules"
61 | ]
62 | }
63 |
--------------------------------------------------------------------------------
/pages-sections/Components-Sections/SectionLogin.tsx:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | // @material-ui/core components
3 | import { makeStyles } from "@material-ui/core/styles";
4 | import InputAdornment from "@material-ui/core/InputAdornment";
5 | import Icon from "@material-ui/core/Icon";
6 | // @material-ui/icons
7 | import People from "@material-ui/icons/People";
8 | import Email from "@material-ui/icons/Email";
9 | // core components
10 | import GridContainer from "../../components/Grid/GridContainer";
11 | import GridItem from "../../components/Grid/GridItem";
12 | import Card from "../../components/Card/Card";
13 | import CardHeader from "../../components/Card/CardHeader";
14 | import CardBody from "../../components/Card/CardBody";
15 | import CardFooter from "../../components/Card/CardFooter";
16 | import Button from "../../components/CustomButtons/Button";
17 | import CustomInput from "../../components/CustomInput/CustomInput";
18 |
19 | import styles from "../../styles/jss/nextjs-material-kit/pages/componentsSections/loginStyle";
20 |
21 | const useStyles = makeStyles(styles);
22 |
23 | export default function SectionLogin() {
24 | const classes = useStyles();
25 | return (
26 |
27 |
28 |
29 |
30 |
31 |
125 |
126 |
127 |
128 |
129 |
130 | );
131 | }
132 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log
2 |
3 | ## [1.2.3] 2022-10-0
4 | ### Improvements
5 |
6 | - Added Blog Section
7 | - Mardown, MDX translation
8 |
9 | ## [1.2.2] 2022-09-15
10 | ### Improvements
11 |
12 | - `TypeScript` Migration
13 | - `Update Dependencies`
14 | - `Added Deploy` buttons
15 | - Vercel, Netlify
16 |
17 | ## [1.2.1] 2022-08-15
18 |
19 | - Fixed the issues
20 | - Updated dependencies
21 | - Migration to React 18
22 | - Migration to sass from node-sass
23 |
24 | ## [1.2.0] 2021-05-14
25 |
26 | ### Bug fixing
27 |
28 | - Moved all images inside `public` folder (i.e. moved from `assets/img` to `public/img`)
29 |
30 | ### Major style changes
31 |
32 | - Moved all of the styles inside `styles` folder (i.e. moved from `assets/scss`, `assets/css`, `assets/jss` to `styles/scss`, `styles/css` and `styles/jss`)
33 |
34 | ### Deleted components
35 |
36 | ### Added components
37 |
38 | ### Deleted dependencies
39 |
40 | - `@zeit/next-sass` (SCSS will not be imported with the built-in support of NextJS)
41 | - `react-swipeable-views` (not event Material-UI use it anymore)
42 |
43 | ### Added dependencies
44 |
45 | ### Updated dependencies
46 |
47 | ```
48 | @material-ui/core 4.9.13 → 4.11.4
49 | @material-ui/icons 4.9.1 → 4.11.2
50 | classnames 2.2.6 → 2.3.1
51 | moment 2.25.3 → 2.29.1
52 | next 9.3.6 → 10.2.0
53 | next-compose-plugins 2.2.0 → 2.2.1
54 | next-images 1.3.1 → 1.7.0
55 | nextjs-redirect 2.0.2 → 5.0.2
56 | node-sass 4.14.1 → 5.0.0
57 | nouislider 14.4.0 → 15.1.0
58 | react 16.13.1 → 17.0.2
59 | react-datetime 2.16.3 → 3.0.4
60 | react-dom 16.13.1 → 17.0.2
61 | react-slick 0.25.2 → 0.28.1
62 | styled-components 5.1.0 → 5.3.0
63 | webpack 4.43.0 → 4.46.0
64 | ```
65 |
66 | ### Warning
67 |
68 | _We could not update webpack past version 4 and node-sass past version 5 due to some warnings from NextJS._
69 | _The following warnings come from some of our dependencies, however they do not affect the UI or the functionality of the product - we are thinking of dropping their usage and replace with other dependencies:_
70 |
71 | ```
72 | npm WARN react-datetime@3.0.4 requires a peer of react@^16.5.0 but none is installed. You must install peer dependencies yourself.
73 | ```
74 |
75 | ## [1.1.0] 2020-05-08
76 |
77 | ### Bug fixing
78 |
79 | - `https://github.com/creativetimofficial/nextjs-material-kit/issues/10` (changed the `title`, from simple `string` to `node`, so now, you can pass a title like so `title={Free Chat }` if you want to have link functionality - NOTE: the `node` that you pass to the `InfoArea` component will have to be styled)
80 | - `https://github.com/creativetimofficial/nextjs-material-kit/issues/6` (check `https://github.com/creativetimofficial/nextjs-material-kit/pull/7` for more info)
81 | - `https://github.com/creativetimofficial/nextjs-material-kit/issues/5`
82 | - `https://github.com/creativetimofficial/nextjs-material-kit/issues/4`
83 | - `https://github.com/creativetimofficial/nextjs-material-kit/issues/2`
84 |
85 | ### Major style changes
86 |
87 | - `assets/jss/nextjs-material-kit.js`
88 | - `assets/jss/nextjs-material-kit/components/buttonStyle.js`
89 | - `assets/jss/nextjs-material-kit/components/headerStyle.js`
90 | - `assets/jss/nextjs-material-kit/components/navPillsStyle.js`
91 | - `assets/jss/nextjs-material-kit/components/paginationStyle.js`
92 | - `assets/jss/nextjs-material-kit/components/paginationStyle.js`
93 |
94 | ### Deleted components
95 |
96 | ### Added components
97 |
98 | ### Deleted dependencies
99 |
100 | ### Added dependencies
101 |
102 | ### Updated dependencies
103 |
104 | ```
105 | @material-ui/core 4.3.2 → 4.9.13
106 | @material-ui/icons 4.2.1 → 4.9.1
107 | moment 2.24.0 → 2.25.3
108 | next 9.0.5 → 9.3.6
109 | next-images 1.1.2 → 1.3.1
110 | nextjs-redirect 1.0.2 → 2.0.2
111 | node-sass 4.12.0 → 4.14.1
112 | nouislider 14.0.2 → 14.4.0
113 | react 16.9.0 → 16.13.1
114 | react-dom 16.9.0 → 16.13.1
115 | react-swipeable-views 0.13.3 → 0.13.9
116 | styled-components 4.3.2 → 5.1.0
117 | webpack 4.39.3 → 4.43.0
118 | ```
119 |
120 | ### Warning
121 |
122 | _The following warnings come from some of our dependencies, however they do not affect the UI or the functionality of the product - if the issues will persist and will change into errors in the next version of React (v17), we will drop their usage and replace with other dependencies:_
123 |
124 | ```
125 | npm WARN deprecated popper.js@1.16.1: Popper changed home, find its new releases at @popperjs/core
126 | npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
127 | npm WARN deprecated mkdirp@0.5.3: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
128 | ```
129 |
130 | _The following dependencies raise warnings (of deprecation or renamed) in development mode: DateTime, ReactSwipableView. If the warnings will persist, and will become errors in React 17, we will drop their usage and replace them with other plugins._
131 |
132 | ## [1.0.0] 2019-09-13
133 |
134 | ### Original Release
135 |
136 | - Started project with NextJS
137 | - Added Material-UI as base framework
138 | - Added design from Material Kit by Creative Tim
139 | - Added components from Material Kit React by Creative Tim
140 |
--------------------------------------------------------------------------------
/styles/scss/plugins/_plugin-react-slick.scss:
--------------------------------------------------------------------------------
1 | /* Slider */
2 | .slick-slider {
3 | position: relative;
4 |
5 | display: block;
6 | box-sizing: border-box;
7 |
8 | -webkit-user-select: none;
9 | -moz-user-select: none;
10 | -ms-user-select: none;
11 | user-select: none;
12 |
13 | -webkit-touch-callout: none;
14 | -khtml-user-select: none;
15 | -ms-touch-action: pan-y;
16 | touch-action: pan-y;
17 | -webkit-tap-highlight-color: transparent;
18 |
19 | @media (min-width: 768px) {
20 | .slick-caption {
21 | display: block !important;
22 | }
23 | }
24 |
25 | .slick-caption {
26 | padding-bottom: 45px;
27 | position: absolute;
28 | right: 15%;
29 | bottom: 20px;
30 | left: 15%;
31 | z-index: 10;
32 | padding-top: 20px;
33 | color: #ffffff;
34 | text-align: center;
35 | z-index: 3;
36 | display: none;
37 | }
38 | .slick-slide {
39 | > div:first-child {
40 | position: relative;
41 | }
42 | }
43 | .slick-icons {
44 | position: relative;
45 | top: 5px;
46 | }
47 | .slick-image {
48 | width: 100% !important;
49 | display: inline-flex !important;
50 | }
51 | }
52 |
53 | .slick-list {
54 | position: relative;
55 |
56 | display: block;
57 | overflow: hidden;
58 |
59 | margin: 0;
60 | padding: 0;
61 | }
62 | .slick-list:focus {
63 | outline: none;
64 | }
65 | .slick-list.dragging {
66 | cursor: pointer;
67 | cursor: hand;
68 | }
69 |
70 | .slick-slider .slick-track,
71 | .slick-slider .slick-list {
72 | -webkit-transform: translate3d(0, 0, 0);
73 | -moz-transform: translate3d(0, 0, 0);
74 | -ms-transform: translate3d(0, 0, 0);
75 | -o-transform: translate3d(0, 0, 0);
76 | transform: translate3d(0, 0, 0);
77 | }
78 |
79 | .slick-track {
80 | position: relative;
81 | top: 0;
82 | left: 0;
83 |
84 | display: block;
85 | margin-left: auto;
86 | margin-right: auto;
87 | }
88 | .slick-track:before,
89 | .slick-track:after {
90 | display: table;
91 |
92 | content: "";
93 | }
94 | .slick-track:after {
95 | clear: both;
96 | }
97 | .slick-loading .slick-track {
98 | visibility: hidden;
99 | }
100 |
101 | .slick-slide {
102 | display: none;
103 | float: left;
104 |
105 | height: 100%;
106 | min-height: 1px;
107 | }
108 | [dir="rtl"] .slick-slide {
109 | float: right;
110 | }
111 | .slick-slide img {
112 | display: block;
113 | }
114 | .slick-slide.slick-loading img {
115 | display: none;
116 | }
117 | .slick-slide.dragging img {
118 | pointer-events: none;
119 | }
120 | .slick-initialized .slick-slide {
121 | display: block;
122 | }
123 | .slick-loading .slick-slide {
124 | visibility: hidden;
125 | }
126 | .slick-vertical .slick-slide {
127 | display: block;
128 |
129 | height: auto;
130 |
131 | border: 1px solid transparent;
132 | }
133 | .slick-arrow.slick-hidden {
134 | display: none;
135 | }
136 | button.slick-arrow.slick-prev,
137 | button.slick-arrow.slick-next {
138 | font-size: 0;
139 | line-height: 0;
140 | position: absolute;
141 | top: 50%;
142 | display: block;
143 | // width: 20px;
144 | height: 100%;
145 | padding: 0;
146 | -ms-transform: translateY(-50%);
147 | transform: translateY(-50%);
148 | cursor: pointer;
149 | border: none;
150 | color: transparent;
151 | outline: none;
152 | background: transparent;
153 | width: 15%;
154 | z-index: 2;
155 | opacity: 0.5;
156 | }
157 | .slick-prev {
158 | left: 0;
159 | &::before {
160 | content: "\f053";
161 | font-weight: 600;
162 | font-family: Font Awesome\ 5 Free;
163 | -moz-osx-font-smoothing: grayscale;
164 | -webkit-font-smoothing: antialiased;
165 | display: inline-block;
166 | font-style: normal;
167 | font-variant: normal;
168 | text-rendering: auto;
169 | line-height: 1;
170 | color: white;
171 | font-size: 30px;
172 | width: 100%;
173 | }
174 | }
175 | .slick-next {
176 | right: 0;
177 | &::before {
178 | content: "\f054";
179 | font-weight: 600;
180 | font-family: Font Awesome\ 5 Free;
181 | -moz-osx-font-smoothing: grayscale;
182 | -webkit-font-smoothing: antialiased;
183 | display: inline-block;
184 | font-style: normal;
185 | font-variant: normal;
186 | text-rendering: auto;
187 | line-height: 1;
188 | color: #fff;
189 | font-size: 30px;
190 | width: 100%;
191 | }
192 | }
193 | .slick-list {
194 | z-index: 1;
195 | }
196 | .slick-dots {
197 | margin-top: 0;
198 | margin-bottom: 1rem;
199 | position: absolute;
200 | bottom: 5px;
201 | // margin-right: 15%;
202 | // margin-left: 15%;
203 | width: 100%;
204 | padding: 0;
205 | list-style: none;
206 | text-align: center;
207 | z-index: 3;
208 | }
209 | .slick-dots li,
210 | .slick-dots li button {
211 | width: 20px;
212 | height: 20px;
213 | cursor: pointer;
214 | }
215 | .slick-dots li {
216 | position: relative;
217 | display: inline-block;
218 | margin: 0 5px;
219 | padding: 0;
220 | }
221 | .slick-dots li button {
222 | font-size: 0;
223 | line-height: 0;
224 | display: block;
225 | padding: 5px;
226 | color: transparent;
227 | border: 0;
228 | outline: none;
229 | background: transparent;
230 | &::before {
231 | position: absolute;
232 | top: 0;
233 | left: 0;
234 | width: 10px;
235 | height: 10px;
236 | content: "\2022";
237 | text-align: center;
238 | opacity: 1;
239 | background-color: #fff;
240 | -webkit-font-smoothing: antialiased;
241 | -moz-osx-font-smoothing: grayscale;
242 | box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14),
243 | 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
244 | border-radius: 2px;
245 | transition: all 300ms linear;
246 | }
247 | }
248 | .slick-dots li.slick-active button:before {
249 | width: 15px;
250 | height: 15px;
251 | box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12),
252 | 0 2px 4px -1px rgba(0, 0, 0, 0.2);
253 | top: -3px;
254 | }
255 |
--------------------------------------------------------------------------------