site meta title and desc
This commit is contained in:
58
frontend/src/marketing/components/SEO.tsx
Normal file
58
frontend/src/marketing/components/SEO.tsx
Normal file
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* SEO Component
|
||||
* Uses react-helmet-async to manage meta tags for marketing pages
|
||||
*/
|
||||
|
||||
import React from "react";
|
||||
import { Helmet } from "react-helmet-async";
|
||||
import { MetaTags } from "../config/metaTags";
|
||||
|
||||
interface SEOProps {
|
||||
meta: MetaTags;
|
||||
}
|
||||
|
||||
const SEO: React.FC<SEOProps> = ({ meta }) => {
|
||||
const {
|
||||
title,
|
||||
description,
|
||||
keywords,
|
||||
ogTitle,
|
||||
ogDescription,
|
||||
ogImage,
|
||||
twitterCard,
|
||||
twitterTitle,
|
||||
twitterDescription,
|
||||
} = meta;
|
||||
|
||||
return (
|
||||
<Helmet>
|
||||
{/* Primary Meta Tags */}
|
||||
<title>{title}</title>
|
||||
<meta name="title" content={title} />
|
||||
<meta name="description" content={description} />
|
||||
<meta name="keywords" content={keywords} />
|
||||
|
||||
{/* Open Graph / Facebook */}
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://igny8.com" />
|
||||
<meta property="og:title" content={ogTitle || title} />
|
||||
<meta property="og:description" content={ogDescription || description} />
|
||||
{ogImage && <meta property="og:image" content={ogImage} />}
|
||||
|
||||
{/* Twitter */}
|
||||
<meta property="twitter:card" content={twitterCard || "summary_large_image"} />
|
||||
<meta property="twitter:url" content="https://igny8.com" />
|
||||
<meta property="twitter:title" content={twitterTitle || ogTitle || title} />
|
||||
<meta property="twitter:description" content={twitterDescription || ogDescription || description} />
|
||||
{ogImage && <meta property="twitter:image" content={ogImage} />}
|
||||
|
||||
{/* Additional SEO */}
|
||||
<meta name="robots" content="index, follow" />
|
||||
<meta name="language" content="English" />
|
||||
<meta name="author" content="IGNY8" />
|
||||
</Helmet>
|
||||
);
|
||||
};
|
||||
|
||||
export default SEO;
|
||||
|
||||
141
frontend/src/marketing/config/metaTags.ts
Normal file
141
frontend/src/marketing/config/metaTags.ts
Normal file
@@ -0,0 +1,141 @@
|
||||
/**
|
||||
* Meta Tags Configuration for Marketing Pages
|
||||
* Defines SEO meta titles, descriptions, and keywords for all marketing site pages
|
||||
*/
|
||||
|
||||
export interface MetaTags {
|
||||
title: string;
|
||||
description: string;
|
||||
keywords: string;
|
||||
ogTitle?: string;
|
||||
ogDescription?: string;
|
||||
ogImage?: string;
|
||||
twitterCard?: string;
|
||||
twitterTitle?: string;
|
||||
twitterDescription?: string;
|
||||
}
|
||||
|
||||
const baseUrl = "https://igny8.com";
|
||||
|
||||
export const metaTags: Record<string, MetaTags> = {
|
||||
home: {
|
||||
title: "IGNY8 - AI + SEO Platform | Scale SEO Content from Keyword Discovery to AI-Crafted Outputs",
|
||||
description: "IGNY8 automates your growth engine from research to briefs, from content writing to image generation. Scale SEO content from keyword discovery to AI-crafted outputs with one unified platform.",
|
||||
keywords: "AI SEO platform, keyword research, content automation, AI content generation, SEO content tools, keyword discovery, content marketing automation, AI writing, SEO automation, content workflow, keyword clustering, content briefs, AI content creation, SEO content platform, automated content generation",
|
||||
ogTitle: "IGNY8 - AI + SEO Platform | Scale SEO Content with Automation",
|
||||
ogDescription: "Automate your growth engine from research to briefs, from content writing to image generation. One platform for keyword intelligence, AI content, and workflow automation.",
|
||||
ogImage: `${baseUrl}/og-image.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 - AI + SEO Platform",
|
||||
twitterDescription: "Scale SEO content from keyword discovery to AI-crafted outputs with automation.",
|
||||
},
|
||||
product: {
|
||||
title: "Product Overview - IGNY8 | One Platform for Keyword Intelligence, AI Content & Automation",
|
||||
description: "IGNY8 unifies research, writing, images, and automation so your team creates more output with less effort. Explore Planner, Writer, and automation modules that power your SEO content workflow.",
|
||||
keywords: "AI content platform, keyword intelligence, content automation platform, SEO workflow automation, AI content tools, keyword research platform, content generation platform, SEO automation software, AI writing platform, content management system, keyword clustering tool, content brief automation, AI image generation, SEO content platform",
|
||||
ogTitle: "IGNY8 Product - Keyword Intelligence, AI Content & Automation",
|
||||
ogDescription: "One platform for keyword intelligence, AI content, and workflow automation. Unify research, writing, images, and automation.",
|
||||
ogImage: `${baseUrl}/og-product.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Product - AI Content & SEO Automation",
|
||||
twitterDescription: "One platform for keyword intelligence, AI content, and workflow automation.",
|
||||
},
|
||||
solutions: {
|
||||
title: "Solutions - IGNY8 | AI SEO Platform for Publishers, Agencies & E-commerce",
|
||||
description: "IGNY8 solutions for Publishers & Media, Agencies & Freelancers, and E-commerce & Marketplaces. Scale content production, maintain editorial standards, and automate SEO workflows tailored to your industry needs.",
|
||||
keywords: "SEO solutions for publishers, content automation for agencies, e-commerce SEO tools, media content platform, agency SEO software, publisher content tools, e-commerce content automation, SEO workflow solutions, content production platform, editorial automation, multi-brand SEO, vertical content management, agency content tools, publisher SEO platform",
|
||||
ogTitle: "IGNY8 Solutions - AI SEO Platform for Publishers, Agencies & E-commerce",
|
||||
ogDescription: "Scale content production and automate SEO workflows for Publishers & Media, Agencies & Freelancers, and E-commerce & Marketplaces.",
|
||||
ogImage: `${baseUrl}/og-solutions.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Solutions - Industry-Specific SEO Automation",
|
||||
twitterDescription: "AI SEO platform solutions for Publishers, Agencies, and E-commerce businesses.",
|
||||
},
|
||||
pricing: {
|
||||
title: "Pricing - IGNY8 | Transparent Pricing for AI SEO Content Platform",
|
||||
description: "Choose the right IGNY8 plan for your team. Starter, Growth, and Enterprise tiers with transparent pricing. Start free trial, no credit card required. Scale your SEO content production with AI automation.",
|
||||
keywords: "IGNY8 pricing, SEO platform pricing, AI content tool pricing, content automation pricing, SEO software cost, AI writing tool pricing, content platform pricing, SEO automation pricing, keyword research tool pricing, content generation pricing, SEO workflow pricing",
|
||||
ogTitle: "IGNY8 Pricing - Transparent Plans for AI SEO Platform",
|
||||
ogDescription: "Choose the right plan for your team. Starter, Growth, and Enterprise tiers. Start free trial, no credit card required.",
|
||||
ogImage: `${baseUrl}/og-pricing.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Pricing - AI SEO Platform Plans",
|
||||
twitterDescription: "Transparent pricing for AI SEO content platform. Start free trial today.",
|
||||
},
|
||||
tour: {
|
||||
title: "Product Tour - IGNY8 | See How AI SEO Platform Works",
|
||||
description: "Take a tour of IGNY8's AI SEO platform. See how to research keywords, build clusters, generate content briefs, create AI drafts, and automate your entire SEO content workflow from discovery to publication.",
|
||||
keywords: "IGNY8 tour, SEO platform demo, AI content platform tour, keyword research demo, content automation demo, SEO workflow demo, AI writing tool demo, content generation demo, SEO automation demo, platform walkthrough, product demo, SEO tool demo",
|
||||
ogTitle: "IGNY8 Product Tour - See How AI SEO Platform Works",
|
||||
ogDescription: "Take a tour of IGNY8's AI SEO platform. See how to automate your content workflow from keyword discovery to publication.",
|
||||
ogImage: `${baseUrl}/og-tour.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Product Tour - AI SEO Platform Demo",
|
||||
twitterDescription: "See how IGNY8 automates your SEO content workflow from keyword discovery to publication.",
|
||||
},
|
||||
resources: {
|
||||
title: "Resources - IGNY8 | Guides, Tutorials & Best Practices for AI SEO Content",
|
||||
description: "Access IGNY8 resources including guides, tutorials, best practices, and documentation for AI SEO content creation, keyword research, content automation, and SEO workflow optimization.",
|
||||
keywords: "SEO content guides, AI content tutorials, keyword research guides, content automation best practices, SEO workflow tutorials, AI writing guides, content marketing resources, SEO optimization guides, content strategy resources, keyword clustering guides, SEO content best practices, AI content tutorials",
|
||||
ogTitle: "IGNY8 Resources - Guides & Tutorials for AI SEO Content",
|
||||
ogDescription: "Access guides, tutorials, and best practices for AI SEO content creation, keyword research, and workflow automation.",
|
||||
ogImage: `${baseUrl}/og-resources.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Resources - SEO Content Guides & Tutorials",
|
||||
twitterDescription: "Guides, tutorials, and best practices for AI SEO content creation and automation.",
|
||||
},
|
||||
caseStudies: {
|
||||
title: "Case Studies - IGNY8 | Success Stories from AI SEO Content Platform Users",
|
||||
description: "Read IGNY8 case studies and success stories from publishers, agencies, and e-commerce businesses. See how teams scale content production, improve SEO rankings, and automate workflows with AI-powered content tools.",
|
||||
keywords: "IGNY8 case studies, SEO success stories, content automation case studies, AI content case studies, SEO platform success stories, content marketing case studies, keyword research success, content production case studies, SEO automation success, AI writing case studies",
|
||||
ogTitle: "IGNY8 Case Studies - Success Stories from AI SEO Platform Users",
|
||||
ogDescription: "Read success stories from publishers, agencies, and e-commerce businesses using IGNY8 to scale content production and improve SEO.",
|
||||
ogImage: `${baseUrl}/og-case-studies.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Case Studies - SEO Content Success Stories",
|
||||
twitterDescription: "Success stories from businesses scaling content production with IGNY8's AI SEO platform.",
|
||||
},
|
||||
partners: {
|
||||
title: "Partners - IGNY8 | Integration Partners & Technology Ecosystem",
|
||||
description: "Explore IGNY8's partner ecosystem including WordPress integration, API access, and technology partnerships. Connect IGNY8 with your existing tools and workflows for seamless content automation.",
|
||||
keywords: "IGNY8 partners, WordPress integration, SEO platform integrations, content automation integrations, API access, technology partnerships, CMS integration, content management integrations, SEO tool integrations, workflow integrations, platform partnerships",
|
||||
ogTitle: "IGNY8 Partners - Integration Partners & Technology Ecosystem",
|
||||
ogDescription: "Explore IGNY8's partner ecosystem including WordPress integration, API access, and technology partnerships.",
|
||||
ogImage: `${baseUrl}/og-partners.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Partners - Integration Ecosystem",
|
||||
twitterDescription: "Connect IGNY8 with your existing tools and workflows through our partner ecosystem.",
|
||||
},
|
||||
contact: {
|
||||
title: "Contact - IGNY8 | Talk with an AI SEO Platform Strategist",
|
||||
description: "Contact IGNY8 to discuss your SEO content goals, current stack, and timeline. Get a personalized demo, project ROI analysis, and automation opportunity mapping for your content workflow.",
|
||||
keywords: "contact IGNY8, SEO platform demo, content automation consultation, AI SEO consultation, keyword research consultation, content strategy consultation, SEO platform demo request, content automation demo, platform consultation, SEO tool demo",
|
||||
ogTitle: "Contact IGNY8 - Talk with an AI SEO Platform Strategist",
|
||||
ogDescription: "Share your goals, current stack, and timeline. We'll map automation opportunities, project ROI, and plan your launch.",
|
||||
ogImage: `${baseUrl}/og-contact.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "Contact IGNY8 - Get a Personalized Demo",
|
||||
twitterDescription: "Talk with an IGNY8 strategist about your SEO content goals and automation opportunities.",
|
||||
},
|
||||
waitlist: {
|
||||
title: "Waitlist - IGNY8 | Early Access to Upcoming AI SEO Platform Features",
|
||||
description: "Join the IGNY8 waitlist for early access to upcoming releases including one-click workflows, schedule intelligence, AI quality scoring, and more automation upgrades. Test new features before they ship.",
|
||||
keywords: "IGNY8 waitlist, early access, new features, upcoming releases, automation upgrades, AI quality scoring, workflow improvements, platform updates, beta features, new releases, feature preview",
|
||||
ogTitle: "IGNY8 Waitlist - Early Access to Upcoming Features",
|
||||
ogDescription: "Join the waitlist to test automation upgrades and AI scoring tools before they ship.",
|
||||
ogImage: `${baseUrl}/og-waitlist.png`,
|
||||
twitterCard: "summary_large_image",
|
||||
twitterTitle: "IGNY8 Waitlist - Early Access to New Features",
|
||||
twitterDescription: "Get early access to upcoming IGNY8 releases and automation upgrades.",
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* Get meta tags for a specific page
|
||||
* @param pageKey - Key from metaTags object (e.g., 'home', 'product', 'solutions')
|
||||
* @returns MetaTags object for the page
|
||||
*/
|
||||
export const getMetaTags = (pageKey: string): MetaTags => {
|
||||
return metaTags[pageKey] || metaTags.home;
|
||||
};
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React from "react";
|
||||
import ReactDOM from "react-dom/client";
|
||||
import { BrowserRouter } from "react-router-dom";
|
||||
import { HelmetProvider } from "react-helmet-async";
|
||||
import MarketingApp from "./MarketingApp";
|
||||
import "./styles/marketing.css";
|
||||
import "../styles/igny8-colors.css";
|
||||
@@ -15,9 +16,11 @@ const root = ReactDOM.createRoot(container);
|
||||
|
||||
root.render(
|
||||
<React.StrictMode>
|
||||
<BrowserRouter>
|
||||
<MarketingApp />
|
||||
</BrowserRouter>
|
||||
<HelmetProvider>
|
||||
<BrowserRouter>
|
||||
<MarketingApp />
|
||||
</BrowserRouter>
|
||||
</HelmetProvider>
|
||||
</React.StrictMode>
|
||||
);
|
||||
|
||||
|
||||
@@ -6,6 +6,8 @@ import {
|
||||
ArrowRightIcon,
|
||||
CheckCircleIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const CaseStudies: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -74,7 +76,9 @@ const CaseStudies: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<>
|
||||
<SEO meta={getMetaTags("caseStudies")} />
|
||||
<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%)]" />
|
||||
@@ -224,7 +228,8 @@ const CaseStudies: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import React from "react";
|
||||
import SectionHeading from "../components/SectionHeading";
|
||||
import CTASection from "../components/CTASection";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Contact: React.FC = () => {
|
||||
return (
|
||||
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
|
||||
<>
|
||||
<SEO meta={getMetaTags("contact")} />
|
||||
<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"
|
||||
@@ -114,7 +118,8 @@ const Contact: React.FC = () => {
|
||||
primaryCta={{ label: "Start free trial", href: "https://app.igny8.com/signup" }}
|
||||
secondaryCta={{ label: "Visit help center", href: "/resources" }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ import {
|
||||
ChatBubbleLeftRightIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import { testimonials } from "../data/testimonials";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Home: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -113,9 +115,11 @@ const Home: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
{/* HERO SECTION */}
|
||||
<section className="relative overflow-hidden bg-gradient-to-br from-[var(--color-primary)] via-[var(--color-purple)] to-[#8b5cf6]">
|
||||
<>
|
||||
<SEO meta={getMetaTags("home")} />
|
||||
<div className="bg-white">
|
||||
{/* HERO SECTION */}
|
||||
<section className="relative overflow-hidden bg-gradient-to-br from-[var(--color-primary)] via-[var(--color-purple)] to-[#8b5cf6]">
|
||||
{/* Radial glow behind headline */}
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_30%_50%,rgba(255,255,255,0.1),transparent_60%)]" />
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_70%_20%,rgba(109,74,227,0.2),transparent_50%)]" />
|
||||
@@ -489,7 +493,8 @@ const Home: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -8,6 +8,8 @@ import {
|
||||
CodeBracketIcon,
|
||||
WrenchScrewdriverIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Partners: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -70,7 +72,9 @@ const Partners: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<>
|
||||
<SEO meta={getMetaTags("partners")} />
|
||||
<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%)]" />
|
||||
@@ -213,7 +217,8 @@ const Partners: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ import {
|
||||
CreditCardIcon,
|
||||
ShieldCheckIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Pricing: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -211,7 +213,9 @@ const Pricing: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<>
|
||||
<SEO meta={getMetaTags("pricing")} />
|
||||
<div className="bg-white">
|
||||
{/* PRICING HERO SECTION */}
|
||||
<section className="relative overflow-hidden bg-gradient-to-b from-white via-slate-50/30 to-white">
|
||||
<div className="absolute inset-0 bg-[radial-gradient(circle_at_50%_50%,rgba(6,147,227,0.02),transparent_60%)]" />
|
||||
@@ -453,7 +457,8 @@ const Pricing: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -14,6 +14,8 @@ import {
|
||||
ChatBubbleLeftRightIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import { testimonials } from "../data/testimonials";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Product: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -116,7 +118,9 @@ const Product: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<>
|
||||
<SEO meta={getMetaTags("product")} />
|
||||
<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%)]" />
|
||||
@@ -436,7 +440,8 @@ const Product: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -18,6 +18,8 @@ import {
|
||||
CheckCircleIcon,
|
||||
ListBulletIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Resources: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -178,8 +180,10 @@ const Resources: React.FC = () => {
|
||||
];
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
{/* HERO SECTION */}
|
||||
<>
|
||||
<SEO meta={getMetaTags("resources")} />
|
||||
<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%)]" />
|
||||
|
||||
@@ -519,7 +523,8 @@ const Resources: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -15,6 +15,8 @@ import {
|
||||
ExclamationTriangleIcon,
|
||||
CheckCircleIcon,
|
||||
} from "@heroicons/react/24/outline";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const Solutions: React.FC = () => {
|
||||
const renderCta = (cta: { label: string; href: string }, className: string) => {
|
||||
@@ -375,7 +377,8 @@ const Solutions: React.FC = () => {
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import React from "react";
|
||||
import SectionHeading from "../components/SectionHeading";
|
||||
import CTASection from "../components/CTASection";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const tourSteps = [
|
||||
{
|
||||
@@ -31,7 +33,9 @@ const tourSteps = [
|
||||
|
||||
const Tour: React.FC = () => {
|
||||
return (
|
||||
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
|
||||
<>
|
||||
<SEO meta={getMetaTags("tour")} />
|
||||
<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"
|
||||
@@ -116,7 +120,8 @@ const Tour: React.FC = () => {
|
||||
primaryCta={{ label: "Book live tour", href: "/contact" }}
|
||||
secondaryCta={{ label: "Start free", href: "https://app.igny8.com/signup" }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import React from "react";
|
||||
import SectionHeading from "../components/SectionHeading";
|
||||
import CTASection from "../components/CTASection";
|
||||
import SEO from "../components/SEO";
|
||||
import { getMetaTags } from "../config/metaTags";
|
||||
|
||||
const roadmapItems = [
|
||||
{
|
||||
@@ -19,7 +21,9 @@ const roadmapItems = [
|
||||
|
||||
const Waitlist: React.FC = () => {
|
||||
return (
|
||||
<div className="bg-gradient-to-b from-white via-slate-50/30 to-white text-slate-900">
|
||||
<>
|
||||
<SEO meta={getMetaTags("waitlist")} />
|
||||
<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"
|
||||
@@ -100,7 +104,8 @@ const Waitlist: React.FC = () => {
|
||||
primaryCta={{ label: "Start free", href: "https://app.igny8.com/signup" }}
|
||||
secondaryCta={{ label: "Contact us", href: "/contact" }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user