Update Resources.tsx

This commit is contained in:
Desktop
2025-11-14 03:12:58 +05:00
parent 78ce123e94
commit eabafe7636

View File

@@ -1,161 +1,705 @@
import React from "react";
import SectionHeading from "../components/SectionHeading";
import CTASection from "../components/CTASection";
const articles = [
{
title: "AI + SEO: Building topical authority at scale",
description:
"How Igny8 customers map thousands of keywords into authoritative clusters that rank faster.",
date: "October 2025",
},
{
title: "Automating the content supply chain",
description:
"A playbook for connecting keyword research, briefs, writing, and imagery without human bottlenecks.",
date: "September 2025",
},
{
title: "Measuring AI-generated content quality",
description:
"Frameworks for tracking performance, editorial standards, and compliance across large AI programs.",
date: "August 2025",
},
];
const webinars = [
{
title: "Building an automation-first content ops team",
description: "Live strategy session with Igny8 specialists and customer panel.",
date: "November 21, 2025",
},
{
title: "From keywords to conversions: dashboards that prove ROI",
description: "Hands-on walkthrough of Igny8 dashboards and reporting exports.",
date: "On-demand replay",
},
];
import React, { useState } from "react";
import { Link } from "react-router-dom";
import {
RocketLaunchIcon,
ChatBubbleLeftRightIcon,
ArrowRightIcon,
ArrowDownTrayIcon,
PlayIcon,
CalculatorIcon,
BookOpenIcon,
SparklesIcon,
ChartBarIcon,
BoltIcon,
PhotoIcon,
DocumentTextIcon,
WrenchScrewdriverIcon,
ArrowTrendingUpIcon,
ClockIcon,
} from "@heroicons/react/24/outline";
const Resources: React.FC = () => {
const [selectedCategory, setSelectedCategory] = useState("Articles");
const [webinarTab, setWebinarTab] = useState<"upcoming" | "ondemand">("upcoming");
const renderCta = (cta: { label: string; href: string }, className: string) => {
const isExternal = cta.href.startsWith("http");
if (isExternal) {
return (
<a
href={cta.href}
className={className}
target="_blank"
rel="noreferrer"
>
{cta.label}
</a>
);
}
return (
<Link to={cta.href} className={className}>
{cta.label}
</Link>
);
};
const categories = [
"Articles",
"Playbooks",
"Webinars",
"Templates",
"Tools",
"Case Studies",
"Product Updates",
];
const articles = [
{
title: "AI SEO: Building topical authority at scale",
description: "Short intro about mapping thousands of keywords at speed.",
category: "Articles",
},
{
title: "Automating the content supply chain",
description: "How to orchestrate keyword research, briefs, writing, imagery, and publishing.",
category: "Articles",
},
{
title: "Measuring AI generated content quality",
description: "Frameworks for accuracy, consistency, and editorial control across all outputs.",
category: "Articles",
},
{
title: "SERP-guided content planning for growth",
description: "How context aware scoring improves prioritization and publishing velocity.",
category: "Articles",
},
{
title: "Scaling briefs with AI editorial logic",
description: "A system for generating consistent, on brand briefs with automatic depth.",
category: "Articles",
},
{
title: "Upgrading workflows with cluster automation",
description: "Practical steps to enable automation across the entire research to publish pipeline.",
category: "Articles",
},
];
const playbooks = [
{
title: "AI SEO Acceleration Playbook",
description: "A complete framework for lifting organic traffic by expanding cluster depth and publishing volume.",
icon: ChartBarIcon,
color: "from-[#0693e3] to-[#0472b8]",
},
{
title: "Automated Content Supply Chain Blueprint",
description: "A step by step path for unifying research, briefs, writing, imagery, and publishing.",
icon: BoltIcon,
color: "from-[#0bbf87] to-[#08966b]",
},
{
title: "Editorial Standards for AI Content",
description: "Guidelines for tone, structure, consistency, and narrative control at scale.",
icon: DocumentTextIcon,
color: "from-[#ff7a00] to-[#cc5f00]",
},
{
title: "Topic Authority Framework",
description: "A methodology for building dominance across entire keyword clusters.",
icon: SparklesIcon,
color: "from-[#5d4ae3] to-[#3a2f94]",
},
];
const upcomingWebinars = [
{
title: "Building an automation first content ops team",
description: "Live strategy session with IGNY8 specialists.",
date: "November 21, 2025",
},
{
title: "From keywords to conversions: dashboards that prove ROI",
description: "A full walkthrough of reporting and insights.",
date: "December 5, 2025",
},
];
const onDemandWebinars = [
{
title: "Automating cluster research",
description: "Learn how to automate keyword clustering at scale.",
},
{
title: "Editorial control and AI tone systems",
description: "Master brand voice and tone management in AI content.",
},
];
const templates = [
{
title: "AI Brief Template",
description: "Structured format for generating consistent content briefs.",
icon: DocumentTextIcon,
color: "from-[#0693e3] to-[#0472b8]",
},
{
title: "Cluster Outline Template",
description: "Long form outline template aligned with IGNY8 Writer standards.",
icon: ArrowDownTrayIcon,
color: "from-[#0bbf87] to-[#08966b]",
},
{
title: "Image Prompt Template",
description: "A ready to use structure for generating high quality image prompts.",
icon: PhotoIcon,
color: "from-[#ff7a00] to-[#cc5f00]",
},
{
title: "Editorial Style Guide Template",
description: "A flexible guide for managing tone and brand voice.",
icon: BookOpenIcon,
color: "from-[#5d4ae3] to-[#3a2f94]",
},
];
const tools = [
{
title: "Content Velocity Calculator",
description: "Estimate the volume of content needed to achieve specific traffic goals.",
icon: CalculatorIcon,
color: "from-[#0693e3] to-[#0472b8]",
},
{
title: "Keyword Opportunity Score",
description: "A utility to evaluate keyword value based on difficulty, volume, and intent.",
icon: ArrowTrendingUpIcon,
color: "from-[#0bbf87] to-[#08966b]",
},
{
title: "Automation ROI Calculator",
description: "Measure the productivity gains achievable through workflow automation.",
icon: ChartBarIcon,
color: "from-[#5d4ae3] to-[#3a2f94]",
},
];
const caseStudies = [
{
title: "Publisher increases content velocity by 3x",
description: "Short note on how IGNY8 unified research and writing workflows.",
},
{
title: "Agency cuts production time by 48 percent",
description: "Insight into how automation reduced cycles from research to publish.",
},
{
title: "Marketing team consolidates 4 tools into one",
description: "Story on reducing platform complexity while scaling content output.",
},
];
return (
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
<section className="max-w-6xl mx-auto px-6 pt-24 pb-16 space-y-6">
<SectionHeading
eyebrow="Resources"
title="Insights, playbooks, and events for AI-led growth teams."
description="Stay ahead of the curve with strategic content, live sessions, and practical guides built by the Igny8 team."
/>
<div className="bg-white">
{/* HERO SECTION */}
<section className="relative overflow-hidden bg-gradient-to-b from-white via-slate-50/50 to-white">
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(6,147,227,0.03),transparent_60%)]" />
<div className="relative max-w-4xl mx-auto px-6 py-24 md:py-32 text-center z-10">
<span className="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.28em] text-slate-500 bg-slate-100 px-4 py-2 rounded-full mb-6">
Resources
</span>
<h1 className="text-5xl md:text-6xl lg:text-5xl font-bold leading-tight text-slate-900 mb-6">
Insights, playbooks, and tools for AI led growth teams.
</h1>
<p className="text-xl md:text-2xl text-slate-600 mb-10 max-w-2xl mx-auto leading-relaxed">
Stay ahead with strategic content, templates, and live sessions that help you scale output, unify your workflows, and maximize automation impact.
</p>
<div className="flex flex-col sm:flex-row gap-4 justify-center">
{renderCta(
{ label: "Browse articles", href: "#articles" },
"inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white px-8 py-4 text-base font-semibold hover:shadow-lg hover:-translate-y-0.5 transition shadow-md"
)}
{renderCta(
{ label: "Join newsletter", href: "#newsletter" },
"inline-flex items-center justify-center rounded-xl border-2 border-slate-300 bg-white text-slate-700 px-8 py-4 text-base font-semibold hover:border-[#0693e3] hover:text-[#0693e3] transition"
)}
</div>
</div>
</section>
<section className="max-w-6xl mx-auto px-6 pb-24 grid grid-cols-1 md:grid-cols-3 gap-6">
{articles.map((article, idx) => {
const colors = [
{ border: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white" },
{ border: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white" },
{ border: "border-[#ff7a00]/40", gradient: "from-[#ff7a00]/10 to-white" },
];
const colorScheme = colors[idx % colors.length];
return (
<article
key={article.title}
className={`rounded-3xl border-2 ${colorScheme.border} bg-gradient-to-br ${colorScheme.gradient} p-8 flex flex-col gap-6 hover:shadow-xl transition-all hover:-translate-y-1`}
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold">
{article.date}
</span>
<h3 className="text-xl font-semibold text-slate-900">{article.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed">{article.description}</p>
<div className="rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white h-40 flex items-center justify-center text-xs text-slate-500 shadow-inner">
Article cover placeholder (800×600) /marketing/images/resource-hero.png
</div>
</article>
);
})}
</section>
<section className="bg-gradient-to-br from-[#0693e3]/10 via-slate-50/70 to-[#0bbf87]/10 border-y border-[#0693e3]/20">
<div className="max-w-6xl mx-auto px-6 py-24 grid grid-cols-1 md:grid-cols-2 gap-8">
{webinars.map((webinar, idx) => {
const colors = [
{ border: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white" },
{ border: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white" },
];
const colorScheme = colors[idx % colors.length];
return (
<div
key={webinar.title}
className={`rounded-3xl border-2 ${colorScheme.border} bg-gradient-to-br ${colorScheme.gradient} p-8 flex flex-col gap-4 hover:shadow-xl transition-all hover:-translate-y-1`}
{/* FEATURED RESOURCE SPOTLIGHT */}
<section className="max-w-7xl mx-auto px-6 pb-24">
<div className="mb-8">
<span className="text-xs uppercase tracking-[0.28em] text-slate-500 font-semibold">Featured Resource</span>
</div>
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 via-white to-[#0bbf87]/5 p-10 md:p-12 shadow-xl hover:shadow-2xl transition-all">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-8 items-center">
<div className="space-y-4">
<h2 className="text-3xl md:text-4xl font-bold text-slate-900">
AI SEO: Building topical authority at scale
</h2>
<p className="text-lg text-slate-600 leading-relaxed">
A deep dive into how AI systems accelerate research, map thousands of keywords into authoritative clusters, and streamline content production for rapid growth.
</p>
<a
href="#"
className="inline-flex items-center gap-2 text-base font-semibold text-[#0693e3] hover:text-[#0472b8] group"
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold">
{webinar.date}
</span>
<h3 className="text-lg font-semibold text-slate-900">{webinar.title}</h3>
<p className="text-sm text-slate-600">{webinar.description}</p>
<button className="inline-flex items-center justify-center rounded-full bg-gradient-to-r from-[#0693e3] to-[#0472b8] hover:from-[#0472b8] hover:to-[#0693e3] text-white px-5 py-2 text-sm font-semibold shadow-lg shadow-[#0693e3]/30 transition-all">
Save my seat
</button>
</div>
Read full guide
<ArrowRightIcon className="h-5 w-5 group-hover:translate-x-1 transition-transform" />
</a>
</div>
<div className="rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white h-64 flex items-center justify-center text-sm text-slate-400 shadow-inner">
Featured resource image placeholder
</div>
</div>
</div>
</section>
{/* RESOURCE CATEGORY FILTERS */}
<section className="bg-white border-y border-slate-200">
<div className="max-w-7xl mx-auto px-6 py-6">
<div className="flex flex-wrap gap-3 justify-center">
{categories.map((category) => (
<button
key={category}
onClick={() => setSelectedCategory(category)}
className={`px-4 py-2 rounded-full text-sm font-semibold transition-all ${
selectedCategory === category
? "bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white shadow-md"
: "bg-slate-100 text-slate-600 hover:bg-slate-200"
}`}
>
{category}
</button>
))}
</div>
</div>
</section>
{/* ARTICLES GRID */}
<section id="articles" className="max-w-7xl mx-auto px-6 py-24">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
Latest Articles
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
{articles.map((article, index) => {
const colors = [
"from-[#0693e3]/10 to-white",
"from-[#0bbf87]/10 to-white",
"from-[#ff7a00]/10 to-white",
"from-[#5d4ae3]/10 to-white",
"from-[#0693e3]/10 to-white",
"from-[#0bbf87]/10 to-white",
];
const borders = [
"border-[#0693e3]/30",
"border-[#0bbf87]/30",
"border-[#ff7a00]/30",
"border-[#5d4ae3]/30",
"border-[#0693e3]/30",
"border-[#0bbf87]/30",
];
return (
<article
key={article.title}
className={`rounded-3xl border-2 ${borders[index]} bg-gradient-to-br ${colors[index]} p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all`}
>
<h3 className="text-xl font-semibold text-slate-900">{article.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{article.description}</p>
<a
href="#"
className="inline-flex items-center gap-2 text-sm font-semibold text-[#0693e3] hover:text-[#0472b8] group"
>
Read article
<ArrowRightIcon className="h-4 w-4 group-hover:translate-x-1 transition-transform" />
</a>
</article>
);
})}
</div>
<div className="text-center mt-12">
<a
href="#"
className="inline-flex items-center gap-2 text-base font-semibold text-slate-700 hover:text-[#0693e3] transition"
>
View all articles
<ArrowRightIcon className="h-5 w-5" />
</a>
</div>
</section>
<section className="max-w-6xl mx-auto px-6 py-24 grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
<div className="space-y-4">
<SectionHeading
eyebrow="Help center"
title="Get instant answers and product walkthroughs."
description="Dive into documentation, watch quickstart videos, or join live onboarding cohorts."
align="left"
/>
<ul className="space-y-3 text-sm text-slate-600">
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Help Center `/help`
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Documentation `/help#docs`
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
API Reference `/partners#api`
</li>
</ul>
{/* PLAYBOOKS SECTION */}
<section className="bg-gradient-to-b from-white via-slate-50/30 to-white py-24">
<div className="max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
Playbooks and Strategic Guides
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
{playbooks.map((playbook, index) => {
const Icon = playbook.icon;
return (
<div
key={playbook.title}
className="rounded-3xl border-2 border-slate-200 bg-white p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all"
>
<div className={`inline-flex size-12 rounded-xl bg-gradient-to-br ${playbook.color} items-center justify-center text-white shadow-lg`}>
<Icon className="h-6 w-6" />
</div>
<h3 className="text-lg font-semibold text-slate-900">{playbook.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{playbook.description}</p>
<a
href="#"
className="inline-flex items-center gap-2 text-sm font-semibold text-[#0693e3] hover:text-[#0472b8] group"
>
<ArrowDownTrayIcon className="h-4 w-4" />
Download {playbook.title.toLowerCase().includes("playbook") ? "playbook" : playbook.title.toLowerCase().includes("blueprint") ? "blueprint" : playbook.title.toLowerCase().includes("guide") ? "guide" : "framework"}
<ArrowRightIcon className="h-4 w-4 group-hover:translate-x-1 transition-transform" />
</a>
</div>
);
})}
</div>
</div>
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 via-white to-[#0bbf87]/5 p-10 space-y-6 shadow-lg">
<h3 className="text-2xl font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0693e3]"></span>
Join the Igny8 newsletter
</h3>
<p className="text-sm text-slate-600">
Monthly insights on AI, SEO, and automation. No fluffjust tactical guidance and event invites.
</p>
<form className="flex flex-col sm:flex-row gap-3">
<input
type="email"
placeholder="you@company.com"
className="flex-1 rounded-full border-2 border-slate-200 bg-white px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-[#0693e3] focus:ring-2 focus:ring-[#0693e3]/20"
/>
</section>
{/* WEBINARS AND REPLAYS */}
<section className="py-24 bg-white">
<div className="max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
Live Sessions and On demand Replays
</h2>
</div>
{/* Tabs */}
<div className="flex justify-center gap-4 mb-8">
<button
type="submit"
className="inline-flex items-center justify-center rounded-full bg-gradient-to-r from-[#0693e3] to-[#0472b8] hover:from-[#0472b8] hover:to-[#0693e3] text-white px-6 py-3 text-sm font-semibold shadow-lg shadow-[#0693e3]/30 transition-all"
onClick={() => setWebinarTab("upcoming")}
className={`px-6 py-3 rounded-xl font-semibold transition-all ${
webinarTab === "upcoming"
? "bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white shadow-md"
: "bg-slate-100 text-slate-600 hover:bg-slate-200"
}`}
>
Subscribe
Upcoming
</button>
</form>
<button
onClick={() => setWebinarTab("ondemand")}
className={`px-6 py-3 rounded-xl font-semibold transition-all ${
webinarTab === "ondemand"
? "bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white shadow-md"
: "bg-slate-100 text-slate-600 hover:bg-slate-200"
}`}
>
On demand
</button>
</div>
{/* Content */}
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
{webinarTab === "upcoming" ? (
<>
{upcomingWebinars.map((webinar, index) => {
const colors = [
"from-[#0693e3]/10 to-white",
"from-[#0bbf87]/10 to-white",
];
const borders = [
"border-[#0693e3]/30",
"border-[#0bbf87]/30",
];
return (
<div
key={webinar.title}
className={`rounded-3xl border-2 ${borders[index]} bg-gradient-to-br ${colors[index]} p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all`}
>
<div className="flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-500">
<ClockIcon className="h-4 w-4" />
{webinar.date}
</div>
<h3 className="text-xl font-semibold text-slate-900">{webinar.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{webinar.description}</p>
<button className="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white px-6 py-3 text-sm font-semibold hover:shadow-lg transition">
Register now
</button>
</div>
);
})}
</>
) : (
<>
{onDemandWebinars.map((webinar, index) => {
const colors = [
"from-[#5d4ae3]/10 to-white",
"from-[#ff7a00]/10 to-white",
];
const borders = [
"border-[#5d4ae3]/30",
"border-[#ff7a00]/30",
];
return (
<div
key={webinar.title}
className={`rounded-3xl border-2 ${borders[index]} bg-gradient-to-br ${colors[index]} p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all`}
>
<div className="flex items-center gap-2 text-xs uppercase tracking-[0.2em] text-slate-500">
<PlayIcon className="h-4 w-4" />
Replay
</div>
<h3 className="text-xl font-semibold text-slate-900">{webinar.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{webinar.description}</p>
<button className="inline-flex items-center justify-center gap-2 rounded-xl border-2 border-slate-300 bg-white text-slate-700 px-6 py-3 text-sm font-semibold hover:border-[#0693e3] hover:text-[#0693e3] transition">
<PlayIcon className="h-4 w-4" />
Watch replay
</button>
</div>
);
})}
</>
)}
</div>
<div className="text-center mt-12">
<a
href="#"
className="inline-flex items-center gap-2 text-base font-semibold text-slate-700 hover:text-[#0693e3] transition"
>
View all events
<ArrowRightIcon className="h-5 w-5" />
</a>
</div>
</div>
</section>
<CTASection
title="Want deeper access? Join our monthly live strategy lab."
description="Reserve your seat for upcoming webinars and office hours to learn how teams automate their growth pipeline with Igny8."
primaryCta={{ label: "Reserve seat", href: "/contact" }}
secondaryCta={{ label: "Browse articles", href: "/resources" }}
/>
{/* TEMPLATE LIBRARY */}
<section className="bg-gradient-to-b from-white via-slate-50/30 to-white py-24">
<div className="max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
Templates for Fast Execution
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
{templates.map((template, index) => {
const Icon = template.icon;
return (
<div
key={template.title}
className="rounded-3xl border-2 border-slate-200 bg-white p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all"
>
<div className={`inline-flex size-12 rounded-xl bg-gradient-to-br ${template.color} items-center justify-center text-white shadow-lg`}>
<Icon className="h-6 w-6" />
</div>
<h3 className="text-lg font-semibold text-slate-900">{template.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{template.description}</p>
<a
href="#"
className="inline-flex items-center gap-2 text-sm font-semibold text-[#0693e3] hover:text-[#0472b8] group"
>
<ArrowDownTrayIcon className="h-4 w-4" />
Download template
<ArrowRightIcon className="h-4 w-4 group-hover:translate-x-1 transition-transform" />
</a>
</div>
);
})}
</div>
</div>
</section>
{/* TOOLS AND CALCULATORS */}
<section className="py-24 bg-white">
<div className="max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
Tools to Support Your Growth Pipeline
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
{tools.map((tool, index) => {
const Icon = tool.icon;
return (
<div
key={tool.title}
className="rounded-3xl border-2 border-slate-200 bg-white p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all"
>
<div className={`inline-flex size-12 rounded-xl bg-gradient-to-br ${tool.color} items-center justify-center text-white shadow-lg`}>
<Icon className="h-6 w-6" />
</div>
<h3 className="text-lg font-semibold text-slate-900">{tool.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{tool.description}</p>
<button className="inline-flex items-center justify-center gap-2 rounded-xl bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white px-6 py-3 text-sm font-semibold hover:shadow-lg transition">
<WrenchScrewdriverIcon className="h-4 w-4" />
Open tool
</button>
</div>
);
})}
</div>
</div>
</section>
{/* CASE STUDIES PREVIEW */}
<section className="bg-gradient-to-b from-white via-slate-50/30 to-white py-24">
<div className="max-w-7xl mx-auto px-6">
<div className="text-center mb-12">
<h2 className="text-4xl md:text-5xl font-bold text-slate-900 mb-4">
How Teams Scale Output With IGNY8
</h2>
</div>
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
{caseStudies.map((study, index) => {
const colors = [
"from-[#0693e3]/10 to-white",
"from-[#0bbf87]/10 to-white",
"from-[#5d4ae3]/10 to-white",
];
const borders = [
"border-[#0693e3]/30",
"border-[#0bbf87]/30",
"border-[#5d4ae3]/30",
];
return (
<div
key={study.title}
className={`rounded-3xl border-2 ${borders[index]} bg-gradient-to-br ${colors[index]} p-8 flex flex-col gap-4 hover:shadow-xl hover:-translate-y-1 transition-all`}
>
<h3 className="text-xl font-semibold text-slate-900">{study.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed flex-1">{study.description}</p>
<a
href="/case-studies"
className="inline-flex items-center gap-2 text-sm font-semibold text-[#0693e3] hover:text-[#0472b8] group"
>
Read case study
<ArrowRightIcon className="h-4 w-4 group-hover:translate-x-1 transition-transform" />
</a>
</div>
);
})}
</div>
<div className="text-center mt-12">
<Link
to="/case-studies"
className="inline-flex items-center gap-2 text-base font-semibold text-slate-700 hover:text-[#0693e3] transition"
>
View all case studies
<ArrowRightIcon className="h-5 w-5" />
</Link>
</div>
</div>
</section>
{/* HELP CENTER PREVIEW */}
<section className="py-24 bg-white">
<div className="max-w-7xl mx-auto px-6">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-start">
{/* Left Column */}
<div className="space-y-6">
<h2 className="text-3xl md:text-4xl font-bold text-slate-900 mb-4">
Help Center
</h2>
<p className="text-lg text-slate-600 mb-8">
Get instant answers and product walkthroughs.
</p>
<ul className="space-y-4">
{[
{ label: "Quickstart guide", href: "/help#getting-started" },
{ label: "Documentation", href: "/help" },
{ label: "API Reference", href: "/partners#api" },
{ label: "Troubleshooting", href: "/help#faq" },
].map((link, index) => {
const dotColors = [
"bg-[#0693e3]",
"bg-[#0bbf87]",
"bg-[#ff7a00]",
"bg-[#5d4ae3]",
];
return (
<li key={link.label} className="flex items-center gap-3">
<span className={`size-2 rounded-full ${dotColors[index]} shadow-sm flex-shrink-0`} />
<Link
to={link.href}
className="text-base text-slate-700 hover:text-[#0693e3] font-medium transition"
>
{link.label}
</Link>
</li>
);
})}
</ul>
</div>
{/* Right Column - Newsletter Signup */}
<div id="newsletter" className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 via-white to-[#0bbf87]/5 p-10 space-y-6 shadow-lg">
<div className="flex items-center gap-3">
<div className="size-12 rounded-xl bg-gradient-to-br from-[#0693e3] to-[#0472b8] flex items-center justify-center text-white shadow-lg">
<SparklesIcon className="h-6 w-6" />
</div>
<h3 className="text-2xl font-semibold text-slate-900">
Newsletter Signup
</h3>
</div>
<p className="text-sm text-slate-600 leading-relaxed">
Monthly insights on AI, SEO, automation, and workflows.
</p>
<form className="flex flex-col sm:flex-row gap-3">
<input
type="email"
placeholder="you@company.com"
className="flex-1 rounded-xl border-2 border-slate-200 bg-white px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-[#0693e3] focus:ring-2 focus:ring-[#0693e3]/20"
/>
<button
type="submit"
className="inline-flex items-center justify-center rounded-xl bg-gradient-to-r from-[#0693e3] to-[#0472b8] text-white px-6 py-3 text-sm font-semibold hover:shadow-lg transition"
>
Subscribe
</button>
</form>
</div>
</div>
</div>
</section>
{/* FINAL CTA */}
<section className="relative overflow-hidden bg-gradient-to-br from-[#0693e3] via-[#5d4ae3] to-[#8b5cf6]">
{/* Radial glow */}
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(255,255,255,0.1),transparent_70%)]" />
<div className="relative max-w-4xl mx-auto px-6 py-24 md:py-32 text-center z-10">
<h2 className="text-4xl md:text-5xl lg:text-6xl font-extrabold text-white mb-6 leading-tight">
Want deeper access? Join our monthly live strategy lab.
</h2>
<p className="text-xl md:text-2xl text-white/90 mb-12 max-w-2xl mx-auto font-medium">
Reserve your seat to learn how teams automate their full growth pipeline.
</p>
<div className="flex flex-col sm:flex-row gap-5 justify-center">
<Link
to="/contact"
className="inline-flex items-center justify-center gap-2 rounded-xl border-2 border-white/30 bg-white/10 backdrop-blur-sm text-white px-10 py-5 text-lg font-bold hover:bg-white/20 hover:border-white/50 transition"
>
<ChatBubbleLeftRightIcon className="h-5 w-5" />
Reserve seat
</Link>
<a
href="#articles"
className="inline-flex items-center justify-center gap-2 rounded-xl bg-white text-[#0693e3] px-10 py-5 text-lg font-bold hover:bg-white/95 transition shadow-xl hover:shadow-2xl hover:-translate-y-0.5"
>
<RocketLaunchIcon className="h-5 w-5" />
Browse articles
</a>
</div>
</div>
</section>
</div>
);
};
export default Resources;