## Summary - Add Community (testimonials) section to homepage with inline avatars - Add FAQ section sourced from HN discussion questions - Add hero screenshot with next/image optimization - Add Show HN blog post with react-tweet embeds, star history chart, and HN quotes - Redesign footer with 4-column grid layout (Product, Resources, Legal, Social) - Add Download/GitHub CTA buttons at bottom of homepage and blog post - Add dev spacing controls for features, FAQ, and community sections - Fix hydration error (JSON-LD moved to head) - SEO: full metadata on blog posts, robots.txt, blog pages in sitemap, canonical URLs - Replace em dashes site-wide, fix notification descriptions ## Testing - `bun tsc --noEmit` passes clean - Dev server verified on port 3001 ## Related - Task: Add wall of love to main web page + landing screenshot
85 lines
2.4 KiB
TypeScript
85 lines
2.4 KiB
TypeScript
import Link from "next/link";
|
|
|
|
const columns = [
|
|
{
|
|
heading: "Product",
|
|
links: [
|
|
{ label: "Blog", href: "/blog" },
|
|
{ label: "Community", href: "/community" },
|
|
],
|
|
},
|
|
{
|
|
heading: "Resources",
|
|
links: [
|
|
{ label: "Docs", href: "/docs/getting-started" },
|
|
{ label: "Changelog", href: "/docs/changelog" },
|
|
],
|
|
},
|
|
{
|
|
heading: "Legal",
|
|
links: [
|
|
{ label: "Privacy", href: "/privacy-policy" },
|
|
{ label: "Terms", href: "/terms-of-service" },
|
|
{ label: "EULA", href: "/eula" },
|
|
],
|
|
},
|
|
{
|
|
heading: "Social",
|
|
links: [
|
|
{ label: "GitHub", href: "https://github.com/manaflow-ai/cmux" },
|
|
{ label: "X / Twitter", href: "https://twitter.com/manaflowai" },
|
|
{ label: "Discord", href: "https://discord.gg/xsgFEVrWCZ" },
|
|
{ label: "Contact", href: "mailto:founders@manaflow.com" },
|
|
],
|
|
},
|
|
];
|
|
|
|
function isExternal(href: string) {
|
|
return href.startsWith("http") || href.startsWith("mailto:");
|
|
}
|
|
|
|
export function SiteFooter() {
|
|
const year = new Date().getFullYear();
|
|
|
|
return (
|
|
<footer className="mt-16">
|
|
<div className="max-w-2xl mx-auto px-6 py-12">
|
|
<div className="grid grid-cols-2 sm:grid-cols-4 gap-8">
|
|
{columns.map((col) => (
|
|
<div key={col.heading}>
|
|
<h3 className="text-xs font-medium text-muted tracking-tight mb-3">
|
|
{col.heading}
|
|
</h3>
|
|
<ul className="space-y-2">
|
|
{col.links.map((link) => (
|
|
<li key={link.href}>
|
|
{isExternal(link.href) ? (
|
|
<a
|
|
href={link.href}
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
className="text-sm text-muted hover:text-foreground transition-colors"
|
|
>
|
|
{link.label}
|
|
</a>
|
|
) : (
|
|
<Link
|
|
href={link.href}
|
|
className="text-sm text-muted hover:text-foreground transition-colors"
|
|
>
|
|
{link.label}
|
|
</Link>
|
|
)}
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</div>
|
|
))}
|
|
</div>
|
|
<p className="text-xs text-muted mt-10">
|
|
© {year} Manaflow
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
);
|
|
}
|