maa3520 1 rok temu
rodzic
commit
ce2c1a35db

+ 2 - 0
.env.example

@@ -21,6 +21,8 @@ GOOGLE_CLIENT_SECRET=
 # -----------------------------------------------------------------------------
 DATABASE_URL=
 
+
+
 # -----------------------------------------------------------------------------
 # API
 # -----------------------------------------------------------------------------

+ 1396 - 0
README.md

@@ -32,3 +32,1399 @@ You can check out [the Next.js GitHub repository](https://github.com/vercel/next
 The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
 
 Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
+
+```
+jinic
+├─ .editorconfig
+├─ .eslintrc.js
+├─ .git
+│  ├─ COMMIT_EDITMSG
+│  ├─ config
+│  ├─ description
+│  ├─ FETCH_HEAD
+│  ├─ HEAD
+│  ├─ hooks
+│  │  ├─ applypatch-msg.sample
+│  │  ├─ commit-msg.sample
+│  │  ├─ fsmonitor-watchman.sample
+│  │  ├─ post-update.sample
+│  │  ├─ pre-applypatch.sample
+│  │  ├─ pre-commit.sample
+│  │  ├─ pre-merge-commit.sample
+│  │  ├─ pre-push.sample
+│  │  ├─ pre-rebase.sample
+│  │  ├─ pre-receive.sample
+│  │  ├─ prepare-commit-msg.sample
+│  │  ├─ push-to-checkout.sample
+│  │  └─ update.sample
+│  ├─ index
+│  ├─ info
+│  │  └─ exclude
+│  ├─ logs
+│  │  ├─ HEAD
+│  │  └─ refs
+│  │     └─ heads
+│  │        └─ master
+│  ├─ objects
+│  │  ├─ 00
+│  │  │  ├─ 00c9dfdaed273b759338ca01fccd3f86fef4e3
+│  │  │  └─ ca8b29f3766eeee8aca212a969f9109bdf0750
+│  │  ├─ 01
+│  │  │  ├─ 3311df25fbc13030bc224e4e88df0903b42ed8
+│  │  │  ├─ 43cf2de008b5ff50c9666ca1dad6deefed0119
+│  │  │  ├─ 4c2434c93077214993b7a0ea1a9a59f899fd45
+│  │  │  ├─ 6403746eae026dde8521e445f55c8d3476b0c6
+│  │  │  ├─ 6775353b8a44fea3f891290cee79919fed0b01
+│  │  │  ├─ 6b4f1af0c54e9605d7f8c3a5d09b96c38c3d95
+│  │  │  ├─ b6a70d9d0b5fdd37c69ce74580da663536af38
+│  │  │  ├─ db39a37c2b7594763376a6bdfb540c076ac334
+│  │  │  └─ ef9e70e6b8d77fd11c5d08b35c11122beb6c70
+│  │  ├─ 02 以下省略
+│  │  ├─ info
+│  │  └─ pack
+│  └─ refs
+│     ├─ heads
+│     │  └─ master
+│     └─ tags
+├─ .gitignore
+├─ .npmrc
+├─ .prettierrc.json
+├─ .stylelintrc.json
+├─ .vscode
+│  ├─ custom.code-snippets
+│  ├─ extensions.json
+│  └─ settings.json
+├─ jsconfig.json
+├─ next.config.js
+├─ package.json
+├─ pnpm-lock.yaml
+├─ postcss.config.js
+├─ public
+│  ├─ images
+│  │  ├─ avatars
+│  │  │  ├─ 1.png
+│  │  │  ├─ 10.png
+│  │  │  ├─ 2.png
+│  │  │  ├─ 3.png
+│  │  │  ├─ 4.png
+│  │  │  ├─ 5.png
+│  │  │  ├─ 6.png
+│  │  │  ├─ 7.png
+│  │  │  ├─ 8.png
+│  │  │  └─ 9.png
+│  │  ├─ cards
+│  │  │  ├─ 1.png
+│  │  │  ├─ 2.png
+│  │  │  ├─ 3.png
+│  │  │  ├─ 4.png
+│  │  │  ├─ 5.png
+│  │  │  ├─ amazon-echo-dot.png
+│  │  │  ├─ apple-iPhone-13.png
+│  │  │  ├─ apple-watch-series-7.png
+│  │  │  ├─ australia.png
+│  │  │  ├─ beats-studio-2.png
+│  │  │  ├─ brazil.png
+│  │  │  ├─ china.png
+│  │  │  ├─ france.png
+│  │  │  ├─ graphic-illustration-1.png
+│  │  │  ├─ graphic-illustration-2.png
+│  │  │  ├─ graphic-illustration-3.png
+│  │  │  ├─ india.png
+│  │  │  ├─ iPhone-11-pro.png
+│  │  │  ├─ nike-air-jordan.png
+│  │  │  ├─ play-station-console.png
+│  │  │  └─ us.png
+│  │  ├─ icons
+│  │  │  ├─ mobile-bg.png
+│  │  │  ├─ pdf-document.png
+│  │  │  ├─ social-bg.png
+│  │  │  └─ support-bg.png
+│  │  ├─ illustrations
+│  │  │  ├─ auth
+│  │  │  │  ├─ v2-forgot-password-dark.png
+│  │  │  │  ├─ v2-forgot-password-light.png
+│  │  │  │  ├─ v2-login-dark-border.png
+│  │  │  │  ├─ v2-login-dark.png
+│  │  │  │  ├─ v2-login-light-border.png
+│  │  │  │  ├─ v2-login-light.png
+│  │  │  │  ├─ v2-register-dark-border.png
+│  │  │  │  ├─ v2-register-dark.png
+│  │  │  │  ├─ v2-register-light-border.png
+│  │  │  │  ├─ v2-register-light.png
+│  │  │  │  ├─ v2-reset-password-dark.png
+│  │  │  │  ├─ v2-reset-password-light.png
+│  │  │  │  ├─ v2-two-steps-dark.png
+│  │  │  │  ├─ v2-two-steps-light.png
+│  │  │  │  ├─ v2-verify-email-dark.png
+│  │  │  │  └─ v2-verify-email-light.png
+│  │  │  ├─ characters
+│  │  │  │  ├─ 1.png
+│  │  │  │  ├─ 2.png
+│  │  │  │  ├─ 3.png
+│  │  │  │  ├─ 4.png
+│  │  │  │  ├─ 5.png
+│  │  │  │  ├─ 6.png
+│  │  │  │  ├─ 7.png
+│  │  │  │  └─ 8.png
+│  │  │  ├─ characters-with-objects
+│  │  │  │  ├─ 1.png
+│  │  │  │  └─ 2.png
+│  │  │  └─ objects
+│  │  │     ├─ pricing-basic.png
+│  │  │     ├─ pricing-enterprise.png
+│  │  │     └─ pricing-standard.png
+│  │  ├─ logos
+│  │  │  ├─ american-express.png
+│  │  │  ├─ angular.png
+│  │  │  ├─ asana.png
+│  │  │  ├─ aws.png
+│  │  │  ├─ behance.png
+│  │  │  ├─ bootstrap.png
+│  │  │  ├─ brave.png
+│  │  │  ├─ chrome.png
+│  │  │  ├─ dinners-club.png
+│  │  │  ├─ dribbble.png
+│  │  │  ├─ event-bg.png
+│  │  │  ├─ facebook.png
+│  │  │  ├─ figma-bg.png
+│  │  │  ├─ figma.png
+│  │  │  ├─ firebase.png
+│  │  │  ├─ github.png
+│  │  │  ├─ google-chrome.png
+│  │  │  ├─ google.png
+│  │  │  ├─ html-bg.png
+│  │  │  ├─ internet-explorer.png
+│  │  │  ├─ jcb.png
+│  │  │  ├─ laravel.png
+│  │  │  ├─ linkedin.png
+│  │  │  ├─ mailchimp.png
+│  │  │  ├─ mastercard.png
+│  │  │  ├─ mozilla-firefox.png
+│  │  │  ├─ opera-mini.png
+│  │  │  ├─ python-bg.png
+│  │  │  ├─ react-bg.png
+│  │  │  ├─ react.png
+│  │  │  ├─ safari.png
+│  │  │  ├─ sketch-bg.png
+│  │  │  ├─ sketch.png
+│  │  │  ├─ slack.png
+│  │  │  ├─ twitter-bg.png
+│  │  │  ├─ twitter.png
+│  │  │  ├─ visa.png
+│  │  │  ├─ vue-bg.png
+│  │  │  ├─ vue.png
+│  │  │  └─ xd-bg.png
+│  │  ├─ misc
+│  │  │  └─ barcode.png
+│  │  └─ pages
+│  │     ├─ auth-mask-dark.png
+│  │     ├─ auth-mask-light.png
+│  │     ├─ auth-reg-multi-mask-dark.png
+│  │     ├─ auth-reg-multi-mask-light.png
+│  │     ├─ create-deal-type-dark.png
+│  │     ├─ create-deal-type-light.png
+│  │     ├─ faq-header.png
+│  │     ├─ google-home.png
+│  │     ├─ iPhone-11.png
+│  │     ├─ misc-mask-dark.png
+│  │     ├─ misc-mask-light.png
+│  │     └─ profile-banner.png
+│  ├─ next.svg
+│  └─ vercel.svg
+├─ README.md
+├─ src
+│  ├─ @core
+│  │  ├─ components
+│  │  │  ├─ custom-inputs
+│  │  │  │  ├─ Horizontal.jsx
+│  │  │  │  ├─ Image.jsx
+│  │  │  │  └─ Vertical.jsx
+│  │  │  ├─ customizer
+│  │  │  │  ├─ index.jsx
+│  │  │  │  └─ styles.module.css
+│  │  │  ├─ mui
+│  │  │  │  ├─ Autocomplete.jsx
+│  │  │  │  ├─ Avatar.jsx
+│  │  │  │  ├─ Badge.jsx
+│  │  │  │  ├─ Chip.jsx
+│  │  │  │  ├─ TabList.jsx
+│  │  │  │  └─ TextField.jsx
+│  │  │  ├─ option-menu
+│  │  │  │  └─ index.jsx
+│  │  │  └─ scroll-to-top
+│  │  │     └─ index.jsx
+│  │  ├─ contexts
+│  │  │  └─ settingsContext.jsx
+│  │  ├─ hooks
+│  │  │  ├─ useImageVariant.js
+│  │  │  ├─ useLayoutInit.js
+│  │  │  ├─ useObjectCookie.js
+│  │  │  └─ useSettings.jsx
+│  │  ├─ styles
+│  │  │  ├─ horizontal
+│  │  │  │  ├─ menuItemStyles.js
+│  │  │  │  └─ menuRootStyles.js
+│  │  │  ├─ stepper.js
+│  │  │  ├─ table.module.css
+│  │  │  └─ vertical
+│  │  │     ├─ menuItemStyles.js
+│  │  │     ├─ menuSectionStyles.js
+│  │  │     └─ navigationCustomStyles.js
+│  │  ├─ svg
+│  │  │  ├─ ContentCompact.jsx
+│  │  │  ├─ ContentWide.jsx
+│  │  │  ├─ DirectionLtr.jsx
+│  │  │  ├─ DirectionRtl.jsx
+│  │  │  ├─ LayoutCollapsed.jsx
+│  │  │  ├─ LayoutHorizontal.jsx
+│  │  │  ├─ LayoutVertical.jsx
+│  │  │  ├─ Logo.jsx
+│  │  │  ├─ SkinBordered.jsx
+│  │  │  └─ SkinDefault.jsx
+│  │  ├─ tailwind
+│  │  │  └─ plugin.js
+│  │  ├─ theme
+│  │  │  ├─ colorSchemes.js
+│  │  │  ├─ customShadows.js
+│  │  │  ├─ index.js
+│  │  │  ├─ overrides
+│  │  │  │  ├─ accordion.jsx
+│  │  │  │  ├─ alert.jsx
+│  │  │  │  ├─ autocomplete.jsx
+│  │  │  │  ├─ avatar.js
+│  │  │  │  ├─ backdrop.js
+│  │  │  │  ├─ badges.js
+│  │  │  │  ├─ breadcrumbs.js
+│  │  │  │  ├─ button-group.js
+│  │  │  │  ├─ button.js
+│  │  │  │  ├─ card.js
+│  │  │  │  ├─ checkbox.jsx
+│  │  │  │  ├─ chip.js
+│  │  │  │  ├─ dialog.js
+│  │  │  │  ├─ drawer.js
+│  │  │  │  ├─ fab.js
+│  │  │  │  ├─ form-control-label.js
+│  │  │  │  ├─ icon-button.js
+│  │  │  │  ├─ index.js
+│  │  │  │  ├─ input.js
+│  │  │  │  ├─ list.js
+│  │  │  │  ├─ menu.js
+│  │  │  │  ├─ pagination.js
+│  │  │  │  ├─ paper.js
+│  │  │  │  ├─ popover.js
+│  │  │  │  ├─ progress.js
+│  │  │  │  ├─ radio.jsx
+│  │  │  │  ├─ rating.jsx
+│  │  │  │  ├─ select.jsx
+│  │  │  │  ├─ slider.js
+│  │  │  │  ├─ snackbar.js
+│  │  │  │  ├─ switch.js
+│  │  │  │  ├─ table-pagination.js
+│  │  │  │  ├─ tabs.js
+│  │  │  │  ├─ timeline.js
+│  │  │  │  ├─ toggle-button.js
+│  │  │  │  ├─ tooltip.js
+│  │  │  │  └─ typography.js
+│  │  │  ├─ shadows.js
+│  │  │  ├─ spacing.js
+│  │  │  └─ typography.js
+│  │  └─ utils
+│  │     └─ serverHelpers.js
+│  ├─ @layouts
+│  │  ├─ BlankLayout.jsx
+│  │  ├─ components
+│  │  │  ├─ horizontal
+│  │  │  │  ├─ Footer.jsx
+│  │  │  │  ├─ Header.jsx
+│  │  │  │  ├─ LayoutContent.jsx
+│  │  │  │  └─ Navbar.jsx
+│  │  │  └─ vertical
+│  │  │     ├─ Footer.jsx
+│  │  │     ├─ LayoutContent.jsx
+│  │  │     └─ Navbar.jsx
+│  │  ├─ HorizontalLayout.jsx
+│  │  ├─ LayoutWrapper.jsx
+│  │  ├─ styles
+│  │  │  ├─ horizontal
+│  │  │  │  ├─ StyledFooter.jsx
+│  │  │  │  └─ StyledHeader.jsx
+│  │  │  ├─ shared
+│  │  │  │  └─ StyledMain.jsx
+│  │  │  └─ vertical
+│  │  │     ├─ StyledFooter.jsx
+│  │  │     └─ StyledHeader.jsx
+│  │  ├─ utils
+│  │  │  └─ layoutClasses.js
+│  │  └─ VerticalLayout.jsx
+│  ├─ @menu
+│  │  ├─ components
+│  │  │  ├─ horizontal-menu
+│  │  │  │  ├─ HorizontalNav.jsx
+│  │  │  │  ├─ Menu.jsx
+│  │  │  │  ├─ MenuButton.jsx
+│  │  │  │  ├─ MenuItem.jsx
+│  │  │  │  ├─ SubMenu.jsx
+│  │  │  │  ├─ SubMenuContent.jsx
+│  │  │  │  └─ VerticalNavInHorizontal.jsx
+│  │  │  ├─ RouterLink.jsx
+│  │  │  └─ vertical-menu
+│  │  │     ├─ Menu.jsx
+│  │  │     ├─ MenuButton.jsx
+│  │  │     ├─ MenuItem.jsx
+│  │  │     ├─ MenuSection.jsx
+│  │  │     ├─ NavCollapseIcons.jsx
+│  │  │     ├─ NavHeader.jsx
+│  │  │     ├─ SubMenu.jsx
+│  │  │     ├─ SubMenuContent.jsx
+│  │  │     └─ VerticalNav.jsx
+│  │  ├─ contexts
+│  │  │  ├─ horizontalNavContext.jsx
+│  │  │  └─ verticalNavContext.jsx
+│  │  ├─ defaultConfigs.js
+│  │  ├─ hooks
+│  │  │  ├─ useHorizontalMenu.jsx
+│  │  │  ├─ useHorizontalNav.jsx
+│  │  │  ├─ useMediaQuery.jsx
+│  │  │  ├─ useVerticalMenu.jsx
+│  │  │  └─ useVerticalNav.jsx
+│  │  ├─ horizontal-menu
+│  │  │  └─ index.jsx
+│  │  ├─ styles
+│  │  │  ├─ horizontal
+│  │  │  │  ├─ horizontalUl.module.css
+│  │  │  │  ├─ StyledHorizontalMenu.jsx
+│  │  │  │  ├─ StyledHorizontalMenuItem.jsx
+│  │  │  │  ├─ StyledHorizontalNav.jsx
+│  │  │  │  ├─ StyledHorizontalNavExpandIcon.jsx
+│  │  │  │  ├─ StyledHorizontalSubMenuContent.jsx
+│  │  │  │  └─ StyledHorizontalSubMenuContentWrapper.jsx
+│  │  │  ├─ StyledBackdrop.jsx
+│  │  │  ├─ StyledMenuIcon.jsx
+│  │  │  ├─ StyledMenuLabel.jsx
+│  │  │  ├─ StyledMenuPrefix.jsx
+│  │  │  ├─ StyledMenuSectionLabel.jsx
+│  │  │  ├─ StyledMenuSuffix.jsx
+│  │  │  ├─ StyledSubMenuContent.jsx
+│  │  │  ├─ styles.module.css
+│  │  │  └─ vertical
+│  │  │     ├─ StyledVerticalMenu.jsx
+│  │  │     ├─ StyledVerticalMenuItem.jsx
+│  │  │     ├─ StyledVerticalMenuSection.jsx
+│  │  │     ├─ StyledVerticalNav.jsx
+│  │  │     ├─ StyledVerticalNavBgColorContainer.jsx
+│  │  │     ├─ StyledVerticalNavContainer.jsx
+│  │  │     ├─ StyledVerticalNavExpandIcon.jsx
+│  │  │     └─ verticalNavBgImage.module.css
+│  │  ├─ svg
+│  │  │  ├─ ChevronRight.jsx
+│  │  │  ├─ Close.jsx
+│  │  │  ├─ RadioCircle.jsx
+│  │  │  └─ RadioCircleMarked.jsx
+│  │  ├─ utils
+│  │  │  ├─ menuClasses.js
+│  │  │  └─ menuUtils.jsx
+│  │  └─ vertical-menu
+│  │     └─ index.jsx
+│  ├─ app
+│  │  ├─ api
+│  │  │  ├─ apps
+│  │  │  │  ├─ calendar-events
+│  │  │  │  │  └─ route.js
+│  │  │  │  ├─ invoice
+│  │  │  │  │  └─ route.js
+│  │  │  │  ├─ permissions
+│  │  │  │  │  └─ route.js
+│  │  │  │  └─ user-list
+│  │  │  │     └─ route.js
+│  │  │  ├─ auth
+│  │  │  │  └─ [...nextauth]
+│  │  │  │     └─ route.js
+│  │  │  ├─ fake-db
+│  │  │  │  ├─ apps
+│  │  │  │  │  ├─ invoice
+│  │  │  │  │  │  └─ index.js
+│  │  │  │  │  ├─ permissions
+│  │  │  │  │  │  └─ index.js
+│  │  │  │  │  └─ user-list
+│  │  │  │  │     └─ index.js
+│  │  │  │  ├─ calendar
+│  │  │  │  │  └─ index.js
+│  │  │  │  └─ pages
+│  │  │  │     ├─ faq
+│  │  │  │     │  └─ index.js
+│  │  │  │     ├─ pricing
+│  │  │  │     │  └─ index.js
+│  │  │  │     ├─ user-profile
+│  │  │  │     │  └─ index.js
+│  │  │  │     └─ widget-examples
+│  │  │  │        └─ index.js
+│  │  │  ├─ login
+│  │  │  │  ├─ route.js
+│  │  │  │  └─ users.js
+│  │  │  └─ pages
+│  │  │     ├─ faq
+│  │  │     │  └─ route.js
+│  │  │     ├─ pricing
+│  │  │     │  └─ route.js
+│  │  │     ├─ profile
+│  │  │     │  └─ route.js
+│  │  │     └─ widget-examples
+│  │  │        └─ route.js
+│  │  ├─ favicon.ico
+│  │  ├─ globals.css
+│  │  └─ [lang]
+│  │     ├─ (blank-layout-pages)
+│  │     │  ├─ apps
+│  │     │  │  └─ invoice
+│  │     │  │     └─ print
+│  │     │  │        └─ [id]
+│  │     │  │           └─ page.jsx
+│  │     │  ├─ forgot-password
+│  │     │  │  └─ page.jsx
+│  │     │  ├─ layout.jsx
+│  │     │  ├─ login
+│  │     │  │  └─ page.jsx
+│  │     │  ├─ pages
+│  │     │  │  ├─ auth
+│  │     │  │  │  ├─ forgot-password-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ forgot-password-v2
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ login-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ login-v2
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ register-multi-steps
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ register-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ register-v2
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ reset-password-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ reset-password-v2
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ two-steps-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ two-steps-v2
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ verify-email-v1
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ verify-email-v2
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  └─ misc
+│  │     │  │     ├─ 401-not-authorized
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     ├─ 404-not-found
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     ├─ coming-soon
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     └─ under-maintenance
+│  │     │  │        └─ page.jsx
+│  │     │  └─ register
+│  │     │     └─ page.jsx
+│  │     ├─ (dashboard)
+│  │     │  ├─ apps
+│  │     │  │  ├─ calendar
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ invoice
+│  │     │  │  │  ├─ add
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ edit
+│  │     │  │  │  │  └─ [id]
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ list
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ preview
+│  │     │  │  │     └─ [id]
+│  │     │  │  │        └─ page.jsx
+│  │     │  │  ├─ permissions
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ roles
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  └─ user
+│  │     │  │     ├─ list
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     └─ view
+│  │     │  │        └─ page.jsx
+│  │     │  ├─ charts
+│  │     │  │  ├─ apex-charts
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  └─ recharts
+│  │     │  │     └─ page.jsx
+│  │     │  ├─ dashboards
+│  │     │  │  ├─ analytics
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ crm
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  └─ ecommerce
+│  │     │  │     └─ page.jsx
+│  │     │  ├─ forms
+│  │     │  │  ├─ form-layouts
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ form-validation
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  └─ form-wizard
+│  │     │  │     └─ page.jsx
+│  │     │  ├─ layout.jsx
+│  │     │  ├─ pages
+│  │     │  │  ├─ account-settings
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ dialog-examples
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ faq
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ pricing
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ user-profile
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ widget-examples
+│  │     │  │  │  ├─ actions
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ advanced
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ basic
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ charts
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ statistics
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  └─ wizard-examples
+│  │     │  │     ├─ checkout
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     ├─ create-deal
+│  │     │  │     │  └─ page.jsx
+│  │     │  │     └─ property-listing
+│  │     │  │        └─ page.jsx
+│  │     │  ├─ react-table
+│  │     │  │  └─ page.jsx
+│  │     │  └─ shared-route
+│  │     │     └─ page.jsx
+│  │     ├─ hook-examples
+│  │     │  ├─ use-horizontal-nav
+│  │     │  │  ├─ is-breakpoint-reached
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ layout.jsx
+│  │     │  │  └─ update-is-breakpoint-reached
+│  │     │  │     └─ page.jsx
+│  │     │  ├─ use-media-query
+│  │     │  │  └─ page.jsx
+│  │     │  ├─ use-settings
+│  │     │  │  ├─ layout.jsx
+│  │     │  │  ├─ settings-changed
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-content-width
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-footer-content-width
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-layout
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-mode
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-navbar-content-width
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-primary-color
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  ├─ settings-semi-dark
+│  │     │  │  │  └─ page.jsx
+│  │     │  │  └─ settings-skin
+│  │     │  │     └─ page.jsx
+│  │     │  └─ use-vertical-nav
+│  │     │     ├─ collapsed-function
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ hover-function
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-breakpoint-reached
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-collapsed
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-hovered
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-popout-when-collapsed
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-scroll-with-content
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ is-toggled
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ layout.jsx
+│  │     │     └─ toggle-function
+│  │     │        └─ page.jsx
+│  │     ├─ layout.jsx
+│  │     ├─ menu-examples
+│  │     │  ├─ horizontal-menu
+│  │     │  │  ├─ horizontal-nav
+│  │     │  │  │  ├─ basic
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ breakpoint
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ breakpoints
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ custom-breakpoint
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ custom-styles
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ hide-menu
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ switch-to-vertical
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ vertical-nav-props
+│  │     │  │  │     ├─ background-color
+│  │     │  │  │     │  └─ page.jsx
+│  │     │  │  │     ├─ background-image
+│  │     │  │  │     │  └─ page.jsx
+│  │     │  │  │     ├─ custom-styles
+│  │     │  │  │     │  └─ page.jsx
+│  │     │  │  │     └─ width
+│  │     │  │  │        └─ page.jsx
+│  │     │  │  ├─ layout.jsx
+│  │     │  │  ├─ menu
+│  │     │  │  │  ├─ basic
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ expand-icon
+│  │     │  │  │  │  ├─ with-params
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ without-params
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ expanded-menu-item-icon
+│  │     │  │  │  │  ├─ basic
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  ├─ icon-with-level
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  ├─ icon-with-param
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ icon-with-param-level
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ menu-item-styles
+│  │     │  │  │  │  ├─ with-params
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ without-params
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ popout-menu-offset
+│  │     │  │  │  │  ├─ with-params
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ without-params
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ root-styles
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ text-truncate
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ transition-duration
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ trigger-popout
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ vertical-menu-props
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  ├─ menu-item
+│  │     │  │  │  ├─ basic
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ component
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ disabled
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ icon
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ on-active-change
+│  │     │  │  │  │  ├─ with-params
+│  │     │  │  │  │  │  ├─ inside
+│  │     │  │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ without-params
+│  │     │  │  │  │     ├─ inside
+│  │     │  │  │  │     │  └─ page.jsx
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ on-click
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ prefix
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ root-styles
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ suffix
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ target
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  ├─ menu-position
+│  │     │  │  │  ├─ horizontal-navbar
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ vertical-navbar
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  ├─ menu-render
+│  │     │  │  │  ├─ dynamic-menu
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ menu-with-api
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ static-menu
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  ├─ menu-scroll
+│  │     │  │  │  ├─ browser-scroll
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ perfect-scroll
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  ├─ styles.module.css
+│  │     │  │  ├─ submenu
+│  │     │  │  │  ├─ basic
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ component
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ content-classname
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ disabled
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ icon
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ on-click
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ on-open-change
+│  │     │  │  │  │  ├─ with-params
+│  │     │  │  │  │  │  └─ page.jsx
+│  │     │  │  │  │  └─ without-params
+│  │     │  │  │  │     └─ page.jsx
+│  │     │  │  │  ├─ prefix
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  ├─ root-styles
+│  │     │  │  │  │  └─ page.jsx
+│  │     │  │  │  └─ suffix
+│  │     │  │  │     └─ page.jsx
+│  │     │  │  └─ VerticalNavContent.jsx
+│  │     │  └─ vertical-menu
+│  │     │     ├─ layout.jsx
+│  │     │     ├─ menu
+│  │     │     │  ├─ basic
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ collapsed-menu-section-label
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ expand-icon
+│  │     │     │  │  ├─ with-params
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ without-params
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  ├─ expanded-menu-item-icon
+│  │     │     │  │  ├─ basic
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  ├─ icon-with-level
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  ├─ icon-with-param
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ icon-with-param-level
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  ├─ menu-item-styles
+│  │     │     │  │  ├─ with-params
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ without-params
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  ├─ menu-section-styles
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ popout-collapsed
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ popout-menu-offset
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ root-styles
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ sub-menu-open-behavior
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ text-truncate
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ transition-duration
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ trigger-popout
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ menu-item
+│  │     │     │  ├─ basic
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ component
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ disable
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ icon
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ on-active-change
+│  │     │     │  │  ├─ with-params
+│  │     │     │  │  │  ├─ inside
+│  │     │     │  │  │  │  └─ page.jsx
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ without-params
+│  │     │     │  │     ├─ inside
+│  │     │     │  │     │  └─ page.jsx
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  ├─ on-click
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ prefix
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ root-styles
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ suffix
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ target
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ menu-position
+│  │     │     │  ├─ fixed-menu
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ scroll-with-content
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ menu-render
+│  │     │     │  ├─ dynamic-menu
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ menu-with-api
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ static-menu
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ menu-scroll
+│  │     │     │  ├─ full
+│  │     │     │  │  ├─ browser-scroll
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ perfect-scroll
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  └─ popout
+│  │     │     │     ├─ browser-scroll
+│  │     │     │     │  └─ page.jsx
+│  │     │     │     └─ perfect-scroll
+│  │     │     │        └─ page.jsx
+│  │     │     ├─ menu-section
+│  │     │     │  ├─ basic
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ icon
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ prefix
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ root-styles
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ suffix
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ menu-types
+│  │     │     │  ├─ collapsed-hover
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ collapsed-popout
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ toggle
+│  │     │     │     └─ page.jsx
+│  │     │     ├─ nav-collapse-icons
+│  │     │     │  └─ page.jsx
+│  │     │     ├─ submenu
+│  │     │     │  ├─ basic
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ component
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ content-classname
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ default-open
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ disabled
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ icon
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ on-click
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ on-open-change
+│  │     │     │  │  ├─ with-params
+│  │     │     │  │  │  └─ page.jsx
+│  │     │     │  │  └─ without-params
+│  │     │     │  │     └─ page.jsx
+│  │     │     │  ├─ prefix
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  ├─ root-styles
+│  │     │     │  │  └─ page.jsx
+│  │     │     │  └─ suffix
+│  │     │     │     └─ page.jsx
+│  │     │     └─ vertical-nav
+│  │     │        ├─ backdrop-color
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ background-color
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ background-image
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ basic
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ breakpoint
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ breakpoints
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ collapsed-width
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ custom-breakpoint
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ custom-styles
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ overlay
+│  │     │        │  └─ page.jsx
+│  │     │        ├─ transition-duration
+│  │     │        │  └─ page.jsx
+│  │     │        └─ width
+│  │     │           └─ page.jsx
+│  │     └─ [...not-found]
+│  │        └─ page.jsx
+│  ├─ assets
+│  │  ├─ iconify-icons
+│  │  │  └─ bundle-icons-css.js
+│  │  └─ svg
+│  │     ├─ Keyboard.jsx
+│  │     ├─ Paper.jsx
+│  │     └─ Rocket.jsx
+│  ├─ components
+│  │  ├─ card-statistics
+│  │  │  ├─ CardStatsSquare.jsx
+│  │  │  ├─ Horizontal.jsx
+│  │  │  ├─ HorizontalWithSubtitle.jsx
+│  │  │  ├─ StatsWithAreaChart.jsx
+│  │  │  └─ Vertical.jsx
+│  │  ├─ dialogs
+│  │  │  ├─ add-edit-address
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ billing-card
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ confirmation-dialog
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ create-app
+│  │  │  │  ├─ Billing.jsx
+│  │  │  │  ├─ Database.jsx
+│  │  │  │  ├─ Details.jsx
+│  │  │  │  ├─ FrameWork.jsx
+│  │  │  │  ├─ index.jsx
+│  │  │  │  └─ Submit.jsx
+│  │  │  ├─ DialogCloseButton.jsx
+│  │  │  ├─ edit-user-info
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ OpenDialogOnElementClick.jsx
+│  │  │  ├─ payment-method
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ payment-providers
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ permission-dialog
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ pricing
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ refer-earn
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ role-dialog
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ share-project
+│  │  │  │  └─ index.jsx
+│  │  │  ├─ two-factor-auth
+│  │  │  │  └─ index.jsx
+│  │  │  └─ upgrade-plan
+│  │  │     └─ index.jsx
+│  │  ├─ DirectionalIcon.jsx
+│  │  ├─ Form.jsx
+│  │  ├─ GenerateMenu.jsx
+│  │  ├─ layout
+│  │  │  ├─ horizontal
+│  │  │  │  ├─ Footer.jsx
+│  │  │  │  ├─ FooterContent.jsx
+│  │  │  │  ├─ Header.jsx
+│  │  │  │  ├─ HorizontalMenu.jsx
+│  │  │  │  ├─ NavbarContent.jsx
+│  │  │  │  ├─ Navigation.jsx
+│  │  │  │  ├─ NavToggle.jsx
+│  │  │  │  └─ VerticalNavContent.jsx
+│  │  │  ├─ shared
+│  │  │  │  ├─ LanguageDropdown.jsx
+│  │  │  │  ├─ Logo.jsx
+│  │  │  │  ├─ ModeDropdown.jsx
+│  │  │  │  ├─ NotificationsDropdown.jsx
+│  │  │  │  ├─ search
+│  │  │  │  │  ├─ DefaultSuggestions.jsx
+│  │  │  │  │  ├─ index.jsx
+│  │  │  │  │  ├─ NoResult.jsx
+│  │  │  │  │  ├─ SearchResultItem.jsx
+│  │  │  │  │  ├─ SearchResults.jsx
+│  │  │  │  │  └─ StyledKBarAnimator.jsx
+│  │  │  │  ├─ ShortcutsDropdown.jsx
+│  │  │  │  └─ UserDropdown.jsx
+│  │  │  └─ vertical
+│  │  │     ├─ Footer.jsx
+│  │  │     ├─ FooterContent.jsx
+│  │  │     ├─ Navbar.jsx
+│  │  │     ├─ NavbarContent.jsx
+│  │  │     ├─ Navigation.jsx
+│  │  │     ├─ NavToggle.jsx
+│  │  │     └─ VerticalMenu.jsx
+│  │  ├─ Link.jsx
+│  │  ├─ pricing
+│  │  │  ├─ index.jsx
+│  │  │  └─ PlanDetails.jsx
+│  │  ├─ Providers.jsx
+│  │  ├─ stepper-dot
+│  │  │  ├─ index.jsx
+│  │  │  └─ styles.module.css
+│  │  ├─ TablePaginationComponent.jsx
+│  │  └─ theme
+│  │     ├─ index.jsx
+│  │     ├─ mergedTheme.js
+│  │     ├─ ModeChanger.jsx
+│  │     └─ userTheme.js
+│  ├─ configs
+│  │  ├─ demoConfigs.js
+│  │  ├─ i18n.js
+│  │  ├─ primaryColorConfig.js
+│  │  └─ themeConfig.js
+│  ├─ contexts
+│  │  └─ nextAuthProvider.jsx
+│  ├─ data
+│  │  ├─ dictionaries
+│  │  │  ├─ ar.json
+│  │  │  ├─ en.json
+│  │  │  └─ fr.json
+│  │  ├─ navigation
+│  │  │  ├─ horizontalMenuData.jsx
+│  │  │  └─ verticalMenuData.jsx
+│  │  └─ searchData.js
+│  ├─ examples
+│  │  ├─ editor
+│  │  │  ├─ EditorControlled.jsx
+│  │  │  └─ EditorUncontrolled.jsx
+│  │  └─ menu
+│  │     ├─ Providers.jsx
+│  │     └─ ThemeProvider.jsx
+│  ├─ libs
+│  │  ├─ ApexCharts.jsx
+│  │  ├─ auth.js
+│  │  ├─ Editor.jsx
+│  │  ├─ Recharts.jsx
+│  │  └─ styles
+│  │     ├─ AppFullCalendar.js
+│  │     ├─ AppKeenSlider.js
+│  │     ├─ AppReactApexCharts.jsx
+│  │     ├─ AppReactDatepicker.jsx
+│  │     ├─ AppReactDraftWysiwyg.jsx
+│  │     ├─ AppReactDropzone.js
+│  │     ├─ AppReactToastify.jsx
+│  │     └─ AppRecharts.js
+│  ├─ middleware.js
+│  ├─ prisma
+│  │  ├─ dev.db
+│  │  ├─ migrations
+│  │  │  ├─ 20231221071046_
+│  │  │  │  └─ migration.sql
+│  │  │  ├─ 20240429061405_jicnic
+│  │  │  │  └─ migration.sql
+│  │  │  ├─ 20240429063410_jicnic_password
+│  │  │  │  └─ migration.sql
+│  │  │  └─ migration_lock.toml
+│  │  ├─ schema.prisma
+│  │  └─ seeds
+│  │     └─ seed.js
+│  ├─ reducers
+│  │  └─ calendarReducer.js
+│  ├─ utils
+│  │  ├─ getDictionary.js
+│  │  ├─ getInitials.js
+│  │  ├─ i18n.js
+│  │  ├─ rgbaToHex.js
+│  │  └─ string.js
+│  └─ views
+│     ├─ apps
+│     │  ├─ calendar
+│     │  │  ├─ AddEventSidebar.jsx
+│     │  │  ├─ Calendar.jsx
+│     │  │  ├─ CalendarWrapper.jsx
+│     │  │  └─ SidebarLeft.jsx
+│     │  ├─ invoice
+│     │  │  ├─ add
+│     │  │  │  ├─ AddActions.jsx
+│     │  │  │  ├─ AddCard.jsx
+│     │  │  │  └─ AddCustomerDrawer.jsx
+│     │  │  ├─ edit
+│     │  │  │  ├─ EditActions.jsx
+│     │  │  │  └─ EditCard.jsx
+│     │  │  ├─ list
+│     │  │  │  ├─ index.jsx
+│     │  │  │  ├─ InvoiceCard.jsx
+│     │  │  │  └─ InvoiceListTable.jsx
+│     │  │  ├─ preview
+│     │  │  │  ├─ index.jsx
+│     │  │  │  ├─ PreviewActions.jsx
+│     │  │  │  └─ PreviewCard.jsx
+│     │  │  ├─ print
+│     │  │  │  └─ index.jsx
+│     │  │  └─ shared
+│     │  │     ├─ AddPaymentDrawer.jsx
+│     │  │     └─ SendInvoiceDrawer.jsx
+│     │  ├─ permissions
+│     │  │  └─ index.jsx
+│     │  ├─ roles
+│     │  │  ├─ index.jsx
+│     │  │  ├─ RoleCards.jsx
+│     │  │  └─ RolesTable.jsx
+│     │  └─ user
+│     │     ├─ list
+│     │     │  ├─ AddUserDrawer.jsx
+│     │     │  ├─ index.jsx
+│     │     │  ├─ TableFilters.jsx
+│     │     │  ├─ UserListCards.jsx
+│     │     │  └─ UserListTable.jsx
+│     │     └─ view
+│     │        ├─ user-left-overview
+│     │        │  ├─ index.jsx
+│     │        │  ├─ UserDetails.jsx
+│     │        │  └─ UserPlan.jsx
+│     │        └─ user-right
+│     │           ├─ billing-plans
+│     │           │  ├─ BillingAddress.jsx
+│     │           │  ├─ CurrentPlan.jsx
+│     │           │  ├─ index.jsx
+│     │           │  └─ PaymentMethod.jsx
+│     │           ├─ connections
+│     │           │  └─ index.jsx
+│     │           ├─ index.jsx
+│     │           ├─ notifications
+│     │           │  └─ index.jsx
+│     │           ├─ overview
+│     │           │  ├─ index.jsx
+│     │           │  ├─ InvoiceListTable.jsx
+│     │           │  ├─ ProjectListTable.jsx
+│     │           │  └─ UserActivityTimeline.jsx
+│     │           └─ security
+│     │              ├─ ChangePassword.jsx
+│     │              ├─ index.jsx
+│     │              ├─ RecentDevice.jsx
+│     │              └─ TwoStepVerification.jsx
+│     ├─ charts
+│     │  ├─ apex
+│     │  │  ├─ ApexAreaChart.jsx
+│     │  │  ├─ ApexBarChart.jsx
+│     │  │  ├─ ApexCandlestickChart.jsx
+│     │  │  ├─ ApexColumnChart.jsx
+│     │  │  ├─ ApexDonutChart.jsx
+│     │  │  ├─ ApexHeatmapChart.jsx
+│     │  │  ├─ ApexLineChart.jsx
+│     │  │  ├─ ApexRadarChart.jsx
+│     │  │  ├─ ApexRadialBarChart.jsx
+│     │  │  └─ ApexScatterChart.jsx
+│     │  └─ recharts
+│     │     ├─ RechartsAreaChart.jsx
+│     │     ├─ RechartsBarChart.jsx
+│     │     ├─ RechartsLineChart.jsx
+│     │     ├─ RechartsPieChart.jsx
+│     │     ├─ RechartsRadarChart.jsx
+│     │     └─ RechartsScatterChart.jsx
+│     ├─ dashboards
+│     │  ├─ analytics
+│     │  │  ├─ EarningReports.jsx
+│     │  │  ├─ LineAreaDailySalesChart.jsx
+│     │  │  ├─ MonthlyCampaignState.jsx
+│     │  │  ├─ ProjectsTable.jsx
+│     │  │  ├─ SalesByCountries.jsx
+│     │  │  ├─ SalesOverview.jsx
+│     │  │  ├─ SourceVisits.jsx
+│     │  │  ├─ SupportTracker.jsx
+│     │  │  ├─ TotalEarning.jsx
+│     │  │  └─ WebsiteAnalyticsSlider.jsx
+│     │  ├─ crm
+│     │  │  ├─ ActiveProjects.jsx
+│     │  │  ├─ ActivityTimeline.jsx
+│     │  │  ├─ BarChartRevenueGrowth.jsx
+│     │  │  ├─ DistributedBarChartOrder.jsx
+│     │  │  ├─ EarningReportsWithTabs.jsx
+│     │  │  ├─ LastTransaction.jsx
+│     │  │  ├─ LineAreaYearlySalesChart.jsx
+│     │  │  ├─ ProjectStatus.jsx
+│     │  │  ├─ RadarSalesChart.jsx
+│     │  │  └─ SalesByCountries.jsx
+│     │  └─ ecommerce
+│     │     ├─ Congratulations.jsx
+│     │     ├─ DonutChartGeneratedLeads.jsx
+│     │     ├─ EarningReports.jsx
+│     │     ├─ InvoiceListTable.jsx
+│     │     ├─ LineChartProfit.jsx
+│     │     ├─ Orders.jsx
+│     │     ├─ PopularProducts.jsx
+│     │     ├─ RadialBarChart.jsx
+│     │     ├─ RevenueReport.jsx
+│     │     ├─ StatisticsCard.jsx
+│     │     └─ Transactions.jsx
+│     ├─ ForgotPassword.jsx
+│     ├─ forms
+│     │  ├─ form-layouts
+│     │  │  ├─ FormLayoutsAlignment.jsx
+│     │  │  ├─ FormLayoutsBasic.jsx
+│     │  │  ├─ FormLayoutsCollapsible.jsx
+│     │  │  ├─ FormLayoutsIcons.jsx
+│     │  │  ├─ FormLayoutsSeparator.jsx
+│     │  │  └─ FormLayoutsTabs.jsx
+│     │  ├─ form-validation
+│     │  │  ├─ FormValidationAsyncSubmit.jsx
+│     │  │  ├─ FormValidationBasic.jsx
+│     │  │  └─ FormValidationSchema.jsx
+│     │  └─ form-wizard
+│     │     ├─ StepperAlternativeLabel.jsx
+│     │     ├─ StepperCustomHorizontal.jsx
+│     │     ├─ StepperCustomVertical.jsx
+│     │     ├─ StepperLinearWithValidation.jsx
+│     │     ├─ StepperVerticalWithNumbers.jsx
+│     │     └─ StepperVerticalWithoutNumbers.jsx
+│     ├─ Login.jsx
+│     ├─ NotAuthorized.jsx
+│     ├─ NotFound.jsx
+│     ├─ pages
+│     │  ├─ account-settings
+│     │  │  ├─ account
+│     │  │  │  ├─ AccountDelete.jsx
+│     │  │  │  ├─ AccountDetails.jsx
+│     │  │  │  └─ index.jsx
+│     │  │  ├─ billing-plans
+│     │  │  │  ├─ Address.jsx
+│     │  │  │  ├─ CurrentPlan.jsx
+│     │  │  │  ├─ index.jsx
+│     │  │  │  ├─ InvoiceListTable.jsx
+│     │  │  │  └─ PaymentMethod.jsx
+│     │  │  ├─ connections
+│     │  │  │  └─ index.jsx
+│     │  │  ├─ index.jsx
+│     │  │  ├─ notifications
+│     │  │  │  └─ index.jsx
+│     │  │  └─ security
+│     │  │     ├─ ApiKeyList.jsx
+│     │  │     ├─ ChangePasswordCard.jsx
+│     │  │     ├─ CreateApiKey.jsx
+│     │  │     ├─ index.jsx
+│     │  │     ├─ RecentDevicesTable.jsx
+│     │  │     └─ TwoFactorAuthenticationCard.jsx
+│     │  ├─ auth
+│     │  │  ├─ AuthIllustrationWrapper.jsx
+│     │  │  ├─ ForgotPasswordV1.jsx
+│     │  │  ├─ ForgotPasswordV2.jsx
+│     │  │  ├─ LoginV1.jsx
+│     │  │  ├─ LoginV2.jsx
+│     │  │  ├─ register-multi-steps
+│     │  │  │  ├─ index.jsx
+│     │  │  │  ├─ StepAccountDetails.jsx
+│     │  │  │  ├─ StepBillingDetails.jsx
+│     │  │  │  └─ StepPersonalInfo.jsx
+│     │  │  ├─ RegisterV1.jsx
+│     │  │  ├─ RegisterV2.jsx
+│     │  │  ├─ ResetPasswordV1.jsx
+│     │  │  ├─ ResetPasswordV2.jsx
+│     │  │  ├─ TwoStepsV1.jsx
+│     │  │  ├─ TwoStepsV2.jsx
+│     │  │  ├─ VerifyEmailV1.jsx
+│     │  │  └─ VerifyEmailV2.jsx
+│     │  ├─ dialog-examples
+│     │  │  ├─ DialogAddCard.jsx
+│     │  │  ├─ DialogAddNewAddress.jsx
+│     │  │  ├─ DialogAuthentication.jsx
+│     │  │  ├─ DialogCreateApp.jsx
+│     │  │  ├─ DialogEditUserInfo.jsx
+│     │  │  ├─ DialogPaymentMethod.jsx
+│     │  │  ├─ DialogPaymentProviders.jsx
+│     │  │  ├─ DialogPricing.jsx
+│     │  │  ├─ DialogReferEarn.jsx
+│     │  │  └─ DialogShareProject.jsx
+│     │  ├─ faq
+│     │  │  ├─ FaqFooter.jsx
+│     │  │  ├─ FaqHeader.jsx
+│     │  │  ├─ Faqs.jsx
+│     │  │  ├─ index.jsx
+│     │  │  └─ styles.module.css
+│     │  ├─ misc
+│     │  │  ├─ ComingSoon.jsx
+│     │  │  └─ UnderMaintenance.jsx
+│     │  ├─ pricing
+│     │  │  └─ index.jsx
+│     │  ├─ user-profile
+│     │  │  ├─ connections
+│     │  │  │  └─ index.jsx
+│     │  │  ├─ index.jsx
+│     │  │  ├─ profile
+│     │  │  │  ├─ AboutOverview.jsx
+│     │  │  │  ├─ ActivityTimeline.jsx
+│     │  │  │  ├─ ConnectionsTeams.jsx
+│     │  │  │  ├─ index.jsx
+│     │  │  │  └─ ProjectsTables.jsx
+│     │  │  ├─ projects
+│     │  │  │  └─ index.jsx
+│     │  │  ├─ teams
+│     │  │  │  └─ index.jsx
+│     │  │  └─ UserProfileHeader.jsx
+│     │  ├─ widget-examples
+│     │  │  ├─ actions
+│     │  │  │  ├─ AllActions.jsx
+│     │  │  │  ├─ Collapsible.jsx
+│     │  │  │  ├─ RefreshContent.jsx
+│     │  │  │  ├─ RemoveCard.jsx
+│     │  │  │  └─ Table.jsx
+│     │  │  ├─ advanced
+│     │  │  │  ├─ ActiveProjects.jsx
+│     │  │  │  ├─ ActivityTimeline.jsx
+│     │  │  │  ├─ BrowserStates.jsx
+│     │  │  │  ├─ Congratulations.jsx
+│     │  │  │  ├─ EarningReports.jsx
+│     │  │  │  ├─ LastTransaction.jsx
+│     │  │  │  ├─ MonthlyCampaignState.jsx
+│     │  │  │  ├─ Orders.jsx
+│     │  │  │  ├─ PopularProducts.jsx
+│     │  │  │  ├─ SalesByCountries.jsx
+│     │  │  │  ├─ SourceVisits.jsx
+│     │  │  │  ├─ Transactions.jsx
+│     │  │  │  └─ WebsiteAnalyticsSlider.jsx
+│     │  │  ├─ basic
+│     │  │  │  ├─ CardFacebook.jsx
+│     │  │  │  ├─ CardHorizontalRatings.jsx
+│     │  │  │  ├─ CardInfluencingInfluencer.jsx
+│     │  │  │  ├─ CardInfluencingInfluencerWithImg.jsx
+│     │  │  │  ├─ CardLifetimeMembership.jsx
+│     │  │  │  ├─ CardLinkedIn.jsx
+│     │  │  │  ├─ CardMobile.jsx
+│     │  │  │  ├─ CardSupport.jsx
+│     │  │  │  ├─ CardTwitter.jsx
+│     │  │  │  ├─ CardUser.jsx
+│     │  │  │  ├─ CardVerticalRatings.jsx
+│     │  │  │  ├─ CardWatch.jsx
+│     │  │  │  ├─ CardWithCollapse.jsx
+│     │  │  │  ├─ CardWithTabs.jsx
+│     │  │  │  └─ CardWithTabsCenter.jsx
+│     │  │  ├─ charts
+│     │  │  │  ├─ EarningReports.jsx
+│     │  │  │  ├─ EarningReportsWithTabs.jsx
+│     │  │  │  ├─ ProjectStatus.jsx
+│     │  │  │  ├─ RevenueReport.jsx
+│     │  │  │  ├─ Sales.jsx
+│     │  │  │  ├─ SupportTracker.jsx
+│     │  │  │  └─ TotalEarning.jsx
+│     │  │  └─ statistics
+│     │  │     ├─ BarChartDailyTraffic.jsx
+│     │  │     ├─ BarChartRevenueGrowth.jsx
+│     │  │     ├─ BarChartSessionsWithNegativeValues.jsx
+│     │  │     ├─ CardStatsLineAreaCharts.jsx
+│     │  │     ├─ DistributedBarChartOrder.jsx
+│     │  │     ├─ DonutChartGeneratedLeads.jsx
+│     │  │     ├─ Horizontal.jsx
+│     │  │     ├─ LineAreaDailySalesChart.jsx
+│     │  │     ├─ LineAreaYearlySalesChart.jsx
+│     │  │     ├─ LineChartImpression.jsx
+│     │  │     ├─ LineChartProfit.jsx
+│     │  │     ├─ RadialBarChart.jsx
+│     │  │     ├─ SalesOverview.jsx
+│     │  │     ├─ Square.jsx
+│     │  │     ├─ StatisticsCard.jsx
+│     │  │     ├─ SubscribersOrders.jsx
+│     │  │     └─ Vertical.jsx
+│     │  └─ wizard-examples
+│     │     ├─ checkout
+│     │     │  ├─ index.jsx
+│     │     │  ├─ StepAddress.jsx
+│     │     │  ├─ StepCart.jsx
+│     │     │  ├─ StepConfirmation.jsx
+│     │     │  └─ StepPayment.jsx
+│     │     ├─ create-deal
+│     │     │  ├─ index.jsx
+│     │     │  ├─ StepDealDetails.jsx
+│     │     │  ├─ StepDealType.jsx
+│     │     │  ├─ StepDealUsage.jsx
+│     │     │  └─ StepReview.jsx
+│     │     └─ property-listing
+│     │        ├─ index.jsx
+│     │        ├─ StepPersonalDetails.jsx
+│     │        ├─ StepPriceDetails.jsx
+│     │        ├─ StepPropertyArea.jsx
+│     │        ├─ StepPropertyDetails.jsx
+│     │        └─ StepPropertyFeatures.jsx
+│     ├─ react-table
+│     │  ├─ BasicDataTables.jsx
+│     │  ├─ ColumnVisibility.jsx
+│     │  ├─ data.js
+│     │  ├─ EditableDataTables.jsx
+│     │  ├─ KitchenSink.jsx
+│     │  └─ RowSelection.jsx
+│     └─ Register.jsx
+├─ tailwind.config.js
+└─ tsconfig.json
+
+```

+ 2 - 1
package.json

@@ -12,7 +12,8 @@
     "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
     "build:icons": "tsx src/assets/iconify-icons/bundle-icons-css.js",
     "migrate": "dotenv -e .env -- npx prisma migrate dev",
-    "postinstall": "prisma generate && npm run build:icons"
+    "postinstall": "prisma generate && npm run build:icons",
+    "seed": "node src/prisma/seeds/seed.js"
   },
   "dependencies": {
     "@auth/prisma-adapter": "1.5.0",

+ 17 - 0
src/app/api/test/route.js

@@ -0,0 +1,17 @@
+// /api/test/routes.js
+// Next Imports
+import {
+  NextResponse
+} from 'next/server'
+
+import {
+  PrismaClient
+} from '@prisma/client';
+
+const prisma = new PrismaClient();
+
+
+export async function GET() {
+  const accounts = await prisma.account.findMany();
+  return NextResponse.json(accounts)
+}

+ 39 - 40
src/prisma/migrations/20231221071046_/migration.sql

@@ -1,56 +1,55 @@
--- CreateTable
-CREATE TABLE "Account" (
-    "id" TEXT NOT NULL PRIMARY KEY,
-    "userId" TEXT NOT NULL,
-    "type" TEXT NOT NULL,
-    "provider" TEXT NOT NULL,
-    "providerAccountId" TEXT NOT NULL,
-    "refresh_token" TEXT,
-    "access_token" TEXT,
-    "expires_at" INTEGER,
-    "token_type" TEXT,
-    "scope" TEXT,
-    "id_token" TEXT,
-    "session_state" TEXT,
-    CONSTRAINT "Account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
+-- CreateTable for User
+CREATE TABLE `User` (
+    `id` VARCHAR(255) NOT NULL PRIMARY KEY,
+    `name` VARCHAR(255),
+    `email` VARCHAR(255) UNIQUE,
+    `emailVerified` DATETIME,
+    `image` TEXT
 );
 
--- CreateTable
-CREATE TABLE "Session" (
-    "id" TEXT NOT NULL PRIMARY KEY,
-    "sessionToken" TEXT NOT NULL,
-    "userId" TEXT NOT NULL,
-    "expires" DATETIME NOT NULL,
-    CONSTRAINT "Session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User" ("id") ON DELETE CASCADE ON UPDATE CASCADE
+-- CreateTable for Account
+CREATE TABLE `Account` (
+    `id` VARCHAR(255) NOT NULL PRIMARY KEY,
+    `userId` VARCHAR(255) NOT NULL,
+    `type` VARCHAR(255) NOT NULL,
+    `provider` VARCHAR(255) NOT NULL,
+    `providerAccountId` VARCHAR(255) NOT NULL,
+    `refresh_token` TEXT,
+    `access_token` TEXT,
+    `expires_at` INT,
+    `token_type` VARCHAR(255),
+    `scope` TEXT,
+    `id_token` TEXT,
+    `session_state` TEXT,
+    CONSTRAINT `Account_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
--- CreateTable
-CREATE TABLE "User" (
-    "id" TEXT NOT NULL PRIMARY KEY,
-    "name" TEXT,
-    "email" TEXT,
-    "emailVerified" DATETIME,
-    "image" TEXT
+-- CreateTable for Session
+CREATE TABLE `Session` (
+    `id` VARCHAR(255) NOT NULL PRIMARY KEY,
+    `sessionToken` VARCHAR(255) NOT NULL UNIQUE,
+    `userId` VARCHAR(255) NOT NULL,
+    `expires` DATETIME NOT NULL,
+    CONSTRAINT `Session_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
 );
 
--- CreateTable
-CREATE TABLE "VerificationToken" (
-    "identifier" TEXT NOT NULL,
-    "token" TEXT NOT NULL,
-    "expires" DATETIME NOT NULL
+-- CreateTable for VerificationToken
+CREATE TABLE `VerificationToken` (
+    `identifier` VARCHAR(255) NOT NULL,
+    `token` VARCHAR(255) NOT NULL,
+    `expires` DATETIME NOT NULL,
+    PRIMARY KEY (`identifier`, `token`)
 );
 
--- CreateIndex
-CREATE UNIQUE INDEX "Account_provider_providerAccountId_key" ON "Account"("provider", "providerAccountId");
 
 -- CreateIndex
-CREATE UNIQUE INDEX "Session_sessionToken_key" ON "Session"("sessionToken");
+CREATE UNIQUE INDEX `Account_provider_providerAccountId_key` ON `Account`(`provider`, `providerAccountId`);
 
 -- CreateIndex
-CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
+CREATE UNIQUE INDEX `Session_sessionToken_key` ON `Session`(`sessionToken`);
 
 -- CreateIndex
-CREATE UNIQUE INDEX "VerificationToken_token_key" ON "VerificationToken"("token");
+CREATE UNIQUE INDEX `User_email_key` ON `User`(`email`);
 
 -- CreateIndex
-CREATE UNIQUE INDEX "VerificationToken_identifier_token_key" ON "VerificationToken"("identifier", "token");
+CREATE UNIQUE INDEX `VerificationToken_identifier_token_key` ON `VerificationToken`(`identifier`, `token`);

+ 76 - 0
src/prisma/migrations/20240429061405_jicnic/migration.sql

@@ -0,0 +1,76 @@
+/*
+  Warnings:
+
+  - The primary key for the `account` table will be changed. If it partially fails, the table could be left without primary key constraint.
+  - You are about to alter the column `id` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `userId` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `type` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `provider` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `providerAccountId` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `token_type` on the `account` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - The primary key for the `session` table will be changed. If it partially fails, the table could be left without primary key constraint.
+  - You are about to alter the column `id` on the `session` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `sessionToken` on the `session` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `userId` on the `session` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - The primary key for the `user` table will be changed. If it partially fails, the table could be left without primary key constraint.
+  - You are about to alter the column `id` on the `user` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `name` on the `user` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `email` on the `user` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - The primary key for the `verificationtoken` table will be changed. If it partially fails, the table could be left without primary key constraint.
+  - You are about to alter the column `identifier` on the `verificationtoken` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - You are about to alter the column `token` on the `verificationtoken` table. The data in that column could be lost. The data in that column will be cast from `VarChar(255)` to `VarChar(191)`.
+  - A unique constraint covering the columns `[token]` on the table `VerificationToken` will be added. If there are existing duplicate values, this will fail.
+
+*/
+-- DropForeignKey
+ALTER TABLE `account` DROP FOREIGN KEY `Account_userId_fkey`;
+
+-- DropForeignKey
+ALTER TABLE `session` DROP FOREIGN KEY `Session_userId_fkey`;
+
+-- AlterTable
+ALTER TABLE `account` DROP PRIMARY KEY,
+    MODIFY `id` VARCHAR(191) NOT NULL,
+    MODIFY `userId` VARCHAR(191) NOT NULL,
+    MODIFY `type` VARCHAR(191) NOT NULL,
+    MODIFY `provider` VARCHAR(191) NOT NULL,
+    MODIFY `providerAccountId` VARCHAR(191) NOT NULL,
+    MODIFY `refresh_token` VARCHAR(191) NULL,
+    MODIFY `access_token` VARCHAR(191) NULL,
+    MODIFY `token_type` VARCHAR(191) NULL,
+    MODIFY `scope` VARCHAR(191) NULL,
+    MODIFY `id_token` VARCHAR(191) NULL,
+    MODIFY `session_state` VARCHAR(191) NULL,
+    ADD PRIMARY KEY (`id`);
+
+-- AlterTable
+ALTER TABLE `session` DROP PRIMARY KEY,
+    MODIFY `id` VARCHAR(191) NOT NULL,
+    MODIFY `sessionToken` VARCHAR(191) NOT NULL,
+    MODIFY `userId` VARCHAR(191) NOT NULL,
+    MODIFY `expires` DATETIME(3) NOT NULL,
+    ADD PRIMARY KEY (`id`);
+
+-- AlterTable
+ALTER TABLE `user` DROP PRIMARY KEY,
+    MODIFY `id` VARCHAR(191) NOT NULL,
+    MODIFY `name` VARCHAR(191) NULL,
+    MODIFY `email` VARCHAR(191) NULL,
+    MODIFY `emailVerified` DATETIME(3) NULL,
+    MODIFY `image` VARCHAR(191) NULL,
+    ADD PRIMARY KEY (`id`);
+
+-- AlterTable
+ALTER TABLE `verificationtoken` DROP PRIMARY KEY,
+    MODIFY `identifier` VARCHAR(191) NOT NULL,
+    MODIFY `token` VARCHAR(191) NOT NULL,
+    MODIFY `expires` DATETIME(3) NOT NULL;
+
+-- CreateIndex
+CREATE UNIQUE INDEX `VerificationToken_token_key` ON `VerificationToken`(`token`);
+
+-- AddForeignKey
+ALTER TABLE `Account` ADD CONSTRAINT `Account_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE `Session` ADD CONSTRAINT `Session_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;

+ 2 - 0
src/prisma/migrations/20240429063410_jicnic_password/migration.sql

@@ -0,0 +1,2 @@
+-- AlterTable
+ALTER TABLE `user` ADD COLUMN `password` VARCHAR(191) NOT NULL DEFAULT 'password';

+ 1 - 1
src/prisma/migrations/migration_lock.toml

@@ -1,3 +1,3 @@
 # Please do not edit this file manually
 # It should be added in your version-control system (i.e. Git)
-provider = "sqlite"
+provider = "mysql"

+ 2 - 1
src/prisma/schema.prisma

@@ -1,5 +1,5 @@
 datasource db {
-  provider = "sqlite"
+  provider = "mysql"
   url      = env("DATABASE_URL")
 }
 
@@ -41,6 +41,7 @@ model User {
   email         String?   @unique
   emailVerified DateTime?
   image         String?
+  password      String    @default("password")
   accounts      Account[]
   sessions      Session[]
 }

+ 50 - 0
src/prisma/seeds/seed.js

@@ -0,0 +1,50 @@
+const {
+  PrismaClient
+} = require('@prisma/client');
+const prisma = new PrismaClient();
+
+async function main() {
+  const user = await prisma.user.create({
+    data: {
+      id: 'u1',
+      name: 'John Doe',
+      email: 'john.doe@example.com',
+      emailVerified: new Date(),
+      image: 'http://example.com/image.jpg'
+    },
+  });
+
+  const account = await prisma.account.create({
+    data: {
+      id: 'a1',
+      userId: 'u1',
+      type: 'providerType',
+      provider: 'google',
+      providerAccountId: 'providerAccountId',
+      refresh_token: 'refreshToken',
+      access_token: 'accessToken',
+      expires_at: 1625120000,
+      token_type: 'Bearer',
+      scope: 'email',
+      id_token: 'idToken',
+      session_state: 'sessionState'
+    },
+  });
+
+  const session = await prisma.session.create({
+    data: {
+      id: 's1',
+      sessionToken: 'sessionToken123',
+      userId: 'u1',
+      expires: new Date(new Date().getTime() + 1000 * 60 * 60 * 24 * 7) // 一周後過期
+    },
+  });
+}
+
+main()
+  .catch(e => {
+    throw e;
+  })
+  .finally(async () => {
+    await prisma.$disconnect();
+  });