weekly seo
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
import type { FAQItem } from "@/lib/types";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
import Link from "next/link";
|
||||
import type { Metadata } from "next";
|
||||
|
||||
import Image from "next/image";
|
||||
import Link from "next/link";
|
||||
import {
|
||||
ArrowRight,
|
||||
CheckCircle2,
|
||||
@@ -62,10 +63,12 @@ type UseCasePageTemplateProps = {
|
||||
}[];
|
||||
checklistTitle: string;
|
||||
checklist: string[];
|
||||
supportLinks: LinkCard[];
|
||||
faq: FAQItem[];
|
||||
schemaData?: Record<string, unknown>[];
|
||||
};
|
||||
supportLinks: LinkCard[];
|
||||
faq: FAQItem[];
|
||||
heroImage?: string;
|
||||
heroImageAlt?: string;
|
||||
schemaData?: Record<string, unknown>[];
|
||||
};
|
||||
|
||||
export function buildUseCaseMetadata({
|
||||
title,
|
||||
@@ -124,10 +127,12 @@ export function UseCasePageTemplate({
|
||||
workflowCards,
|
||||
checklistTitle,
|
||||
checklist,
|
||||
supportLinks,
|
||||
faq,
|
||||
schemaData = [],
|
||||
}: UseCasePageTemplateProps) {
|
||||
supportLinks,
|
||||
faq,
|
||||
heroImage,
|
||||
heroImageAlt = "QR code workflow example",
|
||||
schemaData = [],
|
||||
}: UseCasePageTemplateProps) {
|
||||
return (
|
||||
<>
|
||||
<SeoJsonLd
|
||||
@@ -217,45 +222,75 @@ export function UseCasePageTemplate({
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Card className="border-white/10 bg-white/10 p-8 text-white shadow-2xl shadow-slate-950/30 backdrop-blur">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center justify-between border-b border-white/10 pb-4">
|
||||
<div>
|
||||
<div className="text-xs uppercase tracking-[0.24em] text-cyan-200/70">
|
||||
Workflow snapshot
|
||||
</div>
|
||||
<div className="mt-2 text-2xl font-semibold text-white">
|
||||
What matters here
|
||||
</div>
|
||||
</div>
|
||||
<Compass className="h-9 w-9 text-cyan-300" />
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
{workflowCards.map((card, index) => (
|
||||
<div
|
||||
key={card.title}
|
||||
className="rounded-2xl border border-white/10 bg-slate-950/30 p-4"
|
||||
>
|
||||
<div className="mb-2 flex items-center gap-3">
|
||||
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-cyan-400/15 text-sm font-semibold text-cyan-200">
|
||||
{index + 1}
|
||||
</div>
|
||||
<div className="text-lg font-semibold text-white">
|
||||
{card.title}
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-sm leading-6 text-blue-50/80">
|
||||
{card.description}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{heroImage ? (
|
||||
<div className="rounded-[2rem] border border-white/10 bg-white/10 p-3 shadow-2xl shadow-slate-950/30 backdrop-blur">
|
||||
<div className="relative aspect-[4/3] overflow-hidden rounded-[1.5rem] border border-white/10 bg-slate-950/40">
|
||||
<Image
|
||||
src={heroImage}
|
||||
alt={heroImageAlt}
|
||||
fill
|
||||
priority
|
||||
sizes="(min-width: 1024px) 38vw, 100vw"
|
||||
className="object-cover"
|
||||
/>
|
||||
</div>
|
||||
<div className="grid gap-3 px-2 py-4 text-sm text-blue-50/82 sm:grid-cols-3 lg:grid-cols-1 xl:grid-cols-3">
|
||||
{workflowCards.map((card, index) => (
|
||||
<div key={card.title} className="flex gap-3">
|
||||
<div className="flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-cyan-300/15 text-xs font-semibold text-cyan-200">
|
||||
{index + 1}
|
||||
</div>
|
||||
<div>
|
||||
<div className="font-semibold text-white">
|
||||
{card.title}
|
||||
</div>
|
||||
<p className="mt-1 leading-5">{card.description}</p>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
) : (
|
||||
<Card className="border-white/10 bg-white/10 p-8 text-white shadow-2xl shadow-slate-950/30 backdrop-blur">
|
||||
<div className="space-y-6">
|
||||
<div className="flex items-center justify-between border-b border-white/10 pb-4">
|
||||
<div>
|
||||
<div className="text-xs uppercase tracking-[0.24em] text-cyan-200/70">
|
||||
Workflow snapshot
|
||||
</div>
|
||||
<div className="mt-2 text-2xl font-semibold text-white">
|
||||
What matters here
|
||||
</div>
|
||||
</div>
|
||||
<Compass className="h-9 w-9 text-cyan-300" />
|
||||
</div>
|
||||
|
||||
<div className="space-y-4">
|
||||
{workflowCards.map((card, index) => (
|
||||
<div
|
||||
key={card.title}
|
||||
className="rounded-2xl border border-white/10 bg-slate-950/30 p-4"
|
||||
>
|
||||
<div className="mb-2 flex items-center gap-3">
|
||||
<div className="flex h-8 w-8 items-center justify-center rounded-full bg-cyan-400/15 text-sm font-semibold text-cyan-200">
|
||||
{index + 1}
|
||||
</div>
|
||||
<div className="text-lg font-semibold text-white">
|
||||
{card.title}
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-sm leading-6 text-blue-50/80">
|
||||
{card.description}
|
||||
</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</Card>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div className="container mx-auto max-w-7xl px-4 py-12 sm:px-6 lg:px-8">
|
||||
<AnswerFirstBlock
|
||||
|
||||
Reference in New Issue
Block a user