From 8c2014b6dca515e577fedd3e3f4ed981fee99a78 Mon Sep 17 00:00:00 2001 From: MCMichinator Date: Sun, 9 Jun 2024 17:36:22 +0200 Subject: [PATCH] Add new Version --- .dockerignore | 2 + .editorconfig | 38 + .env.example | 1 + .eslintrc-auto-import.json | 356 + .eslintrc.cjs | 228 + .gitignore | 43 + .npmrc | 2 + .nvmrc | 1 + .stylelintrc.json | 46 + .vscode/anchor-comments.code-snippets | 23 + .vscode/extensions.json | 15 + .vscode/settings.json | 96 + .vscode/vue-ts.code-snippets | 18 + .vscode/vue.code-snippets | 63 + .vscode/vuetify.code-snippets | 52 + README.md | 35 + auto-imports.d.ts | 1049 ++ components.d.ts | 67 + dev.Dockerfile | 25 + docker-compose.dev.yml | 14 + docker-compose.prod.yml | 11 + index.html | 54 + jsconfig.json | 57 + nginx.conf | 14 + package-lock.json | 13114 ++++++++++++++++ package.json | 125 + pnpm-lock.yaml | 7963 ++++++++++ prod.Dockerfile | 41 + public/favicon.ico | Bin 0 -> 4286 bytes public/images/avatars/avatar-1.png | Bin 0 -> 13543 bytes public/images/avatars/avatar-2.png | Bin 0 -> 15715 bytes public/images/svg/discord.svg | 10 + public/images/svg/gift.svg | 8 + public/images/svg/keyboard.svg | 8 + public/images/svg/laptop.svg | 8 + public/images/svg/lightbulb.svg | 8 + public/images/svg/rocket.svg | 8 + public/loader.css | 79 + src/@core/components/AppBarSearch.vue | 288 + .../components/AppDrawerHeaderSection.vue | 31 + src/@core/components/AppStepper.vue | 359 + src/@core/components/BuyNow.vue | 91 + .../CardStatisticsVerticalSimple.vue | 44 + src/@core/components/CustomizerSection.vue | 30 + src/@core/components/DialogCloseBtn.vue | 28 + src/@core/components/DropZone.vue | 129 + src/@core/components/I18n.vue | 49 + src/@core/components/MoreBtn.vue | 28 + src/@core/components/Notifications.vue | 247 + .../components/ProductDescriptionEditor.vue | 203 + src/@core/components/ScrollToTop.vue | 41 + src/@core/components/Shortcuts.vue | 95 + src/@core/components/TablePagination.vue | 42 + src/@core/components/TheCustomizer.vue | 612 + src/@core/components/ThemeSwitcher.vue | 58 + src/@core/components/TiptapEditor.vue | 171 + .../app-form-elements/AppAutocomplete.vue | 57 + .../app-form-elements/AppCombobox.vue | 57 + .../app-form-elements/AppDateTimePicker.vue | 537 + .../app-form-elements/AppSelect.vue | 50 + .../app-form-elements/AppTextField.vue | 49 + .../app-form-elements/AppTextarea.vue | 50 + .../app-form-elements/CustomCheckboxes.vue | 83 + .../CustomCheckboxesWithIcon.vue | 97 + .../CustomCheckboxesWithImage.vue | 95 + .../app-form-elements/CustomRadios.vue | 83 + .../CustomRadiosWithIcon.vue | 89 + .../CustomRadiosWithImage.vue | 101 + src/@core/components/cards/AppCardActions.vue | 183 + src/@core/components/cards/AppCardCode.vue | 159 + .../cards/CardStatisticsHorizontal.vue | 50 + .../cards/CardStatisticsVertical.vue | 66 + src/@core/composable/createUrl.js | 11 + src/@core/composable/useCookie.js | 28 + .../composable/useGenerateImageVariant.js | 23 + src/@core/composable/useResponsiveSidebar.js | 23 + src/@core/composable/useSkins.js | 37 + src/@core/enums.js | 18 + src/@core/index.js | 40 + src/@core/initCore.js | 81 + src/@core/libs/apex-chart/apexCharConfig.js | 689 + src/@core/libs/chartjs/chartjsConfig.js | 372 + src/@core/libs/chartjs/components/BarChart.js | 54 + .../libs/chartjs/components/BubbleChart.js | 54 + .../libs/chartjs/components/DoughnutChart.js | 54 + .../libs/chartjs/components/LineChart.js | 54 + .../libs/chartjs/components/PolarAreaChart.js | 54 + .../libs/chartjs/components/RadarChart.js | 54 + .../libs/chartjs/components/ScatterChart.js | 54 + src/@core/scss/base/_components.scss | 185 + src/@core/scss/base/_dark.scss | 16 + .../_default-layout-w-horizontal-nav.scss | 45 + .../base/_default-layout-w-vertical-nav.scss | 103 + src/@core/scss/base/_default-layout.scss | 16 + src/@core/scss/base/_horizontal-nav.scss | 194 + src/@core/scss/base/_index.scss | 48 + src/@core/scss/base/_layouts.scss | 63 + src/@core/scss/base/_misc.scss | 20 + src/@core/scss/base/_mixins.scss | 63 + src/@core/scss/base/_route-transitions.scss | 70 + src/@core/scss/base/_utilities.scss | 181 + src/@core/scss/base/_utils.scss | 90 + src/@core/scss/base/_variables.scss | 198 + src/@core/scss/base/_vertical-nav.scss | 255 + .../scss/base/libs/_perfect-scrollbar.scss | 35 + src/@core/scss/base/libs/vuetify/_index.scss | 1 + .../scss/base/libs/vuetify/_overrides.scss | 264 + .../scss/base/libs/vuetify/_variables.scss | 62 + .../_default-layout-horizontal-nav.scss | 27 + .../_default-layout-vertical-nav.scss | 45 + .../base/placeholders/_default-layout.scss | 3 + .../base/placeholders/_horizontal-nav.scss | 98 + src/@core/scss/base/placeholders/_index.scss | 7 + src/@core/scss/base/placeholders/_misc.scss | 7 + src/@core/scss/base/placeholders/_nav.scss | 33 + .../scss/base/placeholders/_vertical-nav.scss | 80 + src/@core/scss/base/skins/_bordered.scss | 72 + src/@core/scss/base/skins/_index.scss | 1 + .../_default-layout-w-horizontal-nav.scss | 9 + .../_default-layout-w-vertical-nav.scss | 20 + src/@core/scss/template/_horizontal-nav.scss | 40 + src/@core/scss/template/_mixins.scss | 6 + src/@core/scss/template/_utilities.scss | 49 + src/@core/scss/template/_variables.scss | 102 + src/@core/scss/template/_vertical-nav.scss | 47 + src/@core/scss/template/index.scss | 17 + src/@core/scss/template/libs/apex-chart.scss | 108 + .../scss/template/libs/full-calendar.scss | 351 + src/@core/scss/template/libs/shepherd.scss | 94 + src/@core/scss/template/libs/swiper.scss | 5 + .../template/libs/vuetify/_variables.scss | 351 + .../libs/vuetify/components/_alert.scss | 114 + .../libs/vuetify/components/_avatar.scss | 27 + .../libs/vuetify/components/_badge.scss | 25 + .../libs/vuetify/components/_button.scss | 280 + .../libs/vuetify/components/_cards.scss | 3 + .../libs/vuetify/components/_checkbox.scss | 57 + .../libs/vuetify/components/_chip.scss | 102 + .../libs/vuetify/components/_dialog.scss | 27 + .../vuetify/components/_expansion-panels.scss | 106 + .../libs/vuetify/components/_field.scss | 308 + .../libs/vuetify/components/_list.scss | 30 + .../libs/vuetify/components/_menu.scss | 35 + .../libs/vuetify/components/_otp-input.scss | 17 + .../libs/vuetify/components/_pagination.scss | 140 + .../libs/vuetify/components/_progress.scss | 13 + .../libs/vuetify/components/_radio.scss | 46 + .../libs/vuetify/components/_rating.scss | 20 + .../libs/vuetify/components/_slider.scss | 27 + .../libs/vuetify/components/_snackbar.scss | 10 + .../libs/vuetify/components/_switch.scss | 58 + .../libs/vuetify/components/_table.scss | 48 + .../libs/vuetify/components/_tabs.scss | 91 + .../libs/vuetify/components/_textarea.scss | 9 + .../libs/vuetify/components/_timeline.scss | 99 + .../libs/vuetify/components/_tooltip.scss | 6 + .../libs/vuetify/components/index.scss | 25 + .../scss/template/libs/vuetify/index.scss | 3 + .../scss/template/libs/vuetify/overrides.scss | 18 + src/@core/scss/template/pages/misc.scss | 20 + src/@core/scss/template/pages/page-auth.scss | 63 + .../_default-layout-horizontal-nav.scss | 7 + .../_default-layout-vertical-nav.scss | 8 + .../placeholders/_horizontal-nav.scss | 47 + .../scss/template/placeholders/_index.scss | 6 + .../scss/template/placeholders/_misc.scss | 3 + .../scss/template/placeholders/_nav.scss | 27 + .../template/placeholders/_vertical-nav.scss | 35 + src/@core/scss/template/skins/_bordered.scss | 82 + src/@core/scss/template/skins/_index.scss | 1 + src/@core/stores/config.js | 63 + src/@core/types.js | 1 + src/@core/utils/formatters.js | 46 + src/@core/utils/helpers.js | 29 + src/@core/utils/plugins.js | 49 + src/@core/utils/validators.js | 95 + src/@core/utils/vuetify.js | 12 + src/@layouts/components.js | 11 + src/@layouts/components/HorizontalNav.vue | 40 + .../components/HorizontalNavGroup.vue | 117 + .../components/HorizontalNavLayout.vue | 153 + src/@layouts/components/HorizontalNavLink.vue | 60 + .../components/HorizontalNavPopper.vue | 214 + src/@layouts/components/TransitionExpand.vue | 87 + src/@layouts/components/VNodeRenderer.jsx | 12 + src/@layouts/components/VerticalNav.vue | 245 + src/@layouts/components/VerticalNavGroup.vue | 218 + src/@layouts/components/VerticalNavLayout.vue | 197 + src/@layouts/components/VerticalNavLink.vue | 74 + .../components/VerticalNavSectionTitle.vue | 39 + src/@layouts/config.js | 42 + src/@layouts/enums.js | 23 + src/@layouts/index.js | 44 + src/@layouts/plugins/casl.js | 41 + src/@layouts/stores/config.js | 115 + src/@layouts/styles/_classes.scss | 3 + src/@layouts/styles/_default-layout.scss | 35 + src/@layouts/styles/_global.scss | 10 + src/@layouts/styles/_mixins.scss | 30 + src/@layouts/styles/_placeholders.scss | 53 + src/@layouts/styles/_rtl.scss | 7 + src/@layouts/styles/_variables.scss | 29 + src/@layouts/styles/index.scss | 3 + src/@layouts/symbols.js | 1 + src/@layouts/types.js | 1 + src/@layouts/utils.js | 169 + src/App.vue | 29 + src/assets/images/avatars/avatar-1.png | Bin 0 -> 13543 bytes src/assets/images/avatars/avatar-10.png | Bin 0 -> 17112 bytes src/assets/images/avatars/avatar-11.png | Bin 0 -> 13944 bytes src/assets/images/avatars/avatar-12.png | Bin 0 -> 16153 bytes src/assets/images/avatars/avatar-13.png | Bin 0 -> 16040 bytes src/assets/images/avatars/avatar-14.png | Bin 0 -> 15773 bytes src/assets/images/avatars/avatar-15.png | Bin 0 -> 15852 bytes src/assets/images/avatars/avatar-2.png | Bin 0 -> 15715 bytes src/assets/images/avatars/avatar-3.png | Bin 0 -> 14590 bytes src/assets/images/avatars/avatar-4.png | Bin 0 -> 15490 bytes src/assets/images/avatars/avatar-5.png | Bin 0 -> 14799 bytes src/assets/images/avatars/avatar-6.png | Bin 0 -> 16277 bytes src/assets/images/avatars/avatar-7.png | Bin 0 -> 13815 bytes src/assets/images/avatars/avatar-8.png | Bin 0 -> 16376 bytes src/assets/images/avatars/avatar-9.png | Bin 0 -> 18005 bytes .../images/cards/logo-mastercard-small.png | Bin 0 -> 3048 bytes src/assets/images/cards/paypal-primary.png | Bin 0 -> 673 bytes src/assets/images/cards/paypal-rounded.png | Bin 0 -> 924 bytes .../images/customizer-icons/border-light.svg | 16 + .../customizer-icons/collapsed-light.svg | 17 + .../images/customizer-icons/compact-light.svg | 11 + .../images/customizer-icons/default-light.svg | 17 + .../customizer-icons/horizontal-light.svg | 12 + .../images/customizer-icons/ltr-light.svg | 15 + .../images/customizer-icons/rtl-light.svg | 15 + .../images/customizer-icons/wide-light.svg | 11 + src/assets/images/icons/payments/ae-icon.png | Bin 0 -> 3224 bytes .../icons/payments/american-express.png | Bin 0 -> 8336 bytes .../images/icons/payments/img/ae-dark.png | Bin 0 -> 2167 bytes .../icons/payments/img/american-express.png | Bin 0 -> 1617 bytes .../images/icons/payments/img/dc-dark.png | Bin 0 -> 1311 bytes .../images/icons/payments/img/dc-light.png | Bin 0 -> 1339 bytes .../images/icons/payments/img/jcb-dark.png | Bin 0 -> 1265 bytes .../images/icons/payments/img/jcb-light.png | Bin 0 -> 1276 bytes .../images/icons/payments/img/master-dark.png | Bin 0 -> 2455 bytes .../images/icons/payments/img/mastercard.png | Bin 0 -> 2454 bytes .../images/icons/payments/img/paypal-dark.png | Bin 0 -> 1397 bytes .../icons/payments/img/paypal-light.png | Bin 0 -> 1359 bytes .../images/icons/payments/img/visa-dark.png | Bin 0 -> 1749 bytes .../images/icons/payments/img/visa-light.png | Bin 0 -> 1770 bytes .../images/icons/payments/mastercard-icon.png | Bin 0 -> 3644 bytes .../images/icons/payments/mastercard.png | Bin 0 -> 1452 bytes .../images/icons/payments/visa-icon.png | Bin 0 -> 2376 bytes src/assets/images/icons/payments/visa.png | Bin 0 -> 2805 bytes .../images/illustrations/boy-app-academy.png | Bin 0 -> 39377 bytes .../illustrations/congo-illustration.png | Bin 0 -> 14740 bytes .../images/illustrations/girl-app-academy.png | Bin 0 -> 41975 bytes .../images/illustrations/laptop-girl.png | Bin 0 -> 44793 bytes .../register-multi-step-illustration-dark.png | Bin 0 -> 33109 bytes ...register-multi-step-illustration-light.png | Bin 0 -> 34024 bytes .../images/illustrations/sidebar-pic-1.png | Bin 0 -> 24539 bytes .../images/illustrations/sidebar-pic-2.png | Bin 0 -> 37015 bytes .../images/illustrations/sidebar-pic-3.png | Bin 0 -> 26761 bytes .../sitting-girl-with-laptop.png | Bin 0 -> 28370 bytes .../images/illustrations/standingGirlImg.png | Bin 0 -> 35961 bytes src/assets/images/logo.svg | 6 + .../3d-safe-box-with-golden-dollar-coins.png | Bin 0 -> 14271 bytes .../misc/3d-space-rocket-with-smoke.png | Bin 0 -> 11290 bytes .../dollar-coins-flying-pink-piggy-bank.png | Bin 0 -> 10287 bytes src/assets/images/misc/fleet-car.png | Bin 0 -> 6857 bytes src/assets/images/pages/1.png | Bin 0 -> 88584 bytes src/assets/images/pages/2.png | Bin 0 -> 46099 bytes src/assets/images/pages/3.png | Bin 0 -> 58413 bytes src/assets/images/pages/401.png | Bin 0 -> 29837 bytes src/assets/images/pages/404.png | Bin 0 -> 34389 bytes src/assets/images/pages/5.jpg | Bin 0 -> 6790 bytes src/assets/images/pages/6.jpg | Bin 0 -> 55890 bytes .../images/pages/DealTypeBackground-dark.png | Bin 0 -> 2891 bytes .../images/pages/DealTypeBackground-light.png | Bin 0 -> 2344 bytes .../images/pages/TimelineRectangle1.png | Bin 0 -> 16638 bytes .../images/pages/TimelineRectangle2.png | Bin 0 -> 10012 bytes .../images/pages/TimelineRectangle3.png | Bin 0 -> 14744 bytes .../images/pages/TimelineRectangle4.png | Bin 0 -> 22560 bytes .../pages/academy-course-illustration1.png | Bin 0 -> 44790 bytes .../pages/academy-course-illustration2.png | Bin 0 -> 10976 bytes .../images/pages/app-academy-tutor-1.png | Bin 0 -> 74785 bytes .../images/pages/app-academy-tutor-2.png | Bin 0 -> 61223 bytes .../images/pages/app-academy-tutor-3.png | Bin 0 -> 83683 bytes .../images/pages/app-academy-tutor-4.png | Bin 0 -> 89959 bytes .../images/pages/app-academy-tutor-5.png | Bin 0 -> 89275 bytes .../images/pages/app-academy-tutor-6.png | Bin 0 -> 75188 bytes .../images/pages/app-search-header-bg.png | Bin 0 -> 31097 bytes ...h-v2-forgot-password-illustration-dark.png | Bin 0 -> 49258 bytes ...-v2-forgot-password-illustration-light.png | Bin 0 -> 48149 bytes ...th-v2-login-illustration-bordered-dark.png | Bin 0 -> 50857 bytes ...h-v2-login-illustration-bordered-light.png | Bin 0 -> 50076 bytes .../pages/auth-v2-login-illustration-dark.png | Bin 0 -> 54926 bytes .../auth-v2-login-illustration-light.png | Bin 0 -> 55244 bytes ...v2-register-illustration-bordered-dark.png | Bin 0 -> 84246 bytes ...2-register-illustration-bordered-light.png | Bin 0 -> 105130 bytes .../auth-v2-register-illustration-dark.png | Bin 0 -> 88378 bytes .../auth-v2-register-illustration-light.png | Bin 0 -> 112804 bytes ...th-v2-reset-password-illustration-dark.png | Bin 0 -> 99787 bytes ...h-v2-reset-password-illustration-light.png | Bin 0 -> 24410 bytes .../auth-v2-two-step-illustration-dark.png | Bin 0 -> 49857 bytes .../auth-v2-two-step-illustration-light.png | Bin 0 -> 49424 bytes ...auth-v2-verify-email-illustration-dark.png | Bin 0 -> 59298 bytes ...uth-v2-verify-email-illustration-light.png | Bin 0 -> 59092 bytes src/assets/images/pages/background-1.jpg | Bin 0 -> 36820 bytes src/assets/images/pages/background-2.jpg | Bin 0 -> 74443 bytes src/assets/images/pages/background-3.jpg | Bin 0 -> 88783 bytes src/assets/images/pages/boy-illustration.png | Bin 0 -> 12187 bytes .../images/pages/custom-checkbox-img-1.png | Bin 0 -> 25799 bytes .../images/pages/custom-checkbox-img-2.png | Bin 0 -> 35280 bytes .../images/pages/custom-checkbox-img-3.png | Bin 0 -> 27827 bytes .../images/pages/custom-radio-img-1.png | Bin 0 -> 44592 bytes .../images/pages/custom-radio-img-2.png | Bin 0 -> 30000 bytes .../images/pages/custom-radio-img-3.png | Bin 0 -> 38806 bytes src/assets/images/pages/empty-cart.png | Bin 0 -> 52479 bytes .../pages/forgot-password-illustration.png | Bin 0 -> 13375 bytes src/assets/images/pages/girl-using-mobile.png | Bin 0 -> 12662 bytes src/assets/images/pages/google-home.png | Bin 0 -> 9814 bytes .../images/pages/guitar-course-poster.png | Bin 0 -> 33258 bytes src/assets/images/pages/instructor-poster.png | Bin 0 -> 80272 bytes src/assets/images/pages/iphone-11.png | Bin 0 -> 11681 bytes src/assets/images/pages/misc-coming-soon.png | Bin 0 -> 33557 bytes src/assets/images/pages/misc-mask-dark.png | Bin 0 -> 1902 bytes src/assets/images/pages/misc-mask-light.png | Bin 0 -> 3777 bytes .../images/pages/misc-under-maintenance.png | Bin 0 -> 96366 bytes src/assets/images/pages/puma-shoes.jpeg | Bin 0 -> 13191 bytes .../pages/register-multi-step-bg-dark.png | Bin 0 -> 3213 bytes .../pages/register-multi-step-bg-light.png | Bin 0 -> 2988 bytes .../images/pages/singing-course-poster.png | Bin 0 -> 31061 bytes src/assets/images/pages/themeselection-qr.png | Bin 0 -> 3637 bytes .../images/pages/user-profile-header-bg.png | Bin 0 -> 67090 bytes src/assets/images/skoutzLogo.png | Bin 0 -> 47309 bytes src/assets/images/svg/Card.svg | 8 + src/assets/images/svg/Check.svg | 4 + src/assets/images/svg/Diamond.svg | 12 + src/assets/images/svg/Suitcase.svg | 4 + src/assets/images/svg/Wallet.svg | 10 + src/assets/images/svg/address.svg | 25 + .../images/svg/auth-v1-bottom-shape.svg | 4 + src/assets/images/svg/auth-v1-top-shape.svg | 4 + src/assets/images/svg/cart.svg | 5 + src/assets/images/svg/checkbox-checked.svg | 4 + .../images/svg/checkbox-indeterminate.svg | 4 + src/assets/images/svg/checkbox-unchecked.svg | 10 + src/assets/images/svg/discord.svg | 10 + src/assets/images/svg/gift.svg | 8 + src/assets/images/svg/home.svg | 5 + src/assets/images/svg/keyboard.svg | 4 + src/assets/images/svg/laptop.svg | 4 + src/assets/images/svg/lightbulb.svg | 8 + src/assets/images/svg/office.svg | 4 + src/assets/images/svg/paper-send.svg | 4 + src/assets/images/svg/payment.svg | 21 + src/assets/images/svg/radio-checked.svg | 3 + src/assets/images/svg/radio-unchecked.svg | 3 + src/assets/images/svg/rocket.svg | 4 + src/assets/images/svg/trending.svg | 14 + src/assets/images/svg/user-info.svg | 4 + src/assets/images/svg/user.svg | 6 + src/assets/images/svg/wizard-account.svg | 6 + src/assets/images/svg/wizard-address.svg | 18 + src/assets/images/svg/wizard-personal.svg | 6 + src/assets/images/svg/wizard-social-link.svg | 6 + src/assets/images/svg/wizard-submit.svg | 6 + src/assets/styles/styles.scss | 1 + src/assets/styles/variables/_template.scss | 6 + src/assets/styles/variables/_vuetify.scss | 7 + src/components/AppLoadingIndicator.vue | 63 + src/components/AppPricing.vue | 278 + src/components/AppSearchHeader.vue | 92 + src/components/ErrorHeader.vue | 50 + .../dialogs/AddAuthenticatorAppDialog.vue | 106 + .../dialogs/AddEditAddressDialog.vue | 233 + .../dialogs/AddEditPermissionDialog.vue | 95 + src/components/dialogs/AddEditRoleDialog.vue | 282 + .../dialogs/AddPaymentMethodDialog.vue | 117 + src/components/dialogs/CardAddEditDialog.vue | 146 + src/components/dialogs/ConfirmDialog.vue | 165 + src/components/dialogs/CreateAppDialog.vue | 463 + .../dialogs/EnableOneTimePasswordDialog.vue | 90 + .../dialogs/PaymentProvidersDialog.vue | 159 + src/components/dialogs/PricingPlanDialog.vue | 31 + src/components/dialogs/ReferAndEarnDialog.vue | 178 + src/components/dialogs/ShareProjectDialog.vue | 186 + .../dialogs/TwoFactorAuthDialog.vue | 123 + src/components/dialogs/UserInfoEditDialog.vue | 226 + .../dialogs/UserUpgradePlanDialog.vue | 114 + src/composables/useApi.js | 39 + src/layouts/blank.vue | 43 + .../DefaultLayoutWithHorizontalNav.vue | 75 + .../DefaultLayoutWithVerticalNav.vue | 79 + src/layouts/components/Footer.vue | 41 + .../components/NavBarNotifications.vue | 90 + src/layouts/components/NavSearchBar.vue | 316 + src/layouts/components/NavbarShortcuts.vue | 47 + .../components/NavbarThemeSwitcher.vue | 20 + src/layouts/components/UserProfile.vue | 130 + src/layouts/default.vue | 30 + src/main.js | 17 + src/navigation/horizontal/index.js | 12 + src/navigation/vertical/index.js | 61 + src/navigation/vertical/menu/buchraum.js | 72 + src/pages/[...error].vue | 54 + src/pages/buechersuche.vue | 969 ++ src/pages/index.vue | 91 + src/pages/login.vue | 183 + src/plugins/1.router/index.js | 31 + src/plugins/2.pinia.js | 6 + src/plugins/iconify/build-icons.js | 209 + src/plugins/iconify/index.js | 4 + src/plugins/iconify/package.json | 3 + src/plugins/layouts.js | 10 + src/plugins/vuetify/defaults.js | 192 + src/plugins/vuetify/icons.js | 77 + src/plugins/vuetify/index.js | 45 + src/plugins/vuetify/theme.js | 150 + src/plugins/webfontloader.js | 17 + src/utils/api.js | 14 + src/utils/constants.js | 1 + src/utils/paginationMeta.js | 6 + .../pages/authentication/AuthProvider.vue | 46 + themeConfig.js | 70 + typed-router.d.ts | 144 + vite.config.js | 106 + 425 files changed, 44724 insertions(+) create mode 100644 .dockerignore create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .eslintrc-auto-import.json create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .nvmrc 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 dev.Dockerfile create mode 100644 docker-compose.dev.yml create mode 100644 docker-compose.prod.yml create mode 100644 index.html create mode 100644 jsconfig.json create mode 100644 nginx.conf create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 prod.Dockerfile create mode 100644 public/favicon.ico create mode 100644 public/images/avatars/avatar-1.png create mode 100644 public/images/avatars/avatar-2.png create mode 100644 public/images/svg/discord.svg create mode 100644 public/images/svg/gift.svg create mode 100644 public/images/svg/keyboard.svg create mode 100644 public/images/svg/laptop.svg create mode 100644 public/images/svg/lightbulb.svg create mode 100644 public/images/svg/rocket.svg create mode 100644 public/loader.css create mode 100644 src/@core/components/AppBarSearch.vue create mode 100644 src/@core/components/AppDrawerHeaderSection.vue create mode 100644 src/@core/components/AppStepper.vue create mode 100644 src/@core/components/BuyNow.vue create mode 100644 src/@core/components/CardStatisticsVerticalSimple.vue create mode 100644 src/@core/components/CustomizerSection.vue create mode 100644 src/@core/components/DialogCloseBtn.vue create mode 100644 src/@core/components/DropZone.vue create mode 100644 src/@core/components/I18n.vue create mode 100644 src/@core/components/MoreBtn.vue create mode 100644 src/@core/components/Notifications.vue create mode 100644 src/@core/components/ProductDescriptionEditor.vue create mode 100644 src/@core/components/ScrollToTop.vue create mode 100644 src/@core/components/Shortcuts.vue create mode 100644 src/@core/components/TablePagination.vue create mode 100644 src/@core/components/TheCustomizer.vue create mode 100644 src/@core/components/ThemeSwitcher.vue create mode 100644 src/@core/components/TiptapEditor.vue create mode 100644 src/@core/components/app-form-elements/AppAutocomplete.vue create mode 100644 src/@core/components/app-form-elements/AppCombobox.vue create mode 100644 src/@core/components/app-form-elements/AppDateTimePicker.vue create mode 100644 src/@core/components/app-form-elements/AppSelect.vue create mode 100644 src/@core/components/app-form-elements/AppTextField.vue create mode 100644 src/@core/components/app-form-elements/AppTextarea.vue create mode 100644 src/@core/components/app-form-elements/CustomCheckboxes.vue create mode 100644 src/@core/components/app-form-elements/CustomCheckboxesWithIcon.vue create mode 100644 src/@core/components/app-form-elements/CustomCheckboxesWithImage.vue create mode 100644 src/@core/components/app-form-elements/CustomRadios.vue create mode 100644 src/@core/components/app-form-elements/CustomRadiosWithIcon.vue create mode 100644 src/@core/components/app-form-elements/CustomRadiosWithImage.vue create mode 100644 src/@core/components/cards/AppCardActions.vue create mode 100644 src/@core/components/cards/AppCardCode.vue create mode 100644 src/@core/components/cards/CardStatisticsHorizontal.vue create mode 100644 src/@core/components/cards/CardStatisticsVertical.vue create mode 100644 src/@core/composable/createUrl.js create mode 100644 src/@core/composable/useCookie.js create mode 100644 src/@core/composable/useGenerateImageVariant.js create mode 100644 src/@core/composable/useResponsiveSidebar.js create mode 100644 src/@core/composable/useSkins.js create mode 100644 src/@core/enums.js create mode 100644 src/@core/index.js create mode 100644 src/@core/initCore.js create mode 100644 src/@core/libs/apex-chart/apexCharConfig.js create mode 100644 src/@core/libs/chartjs/chartjsConfig.js create mode 100644 src/@core/libs/chartjs/components/BarChart.js create mode 100644 src/@core/libs/chartjs/components/BubbleChart.js create mode 100644 src/@core/libs/chartjs/components/DoughnutChart.js create mode 100644 src/@core/libs/chartjs/components/LineChart.js create mode 100644 src/@core/libs/chartjs/components/PolarAreaChart.js create mode 100644 src/@core/libs/chartjs/components/RadarChart.js create mode 100644 src/@core/libs/chartjs/components/ScatterChart.js 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-horizontal-nav.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/_horizontal-nav.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/_route-transitions.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-horizontal-nav.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/_horizontal-nav.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/base/skins/_bordered.scss create mode 100644 src/@core/scss/base/skins/_index.scss create mode 100644 src/@core/scss/template/_default-layout-w-horizontal-nav.scss create mode 100644 src/@core/scss/template/_default-layout-w-vertical-nav.scss create mode 100644 src/@core/scss/template/_horizontal-nav.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/_variables.scss create mode 100644 src/@core/scss/template/_vertical-nav.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/shepherd.scss create mode 100644 src/@core/scss/template/libs/swiper.scss create mode 100644 src/@core/scss/template/libs/vuetify/_variables.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_alert.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_avatar.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_badge.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_button.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_cards.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_checkbox.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_chip.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_dialog.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_expansion-panels.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_field.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_list.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_menu.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_otp-input.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_pagination.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_progress.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_radio.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_rating.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_slider.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_snackbar.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_switch.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_table.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_tabs.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_textarea.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_timeline.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/_tooltip.scss create mode 100644 src/@core/scss/template/libs/vuetify/components/index.scss create mode 100644 src/@core/scss/template/libs/vuetify/index.scss create mode 100644 src/@core/scss/template/libs/vuetify/overrides.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/_default-layout-horizontal-nav.scss create mode 100644 src/@core/scss/template/placeholders/_default-layout-vertical-nav.scss create mode 100644 src/@core/scss/template/placeholders/_horizontal-nav.scss create mode 100644 src/@core/scss/template/placeholders/_index.scss create mode 100644 src/@core/scss/template/placeholders/_misc.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/scss/template/skins/_bordered.scss create mode 100644 src/@core/scss/template/skins/_index.scss create mode 100644 src/@core/stores/config.js create mode 100644 src/@core/types.js create mode 100644 src/@core/utils/formatters.js create mode 100644 src/@core/utils/helpers.js create mode 100644 src/@core/utils/plugins.js create mode 100644 src/@core/utils/validators.js create mode 100644 src/@core/utils/vuetify.js create mode 100644 src/@layouts/components.js create mode 100644 src/@layouts/components/HorizontalNav.vue create mode 100644 src/@layouts/components/HorizontalNavGroup.vue create mode 100644 src/@layouts/components/HorizontalNavLayout.vue create mode 100644 src/@layouts/components/HorizontalNavLink.vue create mode 100644 src/@layouts/components/HorizontalNavPopper.vue create mode 100644 src/@layouts/components/TransitionExpand.vue create mode 100644 src/@layouts/components/VNodeRenderer.jsx create mode 100644 src/@layouts/components/VerticalNav.vue create mode 100644 src/@layouts/components/VerticalNavGroup.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/config.js create mode 100644 src/@layouts/enums.js create mode 100644 src/@layouts/index.js create mode 100644 src/@layouts/plugins/casl.js create mode 100644 src/@layouts/stores/config.js 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/symbols.js create mode 100644 src/@layouts/types.js create mode 100644 src/@layouts/utils.js 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/cards/logo-mastercard-small.png create mode 100644 src/assets/images/cards/paypal-primary.png create mode 100644 src/assets/images/cards/paypal-rounded.png create mode 100644 src/assets/images/customizer-icons/border-light.svg create mode 100644 src/assets/images/customizer-icons/collapsed-light.svg create mode 100644 src/assets/images/customizer-icons/compact-light.svg create mode 100644 src/assets/images/customizer-icons/default-light.svg create mode 100644 src/assets/images/customizer-icons/horizontal-light.svg create mode 100644 src/assets/images/customizer-icons/ltr-light.svg create mode 100644 src/assets/images/customizer-icons/rtl-light.svg create mode 100644 src/assets/images/customizer-icons/wide-light.svg create mode 100644 src/assets/images/icons/payments/ae-icon.png create mode 100644 src/assets/images/icons/payments/american-express.png create mode 100644 src/assets/images/icons/payments/img/ae-dark.png create mode 100644 src/assets/images/icons/payments/img/american-express.png create mode 100644 src/assets/images/icons/payments/img/dc-dark.png create mode 100644 src/assets/images/icons/payments/img/dc-light.png create mode 100644 src/assets/images/icons/payments/img/jcb-dark.png create mode 100644 src/assets/images/icons/payments/img/jcb-light.png create mode 100644 src/assets/images/icons/payments/img/master-dark.png create mode 100644 src/assets/images/icons/payments/img/mastercard.png create mode 100644 src/assets/images/icons/payments/img/paypal-dark.png create mode 100644 src/assets/images/icons/payments/img/paypal-light.png create mode 100644 src/assets/images/icons/payments/img/visa-dark.png create mode 100644 src/assets/images/icons/payments/img/visa-light.png create mode 100644 src/assets/images/icons/payments/mastercard-icon.png create mode 100644 src/assets/images/icons/payments/mastercard.png create mode 100644 src/assets/images/icons/payments/visa-icon.png create mode 100644 src/assets/images/icons/payments/visa.png create mode 100644 src/assets/images/illustrations/boy-app-academy.png create mode 100644 src/assets/images/illustrations/congo-illustration.png create mode 100644 src/assets/images/illustrations/girl-app-academy.png create mode 100644 src/assets/images/illustrations/laptop-girl.png create mode 100644 src/assets/images/illustrations/register-multi-step-illustration-dark.png create mode 100644 src/assets/images/illustrations/register-multi-step-illustration-light.png create mode 100644 src/assets/images/illustrations/sidebar-pic-1.png create mode 100644 src/assets/images/illustrations/sidebar-pic-2.png create mode 100644 src/assets/images/illustrations/sidebar-pic-3.png create mode 100644 src/assets/images/illustrations/sitting-girl-with-laptop.png create mode 100644 src/assets/images/illustrations/standingGirlImg.png create mode 100644 src/assets/images/logo.svg create mode 100644 src/assets/images/misc/3d-safe-box-with-golden-dollar-coins.png create mode 100644 src/assets/images/misc/3d-space-rocket-with-smoke.png create mode 100644 src/assets/images/misc/dollar-coins-flying-pink-piggy-bank.png create mode 100644 src/assets/images/misc/fleet-car.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/401.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/DealTypeBackground-dark.png create mode 100644 src/assets/images/pages/DealTypeBackground-light.png create mode 100644 src/assets/images/pages/TimelineRectangle1.png create mode 100644 src/assets/images/pages/TimelineRectangle2.png create mode 100644 src/assets/images/pages/TimelineRectangle3.png create mode 100644 src/assets/images/pages/TimelineRectangle4.png create mode 100644 src/assets/images/pages/academy-course-illustration1.png create mode 100644 src/assets/images/pages/academy-course-illustration2.png create mode 100644 src/assets/images/pages/app-academy-tutor-1.png create mode 100644 src/assets/images/pages/app-academy-tutor-2.png create mode 100644 src/assets/images/pages/app-academy-tutor-3.png create mode 100644 src/assets/images/pages/app-academy-tutor-4.png create mode 100644 src/assets/images/pages/app-academy-tutor-5.png create mode 100644 src/assets/images/pages/app-academy-tutor-6.png create mode 100644 src/assets/images/pages/app-search-header-bg.png create mode 100644 src/assets/images/pages/auth-v2-forgot-password-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-forgot-password-illustration-light.png create mode 100644 src/assets/images/pages/auth-v2-login-illustration-bordered-dark.png create mode 100644 src/assets/images/pages/auth-v2-login-illustration-bordered-light.png create mode 100644 src/assets/images/pages/auth-v2-login-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-login-illustration-light.png create mode 100644 src/assets/images/pages/auth-v2-register-illustration-bordered-dark.png create mode 100644 src/assets/images/pages/auth-v2-register-illustration-bordered-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/auth-v2-reset-password-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-reset-password-illustration-light.png create mode 100644 src/assets/images/pages/auth-v2-two-step-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-two-step-illustration-light.png create mode 100644 src/assets/images/pages/auth-v2-verify-email-illustration-dark.png create mode 100644 src/assets/images/pages/auth-v2-verify-email-illustration-light.png create mode 100644 src/assets/images/pages/background-1.jpg create mode 100644 src/assets/images/pages/background-2.jpg create mode 100644 src/assets/images/pages/background-3.jpg create mode 100644 src/assets/images/pages/boy-illustration.png create mode 100644 src/assets/images/pages/custom-checkbox-img-1.png create mode 100644 src/assets/images/pages/custom-checkbox-img-2.png create mode 100644 src/assets/images/pages/custom-checkbox-img-3.png create mode 100644 src/assets/images/pages/custom-radio-img-1.png create mode 100644 src/assets/images/pages/custom-radio-img-2.png create mode 100644 src/assets/images/pages/custom-radio-img-3.png create mode 100644 src/assets/images/pages/empty-cart.png create mode 100644 src/assets/images/pages/forgot-password-illustration.png create mode 100644 src/assets/images/pages/girl-using-mobile.png create mode 100644 src/assets/images/pages/google-home.png create mode 100644 src/assets/images/pages/guitar-course-poster.png create mode 100644 src/assets/images/pages/instructor-poster.png create mode 100644 src/assets/images/pages/iphone-11.png create mode 100644 src/assets/images/pages/misc-coming-soon.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/misc-under-maintenance.png create mode 100644 src/assets/images/pages/puma-shoes.jpeg create mode 100644 src/assets/images/pages/register-multi-step-bg-dark.png create mode 100644 src/assets/images/pages/register-multi-step-bg-light.png create mode 100644 src/assets/images/pages/singing-course-poster.png create mode 100644 src/assets/images/pages/themeselection-qr.png create mode 100644 src/assets/images/pages/user-profile-header-bg.png create mode 100644 src/assets/images/skoutzLogo.png create mode 100644 src/assets/images/svg/Card.svg create mode 100644 src/assets/images/svg/Check.svg create mode 100644 src/assets/images/svg/Diamond.svg create mode 100644 src/assets/images/svg/Suitcase.svg create mode 100644 src/assets/images/svg/Wallet.svg create mode 100644 src/assets/images/svg/address.svg create mode 100644 src/assets/images/svg/auth-v1-bottom-shape.svg create mode 100644 src/assets/images/svg/auth-v1-top-shape.svg create mode 100644 src/assets/images/svg/cart.svg create mode 100644 src/assets/images/svg/checkbox-checked.svg create mode 100644 src/assets/images/svg/checkbox-indeterminate.svg create mode 100644 src/assets/images/svg/checkbox-unchecked.svg 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/home.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/office.svg create mode 100644 src/assets/images/svg/paper-send.svg create mode 100644 src/assets/images/svg/payment.svg create mode 100644 src/assets/images/svg/radio-checked.svg create mode 100644 src/assets/images/svg/radio-unchecked.svg create mode 100644 src/assets/images/svg/rocket.svg create mode 100644 src/assets/images/svg/trending.svg create mode 100644 src/assets/images/svg/user-info.svg create mode 100644 src/assets/images/svg/user.svg create mode 100644 src/assets/images/svg/wizard-account.svg create mode 100644 src/assets/images/svg/wizard-address.svg create mode 100644 src/assets/images/svg/wizard-personal.svg create mode 100644 src/assets/images/svg/wizard-social-link.svg create mode 100644 src/assets/images/svg/wizard-submit.svg create mode 100644 src/assets/styles/styles.scss create mode 100644 src/assets/styles/variables/_template.scss create mode 100644 src/assets/styles/variables/_vuetify.scss create mode 100644 src/components/AppLoadingIndicator.vue create mode 100644 src/components/AppPricing.vue create mode 100644 src/components/AppSearchHeader.vue create mode 100644 src/components/ErrorHeader.vue create mode 100644 src/components/dialogs/AddAuthenticatorAppDialog.vue create mode 100644 src/components/dialogs/AddEditAddressDialog.vue create mode 100644 src/components/dialogs/AddEditPermissionDialog.vue create mode 100644 src/components/dialogs/AddEditRoleDialog.vue create mode 100644 src/components/dialogs/AddPaymentMethodDialog.vue create mode 100644 src/components/dialogs/CardAddEditDialog.vue create mode 100644 src/components/dialogs/ConfirmDialog.vue create mode 100644 src/components/dialogs/CreateAppDialog.vue create mode 100644 src/components/dialogs/EnableOneTimePasswordDialog.vue create mode 100644 src/components/dialogs/PaymentProvidersDialog.vue create mode 100644 src/components/dialogs/PricingPlanDialog.vue create mode 100644 src/components/dialogs/ReferAndEarnDialog.vue create mode 100644 src/components/dialogs/ShareProjectDialog.vue create mode 100644 src/components/dialogs/TwoFactorAuthDialog.vue create mode 100644 src/components/dialogs/UserInfoEditDialog.vue create mode 100644 src/components/dialogs/UserUpgradePlanDialog.vue create mode 100644 src/composables/useApi.js create mode 100644 src/layouts/blank.vue create mode 100644 src/layouts/components/DefaultLayoutWithHorizontalNav.vue create mode 100644 src/layouts/components/DefaultLayoutWithVerticalNav.vue create mode 100644 src/layouts/components/Footer.vue create mode 100644 src/layouts/components/NavBarNotifications.vue create mode 100644 src/layouts/components/NavSearchBar.vue create mode 100644 src/layouts/components/NavbarShortcuts.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.js create mode 100644 src/navigation/horizontal/index.js create mode 100644 src/navigation/vertical/index.js create mode 100644 src/navigation/vertical/menu/buchraum.js create mode 100644 src/pages/[...error].vue create mode 100644 src/pages/buechersuche.vue create mode 100644 src/pages/index.vue create mode 100644 src/pages/login.vue create mode 100644 src/plugins/1.router/index.js create mode 100644 src/plugins/2.pinia.js create mode 100644 src/plugins/iconify/build-icons.js create mode 100644 src/plugins/iconify/index.js create mode 100644 src/plugins/iconify/package.json create mode 100644 src/plugins/layouts.js create mode 100644 src/plugins/vuetify/defaults.js create mode 100644 src/plugins/vuetify/icons.js create mode 100644 src/plugins/vuetify/index.js create mode 100644 src/plugins/vuetify/theme.js create mode 100644 src/plugins/webfontloader.js create mode 100644 src/utils/api.js create mode 100644 src/utils/constants.js create mode 100644 src/utils/paginationMeta.js create mode 100644 src/views/pages/authentication/AuthProvider.vue create mode 100644 themeConfig.js create mode 100644 typed-router.d.ts create mode 100644 vite.config.js diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..63c8c4c --- /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/.env.example b/.env.example new file mode 100644 index 0000000..b8ca0df --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +VITE_API_BASE_URL= diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json new file mode 100644 index 0000000..080022c --- /dev/null +++ b/.eslintrc-auto-import.json @@ -0,0 +1,356 @@ +{ + "globals": { + "$api": true, + "COOKIE_MAX_AGE_1_YEAR": true, + "Component": true, + "ComponentPublicInstance": true, + "ComputedRef": true, + "EffectScope": true, + "ExtractDefaultPropTypes": true, + "ExtractPropTypes": true, + "ExtractPublicPropTypes": true, + "InjectionKey": true, + "PropType": true, + "Ref": true, + "VNode": true, + "WritableComputedRef": true, + "acceptHMRUpdate": true, + "alphaDashValidator": true, + "alphaValidator": true, + "asyncComputed": true, + "autoResetRef": true, + "avatarText": true, + "betweenValidator": true, + "computed": true, + "computedAsync": true, + "computedEager": true, + "computedInject": true, + "computedWithControl": true, + "confirmedValidator": true, + "controlledComputed": true, + "controlledRef": true, + "createApp": true, + "createEventHook": true, + "createGenericProjection": true, + "createGlobalState": true, + "createInjectionState": true, + "createPinia": true, + "createProjection": true, + "createReactiveFn": true, + "createReusableTemplate": true, + "createSharedComposable": true, + "createTemplatePromise": true, + "createUnrefFn": true, + "createUrl": true, + "customRef": true, + "debouncedRef": true, + "debouncedWatch": true, + "defineAsyncComponent": true, + "defineComponent": true, + "defineLoader": true, + "definePage": true, + "defineStore": true, + "eagerComputed": true, + "effectScope": true, + "emailValidator": true, + "extendRef": true, + "formatDate": true, + "formatDateToMonthShort": true, + "getActivePinia": true, + "getCurrentInstance": true, + "getCurrentScope": true, + "h": true, + "ignorableWatch": true, + "inject": true, + "injectLocal": true, + "integerValidator": true, + "isDefined": true, + "isEmpty": true, + "isEmptyArray": true, + "isNullOrUndefined": true, + "isObject": true, + "isProxy": true, + "isReactive": true, + "isReadonly": true, + "isRef": true, + "isToday": true, + "kFormatter": true, + "lengthValidator": true, + "logicAnd": true, + "logicNot": true, + "logicOr": true, + "makeDestructurable": true, + "mapActions": true, + "mapGetters": true, + "mapState": true, + "mapStores": true, + "mapWritableState": true, + "markRaw": true, + "nextTick": true, + "onActivated": true, + "onBeforeMount": true, + "onBeforeRouteLeave": true, + "onBeforeRouteUpdate": true, + "onBeforeUnmount": true, + "onBeforeUpdate": true, + "onClickOutside": true, + "onDeactivated": true, + "onErrorCaptured": true, + "onKeyStroke": true, + "onLongPress": true, + "onMounted": true, + "onRenderTracked": true, + "onRenderTriggered": true, + "onScopeDispose": true, + "onServerPrefetch": true, + "onStartTyping": true, + "onUnmounted": true, + "onUpdated": true, + "paginationMeta": true, + "passwordValidator": true, + "pausableWatch": true, + "prefixWithPlus": true, + "provide": true, + "provideLocal": true, + "reactify": true, + "reactifyObject": true, + "reactive": true, + "reactiveComputed": true, + "reactiveOmit": true, + "reactivePick": true, + "readonly": true, + "ref": true, + "refAutoReset": true, + "refDebounced": true, + "refDefault": true, + "refThrottled": true, + "refWithControl": true, + "regexValidator": true, + "registerPlugins": true, + "requiredValidator": true, + "resolveComponent": true, + "resolveRef": true, + "resolveUnref": true, + "resolveVuetifyTheme": true, + "setActivePinia": true, + "setMapStoreSuffix": true, + "shallowReactive": true, + "shallowReadonly": true, + "shallowRef": true, + "storeToRefs": true, + "syncRef": true, + "syncRefs": true, + "templateRef": true, + "throttledRef": true, + "throttledWatch": true, + "toRaw": true, + "toReactive": true, + "toRef": true, + "toRefs": true, + "toValue": true, + "triggerRef": true, + "tryOnBeforeMount": true, + "tryOnBeforeUnmount": true, + "tryOnMounted": true, + "tryOnScopeDispose": true, + "tryOnUnmounted": true, + "unref": true, + "unrefElement": true, + "until": true, + "urlValidator": true, + "useAbs": true, + "useActiveElement": true, + "useAnimate": true, + "useApi": true, + "useArrayDifference": true, + "useArrayEvery": true, + "useArrayFilter": true, + "useArrayFind": true, + "useArrayFindIndex": true, + "useArrayFindLast": true, + "useArrayIncludes": true, + "useArrayJoin": true, + "useArrayMap": true, + "useArrayReduce": true, + "useArraySome": true, + "useArrayUnique": true, + "useAsyncQueue": true, + "useAsyncState": true, + "useAttrs": true, + "useAverage": true, + "useBase64": true, + "useBattery": true, + "useBluetooth": true, + "useBreakpoints": true, + "useBroadcastChannel": true, + "useBrowserLocation": true, + "useCached": true, + "useCeil": true, + "useClamp": true, + "useClipboard": true, + "useClipboardItems": true, + "useCloned": true, + "useColorMode": true, + "useConfirmDialog": true, + "useCookie": true, + "useCounter": true, + "useCssModule": true, + "useCssVar": true, + "useCssVars": true, + "useCurrentElement": true, + "useCycleList": true, + "useDark": true, + "useDateFormat": true, + "useDebounce": true, + "useDebounceFn": true, + "useDebouncedRefHistory": true, + "useDeviceMotion": true, + "useDeviceOrientation": true, + "useDevicePixelRatio": true, + "useDevicesList": true, + "useDisplayMedia": true, + "useDocumentVisibility": true, + "useDraggable": true, + "useDropZone": true, + "useElementBounding": true, + "useElementByPoint": true, + "useElementHover": true, + "useElementSize": true, + "useElementVisibility": true, + "useEventBus": true, + "useEventListener": true, + "useEventSource": true, + "useEyeDropper": true, + "useFavicon": true, + "useFetch": true, + "useFileDialog": true, + "useFileSystemAccess": true, + "useFloor": true, + "useFocus": true, + "useFocusWithin": true, + "useFps": true, + "useFullscreen": true, + "useGamepad": true, + "useGenerateImageVariant": true, + "useGeolocation": true, + "useI18n": true, + "useIdle": true, + "useImage": true, + "useInfiniteScroll": true, + "useIntersectionObserver": true, + "useInterval": true, + "useIntervalFn": true, + "useKeyModifier": true, + "useLastChanged": true, + "useLocalStorage": true, + "useMagicKeys": true, + "useManualRefHistory": true, + "useMath": true, + "useMax": true, + "useMediaControls": true, + "useMediaQuery": true, + "useMemoize": true, + "useMemory": true, + "useMin": true, + "useMounted": true, + "useMouse": true, + "useMouseInElement": true, + "useMousePressed": true, + "useMutationObserver": true, + "useNavigatorLanguage": true, + "useNetwork": true, + "useNow": true, + "useObjectUrl": true, + "useOffsetPagination": true, + "useOnline": true, + "usePageLeave": true, + "useParallax": true, + "useParentElement": true, + "usePerformanceObserver": true, + "usePermission": true, + "usePointer": true, + "usePointerLock": true, + "usePointerSwipe": true, + "usePrecision": true, + "usePreferredColorScheme": true, + "usePreferredContrast": true, + "usePreferredDark": true, + "usePreferredLanguages": true, + "usePreferredReducedMotion": true, + "usePrevious": true, + "useProjection": true, + "useRafFn": true, + "useRefHistory": true, + "useResizeObserver": true, + "useResponsiveLeftSidebar": true, + "useRound": true, + "useRoute": true, + "useRouter": true, + "useScreenOrientation": true, + "useScreenSafeArea": true, + "useScriptTag": true, + "useScroll": true, + "useScrollLock": true, + "useSessionStorage": true, + "useShare": true, + "useSkins": true, + "useSlots": true, + "useSorted": true, + "useSpeechRecognition": true, + "useSpeechSynthesis": true, + "useStepper": true, + "useStorageAsync": true, + "useStyleTag": true, + "useSum": true, + "useSupported": true, + "useSwipe": true, + "useTemplateRefsList": true, + "useTextDirection": true, + "useTextSelection": true, + "useTextareaAutosize": true, + "useThrottle": true, + "useThrottleFn": true, + "useThrottledRefHistory": true, + "useTimeAgo": true, + "useTimeout": true, + "useTimeoutFn": true, + "useTimeoutPoll": true, + "useTimestamp": true, + "useTitle": true, + "useToNumber": true, + "useToString": true, + "useToggle": true, + "useTransition": true, + "useTrunc": true, + "useUrlSearchParams": true, + "useUserMedia": true, + "useVModel": true, + "useVModels": true, + "useVibrate": true, + "useVirtualList": true, + "useWakeLock": true, + "useWebNotification": true, + "useWebSocket": true, + "useWebWorker": true, + "useWebWorkerFn": true, + "useWindowFocus": true, + "useWindowScroll": true, + "useWindowSize": true, + "watch": true, + "watchArray": true, + "watchAtMost": true, + "watchDebounced": true, + "watchDeep": true, + "watchEffect": true, + "watchIgnorable": true, + "watchImmediate": true, + "watchOnce": true, + "watchPausable": true, + "watchPostEffect": true, + "watchSyncEffect": true, + "watchThrottled": true, + "watchTriggerable": true, + "watchWithFilter": true, + "whenever": true + } +} diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..75935df --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,228 @@ +module.exports = { + env: { + browser: true, + es2021: true, + }, + extends: [ + '.eslintrc-auto-import.json', + 'plugin:vue/vue3-recommended', + 'plugin:import/recommended', + 'plugin:promise/recommended', + 'plugin:sonarjs/recommended', + 'plugin:case-police/recommended', + 'plugin:regexp/recommended', + + // 'plugin:unicorn/recommended', + ], + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 13, + sourceType: 'module', + }, + plugins: [ + 'vue', + 'regex', + 'regexp', + ], + ignorePatterns: ['src/plugins/iconify/*.js', 'node_modules', 'dist', '*.d.ts', 'vendor'], + 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 }], + 'n/prefer-global/process': ['off'], + 'sonarjs/cognitive-complexity': ['off'], + + 'vue/first-attribute-linebreak': ['error', { + singleline: 'beside', + multiline: 'below', + }], + + + // 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'], + + // Enforce camelCase naming convention + 'camelcase': 'error', + + // 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, + + // We don't want to add extra space above closing SECTION + ignorePattern: '!SECTION', + }, + ], + + // Ignore _ as unused variable + + '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', { + name: 'vue3-apexcharts', + message: 'apexcharts are auto imported', + }], + + // 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', + '#auth$', + + // Ignore vite's ?raw imports + '.*\?raw', + ], + }], + + // Thanks: https://stackoverflow.com/a/63961972/10796681 + 'no-shadow': 'off', + + + // 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, ignores: ['/^swiper-/'] }], + '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', + + '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, + // }, + // }], + + // https://github.com/gmullerb/eslint-plugin-regex + 'regex/invalid': [ + 'error', + [ + { + regex: '@/assets/images', + replacement: '@images', + message: 'Use \'@images\' path alias for image imports', + }, + { + regex: '@/assets/styles', + replacement: '@styles', + message: 'Use \'@styles\' path alias for importing styles from \'src/assets/styles\'', + }, + { + 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)).*', + }, + }, + ], + + // Ignore files + '\.eslintrc\.cjs', + ], + }, + settings: { + 'import/resolver': { + node: true, + typescript: { project: './jsconfig.json' }, + }, + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..11d02e4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,43 @@ +# 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/ + +# 👉 Custom Git ignores + +# 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/plugins/iconify/icons.css + +# Ignore MSW script +public/mockServiceWorker.js + +# Env files +.env* +!.env.example diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..4b10cef --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +auto-install-peers=true +shamefully-hoist=true diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..b009dfb --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +lts/* diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..ecf5829 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,46 @@ +{ + "extends": [ + "stylelint-config-standard-scss", + "stylelint-config-idiomatic-order", + "@stylistic/stylelint-config" + ], + "plugins": [ + "stylelint-use-logical-spec", + "@stylistic/stylelint-plugin" + ], + "overrides": [ + { + "files": [ + "**/*.scss" + ], + "customSyntax": "postcss-scss" + }, + { + "files": [ + "**/*.vue" + ], + "customSyntax": "postcss-html" + } + ], + "rules": { + "@stylistic/max-line-length": [ + 220, + { + "ignore": "comments" + } + ], + "@stylistic/indentation": 2, + "liberty/use-logical-spec": true, + "selector-class-pattern": null, + "color-function-notation": null, + "annotation-no-unknown": [ + true, + { + "ignoreAnnotations": [ + "default" + ] + } + ], + "media-feature-range-notation": null + } +} diff --git a/.vscode/anchor-comments.code-snippets b/.vscode/anchor-comments.code-snippets new file mode 100644 index 0000000..7342c88 --- /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 0000000..27843f1 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,15 @@ +{ + "recommendations": [ + "dbaeumer.vscode-eslint", + "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", + "dongido.sync-env" + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d2ee012 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,96 @@ +{ + "editor.formatOnSave": true, + "files.insertFinalNewline": 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]": { + "editor.defaultFormatter": "stylelint.vscode-stylelint" + }, + "[json]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + "[jsonc]": { + "editor.defaultFormatter": "vscode.json-language-features" + }, + "[vue]": { + "editor.defaultFormatter": "dbaeumer.vscode-eslint" + }, + "volar.preview.port": 3000, + "volar.completion.preferredTagNameCase": "pascal", + "eslint.options": {}, + "editor.codeActionsOnSave": { + "source.fixAll.eslint": "explicit", + "source.fixAll.stylelint": "explicit", + "source.organizeImports": "explicit" + }, + "eslint.alwaysShowStatus": true, + "eslint.format.enable": true, + "eslint.packageManager": "pnpm", + "stylelint.packageManager": "pnpm", + "stylelint.validate": [ + "css", + "scss", + "vue" + ], + "cSpell.words": [ + "addressline", + "Composables", + "Customizer", + "destr", + "flagpack", + "Iconify", + "nuxt", + "ofetch", + "psudo", + "stylelint", + "touchless", + "triggerer", + "vuetify" + ], + "commentAnchors.tags.anchors": { + "ℹ️": { + "scope": "hidden", + "highlightColor": "#3498DB", + "styleComment": true, + "isItalic": false + }, + "👉": { + "scope": "file", + "highlightColor": "#98C379", + "styleComment": true, + "isItalic": false + }, + "❗": { + "scope": "hidden", + "highlightColor": "#FF2D00", + "styleComment": true, + "isItalic": false + } + }, + "highlight.regexFlags": "gi", + "highlight.regexes": { + "(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)": [ + { + "borderWidth": "1px", + "borderColor": "tomato", + "borderStyle": "solid" + } + ], + "(overflow-x:|overflow-y:)": [ + { + "borderWidth": "1px", + "borderColor": "green", + "borderStyle": "solid" + } + ] + } +} diff --git a/.vscode/vue-ts.code-snippets b/.vscode/vue-ts.code-snippets new file mode 100644 index 0000000..360713a --- /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 0000000..814d167 --- /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