- Seed 6 licensed bakery photos (media array) and wire them to every product card: home Seasonal Specials (strawberry tart/croissant/lemon loaf) and the article Cake Gallery (tart/sponge/galette). Kills the 'Add a photo' placeholder residue on all six cards. Also adds a bakery interior shot to the About story section. - Card title/price row: price moved to its own line (cake gallery) / a wrapping badge+price row under the title (seasonal specials) so a long product name never collides with the price and '$X.XX' can never clip. - SVG geometry guard: explicit width/height on all 43 <use> icon SVGs so the host Tailwind JIT dropping a size utility can't balloon an icon. - Lengthen the strawberries article to 8 paragraphs (bakery voice). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
27 lines
2.5 KiB
Plaintext
27 lines
2.5 KiB
Plaintext
<section class="py-16 md:py-24 bg-background text-foreground{% if class %} {{ class }}{% endif %}">
|
|
<div class="mx-auto max-w-6xl px-4">
|
|
{% if heading %}<h2 class="pd-display text-center text-3xl text-primary md:text-4xl"><span class="pd-doodle-underline">{{ heading }}</span></h2>{% endif %}
|
|
<div class="mt-12 {% if layout == "single" %}mx-auto max-w-3xl{% elif layout == "carousel" %}flex snap-x snap-mandatory gap-6 overflow-x-auto pb-4{% else %}grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3{% endif %}">
|
|
{% for q in quotes %}
|
|
<figure class="pd-card flex flex-col p-6{% if layout == "carousel" %} min-w-[18rem] max-w-sm shrink-0 snap-start{% endif %}">
|
|
{% if q.rating %}<div class="mb-3 flex gap-0.5" aria-label="Rated {{ q.rating }} out of 5">
|
|
<svg width="16" height="16" class="h-4 w-4 {% if q.rating >= 1 %}text-accent{% else %}text-muted-foreground/30{% endif %}" aria-hidden="true"><use href="/icons/lucide.svg#star"></use></svg>
|
|
<svg width="16" height="16" class="h-4 w-4 {% if q.rating >= 2 %}text-accent{% else %}text-muted-foreground/30{% endif %}" aria-hidden="true"><use href="/icons/lucide.svg#star"></use></svg>
|
|
<svg width="16" height="16" class="h-4 w-4 {% if q.rating >= 3 %}text-accent{% else %}text-muted-foreground/30{% endif %}" aria-hidden="true"><use href="/icons/lucide.svg#star"></use></svg>
|
|
<svg width="16" height="16" class="h-4 w-4 {% if q.rating >= 4 %}text-accent{% else %}text-muted-foreground/30{% endif %}" aria-hidden="true"><use href="/icons/lucide.svg#star"></use></svg>
|
|
<svg width="16" height="16" class="h-4 w-4 {% if q.rating >= 5 %}text-accent{% else %}text-muted-foreground/30{% endif %}" aria-hidden="true"><use href="/icons/lucide.svg#star"></use></svg>
|
|
</div>{% endif %}
|
|
<blockquote class="pd-body flex-1 text-lg leading-relaxed text-foreground">{% if q.quote %}“{{ q.quote }}”{% endif %}</blockquote>
|
|
<figcaption class="mt-5 flex items-center gap-3">
|
|
{% if q.avatar %}<span class="h-10 w-10 shrink-0 overflow-hidden rounded-full bg-secondary">{% img q.avatar alt=q.name class="h-full w-full object-cover" %}</span>{% endif %}
|
|
<span>
|
|
{% if q.name %}<span class="pd-display block text-base text-primary">{{ q.name }}</span>{% endif %}
|
|
{% if q.role %}<span class="pd-hand block text-lg text-accent">{{ q.role }}</span>{% endif %}
|
|
</span>
|
|
</figcaption>
|
|
</figure>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
</section>
|