Stripped from vercel/chatbot (Apache 2.0): - Dropped @vercel/* packages and AI Gateway - Removed artifacts feature (code/text/sheet/image side panel) - Switched AI provider to @ai-sdk/openai-compatible -> EGBE LiteLLM - Replaced Vercel Blob upload with data URLs - Dropped Redis resumable streams and rate limiter (in-memory now) - Added Dockerfile (Next.js standalone) + entrypoint that runs migrations - Wired DATABASE_URL, EGBE_AI_API_URL/KEY, NEXT_PUBLIC_BASE_URL for app-deploy.sh
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import Form from "next/form";
|
|
|
|
import { Input } from "../ui/input";
|
|
import { Label } from "../ui/label";
|
|
|
|
export function AuthForm({
|
|
action,
|
|
children,
|
|
defaultEmail = "",
|
|
}: {
|
|
action: NonNullable<
|
|
string | ((formData: FormData) => void | Promise<void>) | undefined
|
|
>;
|
|
children: React.ReactNode;
|
|
defaultEmail?: string;
|
|
}) {
|
|
return (
|
|
<Form action={action} className="flex flex-col gap-4">
|
|
<div className="flex flex-col gap-2">
|
|
<Label className="font-normal text-muted-foreground" htmlFor="email">
|
|
Email
|
|
</Label>
|
|
<Input
|
|
autoComplete="email"
|
|
autoFocus
|
|
className="h-10 rounded-lg border-border/50 bg-muted/50 text-sm transition-colors focus:border-foreground/20 focus:bg-muted"
|
|
defaultValue={defaultEmail}
|
|
id="email"
|
|
name="email"
|
|
placeholder="you@someo.ne"
|
|
required
|
|
type="email"
|
|
/>
|
|
</div>
|
|
|
|
<div className="flex flex-col gap-2">
|
|
<Label className="font-normal text-muted-foreground" htmlFor="password">
|
|
Password
|
|
</Label>
|
|
<Input
|
|
className="h-10 rounded-lg border-border/50 bg-muted/50 text-sm transition-colors focus:border-foreground/20 focus:bg-muted"
|
|
id="password"
|
|
name="password"
|
|
placeholder="••••••••"
|
|
required
|
|
type="password"
|
|
/>
|
|
</div>
|
|
|
|
{children}
|
|
</Form>
|
|
);
|
|
}
|