feat: add waitlist page with internationalization support
- Create waitlist page with responsive design and email subscription form - Add localized messages for English and Chinese waitlist pages - Implement form inputs with labels and validation - Use Shadcn/ui Card and Button components for consistent styling - Add padding to page container for improved layout
This commit is contained in:
parent
99c8827eb8
commit
6144cdcd3a
@ -41,6 +41,13 @@
|
||||
"message": "Message",
|
||||
"submit": "Submit"
|
||||
},
|
||||
"WaitlistPage": {
|
||||
"title": "Waitlist",
|
||||
"subtitle": "Join our waitlist for latest news and updates",
|
||||
"formDescription": "We will send you only one email every week, and no spam",
|
||||
"email": "Email",
|
||||
"subscribe": "Subscribe"
|
||||
},
|
||||
"AuthPage": {
|
||||
"login": {
|
||||
"title": "Login",
|
||||
|
@ -38,6 +38,13 @@
|
||||
"message": "消息",
|
||||
"submit": "提交"
|
||||
},
|
||||
"WaitlistPage": {
|
||||
"title": "邮件列表",
|
||||
"subtitle": "加入我们的邮件列表,获取最新消息和更新",
|
||||
"formDescription": "我们每周只发送一封邮件,并且不会发送垃圾邮件",
|
||||
"email": "邮箱",
|
||||
"subscribe": "订阅"
|
||||
},
|
||||
"AuthPage": {
|
||||
"login": {
|
||||
"title": "登录",
|
||||
|
@ -14,7 +14,7 @@ export default function ContactPage() {
|
||||
const t = useTranslations('ContactPage');
|
||||
|
||||
return (
|
||||
<div className="max-w-4xl mx-auto space-y-8">
|
||||
<div className="max-w-4xl mx-auto space-y-8 p-8">
|
||||
{/* Header */}
|
||||
<div className="space-y-4">
|
||||
<h1 className="text-center text-3xl font-bold tracking-tight">
|
||||
|
50
src/app/[locale]/(marketing)/(pages)/waitlist/page.tsx
Normal file
50
src/app/[locale]/(marketing)/(pages)/waitlist/page.tsx
Normal file
@ -0,0 +1,50 @@
|
||||
"use client";
|
||||
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Card } from '@/components/ui/card';
|
||||
import { Input } from '@/components/ui/input';
|
||||
import { Label } from '@/components/ui/label';
|
||||
import { useTranslations } from 'next-intl';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
export default function WaitlistPage() {
|
||||
const t = useTranslations('WaitlistPage');
|
||||
|
||||
return (
|
||||
<div className="max-w-4xl mx-auto space-y-8 p-8">
|
||||
{/* Header */}
|
||||
<div className="space-y-4">
|
||||
<h1 className="text-center text-3xl font-bold tracking-tight">
|
||||
{t('title')}
|
||||
</h1>
|
||||
<p className="text-center text-lg text-muted-foreground">
|
||||
{t('subtitle')}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* Form */}
|
||||
<Card className="mx-auto max-w-lg p-8 shadow-md">
|
||||
<div className="space-y-4">
|
||||
<p className="text-sm text-muted-foreground">
|
||||
{t('formDescription')}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<form action="" className="mt-8 space-y-4">
|
||||
<div className="space-y-2">
|
||||
<Label htmlFor="email">
|
||||
{t('email')}
|
||||
</Label>
|
||||
<Input type="email" id="email" required />
|
||||
</div>
|
||||
|
||||
<Button type="submit" className="w-full">
|
||||
{t('subscribe')}
|
||||
</Button>
|
||||
</form>
|
||||
</Card>
|
||||
</div>
|
||||
)
|
||||
}
|
Loading…
Reference in New Issue
Block a user