Interleave banners between carousels, real "view all" links, bigger desktop logo

- StoreSpecialCarousels now inserts one of the two banner sections
  (TwoBanners/ThreeBanners, cycling) between every pair of carousels
  instead of stacking all carousels together with the banners fixed
  elsewhere on the page — works for any number of dynamic carousels.
- SectionTitle's action button is a real link now (actionHref), not an
  inert <button>. Each carousel's "مشاهده همه" goes to
  /products?specialId={group.id}, which renders that exact
  admin-curated group in the full product grid — store-specials groups
  have no pagination, so this is genuinely the complete set, not a
  truncated preview. Also fixed BlogCarousel's dead "وبلاگ" button the
  same way, now linking to /blog.
- Reduced FeaturedCategories' vertical padding (py-10/14 -> py-4/6).
- Desktop header logo was smaller than the mobile one (36px vs 46px) —
  bumped to 40/48px so it reads properly at desktop width.
- CONTEXT.md: document the banner-interleaving and specialId patterns.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
amirhosein.ashourloo
2026-09-15 17:57:01 +03:30
co-authored by Claude Sonnet 5
parent bc6cafaffa
commit 7c04316f3a
8 changed files with 134 additions and 44 deletions
+6 -5
View File
@@ -3,9 +3,10 @@ type SectionTitleProps = {
enTitle?: string;
subtitle?: string;
action?: string;
actionHref?: string;
};
export function SectionTitle({ title, enTitle, subtitle, action }: SectionTitleProps) {
export function SectionTitle({ title, enTitle, subtitle, action, actionHref }: SectionTitleProps) {
return (
<div className="mb-6 flex items-end justify-between gap-4">
<div>
@@ -25,13 +26,13 @@ export function SectionTitle({ title, enTitle, subtitle, action }: SectionTitleP
<p className="mt-1 text-sm text-muted">{subtitle}</p>
)}
</div>
{action && (
<button
type="button"
{action && actionHref && (
<a
href={actionHref}
className="shrink-0 text-sm font-medium text-red transition-colors hover:text-red-dark"
>
{action} ←
</button>
</a>
)}
</div>
);