diff --git a/src/app/features/search/components/search-bar/search-bar.component.html b/src/app/features/search/components/search-bar/search-bar.component.html index 30a3013..88bfa34 100644 --- a/src/app/features/search/components/search-bar/search-bar.component.html +++ b/src/app/features/search/components/search-bar/search-bar.component.html @@ -26,7 +26,9 @@ } - + @@ -44,7 +46,7 @@ [attr.aria-selected]="$index === activeSuggestionIndex()" [attr.aria-label]="suggestionLabel(item)" (click)="selectSuggestion(item)"> - + {{ item.title }} @if (item.subtitle) { diff --git a/src/app/features/search/components/search-bar/search-bar.component.scss b/src/app/features/search/components/search-bar/search-bar.component.scss index bc210bb..5c34ea3 100644 --- a/src/app/features/search/components/search-bar/search-bar.component.scss +++ b/src/app/features/search/components/search-bar/search-bar.component.scss @@ -59,11 +59,13 @@ .search-clear-btn { min-width: 44px; min-height: 44px; + display: flex; + align-items: center; + justify-content: center; border: 1px solid var(--border-color) !important; border-radius: var(--radius-sm); background: var(--bg-primary) !important; color: var(--text-secondary) !important; - font-size: var(--font-size-2xl, 1.25rem); line-height: 1; } @@ -98,8 +100,8 @@ } .suggestion-icon { - font-size: var(--font-size-xs, 0.75rem); - text-transform: uppercase; + display: flex; + align-items: center; color: var(--text-secondary); } diff --git a/src/app/features/search/components/search-bar/search-bar.component.ts b/src/app/features/search/components/search-bar/search-bar.component.ts index 1ba4d12..ca776bd 100644 --- a/src/app/features/search/components/search-bar/search-bar.component.ts +++ b/src/app/features/search/components/search-bar/search-bar.component.ts @@ -2,12 +2,13 @@ import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, import { FormsModule } from '@angular/forms'; import { SearchSuggestion } from '../../models/search.model'; import { TranslatePipe } from '../../../../i18n/translate.pipe'; +import { IconComponent } from '../../../../shared/ui/icon/icon.component'; import { TrendingSearchesComponent } from '../trending-searches/trending-searches.component'; @Component({ selector: 'app-search-bar', standalone: true, - imports: [FormsModule, TranslatePipe, TrendingSearchesComponent], + imports: [FormsModule, TranslatePipe, IconComponent, TrendingSearchesComponent], templateUrl: './search-bar.component.html', styleUrls: ['./search-bar.component.scss'], changeDetection: ChangeDetectionStrategy.OnPush diff --git a/src/app/features/search/facade/search.facade.ts b/src/app/features/search/facade/search.facade.ts index aa526ed..34ea5bf 100644 --- a/src/app/features/search/facade/search.facade.ts +++ b/src/app/features/search/facade/search.facade.ts @@ -59,7 +59,7 @@ export class SearchFacade { type: 'collection', title: 'Smartphones', text: 'Smartphones', - icon: 'trending_up', + icon: 'trendingUp', target: { route: '/search', query: { q: 'Smartphones' } } }, { @@ -67,7 +67,7 @@ export class SearchFacade { type: 'collection', title: 'Sneakers', text: 'Sneakers', - icon: 'trending_up', + icon: 'trendingUp', target: { route: '/search', query: { q: 'Sneakers' } } }, { @@ -75,7 +75,7 @@ export class SearchFacade { type: 'collection', title: 'Headphones', text: 'Headphones', - icon: 'trending_up', + icon: 'trendingUp', target: { route: '/search', query: { q: 'Headphones' } } }, { @@ -83,7 +83,7 @@ export class SearchFacade { type: 'collection', title: 'Laptops', text: 'Laptops', - icon: 'trending_up', + icon: 'trendingUp', target: { route: '/search', query: { q: 'Laptops' } } }, ]; diff --git a/src/app/features/search/models/search.model.ts b/src/app/features/search/models/search.model.ts index b3e433a..8294df0 100644 --- a/src/app/features/search/models/search.model.ts +++ b/src/app/features/search/models/search.model.ts @@ -1,4 +1,5 @@ import { Product, ProductSort } from '../../../core/products/models/product-domain.model'; +import { AppIconName } from '../../../shared/ui/icon/icon-registry'; export type SearchFilterType = | 'checkbox' @@ -33,7 +34,7 @@ export interface SearchSuggestion { text: string; kind?: 'live' | 'recent' | 'popular'; subtitle?: string; - icon: string; + icon: AppIconName; target: SearchNavigationTarget; score?: number; } diff --git a/src/app/features/search/services/search-autocomplete.service.ts b/src/app/features/search/services/search-autocomplete.service.ts index 215ff56..86ef827 100644 --- a/src/app/features/search/services/search-autocomplete.service.ts +++ b/src/app/features/search/services/search-autocomplete.service.ts @@ -22,7 +22,7 @@ export class SearchAutocompleteService { text: item.name, kind: 'live' as const, subtitle: item.simpleDescription ?? '', - icon: 'inventory_2', + icon: 'package', target: { route: '/product', params: { id: item.itemID } }, score: this.score(item.name, normalized), })) @@ -39,7 +39,7 @@ export class SearchAutocompleteService { text: item.title, kind: 'live' as const, subtitle: '', - icon: 'category', + icon: 'folder', target: { route: '/catalog', params: { id: item.id } }, score: this.score(item.title, normalized), })) @@ -57,7 +57,7 @@ export class SearchAutocompleteService { text: tag, kind: 'live' as const, subtitle: '', - icon: 'sell', + icon: 'tag', target: { route: '/search', query: { q: tag } }, score: this.score(tag, normalized), })) @@ -71,7 +71,7 @@ export class SearchAutocompleteService { text: query, kind: 'live', subtitle: 'search.aiSuggestionHint', - icon: 'auto_awesome', + icon: 'zap', target: { route: '/search', query: { q: query } }, score: 0, } diff --git a/src/app/shared/ui/icon/icon-registry.ts b/src/app/shared/ui/icon/icon-registry.ts index 0034217..1acc8fe 100644 --- a/src/app/shared/ui/icon/icon-registry.ts +++ b/src/app/shared/ui/icon/icon-registry.ts @@ -73,6 +73,7 @@ import { LucideThumbsDown as ThumbsDown, LucideThumbsUp as ThumbsUp, LucideTrash2 as Trash2, + LucideTrendingUp as TrendingUp, LucideTriangleAlert as TriangleAlert, LucideUpload as Upload, LucideUser as User, @@ -171,7 +172,8 @@ export const APP_ICONS = { verified: BadgeCheck, video: Video, circle: Circle, - zap: Zap + zap: Zap, + trendingUp: TrendingUp } as const; export type AppIconName = keyof typeof APP_ICONS;