feat: add Ina Trading portal flows and API integration

This commit is contained in:
Wira Basalamah
2026-04-24 05:19:05 +07:00
parent d98b4769f0
commit e08f2f9286
97 changed files with 18889 additions and 110 deletions

View File

@ -0,0 +1,128 @@
"use client";
import Image from "next/image";
import Link from "next/link";
import { useSearchParams } from "next/navigation";
import { Suspense } from "react";
import { LanguageToggle } from "@/components/language-toggle";
import { useLanguage } from "@/lib/i18n-context";
function AccountNotFoundContent() {
const searchParams = useSearchParams();
const email = searchParams.get("email") || "";
const { t } = useLanguage();
const a = t.auth.accountNotFound;
return (
<main className="flex flex-col md:flex-row min-h-screen md:h-screen md:overflow-hidden">
{/* Left Side */}
<section className="hidden md:flex md:w-1/2 lg:w-3/5 bg-secondary relative items-end p-12 lg:p-20 overflow-hidden">
<div className="absolute inset-0 z-0 bg-gradient-to-t from-secondary via-secondary/80 to-secondary/60" />
<div className="relative z-10 max-w-xl">
<div className="mb-8 flex items-center gap-3">
<span className="h-1 w-12 bg-primary" />
<span className="text-on-secondary font-headline font-bold uppercase tracking-widest text-xs">
{a.editorialIntelligence}
</span>
</div>
<h1 className="text-on-secondary font-headline text-5xl lg:text-7xl font-black leading-none tracking-tighter mb-6 whitespace-pre-line">
{a.tradePrecision}
</h1>
<p className="text-on-secondary/80 text-xl font-medium max-w-md leading-relaxed">
{a.tradeSubtitle}
</p>
</div>
</section>
{/* Right Side */}
<section className="flex-1 bg-surface-container-lowest flex flex-col p-8 md:p-12 lg:p-20 relative md:overflow-y-auto">
<div className="flex justify-between items-center mb-16">
<Image src="/ina_logo.png" alt="Ina Trading" width={160} height={48} priority />
<div className="flex items-center gap-3">
<LanguageToggle />
<Link
href="/login"
className="hidden sm:flex text-secondary font-semibold hover:text-primary transition-colors items-center gap-2"
>
<span className="material-symbols-outlined text-lg">help_outline</span>
{a.helpLink}
</Link>
</div>
</div>
<div className="flex-1 flex flex-col justify-center max-w-md w-full mx-auto">
<div className="mb-8 h-16 w-16 bg-error-container rounded-xl flex items-center justify-center">
<span className="material-symbols-outlined text-error text-3xl">person_off</span>
</div>
<div className="mb-10">
<h2 className="font-headline text-4xl font-extrabold tracking-tight text-on-surface mb-3">
{a.title}
</h2>
<div className="flex items-center gap-2 p-3 bg-surface-container-low rounded-lg border-l-4 border-tertiary">
<p className="text-on-surface-variant font-medium truncate">{email}</p>
<Link
href="/login"
className="text-tertiary font-bold hover:underline ml-auto flex items-center gap-1 shrink-0"
>
{a.change}
</Link>
</div>
</div>
<div className="space-y-6">
<Link
href={`/register?email=${encodeURIComponent(email)}`}
className="block w-full text-center signature-cta-gradient text-on-primary font-headline font-bold py-5 rounded-xl shadow-xl shadow-primary/20 hover:scale-[1.02] active:scale-95 transition-all text-xl uppercase tracking-wider"
>
{a.createAccount}
</Link>
<div className="relative py-4">
<div aria-hidden="true" className="absolute inset-0 flex items-center">
<div className="w-full border-t border-outline-variant/30" />
</div>
<div className="relative flex justify-center">
<span className="bg-surface-container-lowest px-4 text-sm font-medium text-outline">
{t.common.or}
</span>
</div>
</div>
<Link
href="/login"
className="flex items-center justify-center gap-3 w-full border-2 border-outline-variant/30 text-on-surface font-bold py-4 rounded-xl hover:bg-surface-container transition-colors group"
>
<span className="material-symbols-outlined text-secondary group-hover:text-primary transition-colors">
login
</span>
{a.loginOther}
</Link>
</div>
</div>
<footer className="mt-auto pt-12">
<div className="flex flex-col gap-6">
<div className="flex gap-4">
<a href="#" className="text-outline text-xs font-semibold hover:text-on-surface uppercase tracking-widest transition-colors">
{t.common.privacy}
</a>
<a href="#" className="text-outline text-xs font-semibold hover:text-on-surface uppercase tracking-widest transition-colors">
{t.common.terms}
</a>
</div>
<p className="text-[10px] leading-relaxed text-outline/60 max-w-sm">{a.disclaimer}</p>
</div>
</footer>
</section>
</main>
);
}
export default function AccountNotFoundPage() {
return (
<Suspense>
<AccountNotFoundContent />
</Suspense>
);
}