import type {Metadata} from "next";
import {notFound} from "next/navigation";
import {departments,hotels,jobs,openJobs,roles,type Lang} from "@/lib/content";

type P={params:Promise<{segments?:string[]}>,searchParams:Promise<Record<string,string|string[]|undefined>>};
const copy={
th:{home:"หน้าแรก",jobs:"งานทั้งหมด",hotels:"โรงแรม",departments:"แผนก",apply:"สมัครงาน",search:"ค้นหางาน",placeholder:"ชื่อตำแหน่ง แผนก หรือโรงแรม",hero1:"หางานโรงแรม",hero2:"ในกรุงเทพฯ ที่ใช่สำหรับคุณ",heroLead:"ค้นหาตำแหน่งงานโรงแรมในย่านข้าวสาร รามบุตรี และพระนคร เลือกแผนกและโรงแรมที่เหมาะกับคุณ",opening:"ตำแหน่งงาน",property:"โรงแรม",category:"แผนกงาน",browse:"เลือกงานตามแผนก",all:"ทั้งหมด",view:"ดูตำแหน่ง",more:"ดูทั้งหมด",unavailable:"ขณะนี้ไม่เปิดรับสมัคร",noManagement:"Hotel Manager ผู้จัดการทั่วไป — ดูแลภาพรวมทั้งโรงแรม กำหนดนโยบาย งบประมาณ และรับผิดชอบกำไรขาดทุน",noResults:"ไม่พบตำแหน่งที่ตรงกับการค้นหา ลองเปลี่ยนคำค้นหรือแผนก",about:"เกี่ยวกับโรงแรม",location:"ที่ตั้งโรงแรม",visit:"เว็บไซต์โรงแรม",gallery:"ภาพโรงแรม",building:"อาคาร",room:"ห้องพัก",pool:"สระว่ายน้ำ",restaurant:"ห้องอาหาร",lobby:"ล็อบบี้",photoUnavailable:"ดูภาพเพิ่มเติมที่เว็บไซต์โรงแรม",aboutRole:"รายละเอียดงาน",responsibility:"หน้าที่หลัก",applyHow:"วิธีสมัคร",send:"ส่งประวัติสมัครงาน",sendDetail:"ส่งประวัติและระบุตำแหน่งที่สมัครในหัวข้ออีเมล กรุณาติดต่อโรงแรมโดยตรงเพื่อตรวจสอบสถานะล่าสุด",contact:"ติดต่อ",address:"ที่อยู่",email:"อีเมล",phone:"โทรศัพท์",related:"งานอื่นในโรงแรมนี้",steps:["เลือกตำแหน่งงาน","ดูรายละเอียดและโรงแรม","ส่งประวัติไปยังอีเมลติดต่อ"],stepsTitle:"สมัครงานอย่างไร",keyword:"หางานโรงแรม · หางานโรงแรม กรุงเทพ · สมัครงานโรงแรม · สมัครงานโรงแรมกรุงเทพ · งานโรงแรมกรุงเทพ",footerText:"ศูนย์รวมตำแหน่งงานโรงแรมในกรุงเทพฯ",filterHotel:"เลือกโรงแรม",filterDept:"เลือกแผนก",allHotels:"ทุกโรงแรม",allDepts:"ทุกแผนก",roles:"ตำแหน่ง",other:"ดูภาพและรายละเอียดจากเว็บไซต์ทางการ",draftNote:"ส่งใบสมัครไปยังอีเมลของโรงแรมโดยตรง โปรดสอบถามเงื่อนไขและรายละเอียดล่าสุดกับโรงแรม"},
en:{home:"Home",jobs:"All jobs",hotels:"Hotels",departments:"Departments",apply:"Apply",search:"Find jobs",placeholder:"Role, department or hotel",hero1:"Hotel jobs",hero2:"in Bangkok, made easier",heroLead:"Explore hotel roles around Khaosan, Rambuttri and Bangkok Old Town. Find the team and property that fit you.",opening:"job opportunities",property:"hotels",category:"departments",browse:"Explore by department",all:"All",view:"View role",more:"View all",unavailable:"Now Unavailable",noManagement:"Hotel Manager — oversees hotel operations, policy, budgets and profit and loss",noResults:"No matching roles. Try another search or department.",about:"About the hotel",location:"Hotel location",visit:"Hotel website",gallery:"Hotel photos",building:"Building",room:"Room",pool:"Pool",restaurant:"Restaurant",lobby:"Lobby",photoUnavailable:"See photos on the hotel website",aboutRole:"About this role",responsibility:"Main responsibilities",applyHow:"How to apply",send:"Email your application",sendDetail:"Send your CV and put the job title in the email subject. Contact the hotel to confirm current availability and terms.",contact:"Contact",address:"Address",email:"Email",phone:"Phone",related:"More roles at this hotel",steps:["Choose a role","Explore the hotel and details","Email your CV to the contact"],stepsTitle:"How to apply",keyword:"Thai Hotel Job · Thai Hotel Jobs · Hotel Jobs · Hotel Job",footerText:"Hotel job opportunities in Bangkok",filterHotel:"Select hotel",filterDept:"Select department",allHotels:"All hotels",allDepts:"All departments",roles:"roles",other:"View more on the official hotel site",draftNote:"Apply directly to the hotel email. Please confirm the latest terms with the hotel."},
my:{home:"ပင်မစာမျက်နှာ",jobs:"အလုပ်အားလုံး",hotels:"ဟိုတယ်များ",departments:"ဌာနများ",apply:"လျှောက်ထားရန်",search:"အလုပ်ရှာရန်",placeholder:"ရာထူး၊ ဌာန သို့မဟုတ် ဟိုတယ်",hero1:"ထိုင်းဟိုတယ်အလုပ်",hero2:"ဘန်ကောက်တွင် ရှာဖွေပါ",heroLead:"ခေါင်ဆန်၊ ရမ်ဘုတ်ထရီနှင့် ဘန်ကောက်မြို့ဟောင်းရှိ ဟိုတယ်အလုပ်များကို ရှာဖွေပါ။",opening:"အလုပ်ရာထူး",property:"ဟိုတယ်",category:"ဌာန",browse:"ဌာနအလိုက် ရှာရန်",all:"အားလုံး",view:"ရာထူးကြည့်ရန်",more:"အားလုံးကြည့်ရန်",unavailable:"လက်ရှိ မခေါ်ယူသေးပါ",noManagement:"Hotel Manager — ဟိုတယ်လုပ်ငန်း၊ မူဝါဒ၊ ဘတ်ဂျက်နှင့် အမြတ်အရှုံးကို တာဝန်ယူသည်",noResults:"ကိုက်ညီသောရာထူးမတွေ့ပါ။ အခြားစကားလုံး သို့မဟုတ် ဌာနကို ရွေးပါ။",about:"ဟိုတယ်အကြောင်း",location:"ဟိုတယ်တည်နေရာ",visit:"ဟိုတယ်ဝက်ဘ်ဆိုက်",gallery:"ဟိုတယ်ဓာတ်ပုံများ",building:"အဆောက်အအုံ",room:"အခန်း",pool:"ရေကူးကန်",restaurant:"စားသောက်ဆိုင်",lobby:"ဧည့်ခန်းမ",photoUnavailable:"ဟိုတယ်ဝက်ဘ်ဆိုက်တွင် ပုံများကြည့်ပါ",aboutRole:"ရာထူးအကြောင်း",responsibility:"အဓိကတာဝန်များ",applyHow:"လျှောက်ထားနည်း",send:"အီးမေးလ်ဖြင့် လျှောက်ထားရန်",sendDetail:"CV ပို့ပြီး အီးမေးလ်ခေါင်းစဉ်တွင် ရာထူးအမည် ထည့်ပါ။ လက်ရှိခေါ်ယူမှုကို ဟိုတယ်နှင့် အတည်ပြုပါ။",contact:"ဆက်သွယ်ရန်",address:"လိပ်စာ",email:"အီးမေးလ်",phone:"ဖုန်း",related:"ဤဟိုတယ်ရှိ အခြားအလုပ်များ",steps:["ရာထူးရွေးပါ","ဟိုတယ်နှင့် အလုပ်အကြောင်းကြည့်ပါ","CV ကို အီးမေးလ်ပို့ပါ"],stepsTitle:"လျှောက်ထားနည်း",keyword:"ထိုင်းဟိုတယ်အလုပ် · ဘန်ကောက်ဟိုတယ်အလုပ် · ဟိုတယ်အလုပ်လျှောက်ထားရန်",footerText:"ဘန်ကောက်ရှိ ဟိုတယ်အလုပ်များ",filterHotel:"ဟိုတယ်ရွေးပါ",filterDept:"ဌာနရွေးပါ",allHotels:"ဟိုတယ်အားလုံး",allDepts:"ဌာနအားလုံး",roles:"ရာထူး",other:"တရားဝင် ဟိုတယ်ဝက်ဘ်ဆိုက်တွင် ထပ်မံကြည့်ပါ",draftNote:"ဟိုတယ်၏ အီးမေးလ်သို့ တိုက်ရိုက်လျှောက်ထားပါ။ နောက်ဆုံးစည်းကမ်းများကို ဟိုတယ်နှင့် အတည်ပြုပါ။"}
};
function parse(segs:string[]=[]){let lang:Lang="th";if(segs[0]==="en"||segs[0]==="my"){lang=segs[0];segs=segs.slice(1)}return {lang,path:segs,base:lang==="th"?"":"/"+lang}}
function href(base:string,path=""){return base+path||"/"}
const imgRole=(slug:string)=>"/assets/roles/"+slug+".webp";
const imageForRole=(slug:string)=>({"reservation-agent":"revenue-executive","front-cashier":"general-cashier","floor-supervisor":"housekeeping-supervisor"}[slug]||slug);
function Header({lang,base}:{lang:Lang,base:string}){const t=copy[lang];const links=[["",t.home],["/#jobs",t.jobs],["/hotels",t.hotels],["/departments",t.departments]];return <><div className="utility"><div className="wrap"><span>THAI HOTEL JOBS · BANGKOK OLD TOWN</span><strong>{t.footerText}</strong></div></div><header className="nav"><div className="wrap navinner"><a href={href(base)} className="brand" aria-label="thaihotel.jobs"><img className="brandlogo" src="/brand/logo-approved.png" alt=""/></a><nav className="navlinks">{links.map(([p,n])=><a key={p} href={href(base,p)}>{n}</a>)}</nav><div className="langs"><a aria-label="ภาษาไทย" title="ภาษาไทย" className={lang==="th"?"active":""} href="/"><img src="/flags/th.svg" width="24" height="16" alt=""/></a><a aria-label="English" title="English" className={lang==="en"?"active":""} href="/en"><img src="/flags/us.svg" width="24" height="16" alt=""/></a><a aria-label="မြန်မာ" title="မြန်မာ" className={lang==="my"?"active":""} href="/my"><img src="/flags/mm.svg" width="24" height="16" alt=""/></a></div><a className="navcta" href={href(base,"/#jobs")}>{t.search}</a></div><nav className="mobilelinks">{links.map(([p,n])=><a key={p} href={href(base,p)}>{n}</a>)}</nav></header></>}
function Footer({lang,base}:{lang:Lang,base:string}){const t=copy[lang];return <><section className="footcta"><div className="wrap"><div><h2>{t.stepsTitle}</h2><p>{t.steps.join(" · ")}</p></div><a href={href(base,"/#jobs")} className="button" style={{background:"white",color:"#5121bf"}}>{t.search}</a></div></section><footer className="footer"><div className="wrap"><div className="footergrid"><div><div className="brand footerbrand"><img className="brandlogo" src="/brand/logo-approved.png" alt="thaihotel.jobs"/></div><p style={{fontSize:13,maxWidth:350,marginTop:15}}>{t.keyword}</p></div><div><h3>{t.jobs}</h3><a href={href(base,"/#jobs")}>{t.all}</a><a href={href(base,"/departments")}>{t.departments}</a><a href={href(base,"/hotels")}>{t.hotels}</a></div><div><h3>{t.departments}</h3>{departments.slice(1,5).map(d=><a key={d.slug} href={href(base,"/departments/"+d.slug)}>{d.name[lang]}</a>)}</div></div><div className="footerbottom">© 2026 thaihotel.jobs · Bangkok, Thailand</div></div></footer></>}
function PageHero({lang,base,title,lead}:{lang:Lang,base:string,title:string,lead?:string}){return <section className="pagehero"><div className="wrap"><div className="crumb"><a href={href(base)}>{copy[lang].home}</a> / {title}</div><h1>{title}</h1>{lead&&<p>{lead}</p>}</div></section>}
function JobCard({j,lang,base}:{j:typeof jobs[number],lang:Lang,base:string}){
 const t=copy[lang],d=departments.find(x=>x.slug===j.dept)!;
 return <article className={"jobcard"+(j.available?"":" jobcard-unavailable")}><div className="jobtop"><span className="jobhotel-logo"><img src={j.hotel.logo} alt={j.hotel.name+" logo"} loading="lazy"/></span><div><h3>{j.available?<a href={href(base,"/jobs/"+j.slug)}>{j.name[lang]}</a>:j.name[lang]}</h3><p><a className="hotel-name-link" href={href(base,"/hotels/"+j.hotel.slug)}>{j.hotel.name}</a></p></div></div><p>{j.detail[lang]}</p><div className="jobmeta"><span className="tag">{d.name[lang]}</span><span className="tag">Bangkok · Phra Nakhon</span></div><div className="jobfoot"><span>{j.hotel.address.split(",")[0]}</span>{j.available?<a href={href(base,"/jobs/"+j.slug)}>{t.view} ›</a>:<strong className="unavailable-sign">{t.unavailable}</strong>}</div></article>
}
function HotelCard({h,lang,base}:{h:typeof hotels[number],lang:Lang,base:string}){const t=copy[lang],count=openJobs.filter(j=>j.hotel.slug===h.slug).length;return <article className="hotelcard"><a href={href(base,"/hotels/"+h.slug)}>{h.images[0]?<img loading="lazy" src={h.images[0]} alt={h.name}/>:<div className="hotel-placeholder">{h.name}</div>}</a><div className="hotelbody"><h3><a className="hotel-name-link" href={href(base,"/hotels/"+h.slug)}>{h.name}</a></h3><p>{h.description[lang]}</p><a className="textlink" href={href(base,"/hotels/"+h.slug)}>{count} {t.roles} · {t.view} ›</a></div></article>}
function JobBoard({lang,base,list,active,q="",selectedHotel="",page=1,listingPath=""}:{lang:Lang,base:string,list:typeof jobs,active:string,q?:string,selectedHotel?:string,page?:number,listingPath?:string}){
 const t=copy[lang],perPage=36,totalPages=Math.max(1,Math.ceil(list.length/perPage)),current=Math.min(page,totalPages);
 const pageUrl=(n:number)=>{const search=new URLSearchParams();if(q)search.set("q",q);if(selectedHotel)search.set("hotel",selectedHotel);if(active&&!listingPath)search.set("dept",active);search.set("page",String(n));return href(base,listingPath)+"?"+search.toString()+(listingPath?"":"#jobs")};
 return <div className="board"><aside className="filters"><div className="panel"><h3>{t.filterDept}</h3><div className="filterlist"><a className={!active?"active":""} href={href(base,"/#jobs")}>{t.allDepts} <span>{openJobs.length}</span></a>{departments.map(d=><a key={d.slug} className={active===d.slug?"active":""} href={href(base,"/departments/"+d.slug)}>{d.name[lang]} <span>{openJobs.filter(j=>j.dept===d.slug).length}</span></a>)}</div></div></aside><div><div className="boardtop"><h2>{active?departments.find(d=>d.slug===active)?.name[lang]:t.jobs}</h2><span className="count">{list.length} {t.roles}</span></div>{active==="management"?<div className="empty"><strong className="unavailable-sign">{t.unavailable}</strong><p style={{margin:"10px 0 0"}}>{t.noManagement}</p></div>:list.length?<><div className="jobgrid">{list.slice((current-1)*perPage,current*perPage).map(j=><JobCard key={j.slug} j={j} lang={lang} base={base}/>)}</div>{totalPages>1&&<nav className="pagination" aria-label="Pages">{current>1&&<a href={pageUrl(current-1)}>‹ {lang==="th"?"ก่อนหน้า":lang==="en"?"Previous":"ရှေ့စာမျက်နှာ"}</a>}<span>{current} / {totalPages}</span>{current<totalPages&&<a href={pageUrl(current+1)}>{lang==="th"?"ถัดไป":lang==="en"?"Next":"နောက်စာမျက်နှာ"} ›</a>}</nav>}</>:<div className="empty">{t.noResults}</div>}<p className="notice" style={{marginTop:20}}>{t.draftNote}</p></div></div>
}
function Home({lang,base,q,hotel,dept,page}:{lang:Lang,base:string,q:string,hotel:string,dept:string,page:number}){const t=copy[lang];const term=q.toLocaleLowerCase();const list=openJobs.filter(j=>(!term||[j.name[lang],j.name.en,j.name.th,j.hotel.name,j.dept].some(x=>x.toLocaleLowerCase().includes(term)))&&(!hotel||j.hotel.slug===hotel)&&(!dept||j.dept===dept));return <><section className="hero"><div className="wrap herogrid"><div className="hero-copy"><div className="eyebrow">THAI HOTEL JOBS · BANGKOK</div><h1>{t.hero1}<br/><em>{t.hero2}</em></h1><p className="lead">{t.heroLead}</p><form className="searchbar" action={href(base)} method="get"><input type="search" name="q" defaultValue={q} aria-label={t.search} placeholder={t.placeholder}/><button className="button" type="submit">{t.search}</button></form><div className="stats"><span><b>{openJobs.length}</b>{t.opening}</span><span><b>{hotels.length}</b>{t.property}</span><span><b>{departments.length}</b>{t.category}</span></div></div><div className="hero-image"><img src={imgRole("team")} alt="Bangkok hotel team" fetchPriority="high"/></div></div></section><section className="section alt"><div className="wrap"><div className="sectionhead"><div><div className="eyebrow">{t.departments}</div><h2>{t.browse}</h2></div><a className="textlink" href={href(base,"/departments")}>{t.more} ›</a></div><div className="deptgrid">{departments.filter(d=>d.slug!=="management").map(d=><a className="depttile" key={d.slug} href={href(base,"/departments/"+d.slug)}><span className="depticon">{d.icon}</span><strong>{d.name[lang]}</strong><small>{openJobs.filter(j=>j.dept===d.slug).length} {t.roles}</small></a>)}</div></div></section><section id="jobs" className="section"><div className="wrap"><div className="sectionhead"><div><div className="eyebrow">{t.keyword}</div><h2>{t.jobs}</h2></div></div><form action={href(base)} method="get" style={{display:"flex",gap:10,flexWrap:"wrap",marginBottom:22}}><select className="selectfilter" name="hotel" defaultValue={hotel} aria-label={t.filterHotel} style={{width:"auto",minWidth:230}}><option value="">{t.allHotels}</option>{hotels.map(h=><option key={h.slug} value={h.slug}>{h.name}</option>)}</select><select className="selectfilter" name="dept" defaultValue={dept} aria-label={t.filterDept} style={{width:"auto",minWidth:200}}><option value="">{t.allDepts}</option>{departments.map(d=><option key={d.slug} value={d.slug}>{d.name[lang]}</option>)}</select><button className="button" type="submit">{t.search}</button></form><JobBoard lang={lang} base={base} list={list} active={dept} q={q} selectedHotel={hotel} page={page}/></div></section><section className="section alt"><div className="wrap"><div className="sectionhead"><div><div className="eyebrow">BANGKOK OLD TOWN</div><h2>{t.hotels}</h2></div><a className="textlink" href={href(base,"/hotels")}>{t.more} ›</a></div><div className="hotelgrid">{hotels.map(h=><HotelCard key={h.slug} h={h} lang={lang} base={base}/>)}</div></div></section><section className="section"><div className="wrap"><div className="sectionhead"><h2>{t.stepsTitle}</h2></div><div className="method">{t.steps.map((s,i)=><div key={s}><b>0{i+1}</b><strong>{s}</strong></div>)}</div></div></section></>}
function HotelDetail({lang,base,h}:{lang:Lang,base:string,h:typeof hotels[number]}){const t=copy[lang],list=jobs.filter(j=>j.hotel.slug===h.slug).sort((a,b)=>Number(b.available)-Number(a.available)||a.sortKey-b.sortKey),labels=[t.building,t.room,t.pool,t.restaurant,t.lobby];return <><PageHero lang={lang} base={base} title={h.name} lead={h.description[lang]}/><section className="section"><div className="wrap"><div className="detailgrid"><div className="detail"><h2>{t.about}</h2><p>{h.description[lang]}</p><div className="gallery">{labels.map((label,i)=><figure key={label}>{h.images[i]?<img src={h.images[i]!} loading="lazy" alt={h.name+" — "+label}/>:<a href={h.site} rel="nofollow noopener noreferrer" target="_blank" className="missingphoto">{t.photoUnavailable}</a>}<figcaption>{label}</figcaption></figure>)}</div><h2>{t.location}</h2><p>{h.address}</p><iframe className="map" title={h.name+" map"} loading="lazy" referrerPolicy="no-referrer-when-downgrade" src={"https://maps.google.com/maps?q="+encodeURIComponent(h.name+" "+h.address)+"&output=embed"}/><p style={{marginTop:10}}><a className="textlink" href={"https://www.google.com/maps/search/?api=1&query="+encodeURIComponent(h.name+" "+h.address)} rel="nofollow noopener noreferrer" target="_blank">Google Maps ↗</a></p><h2>{t.jobs} · {h.name} <span className="count">{list.filter(j=>j.available).length} {t.roles}</span></h2><div className="hotel-openings">{departments.filter(d=>list.some(j=>j.dept===d.slug)).map(d=><section className="hotel-department" key={d.slug}><h3>{d.name[lang]} <span>{list.filter(j=>j.dept===d.slug&&j.available).length} {t.roles}</span></h3><div className="jobgrid">{list.filter(j=>j.dept===d.slug).map(j=><JobCard key={j.slug} j={j} lang={lang} base={base}/>)}</div></section>)}</div></div><aside><div className="detailcard"><img src={h.logo} alt={h.name+" logo"} style={{maxHeight:70,maxWidth:190,objectFit:"contain",marginBottom:20}}/><h3>{t.contact}</h3><dl><dt>{t.address}</dt><dd>{h.address}</dd><dt>{t.phone}</dt><dd><a href={"tel:"+h.phone.replace(/\s/g,"")}>{h.phone}</a></dd><dt>{t.email}</dt><dd><a href={"mailto:"+h.email}>{h.email}</a></dd></dl><a className="button" href={"mailto:"+h.email+"?subject="+encodeURIComponent("Hotel Job Application — "+h.name)}>{t.apply}</a><a className="button ghost" style={{marginTop:10}} href={h.site} rel="nofollow noopener noreferrer" target="_blank">{t.visit} ↗</a></div></aside></div></div></section></>}
function JobDetail({lang,base,j}:{lang:Lang,base:string,j:typeof jobs[number]}){const t=copy[lang],d=departments.find(x=>x.slug===j.dept)!;const other=openJobs.filter(x=>x.hotel.slug===j.hotel.slug&&x.slug!==j.slug).slice(0,4);return <><PageHero lang={lang} base={base} title={j.name[lang]} lead={j.hotel.name+" · "+d.name[lang]}/><section className="section"><div className="wrap detailgrid"><article className="detail"><img className="rolephoto" src={imgRole(imageForRole(j.roleSlug))} alt={j.name[lang]} loading="lazy"/>{!j.available&&<p className="unavailable-banner">{t.unavailable}</p>}<h2>{t.aboutRole}</h2><p>{j.detail[lang]}</p><h2>{t.responsibility}</h2><ul><li>{j.detail[lang]}</li><li>{lang==="th"?"รักษามาตรฐานการบริการและประสานงานกับทีมโรงแรม":lang==="en"?"Maintain service standards and coordinate with the hotel team.":"ဝန်ဆောင်မှုစံနှုန်းများကို ထိန်းသိမ်းပြီး ဟိုတယ်အဖွဲ့နှင့် ပူးပေါင်းဆောင်ရွက်ပါ။"}</li></ul>{j.available&&<><h2>{t.applyHow}</h2><p>{t.sendDetail}</p><p className="notice">{t.draftNote}</p></>}<h2>{t.related}</h2><div className="jobgrid">{other.map(x=><JobCard key={x.slug} j={x} lang={lang} base={base}/>)}</div></article><aside><div className="detailcard"><h3><a className="hotel-name-link" href={href(base,"/hotels/"+j.hotel.slug)}>{j.hotel.name}</a></h3><dl><dt>{t.category}</dt><dd>{d.name[lang]}</dd><dt>{t.location}</dt><dd>{j.hotel.address}</dd><dt>{t.email}</dt><dd>{j.hotel.email}</dd></dl>{j.available?<a className="button" href={"mailto:"+j.hotel.email+"?subject="+encodeURIComponent("Application: "+j.name.en+" — "+j.hotel.name)}>{t.send}</a>:<p className="unavailable-banner">{t.unavailable}</p>}<a className="button ghost" href={href(base,"/hotels/"+j.hotel.slug)} style={{marginTop:10}}>{t.about}</a></div></aside></div></section></>}
export async function generateMetadata({params}:P):Promise<Metadata>{const {lang,path}=parse((await params).segments);let title=copy[lang].hero1+" | thaihotel.jobs";let description=copy[lang].heroLead;if(path[0]==="jobs"&&path[1]){const j=jobs.find(x=>x.slug===path[1])||jobs.find(x=>x.roleSlug===path[1]);if(j){title=j.name[lang]+" | "+j.hotel.name+" | thaihotel.jobs";description=j.detail[lang]}}else if(path[0]==="hotels"&&path[1]){const h=hotels.find(x=>x.slug===path[1]);if(h){title=h.name+" | thaihotel.jobs";description=h.description[lang]}}if(path[0]==="departments"&&path[1]){const d=departments.find(x=>x.slug===path[1]);if(d)title=d.name[lang]+" | thaihotel.jobs"}return {title,description,keywords:lang==="th"?["หางานโรงแรม","หางานโรงแรม กรุงเทพ","สมัครงานโรงแรม","สมัครงานโรงแรมกรุงเทพ","งานโรงแรมกรุงเทพ"]:lang==="en"?["Thai Hotel Job","Thai Hotel Jobs","Hotel Jobs","Hotel Job"]:["ထိုင်းဟိုတယ်အလုပ်","ဘန်ကောက်ဟိုတယ်အလုပ်"],alternates:{canonical:(lang==="th"?"":"/"+lang)+(path.length?"/"+path.join("/"):"/") ,languages:{th:"/"+path.join("/"),en:"/en"+(path.length?"/"+path.join("/"):""),my:"/my"+(path.length?"/"+path.join("/"):"")}}}}
export default async function Page({params,searchParams}:P){const {lang,path,base}=parse((await params).segments);const query=await searchParams;const q=String(query.q||""),hotel=String(query.hotel||""),dept=String(query.dept||""),page=Math.max(1,Number(query.page)||1);let body:React.ReactNode;if(!path.length){body=<Home lang={lang} base={base} q={q} hotel={hotel} dept={dept} page={page}/>;}else if(path[0]==="hotels"&&!path[1]){body=<><PageHero lang={lang} base={base} title={copy[lang].hotels} lead={copy[lang].heroLead}/><section className="section alt"><div className="wrap hotelgrid">{hotels.map(h=><HotelCard key={h.slug} h={h} lang={lang} base={base}/>)}</div></section></>;}else if(path[0]==="hotels"&&path[1]){const h=hotels.find(x=>x.slug===path[1]);if(!h)notFound();body=<HotelDetail lang={lang} base={base} h={h}/>;}else if(path[0]==="departments"&&!path[1]){body=<><PageHero lang={lang} base={base} title={copy[lang].departments}/><section className="section alt"><div className="wrap deptgrid">{departments.map(d=><a className="depttile" href={href(base,"/departments/"+d.slug)} key={d.slug}><span className="depticon">{d.icon}</span><strong>{d.name[lang]}</strong><small>{openJobs.filter(j=>j.dept===d.slug).length} {copy[lang].roles}</small></a>)}</div></section></>;}else if(path[0]==="departments"&&path[1]){const d=departments.find(x=>x.slug===path[1]);if(!d)notFound();body=<><PageHero lang={lang} base={base} title={d.name[lang]}/><section className="section"><div className="wrap"><img className="widephoto" src={imgRole(d.image)} alt={d.name[lang]}/><div style={{marginTop:30}}><JobBoard lang={lang} base={base} list={openJobs.filter(j=>j.dept===d.slug)} active={d.slug} page={page} listingPath={"/departments/"+d.slug}/></div></div></section></>;}else if(path[0]==="jobs"&&path[1]){const j=jobs.find(x=>x.slug===path[1])||jobs.find(x=>x.roleSlug===path[1]);if(!j)notFound();body=<JobDetail lang={lang} base={base} j={j}/>;}else notFound();return <><Header lang={lang} base={base}/>{body}<Footer lang={lang} base={base}/></>}
