Files
marketplaces/src/app/components/header/header.component.scss
sdarbinyan 6b0ad6455b fix(icons): replace hand-rolled inline SVGs with Lucide (header, search)
Header: same magnifying-glass path was hand-duplicated twice with two
different hex fills (#576463 desktop, #1e3c38 mobile) - now one
app-icon name="search", color inherited via currentColor. Wishlist/
compare buttons used bare '♥'/'⇄' text glyphs, entirely outside any
icon system - replaced with heart/scale icons. Cart icon, mobile-menu
home/catalog icons, and three duplicated inline chevron SVGs replaced
with app-icon equivalents. Cleaned up now-dead CSS that targeted the
old raw svg/path selectors.

Search: the same magnifying-glass path was hand-duplicated 4 times
(input icon, empty-query state, no-results state, no-query state) at
three sizes and three colors. Replaced all four with app-icon,
preserving each state's intended color via a color property on the
wrapper (icons default to currentColor).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 02:37:23 +04:00

553 lines
9.5 KiB
SCSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.platform-header {
background: rgba(117, 121, 124, 0.1);
padding: 8px 0;
position: sticky;
top: 0;
z-index: 1000;
backdrop-filter: blur(10px);
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
&--static {
position: static;
}
}
.platform-header--centered .platform-header-container {
justify-content: center;
}
.platform-header-container {
max-width: 1440px;
margin: 0 auto;
padding: 0 40px;
display: flex;
align-items: center;
gap: 32px;
min-height: 48px;
}
.platform-logo {
display: flex;
align-items: center;
text-decoration: none;
flex-shrink: 0;
::ng-deep .logo-img {
width: 120px;
height: 38px;
object-fit: contain;
}
}
// Navigation Buttons Group
.platform-nav {
display: flex;
flex-shrink: 0;
}
.platform-nav-group {
display: flex;
align-items: center;
}
.platform-nav-btn {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 6px 32px;
height: 38px;
border: 1px solid #d3dad9;
background: rgba(255, 255, 255, 0.74);
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-weight: 600;
font-size: 15px;
color: #1e3c38;
text-decoration: none;
cursor: pointer;
transition: background 0.3s ease;
white-space: nowrap;
&:not(:first-child) {
border-left: none;
}
&:first-child {
border-radius: 10px 0 0 10px;
}
&:last-child {
border-radius: 0 10px 10px 0;
}
&:hover {
background: #a1b4b5;
color: #1e3c38;
}
&.platform-active {
background: #497671;
color: #ffffff;
}
}
// Search Box
.platform-search-wrapper {
flex: 1;
max-width: 200px;
margin-left: auto;
}
.platform-search-box {
position: relative;
width: 100%;
height: 38px;
background: rgba(255, 255, 255, 0.74);
border: 1px solid #d2dad9;
border-radius: 19px;
box-shadow: 0 2px 3px rgba(0, 0, 0, 0.12);
display: flex;
align-items: center;
padding: 0 14px;
gap: 8px;
}
.platform-search-icon {
width: 20px;
height: 20px;
flex-shrink: 0;
}
.platform-search-input {
flex: 1;
border: none;
background: transparent;
outline: none;
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-weight: 600;
font-size: 15px;
color: #828e8d;
cursor: pointer;
&::placeholder {
color: #828e8d;
}
}
// Actions
.platform-actions {
display: flex;
align-items: center;
gap: 8px;
flex-shrink: 0;
}
.platform-ux-btn {
position: relative;
width: 34px;
height: 34px;
border: 1px solid #d3dad9;
border-radius: 50%;
background: rgba(255, 255, 255, 0.84);
color: #1e3c38;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.18s ease, border-color 0.2s ease, background 0.2s ease;
}
.platform-ux-btn:hover {
transform: translateY(-1px);
border-color: #497671;
background: #ffffff;
}
.platform-ux-icon {
font-size: 15px;
line-height: 1;
font-weight: 700;
}
.platform-ux-badge {
position: absolute;
right: -6px;
top: -6px;
min-width: 16px;
height: 16px;
border-radius: 999px;
background: #497671;
color: #ffffff;
font-size: 10px;
font-weight: 700;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0 4px;
}
.platform-cart-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-width: 36px;
text-decoration: none;
cursor: pointer;
transition: opacity 0.3s ease;
gap: 2px;
svg {
width: 36px;
height: 28px;
}
&:hover {
opacity: 0.85;
}
&.platform-cart-active {
opacity: 1;
}
}
.platform-cart-icon {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 36px;
height: 28px;
}
.platform-cart-badge {
position: absolute;
top: -8px;
right: -10px;
background: #497671;
color: #ffffff;
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-weight: 700;
font-size: 10px;
line-height: 1;
width: 18px;
height: 18px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.platform-cart-total {
font-family: "DM Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
font-weight: 700;
font-size: 10px;
line-height: 1;
color: #1e3c38;
white-space: nowrap;
}
.platform-lang-selector {
display: flex;
align-items: center;
}
// Mobile Menu Backdrop
.platform-menu-backdrop {
display: none;
}
// Mobile Menu Panel
.platform-mobile-menu {
display: none;
}
// Mobile Menu Items
.platform-mobile-item {
display: flex;
align-items: center;
gap: 14px;
width: 395px;
max-width: 100%;
height: 42px;
padding: 15px 26px;
background: #e9edf1;
border: 1px solid #d3dad9;
border-radius: 13px;
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.15);
font-family: 'DM Sans', sans-serif;
font-size: 16px;
font-weight: 500;
color: #1e3c38;
text-decoration: none;
text-align: left;
appearance: none;
cursor: pointer;
transition: background 0.2s ease, transform 0.15s ease;
box-sizing: border-box;
&:hover {
background: #dce2e7;
transform: translateY(-1px);
}
&:active {
transform: translateY(0);
}
&.platform-mobile-active {
background: #497671;
color: #ffffff;
border-color: #497671;
}
app-icon:first-child {
flex-shrink: 0;
}
span {
flex: 1;
}
.platform-mobile-chevron {
flex-shrink: 0;
margin-left: auto;
}
}
.platform-mobile-lang {
display: flex;
align-items: center;
justify-content: center;
}
.platform-mobile-controls {
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
width: 100%;
margin-top: 4px;
}
.platform-menu-toggle {
position: relative;
z-index: 1001;
display: none;
flex-direction: column;
gap: 5px;
background: none;
border: none;
cursor: pointer;
padding: 8px;
span {
width: 25px;
height: 3px;
background: #1e3c38;
border-radius: 2px;
transition: all 0.3s;
}
&.active {
span:nth-child(1) {
transform: rotate(45deg) translate(7px, 4.5px);
}
span:nth-child(2) {
opacity: 0;
}
span:nth-child(3) {
transform: rotate(-45deg) translate(7px, -4.5px);
}
}
}
// Mobile Search Icon
.platform-search-mobile {
display: none;
align-items: center;
justify-content: center;
background: none;
border: none;
cursor: pointer;
padding: 6px;
margin-left: auto;
transition: opacity 0.2s ease;
&:hover {
opacity: 0.7;
}
}
// Responsive Design
@media (max-width: 1200px) {
.platform-header-container {
padding: 0 32px;
gap: 32px;
}
.platform-nav-btn {
font-size: 18px;
padding: 8px 32px !important;
}
.platform-nav-btn-left {
padding: 8px 32px !important;
}
.platform-nav-btn-middle {
padding: 8px 40px !important;
}
.platform-nav-btn-right {
padding: 8px 28px !important;
}
}
@media (max-width: 992px) {
.platform-header-container {
padding: 0 20px;
gap: 20px;
}
.platform-logo ::ng-deep .logo-img {
width: 120px;
height: 40px;
}
.platform-nav-btn {
font-size: 16px;
padding: 8px 24px !important;
}
.platform-nav-btn-left {
padding: 8px 24px !important;
}
.platform-nav-btn-middle {
padding: 8px 28px !important;
}
.platform-nav-btn-right {
padding: 8px 20px !important;
}
.platform-search-box {
height: 42px;
}
.platform-search-input {
font-size: 18px;
}
}
@media (max-width: 768px) {
.platform-header-container {
gap: 12px;
padding: 0 16px;
}
// Hide desktop nav
.platform-nav {
display: none;
}
// Hide desktop language selector
.platform-lang-desktop {
display: none !important;
}
.platform-search-wrapper {
display: none;
}
.platform-search-mobile {
display: flex;
}
.platform-menu-toggle {
display: flex;
}
.platform-logo ::ng-deep .logo-img {
width: 100px;
height: 32px;
}
// Mobile Menu Backdrop full-screen, blurred, blocks interaction
.platform-menu-backdrop {
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.35);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
z-index: 998;
animation: platform-fade-in 0.25s ease;
}
// Mobile Menu Panel
.platform-mobile-menu {
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
position: fixed;
top: 84px;
right: 0;
width: 485px;
max-width: 100vw;
padding: 28px 20px 32px;
background: rgba(245, 242, 249, 0.93);
border-radius: 0 0 13px 13px;
box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.25);
z-index: 999;
box-sizing: border-box;
// Hide by default, animate in
max-height: 0;
padding-top: 0;
padding-bottom: 0;
overflow: hidden;
opacity: 0;
transition: max-height 0.35s ease, opacity 0.25s ease, padding 0.35s ease;
&.platform-mobile-menu-open {
max-height: calc(100dvh - 84px);
padding: 28px 20px 32px;
opacity: 1;
overflow-y: auto;
}
}
.platform-mobile-item {
width: 395px;
max-width: 100%;
}
.platform-mobile-controls {
margin-top: 4px;
}
}
@media (max-width: 480px) {
.platform-mobile-menu {
width: 100vw;
border-radius: 0 0 13px 13px;
}
.platform-mobile-item {
width: 100%;
}
}
@keyframes platform-fade-in {
from { opacity: 0; }
to { opacity: 1; }
}