From d0ebf351198eccfa4d444bc9a12e9d0236f76575 Mon Sep 17 00:00:00 2001 From: kayjaydee Date: Wed, 22 Apr 2026 09:13:09 +0200 Subject: [PATCH] feat(06-02): add BlogCard component with default + compact variants MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - variant="default" (listing): cover image conditional (D-03 no fallback), aspect-[16/9], first tag UBadge, date i18n via Intl.DateTimeFormat, h2 title, line-clamp-2 description, reading time + extra tags pills, absolute inset-0 NuxtLink for SEO/a11y (D-02 tags non-clickable) - variant="compact" (prev/next, D-09/D-10): no image, label row with UIcon arrow (left/right per direction), h3 title, date mono, text-right on next / text-left on prev - Props: article, variant?='default'|'compact', direction?='prev'|'next' - Slug derived from article.path last segment (locale-agnostic) - readingMinutes: uses article.minutes (Nitro hook) with useReadingTime fallback on article.description - Schema.org BlogPosting markup (headline/description/keywords/url/image/ datePublished) — ready for Phase 7 JSON-LD Article - a11y aria-label interpolated via t('a11y.blogPrev'|'blogNext', {title}) --- app/components/BlogCard.vue | 192 ++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 app/components/BlogCard.vue diff --git a/app/components/BlogCard.vue b/app/components/BlogCard.vue new file mode 100644 index 0000000..c33e2e0 --- /dev/null +++ b/app/components/BlogCard.vue @@ -0,0 +1,192 @@ + + +