From 5b9bf635913db86ad2a505ef1385ea4b3847f1e2 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 24 Jun 2023 08:22:59 +0800 Subject: [PATCH] first commit --- .editorconfig | 38 + .eslintrc.js | 243 + .gitignore | 34 + .prettierignore | 2 + .prettierrc.json | 20 + .stylelintrc.json | 34 + .vscode/anchor-comments.code-snippets | 23 + .vscode/extensions.json | 15 + .vscode/settings.json | 113 + .vscode/vue-ts.code-snippets | 18 + .vscode/vue.code-snippets | 63 + .vscode/vuetify.code-snippets | 52 + README.md | 35 + auto-imports.d.ts | 626 ++ components.d.ts | 22 + env.d.ts | 10 + index.html | 53 + package.json | 88 + public/favicon.ico | Bin 0 -> 1809 bytes public/loader.css | 83 + public/logo.png | Bin 0 -> 5148 bytes shims.d.ts | 14 + src/@core/components/ErrorHeader.vue | 24 + src/@core/components/MoreBtn.vue | 24 + src/@core/components/ThemeSwitcher.vue | 33 + .../cards/CardStatisticsHorizontal.vue | 50 + .../cards/CardStatisticsVertical.vue | 56 + .../cards/CardStatisticsWithImages.vue | 65 + src/@core/libs/apex-chart/apexCharConfig.ts | 703 ++ src/@core/scss/_components.scss | 183 + src/@core/scss/_dark.scss | 16 + src/@core/scss/_default-layout.scss | 8 + src/@core/scss/_misc.scss | 21 + src/@core/scss/_mixins.scss | 66 + src/@core/scss/_utilities.scss | 73 + src/@core/scss/_utils.scss | 193 + src/@core/scss/_variables.scss | 96 + src/@core/scss/_vertical-nav.scss | 140 + src/@core/scss/base/_components.scss | 157 + src/@core/scss/base/_dark.scss | 16 + .../base/_default-layout-w-vertical-nav.scss | 104 + src/@core/scss/base/_default-layout.scss | 16 + src/@core/scss/base/_index.scss | 40 + src/@core/scss/base/_layouts.scss | 63 + src/@core/scss/base/_misc.scss | 20 + src/@core/scss/base/_mixins.scss | 78 + src/@core/scss/base/_utilities.scss | 141 + src/@core/scss/base/_utils.scss | 90 + src/@core/scss/base/_variables.scss | 197 + src/@core/scss/base/_vertical-nav.scss | 250 + .../scss/base/libs/_perfect-scrollbar.scss | 35 + src/@core/scss/base/libs/vuetify/_index.scss | 1 + .../scss/base/libs/vuetify/_overrides.scss | 288 + .../scss/base/libs/vuetify/_variables.scss | 49 + .../_default-layout-vertical-nav.scss | 46 + .../base/placeholders/_default-layout.scss | 3 + src/@core/scss/base/placeholders/_index.scss | 5 + src/@core/scss/base/placeholders/_misc.scss | 7 + src/@core/scss/base/placeholders/_nav.scss | 34 + .../scss/base/placeholders/_vertical-nav.scss | 81 + src/@core/scss/index.scss | 33 + src/@core/scss/libs/apex-chart.scss | 87 + src/@core/scss/libs/vuetify/_overrides.scss | 167 + src/@core/scss/libs/vuetify/_variables.scss | 255 + src/@core/scss/libs/vuetify/index.scss | 1 + src/@core/scss/pages/misc.scss | 23 + src/@core/scss/pages/page-auth.scss | 44 + .../scss/placeholders/_default-layout.scss | 3 + src/@core/scss/placeholders/_index.scss | 3 + src/@core/scss/placeholders/_nav.scss | 33 + .../scss/placeholders/_vertical-nav.scss | 88 + src/@core/scss/template/_components.scss | 198 + src/@core/scss/template/_mixins.scss | 12 + src/@core/scss/template/_utilities.scss | 25 + src/@core/scss/template/_utils.scss | 41 + src/@core/scss/template/_variables.scss | 33 + src/@core/scss/template/index.scss | 8 + src/@core/scss/template/libs/apex-chart.scss | 100 + .../scss/template/libs/full-calendar.scss | 260 + .../template/libs/vuetify/_variables.scss | 240 + .../scss/template/libs/vuetify/index.scss | 1 + src/@core/scss/template/pages/misc.scss | 25 + src/@core/scss/template/pages/page-auth.scss | 54 + .../scss/template/placeholders/_index.scss | 2 + .../scss/template/placeholders/_nav.scss | 8 + .../template/placeholders/_vertical-nav.scss | 64 + src/@core/utils/formatters.ts | 48 + src/@core/utils/index.ts | 33 + src/@iconify/build-icons.ts | 303 + src/@iconify/tsconfig.json | 17 + src/@layouts/components.ts | 4 + src/@layouts/components/TransitionExpand.vue | 92 + src/@layouts/components/VerticalNav.vue | 158 + src/@layouts/components/VerticalNavLayout.vue | 203 + src/@layouts/components/VerticalNavLink.vue | 39 + .../components/VerticalNavSectionTitle.vue | 20 + src/@layouts/index.ts | 1 + src/@layouts/styles/_classes.scss | 3 + src/@layouts/styles/_default-layout.scss | 35 + src/@layouts/styles/_global.scss | 10 + src/@layouts/styles/_mixins.scss | 28 + src/@layouts/styles/_placeholders.scss | 53 + src/@layouts/styles/_rtl.scss | 7 + src/@layouts/styles/_variables.scss | 28 + src/@layouts/styles/index.scss | 3 + src/@layouts/types.d.ts | 161 + src/@layouts/utils.ts | 38 + src/App.vue | 5 + src/assets/images/avatars/avatar-1.png | Bin 0 -> 16340 bytes src/assets/images/avatars/avatar-10.png | Bin 0 -> 35995 bytes src/assets/images/avatars/avatar-11.png | Bin 0 -> 48673 bytes src/assets/images/avatars/avatar-12.png | Bin 0 -> 46618 bytes src/assets/images/avatars/avatar-13.png | Bin 0 -> 18787 bytes src/assets/images/avatars/avatar-14.png | Bin 0 -> 18661 bytes src/assets/images/avatars/avatar-15.png | Bin 0 -> 18500 bytes src/assets/images/avatars/avatar-2.png | Bin 0 -> 23136 bytes src/assets/images/avatars/avatar-3.png | Bin 0 -> 11845 bytes src/assets/images/avatars/avatar-4.png | Bin 0 -> 21231 bytes src/assets/images/avatars/avatar-5.png | Bin 0 -> 18787 bytes src/assets/images/avatars/avatar-6.png | Bin 0 -> 18661 bytes src/assets/images/avatars/avatar-7.png | Bin 0 -> 18500 bytes src/assets/images/avatars/avatar-8.png | Bin 0 -> 16783 bytes src/assets/images/avatars/avatar-9.png | Bin 0 -> 44169 bytes src/assets/images/eCommerce/2.png | Bin 0 -> 28102 bytes src/assets/images/logo.svg | 12 + src/assets/images/logos/american-bank.png | Bin 0 -> 1247 bytes src/assets/images/logos/aviato.png | Bin 0 -> 1740 bytes src/assets/images/logos/aws.png | Bin 0 -> 1730 bytes src/assets/images/logos/bitbank.png | Bin 0 -> 1447 bytes src/assets/images/logos/chrome.png | Bin 0 -> 7651 bytes src/assets/images/logos/citi-bank.png | Bin 0 -> 1201 bytes src/assets/images/logos/digital-ocean.png | Bin 0 -> 934 bytes src/assets/images/logos/github.png | Bin 0 -> 5070 bytes src/assets/images/logos/google.png | Bin 0 -> 4502 bytes src/assets/images/logos/gumroad.png | Bin 0 -> 2110 bytes src/assets/images/logos/mastercard-label.png | Bin 0 -> 1517 bytes src/assets/images/logos/slack.png | Bin 0 -> 1281 bytes src/assets/images/logos/stripe.png | Bin 0 -> 826 bytes src/assets/images/logos/zipcar.png | Bin 0 -> 1414 bytes src/assets/images/misc/pricing-tree-1.png | Bin 0 -> 4980 bytes src/assets/images/misc/pricing-tree-2.png | Bin 0 -> 3304 bytes src/assets/images/misc/pricing-tree-3.png | Bin 0 -> 5729 bytes src/assets/images/misc/triangle-dark.png | Bin 0 -> 757 bytes src/assets/images/misc/triangle-light.png | Bin 0 -> 6538 bytes src/assets/images/misc/trophy.png | Bin 0 -> 22300 bytes src/assets/images/pages/1.png | Bin 0 -> 320358 bytes src/assets/images/pages/2.png | Bin 0 -> 231124 bytes src/assets/images/pages/3.png | Bin 0 -> 88154 bytes src/assets/images/pages/404.png | Bin 0 -> 164437 bytes src/assets/images/pages/5.jpg | Bin 0 -> 6790 bytes src/assets/images/pages/6.jpg | Bin 0 -> 259380 bytes src/assets/images/pages/auth-v1-mask-dark.png | Bin 0 -> 1491 bytes .../images/pages/auth-v1-mask-light.png | Bin 0 -> 777 bytes src/assets/images/pages/auth-v1-tree-2.png | Bin 0 -> 3667 bytes src/assets/images/pages/auth-v1-tree.png | Bin 0 -> 2130 bytes src/assets/images/pages/auth-v2-mask-dark.png | Bin 0 -> 1517 bytes .../images/pages/auth-v2-mask-light.png | Bin 0 -> 2537 bytes .../auth-v2-register-illustration-dark.png | Bin 0 -> 67898 bytes .../auth-v2-register-illustration-light.png | Bin 0 -> 71307 bytes src/assets/images/pages/misc-mask-dark.png | Bin 0 -> 1537 bytes src/assets/images/pages/misc-mask-light.png | Bin 0 -> 2151 bytes src/assets/images/pages/pose-fs-9.png | Bin 0 -> 29430 bytes src/assets/images/pages/tree-2.png | Bin 0 -> 9968 bytes src/assets/images/pages/tree-3.png | Bin 0 -> 10453 bytes src/assets/images/pages/tree.png | Bin 0 -> 2637 bytes src/assets/images/pro/upgrade-banner-dark.png | Bin 0 -> 50973 bytes .../images/pro/upgrade-banner-light.png | Bin 0 -> 50117 bytes src/assets/images/svg/discord.svg | 10 + src/assets/images/svg/gift.svg | 8 + src/assets/images/svg/keyboard.svg | 8 + src/assets/images/svg/laptop.svg | 8 + src/assets/images/svg/lightbulb.svg | 8 + src/assets/images/svg/paypal.svg | 19 + src/assets/images/svg/rocket.svg | 8 + src/components/ErrorHeader.vue | 30 + src/layouts/blank.vue | 11 + .../DefaultLayoutWithVerticalNav.vue | 182 + src/layouts/components/Footer.vue | 3 + .../components/NavbarThemeSwitcher.vue | 18 + src/layouts/components/UserProfile.vue | 116 + src/layouts/default.vue | 14 + src/main.ts | 24 + src/pages/[...all].vue | 61 + src/pages/account-settings.vue | 60 + src/pages/card-basic.vue | 27 + src/pages/cards.vue | 27 + src/pages/dashboard.vue | 115 + src/pages/form-layouts.vue | 66 + src/pages/icons.vue | 93 + src/pages/login.vue | 122 + src/pages/register.vue | 167 + src/pages/tables.vue | 53 + src/pages/typography.vue | 178 + src/plugins/vuetify/defaults.ts | 123 + src/plugins/vuetify/icons.ts | 24 + src/plugins/vuetify/index.ts | 18 + src/plugins/vuetify/theme.ts | 111 + src/plugins/webfontloader.ts | 15 + src/router/index.ts | 62 + src/styles/styles.scss | 1 + src/styles/variables/_template.scss | 6 + src/styles/variables/_vuetify.scss | 7 + src/views/dashboard/AnalyticsAward.vue | 57 + src/views/dashboard/AnalyticsBarCharts.vue | 97 + .../dashboard/AnalyticsDepositWithdraw.vue | 197 + .../dashboard/AnalyticsSalesByCountries.vue | 112 + src/views/dashboard/AnalyticsTotalEarning.vue | 99 + .../AnalyticsTotalProfitLineCharts.vue | 94 + src/views/dashboard/AnalyticsTransactions.vue | 81 + src/views/dashboard/AnalyticsUserTable.vue | 204 + .../dashboard/AnalyticsWeeklyOverview.vue | 118 + .../AccountSettingsAccount.vue | 351 + .../AccountSettingsNotification.vue | 114 + .../AccountSettingsSecurity.vue | 331 + .../pages/authentication/AuthProvider.vue | 38 + .../pages/cards/card-basic/CardBasic.vue | 474 ++ .../pages/cards/card-basic/CardNavigation.vue | 92 + .../pages/cards/card-basic/CardSolid.vue | 97 + .../CardStatisticsAreaCharts.vue | 99 + .../CardStatisticsBarCharts.vue | 97 + .../CardStatisticsBarWithGapCharts.vue | 116 + .../CardStatisticsLineCharts.vue | 106 + .../CardStatisticsRadialBarCharts.vue | 83 + .../CardStatisticsTotalProfitLineCharts.vue | 94 + .../CardStatisticsTransactions.vue | 64 + .../DemoFormLayoutHorizontalForm.vue | 142 + .../DemoFormLayoutHorizontalFormWithIcons.vue | 146 + .../DemoFormLayoutMultipleColumn.vue | 112 + .../DemoFormLayoutVerticalForm.vue | 72 + .../DemoFormLayoutVerticalFormWithIcons.vue | 76 + .../pages/tables/DemoSimpleTableBasics.vue | 86 + .../pages/tables/DemoSimpleTableDensity.vue | 86 + .../tables/DemoSimpleTableFixedHeader.vue | 89 + .../pages/tables/DemoSimpleTableHeight.vue | 86 + .../pages/tables/DemoSimpleTableTheme.vue | 86 + .../DemoFormLayoutHorizontalForm.vue | 143 + .../DemoFormLayoutHorizontalFormWithIcons.vue | 146 + .../DemoFormLayoutMultipleColumn.vue | 112 + .../DemoFormLayoutVerticalForm.vue | 72 + .../DemoFormLayoutVerticalFormWithIcons.vue | 76 + .../user-interface/tables/TableBasic.vue | 83 + src/views/user-interface/tables/TableDark.vue | 90 + .../user-interface/tables/TableDensity.vue | 83 + .../tables/TableFixedHeader.vue | 86 + .../user-interface/tables/TableHeight.vue | 83 + .../typography/TypographyHeadlines.vue | 47 + .../typography/TypographyTexts.vue | 119 + tsconfig.json | 67 + vite.config.ts | 52 + yarn.lock | 5696 +++++++++++++++++ 250 files changed, 21121 insertions(+) create mode 100644 .editorconfig create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 .prettierignore create mode 100644 .prettierrc.json create mode 100644 .stylelintrc.json create mode 100644 .vscode/anchor-comments.code-snippets create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/vue-ts.code-snippets create mode 100644 .vscode/vue.code-snippets create mode 100644 .vscode/vuetify.code-snippets create mode 100644 README.md create mode 100644 auto-imports.d.ts create mode 100644 components.d.ts create mode 100644 env.d.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/loader.css create mode 100644 public/logo.png create mode 100644 shims.d.ts create mode 100644 src/@core/components/ErrorHeader.vue create mode 100644 src/@core/components/MoreBtn.vue create mode 100644 src/@core/components/ThemeSwitcher.vue create mode 100644 src/@core/components/cards/CardStatisticsHorizontal.vue create mode 100644 src/@core/components/cards/CardStatisticsVertical.vue create mode 100644 src/@core/components/cards/CardStatisticsWithImages.vue create mode 100644 src/@core/libs/apex-chart/apexCharConfig.ts create mode 100644 src/@core/scss/_components.scss create mode 100644 src/@core/scss/_dark.scss create mode 100644 src/@core/scss/_default-layout.scss create mode 100644 src/@core/scss/_misc.scss create mode 100644 src/@core/scss/_mixins.scss create mode 100644 src/@core/scss/_utilities.scss create mode 100644 src/@core/scss/_utils.scss create mode 100644 src/@core/scss/_variables.scss create mode 100644 src/@core/scss/_vertical-nav.scss create mode 100644 src/@core/scss/base/_components.scss create mode 100644 src/@core/scss/base/_dark.scss create mode 100644 src/@core/scss/base/_default-layout-w-vertical-nav.scss create mode 100644 src/@core/scss/base/_default-layout.scss create mode 100644 src/@core/scss/base/_index.scss create mode 100644 src/@core/scss/base/_layouts.scss create mode 100644 src/@core/scss/base/_misc.scss create mode 100644 src/@core/scss/base/_mixins.scss create mode 100644 src/@core/scss/base/_utilities.scss create mode 100644 src/@core/scss/base/_utils.scss create mode 100644 src/@core/scss/base/_variables.scss create mode 100644 src/@core/scss/base/_vertical-nav.scss create mode 100644 src/@core/scss/base/libs/_perfect-scrollbar.scss create mode 100644 src/@core/scss/base/libs/vuetify/_index.scss create mode 100644 src/@core/scss/base/libs/vuetify/_overrides.scss create mode 100644 src/@core/scss/base/libs/vuetify/_variables.scss create mode 100644 src/@core/scss/base/placeholders/_default-layout-vertical-nav.scss create mode 100644 src/@core/scss/base/placeholders/_default-layout.scss create mode 100644 src/@core/scss/base/placeholders/_index.scss create mode 100644 src/@core/scss/base/placeholders/_misc.scss create mode 100644 src/@core/scss/base/placeholders/_nav.scss create mode 100644 src/@core/scss/base/placeholders/_vertical-nav.scss create mode 100644 src/@core/scss/index.scss create mode 100644 src/@core/scss/libs/apex-chart.scss create mode 100644 src/@core/scss/libs/vuetify/_overrides.scss create mode 100644 src/@core/scss/libs/vuetify/_variables.scss create mode 100644 src/@core/scss/libs/vuetify/index.scss create mode 100644 src/@core/scss/pages/misc.scss create mode 100644 src/@core/scss/pages/page-auth.scss create mode 100644 src/@core/scss/placeholders/_default-layout.scss create mode 100644 src/@core/scss/placeholders/_index.scss create mode 100644 src/@core/scss/placeholders/_nav.scss create mode 100644 src/@core/scss/placeholders/_vertical-nav.scss create mode 100644 src/@core/scss/template/_components.scss create mode 100644 src/@core/scss/template/_mixins.scss create mode 100644 src/@core/scss/template/_utilities.scss create mode 100644 src/@core/scss/template/_utils.scss create mode 100644 src/@core/scss/template/_variables.scss create mode 100644 src/@core/scss/template/index.scss create mode 100644 src/@core/scss/template/libs/apex-chart.scss create mode 100644 src/@core/scss/template/libs/full-calendar.scss create mode 100644 src/@core/scss/template/libs/vuetify/_variables.scss create mode 100644 src/@core/scss/template/libs/vuetify/index.scss create mode 100644 src/@core/scss/template/pages/misc.scss create mode 100644 src/@core/scss/template/pages/page-auth.scss create mode 100644 src/@core/scss/template/placeholders/_index.scss create mode 100644 src/@core/scss/template/placeholders/_nav.scss create mode 100644 src/@core/scss/template/placeholders/_vertical-nav.scss create mode 100644 src/@core/utils/formatters.ts create mode 100644 src/@core/utils/index.ts create mode 100644 src/@iconify/build-icons.ts create mode 100644 src/@iconify/tsconfig.json create mode 100644 src/@layouts/components.ts create mode 100644 src/@layouts/components/TransitionExpand.vue create mode 100644 src/@layouts/components/VerticalNav.vue create mode 100644 src/@layouts/components/VerticalNavLayout.vue create mode 100644 src/@layouts/components/VerticalNavLink.vue create mode 100644 src/@layouts/components/VerticalNavSectionTitle.vue create mode 100644 src/@layouts/index.ts create mode 100644 src/@layouts/styles/_classes.scss create mode 100644 src/@layouts/styles/_default-layout.scss create mode 100644 src/@layouts/styles/_global.scss create mode 100644 src/@layouts/styles/_mixins.scss create mode 100644 src/@layouts/styles/_placeholders.scss create mode 100644 src/@layouts/styles/_rtl.scss create mode 100644 src/@layouts/styles/_variables.scss create mode 100644 src/@layouts/styles/index.scss create mode 100644 src/@layouts/types.d.ts create mode 100644 src/@layouts/utils.ts create mode 100644 src/App.vue create mode 100644 src/assets/images/avatars/avatar-1.png create mode 100644 src/assets/images/avatars/avatar-10.png create mode 100644 src/assets/images/avatars/avatar-11.png create mode 100644 src/assets/images/avatars/avatar-12.png create mode 100644 src/assets/images/avatars/avatar-13.png create mode 100644 src/assets/images/avatars/avatar-14.png create mode 100644 src/assets/images/avatars/avatar-15.png create mode 100644 src/assets/images/avatars/avatar-2.png create mode 100644 src/assets/images/avatars/avatar-3.png create mode 100644 src/assets/images/avatars/avatar-4.png create mode 100644 src/assets/images/avatars/avatar-5.png create mode 100644 src/assets/images/avatars/avatar-6.png create mode 100644 src/assets/images/avatars/avatar-7.png create mode 100644 src/assets/images/avatars/avatar-8.png create mode 100644 src/assets/images/avatars/avatar-9.png create mode 100644 src/assets/images/eCommerce/2.png create mode 100644 src/assets/images/logo.svg create mode 100644 src/assets/images/logos/american-bank.png create mode 100644 src/assets/images/logos/aviato.png create mode 100644 src/assets/images/logos/aws.png create mode 100644 src/assets/images/logos/bitbank.png create mode 100644 src/assets/images/logos/chrome.png create mode 100644 src/assets/images/logos/citi-bank.png create mode 100644 src/assets/images/logos/digital-ocean.png create mode 100644 src/assets/images/logos/github.png create mode 100644 src/assets/images/logos/google.png create mode 100644 src/assets/images/logos/gumroad.png create mode 100644 src/assets/images/logos/mastercard-label.png create mode 100644 src/assets/images/logos/slack.png create mode 100644 src/assets/images/logos/stripe.png create mode 100644 src/assets/images/logos/zipcar.png create mode 100644 src/assets/images/misc/pricing-tree-1.png create mode 100644 src/assets/images/misc/pricing-tree-2.png create mode 100644 src/assets/images/misc/pricing-tree-3.png create mode 100644 src/assets/images/misc/triangle-dark.png create mode 100644 src/assets/images/misc/triangle-light.png create mode 100644 src/assets/images/misc/trophy.png create mode 100644 src/assets/images/pages/1.png create mode 100644 src/assets/images/pages/2.png create mode 100644 src/assets/images/pages/3.png create mode 100644 src/assets/images/pages/404.png create mode 100644 src/assets/images/pages/5.jpg create mode 100644 src/assets/images/pages/6.jpg create mode 100644 src/assets/images/pages/auth-v1-mask-dark.png create mode 100644 src/assets/images/pages/auth-v1-mask-light.png create mode 100644 src/assets/images/pages/auth-v1-tree-2.png create mode 100644 src/assets/images/pages/auth-v1-tree.png create mode 100644 src/assets/images/pages/auth-v2-mask-dark.png create mode 100644 src/assets/images/pages/auth-v2-mask-light.png create mode 100644 src/assets/images/pages/auth-v2-register-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-register-illustration-light.png create mode 100644 src/assets/images/pages/misc-mask-dark.png create mode 100644 src/assets/images/pages/misc-mask-light.png create mode 100644 src/assets/images/pages/pose-fs-9.png create mode 100644 src/assets/images/pages/tree-2.png create mode 100644 src/assets/images/pages/tree-3.png create mode 100644 src/assets/images/pages/tree.png create mode 100644 src/assets/images/pro/upgrade-banner-dark.png create mode 100644 src/assets/images/pro/upgrade-banner-light.png create mode 100644 src/assets/images/svg/discord.svg create mode 100644 src/assets/images/svg/gift.svg create mode 100644 src/assets/images/svg/keyboard.svg create mode 100644 src/assets/images/svg/laptop.svg create mode 100644 src/assets/images/svg/lightbulb.svg create mode 100644 src/assets/images/svg/paypal.svg create mode 100644 src/assets/images/svg/rocket.svg create mode 100644 src/components/ErrorHeader.vue create mode 100644 src/layouts/blank.vue create mode 100644 src/layouts/components/DefaultLayoutWithVerticalNav.vue create mode 100644 src/layouts/components/Footer.vue create mode 100644 src/layouts/components/NavbarThemeSwitcher.vue create mode 100644 src/layouts/components/UserProfile.vue create mode 100644 src/layouts/default.vue create mode 100644 src/main.ts create mode 100644 src/pages/[...all].vue create mode 100644 src/pages/account-settings.vue create mode 100644 src/pages/card-basic.vue create mode 100644 src/pages/cards.vue create mode 100644 src/pages/dashboard.vue create mode 100644 src/pages/form-layouts.vue create mode 100644 src/pages/icons.vue create mode 100644 src/pages/login.vue create mode 100644 src/pages/register.vue create mode 100644 src/pages/tables.vue create mode 100644 src/pages/typography.vue create mode 100644 src/plugins/vuetify/defaults.ts create mode 100644 src/plugins/vuetify/icons.ts create mode 100644 src/plugins/vuetify/index.ts create mode 100644 src/plugins/vuetify/theme.ts create mode 100644 src/plugins/webfontloader.ts create mode 100644 src/router/index.ts create mode 100644 src/styles/styles.scss create mode 100644 src/styles/variables/_template.scss create mode 100644 src/styles/variables/_vuetify.scss create mode 100644 src/views/dashboard/AnalyticsAward.vue create mode 100644 src/views/dashboard/AnalyticsBarCharts.vue create mode 100644 src/views/dashboard/AnalyticsDepositWithdraw.vue create mode 100644 src/views/dashboard/AnalyticsSalesByCountries.vue create mode 100644 src/views/dashboard/AnalyticsTotalEarning.vue create mode 100644 src/views/dashboard/AnalyticsTotalProfitLineCharts.vue create mode 100644 src/views/dashboard/AnalyticsTransactions.vue create mode 100644 src/views/dashboard/AnalyticsUserTable.vue create mode 100644 src/views/dashboard/AnalyticsWeeklyOverview.vue create mode 100644 src/views/pages/account-settings/AccountSettingsAccount.vue create mode 100644 src/views/pages/account-settings/AccountSettingsNotification.vue create mode 100644 src/views/pages/account-settings/AccountSettingsSecurity.vue create mode 100644 src/views/pages/authentication/AuthProvider.vue create mode 100644 src/views/pages/cards/card-basic/CardBasic.vue create mode 100644 src/views/pages/cards/card-basic/CardNavigation.vue create mode 100644 src/views/pages/cards/card-basic/CardSolid.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsAreaCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsBarCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsBarWithGapCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsLineCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsRadialBarCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsTotalProfitLineCharts.vue create mode 100644 src/views/pages/cards/card-statistics/CardStatisticsTransactions.vue create mode 100644 src/views/pages/form-layouts/DemoFormLayoutHorizontalForm.vue create mode 100644 src/views/pages/form-layouts/DemoFormLayoutHorizontalFormWithIcons.vue create mode 100644 src/views/pages/form-layouts/DemoFormLayoutMultipleColumn.vue create mode 100644 src/views/pages/form-layouts/DemoFormLayoutVerticalForm.vue create mode 100644 src/views/pages/form-layouts/DemoFormLayoutVerticalFormWithIcons.vue create mode 100644 src/views/pages/tables/DemoSimpleTableBasics.vue create mode 100644 src/views/pages/tables/DemoSimpleTableDensity.vue create mode 100644 src/views/pages/tables/DemoSimpleTableFixedHeader.vue create mode 100644 src/views/pages/tables/DemoSimpleTableHeight.vue create mode 100644 src/views/pages/tables/DemoSimpleTableTheme.vue create mode 100644 src/views/user-interface/form-layouts/DemoFormLayoutHorizontalForm.vue create mode 100644 src/views/user-interface/form-layouts/DemoFormLayoutHorizontalFormWithIcons.vue create mode 100644 src/views/user-interface/form-layouts/DemoFormLayoutMultipleColumn.vue create mode 100644 src/views/user-interface/form-layouts/DemoFormLayoutVerticalForm.vue create mode 100644 src/views/user-interface/form-layouts/DemoFormLayoutVerticalFormWithIcons.vue create mode 100644 src/views/user-interface/tables/TableBasic.vue create mode 100644 src/views/user-interface/tables/TableDark.vue create mode 100644 src/views/user-interface/tables/TableDensity.vue create mode 100644 src/views/user-interface/tables/TableFixedHeader.vue create mode 100644 src/views/user-interface/tables/TableHeight.vue create mode 100644 src/views/user-interface/typography/TypographyHeadlines.vue create mode 100644 src/views/user-interface/typography/TypographyTexts.vue create mode 100644 tsconfig.json create mode 100644 vite.config.ts create mode 100644 yarn.lock diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..63c8c4cc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,38 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*.{js,py}] +charset = utf-8 + +# 4 space indentation +[*.py] +indent_style = space +indent_size = 4 + +# 2 space indentation +[*.{vue,scss,ts}] +indent_style = space +indent_size = 2 + +# Tab indentation (no size specified) +[Makefile] +indent_style = tab + +# Indentation override for all JS under lib directory +[lib/**.js] +indent_style = space +indent_size = 2 + +# Matches the exact files either package.json or .travis.yml +[{package.json,.travis.yml}] +indent_style = space +indent_size = 2 diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 00000000..0c545731 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,243 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + '@antfu/eslint-config-vue', + 'plugin:vue/vue3-recommended', + 'plugin:import/recommended', + 'plugin:import/typescript', + 'plugin:promise/recommended', + 'plugin:sonarjs/recommended', + 'plugin:@typescript-eslint/recommended', + + // 'plugin:unicorn/recommended', + ], + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 13, + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + plugins: [ + 'vue', + '@typescript-eslint', + 'regex', + ], + ignorePatterns: ['src/@iconify/*.js', 'node_modules', 'dist', '*.d.ts'], + rules: { + 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', + + // indentation (Already present in TypeScript) + 'comma-spacing': ['error', { before: false, after: true }], + 'key-spacing': ['error', { afterColon: true }], + + 'vue/first-attribute-linebreak': ['error', { + singleline: 'beside', + multiline: 'below', + }], + + 'antfu/top-level-function': 'off', + + // indentation (Already present in TypeScript) + 'indent': ['error', 2], + + // Enforce trailing comma (Already present in TypeScript) + 'comma-dangle': ['error', 'always-multiline'], + + // Enforce consistent spacing inside braces of object (Already present in TypeScript) + 'object-curly-spacing': ['error', 'always'], + + // Disable max-len + 'max-len': 'off', + + // we don't want it + 'semi': ['error', 'never'], + + // add parens ony when required in arrow function + 'arrow-parens': ['error', 'as-needed'], + + // add new line above comment + 'newline-before-return': 'error', + + // add new line above comment + 'lines-around-comment': [ + 'error', + { + beforeBlockComment: true, + beforeLineComment: true, + allowBlockStart: true, + allowClassStart: true, + allowObjectStart: true, + allowArrayStart: true, + }, + ], + + // Ignore _ as unused variable + '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_+$' }], + + 'array-element-newline': ['error', 'consistent'], + 'array-bracket-newline': ['error', 'consistent'], + + 'vue/multi-word-component-names': 'off', + + 'padding-line-between-statements': [ + 'error', + { blankLine: 'always', prev: 'expression', next: 'const' }, + { blankLine: 'always', prev: 'const', next: 'expression' }, + { blankLine: 'always', prev: 'multiline-const', next: '*' }, + { blankLine: 'always', prev: '*', next: 'multiline-const' }, + ], + + // Plugin: eslint-plugin-import + 'import/prefer-default-export': 'off', + 'import/newline-after-import': ['error', { count: 1 }], + 'no-restricted-imports': ['error', 'vuetify/components'], + + // For omitting extension for ts files + 'import/extensions': [ + 'error', + 'ignorePackages', + { + js: 'never', + jsx: 'never', + ts: 'never', + tsx: 'never', + }, + ], + + // ignore virtual files + 'import/no-unresolved': [2, { + ignore: [ + '~pages$', + 'virtual:generated-layouts', + + // Ignore vite's ?raw imports + '.*\?raw', + ], + }], + + // Thanks: https://stackoverflow.com/a/63961972/10796681 + 'no-shadow': 'off', + '@typescript-eslint/no-shadow': ['error'], + + '@typescript-eslint/consistent-type-imports': 'error', + + // Plugin: eslint-plugin-promise + 'promise/always-return': 'off', + 'promise/catch-or-return': 'off', + + // ESLint plugin vue + 'vue/block-tag-newline': 'error', + 'vue/component-api-style': 'error', + 'vue/component-name-in-template-casing': ['error', 'PascalCase', { registeredComponentsOnly: false }], + 'vue/custom-event-name-casing': ['error', 'camelCase', { + ignores: [ + '/^(click):[a-z]+((\d)|([A-Z0-9][a-z0-9]+))*([A-Z])?/', + ], + }], + 'vue/define-macros-order': 'error', + 'vue/html-comment-content-newline': 'error', + 'vue/html-comment-content-spacing': 'error', + 'vue/html-comment-indent': 'error', + 'vue/match-component-file-name': 'error', + 'vue/no-child-content': 'error', + 'vue/require-default-prop': 'off', + + // NOTE this rule only supported in SFC, Users of the unplugin-vue-define-options should disable that rule: https://github.com/vuejs/eslint-plugin-vue/issues/1886 + // 'vue/no-duplicate-attr-inheritance': 'error', + 'vue/no-empty-component-block': 'error', + 'vue/no-multiple-objects-in-class': 'error', + 'vue/no-reserved-component-names': 'error', + 'vue/no-template-target-blank': 'error', + 'vue/no-useless-mustaches': 'error', + 'vue/no-useless-v-bind': 'error', + 'vue/padding-line-between-blocks': 'error', + 'vue/prefer-separate-static-class': 'error', + 'vue/prefer-true-attribute-shorthand': 'error', + 'vue/v-on-function-call': 'error', + 'vue/no-restricted-class': ['error', '/^(p|m)(l|r)-/'], + 'vue/valid-v-slot': ['error', { + allowModifiers: true, + }], + + // -- Extension Rules + 'vue/no-irregular-whitespace': 'error', + 'vue/template-curly-spacing': 'error', + + // -- Sonarlint + 'sonarjs/no-duplicate-string': 'off', + 'sonarjs/no-nested-template-literals': 'off', + + // -- Unicorn + // 'unicorn/filename-case': 'off', + // 'unicorn/prevent-abbreviations': ['error', { + // replacements: { + // props: false, + // }, + // }], + + // Internal Rules + 'valid-appcardcode-code-prop': 'error', + 'valid-appcardcode-demo-sfc': 'error', + + // https://github.com/gmullerb/eslint-plugin-regex + 'regex/invalid': [ + 'error', + [ + { + regex: '@/assets/images', + replacement: '@images', + message: 'Use \'@images\' path alias for image imports', + }, + { + regex: '@/styles', + replacement: '@styles', + message: 'Use \'@styles\' path alias for importing styles from \'src/styles\'', + }, + + // { + // id: 'Disallow icon of icon library', + // regex: 'tabler-\\w', + // message: 'Only \'mdi\' icons are allowed', + // }, + + { + regex: '@core/\\w', + message: 'You can\'t use @core when you are in @layouts module', + files: { + inspect: '@layouts/.*', + }, + }, + { + regex: 'useLayouts\\(', + message: '`useLayouts` composable is only allowed in @layouts & @core directory. Please use `useThemeConfig` composable instead.', + files: { + inspect: '^(?!.*(@core|@layouts)).*', + }, + }, + { + regex: 'import axios from \'axios\'', + replacement: 'import axios from \'@axios\'', + message: 'Use axios instances created in \'src/plugin/axios.ts\' instead of unconfigured axios', + files: { + ignore: '^.*plugins/axios.ts.*', + }, + }, + ], + + // Ignore files + '\.eslintrc\.js', + ], + }, + settings: { + 'import/resolver': { + node: { + extensions: ['.ts', '.js', '.tsx', '.jsx', '.mjs', '.png', '.jpg'], + }, + typescript: {}, + }, + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..52fb4278 --- /dev/null +++ b/.gitignore @@ -0,0 +1,34 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +!.vscode/settings.json +!.vscode/*.code-snippets +!.vscode/tours +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.yarn + +# iconify dist files +src/@iconify/*.js diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..db4c6d9b --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +dist +node_modules \ No newline at end of file diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 00000000..9b8b61a5 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,20 @@ +{ + "arrowParens": "avoid", + "bracketSpacing": true, + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": true, + "printWidth": 120, + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": false, + "singleQuote": true, + "tabWidth": 2, + "trailingComma": "all", + "useTabs": false, + "vueIndentScriptAndStyle": false, + "endOfLine": "lf", + "singleAttributePerLine": true +} \ No newline at end of file diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 00000000..2d810175 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,34 @@ +{ + "extends": [ + "stylelint-config-standard-scss", + "stylelint-config-idiomatic-order" + ], + "plugins": [ + "stylelint-use-logical-spec" + ], + "overrides": [ + { + "files": [ + "**/*.scss" + ], + "customSyntax": "postcss-scss" + }, + { + "files": [ + "**/*.vue" + ], + "customSyntax": "postcss-html" + } + ], + "rules": { + "max-line-length": [ + 120, + { + "ignore": "comments" + } + ], + "liberty/use-logical-spec": true, + "selector-class-pattern": null, + "color-function-notation": null + } +} diff --git a/.vscode/anchor-comments.code-snippets b/.vscode/anchor-comments.code-snippets new file mode 100644 index 00000000..7342c887 --- /dev/null +++ b/.vscode/anchor-comments.code-snippets @@ -0,0 +1,23 @@ +{ + "Add hand emoji": { + "prefix": "cm-hand-emoji", + "body": [ + "👉" + ], + "description": "Add hand emoji" + }, + "Add info emoji": { + "prefix": "cm-info-emoji", + "body": [ + "â„šī¸" + ], + "description": "Add info emoji" + }, + "Add warning emoji": { + "prefix": "cm-warning-emoji", + "body": [ + "❗" + ], + "description": "Add warning emoji" + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..4286b3f2 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "mgmcdermott.vscode-language-babel", + "editorconfig.editorconfig", + "xabikos.javascriptsnippets", + "stylelint.vscode-stylelint", + "fabiospampinato.vscode-highlight", + "github.vscode-pull-request-github", + "vue.volar", + "antfu.iconify", + "cipchk.cssrem", + "matijao.vue-nuxt-snippets" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..39a5287a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,113 @@ +{ + "editor.formatOnSave": true, + "javascript.updateImportsOnFileMove.enabled": "always", + "[javascript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "[typescript]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + "editor.autoClosingBrackets": "always" + }, + "[markdown]": { + "editor.defaultFormatter": "DavidAnson.vscode-markdownlint" + }, + // SCSS + "[scss]": { + "editor.defaultFormatter": "stylelint.vscode-stylelint" + }, + // JSON + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + "[jsonc]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + // Vue + "[vue]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint", + }, + // Extension: Volar + "volar.preview.port": 3000, + "volar.completion.preferredTagNameCase": "pascal", + // Extension: ESLint + "eslint.options": { + "rulePaths": [ + "eslint-internal-rules" + ] + }, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true, + "source.fixAll.stylelint": true, + "source.organizeImports": true, + }, + "eslint.alwaysShowStatus": true, + "eslint.format.enable": true, + "eslint.packageManager": "yarn", + // Extension: Stylelint + "stylelint.packageManager": "yarn", + "stylelint.validate": [ + "css", + "scss", + "vue" + ], + // Extension: Spell Checker + "cSpell.words": [ + "Composables", + "Customizer", + "flagpack", + "Iconify", + "psudo", + "stylelint", + "touchless", + "triggerer", + "vuetify" + ], + // Extension: Comment Anchors + "commentAnchors.tags.list": [ + { + "tag": "â„šī¸", + "scope": "hidden", + // This color is taken from "Better Comments" Extension (?) + "highlightColor": "#3498DB", + "styleComment": true, + "isItalic": false, + }, + { + "tag": "👉", + "scope": "file", + // This color is taken from "Better Comments" Extension (*) + "highlightColor": "#98C379", + "styleComment": true, + "isItalic": false + }, + { + "tag": "❗", + "scope": "hidden", + // This color is taken from "Better Comments" Extension (*) + "highlightColor": "#FF2D00", + "styleComment": true, + "isItalic": false, + }, + ], + // Extension: fabiospampinato.vscode-highlight + "highlight.regexFlags": "gi", + "highlight.regexes": { + // We flaged this for enforcing logical CSS properties + "(100vh|translate|margin:|padding:|margin-left|margin-right|rotate|text-align|border-top|border-right|border-bottom|border-left|float|background-position|transform|width|height|top|left|bottom|right|float|clear|(p|m)(l|r)-|border-(start|end)-(start|end)-radius)": [ + { + // "rangeBehavior": 1, + "borderWidth": "1px", + "borderColor": "tomato", + "borderStyle": "solid" + } + ], + "(overflow-x:|overflow-y:)": [ + { + // "rangeBehavior": 1, + "borderWidth": "1px", + "borderColor": "green", + "borderStyle": "solid" + } + ] + } +} \ No newline at end of file diff --git a/.vscode/vue-ts.code-snippets b/.vscode/vue-ts.code-snippets new file mode 100644 index 00000000..360713ab --- /dev/null +++ b/.vscode/vue-ts.code-snippets @@ -0,0 +1,18 @@ +{ + "Vue TS - DefineProps": { + "prefix": "dprops", + "body": [ + "defineProps<${1:Props}>()" + ], + "description": "DefineProps in script setup" + }, + "Vue TS - Props interface": { + "prefix": "iprops", + "body": [ + "interface Props {", + " ${1}", + "}" + ], + "description": "Create props interface in script setup" + } +} diff --git a/.vscode/vue.code-snippets b/.vscode/vue.code-snippets new file mode 100644 index 00000000..68d4bf01 --- /dev/null +++ b/.vscode/vue.code-snippets @@ -0,0 +1,63 @@ +{ + "script": { + "prefix": "vue-sfc-ts", + "body": [ + "", + "", + "", + "", + "", + "" + ], + "description": "Vue SFC Typescript" + }, + "template": { + "scope": "vue", + "prefix": "template", + "body": [ + "" + ], + "description": "Create