This commit is contained in:
ct
2025-07-05 18:20:05 +08:00
parent d3ccbbbea6
commit 23fa3aec04
5 changed files with 99 additions and 151 deletions

View File

@@ -1,11 +1,10 @@
import AuthUser from '@/modules/auth/auth-user'; import AuthUser from '@/modules/auth/auth-user';
import Editor from '@/modules/editor/editor.jsx'; import Editor from '@/modules/editor/editor.jsx';
import FlashMessages from '@/modules/flash/flash-messages'; import FlashMessages from '@/modules/flash/flash-messages';
import FAQ from './partials/FAQ.jsx'; import FAQDiscord from './partials/FAQDiscord.jsx';
import Features from './partials/Features.jsx'; import Features from './partials/Features.jsx';
import Footer from './partials/Footer.jsx'; import Footer from './partials/Footer.jsx';
import Hero from './partials/Hero.jsx'; import Hero from './partials/Hero.jsx';
import JoinDiscordGroup from './partials/JoinDiscordGroup.jsx';
const Home = () => { const Home = () => {
return ( return (
@@ -16,8 +15,7 @@ const Home = () => {
<div className="space-y-16"> <div className="space-y-16">
<Hero /> <Hero />
<Features /> <Features />
<FAQ /> <FAQDiscord />
<JoinDiscordGroup />
</div> </div>
<Footer /> <Footer />
<FlashMessages /> <FlashMessages />

View File

@@ -1,57 +0,0 @@
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
const FAQ = () => {
const faqData = [
{
q: 'How can I create a meme video?',
a: 'Use the video editor on top to start making your meme! Edit your caption, background and meme. Once satisfied, press the Export button to download your video!',
},
{
q: 'What features are available now?',
a: 'At the moment, All 200+ meme templates and 200+ backgrounds are completely free! We will be adding more memes and backgrounds to the library soon!',
},
{
q: 'Why is video export slow for me?',
a: 'Video processing happens entirely in your browser using advanced web technology. Export speed depends on your video content complexity and device performance. High-end devices export quickly, while older/slower devices may take longer or even crash. If your phone is too slow, try using a faster device like a desktop computer for better performance.',
},
{
q: 'What AI features are coming?',
a: "Soon you'll be able to generate custom captions and backgrounds using AI. Enter any text prompt and get tailored content!",
},
{
q: 'What video format do you export?',
a: 'We export high-quality MP4 videos optimized for all social media platforms in 9:16 format, which is compatible for TikTok, Youtube Shorts, Instagram Reels, and more.',
},
{
q: 'Is there a mobile app?',
a: "Our web app is fully responsive and works perfectly on mobile devices. Do you want a mobile app? We'll see what can be done. Let us know in our Discord group.",
},
{
q: 'How often do you add new content?',
a: 'We just started building this platform and will gradually add more meme templates and backgrounds over time, so everyone can continue using it for free with fresh content! Want a certain content? Let us know in our Discord group.',
},
];
return (
<section className="">
<div className="mx-auto max-w-4xl space-y-10 px-4 sm:px-6 lg:px-8">
<div className="text-center">
<h2 className="text-foreground mb-4 text-3xl font-bold sm:text-4xl lg:text-5xl">Any questions?</h2>
</div>
<div className="bg-background rounded-2xl border p-6 sm:p-8">
<Accordion type="single" collapsible className="w-full" defaultValue="item-1">
{faqData.map((faq, index) => (
<AccordionItem key={index} value={`item-${index + 1}`} className="border-b last:border-b-0">
<AccordionTrigger className="py-4 text-left font-medium hover:no-underline">{faq.q}</AccordionTrigger>
<AccordionContent className="text-muted-foreground pb-4 leading-relaxed text-balance">{faq.a}</AccordionContent>
</AccordionItem>
))}
</Accordion>
</div>
</div>
</section>
);
};
export default FAQ;

View File

@@ -0,0 +1,90 @@
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion';
import { ExternalLinkIcon } from '@radix-ui/react-icons';
const FAQDiscord = () => {
const faqData = [
{
q: 'How can I create a meme video?',
a: 'Use the video editor on top to start making your meme! Edit your caption, background and meme. Once satisfied, press the Export button to download your video!',
},
{
q: 'What features are available now?',
a: 'At the moment, All 200+ meme templates and 200+ backgrounds are completely free! We will be adding more memes and backgrounds to the library soon!',
},
{
q: 'Why is video export slow for me?',
a: 'Video processing happens entirely in your browser using advanced web technology. Export speed depends on your video content complexity and device performance. High-end devices export quickly, while older/slower devices may take longer or even crash. If your phone is too slow, try using a faster device like a desktop computer for better performance.',
},
{
q: 'What AI features are coming?',
a: "Soon you'll be able to generate custom captions and backgrounds using AI. Enter any text prompt and get tailored content!",
},
{
q: 'What video format do you export?',
a: 'We export high-quality MP4 videos optimized for all social media platforms in 9:16 format, which is compatible for TikTok, Youtube Shorts, Instagram Reels, and more.',
},
{
q: 'Is there a mobile app?',
a: "Our web app is fully responsive and works perfectly on mobile devices. Do you want a mobile app? We'll see what can be done. Let us know in our Discord group.",
},
{
q: 'How often do you add new content?',
a: 'We just started building this platform and will gradually add more meme templates and backgrounds over time, so everyone can continue using it for free with fresh content! Want a certain content? Let us know in our Discord group.',
},
];
return (
<section className="">
<div className="mx-auto max-w-6xl space-y-10 px-4 sm:px-6 lg:px-8">
<div className="text-center">
<h2 className="text-foreground mb-4 text-3xl font-bold sm:text-4xl lg:text-5xl">Want to know more?</h2>
</div>
<div className="grid gap-6 md:flex">
<div id="faq" className="bg-background max-w-4xl flex-3/5 rounded-2xl border p-6 sm:p-8">
<Accordion type="single" collapsible className="w-full" defaultValue="item-1">
{faqData.map((faq, index) => (
<AccordionItem key={index} value={`item-${index + 1}`} className="border-b last:border-b-0">
<AccordionTrigger className="py-4 text-left font-medium hover:no-underline">{faq.q}</AccordionTrigger>
<AccordionContent className="text-muted-foreground pb-4 leading-relaxed text-balance">{faq.a}</AccordionContent>
</AccordionItem>
))}
</Accordion>
</div>
<div id="discord" className="flex flex-2/5 flex-col justify-center space-y-6">
<div className="flex items-center gap-4">
<div
id="discord-logo"
className="flex h-16 w-16 flex-shrink-0 items-center justify-center rounded-full bg-[#5865F2] shadow-lg"
>
<svg className="h-8 w-8 text-white" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.211.375-.445.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" />
</svg>
</div>
<div className="text-left">
<h3 className="text-foreground text-2xl font-bold">MEMEAIGEN Discord</h3>
<p className="text-muted-foreground text-sm leading-relaxed text-wrap">
Join our Discord community to connect with other creators, get help, stay up to date and help shape the future of
MEMEAIGEN.
</p>
</div>
</div>
<a
href="https://discord.gg/YxKPrtPGZ2"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 rounded-full bg-[#5865F2] px-8 py-3 text-lg font-semibold text-white shadow-lg transition-all hover:bg-[#4752C4] hover:shadow-xl focus:ring-2 focus:ring-[#5865F2] focus:ring-offset-2 focus:outline-none"
>
Join Discord
<ExternalLinkIcon className="h-5 w-5" />
</a>
</div>
</div>
</div>
</section>
);
};
export default FAQDiscord;

View File

@@ -6,33 +6,22 @@ const Footer = () => {
<div className="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8"> <div className="mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">
<div className="border-t pt-8"> <div className="border-t pt-8">
<div className="flex flex-col items-center justify-between space-y-4 sm:flex-row sm:space-y-0"> <div className="flex flex-col items-center justify-between space-y-4 sm:flex-row sm:space-y-0">
<div className="text-sm text-muted-foreground"> <div className="text-muted-foreground text-sm">© {currentYear} MEMEAIGEN. All rights reserved.</div>
© {currentYear} MEMEAIGEN. All rights reserved.
</div>
<div className="flex space-x-6"> <div className="flex space-x-6">
<a <a href="/" className="text-muted-foreground hover:text-foreground text-sm transition-colors">
href="/"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
>
Home Home
</a> </a>
<a <a href="/terms" className="text-muted-foreground hover:text-foreground text-sm transition-colors">
href="/terms"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
>
Terms Terms
</a> </a>
<a <a href="/privacy" className="text-muted-foreground hover:text-foreground text-sm transition-colors">
href="/privacy"
className="text-sm text-muted-foreground hover:text-foreground transition-colors"
>
Privacy Privacy
</a> </a>
<a <a
href="https://discord.gg/memeaigen" href="https://discord.gg/YxKPrtPGZ2"
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="text-sm text-muted-foreground hover:text-foreground transition-colors" className="text-muted-foreground hover:text-foreground text-sm transition-colors"
> >
Discord Discord
</a> </a>
@@ -44,4 +33,4 @@ const Footer = () => {
); );
}; };
export default Footer; export default Footer;

View File

@@ -1,72 +0,0 @@
import { ExternalLink, Lightbulb, Megaphone, Users } from 'lucide-react';
const JoinDiscordGroup = () => {
return (
<section className="">
<div className="mx-auto max-w-6xl space-y-10 px-4 sm:px-6 lg:px-8">
<div className="">
<div className="grid grid-cols-1 gap-8 lg:grid-cols-2 lg:gap-12">
{/* Left side - Discord info */}
<div className="flex flex-col justify-center space-y-6">
<div className="flex items-center gap-4">
<div className="flex h-16 w-16 items-center justify-center rounded-full bg-[#5865F2] shadow-lg">
<svg className="h-8 w-8 text-white" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
<path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.211.375-.445.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" />
</svg>
</div>
<div className="text-left">
<h3 className="text-foreground text-2xl font-bold">MEMEAIGEN Discord</h3>
</div>
</div>
<a
href="https://discord.gg/memeaigen"
target="_blank"
rel="noopener noreferrer"
className="inline-flex items-center justify-center gap-2 rounded-full bg-[#5865F2] px-8 py-3 text-lg font-semibold text-white shadow-lg transition-all hover:bg-[#4752C4] hover:shadow-xl focus:ring-2 focus:ring-[#5865F2] focus:ring-offset-2 focus:outline-none"
>
Join Discord Community
<ExternalLink className="h-5 w-5" />
</a>
</div>
{/* Right side - Features */}
<div className="grid grid-cols-1 gap-4 sm:grid-cols-2">
<div className="group bg-card hover:bg-muted/50 rounded-xl border p-6 transition-all duration-300">
<div className="mb-3 flex h-12 w-12 items-center justify-center rounded-lg bg-orange-100 dark:bg-orange-900/20">
<Megaphone className="h-6 w-6 text-orange-600 dark:text-orange-400" />
</div>
<h3 className="text-foreground mb-2 text-lg font-semibold">Announcements</h3>
<p className="text-muted-foreground text-sm leading-relaxed">
Be first to know about new features, memes, and updates
</p>
</div>
<div className="group bg-card hover:bg-muted/50 rounded-xl border p-6 transition-all duration-300">
<div className="mb-3 flex h-12 w-12 items-center justify-center rounded-lg bg-yellow-100 dark:bg-yellow-900/20">
<Lightbulb className="h-6 w-6 text-yellow-600 dark:text-yellow-400" />
</div>
<h3 className="text-foreground mb-2 text-lg font-semibold">Feature Requests</h3>
<p className="text-muted-foreground text-sm leading-relaxed">
Share your ideas and help shape the future of MEMEAIGEN
</p>
</div>
<div className="group bg-card hover:bg-muted/50 rounded-xl border p-6 transition-all duration-300 sm:col-span-2">
<div className="mb-3 flex h-12 w-12 items-center justify-center rounded-lg bg-purple-100 dark:bg-purple-900/20">
<Users className="h-6 w-6 text-purple-600 dark:text-purple-400" />
</div>
<h3 className="text-foreground mb-2 text-lg font-semibold">Community Showcase</h3>
<p className="text-muted-foreground text-sm leading-relaxed">
Share your viral memes, get feedback, and discover trending content from other creators
</p>
</div>
</div>
</div>
</div>
</div>
</section>
);
};
export default JoinDiscordGroup;