diff --git a/storefront/package-lock.json b/storefront/package-lock.json index 177727fb..ef7189e7 100644 --- a/storefront/package-lock.json +++ b/storefront/package-lock.json @@ -15,9 +15,12 @@ "graphql": "^16.11.0", "graphql-tag": "^2.12.6", "pinia": "^3.0.1", + "primeicons": "^7.0.0", + "swiper": "^11.2.8", "vue": "^3.5.13", "vue-i18n": "^11.1.4", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "vue3-marquee-slider": "^1.0.5" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.3", @@ -3344,6 +3347,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/primeicons": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-7.0.0.tgz", + "integrity": "sha512-jK3Et9UzwzTsd6tzl2RmwrVY/b8raJ3QZLzoDACj+oTJ0oX7L9Hy+XnVwgo4QVKlKpnP/Ur13SXV/pVh4LzaDw==", + "license": "MIT" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -3618,6 +3627,25 @@ "node": ">=16" } }, + "node_modules/swiper": { + "version": "11.2.8", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.8.tgz", + "integrity": "sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -4050,6 +4078,18 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, + "node_modules/vue3-marquee-slider": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vue3-marquee-slider/-/vue3-marquee-slider-1.0.5.tgz", + "integrity": "sha512-92nrvGrmTC9Ltqz6QRXdkuJ5Tj6gM+69xy8sEB2kq/xY8RI/FTQxDF6QiCyJdieJDNL67giKlhJVDL0D9i9SxQ==", + "license": "MIT", + "dependencies": { + "vue": "^3.2.45" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/storefront/package.json b/storefront/package.json index cf36e216..c04c397d 100644 --- a/storefront/package.json +++ b/storefront/package.json @@ -16,9 +16,12 @@ "graphql": "^16.11.0", "graphql-tag": "^2.12.6", "pinia": "^3.0.1", + "primeicons": "^7.0.0", + "swiper": "^11.2.8", "vue": "^3.5.13", "vue-i18n": "^11.1.4", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "vue3-marquee-slider": "^1.0.5" }, "devDependencies": { "@vitejs/plugin-vue": "^5.2.3", diff --git a/storefront/public/favicon.ico b/storefront/public/favicon.ico index df36fcfb..f3ba783b 100644 Binary files a/storefront/public/favicon.ico and b/storefront/public/favicon.ico differ diff --git a/storefront/src/App.vue b/storefront/src/App.vue index e9dfd165..82a76878 100644 --- a/storefront/src/App.vue +++ b/storefront/src/App.vue @@ -1,11 +1,21 @@ + + \ No newline at end of file diff --git a/storefront/src/components/base/base-header.vue b/storefront/src/components/base/base-header.vue deleted file mode 100644 index 7bb95a87..00000000 --- a/storefront/src/components/base/base-header.vue +++ /dev/null @@ -1,26 +0,0 @@ - - - - - \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header-catalogue.vue b/storefront/src/components/base/header/base-header-catalogue.vue new file mode 100644 index 00000000..e2bd88f2 --- /dev/null +++ b/storefront/src/components/base/header/base-header-catalogue.vue @@ -0,0 +1,43 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header-search.vue b/storefront/src/components/base/header/base-header-search.vue new file mode 100644 index 00000000..0420628a --- /dev/null +++ b/storefront/src/components/base/header/base-header-search.vue @@ -0,0 +1,237 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/base/header/base-header.vue b/storefront/src/components/base/header/base-header.vue new file mode 100644 index 00000000..e3d609a6 --- /dev/null +++ b/storefront/src/components/base/header/base-header.vue @@ -0,0 +1,129 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/cards/product-card.vue b/storefront/src/components/cards/product-card.vue new file mode 100644 index 00000000..7c412232 --- /dev/null +++ b/storefront/src/components/cards/product-card.vue @@ -0,0 +1,127 @@ + + + + + \ No newline at end of file diff --git a/storefront/src/components/forms/deposit-form.vue b/storefront/src/components/forms/deposit-form.vue index b023fc6b..2881375a 100644 --- a/storefront/src/components/forms/deposit-form.vue +++ b/storefront/src/components/forms/deposit-form.vue @@ -30,23 +30,23 @@ import {computed, ref} from "vue"; import UiButton from "@/components/ui/ui-button.vue"; import {useI18n} from "vue-i18n"; import {useDeposit} from "@/composables/user/useDeposit.js"; +import {useCompanyStore} from "@/stores/company.js"; const {t} = useI18n() +const companyStore = useCompanyStore() + +const paymentMin = computed(() => companyStore.companyInfo?.paymentGatewayMinimum) +const paymentMax = computed(() => companyStore.companyInfo?.paymentGatewayMaximum) const amount = ref('') const isFormValid = computed(() => { return ( - amount.value >= 5 && amount.value <= 500 + amount.value >= paymentMin.value && + amount.value <= paymentMax.value ) }) -const onlyNumbersKeypress = (event) => { - if (!/\d/.test(event.key)) { - event.preventDefault(); - } -} - const { deposit, loading } = useDeposit(); async function handleDeposit() { diff --git a/storefront/src/components/forms/login-form.vue b/storefront/src/components/forms/login-form.vue index 861b22e4..ac43f455 100644 --- a/storefront/src/components/forms/login-form.vue +++ b/storefront/src/components/forms/login-form.vue @@ -1,5 +1,6 @@ @@ -35,8 +49,11 @@ import UiInput from "@/components/ui/ui-input.vue"; import UiButton from "@/components/ui/ui-button.vue"; import UiCheckbox from "@/components/ui/ui-checkbox.vue"; import {useLogin} from "@/composables/auth"; +import UiLink from "@/components/ui/ui-link.vue"; +import {useAppStore} from "@/stores/app.js"; const {t} = useI18n() +const appStore = useAppStore() const email = ref('') const password = ref('') @@ -61,5 +78,18 @@ async function handleLogin() { display: flex; flex-direction: column; gap: 20px; + + &__title { + font-size: 36px; + color: $accent; + } + + &__register { + display: flex; + align-items: center; + gap: 5px; + + font-size: 12px; + } } \ No newline at end of file diff --git a/storefront/src/components/forms/new-password-form.vue b/storefront/src/components/forms/new-password-form.vue index 07ffe618..668d1e4a 100644 --- a/storefront/src/components/forms/new-password-form.vue +++ b/storefront/src/components/forms/new-password-form.vue @@ -1,5 +1,6 @@