@@ -95,12 +91,7 @@
@if (!hasSubcategories() && categoryItems().length === 0) {
{{ 'subcategories.emptyTitle' | translate }}
{{ 'subcategories.emptyDesc' | translate }}
diff --git a/src/app/pages/category/subcategories.component.ts b/src/app/pages/category/subcategories.component.ts
index 862f997..67866b1 100644
--- a/src/app/pages/category/subcategories.component.ts
+++ b/src/app/pages/category/subcategories.component.ts
@@ -11,10 +11,11 @@ import { getDiscountedPrice, getMainImage, trackByItemId, getBadgeClass, getTran
import { ProductFacade } from '../../facades/platform/product.facade';
import { CategoryFacade } from '../../facades/platform/category.facade';
import { Category } from '../../core/categories/models/category-domain.model';
+import { IconComponent } from '../../shared/ui/icon/icon.component';
@Component({
selector: 'app-subcategories',
- imports: [DecimalPipe, RouterLink, LangRoutePipe, TranslatePipe],
+ imports: [DecimalPipe, RouterLink, LangRoutePipe, TranslatePipe, IconComponent],
templateUrl: './subcategories.component.html',
styleUrls: ['./subcategories.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
diff --git a/src/app/pages/item-detail/item-detail.component.html b/src/app/pages/item-detail/item-detail.component.html
index 599185f..7c90bab 100644
--- a/src/app/pages/item-detail/item-detail.component.html
+++ b/src/app/pages/item-detail/item-detail.component.html
@@ -42,11 +42,7 @@
}
} @else {
-
+
{{ 'itemDetail.noImage' | translate }}
}
@@ -76,9 +72,7 @@
@for (star of [1, 2, 3, 4, 5]; track star) {
-
+
}
{{ item()!.rating }}
@@ -104,7 +98,7 @@
{{ getStockLabel() }}
@if (effectiveRemaining() != null) {
-
({{ effectiveRemaining() }} øò.)
+
({{ effectiveRemaining() }} ��.)
}
@@ -177,11 +171,7 @@
}
@@ -260,14 +250,14 @@
@if (reviewSubmitStatus() === 'success') {
-
+
{{ 'itemDetail.reviewSuccess' | translate }}
}
@if (reviewSubmitStatus() === 'error') {
-
+
{{ 'itemDetail.reviewError' | translate }}
}
@@ -287,9 +277,7 @@
@if (callback.rating) {
@for (star of [1, 2, 3, 4, 5]; track star) {
-
+
}
}
@@ -313,20 +301,20 @@
@for (question of item()!.questions!; track $index) {
- Â
+ �
{{ question.question }}
- Î
+ �
{{ question.answer }}
diff --git a/src/app/pages/item-detail/item-detail.component.scss b/src/app/pages/item-detail/item-detail.component.scss
index c3e828e..e3038b6 100644
--- a/src/app/pages/item-detail/item-detail.component.scss
+++ b/src/app/pages/item-detail/item-detail.component.scss
@@ -204,6 +204,10 @@ $dx-card-bg: #f5f3f9;
gap: 3px;
}
+.dx-star--filled svg path {
+ fill: currentColor;
+}
+
.dx-rating-value {
font-weight: 700;
font-size: 1rem;
@@ -310,7 +314,7 @@ $dx-card-bg: #f5f3f9;
}
}
-// Variant chips (colour/size) — shared between platform and alt
+// Variant chips (colour/size) � shared between platform and alt
.dx-variants, .alt-variants {
display: flex;
flex-direction: column;
@@ -812,7 +816,7 @@ $dx-card-bg: #f5f3f9;
// ========== platform RESPONSIVE ==========
-// Large desktop — constrain gallery height
+// Large desktop � constrain gallery height
@media (min-width: 1201px) {
.dx-main-photo {
max-height: 560px;
diff --git a/src/app/pages/item-detail/item-detail.component.ts b/src/app/pages/item-detail/item-detail.component.ts
index f2c4280..1ebc44a 100644
--- a/src/app/pages/item-detail/item-detail.component.ts
+++ b/src/app/pages/item-detail/item-detail.component.ts
@@ -14,10 +14,11 @@ import { TranslatePipe } from '../../i18n/translate.pipe';
import { TranslateService } from '../../i18n/translate.service';
import { ProductFacade } from '../../facades/platform/product.facade';
import { ProductCardComponent } from '../../components/product-card/product-card.component';
+import { IconComponent } from '../../shared/ui/icon/icon.component';
@Component({
selector: 'app-item-detail',
- imports: [DecimalPipe, RouterLink, FormsModule, LangRoutePipe, TranslatePipe, ProductCardComponent],
+ imports: [DecimalPipe, RouterLink, FormsModule, LangRoutePipe, TranslatePipe, ProductCardComponent, IconComponent],
templateUrl: './item-detail.component.html',
styleUrls: ['./item-detail.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush
diff --git a/src/app/shared/ui/icon/icon-registry.ts b/src/app/shared/ui/icon/icon-registry.ts
index 1e5b96b..0034217 100644
--- a/src/app/shared/ui/icon/icon-registry.ts
+++ b/src/app/shared/ui/icon/icon-registry.ts
@@ -56,6 +56,7 @@ import {
LucidePencil as Pencil,
LucidePlus as Plus,
LucidePlusCircle as PlusCircle,
+ LucideRefreshCw as RefreshCw,
LucideSave as Save,
LucideScale as Scale,
LucideSearch as Search,
@@ -69,6 +70,8 @@ import {
LucideTable as Table,
LucideTag as Tag,
LucideTags as Tags,
+ LucideThumbsDown as ThumbsDown,
+ LucideThumbsUp as ThumbsUp,
LucideTrash2 as Trash2,
LucideTriangleAlert as TriangleAlert,
LucideUpload as Upload,
@@ -121,6 +124,7 @@ export const APP_ICONS = {
plus: Plus,
plusCircle: PlusCircle,
minus: Minus,
+ refresh: RefreshCw,
check: Check,
checkCircle: CheckCircle2,
x: X,
@@ -162,6 +166,8 @@ export const APP_ICONS = {
stop: Square,
table: Table,
layoutGrid: LayoutGrid,
+ thumbsUp: ThumbsUp,
+ thumbsDown: ThumbsDown,
verified: BadgeCheck,
video: Video,
circle: Circle,
diff --git a/src/app/shared/ui/icon/icon.component.ts b/src/app/shared/ui/icon/icon.component.ts
index 3057de8..8baeab1 100644
--- a/src/app/shared/ui/icon/icon.component.ts
+++ b/src/app/shared/ui/icon/icon.component.ts
@@ -19,6 +19,7 @@ import { APP_ICONS, type AppIconName } from './icon-registry';
@@ -32,6 +33,7 @@ import { APP_ICONS, type AppIconName } from './icon-registry';
export class IconComponent {
readonly name = input.required
();
readonly size = input(20);
+ readonly color = input('currentColor');
readonly strokeWidth = input(2);
readonly ariaLabel = input(null);