- app/components/product/ProductDescription.tsx: new below-fold section with a "توضیحات محصول" heading, whitespace-pre-line so multi-line seller copy (Instagram scrapes, victorwear WooCommerce imports) renders with its bullet-list line breaks preserved. Renders on both mobile and desktop; nothing shown when the product has no description. - app/components/product/ProductInfo.tsx: removed the collapsed single-<p> mobile description; the new section replaces it. - app/components/product/ProductDetailView.tsx: pricingOf now hides the discount when discount_price >= price (was only hiding when equal), so a stale row where the discount price accidentally matches or exceeds the base can never render as a fake promo. Mounts ProductDescription just above the mobile Contact button and reviews. - app/components/product/index.ts: export ProductDescription. - src/api/types/models/index.ts: ProductCategory now carries readonly parentId / parentName so the two-step category picker can build the parent→sub tree from a flat category list without an extra fetch. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { AlignRight } from "lucide-react";
|
||
|
||
interface ProductDescriptionProps {
|
||
description?: string | null;
|
||
}
|
||
|
||
/**
|
||
* Full product description block. Preserves the seller's line breaks (bullet
|
||
* lists from Instagram/WooCommerce imports come in as `\n`-separated lines),
|
||
* with a proper heading so it reads as its own section on the detail page.
|
||
*
|
||
* Renders nothing when no description is set — the section header shouldn't
|
||
* appear on products the seller hasn't filled out yet.
|
||
*/
|
||
export function ProductDescription({ description }: ProductDescriptionProps) {
|
||
const body = (description || "").trim();
|
||
if (!body) return null;
|
||
|
||
return (
|
||
<section className="w-full px-4 lg:px-0 my-6">
|
||
<div className="flex items-center gap-2 mb-3">
|
||
<AlignRight size={18} className="text-BLACK" />
|
||
<h2 className="text-B16 lg:text-B20 font-bold">توضیحات محصول</h2>
|
||
</div>
|
||
<div
|
||
className="text-R14 lg:text-[15px] leading-8 text-BLACK2 whitespace-pre-line"
|
||
dir="rtl"
|
||
>
|
||
{body}
|
||
</div>
|
||
</section>
|
||
);
|
||
}
|