"use client" import { useState } from "react" import Link from "next/link" import { useRouter } from "next/navigation" import { zodResolver } from "@hookform/resolvers/zod" import { useTranslations } from "next-intl" import { useForm } from "react-hook-form" import { z } from "zod" import { Cannabis, Loader2 } from "lucide-react" const loginSchema = z.object({ email: z.string().email(), password: z.string().min(1), }) type LoginFormData = z.infer export default function PortalLoginPage() { const t = useTranslations("portal") const router = useRouter() const [error, setError] = useState(null) const { register, handleSubmit, formState: { errors, isSubmitting }, } = useForm({ resolver: zodResolver(loginSchema), }) async function onSubmit(_data: LoginFormData) { setError(null) try { // Mock login — just redirect to portal dashboard await new Promise((resolve) => setTimeout(resolve, 500)) router.push("/portal/dashboard") } catch { setError(t("networkError")) } } return (
{/* Logo & Branding */}

{t("title")}

{t("loginSubtitle")}

{/* Login Card */}
{/* Error message */} {error && (
{error}
)} {/* Email field */}
{errors.email && (

{t("invalidCredentials")}

)}
{/* Password field */}
{errors.password && (

{t("invalidCredentials")}

)}
{/* Submit button */}
{/* Footer link to admin */}
{t("adminLogin")}
) }