From 556354a44d33c025b7645f003ebde21dfb1759da Mon Sep 17 00:00:00 2001 From: Alexandr SaVBaD Waltz Date: Sun, 1 Mar 2026 20:16:05 +0300 Subject: [PATCH] feat(storefront): overhaul theming system and unify SCSS variables MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revamped the theming system with new SCSS variables for consistent styling across light and dark themes. Replaced static color values with dynamic variables for maintainability and improved theme adaptability. Updated components and layouts to use the new variables. - Moved theme plugin logic for optimized handling of theme cookies and attributes. - Enhanced `useThemes` composable for simplified client-side updates and SSR support. - Replaced redundant SCSS color definitions with centralized variables. - Improved page structure by introducing `ui-title` for reusable section headers. - Unified transitions and border-radius for consistent design language. Breaking Changes: Theming system restructured—migrate to `$main`, `$primary`, and related variables for SCSS colors. Remove usage of `--color-*` variables in templates and styles. --- storefront/app/app.vue | 10 +- .../app/assets/styles/global/variables.scss | 130 +++++++++++++----- storefront/app/assets/styles/main.scss | 106 +------------- .../app/assets/styles/modules/normalize.scss | 9 +- storefront/app/assets/styles/ui/badge.scss | 5 + storefront/app/assets/styles/ui/collapse.scss | 10 +- .../app/assets/styles/ui/notification.scss | 25 +++- storefront/app/assets/styles/ui/rating.scss | 9 +- storefront/app/components/base/auth.vue | 4 +- .../app/components/base/footer/index.vue | 16 +-- .../app/components/base/header/catalog.vue | 43 +++--- .../app/components/base/header/index.vue | 66 ++++----- storefront/app/components/cards/brand.vue | 17 ++- storefront/app/components/cards/category.vue | 17 ++- storefront/app/components/cards/order.vue | 23 ++-- storefront/app/components/cards/post.vue | 12 +- storefront/app/components/cards/product.vue | 93 +++++++------ storefront/app/components/demo/settings.vue | 32 ++--- storefront/app/components/demo/ui/button.vue | 23 ++-- .../app/components/demo/ui/checkbox.vue | 18 +-- storefront/app/components/forms/contact.vue | 4 +- storefront/app/components/forms/login.vue | 6 +- .../app/components/forms/new-password.vue | 4 +- storefront/app/components/forms/register.vue | 11 +- .../app/components/forms/reset-password.vue | 4 +- storefront/app/components/home/ad.vue | 20 +-- storefront/app/components/home/blog.vue | 2 +- storefront/app/components/home/brands.vue | 7 +- storefront/app/components/home/categories.vue | 4 +- storefront/app/components/home/hero.vue | 14 +- .../app/components/profile/navigation.vue | 34 +++-- .../app/components/skeletons/cards/brand.vue | 8 +- .../app/components/skeletons/cards/order.vue | 12 +- .../components/skeletons/cards/product.vue | 15 +- storefront/app/components/skeletons/docs.vue | 9 +- storefront/app/components/store/filter.vue | 11 +- storefront/app/components/store/index.vue | 10 +- storefront/app/components/store/top.vue | 19 ++- storefront/app/components/ui/breadcrumbs.vue | 11 +- storefront/app/components/ui/button.vue | 29 ++-- storefront/app/components/ui/checkbox.vue | 18 +-- storefront/app/components/ui/input.vue | 14 +- .../app/components/ui/language-switcher.vue | 14 +- storefront/app/components/ui/link.vue | 5 +- storefront/app/components/ui/loader.vue | 2 +- storefront/app/components/ui/search.vue | 54 +++++--- storefront/app/components/ui/textarea.vue | 16 +-- storefront/app/components/ui/theme-toggle.vue | 27 ++-- storefront/app/components/ui/title.vue | 68 +++++++-- .../app/composables/themes/useThemes.ts | 9 +- storefront/app/pages/auth/reset-password.vue | 2 +- storefront/app/pages/auth/sign-in.vue | 2 +- storefront/app/pages/auth/sign-up.vue | 2 +- storefront/app/pages/blog/[slug].vue | 4 - storefront/app/pages/blog/index.vue | 45 +----- storefront/app/pages/brand/[brandSlug].vue | 62 ++------- storefront/app/pages/brands.vue | 93 ++----------- storefront/app/pages/cart.vue | 12 +- .../app/pages/catalog/[categorySlug].vue | 74 +--------- storefront/app/pages/catalog/index.vue | 45 +----- storefront/app/pages/contact.vue | 62 ++------- storefront/app/pages/docs/about-us.vue | 42 +----- storefront/app/pages/docs/faq.vue | 42 +----- storefront/app/pages/docs/privacy-policy.vue | 42 +----- storefront/app/pages/docs/return-policy.vue | 42 +----- .../app/pages/docs/shipping-information.vue | 42 +----- .../app/pages/docs/terms-and-conditions.vue | 42 +----- storefront/app/pages/product/[slug].vue | 128 ++++++++--------- storefront/app/pages/profile/balance.vue | 4 +- storefront/app/pages/profile/orders.vue | 40 +++--- storefront/app/pages/profile/promocodes.vue | 25 ++-- storefront/app/pages/profile/settings.vue | 36 +++-- storefront/app/pages/reset-password.vue | 2 +- storefront/app/pages/search.vue | 25 ++-- storefront/app/pages/shop.vue | 48 +------ storefront/app/pages/wishlist.vue | 12 +- ...{03.notification.ts => 02.notification.ts} | 2 +- storefront/app/plugins/02.theme.ts | 26 ---- storefront/app/plugins/03.theme.ts | 16 +++ storefront/i18n/locales/en-gb.json | 6 +- storefront/i18n/locales/ru-ru.json | 6 +- storefront/nuxt-app.d.ts | 2 +- 82 files changed, 841 insertions(+), 1321 deletions(-) create mode 100644 storefront/app/assets/styles/ui/badge.scss rename storefront/app/plugins/{03.notification.ts => 02.notification.ts} (95%) delete mode 100644 storefront/app/plugins/02.theme.ts create mode 100644 storefront/app/plugins/03.theme.ts diff --git a/storefront/app/app.vue b/storefront/app/app.vue index 72b3ee50..ee5b22b9 100644 --- a/storefront/app/app.vue +++ b/storefront/app/app.vue @@ -1,9 +1,9 @@