Initial commit: PodcastYes — AI podcast platform
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import Link from "next/link";
|
||||
import { Mic } from "lucide-react";
|
||||
|
||||
export function SiteFooter() {
|
||||
return (
|
||||
<footer className="border-t border-border bg-secondary">
|
||||
<div className="container flex flex-col gap-10 py-16 md:flex-row md:justify-between">
|
||||
<div className="max-w-xs space-y-4">
|
||||
<Link href="/" className="flex items-center gap-2.5 font-display text-lg font-bold tracking-tight">
|
||||
<span className="flex h-9 w-9 items-center justify-center rounded-2xl bg-brand text-brand-foreground">
|
||||
<Mic className="h-5 w-5" />
|
||||
</span>
|
||||
PodcastYes
|
||||
</Link>
|
||||
<p className="text-sm leading-relaxed text-muted-foreground">
|
||||
From topic idea to a finished, published podcast episode in minutes — script, voice, and
|
||||
cover art generated by AI.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid grid-cols-2 gap-10 text-sm sm:grid-cols-3">
|
||||
<FooterCol
|
||||
title="Product"
|
||||
links={[
|
||||
["How it works", "/#how-it-works"],
|
||||
["Features", "/#features"],
|
||||
["Pricing", "/pricing"],
|
||||
]}
|
||||
/>
|
||||
<FooterCol
|
||||
title="Account"
|
||||
links={[
|
||||
["Log in", "/sign-in"],
|
||||
["Create account", "/sign-up"],
|
||||
["Dashboard", "/dashboard"],
|
||||
]}
|
||||
/>
|
||||
<FooterCol
|
||||
title="Legal"
|
||||
links={[
|
||||
["Terms", "/terms"],
|
||||
["Privacy", "/privacy"],
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="border-t border-border">
|
||||
<div className="container py-6 text-center text-xs text-muted-foreground">
|
||||
© {new Date().getFullYear()} PodcastYes. All rights reserved.
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
);
|
||||
}
|
||||
|
||||
function FooterCol({ title, links }: { title: string; links: [string, string][] }) {
|
||||
return (
|
||||
<div className="space-y-3.5">
|
||||
<p className="font-semibold text-foreground">{title}</p>
|
||||
<ul className="space-y-2.5 text-muted-foreground">
|
||||
{links.map(([label, href]) => (
|
||||
<li key={href}>
|
||||
<Link href={href} className="transition-colors hover:text-brand">
|
||||
{label}
|
||||
</Link>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
import Link from "next/link";
|
||||
import { Mic } from "lucide-react";
|
||||
import { Button } from "@/components/ui/button";
|
||||
|
||||
export function SiteHeader() {
|
||||
return (
|
||||
<header className="sticky top-0 z-40 w-full border-b border-border/70 bg-background/85 backdrop-blur-md">
|
||||
<div className="container flex h-[72px] items-center justify-between">
|
||||
<Link href="/" className="flex items-center gap-2.5 font-display text-lg font-bold tracking-tight">
|
||||
<span className="flex h-9 w-9 items-center justify-center rounded-2xl bg-brand text-brand-foreground">
|
||||
<Mic className="h-5 w-5" />
|
||||
</span>
|
||||
<span>PodcastYes</span>
|
||||
</Link>
|
||||
|
||||
<nav className="hidden items-center gap-8 text-sm font-medium text-muted-foreground md:flex">
|
||||
<Link href="/#how-it-works" className="transition-colors hover:text-foreground">How it works</Link>
|
||||
<Link href="/#features" className="transition-colors hover:text-foreground">Features</Link>
|
||||
<Link href="/pricing" className="transition-colors hover:text-foreground">Pricing</Link>
|
||||
</nav>
|
||||
|
||||
<div className="flex items-center gap-2">
|
||||
<Button asChild variant="ghost" size="sm" className="hidden sm:inline-flex">
|
||||
<Link href="/sign-in">Log in</Link>
|
||||
</Button>
|
||||
<Button asChild size="sm">
|
||||
<Link href="/sign-up">Get started</Link>
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user