import { useState, useEffect, useRef } from “react”;
const CATEGORIES = [
{ id:”work”, icon:”💼”, title:”Darbs un bizness”, color:”#2D5A3D”,
subs:[“Vakances”,”Meklē darbu”,”Kursi, izglītība”,”Darījumu kontakti”,”Juridiskie pakalpojumi”,”Finanšu pakalpojumi”,”Tulkojumi”,”Interneta pakalpojumi”] },
{ id:”transport”, icon:”🚗”, title:”Transports”, color:”#7A5C2E”,
subs:[“Vieglie auto”,”Kravas automašīnas”,”Moto transports”,”Velosipēdi, skūteri”,”Remonts un rezerves daļas”,”Kravu pārvadājumi”,”Transporta noma”] },
{ id:”realestate”, icon:”🏠”, title:”Nekustamie īpašumi”, color:”#4A6741″,
subs:[“Dzīvokļi”,”Mājas, vasarnīcas”,”Lauku viensētas”,”Telpas”,”Biroji”,”Zeme”,”Mežs”] },
{ id:”construction”, icon:”🔨”, title:”Celtniecība”, color:”#8B6914″,
subs:[“Būvmateriāli”,”Būvdarbi”,”Darba rīki un tehnika”,”Santehnika”,”Dārza tehnika”,”Projekti, dizains”] },
{ id:”electronics”, icon:”📱”, title:”Elektrotehnika”, color:”#2C3E50″,
subs:[“Sakaru līdzekļi”,”Sadzīves tehnika”,”Datori un orgtehnika”,”Audio, Video”,”Televizori”,”Foto un optika”] },
{ id:”clothes”, icon:”👗”, title:”Drēbes, apavi”, color:”#6B3A5D”,
subs:[“Sieviešu apģērbi”,”Vīriešu apģērbi”,”Bērnu apģērbi”,”Apavi”,”Aksesuāri, rotaslietas”] },
{ id:”home”, icon:”🛋️”, title:”Mājai un interjers”, color:”#5D4E37″,
subs:[“Mēbeles, interjers”,”Veselība, skaistums”,”Dārglietas”,”Dāvanas, suvenīri”,”Antikvariāts, gleznas”,”Mājas augi”] },
{ id:”production”, icon:”🏭”, title:”Ražošana”, color:”#4A4A4A”,
subs:[“Iekārtas”,”Saimniecības darbi”,”Pārtika”,”Malka, briketes, granulas”] },
{ id:”children”, icon:”🧸”, title:”Bērniem”, color:”#C07040″,
subs:[“Viss skolai”,”Bērnu apģērbi”,”Rotaļas, šūpoles”,”Ratiņi”,”Bērnu mēbeles”,”Autosēdekļi”] },
{ id:”animals”, icon:”🐾”, title:”Dzīvnieki”, color:”#6B8E6B”,
subs:[“Suņi, kucēni”,”Kaķi, kaķēni”,”Grauzēji”,”Papagaiļi un putni”,”Zivtiņas, akvāriji”,”Eksotiskie dzīvnieki”,”Veterinārija”] },
{ id:”agriculture”, icon:”🌾”, title:”Lauksaimniecība”, color:”#7A8450″,
subs:[“Lopkopība”,”Putnkopība”,”Lauksaimniecības tehnika”,”Dārzeņu un dārzkopība”,”Sēklas un stādi”] },
{ id:”entertainment”, icon:”🎭”, title:”Atpūta, hobiji”, color:”#8E4585″,
subs:[“Hobiji, vaļasprieki”,”Kolekcionēšana”,”Biļetes, koncerti”,”Mūzika, instrumenti”,”Grāmatas”,”Sports”,”Tūrisms”] },
];
const REGIONS=[“Visa Latvija”,”Rīga”,”Daugavpils”,”Jelgava”,”Jūrmala”,”Liepāja”,”Rēzekne”,”Ventspils”,”Ādažu novads”,”Aizkraukles novads”,”Alūksnes novads”,”Augšdaugavas novads”,”Balvu novads”,”Bauskas novads”,”Cēsu novads”,”Dienvidkurzemes novads”,”Dobeles novads”,”Gulbenes novads”,”Jēkabpils novads”,”Jelgavas novads”,”Ķekavas novads”,”Krāslavas novads”,”Kuldīgas novads”,”Limbažu novads”,”Līvānu novads”,”Ludzas novads”,”Madonas novads”,”Mārupes novads”,”Ogres novads”,”Olaines novads”,”Preiļu novads”,”Rēzeknes novads”,”Ropažu novads”,”Salaspils novads”,”Saldus novads”,”Saulkrastu novads”,”Siguldas novads”,”Smiltenes novads”,”Talsu novads”,”Tukuma novads”,”Valkas novads”,”Valmieras novads”,”Ventspils novads”];
const AD_TYPES=[“Pārdod”,”Pērk”,”Īrē”,”Piedāvā pakalpojumu”,”Meklē darbu”,”Piedāvā darbu”,”Mainās”,”Dāvina”];
const SAMPLE_ADS=[
{id:”s1″,title:”BMW 520d xDrive, 2021, 45 000 km”,desc:”Lieliski uzturēts, viens īpašnieks. Pilna servisa vēsture pieejama. Ziemas un vasaras riepas komplektā. Navigācija, ādas salons, LED lukturi.”,price:32500,cat:”transport”,sub:”Vieglie auto”,region:”Rīga”,type:”Pārdod”,phone:”+371 29123456″,email:”janis@inbox.lv”,user:”Jānis K.”,created:Date.now()-720000,paid:true,status:”active”,photos:[]},
{id:”s2″,title:”2-ist. dzīvoklis Centrā, 54m², renovēts”,desc:”Pilnībā renovēts dzīvoklis ar skatu uz Vecrīgu. Iebūvētā virtuve, veļas mašīna, kondicionieris.”,price:650,cat:”realestate”,sub:”Dzīvokļi”,region:”Rīga”,type:”Īrē”,phone:”+371 26789012″,email:”anna@gmail.com”,user:”Anna B.”,created:Date.now()-1800000,paid:false,status:”active”,photos:[]},
{id:”s3″,title:”iPhone 15 Pro Max 256GB, kā jauns”,desc:”Lietots 3 mēnešus, ideālā stāvoklī. Komplektā oriģinālā kaste, lādētājs un aizsargstikls.”,price:890,cat:”electronics”,sub:”Sakaru līdzekļi”,region:”Rīga”,type:”Pārdod”,phone:”+371 20345678″,email:”maris@mail.lv”,user:”Māris P.”,created:Date.now()-3600000,paid:true,status:”active”,photos:[]},
{id:”s4″,title:”Web izstrādātājs — pilna laika darbs”,desc:”Meklējam pieredzējušu front-end izstrādātāju ar React/Next.js pieredzi. Darbs attālināti vai birojā Rīgā. Konkurētspējīga alga + bonusi.”,price:2800,cat:”work”,sub:”Vakances”,region:”Rīga”,type:”Piedāvā darbu”,phone:”+371 25111222″,email:”hr@techcompany.lv”,user:”TechCo SIA”,created:Date.now()-7200000,paid:true,status:”active”,photos:[]},
{id:”s5″,title:”Māja Jūrmalā, 180m², zeme 1200m²”,desc:”Skaista māja klusā rajonā, 10 min no jūras. 4 guļamistabas, 2 vannas, kamīns, garāža 2 auto.”,price:285000,cat:”realestate”,sub:”Mājas, vasarnīcas”,region:”Jūrmala”,type:”Pārdod”,phone:”+371 29876543″,email:”realtors@inbox.lv”,user:”Baltic Realty”,created:Date.now()-14400000,paid:true,status:”active”,photos:[]},
{id:”s6″,title:”Labradorra retrivera kucēni”,desc:”Pieejami brīnišķīgi labradorra kucēni — 3 melnīši un 2 dzeltenīši. Vakcinēti, čipēti, ar pasi.”,price:800,cat:”animals”,sub:”Suņi, kucēni”,region:”Jelgava”,type:”Pārdod”,phone:”+371 28456789″,email:”kennel@inbox.lv”,user:”Saulainais Kenels”,created:Date.now()-28800000,paid:true,status:”active”,photos:[]},
{id:”s7″,title:”Bērnu velosipēds 16\”, gandrīz jauns”,desc:”Izmantots vienu sezonu. Ar palīgriteņiem. Piemērots bērniem 4-7 gadi.”,price:45,cat:”children”,sub:”Rotaļas, šūpoles”,region:”Rīga”,type:”Pārdod”,phone:”+371 22333444″,email:”liga@mail.lv”,user:”Līga S.”,created:Date.now()-36000000,paid:false,status:”active”,photos:[]},
{id:”s8″,title:”Ozolkoka pusdienu galds, 6 personām”,desc:”Masīvs ozolkoka galds, roku darbs. Izmērs 160x90cm. Bez defektiem.”,price:320,cat:”home”,sub:”Mēbeles, interjers”,region:”Mārupes novads”,type:”Pārdod”,phone:”+371 27888999″,email:”kaspars@inbox.lv”,user:”Kaspars M.”,created:Date.now()-50000000,paid:true,status:”active”,photos:[]},
{id:”s9″,title:”Angļu valodas kursi — visi līmeņi”,desc:”Pieredzējusi pasniedzēja piedāvā individuālas un grupu nodarbības. Pirmā nodarbība bezmaksas!”,price:15,cat:”work”,sub:”Kursi, izglītība”,region:”Rīga”,type:”Piedāvā pakalpojumu”,phone:”+371 26555777″,email:”teacher@gmail.com”,user:”Ieva R.”,created:Date.now()-72000000,paid:false,status:”active”,photos:[]},
{id:”s10″,title:”Makita akumulatora urbjmašīna 18V”,desc:”Jauna, oriģinālā iepakojumā. 2 akumulatori, lādētājs, koferis. Garantija 2 gadi.”,price:189,cat:”construction”,sub:”Darba rīki un tehnika”,region:”Liepāja”,type:”Pārdod”,phone:”+371 23444555″,email:”tools@shop.lv”,user:”Instruments SIA”,created:Date.now()-100000000,paid:true,status:”active”,photos:[]},
];
function timeAgo(ts){const d=Date.now()-ts,m=Math.floor(d/60000),h=Math.floor(d/3600000),dy=Math.floor(d/86400000);if(m<1)return"Tikko";if(m<60)return"Pirms "+m+" min";if(h<24)return"Pirms "+h+"h";return"Pirms "+dy+"d";}
function genId(){return'ad_'+Date.now()+'_'+Math.random().toString(36).slice(2,8);}
function fmtPrice(p){return p.toString().replace(/\B(?=(\d{3})+(?!\d))/g,' ');}
async function loadAds(){try{const r=await window.storage.get('cl-ads5');if(r)return JSON.parse(r.value);}catch(e){}return SAMPLE_ADS;}
async function saveAds(a){try{await window.storage.set('cl-ads5',JSON.stringify(a));}catch(e){}}
async function loadUsers(){try{const r=await window.storage.get('cl-users5');if(r)return JSON.parse(r.value);}catch(e){}return[];}
async function saveUsers(u){try{await window.storage.set('cl-users5',JSON.stringify(u));}catch(e){}}
async function loadSession(){try{const r=await window.storage.get('cl-sess5');if(r)return JSON.parse(r.value);}catch(e){}return null;}
async function saveSession(s){try{if(s)await window.storage.set('cl-sess5',JSON.stringify(s));else await window.storage.delete('cl-sess5');}catch(e){}}
function compress(b64,maxW=800,q=0.7){return new Promise(r=>{const img=new Image();img.onload=()=>{const c=document.createElement(‘canvas’);let w=img.width,h=img.height;if(w>maxW){h=Math.round(h*(maxW/w));w=maxW;}c.width=w;c.height=h;c.getContext(‘2d’).drawImage(img,0,0,w,h);r(c.toDataURL(‘image/jpeg’,q));};img.onerror=()=>r(b64);img.src=b64;});}
/* ═══ PHOTO UPLOADER ═══ */
function PhotoUploader({photos,setPhotos,max=8}){
const ref=useRef(null);
const [drag,setDrag]=useState(false);
const [busy,setBusy]=useState(false);
const proc=async(files)=>{
const v=Array.from(files).filter(f=>f.type.startsWith(‘image/’));
if(!v.length)return;const rem=max-photos.length;if(rem<=0)return;
setBusy(true);
try{const res=await Promise.all(v.slice(0,rem).map(f=>new Promise((ok,no)=>{if(f.size>4*1024*1024){no();return;}const r=new FileReader();r.onload=()=>compress(r.result).then(ok);r.onerror=no;r.readAsDataURL(f);})));
setPhotos(p=>[…p,…res].slice(0,max));}catch(e){}setBusy(false);};
const rm=i=>setPhotos(p=>p.filter((_,j)=>j!==i));
const mv=(a,b)=>setPhotos(p=>{const n=[…p];const x=n.splice(a,1)[0];n.splice(b,0,x);return n;});
return(
photos.length
{e.preventDefault();setDrag(false);proc(e.dataTransfer.files);}} onDragOver={e=>{e.preventDefault();setDrag(true);}} onDragLeave={()=>setDrag(false)}
style={{border:”2px dashed “+(drag?”#2D5A3D”:”#d8d0c6″),borderRadius:14,padding:photos.length?16:40,textAlign:”center”,cursor:photos.length
{proc(e.target.files);e.target.value=””;}}/>
{photos.length===0?(
📸
{busy?”Augšupielādē…”:”Noklikšķiniet vai ievelciet fotoattēlus šeit”}
JPG, PNG vai WebP · Maks. 4MB · Līdz {max} bildēm
):(
{photos.map((p,i)=>(

{i===0&&
Galvenā
}
{i>0&&
}
{i
{e.stopPropagation();mv(i,i+1);}} style={{position:”absolute”,bottom:4,right:4,width:20,height:20,borderRadius:4,background:”rgba(0,0,0,.5)”,color:”#fff”,border:”none”,fontSize:10,cursor:”pointer”,display:”flex”,alignItems:”center”,justifyContent:”center”}}>▶}
))}
{photos.length
{e.stopPropagation();ref.current?.click();}} style={{width:100,height:100,borderRadius:10,border:”2px dashed #d8d0c6″,display:”flex”,flexDirection:”column”,alignItems:”center”,justifyContent:”center”,cursor:”pointer”,background:”#faf8f5″,flexShrink:0}}>+
Pievienot
}
{busy&&⏳ Augšupielādē…
}
Pirmais attēls būs galvenais. Izmantojiet ◀ ▶ lai pārkārtotu.
)}
);
}
/* ═══ PHOTO GALLERY ═══ */
function PhotoGallery({photos,catIcon}){
const [idx,setIdx]=useState(0);const [lb,setLb]=useState(false);
const has=photos&&photos.length>0;
if(!has)return
{catIcon||”📦”}
;
return(<>

setLb(true)} style={{width:”100%”,height:380,objectFit:”contain”,cursor:”zoom-in”,display:”block”}}/>
{photos.length>1&&<>
>}
{idx+1} / {photos.length}
{photos.length>1&&
{photos.map((p,i)=>

setIdx(i)} style={{width:64,height:64,objectFit:”cover”,borderRadius:8,cursor:”pointer”,border:i===idx?”3px solid #2D5A3D”:”3px solid transparent”,opacity:i===idx?1:.6,transition:”all .2s”,flexShrink:0}}/>)}
}
{lb&&
setLb(false)} style={{position:”fixed”,top:0,left:0,right:0,bottom:0,background:”rgba(0,0,0,.92)”,zIndex:500,display:”flex”,alignItems:”center”,justifyContent:”center”,cursor:”zoom-out”}}>
{photos.length>1&&<>
>}
}
>);
}
/* ═══════════ MAIN APP ═══════════ */
export default function App(){
const [page,setPage]=useState(“home”);
const [ads,setAds]=useState([]);const [users,setUsers]=useState([]);const [user,setUser]=useState(null);
const [loading,setLoading]=useState(true);
const [fCat,setFCat]=useState(null);const [fSub,setFSub]=useState(null);
const [fReg,setFReg]=useState(“Visa Latvija”);const [q,setQ]=useState(“”);
const [viewAd,setViewAd]=useState(null);const [toast,setToast]=useState(null);const [mob,setMob]=useState(false);
useEffect(()=>{(async()=>{const[a,u,s]=await Promise.all([loadAds(),loadUsers(),loadSession()]);setAds(a);setUsers(u);if(s)setUser(s);setLoading(false);})();},[]);
const flash=(m,t=”success”)=>{setToast({m,t});setTimeout(()=>setToast(null),3500);};
const doLogin=async(e,p)=>{const f=users.find(u=>u.email===e&&u.pass===p);if(!f)return false;setUser(f);await saveSession(f);return true;};
const doReg=async(n,e,p,ph)=>{if(users.find(u=>u.email===e))return”exists”;const u={id:genId(),name:n,email:e,pass:p,phone:ph,created:Date.now()};const nU=[…users,u];setUsers(nU);await saveUsers(nU);setUser(u);await saveSession(u);return”ok”;};
const logout=async()=>{setUser(null);await saveSession(null);setPage(“home”);flash(“Jūs esat izrakstījies”);};
const mkAd=async(ad)=>{const n={…ad,id:genId(),created:Date.now(),status:”active”,user:user.name};const nA=[n,…ads];setAds(nA);await saveAds(nA);flash(“Sludinājums publicēts!”);setPage(“my-ads”);};
const delAd=async(id)=>{const n=ads.filter(a=>a.id!==id);setAds(n);await saveAds(n);flash(“Sludinājums dzēsts”);};
const fAds=ads.filter(a=>{if(a.status!==”active”)return false;if(fCat&&a.cat!==fCat)return false;if(fSub&&a.sub!==fSub)return false;if(fReg!==”Visa Latvija”&&a.region!==fReg)return false;if(q){const s=q.toLowerCase();if(!a.title.toLowerCase().includes(s)&&!a.desc.toLowerCase().includes(s))return false;}return true;});
const go=(p,c,s)=>{setPage(p);if(c!==undefined)setFCat(c);if(s!==undefined)setFSub(s);setMob(false);};
if(loading)return
;
return(
{toast&&
{toast.m}
}
{mob&&
{user?<>>:<>>}
}
{page===”home”&&
}
{page===”browse”&&}
{page===”detail”&&}
{page===”login”&&}
{page===”register”&&}
{page===”create”&&}
{page===”my-ads”&&}
);
}
function AdCard({ad,onClick}){
const c=CATEGORIES.find(x=>x.id===ad.cat);const has=ad.photos&&ad.photos.length>0;
const bg={transport:”linear-gradient(135deg,#e8e0d4,#d4cdc0)”,realestate:”linear-gradient(135deg,#d4ddd4,#c0cec0)”,electronics:”linear-gradient(135deg,#d4d8e0,#c0c6d0)”,work:”linear-gradient(135deg,#dde0d4,#c8cec0)”,animals:”linear-gradient(135deg,#ddd8d0,#d0c8c0)”,children:”linear-gradient(135deg,#e4dcd4,#d8cec4)”,home:”linear-gradient(135deg,#ddd8ce,#d0c8be)”,construction:”linear-gradient(135deg,#e0dcd0,#d4cec2)”,agriculture:”linear-gradient(135deg,#d8ddd0,#c8d0c0)”,entertainment:”linear-gradient(135deg,#dcd4dd,#cec4d0)”,clothes:”linear-gradient(135deg,#ddd4d8,#d0c4c8)”,production:”linear-gradient(135deg,#d8d8d8,#ccc)”};
return(
{has?

:
{c?.icon||”📦”}}
{ad.paid&&
Izcelts}
{ad.type}
{has&&ad.photos.length>1&&
📷 {ad.photos.length}}
{c?.title}{ad.sub?” · “+ad.sub:””}
{ad.title}
{fmtPrice(ad.price)} €
{ad.region}
{timeAgo(ad.created)}
);
}
function Home({ads,go,q,setQ,fReg,setFReg,setFCat,setFSub,setViewAd,setPage}){
const recent=ads.filter(a=>a.status===”active”).slice(0,6);
const cc={};ads.forEach(a=>{if(a.status===”active”)cc[a.cat]=(cc[a.cat]||0)+1;});
return(<>
{ads.filter(a=>a.status===”active”).length}
Sludinājumi
{CATEGORIES.length}
Kategorijas
{REGIONS.length-1}
Reģioni
Kategorijas
{CATEGORIES.map((c,i)=>
{setFCat(c.id);setFSub(null);go(“browse”);}}>
{c.icon}{cc[c.id]||0}
{c.title}
{c.subs.slice(0,3).map((s,j)=>{j>0?” · “:””}{s})}
)}
Jaunākie sludinājumi
{recent.map(a=>
{setViewAd(a);setPage(“detail”);}}/>)}
Vienkārša cenu politika
Godīga un caurspīdīga maksa
>);
}
function Browse({ads,go,q,setQ,fCat,setFCat,fSub,setFSub,fReg,setFReg,setViewAd,setPage}){
const co=fCat?CATEGORIES.find(c=>c.id===fCat):null;
return(
setQ(e.target.value)}/>
{setFCat(null);setFSub(null);}}>Visas{CATEGORIES.map(c=>{setFCat(fCat===c.id?null:c.id);setFSub(null);}}>{c.icon} {c.title})}
{co&&
setFSub(null)}>Visas{co.subs.map(s=>setFSub(fSub===s?null:s)}>{s})}
}
{co?co.title:”Visi sludinājumi”}{fSub?” · “+fSub:””}
{ads.length}
{ads.length===0?
🔍Nav atrasts neviens sludinājums
:
{ads.map(a=>
{setViewAd(a);setPage(“detail”);}}/>)}}
);
}
function Detail({ad,go}){
const [sp,setSp]=useState(false);const [se,setSe]=useState(false);
if(!ad)return
;
const c=CATEGORIES.find(x=>x.id===ad.cat);
return(
{c?.title}{ad.sub?” · “+ad.sub:””}
{ad.title}
{fmtPrice(ad.price)} €
📍 {ad.region}🕐 {timeAgo(ad.created)}👤 {ad.user}{ad.type}{ad.photos&&ad.photos.length>0&&📷 {ad.photos.length}}{ad.price>=100?”✓ Apmaksāts”:”Bezmaksas”}
Kontaktinformācija
);
}
function Login({doLogin,go,flash}){
const [e,setE]=useState(“”);const [p,setP]=useState(“”);const [err,setErr]=useState(“”);
const sub=async()=>{if(!e||!p){setErr(“Aizpildiet laukus”);return;}const ok=await doLogin(e,p);if(ok){flash(“Laipni lūdzam!”);go(“home”);}else setErr(“Nepareizi dati”);};
return(
Ieiet sistēmā
{err&&
{err}
}
setE(x.target.value)} placeholder=”janis@inbox.lv”/>
setP(x.target.value)} placeholder=”••••••” onKeyDown={x=>{if(x.key===”Enter”)sub();}}/>
Nav konta?
);
}
function Register({doReg,go,flash}){
const [n,setN]=useState(“”);const [e,setE]=useState(“”);const [ph,setPh]=useState(“”);const [p,setP]=useState(“”);const [p2,setP2]=useState(“”);const [err,setErr]=useState(“”);
const sub=async()=>{if(!n||!e||!p){setErr(“Aizpildiet obligātos laukus”);return;}if(p.length<6){setErr("Parole min. 6 simboli");return;}if(p!==p2){setErr("Paroles nesakrīt");return;}const r=await doReg(n,e,p,ph);if(r==="exists"){setErr("E-pasts jau reģistrēts");return;}flash("Konts izveidots!");go("home");};
return(
);
}
function Create({user,go,mkAd,flash}){
const [tab,setTab]=useState(“form”);
const [title,setTitle]=useState(“”);const [desc,setDesc]=useState(“”);const [price,setPrice]=useState(“”);
const [cat,setCat]=useState(“”);const [sub,setSub]=useState(“”);const [reg,setReg]=useState(“Rīga”);
const [type,setType]=useState(“Pārdod”);const [ph,setPh]=useState(user?.phone||””);
const [em,setEm]=useState(user?.email||””);const [err,setErr]=useState(“”);const [photos,setPhotos]=useState([]);
const [cn,setCn]=useState(“”);const [ce,setCe]=useState(“”);const [cv,setCv]=useState(“”);const [busy,setBusy]=useState(false);
if(!user)return
🔐Nepieciešams konts
;
const co=CATEGORIES.find(c=>c.id===cat);const pn=parseFloat(price)||0;const pay=pn>=100;
const doSub=()=>{if(!title||!desc||!price||!cat||!reg||!type||!ph||!em){setErr(“Aizpildiet obligātos laukus”);return;}setErr(“”);if(pay)setTab(“payment”);else pub(false);};
const pub=(pd)=>{mkAd({title,desc,price:pn,cat,sub:sub||co?.subs[0]||””,region:reg,type,phone:ph,email:em,paid:pd,status:”active”,photos});};
const doPay=()=>{if(!cn||!ce||!cv){flash(“Aizpildiet kartes datus”,”error”);return;}if(cn.replace(/\s/g,”).length<16){flash("Nepareizs numurs","error");return;}setBusy(true);setTimeout(()=>{setBusy(false);pub(true);},2000);};
if(tab===”payment”)return(
💳
Apmaksa: 1,00 €
Cena {fmtPrice(pn)} € — publicēšana 1 €
{photos.length>0&&
{photos.slice(0,4).map((p,i)=>

)}{photos.length>4&&
+{photos.length-4}
}
}
🔒 Droša maksājumu apstrāde
);
return(
Jauns sludinājums
Aizpildiet informāciju
{err&&
{err}
}
setTitle(e.target.value)} placeholder=”Piem. BMW 520d, 2021, 45 000 km”/>
{price!==””&&{pay?<>💰 Cena {fmtPrice(pn)} € — maksa: 1,00 €>:<>✅ Cena {fmtPrice(pn)} € — bezmaksas!>}
}
);
}
function MyAds({user,ads,go,delAd,setViewAd,setPage}){
if(!user)return
🔐Ieejiet sistēmā
;
const my=ads.filter(a=>a.email===user.email);
return(
Mani sludinājumi
👤 {user.name}
{my.length===0?
📭Nav neviena sludinājuma
:my.map(a=>{const c=CATEGORIES.find(x=>x.id===a.cat);const hp=a.photos&&a.photos.length>0;return(
{hp?

:
{c?.icon||”📦”}
}
{a.title}
{c?.title} · {a.region}{hp?” · 📷”+a.photos.length:””}
{fmtPrice(a.price)} €
);})}
);
}