Site design updates

This commit is contained in:
Desktop
2025-11-14 01:16:08 +05:00
parent f8bab8d432
commit e74c048f46
17 changed files with 429 additions and 1618 deletions

View File

@@ -43,7 +43,7 @@ const caseStudies = [
const CaseStudies: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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">
<SectionHeading
eyebrow="Proof"
@@ -53,69 +53,89 @@ const CaseStudies: React.FC = () => {
</section>
<section className="max-w-6xl mx-auto px-6 pb-24 space-y-12">
{caseStudies.map((cs) => (
<div
key={cs.company}
className="rounded-3xl border border-slate-200 bg-white p-12 grid grid-cols-1 lg:grid-cols-2 gap-12"
>
<div className="space-y-6">
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
{cs.company}
</span>
<h3 className="text-2xl font-semibold text-slate-900">{cs.headline}</h3>
<p className="text-sm text-slate-600 leading-relaxed">{cs.summary}</p>
<div className="grid grid-cols-3 gap-4">
{cs.metrics.map((metric) => (
<div
key={metric.label}
className="rounded-2xl border border-slate-200 bg-white p-4 text-center space-y-2"
>
<div className="text-xl font-semibold text-slate-900">
{metric.value}
</div>
<div className="text-xs uppercase tracking-[0.2em] text-slate-500">
{metric.label}
</div>
</div>
))}
{caseStudies.map((cs, idx) => {
const gradients = [
{ border: "border-[#0693e3]/40", bg: "from-[#0693e3]/10 via-white to-[#0bbf87]/5" },
{ border: "border-[#0bbf87]/40", bg: "from-[#0bbf87]/10 via-white to-[#ff7a00]/5" },
{ border: "border-[#5d4ae3]/40", bg: "from-[#5d4ae3]/10 via-white to-[#0693e3]/5" },
];
const gradient = gradients[idx % gradients.length];
const metricColors = [
{ border: "border-[#0693e3]/30", bg: "from-[#0693e3]/10 to-white", text: "text-[#0693e3]" },
{ border: "border-[#0bbf87]/30", bg: "from-[#0bbf87]/10 to-white", text: "text-[#0bbf87]" },
{ border: "border-[#ff7a00]/30", bg: "from-[#ff7a00]/10 to-white", text: "text-[#ff7a00]" },
];
return (
<div
key={cs.company}
className={`rounded-3xl border-2 ${gradient.border} bg-gradient-to-br ${gradient.bg} p-12 grid grid-cols-1 lg:grid-cols-2 gap-12 hover:shadow-xl transition-all`}
>
<div className="space-y-6">
<span className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold">
{cs.company}
</span>
<h3 className="text-2xl font-semibold text-slate-900">{cs.headline}</h3>
<p className="text-sm text-slate-600 leading-relaxed">{cs.summary}</p>
<div className="grid grid-cols-3 gap-4">
{cs.metrics.map((metric, metricIdx) => {
const metricColor = metricColors[metricIdx % metricColors.length];
return (
<div
key={metric.label}
className={`rounded-2xl border-2 ${metricColor.border} bg-gradient-to-br ${metricColor.bg} p-4 text-center space-y-2 hover:shadow-lg transition-all`}
>
<div className={`text-xl font-semibold ${metricColor.text}`}>
{metric.value}
</div>
<div className="text-xs uppercase tracking-[0.2em] text-slate-500">
{metric.label}
</div>
</div>
);
})}
</div>
</div>
<div className="rounded-3xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white overflow-hidden shadow-inner">
<img
src={`/marketing/images/${cs.image}`}
alt={`${cs.company} case study`}
className="w-full h-full object-cover"
/>
</div>
</div>
<div className="rounded-3xl border border-slate-200 bg-slate-100 overflow-hidden">
<img
src={`/marketing/images/${cs.image}`}
alt={`${cs.company} case study`}
className="w-full h-full object-cover"
/>
</div>
</div>
))}
);
})}
</section>
<section className="bg-slate-50/70 border-y border-slate-200">
<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-12">
<div className="space-y-4">
<h4 className="text-lg font-semibold text-slate-900">Results you can expect</h4>
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 to-white p-8 space-y-4">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0693e3]"></span>
Results you can expect
</h4>
<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" />
30-60 day onboarding to deploy automation and Thinker governance.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
3-5× increase in content throughput without sacrificing editorial quality.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Clear ROI dashboards tying automation to revenue outcomes.
</li>
{[
{ text: "30-60 day onboarding to deploy automation and Thinker governance.", color: "bg-[#0693e3]" },
{ text: "3-5× increase in content throughput without sacrificing editorial quality.", color: "bg-[#0bbf87]" },
{ text: "Clear ROI dashboards tying automation to revenue outcomes.", color: "bg-[#ff7a00]" },
].map((item) => (
<li key={item.text} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${item.color} shadow-sm`} />
{item.text}
</li>
))}
</ul>
</div>
<div className="rounded-3xl border border-slate-200 bg-white p-10 space-y-4 text-sm text-slate-600">
<h4 className="text-lg font-semibold text-slate-900">Customer advisory board</h4>
<div className="rounded-3xl border-2 border-[#0bbf87]/30 bg-gradient-to-br from-[#0bbf87]/10 to-white p-10 space-y-4 text-sm text-slate-600">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0bbf87]"></span>
Customer advisory board
</h4>
<p>
Igny8s roadmap is shaped by an active community of customer strategists, agency partners, and product marketers. Join and get early access to features, template libraries, and industry benchmarks.
Igny8's roadmap is shaped by an active community of customer strategists, agency partners, and product marketers. Join and get early access to features, template libraries, and industry benchmarks.
</p>
<button className="inline-flex items-center justify-center rounded-full bg-brand-500 hover:bg-brand-400 px-5 py-2 text-sm font-semibold">
<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">
Join the CAB waitlist
</button>
</div>

View File

@@ -4,7 +4,7 @@ import CTASection from "../components/CTASection";
const Contact: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
<section className="max-w-4xl mx-auto px-6 pt-24 pb-12">
<SectionHeading
eyebrow="Contact"
@@ -14,14 +14,14 @@ const Contact: React.FC = () => {
</section>
<section className="max-w-5xl mx-auto px-6 pb-24 grid grid-cols-1 lg:grid-cols-2 gap-12">
<form className="rounded-3xl border border-slate-200 bg-white p-10 space-y-6">
<form 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="grid grid-cols-1 sm:grid-cols-2 gap-4">
<label className="flex flex-col gap-2 text-sm text-slate-600">
First name
<input
type="text"
placeholder="Alex"
className="rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="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"
/>
</label>
<label className="flex flex-col gap-2 text-sm text-slate-600">
@@ -29,7 +29,7 @@ const Contact: React.FC = () => {
<input
type="text"
placeholder="Rivera"
className="rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="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"
/>
</label>
</div>
@@ -39,7 +39,7 @@ const Contact: React.FC = () => {
<input
type="email"
placeholder="you@company.com"
className="rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="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"
/>
</label>
@@ -48,7 +48,7 @@ const Contact: React.FC = () => {
<input
type="text"
placeholder="Company name"
className="rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="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"
/>
</label>
@@ -57,48 +57,52 @@ const Contact: React.FC = () => {
<textarea
rows={4}
placeholder="Tell us about your current workflow, challenges, and goals."
className="rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400 resize-none"
className="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 resize-none"
/>
</label>
<button
type="submit"
className="inline-flex items-center justify-center rounded-full bg-brand-500 hover:bg-brand-400 px-6 py-3 text-sm font-semibold"
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 w-full"
>
Book strategy call
</button>
</form>
<div className="space-y-8">
<div className="rounded-3xl border border-slate-200 bg-white p-8 space-y-4 text-sm text-slate-600">
<h3 className="text-lg font-semibold text-slate-900">Calendly placeholder</h3>
<div className="aspect-[4/3] rounded-2xl border border-slate-200 bg-slate-100 flex items-center justify-center text-xs text-slate-500">
<div className="rounded-3xl border-2 border-[#0bbf87]/30 bg-gradient-to-br from-[#0bbf87]/10 to-white p-8 space-y-4 text-sm text-slate-600">
<h3 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0bbf87]"></span>
Calendly placeholder
</h3>
<div className="aspect-[4/3] rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white flex items-center justify-center text-xs text-slate-500 shadow-inner">
Embed Calendly iframe here
</div>
<p>
Prefer async? Email us at{" "}
<a href="mailto:hello@igny8.com" className="text-brand-200 hover:text-brand-100">
<a href="mailto:hello@igny8.com" className="text-[#0693e3] hover:text-[#0472b8] font-semibold">
hello@igny8.com
</a>{" "}
or join our community Slack.
</p>
</div>
<div className="rounded-3xl border border-slate-200 bg-white p-8 space-y-4">
<h3 className="text-lg font-semibold text-slate-900">Support perks</h3>
<div className="rounded-3xl border-2 border-[#ff7a00]/30 bg-gradient-to-br from-[#ff7a00]/10 to-white p-8 space-y-4">
<h3 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#ff7a00]"></span>
Support perks
</h3>
<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" />
24-hour response time on all Launch+ plans.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Dedicated success architect for Scale and Enterprise.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Migration services when replacing legacy content stacks.
</li>
{[
{ text: "24-hour response time on all Launch+ plans.", color: "bg-[#0693e3]" },
{ text: "Dedicated success architect for Scale and Enterprise.", color: "bg-[#0bbf87]" },
{ text: "Migration services when replacing legacy content stacks.", color: "bg-[#ff7a00]" },
].map((item) => (
<li key={item.text} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${item.color} shadow-sm`} />
{item.text}
</li>
))}
</ul>
</div>
</div>

View File

@@ -31,7 +31,7 @@ const tiers = [
const Partners: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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">
<SectionHeading
eyebrow="Partners"
@@ -41,28 +41,39 @@ const Partners: React.FC = () => {
</section>
<section className="max-w-6xl mx-auto px-6 pb-24 grid grid-cols-1 md:grid-cols-3 gap-8">
{tiers.map((tier) => (
<div
key={tier.title}
className="rounded-3xl border border-slate-200 bg-white p-8 flex flex-col gap-5"
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
Program
</span>
<h3 className="text-xl font-semibold text-slate-900">{tier.title}</h3>
<ul className="space-y-3 text-sm text-slate-600">
{tier.benefits.map((benefit) => (
<li key={benefit} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
{benefit}
</li>
))}
</ul>
</div>
))}
{tiers.map((tier, idx) => {
const colors = [
{ border: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white", dot: "bg-[#0693e3]" },
{ border: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white", dot: "bg-[#0bbf87]" },
{ border: "border-[#ff7a00]/40", gradient: "from-[#ff7a00]/10 to-white", dot: "bg-[#ff7a00]" },
];
const colorScheme = colors[idx % colors.length];
return (
<div
key={tier.title}
className={`rounded-3xl border-2 ${colorScheme.border} bg-gradient-to-br ${colorScheme.gradient} p-8 flex flex-col gap-5 hover:shadow-xl transition-all hover:-translate-y-1`}
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold">
Program
</span>
<h3 className="text-xl font-semibold text-slate-900">{tier.title}</h3>
<ul className="space-y-3 text-sm text-slate-600">
{tier.benefits.map((benefit, benefitIdx) => {
const benefitColors = ["bg-[#0693e3]", "bg-[#0bbf87]", "bg-[#ff7a00]", "bg-[#5d4ae3]"];
return (
<li key={benefit} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${benefitColors[benefitIdx % benefitColors.length]} shadow-sm`} />
{benefit}
</li>
);
})}
</ul>
</div>
);
})}
</section>
<section className="bg-slate-50/70 border-y border-slate-200">
<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 lg:grid-cols-2 gap-12">
<div className="space-y-6">
<SectionHeading
@@ -71,25 +82,26 @@ const Partners: React.FC = () => {
description="Use Igny8 APIs and webhooks to power your own products, analytics, or client portals. Automate keyword ingestion, content creation, asset delivery, and reporting."
align="left"
/>
<div className="rounded-3xl border border-slate-200 bg-white p-6 text-sm text-slate-600">
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 to-white p-6 text-sm text-slate-600 shadow-lg">
API docs placeholder (download at `/marketing/images/api-docs.png`, 1100×720).
</div>
</div>
<div className="rounded-3xl border border-slate-200 bg-white p-10 space-y-6">
<h4 className="text-lg font-semibold text-slate-900">Partner resources</h4>
<div className="rounded-3xl border-2 border-[#0bbf87]/30 bg-gradient-to-br from-[#0bbf87]/10 to-white p-10 space-y-6">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0bbf87]"></span>
Partner resources
</h4>
<ul className="space-y-4 text-sm text-slate-600">
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Sales playbooks, ROI calculators, and demo environments.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Shared Slack channels with Igny8 product and marketing teams.
</li>
<li className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
Quarterly partner labs to showcase launches and integrations.
</li>
{[
{ text: "Sales playbooks, ROI calculators, and demo environments.", color: "bg-[#0693e3]" },
{ text: "Shared Slack channels with Igny8 product and marketing teams.", color: "bg-[#0bbf87]" },
{ text: "Quarterly partner labs to showcase launches and integrations.", color: "bg-[#ff7a00]" },
].map((item) => (
<li key={item.text} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${item.color} shadow-sm`} />
{item.text}
</li>
))}
</ul>
</div>
</div>

View File

@@ -149,28 +149,28 @@ const Pricing: React.FC = () => {
<h3 className="text-xl font-semibold text-slate-900">
Compare plan capabilities
</h3>
<div className="overflow-hidden rounded-3xl border border-slate-200 bg-white">
<div className="overflow-hidden rounded-3xl border-2 border-[#0693e3]/20 bg-gradient-to-br from-white via-[#0693e3]/5 to-[#0bbf87]/5 shadow-lg">
<table className="min-w-full text-sm text-slate-600">
<thead className="bg-white text-slate-600 uppercase text-xs tracking-[0.3em]">
<thead className="bg-gradient-to-r from-[#0693e3]/10 via-[#5d4ae3]/10 to-[#0bbf87]/10 text-slate-700 uppercase text-xs tracking-[0.3em]">
<tr>
<th className="px-6 py-4 text-left">Capability</th>
<th className="px-6 py-4 text-center">Launch</th>
<th className="px-6 py-4 text-center">Scale</th>
<th className="px-6 py-4 text-center">Enterprise</th>
<th className="px-6 py-4 text-left font-semibold">Capability</th>
<th className="px-6 py-4 text-center font-semibold">Launch</th>
<th className="px-6 py-4 text-center font-semibold text-[#0693e3]">Scale</th>
<th className="px-6 py-4 text-center font-semibold">Enterprise</th>
</tr>
</thead>
<tbody>
{featureMatrix.map((row, index) => (
<tr key={row.feature} className={index % 2 === 0 ? "bg-white/3" : ""}>
<tr key={row.feature} className={index % 2 === 0 ? "bg-white/50" : "bg-gradient-to-r from-white/30 to-transparent"}>
<td className="px-6 py-5 text-slate-900 font-medium">{row.feature}</td>
<td className="px-6 py-5 text-center">
{row.launch === true ? "Included" : row.launch}
{row.launch === true ? <span className="inline-flex items-center gap-1"><span className="size-1.5 rounded-full bg-[#0bbf87]"></span>Included</span> : row.launch}
</td>
<td className="px-6 py-5 text-center font-medium text-[#0693e3]">
{row.scale === true ? <span className="inline-flex items-center gap-1"><span className="size-1.5 rounded-full bg-[#0693e3]"></span>Included</span> : row.scale}
</td>
<td className="px-6 py-5 text-center">
{row.scale === true ? "Included" : row.scale}
</td>
<td className="px-6 py-5 text-center">
{row.enterprise === true ? "Included" : row.enterprise}
{row.enterprise === true ? <span className="inline-flex items-center gap-1"><span className="size-1.5 rounded-full bg-[#5d4ae3]"></span>Included</span> : row.enterprise}
</td>
</tr>
))}
@@ -179,10 +179,11 @@ const Pricing: React.FC = () => {
</div>
</section>
<section className="bg-gradient-to-br from-[#0693e3]/5 via-slate-50/70 to-[#0bbf87]/5 border-y border-[#0693e3]/10">
<div className="max-w-6xl mx-auto px-6 py-24 grid grid-cols-1 md:grid-cols-2 gap-12 text-sm text-slate-600">
<div className="space-y-4">
<h4 className="text-lg font-semibold text-slate-900">
<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-12">
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/5 to-white p-8 space-y-4 text-sm text-slate-600">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0693e3]"></span>
Usage-based credits explained
</h4>
<p>
@@ -192,8 +193,9 @@ const Pricing: React.FC = () => {
Need more? Add packs instantly or set automation rules to pause when thresholds are hit.
</p>
</div>
<div className="space-y-4">
<h4 className="text-lg font-semibold text-slate-900">
<div className="rounded-3xl border-2 border-[#0bbf87]/30 bg-gradient-to-br from-[#0bbf87]/5 to-white p-8 space-y-4 text-sm text-slate-600">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0bbf87]"></span>
Security & compliance
</h4>
<p>

View File

@@ -4,7 +4,7 @@ import CTASection from "../components/CTASection";
const Product: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-16 items-center">
<div className="space-y-6">
@@ -14,21 +14,21 @@ const Product: React.FC = () => {
description="Planner, Writer, Thinker, and Automation act as one cohesive system. Each module is powerful on its own—together they deliver a compounding growth engine."
align="left"
/>
<div className="rounded-3xl border border-slate-200 bg-white p-6 space-y-4 text-sm text-slate-600">
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 via-white to-[#0bbf87]/5 p-6 space-y-4 text-sm text-slate-600 shadow-lg">
<div className="flex items-center justify-between text-slate-900">
<span className="font-semibold">Modules included</span>
<span>4 products · 12 automation recipes</span>
<span className="text-xs uppercase tracking-wider text-[#0693e3] font-semibold">4 products · 12 automation recipes</span>
</div>
<ul className="space-y-3">
{[
"Planner → Find, cluster, and prioritize keywords with AI scoring and SERP insights.",
"Writer → Generate on-brand long-form content from briefs with tone, audience, and compliance controls.",
"Thinker → Manage prompts, author profiles, and brand playbooks that feed every generation.",
"Automation → Run scheduled workflows that move keywords to ideas, tasks, content, and images automatically.",
{ text: "Planner → Find, cluster, and prioritize keywords with AI scoring and SERP insights.", color: "bg-[#0693e3]" },
{ text: "Writer → Generate on-brand long-form content from briefs with tone, audience, and compliance controls.", color: "bg-[#0bbf87]" },
{ text: "Thinker → Manage prompts, author profiles, and brand playbooks that feed every generation.", color: "bg-[#ff7a00]" },
{ text: "Automation → Run scheduled workflows that move keywords to ideas, tasks, content, and images automatically.", color: "bg-[#5d4ae3]" },
].map((point) => (
<li key={point} className="flex gap-3">
<span className="mt-1 size-2 rounded-full bg-brand-500" />
{point}
<li key={point.text} className="flex gap-3">
<span className={`mt-1 size-2 rounded-full ${point.color} shadow-sm`} />
{point.text}
</li>
))}
</ul>
@@ -90,38 +90,50 @@ const Product: React.FC = () => {
],
image: "automation-timeline.png",
},
].map((module) => (
<div
key={module.title}
className="rounded-3xl border border-slate-200 bg-white p-10 flex flex-col gap-6"
>
<div className="flex items-center gap-3 text-sm uppercase tracking-[0.3em] text-slate-900/40">
<span className="size-2 rounded-full bg-brand-500" />
{module.title}
].map((module, idx) => {
const colors = [
{ border: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white", dot: "bg-[#0693e3]" },
{ border: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white", dot: "bg-[#0bbf87]" },
{ border: "border-[#ff7a00]/40", gradient: "from-[#ff7a00]/10 to-white", dot: "bg-[#ff7a00]" },
{ border: "border-[#5d4ae3]/40", gradient: "from-[#5d4ae3]/10 to-white", dot: "bg-[#5d4ae3]" },
];
const colorScheme = colors[idx % colors.length];
return (
<div
key={module.title}
className={`rounded-3xl border-2 ${colorScheme.border} bg-gradient-to-br ${colorScheme.gradient} p-10 flex flex-col gap-6 hover:shadow-xl transition-all hover:-translate-y-1`}
>
<div className="flex items-center gap-3 text-sm uppercase tracking-[0.3em] text-slate-700 font-semibold">
<span className={`size-2 rounded-full ${colorScheme.dot} shadow-sm`} />
{module.title}
</div>
<h3 className="text-2xl font-semibold text-slate-900">{module.title} platform</h3>
<ul className="space-y-3 text-sm text-slate-900/65">
{module.copy.map((line, lineIdx) => {
const dotColors = ["bg-[#0693e3]", "bg-[#0bbf87]", "bg-[#ff7a00]", "bg-[#5d4ae3]"];
return (
<li key={line} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${dotColors[lineIdx % dotColors.length]} shadow-sm`} />
{line}
</li>
);
})}
</ul>
<div className="rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white overflow-hidden shadow-inner">
<img
src={`/marketing/images/${module.image}`}
alt={`${module.title} module`}
className="w-full h-full object-cover"
/>
</div>
</div>
<h3 className="text-2xl font-semibold text-slate-900">{module.title} platform</h3>
<ul className="space-y-3 text-sm text-slate-900/65">
{module.copy.map((line) => (
<li key={line} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
{line}
</li>
))}
</ul>
<div className="rounded-2xl border border-slate-200 bg-slate-100 overflow-hidden">
<img
src={`/marketing/images/${module.image}`}
alt={`${module.title} module`}
className="w-full h-full object-cover"
/>
</div>
</div>
))}
);
})}
</div>
</section>
<section className="max-w-6xl mx-auto px-6 py-24">
<div className="rounded-3xl border border-slate-200 bg-gradient-to-br from-brand-50 via-white to-slate-50 p-10 md:p-16 flex flex-col lg:flex-row gap-16">
<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-16 flex flex-col lg:flex-row gap-16 shadow-xl">
<div className="flex-1 space-y-6">
<SectionHeading
eyebrow="Automation timeline"
@@ -131,20 +143,20 @@ const Product: React.FC = () => {
/>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 text-sm text-slate-600">
{[
"Real-time status for every automation recipe with success rates and manual interventions logged.",
"Smart recommendations to rebalance workloads, add credits, or adjust prompts when performance shifts.",
"Exportable reports to share results with leadership or clients in one click.",
"Granular permissions so teams can automate while leadership maintains oversight.",
{ text: "Real-time status for every automation recipe with success rates and manual interventions logged.", color: "bg-[#0693e3]" },
{ text: "Smart recommendations to rebalance workloads, add credits, or adjust prompts when performance shifts.", color: "bg-[#0bbf87]" },
{ text: "Exportable reports to share results with leadership or clients in one click.", color: "bg-[#ff7a00]" },
{ text: "Granular permissions so teams can automate while leadership maintains oversight.", color: "bg-[#5d4ae3]" },
].map((item) => (
<div key={item} className="flex gap-3">
<span className="mt-1 size-2 rounded-full bg-brand-500" />
{item}
<div key={item.text} className="flex gap-3">
<span className={`mt-1 size-2 rounded-full ${item.color} shadow-sm`} />
{item.text}
</div>
))}
</div>
</div>
<div className="flex-1">
<div className="rounded-3xl border border-slate-200 bg-white overflow-hidden">
<div className="rounded-3xl border-2 border-slate-200 bg-white overflow-hidden shadow-lg">
<img
src="/marketing/images/automation-timeline.png"
alt="Automation timeline"

View File

@@ -38,7 +38,7 @@ const webinars = [
const Resources: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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"
@@ -48,40 +48,55 @@ const Resources: React.FC = () => {
</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) => (
<article
key={article.title}
className="rounded-3xl border border-slate-200 bg-white p-8 flex flex-col gap-6"
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
{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 border-slate-200 bg-slate-100 h-40 flex items-center justify-center text-xs text-slate-500">
Article cover placeholder (800×600) /marketing/images/resource-hero.png
</div>
</article>
))}
{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-slate-50/70 border-y border-slate-200">
<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) => (
<div
key={webinar.title}
className="rounded-3xl border border-slate-200 bg-white p-8 flex flex-col gap-4"
>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
{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-brand-500 hover:bg-brand-400 px-5 py-2 text-sm font-semibold">
Save my seat
</button>
</div>
))}
{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`}
>
<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>
);
})}
</div>
</section>
@@ -108,8 +123,11 @@ const Resources: React.FC = () => {
</li>
</ul>
</div>
<div className="rounded-3xl border border-slate-200 bg-white p-10 space-y-6">
<h3 className="text-2xl font-semibold text-slate-900">Join the Igny8 newsletter</h3>
<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>
@@ -117,11 +135,11 @@ const Resources: React.FC = () => {
<input
type="email"
placeholder="you@company.com"
className="flex-1 rounded-full border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
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"
/>
<button
type="submit"
className="inline-flex items-center justify-center rounded-full bg-brand-500 hover:bg-brand-400 px-6 py-3 text-sm font-semibold"
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"
>
Subscribe
</button>

View File

@@ -49,7 +49,7 @@ const personas = [
const Solutions: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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">
<SectionHeading
eyebrow="Solutions"
@@ -59,75 +59,97 @@ const Solutions: React.FC = () => {
</section>
<section className="max-w-6xl mx-auto px-6 pb-24 space-y-12">
{personas.map((persona) => (
<div
key={persona.name}
className="rounded-3xl border border-slate-200 bg-white p-10 md:p-16 grid grid-cols-1 lg:grid-cols-3 gap-12"
>
<div className="lg:col-span-1 space-y-4">
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
Persona
</span>
<h3 className="text-2xl font-semibold">{persona.name}</h3>
<div className="rounded-2xl border border-slate-200 bg-slate-100 overflow-hidden">
<img
src={`/marketing/images/${persona.image}`}
alt={`${persona.name} workflow`}
className="w-full h-full object-cover"
/>
{personas.map((persona, idx) => {
const gradients = [
{ border: "border-[#0693e3]/40", bg: "from-[#0693e3]/10 via-white to-[#0bbf87]/5" },
{ border: "border-[#0bbf87]/40", bg: "from-[#0bbf87]/10 via-white to-[#ff7a00]/5" },
{ border: "border-[#5d4ae3]/40", bg: "from-[#5d4ae3]/10 via-white to-[#0693e3]/5" },
];
const gradient = gradients[idx % gradients.length];
return (
<div
key={persona.name}
className={`rounded-3xl border-2 ${gradient.border} bg-gradient-to-br ${gradient.bg} p-10 md:p-16 grid grid-cols-1 lg:grid-cols-3 gap-12 hover:shadow-xl transition-all`}
>
<div className="lg:col-span-1 space-y-4">
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
Persona
</span>
<h3 className="text-2xl font-semibold">{persona.name}</h3>
<div className="rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white overflow-hidden shadow-inner">
<img
src={`/marketing/images/${persona.image}`}
alt={`${persona.name} workflow`}
className="w-full h-full object-cover"
/>
</div>
</div>
<div className="space-y-6">
<h4 className="text-sm uppercase tracking-[0.3em] text-rose-600 font-semibold flex items-center gap-2">
<span className="size-1.5 rounded-full bg-rose-400"></span>
Pain points
</h4>
<ul className="space-y-4 text-sm text-slate-600">
{persona.pains.map((pain) => (
<li key={pain} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-rose-400 shadow-sm" />
{pain}
</li>
))}
</ul>
</div>
<div className="space-y-6">
<h4 className="text-sm uppercase tracking-[0.3em] text-[#0693e3] font-semibold flex items-center gap-2">
<span className="size-1.5 rounded-full bg-[#0693e3]"></span>
Outcomes with Igny8
</h4>
<ul className="space-y-4 text-sm text-slate-600">
{persona.outcomes.map((outcome, outcomeIdx) => {
const outcomeColors = ["bg-[#0693e3]", "bg-[#0bbf87]", "bg-[#ff7a00]"];
return (
<li key={outcome} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${outcomeColors[outcomeIdx % outcomeColors.length]} shadow-sm`} />
{outcome}
</li>
);
})}
</ul>
</div>
</div>
<div className="space-y-6">
<h4 className="text-sm uppercase tracking-[0.3em] text-slate-500">
Pain points
</h4>
<ul className="space-y-4 text-sm text-slate-600">
{persona.pains.map((pain) => (
<li key={pain} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-rose-300" />
{pain}
</li>
))}
</ul>
</div>
<div className="space-y-6">
<h4 className="text-sm uppercase tracking-[0.3em] text-slate-500">
Outcomes with Igny8
</h4>
<ul className="space-y-4 text-sm text-slate-600">
{persona.outcomes.map((outcome) => (
<li key={outcome} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
{outcome}
</li>
))}
</ul>
</div>
</div>
))}
);
})}
</section>
<section className="bg-slate-50/70 border-y border-slate-200">
<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-3 gap-8">
{[
{
metric: "3.2×",
label: "Average lift in organic traffic within 90 days.",
color: "border-[#0693e3]/40",
gradient: "from-[#0693e3]/10 to-white",
textColor: "text-[#0693e3]",
},
{
metric: "48%",
label: "Reduction in time-to-publish from keyword discovery.",
color: "border-[#0bbf87]/40",
gradient: "from-[#0bbf87]/10 to-white",
textColor: "text-[#0bbf87]",
},
{
metric: "4 tools",
label: "Average number of point solutions replaced by Igny8.",
color: "border-[#ff7a00]/40",
gradient: "from-[#ff7a00]/10 to-white",
textColor: "text-[#ff7a00]",
},
].map((item) => (
<div
key={item.metric}
className="rounded-3xl border border-slate-200 bg-white p-8 text-center space-y-4"
className={`rounded-3xl border-2 ${item.color} bg-gradient-to-br ${item.gradient} p-8 text-center space-y-4 hover:shadow-xl transition-all hover:-translate-y-1`}
>
<div className="text-4xl font-semibold">{item.metric}</div>
<div className={`text-4xl font-semibold ${item.textColor}`}>{item.metric}</div>
<p className="text-sm text-slate-600">{item.label}</p>
</div>
))}

View File

@@ -31,45 +31,55 @@ const tourSteps = [
const Tour: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<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="Guided Tour"
title="Experience the entire Igny8 journey in minutes."
description="Walk through the workflow that moves market intelligence into production-ready content. Each step builds toward an automated growth flywheel."
/>
<div className="rounded-3xl border border-slate-200 bg-white p-8">
<div className="aspect-video rounded-2xl border border-slate-200 bg-slate-100 flex items-center justify-center text-slate-500 text-sm">
<div className="rounded-3xl border-2 border-[#0693e3]/30 bg-gradient-to-br from-[#0693e3]/10 via-white to-[#0bbf87]/5 p-8 shadow-lg">
<div className="aspect-video rounded-2xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white flex items-center justify-center text-slate-500 text-sm shadow-inner">
Video walkthrough placeholder (embed demo or Loom)
</div>
</div>
</section>
<section className="max-w-6xl mx-auto px-6 pb-24 space-y-12">
{tourSteps.map((step, index) => (
<div
key={step.title}
className="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center"
>
<div className={`space-y-4 ${index % 2 === 1 ? "lg:order-2" : ""}`}>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500">
Step {index + 1}
</span>
<h3 className="text-2xl font-semibold">{step.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed">{step.description}</p>
{tourSteps.map((step, index) => {
const colors = [
{ border: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white", dot: "bg-[#0693e3]" },
{ border: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white", dot: "bg-[#0bbf87]" },
{ border: "border-[#ff7a00]/40", gradient: "from-[#ff7a00]/10 to-white", dot: "bg-[#ff7a00]" },
{ border: "border-[#5d4ae3]/40", gradient: "from-[#5d4ae3]/10 to-white", dot: "bg-[#5d4ae3]" },
];
const colorScheme = colors[index % colors.length];
return (
<div
key={step.title}
className={`grid grid-cols-1 lg:grid-cols-2 gap-12 items-center rounded-3xl border-2 ${colorScheme.border} bg-gradient-to-br ${colorScheme.gradient} p-8 hover:shadow-xl transition-all`}
>
<div className={`space-y-4 ${index % 2 === 1 ? "lg:order-2" : ""}`}>
<span className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold flex items-center gap-2">
<span className={`size-1.5 rounded-full ${colorScheme.dot}`}></span>
Step {index + 1}
</span>
<h3 className="text-2xl font-semibold">{step.title}</h3>
<p className="text-sm text-slate-600 leading-relaxed">{step.description}</p>
</div>
<div className={`rounded-3xl border-2 border-slate-200 bg-gradient-to-br from-slate-50 to-white overflow-hidden shadow-inner ${index % 2 === 1 ? "lg:order-1" : ""}`}>
<img
src={`/marketing/images/${step.image}`}
alt={step.title}
className="w-full h-full object-cover"
/>
</div>
</div>
<div className={`rounded-3xl border border-slate-200 bg-white overflow-hidden ${index % 2 === 1 ? "lg:order-1" : ""}`}>
<img
src={`/marketing/images/${step.image}`}
alt={step.title}
className="w-full h-full object-cover"
/>
</div>
</div>
))}
);
})}
</section>
<section className="bg-slate-50/70 border-y border-slate-200">
<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 space-y-10">
<SectionHeading
eyebrow="Automation recipes"
@@ -78,19 +88,19 @@ const Tour: React.FC = () => {
/>
<div className="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-6 text-sm text-slate-600">
{[
{ name: "Keywords → Ideas", time: "Nightly", highlight: "Targets new opportunities" },
{ name: "Ideas → Tasks", time: "Daily", highlight: "Staff writers automatically" },
{ name: "Tasks → Content", time: "Hourly", highlight: "Generate & queue drafts" },
{ name: "Content → Images", time: "On approval", highlight: "Produce branded visuals" },
{ name: "Content → WordPress", time: "Manual launch", highlight: "One-click publish" },
{ name: "SERP Win/Loss Alerts", time: "Real-time", highlight: "Trigger optimizations" },
{ name: "Keywords → Ideas", time: "Nightly", highlight: "Targets new opportunities", color: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white" },
{ name: "Ideas → Tasks", time: "Daily", highlight: "Staff writers automatically", color: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white" },
{ name: "Tasks → Content", time: "Hourly", highlight: "Generate & queue drafts", color: "border-[#ff7a00]/40", gradient: "from-[#ff7a00]/10 to-white" },
{ name: "Content → Images", time: "On approval", highlight: "Produce branded visuals", color: "border-[#5d4ae3]/40", gradient: "from-[#5d4ae3]/10 to-white" },
{ name: "Content → WordPress", time: "Manual launch", highlight: "One-click publish", color: "border-[#0693e3]/40", gradient: "from-[#0693e3]/10 to-white" },
{ name: "SERP Win/Loss Alerts", time: "Real-time", highlight: "Trigger optimizations", color: "border-[#0bbf87]/40", gradient: "from-[#0bbf87]/10 to-white" },
].map((recipe) => (
<div
key={recipe.name}
className="rounded-3xl border border-slate-200 bg-white p-6 space-y-3"
className={`rounded-3xl border-2 ${recipe.color} bg-gradient-to-br ${recipe.gradient} p-6 space-y-3 hover:shadow-xl transition-all hover:-translate-y-1`}
>
<h4 className="text-base font-semibold text-slate-900">{recipe.name}</h4>
<div className="text-xs uppercase tracking-[0.3em] text-slate-500">
<div className="text-xs uppercase tracking-[0.3em] text-slate-500 font-semibold">
{recipe.time}
</div>
<p>{recipe.highlight}</p>

View File

@@ -19,7 +19,7 @@ const roadmapItems = [
const Waitlist: React.FC = () => {
return (
<div className="bg-white text-slate-900">
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
<section className="max-w-4xl mx-auto px-6 pt-24 pb-12">
<SectionHeading
eyebrow="Roadmap preview"
@@ -29,30 +29,33 @@ const Waitlist: React.FC = () => {
</section>
<section className="max-w-5xl mx-auto px-6 pb-24 grid grid-cols-1 lg:grid-cols-2 gap-12">
<div className="rounded-3xl border border-slate-200 bg-white p-10 space-y-6">
<h3 className="text-lg font-semibold text-slate-900">Join the waitlist</h3>
<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-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0693e3]"></span>
Join the waitlist
</h3>
<p className="text-sm text-slate-600">
Share your details and well invite you to beta cohorts with onboarding resources and direct feedback loops to our product team.
Share your details and we'll invite you to beta cohorts with onboarding resources and direct feedback loops to our product team.
</p>
<form className="space-y-4">
<input
type="text"
placeholder="Name"
className="w-full rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="w-full 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"
/>
<input
type="email"
placeholder="Work email"
className="w-full rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400"
className="w-full 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"
/>
<textarea
rows={4}
placeholder="Tell us about your current workflow and why you're excited."
className="w-full rounded-xl border border-slate-200 bg-slate-50/60 px-4 py-3 text-sm text-slate-900 placeholder:text-slate-500 focus:outline-none focus:border-brand-400 resize-none"
className="w-full 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 resize-none"
/>
<button
type="submit"
className="inline-flex items-center justify-center rounded-full bg-brand-500 hover:bg-brand-400 px-6 py-3 text-sm font-semibold"
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 w-full"
>
Join waitlist
</button>
@@ -60,23 +63,32 @@ const Waitlist: React.FC = () => {
</div>
<div className="space-y-6">
<div className="rounded-3xl border border-slate-200 bg-white p-8 space-y-4">
<h4 className="text-lg font-semibold text-slate-900">What's coming</h4>
<div className="rounded-3xl border-2 border-[#0bbf87]/30 bg-gradient-to-br from-[#0bbf87]/10 to-white p-8 space-y-4">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#0bbf87]"></span>
What's coming
</h4>
<ul className="space-y-3 text-sm text-slate-600">
{roadmapItems.map((item) => (
<li key={item.title} className="flex gap-3">
<span className="mt-1 size-1.5 rounded-full bg-brand-500" />
<div>
<div className="font-semibold text-slate-900">{item.title}</div>
<div>{item.description}</div>
</div>
</li>
))}
{roadmapItems.map((item, idx) => {
const colors = ["bg-[#0693e3]", "bg-[#0bbf87]", "bg-[#ff7a00]"];
return (
<li key={item.title} className="flex gap-3">
<span className={`mt-1 size-1.5 rounded-full ${colors[idx % colors.length]} shadow-sm`} />
<div>
<div className="font-semibold text-slate-900">{item.title}</div>
<div>{item.description}</div>
</div>
</li>
);
})}
</ul>
</div>
<div className="rounded-3xl border border-slate-200 bg-white p-8 text-sm text-slate-600 space-y-3">
<h4 className="text-lg font-semibold text-slate-900">How the beta works</h4>
<p>We onboard new features to the waitlist in weekly waves. Youll receive playbooks, sample workflows, and a feedback channel with our product team.</p>
<div className="rounded-3xl border-2 border-[#ff7a00]/30 bg-gradient-to-br from-[#ff7a00]/10 to-white p-8 text-sm text-slate-600 space-y-3">
<h4 className="text-lg font-semibold text-slate-900 flex items-center gap-2">
<span className="size-2 rounded-full bg-[#ff7a00]"></span>
How the beta works
</h4>
<p>We onboard new features to the waitlist in weekly waves. You'll receive playbooks, sample workflows, and a feedback channel with our product team.</p>
<p>Participants also get extended credits to experiment with automation scenarios.</p>
</div>
</div>