fix(catalog): show real material names, not categories, across quote views

New shared materialLabel() renders the global materials.name with brand/specs
appended only when not already part of the name (deduped; «؟» fallback kept).
Replaces the category-first composer in five places: supplier card badges
(CategoryPage), dashboard item lines (QuoteCard), ledger items summary,
project rows and purchase history. Also fixes the stale Units subtitle
«ضریب تبدیل همان دسته» → «ضریب تبدیل متریال» (category model kept).
This commit is contained in:
2026-09-06 19:03:35 +03:30
parent 1f123a0a05
commit fd1831b3fc
6 changed files with 26 additions and 14 deletions
+2 -4
View File
@@ -19,7 +19,7 @@ import {
activeItems,
lineItemTotal,
materialById,
materialSpecs,
materialLabel,
refConverted,
supplierById,
} from "../../lib/quoteUtils";
@@ -154,9 +154,7 @@ function renderProjectDetail(store: Store, name: string): React.ReactElement {
const matName = (mid: string) => {
const m = materialById(store.materials, mid);
if (m.category === "؟") return "؟";
const specs = materialSpecs(m);
return `${m.category} ${m.brand}${specs.length ? " · " + specs.join(" · ") : ""}`;
return materialLabel(m);
};
const supName = (sid: string) => {