Fix product links, equalize card heights, and switch to IRANYekan

- Resolve product cards from group endpoints (store-specials,
  brand-groups) that only return a productId, not a slug, via a new
  /products/id/[id] route backed by GET /products/by-id/{id} — clicking
  these was previously falling back to a name search instead of the
  detail page.
- Derive discount price/percent generically in normalizeProduct so any
  source with real old/new prices shows it, even without an explicit
  discount field from the API.
- Product cards and the detail page buy-box: show the discount badge
  beside the old (struck-through) price, current price alone on its
  own line, matching the reference design.
- Equalize product card heights within a carousel row (Swiper's own
  CSS doesn't stretch slides to the tallest sibling in slidesPerView:
  "auto" + freeMode mode) so the add-to-cart button lines up across
  cards regardless of whether a card has a discount line.
- Featured categories: 110px images with no border/radius, matching
  the site's other category card treatment.
- Replace Vazirmatn with the client's IRANYekan font files — light
  weight for body text, bold weight for headings only.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
amirhosein.ashourloo
2026-08-23 09:50:56 +03:30
co-authored by Claude Sonnet 5
parent 83809815c1
commit c2552af079
11 changed files with 158 additions and 52 deletions
+14 -3
View File
@@ -23,7 +23,8 @@
--color-red-dark: var(--red-dark);
--color-red-light: var(--red-light);
--color-red-muted: var(--red-muted);
--font-sans: var(--font-vazirmatn);
--font-sans: var(--font-iranyekan);
--font-sans-bold: var(--font-iranyekan-bold);
--font-display: var(--font-syne);
}
@@ -38,11 +39,21 @@ html {
body {
background: var(--background);
color: var(--foreground);
font-family: var(--font-vazirmatn), system-ui, sans-serif;
font-family: var(--font-iranyekan), system-ui, sans-serif;
}
/* Titles use the bold face; everything else stays on the light one. */
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--font-iranyekan-bold), var(--font-iranyekan), system-ui, sans-serif;
}
.font-display {
font-family: var(--font-syne), var(--font-vazirmatn), sans-serif;
font-family: var(--font-syne), var(--font-iranyekan), sans-serif;
}
@keyframes fade-up {