diff --git a/storefront/app.vue b/storefront/app.vue
index 6b3a5ff7..978334c4 100644
--- a/storefront/app.vue
+++ b/storefront/app.vue
@@ -23,6 +23,7 @@ import {useRefresh} from "~/composables/auth";
import {useLanguages} from "~/composables/languages";
import {useCompanyInfo} from "~/composables/company";
import {useCategories} from "~/composables/categories";
+import {useNotification} from "~/composables/notification";
const { locale } = useI18n();
const route = useRoute();
@@ -32,7 +33,13 @@ const switchLocalePath = useSwitchLocalePath();
const showBreadcrumbs = computed(() => {
const name = typeof route.name === 'string' ? route.name : '';
- return !['index', 'brand', 'search'].some(prefix => name.startsWith(prefix));
+ return ![
+ 'index',
+ 'brand',
+ 'search',
+ 'profile',
+ 'activate-user'
+ ].some(prefix => name.startsWith(prefix));
});
const activeState = computed(() => appStore.activeState);
@@ -66,7 +73,7 @@ watch(
{ immediate: true }
)
-let stopWatcher: () => void;
+let stopWatcher: VoidFunction = () => {}
onMounted( async () => {
refreshInterval = setInterval(async () => {
diff --git a/storefront/assets/styles/main.scss b/storefront/assets/styles/main.scss
index 57692cc7..328a3721 100644
--- a/storefront/assets/styles/main.scss
+++ b/storefront/assets/styles/main.scss
@@ -2,4 +2,8 @@
@use "modules/transitions";
@use "global/mixins";
@use "global/variables";
-@use "ui/collapse";
\ No newline at end of file
+
+// UI
+@use "ui/collapse";
+@use "ui/notification";
+@use "ui/rating";
diff --git a/storefront/assets/styles/modules/normalize.scss b/storefront/assets/styles/modules/normalize.scss
index b2cd8f49..1121d157 100644
--- a/storefront/assets/styles/modules/normalize.scss
+++ b/storefront/assets/styles/modules/normalize.scss
@@ -58,6 +58,10 @@ button:focus-visible {
--el-skeleton-to-color: #c3c3c7 !important;
}
+.el-badge__content {
+ border: none !important;
+}
+
@media (max-width: 1680px) {
.container {
max-width: 1200px;
diff --git a/storefront/assets/styles/ui/collapse.scss b/storefront/assets/styles/ui/collapse.scss
index ce7072a4..553f6394 100644
--- a/storefront/assets/styles/ui/collapse.scss
+++ b/storefront/assets/styles/ui/collapse.scss
@@ -36,6 +36,6 @@
flex-direction: column;
gap: 5px;
}
-.el-icon {
+.el-collapse .el-icon {
display: none !important;
}
\ No newline at end of file
diff --git a/storefront/assets/styles/ui/notification.scss b/storefront/assets/styles/ui/notification.scss
new file mode 100644
index 00000000..48d39916
--- /dev/null
+++ b/storefront/assets/styles/ui/notification.scss
@@ -0,0 +1,39 @@
+@use "../global/variables" as *;
+
+.el-notification {
+ border: 2px solid $accent !important;
+ transition: all 0.3s ease !important;
+
+ &__progress {
+ position: absolute;
+ left: 0;
+ bottom: 0;
+ width: 100%;
+ height: 3px;
+ background-color: $accentDark;
+ animation: progress-animation linear forwards;
+ }
+
+ &__button {
+ margin-top: 10px;
+ padding: 6px 12px;
+ background-color: $accent;
+ border-radius: $default_border_radius;
+ color: #fff;
+ border: none;
+ cursor: pointer;
+ }
+
+ .el-notification__closeBtn {
+ color: $accent !important;
+ }
+}
+
+@keyframes progress-animation {
+ 0% {
+ width: 100%;
+ }
+ 100% {
+ width: 0;
+ }
+}
\ No newline at end of file
diff --git a/storefront/assets/styles/ui/rating.scss b/storefront/assets/styles/ui/rating.scss
new file mode 100644
index 00000000..9b3e764f
--- /dev/null
+++ b/storefront/assets/styles/ui/rating.scss
@@ -0,0 +1,17 @@
+@use "../global/variables" as *;
+
+.el-rate .el-rate__icon.is-active {
+ color: $accent !important;
+}
+.el-rate .el-rate__icon {
+ color: #9a9a9a !important;
+ font-size: 20px !important;
+}
+
+.white .el-rate__icon.is-active {
+ color: $white !important;
+ font-size: 24px !important;
+}
+.el-rate .el-rate__icon {
+ font-size: 24px !important;
+}
\ No newline at end of file
diff --git a/storefront/components/base/header/catalog.vue b/storefront/components/base/header/catalog.vue
index 44e8187d..5fa72dea 100644
--- a/storefront/components/base/header/catalog.vue
+++ b/storefront/components/base/header/catalog.vue
@@ -70,7 +70,6 @@ const setBlock = (state: boolean) => {
}
// TODO: add loading state
-// TODO: fix displaying main part (children categories)
const blockRef = ref(null)
onClickOutside(blockRef, () => setBlock(false))
@@ -148,7 +147,7 @@ const setActiveCategory = (category: ICategory) => {
&__block {
display: grid;
grid-template-columns: 20% 80%;
- max-height: 60vh;
+ max-height: 50vh;
}
&__columns {
diff --git a/storefront/components/base/header/index.vue b/storefront/components/base/header/index.vue
index 4d740d68..b785e060 100644
--- a/storefront/components/base/header/index.vue
+++ b/storefront/components/base/header/index.vue
@@ -13,37 +13,33 @@
{{ t('header.actions.wishlist') }}
{{ t('header.actions.cart') }}
{{ t('header.actions.profile') }}
+{{ t('header.actions.profile') }}
{{ t('header.actions.login') }}
{{ t('header.actions.login') }}
{{ errorMessage }}
+{{ errorMessage }}
{{ t('profile.cart.quantity') }} {{ productsInCartQuantity }}
+{{ t('profile.cart.total') }} {{ totalPrice }}
+orders
+settings
+{{ t('profile.wishlist.total', {quantity: productsInWishlist.length, amount: totalPrice}) }}
+