- Added new UI components including Badge, Button, Card, Checkbox, Dialog, Footer, Input, Label, SubscriptionForm, Textarea, and Tooltip. - Implemented a new layout configuration with improved navigation and metadata handling. - Integrated third-party libraries for enhanced functionality (e.g., Radix UI, Lucide). - Updated global styles and added custom CSS variables for theming. - Introduced new pages for Changelog, Contact, Community, and GitHub redirection. - Updated package dependencies in package.json and pnpm-lock.yaml. - Added Open Graph image generation for better social media sharing. - Included favicon and application icons for branding.
99 lines
No EOL
5.2 KiB
TypeScript
99 lines
No EOL
5.2 KiB
TypeScript
'use client';
|
|
|
|
import Link from 'next/link';
|
|
import Image from 'next/image';
|
|
import { SubscriptionForm } from '@/components/ui/subscription-form';
|
|
|
|
// SVG components
|
|
const DiscordIcon = () => (
|
|
<svg role="img" viewBox="0 0 24 24" fill="currentColor" className="h-5 w-5">
|
|
<path d="M19.27 5.33C17.94 4.71 16.5 4.26 15 4a.09.09 0 0 0-.07.03c-.18.33-.39.76-.53 1.09a16.09 16.09 0 0 0-4.8 0c-.14-.34-.35-.76-.54-1.09c-.01-.02-.04-.03-.07-.03c-1.5.26-2.93.71-4.27 1.33c-.01 0-.02.01-.03.02c-2.72 4.07-3.47 8.03-3.1 11.95c0 .02.01.04.03.05c1.8 1.32 3.53 2.12 5.24 2.65c.03.01.06 0 .07-.02c.4-.55.76-1.13 1.07-1.74c.02-.04 0-.08-.04-.09c-.57-.22-1.11-.48-1.64-.78c-.04-.02-.04-.08-.01-.11c.11-.08.22-.17.33-.25c.02-.02.05-.02.07-.01c3.44 1.57 7.15 1.57 10.55 0c.02-.01.05-.01.07.01c.11.09.22.17.33.26c.04.03.04.09-.01.11c-.52.31-1.07.56-1.64.78c-.04.01-.05.06-.04.09c.32.61.68 1.19 1.07 1.74c.03.01.06.02.09.01c1.72-.53 3.45-1.33 5.25-2.65c.02-.01.03-.03.03-.05c.44-4.53-.73-8.46-3.1-11.95c-.01-.01-.02-.02-.04-.02zM8.52 14.91c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12c0 1.17-.84 2.12-1.89 2.12zm6.97 0c-1.03 0-1.89-.95-1.89-2.12s.84-2.12 1.89-2.12c1.06 0 1.9.96 1.89 2.12c0 1.17-.83 2.12-1.89 2.12z"/>
|
|
</svg>
|
|
);
|
|
|
|
const GithubIcon = () => (
|
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="h-5 w-5">
|
|
<path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" />
|
|
<path d="M9 18c-4.51 2-5-2-7-2" />
|
|
</svg>
|
|
);
|
|
|
|
const LinkedInIcon = () => (
|
|
<svg role="img" viewBox="0 0 24 24" fill="currentColor" className="h-5 w-5">
|
|
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>
|
|
</svg>
|
|
);
|
|
|
|
const TwitterIcon = () => (
|
|
<svg role="img" viewBox="0 0 24 24" fill="currentColor" className="h-5 w-5">
|
|
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>
|
|
</svg>
|
|
);
|
|
|
|
export function Footer() {
|
|
return (
|
|
<footer className="py-12 md:py-16">
|
|
<div className="container border-t pt-12 md:pt-16">
|
|
<div className="grid gap-8 md:grid-cols-12">
|
|
{/* Logo and tagline */}
|
|
<div className="md:col-span-4">
|
|
<Link href="/" className="flex items-center gap-2">
|
|
<Image
|
|
src="/amical-icon.svg"
|
|
width={32}
|
|
height={32}
|
|
alt="Amical Logo"
|
|
/>
|
|
<span className="font-medium">Amical</span>
|
|
</Link>
|
|
<p className="mt-2 text-sm text-muted-foreground">
|
|
Open source Speech-to-Text App
|
|
</p>
|
|
</div>
|
|
|
|
{/* Links columns */}
|
|
<div className="grid grid-cols-2 gap-8 md:col-span-4">
|
|
<div>
|
|
<h4 className="mb-3 text-sm font-semibold">Product</h4>
|
|
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
<li><Link href="/">Overview</Link></li>
|
|
<li><Link href="/docs">Documentation</Link></li>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<h4 className="mb-3 text-sm font-semibold">Resources</h4>
|
|
<ul className="space-y-2 text-sm text-muted-foreground">
|
|
<li><Link href="/docs">Docs</Link></li>
|
|
<li><Link href="/changelog">Changelog</Link></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
{/* Subscribe section */}
|
|
<div className="md:col-span-4">
|
|
<div className="flex gap-4 mb-4">
|
|
<Link href="https://www.linkedin.com/company/amicalhq" className="text-muted-foreground hover:text-foreground">
|
|
<LinkedInIcon />
|
|
</Link>
|
|
<Link href="https://x.com/amicalhq" className="text-muted-foreground hover:text-foreground">
|
|
<TwitterIcon />
|
|
</Link>
|
|
<Link href="https://github.com/amicalhq/amical" className="text-muted-foreground hover:text-foreground">
|
|
<GithubIcon />
|
|
</Link>
|
|
<Link href="/community" className="text-muted-foreground hover:text-foreground">
|
|
<DiscordIcon />
|
|
</Link>
|
|
</div>
|
|
<SubscriptionForm
|
|
variant="footer"
|
|
formName="footer_subscription"
|
|
redirectUrl="https://amical.ai/?submission=true&form_type=subscribe"
|
|
showHeader={false}
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
);
|
|
} |