From 0e91646c75f587c2d6f23d72cb932f240edc3215 Mon Sep 17 00:00:00 2001 From: "rizal.productzilla" Date: Tue, 16 Apr 2024 16:48:48 +0700 Subject: [PATCH] first commit --- app/401.tsx | 64 + app/404.tsx | 63 + app/500.tsx | 63 + app/_app.tsx | 161 + app/_document.tsx | 70 + app/acl/index.tsx | 49 + app/forgot-password/page.tsx | 159 + app/home/index.tsx | 38 + app/home/page.tsx | 38 + app/layouts/UserLayout.tsx | 98 + app/layouts/UserThemeOptions.ts | 185 + app/layouts/components/Direction.tsx | 40 + app/layouts/components/Translations.tsx | 15 + app/layouts/components/UserIcon.tsx | 11 + app/layouts/components/acl/Can.tsx | 7 + .../components/acl/CanViewNavGroup.tsx | 45 + app/layouts/components/acl/CanViewNavLink.tsx | 25 + .../components/acl/CanViewNavSectionTitle.tsx | 25 + .../components/horizontal/AppBarContent.tsx | 27 + .../horizontal/ServerSideNavItems.tsx | 25 + .../components/vertical/AppBarContent.tsx | 45 + .../vertical/ServerSideNavItems.tsx | 25 + app/login/components/login.tsx | 352 + app/login/page.tsx | 12 + app/register/page.tsx | 399 + next.config.js | 11 + next.config.mjs | 4 - package.json | 113 +- public/images/apple-touch-icon.png | Bin 0 -> 7715 bytes public/images/avatars/1.png | Bin 0 -> 4712 bytes public/images/favicon.png | Bin 0 -> 1568 bytes public/images/pages/401.png | Bin 0 -> 44961 bytes public/images/pages/404.png | Bin 0 -> 52457 bytes ...h-v2-forgot-password-illustration-dark.png | Bin 0 -> 76233 bytes ...-v2-forgot-password-illustration-light.png | Bin 0 -> 76622 bytes ...th-v2-login-illustration-bordered-dark.png | Bin 0 -> 47689 bytes ...h-v2-login-illustration-bordered-light.png | Bin 0 -> 47947 bytes .../pages/auth-v2-login-illustration-dark.png | Bin 0 -> 55661 bytes .../auth-v2-login-illustration-light.png | Bin 0 -> 53223 bytes public/images/pages/auth-v2-mask-dark.png | Bin 0 -> 1358 bytes public/images/pages/auth-v2-mask-light.png | Bin 0 -> 1284 bytes ...v2-register-illustration-bordered-dark.png | Bin 0 -> 73204 bytes ...2-register-illustration-bordered-light.png | Bin 0 -> 76574 bytes .../auth-v2-register-illustration-dark.png | Bin 0 -> 80165 bytes .../auth-v2-register-illustration-light.png | Bin 0 -> 80615 bytes public/images/pages/misc-mask-dark.png | Bin 0 -> 1637 bytes public/images/pages/misc-mask-light.png | Bin 0 -> 1606 bytes public/vercel.svg | 5 +- src/@core/components/auth/AclGuard.tsx | 62 + src/@core/components/auth/AuthGuard.tsx | 48 + src/@core/components/auth/GuestGuard.tsx | 38 + src/@core/components/card-snippet/index.tsx | 138 + src/@core/components/card-snippet/types.ts | 16 + .../index.tsx | 50 + .../card-stats-horizontal/index.tsx | 33 + .../card-stats-square/index.tsx | 32 + .../card-stats-vertical/index.tsx | 63 + .../card-stats-with-area-chart/index.tsx | 105 + src/@core/components/card-statistics/types.ts | 63 + .../custom-checkbox/basic/index.tsx | 94 + .../custom-checkbox/icons/index.tsx | 72 + .../custom-checkbox/image/index.tsx | 63 + src/@core/components/custom-checkbox/types.ts | 71 + .../components/custom-radio/basic/index.tsx | 95 + .../components/custom-radio/icons/index.tsx | 73 + .../components/custom-radio/image/index.tsx | 58 + src/@core/components/custom-radio/types.ts | 71 + src/@core/components/customizer/index.tsx | 401 + src/@core/components/icon/index.tsx | 8 + src/@core/components/mui/avatar/index.tsx | 57 + src/@core/components/mui/avatar/types.ts | 10 + src/@core/components/mui/badge/index.tsx | 34 + src/@core/components/mui/badge/types.ts | 4 + src/@core/components/mui/chip/index.tsx | 46 + src/@core/components/mui/chip/types.ts | 4 + .../components/mui/timeline-dot/index.tsx | 73 + .../components/mui/timeline-dot/types.ts | 12 + src/@core/components/option-menu/index.tsx | 116 + src/@core/components/option-menu/types.ts | 42 + src/@core/components/page-header/index.tsx | 19 + src/@core/components/page-header/types.ts | 6 + src/@core/components/plan-details/index.tsx | 121 + src/@core/components/plan-details/types.ts | 39 + .../components/react-apexcharts/index.tsx | 7 + .../components/react-draft-wysiwyg/index.tsx | 12 + src/@core/components/repeater/index.tsx | 22 + src/@core/components/repeater/types.ts | 8 + src/@core/components/scroll-to-top/index.tsx | 47 + src/@core/components/sidebar/index.tsx | 65 + src/@core/components/sidebar/type.ts | 12 + src/@core/components/spinner/index.tsx | 54 + src/@core/components/window-wrapper/index.tsx | 35 + src/@core/context/settingsContext.tsx | 155 + src/@core/hooks/useBgColor.tsx | 70 + src/@core/hooks/useClipboard.tsx | 65 + src/@core/hooks/useSettings.ts | 4 + src/@core/layouts/BlankLayout.tsx | 40 + src/@core/layouts/BlankLayoutWithAppBar.tsx | 54 + src/@core/layouts/HorizontalLayout.tsx | 195 + src/@core/layouts/Layout.tsx | 45 + src/@core/layouts/VerticalLayout.tsx | 141 + .../blank-layout-with-appBar/index.tsx | 92 + .../horizontal/app-bar-content/index.tsx | 89 + .../navigation/HorizontalNavGroup.tsx | 295 + .../navigation/HorizontalNavItems.tsx | 28 + .../navigation/HorizontalNavLink.tsx | 168 + .../horizontal/navigation/index.tsx | 38 + .../shared-components/LanguageDropdown.tsx | 70 + .../shared-components/ModeToggler.tsx | 39 + .../NotificationDropdown.tsx | 243 + .../shared-components/ShortcutsDropdown.tsx | 189 + .../shared-components/UserDropdown.tsx | 182 + .../footer/FooterContent.tsx | 44 + .../shared-components/footer/index.tsx | 83 + .../components/vertical/appBar/index.tsx | 110 + .../components/vertical/navigation/Drawer.tsx | 142 + .../vertical/navigation/VerticalNavGroup.tsx | 331 + .../vertical/navigation/VerticalNavHeader.tsx | 186 + .../vertical/navigation/VerticalNavItems.tsx | 44 + .../vertical/navigation/VerticalNavLink.tsx | 207 + .../navigation/VerticalNavSectionTitle.tsx | 78 + .../components/vertical/navigation/index.tsx | 187 + src/@core/layouts/types.ts | 111 + src/@core/layouts/utils.ts | 76 + src/@core/styles/libs/fullcalendar/index.ts | 438 + src/@core/styles/libs/keen-slider/index.ts | 114 + .../styles/libs/react-apexcharts/index.ts | 71 + src/@core/styles/libs/react-cleave/index.ts | 32 + .../styles/libs/react-credit-cards/index.ts | 11 + .../styles/libs/react-datepicker/index.ts | 482 + .../styles/libs/react-draft-wysiwyg/index.ts | 145 + src/@core/styles/libs/react-dropzone/index.ts | 76 + .../styles/libs/react-hot-toast/index.ts | 37 + src/@core/styles/libs/recharts/index.ts | 49 + src/@core/styles/mui/stepper.ts | 108 + src/@core/theme/ThemeComponent.tsx | 75 + src/@core/theme/ThemeOptions.ts | 76 + src/@core/theme/breakpoints/index.ts | 11 + src/@core/theme/globalStyles.ts | 61 + src/@core/theme/overrides/accordion.ts | 83 + src/@core/theme/overrides/alerts.ts | 170 + src/@core/theme/overrides/autocomplete.ts | 19 + src/@core/theme/overrides/avatars.ts | 38 + src/@core/theme/overrides/backdrop.ts | 25 + src/@core/theme/overrides/breadcrumbs.ts | 25 + src/@core/theme/overrides/button.ts | 56 + src/@core/theme/overrides/card.ts | 93 + src/@core/theme/overrides/checkbox.tsx | 92 + src/@core/theme/overrides/chip.ts | 90 + src/@core/theme/overrides/dataGrid.ts | 104 + src/@core/theme/overrides/dialog.ts | 55 + src/@core/theme/overrides/divider.ts | 29 + src/@core/theme/overrides/index.ts | 111 + src/@core/theme/overrides/input.ts | 68 + src/@core/theme/overrides/link.ts | 9 + src/@core/theme/overrides/list.ts | 44 + src/@core/theme/overrides/menu.ts | 56 + src/@core/theme/overrides/pagination.ts | 40 + src/@core/theme/overrides/paper.ts | 9 + src/@core/theme/overrides/popover.ts | 22 + src/@core/theme/overrides/progress.ts | 21 + src/@core/theme/overrides/radio.tsx | 82 + src/@core/theme/overrides/rating.ts | 19 + src/@core/theme/overrides/select.ts | 12 + src/@core/theme/overrides/slider.ts | 104 + src/@core/theme/overrides/snackbar.ts | 21 + src/@core/theme/overrides/switches.ts | 107 + src/@core/theme/overrides/table.ts | 69 + src/@core/theme/overrides/tabs.ts | 47 + src/@core/theme/overrides/timeline.ts | 83 + src/@core/theme/overrides/toggleButton.ts | 16 + src/@core/theme/overrides/tooltip.ts | 20 + src/@core/theme/overrides/typography.ts | 16 + src/@core/theme/palette/index.ts | 113 + src/@core/theme/shadows/index.ts | 63 + src/@core/theme/spacing/index.ts | 3 + src/@core/theme/types.ts | 30 + src/@core/theme/typography/index.ts | 53 + src/@core/utils/create-emotion-cache.ts | 5 + src/@core/utils/format.ts | 99 + src/@core/utils/get-daterange.ts | 7 + src/@core/utils/get-initials.ts | 3 + src/@core/utils/hex-to-rgba.ts | 16 + src/@core/utils/is-float.ts | 3 + src/@core/utils/rgba-to-hex.ts | 17 + src/@core/utils/types.ts | 21 + src/@fake-db/auth/jwt.ts | 168 + src/@fake-db/index.ts | 5 + src/@fake-db/mock.ts | 6 + src/configs/acl.ts | 46 + src/configs/auth.ts | 7 + src/configs/themeConfig.ts | 87 + src/context/AuthContext.tsx | 130 + src/context/types.ts | 33 + src/hooks/useAuth.tsx | 4 + src/iconify-bundle/bundle-icons-react.d.ts | 1 + src/iconify-bundle/bundle-icons-react.js | 243 + src/iconify-bundle/bundle-icons-react.ts | 287 + src/iconify-bundle/icons-bundle-react.js | 9687 +++++++++++++++++ src/iconify-bundle/svg/logo.svg | 1 + src/iconify-bundle/tsconfig.json | 15 + src/navigation/horizontal/index.ts | 24 + src/navigation/vertical/index.ts | 26 + .../pages/auth/AuthIllustrationV1Wrapper.tsx | 42 + .../pages/auth/FooterIllustrationsV2.tsx | 57 + src/views/pages/misc/FooterIllustrations.tsx | 48 + styles/globals.css | 24 + tsconfig.json | 26 +- yarn.lock | 5293 +++++++++ 209 files changed, 28786 insertions(+), 22 deletions(-) create mode 100644 app/401.tsx create mode 100644 app/404.tsx create mode 100644 app/500.tsx create mode 100644 app/_app.tsx create mode 100644 app/_document.tsx create mode 100644 app/acl/index.tsx create mode 100644 app/forgot-password/page.tsx create mode 100644 app/home/index.tsx create mode 100644 app/home/page.tsx create mode 100644 app/layouts/UserLayout.tsx create mode 100644 app/layouts/UserThemeOptions.ts create mode 100644 app/layouts/components/Direction.tsx create mode 100644 app/layouts/components/Translations.tsx create mode 100644 app/layouts/components/UserIcon.tsx create mode 100644 app/layouts/components/acl/Can.tsx create mode 100644 app/layouts/components/acl/CanViewNavGroup.tsx create mode 100644 app/layouts/components/acl/CanViewNavLink.tsx create mode 100644 app/layouts/components/acl/CanViewNavSectionTitle.tsx create mode 100644 app/layouts/components/horizontal/AppBarContent.tsx create mode 100644 app/layouts/components/horizontal/ServerSideNavItems.tsx create mode 100644 app/layouts/components/vertical/AppBarContent.tsx create mode 100644 app/layouts/components/vertical/ServerSideNavItems.tsx create mode 100644 app/login/components/login.tsx create mode 100644 app/login/page.tsx create mode 100644 app/register/page.tsx create mode 100644 next.config.js delete mode 100644 next.config.mjs create mode 100644 public/images/apple-touch-icon.png create mode 100644 public/images/avatars/1.png create mode 100644 public/images/favicon.png create mode 100644 public/images/pages/401.png create mode 100644 public/images/pages/404.png create mode 100644 public/images/pages/auth-v2-forgot-password-illustration-dark.png create mode 100644 public/images/pages/auth-v2-forgot-password-illustration-light.png create mode 100644 public/images/pages/auth-v2-login-illustration-bordered-dark.png create mode 100644 public/images/pages/auth-v2-login-illustration-bordered-light.png create mode 100644 public/images/pages/auth-v2-login-illustration-dark.png create mode 100644 public/images/pages/auth-v2-login-illustration-light.png create mode 100644 public/images/pages/auth-v2-mask-dark.png create mode 100644 public/images/pages/auth-v2-mask-light.png create mode 100644 public/images/pages/auth-v2-register-illustration-bordered-dark.png create mode 100644 public/images/pages/auth-v2-register-illustration-bordered-light.png create mode 100644 public/images/pages/auth-v2-register-illustration-dark.png create mode 100644 public/images/pages/auth-v2-register-illustration-light.png create mode 100644 public/images/pages/misc-mask-dark.png create mode 100644 public/images/pages/misc-mask-light.png create mode 100644 src/@core/components/auth/AclGuard.tsx create mode 100644 src/@core/components/auth/AuthGuard.tsx create mode 100644 src/@core/components/auth/GuestGuard.tsx create mode 100644 src/@core/components/card-snippet/index.tsx create mode 100644 src/@core/components/card-snippet/types.ts create mode 100644 src/@core/components/card-statistics/card-stats-horizontal-with-details/index.tsx create mode 100644 src/@core/components/card-statistics/card-stats-horizontal/index.tsx create mode 100644 src/@core/components/card-statistics/card-stats-square/index.tsx create mode 100644 src/@core/components/card-statistics/card-stats-vertical/index.tsx create mode 100644 src/@core/components/card-statistics/card-stats-with-area-chart/index.tsx create mode 100644 src/@core/components/card-statistics/types.ts create mode 100644 src/@core/components/custom-checkbox/basic/index.tsx create mode 100644 src/@core/components/custom-checkbox/icons/index.tsx create mode 100644 src/@core/components/custom-checkbox/image/index.tsx create mode 100644 src/@core/components/custom-checkbox/types.ts create mode 100644 src/@core/components/custom-radio/basic/index.tsx create mode 100644 src/@core/components/custom-radio/icons/index.tsx create mode 100644 src/@core/components/custom-radio/image/index.tsx create mode 100644 src/@core/components/custom-radio/types.ts create mode 100644 src/@core/components/customizer/index.tsx create mode 100644 src/@core/components/icon/index.tsx create mode 100644 src/@core/components/mui/avatar/index.tsx create mode 100644 src/@core/components/mui/avatar/types.ts create mode 100644 src/@core/components/mui/badge/index.tsx create mode 100644 src/@core/components/mui/badge/types.ts create mode 100644 src/@core/components/mui/chip/index.tsx create mode 100644 src/@core/components/mui/chip/types.ts create mode 100644 src/@core/components/mui/timeline-dot/index.tsx create mode 100644 src/@core/components/mui/timeline-dot/types.ts create mode 100644 src/@core/components/option-menu/index.tsx create mode 100644 src/@core/components/option-menu/types.ts create mode 100644 src/@core/components/page-header/index.tsx create mode 100644 src/@core/components/page-header/types.ts create mode 100644 src/@core/components/plan-details/index.tsx create mode 100644 src/@core/components/plan-details/types.ts create mode 100644 src/@core/components/react-apexcharts/index.tsx create mode 100644 src/@core/components/react-draft-wysiwyg/index.tsx create mode 100644 src/@core/components/repeater/index.tsx create mode 100644 src/@core/components/repeater/types.ts create mode 100644 src/@core/components/scroll-to-top/index.tsx create mode 100644 src/@core/components/sidebar/index.tsx create mode 100644 src/@core/components/sidebar/type.ts create mode 100644 src/@core/components/spinner/index.tsx create mode 100644 src/@core/components/window-wrapper/index.tsx create mode 100644 src/@core/context/settingsContext.tsx create mode 100644 src/@core/hooks/useBgColor.tsx create mode 100644 src/@core/hooks/useClipboard.tsx create mode 100644 src/@core/hooks/useSettings.ts create mode 100644 src/@core/layouts/BlankLayout.tsx create mode 100644 src/@core/layouts/BlankLayoutWithAppBar.tsx create mode 100644 src/@core/layouts/HorizontalLayout.tsx create mode 100644 src/@core/layouts/Layout.tsx create mode 100644 src/@core/layouts/VerticalLayout.tsx create mode 100644 src/@core/layouts/components/blank-layout-with-appBar/index.tsx create mode 100644 src/@core/layouts/components/horizontal/app-bar-content/index.tsx create mode 100644 src/@core/layouts/components/horizontal/navigation/HorizontalNavGroup.tsx create mode 100644 src/@core/layouts/components/horizontal/navigation/HorizontalNavItems.tsx create mode 100644 src/@core/layouts/components/horizontal/navigation/HorizontalNavLink.tsx create mode 100644 src/@core/layouts/components/horizontal/navigation/index.tsx create mode 100644 src/@core/layouts/components/shared-components/LanguageDropdown.tsx create mode 100644 src/@core/layouts/components/shared-components/ModeToggler.tsx create mode 100644 src/@core/layouts/components/shared-components/NotificationDropdown.tsx create mode 100644 src/@core/layouts/components/shared-components/ShortcutsDropdown.tsx create mode 100644 src/@core/layouts/components/shared-components/UserDropdown.tsx create mode 100644 src/@core/layouts/components/shared-components/footer/FooterContent.tsx create mode 100644 src/@core/layouts/components/shared-components/footer/index.tsx create mode 100644 src/@core/layouts/components/vertical/appBar/index.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/Drawer.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/VerticalNavGroup.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/VerticalNavHeader.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/VerticalNavItems.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/VerticalNavLink.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/VerticalNavSectionTitle.tsx create mode 100644 src/@core/layouts/components/vertical/navigation/index.tsx create mode 100644 src/@core/layouts/types.ts create mode 100644 src/@core/layouts/utils.ts create mode 100644 src/@core/styles/libs/fullcalendar/index.ts create mode 100644 src/@core/styles/libs/keen-slider/index.ts create mode 100644 src/@core/styles/libs/react-apexcharts/index.ts create mode 100644 src/@core/styles/libs/react-cleave/index.ts create mode 100644 src/@core/styles/libs/react-credit-cards/index.ts create mode 100644 src/@core/styles/libs/react-datepicker/index.ts create mode 100644 src/@core/styles/libs/react-draft-wysiwyg/index.ts create mode 100644 src/@core/styles/libs/react-dropzone/index.ts create mode 100644 src/@core/styles/libs/react-hot-toast/index.ts create mode 100644 src/@core/styles/libs/recharts/index.ts create mode 100644 src/@core/styles/mui/stepper.ts create mode 100644 src/@core/theme/ThemeComponent.tsx create mode 100644 src/@core/theme/ThemeOptions.ts create mode 100644 src/@core/theme/breakpoints/index.ts create mode 100644 src/@core/theme/globalStyles.ts create mode 100644 src/@core/theme/overrides/accordion.ts create mode 100644 src/@core/theme/overrides/alerts.ts create mode 100644 src/@core/theme/overrides/autocomplete.ts create mode 100644 src/@core/theme/overrides/avatars.ts create mode 100644 src/@core/theme/overrides/backdrop.ts create mode 100644 src/@core/theme/overrides/breadcrumbs.ts create mode 100644 src/@core/theme/overrides/button.ts create mode 100644 src/@core/theme/overrides/card.ts create mode 100644 src/@core/theme/overrides/checkbox.tsx create mode 100644 src/@core/theme/overrides/chip.ts create mode 100644 src/@core/theme/overrides/dataGrid.ts create mode 100644 src/@core/theme/overrides/dialog.ts create mode 100644 src/@core/theme/overrides/divider.ts create mode 100644 src/@core/theme/overrides/index.ts create mode 100644 src/@core/theme/overrides/input.ts create mode 100644 src/@core/theme/overrides/link.ts create mode 100644 src/@core/theme/overrides/list.ts create mode 100644 src/@core/theme/overrides/menu.ts create mode 100644 src/@core/theme/overrides/pagination.ts create mode 100644 src/@core/theme/overrides/paper.ts create mode 100644 src/@core/theme/overrides/popover.ts create mode 100644 src/@core/theme/overrides/progress.ts create mode 100644 src/@core/theme/overrides/radio.tsx create mode 100644 src/@core/theme/overrides/rating.ts create mode 100644 src/@core/theme/overrides/select.ts create mode 100644 src/@core/theme/overrides/slider.ts create mode 100644 src/@core/theme/overrides/snackbar.ts create mode 100644 src/@core/theme/overrides/switches.ts create mode 100644 src/@core/theme/overrides/table.ts create mode 100644 src/@core/theme/overrides/tabs.ts create mode 100644 src/@core/theme/overrides/timeline.ts create mode 100644 src/@core/theme/overrides/toggleButton.ts create mode 100644 src/@core/theme/overrides/tooltip.ts create mode 100644 src/@core/theme/overrides/typography.ts create mode 100644 src/@core/theme/palette/index.ts create mode 100644 src/@core/theme/shadows/index.ts create mode 100644 src/@core/theme/spacing/index.ts create mode 100644 src/@core/theme/types.ts create mode 100644 src/@core/theme/typography/index.ts create mode 100644 src/@core/utils/create-emotion-cache.ts create mode 100644 src/@core/utils/format.ts create mode 100644 src/@core/utils/get-daterange.ts create mode 100644 src/@core/utils/get-initials.ts create mode 100644 src/@core/utils/hex-to-rgba.ts create mode 100644 src/@core/utils/is-float.ts create mode 100644 src/@core/utils/rgba-to-hex.ts create mode 100644 src/@core/utils/types.ts create mode 100644 src/@fake-db/auth/jwt.ts create mode 100644 src/@fake-db/index.ts create mode 100644 src/@fake-db/mock.ts create mode 100644 src/configs/acl.ts create mode 100644 src/configs/auth.ts create mode 100644 src/configs/themeConfig.ts create mode 100644 src/context/AuthContext.tsx create mode 100644 src/context/types.ts create mode 100644 src/hooks/useAuth.tsx create mode 100644 src/iconify-bundle/bundle-icons-react.d.ts create mode 100644 src/iconify-bundle/bundle-icons-react.js create mode 100644 src/iconify-bundle/bundle-icons-react.ts create mode 100644 src/iconify-bundle/icons-bundle-react.js create mode 100644 src/iconify-bundle/svg/logo.svg create mode 100644 src/iconify-bundle/tsconfig.json create mode 100644 src/navigation/horizontal/index.ts create mode 100644 src/navigation/vertical/index.ts create mode 100644 src/views/pages/auth/AuthIllustrationV1Wrapper.tsx create mode 100644 src/views/pages/auth/FooterIllustrationsV2.tsx create mode 100644 src/views/pages/misc/FooterIllustrations.tsx create mode 100644 styles/globals.css create mode 100644 yarn.lock diff --git a/app/401.tsx b/app/401.tsx new file mode 100644 index 0000000..eabf2dd --- /dev/null +++ b/app/401.tsx @@ -0,0 +1,64 @@ +// ** React Imports +import { ReactNode } from 'react' + +// ** Next Import +import Link from 'next/link' + +// ** MUI Components +import Button from '@mui/material/Button' +import { styled } from '@mui/material/styles' +import Typography from '@mui/material/Typography' +import Box, { BoxProps } from '@mui/material/Box' + +// ** Layout Import +import BlankLayout from 'src/@core/layouts/BlankLayout' + +// ** Demo Imports +import FooterIllustrations from 'src/views/pages/misc/FooterIllustrations' + +// ** Styled Components +const BoxWrapper = styled(Box)(({ theme }) => ({ + [theme.breakpoints.down('md')]: { + width: '90vw' + } +})) + +const Img = styled('img')(({ theme }) => ({ + [theme.breakpoints.down('lg')]: { + height: 450, + marginTop: theme.spacing(10) + }, + [theme.breakpoints.down('md')]: { + height: 400 + }, + [theme.breakpoints.up('lg')]: { + marginTop: theme.spacing(20) + } +})) + +const Error401 = () => { + return ( + + + + + You are not authorized! + + + You do not have permission to view this page using the credentials that you have provided while login. + + Please contact your site administrator. + + + error-illustration + + + + ) +} + +Error401.getLayout = (page: ReactNode) => {page} + +export default Error401 diff --git a/app/404.tsx b/app/404.tsx new file mode 100644 index 0000000..4230d20 --- /dev/null +++ b/app/404.tsx @@ -0,0 +1,63 @@ +// ** React Imports +import { ReactNode } from 'react' + +// ** Next Import +import Link from 'next/link' + +// ** MUI Components +import Button from '@mui/material/Button' +import { styled } from '@mui/material/styles' +import Typography from '@mui/material/Typography' +import Box, { BoxProps } from '@mui/material/Box' + +// ** Layout Import +import BlankLayout from 'src/@core/layouts/BlankLayout' + +// ** Demo Imports +import FooterIllustrations from 'src/views/pages/misc/FooterIllustrations' + +// ** Styled Components +const BoxWrapper = styled(Box)(({ theme }) => ({ + [theme.breakpoints.down('md')]: { + width: '90vw' + } +})) + +const Img = styled('img')(({ theme }) => ({ + [theme.breakpoints.down('lg')]: { + height: 450, + marginTop: theme.spacing(10) + }, + [theme.breakpoints.down('md')]: { + height: 400 + }, + [theme.breakpoints.up('lg')]: { + marginTop: theme.spacing(20) + } +})) + +const Error404 = () => { + return ( + + + + + Page Not Found :( + + + Oops! 😖 The requested URL was not found on this server. + + + + error-illustration + + + + ) +} + +Error404.getLayout = (page: ReactNode) => {page} + +export default Error404 diff --git a/app/500.tsx b/app/500.tsx new file mode 100644 index 0000000..f9d3382 --- /dev/null +++ b/app/500.tsx @@ -0,0 +1,63 @@ +// ** React Imports +import { ReactNode } from 'react' + +// ** Next Import +import Link from 'next/link' + +// ** MUI Components +import Button from '@mui/material/Button' +import { styled } from '@mui/material/styles' +import Typography from '@mui/material/Typography' +import Box, { BoxProps } from '@mui/material/Box' + +// ** Layout Import +import BlankLayout from 'src/@core/layouts/BlankLayout' + +// ** Demo Imports +import FooterIllustrations from 'src/views/pages/misc/FooterIllustrations' + +// ** Styled Components +const BoxWrapper = styled(Box)(({ theme }) => ({ + [theme.breakpoints.down('md')]: { + width: '90vw' + } +})) + +const Img = styled('img')(({ theme }) => ({ + [theme.breakpoints.down('lg')]: { + height: 450, + marginTop: theme.spacing(10) + }, + [theme.breakpoints.down('md')]: { + height: 400 + }, + [theme.breakpoints.up('lg')]: { + marginTop: theme.spacing(20) + } +})) + +const Error500 = () => { + return ( + + + + + Oops, something went wrong! + + + There was an error with the internal server. Please contact your site administrator. + + + + error-illustration + + + + ) +} + +Error500.getLayout = (page: ReactNode) => {page} + +export default Error500 diff --git a/app/_app.tsx b/app/_app.tsx new file mode 100644 index 0000000..85bd51d --- /dev/null +++ b/app/_app.tsx @@ -0,0 +1,161 @@ +// ** React Imports +import { ReactNode } from 'react' + +// ** Next Imports +import Head from 'next/head' +import { Router } from 'next/router' +import type { NextPage } from 'next' +import type { AppProps } from 'next/app' + + + + + +// ** Loader Import +import NProgress from 'nprogress' + +// ** Emotion Imports +import { CacheProvider } from '@emotion/react' +import type { EmotionCache } from '@emotion/cache' + +// ** Config Imports + +import { defaultACLObj } from 'src/configs/acl' +import themeConfig from 'src/configs/themeConfig' + +// ** Fake-DB Import +import 'src/@fake-db' + +// ** Third Party Import +import { Toaster } from 'react-hot-toast' + +// ** Component Imports +import UserLayout from 'src/layouts/UserLayout' +import AclGuard from 'src/@core/components/auth/AclGuard' +import ThemeComponent from 'src/@core/theme/ThemeComponent' +import AuthGuard from 'src/@core/components/auth/AuthGuard' +import GuestGuard from 'src/@core/components/auth/GuestGuard' +import WindowWrapper from 'src/@core/components/window-wrapper' + +// ** Spinner Import +import Spinner from 'src/@core/components/spinner' + +// ** Contexts +import { AuthProvider } from 'src/context/AuthContext' +import { SettingsConsumer, SettingsProvider } from 'src/@core/context/settingsContext' + +// ** Styled Components +import ReactHotToast from 'src/@core/styles/libs/react-hot-toast' + +// ** Utils Imports +import { createEmotionCache } from 'src/@core/utils/create-emotion-cache' + +// ** Prismjs Styles +import 'prismjs' +import 'prismjs/themes/prism-tomorrow.css' +import 'prismjs/components/prism-jsx' +import 'prismjs/components/prism-tsx' + +// ** React Perfect Scrollbar Style +import 'react-perfect-scrollbar/dist/css/styles.css' + +import 'src/iconify-bundle/icons-bundle-react' + +// ** Global css styles +import '../../styles/globals.css' + +// ** Extend App Props with Emotion +type ExtendedAppProps = AppProps & { + Component: NextPage + emotionCache: EmotionCache +} + +type GuardProps = { + authGuard: boolean + guestGuard: boolean + children: ReactNode +} + +const clientSideEmotionCache = createEmotionCache() + +// ** Pace Loader +if (themeConfig.routingLoader) { + Router.events.on('routeChangeStart', () => { + NProgress.start() + }) + Router.events.on('routeChangeError', () => { + NProgress.done() + }) + Router.events.on('routeChangeComplete', () => { + NProgress.done() + }) +} + +const Guard = ({ children, authGuard, guestGuard }: GuardProps) => { + if (guestGuard) { + return }>{children} + } else if (!guestGuard && !authGuard) { + return <>{children} + } else { + return }>{children} + } +} + +// ** Configure JSS & ClassName +const App = (props: ExtendedAppProps) => { + const { Component, emotionCache = clientSideEmotionCache, pageProps } = props + + // Variables + const contentHeightFixed = Component.contentHeightFixed ?? false + const getLayout = + Component.getLayout ?? (page => {page}) + + const setConfig = Component.setConfig ?? undefined + + const authGuard = Component.authGuard ?? true + + const guestGuard = Component.guestGuard ?? false + + const aclAbilities = Component.acl ?? defaultACLObj + + return ( + + + + {`${themeConfig.templateName} - Material Design React Admin Template`} + + + + + + + + + {({ settings }) => { + return ( + + + + + {getLayout()} + + + + + + + + ) + }} + + + + + + ) +} + +export default App diff --git a/app/_document.tsx b/app/_document.tsx new file mode 100644 index 0000000..905edf0 --- /dev/null +++ b/app/_document.tsx @@ -0,0 +1,70 @@ +// ** React Import +import { Children } from 'react' + +// ** Next Import +import Document, { Html, Head, Main, NextScript } from 'next/document' + +// ** Emotion Imports +import createEmotionServer from '@emotion/server/create-instance' + +// ** Utils Imports +import { createEmotionCache } from 'src/@core/utils/create-emotion-cache' + +class CustomDocument extends Document { + render() { + return ( + + + + + + + + + +
+ + + + ) + } +} + +CustomDocument.getInitialProps = async ctx => { + const originalRenderPage = ctx.renderPage + const cache = createEmotionCache() + const { extractCriticalToChunks } = createEmotionServer(cache) + + ctx.renderPage = () => + originalRenderPage({ + enhanceApp: App => props => + ( + + ) + }) + + const initialProps = await Document.getInitialProps(ctx) + const emotionStyles = extractCriticalToChunks(initialProps.html) + const emotionStyleTags = emotionStyles.styles.map(style => { + return ( +