/* Auth (Login, Register, Forgot Password) + Account dashboard. Exposes window.AXAuth. */
(function(){
const { Button, Input, Eyebrow, Badge, PriceTag } = window.AXUI;
const Ic=()=>window.AXIcons;
const wrap={maxWidth:'var(--container-max)',margin:'0 auto',padding:'0 var(--gutter)'};
/* ---- shared brand side panel (navy radial gradient, matches hero/newsletter) ---- */
function BrandPanel({ heading, sub, points }){
const i=Ic();
return
{points.map(([Icon,t,d])=>
{React.createElement(Icon,{size:20})}
)}
;
}
function AuthShell({ children, aside }){
return ;
}
function PasswordInput({ label='Password', ...rest }){
const i=Ic(); const [show,setShow]=React.useState(false);
return
;
}
function SocialRow(){
const btn=(label,glyph)=>;
const gG=;
const aG=;
return {btn('Google',gG)}{btn('Apple',aG)}
;
}
function Divider({ children }){
return
{children}
;
}
function Check({ checked, onChange, children }){
const i=Ic();
return ;
}
/* ---------------- LOGIN ---------------- */
function Login({ onNav, onAuth }){
const i=Ic(); const [remember,setRemember]=React.useState(true);
return }>
or sign in with email
{React.createElement(i.Lock,{size:14})} Secured with 256-bit encryption
;
}
/* ---------------- REGISTER ---------------- */
function Register({ onNav, onAuth }){
const i=Ic(); const [agree,setAgree]=React.useState(false); const [sub,setSub]=React.useState(true);
return }>
;
}
/* ---------------- FORGOT PASSWORD ---------------- */
function Forgot({ onNav }){
const i=Ic(); const [sent,setSent]=React.useState(false); const [email,setEmail]=React.useState('');
return
{!sent ? <>
{React.createElement(i.Lock,{size:24})}
Forgot your password?
Enter the email on your account and we’ll send you a link to reset it.
> : <>
{React.createElement(i.CheckCircle,{size:26})}
Check your inbox
We sent a reset link to {email}. It expires in 30 minutes.
>}
;
}
/* ---------------- ACCOUNT DASHBOARD ---------------- */
const navItems=[['overview','Overview','Package'],['orders','Orders','Truck'],['addresses','Addresses','MapPin'],['wishlist','Wishlist','Heart'],['settings','Settings','Settings']];
const mockOrders=[
{no:'ORD-2026-04817',date:'Jun 14, 2026',status:'Shipped',total:118.97,items:3,tone:'default'},
{no:'ORD-2026-04122',date:'May 28, 2026',status:'Delivered',total:54.00,items:1,tone:'success'},
{no:'ORD-2026-03840',date:'May 09, 2026',status:'Delivered',total:212.45,items:4,tone:'success'},
];
function Account({ onNav, onLogout }){
const i=Ic(); const [tab,setTab]=React.useState('overview'); const D=window.AX_DATA;
const wl=(D&&D.products?D.products.slice(0,3):[]);
return
JV
Hi, Jordan
jordan.vale@example.com · Member since 2025
Verified
{tab==='overview' &&
}
{tab==='orders' && }
{tab==='addresses' && }
{tab==='wishlist' && }
{tab==='settings' && }
;
}
function Panel({ title, action, onAction, children }){
const i=Ic();
return
{title}
{action && }
{children}
;
}
function StatusBadge({ status, tone }){ return {status}; }
function Overview({ i, onTab, onNav }){
const stats=[['Active orders','1','Truck'],['Wishlist','3','Heart'],['Reward points','840','Gift']];
return
{stats.map(([label,val,icon])=>
{React.createElement(i[icon],{size:19})}
{val}
{label}
)}
onTab('orders')}>
{mockOrders.slice(0,2).map(o=>
{React.createElement(i.Package,{size:19})}
{o.no}
{o.date} · {o.items} item{o.items>1?'s':''}
${o.total.toFixed(2)}
)}
onTab('addresses')}>
Jordan Vale
123 Market St, Apt 4B
San Francisco, CA 94103
United States
;
}
function Orders({ i, onNav }){
return
{mockOrders.map((o,idx)=>
{React.createElement(i.Package,{size:20})}
{o.no}
{o.date} · {o.items} item{o.items>1?'s':''} · ${o.total.toFixed(2)}
)}
;
}
function Addresses({ i }){
const addrs=[{label:'Home',def:true,lines:['Jordan Vale','123 Market St, Apt 4B','San Francisco, CA 94103','United States']},{label:'Work',def:false,lines:['Jordan Vale','500 Howard St, Floor 8','San Francisco, CA 94105','United States']}];
return
{addrs.map(a=>
{a.label}{a.def&&Default}
{a.lines.map((l,k)=>
{l}
)}
)}
;
}
function Wishlist({ items, onNav }){
const i=Ic();
return
{items.map((p,idx)=>
{p.name.charAt(0)}
)}
;
}
function SettingsTab({ i }){
return ;
}
function Toggle({ label, desc, on:initial }){
const [on,setOn]=React.useState(initial);
return
;
}
window.AXAuth = { Login, Register, Forgot, Account };
})();