1import{E as L,i as P,h as q,r as l,bh as E,l as S,s as f,j as n,bj as $,b as j,S as C,n as U,o as O,q as z,t as K,I as R,B as F,d as B,R as g}from"./index-BCH4IFx8.js";import{M}from"./monitor-MHmyhpPu.js";const V=()=>{const{orgSlug:t}=L(),p=P(),[u]=q(),[d,_]=l.useState(""),[m,h]=l.useState(""),[y,k]=l.useState(!1),{setOrganizationFromSlug:x}=E();l.useEffect(()=>{t&&x(t)},[t,x]),l.useEffect(()=>{t&&localStorage.setItem("kiosk_pwa_org",t),document.documentElement.classList.remove("dark"),document.documentElement.classList.add("light")},[t]),l.useEffect(()=>{var r;const e=sessionStorage.getItem("kiosk_session");if(e)try{if(((r=JSON.parse(e).organization)==null?void 0:r.slug)===t){const i=u.get("wallet"),o=u.get("bp"),a=new URLSearchParams;i&&a.set("wallet",i),o&&a.set("bp",o);const w=a.toString();p(`/org/${t}/kiosk/workspace${w?`?${w}`:""}`,{replace:!0})}}catch{}},[t,p]);const{data:s}=S({queryKey:["kiosk-org-public",t],queryFn:async()=>{const{data:e}=await f.from("organizations_public").select("id, slug, name, favicon_url, logo_url, primary_color").eq("slug",t).eq("is_active",!0).maybeSingle();return e||null},enabled:!!t});l.useEffect(()=>{if(!t)return;const e="https://hhkjvpdlkhxblpqzugic.supabase.co",r=window.location.origin,c=(s==null?void 0:s.favicon_url)||"",i=`${e}/functions/v1/pwa-manifest/?org=${encodeURIComponent(t)}&origin=${encodeURIComponent(r)}&v=${encodeURIComponent(c)}`,o=Array.from(document.querySelectorAll('link[rel="manifest"]'));if(o.length===0){const a=document.createElement("link");a.rel="manifest",a.type="application/manifest+json",a.crossOrigin="anonymous",a.href=i,document.head.appendChild(a);return}for(const a of o)a.type="application/manifest+json",a.crossOrigin="anonymous",a.href=i},[t,s==null?void 0:s.favicon_url]),l.useEffect(()=>{const e=s==null?void 0:s.favicon_url;if(!e)return;const r=c=>{let i=document.querySelector(`link[rel="${c}"]`);i||(i=document.createElement("link"),i.rel=c,document.head.appendChild(i)),i.href=e};r("icon"),r("shortcut icon"),r("apple-touch-icon")},[s==null?void 0:s.favicon_url]);const{data:N,isLoading:I}=S({queryKey:["kiosk-pos-users",t],queryFn:async()=>{if(!(s!=null&&s.id))return[];const{data:e,error:r}=await f.from("kiosk_pos_users").select("id, display_name").eq("organization_id",s.id);if(r)throw r;return e||[]},enabled:!!(s!=null&&s.id)}),v=async()=>{if(!d||!m){g({title:"Enter your name and PIN",variant:"destructive"});return}k(!0);try{const{data:e,error:r}=await f.functions.invoke("kiosk-auth",{body:{org_slug:t,display_name:d,pin:m}});if(r||!(e!=null&&e.success)){g({title:"Login Failed",description:(e==null?void 0:e.error)||"Invalid PIN. Please try again.",variant:"destructive"}),h("");return}sessionStorage.setItem("kiosk_session",JSON.stringify({kiosk_user:e.kiosk_user,organization:e.organization,staff_token:e.staff_token??null}));const c=u.get("wallet"),i=u.get("bp"),o=new URLSearchParams;c&&o.set("wallet",c),i&&o.set("bp",i);const a=o.toString();p(`/org/${t}/kiosk/workspace${a?`?${a}`:""}`,{replace:!0})}catch{g({title:"Login error",description:"Please try again.",variant:"destructive"})}finally{k(!1)}},b=(s==null?void 0:s.favicon_url)||(s==null?void 0:s.logo_url);return n.jsx($,{showFooter:!1,children:n.jsx("div",{className:"min-h-screen flex items-center justify-center p-4",children:n.jsxs("div",{className:"w-full max-w-sm space-y-6",children:[n.jsxs("div",{className:"text-center space-y-3",children:[b?n.jsx("img",{src:b,alt:(s==null?void 0:s.name)||"Organization",className:"h-20 w-20 mx-auto rounded-xl object-contain bg-background shadow-md border border-border p-1"}):n.jsx(M,{className:"h-12 w-12 mx-auto text-primary"}),n.jsx("h1",{className:"font-display text-3xl tracking-wider",children:"KIOSK LOGIN"}),n.jsx("p",{className:"text-sm text-muted-foreground",children:"Sign in with your staff name and PIN"})]}),n.jsxs("div",{className:"space-y-4",children:[n.jsxs("div",{className:"space-y-2",children:[n.jsx(j,{children:"Staff Name"}),n.jsxs(C,{value:d,onValueChange:_,children:[n.jsx(U,{className:"h-12 text-base",children:n.jsx(O,{placeholder:I?"Loading...":"Select your name"})}),n.jsx(z,{children:(N||[]).map(e=>n.jsx(K,{value:e.display_name,children:e.display_name},e.id))})]})]}),n.jsxs("div",{className:"space-y-2",children:[n.jsx(j,{children:"PIN"}),n.jsx(R,{type:"password",inputMode:"numeric",pattern:"[0-9]*",placeholder:"Enter your PIN",value:m,onChange:e=>h(e.target.value),onKeyDown:e=>e.key==="Enter"&&v(),className:"h-12 text-center text-2xl tracking-[0.5em]",maxLength:8})]}
1),n.jsxs(F,{onClick:v,disabled:y||!d||!m,className:"w-full h-12 text-base",children:[y?n.jsx(B,{className:"h-5 w-5 animate-spin mr-2"}):null,"Sign In to Kiosk"]})]})]})})})};export{V as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.