PageSourceSearch

https://prikbord-zazu.vercel.app/_next/static/chunks/0v2qao2ggnv3r.js?dpl=dpl_5KJYEdDad5LrWqUon6rSy59jPTxe

js prikbord-zazu.vercel.app collected 2026-10-03 07:32:11 UTC 38,382 bytes, 19 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,77844,e=>{"use strict";var t=e.i(43476),n=e.i(71645);let a={maxWidth:1080,margin:"0 auto",padding:"40px 24px 120px"},i={fontSize:"1.7rem",fontWeight:800,letterSpacing:"-0.02em"},l={fontSize:12.5,fontWeight:700,color:"var(--ink-faint)",textTransform:"uppercase",letterSpacing:"0.06em",display:"block",marginBottom:6},r={width:"100%",border:"1.5px solid var(--line)",borderRadius:10,padding:"10px 12px",background:"var(--wash)",outline:"none"},s={background:"var(--orange)",color:"var(--orange-ink)",fontWeight:700,padding:"10px 18px",borderRadius:10,border:0},o={background:"var(--paper)",color:"var(--ink)",fontWeight:600,padding:"7px 13px",borderRadius:8,border:"1px solid var(--line)",fontSize:13,whiteSpace:"nowrap"},d={display:"inline-block",padding:"2px 9px",borderRadius:999,background:"var(--orange-wash)",color:"var(--orange-deep)",fontSize:11.5,fontWeight:700},p={fontSize:13,color:"var(--ink-faint)"},c={border:"1px solid var(--line)",borderRadius:8,padding:"6px 10px",background:"var(--paper)",fontSize:13,fontWeight:600,color:"var(--ink)",cursor:"pointer"},g={fontSize:12,fontWeight:800,textTransform:"uppercase",letterSpacing:"0.08em",color:"var(--ink-faint)"},h={fontSize:11,fontWeight:800,textTransform:"uppercase",letterSpacing:"0.07em",color:"var(--ink-faint)"},u="#fbf1d3",x="#8a6410",m="#4a8b5c",f=[["intake","Intake"],["demo","Demo"],["review","Review"],["polish","Polish"],["live","Live"]],y=f.map(([e])=>e),k=e=>y.includes(e.phase)?e.phase:"review",v=e=>Number(e?.ronde)||1,j=e=>Array.isArray(e?.rondes)?e.rondes:[],b=e=>`${e} punt${1===e?"":"en"}`,w={wash:"#fbe0dd",deep:"#a3311f"},S={wash:"var(--orange-wash)",deep:"var(--orange-deep)"},T={wash:u,deep:x},z={wash:"var(--wash)",deep:"var(--ink-faint)"},C={created:"Aangemaakt",intake_sent:"Intake verstuurd",intake_received:"Intake ontvangen",phase_changed:"Fase",review_finished:"Review klaar",note:"Notitie"};function I(e){if(!e)return"";let t=new Date(e);return isNaN(t)?"":t.toLocaleString("nl-NL",{day:"numeric",month:"short",hour:"2-digit",minute:"2-digit"})}function W(e){if(!e)return"";let t=new Date(e);return isNaN(t)?"":t.toLocaleDateString("nl-NL",{day:"numeric",month:"short"})}function $(e){if(!e)return 0;let t=new Date(e);return isNaN(t)?0:Math.max(0,Math.floor((Date.now()-t.getTime())/864e5))}function R(e){return e.intakeReceivedAt||e.intake?{key:"ontvangen",label:"Ontvangen",date:e.intakeReceivedAt,wash:"var(--orange-wash)",deep:"var(--orange-deep)"}:e.intakeSentAt?{key:"verstuurd",label:"Verstuurd",date:e.intakeSentAt,wash:u,deep:x}:{key:"niet",label:"Niet verstuurd",wash:"var(--wash)",deep:"var(--ink-faint)"}}function A(e,t,n){return`mailto:${e}?subject=${encodeURIComponent(t)}&body=${encodeURIComponent(n)}`}let M=(e,t)=>`${t}/go/${e.clientToken}`,O=e=>"team"===e.mode?{"X-Session":e.secret}:{"X-Master-Key":e.secret},N={undo:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M4 10h10a6 6 0 0 1 0 12h-4"}),(0,t.jsx)("path",{d:"M8 6l-4 4 4 4"})]}),redo:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M20 10H10a6 6 0 0 0 0 12h4"}),(0,t.jsx)("path",{d:"M16 6l4 4-4 4"})]}),kopieer:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("rect",{x:"9",y:"9",width:"11",height:"11",rx:"2"}),(0,t.jsx)("path",{d:"M5 15V5a2 2 0 0 1 2-2h10"})]}),extern:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M14 4h6v6"}),(0,t.jsx)("path",{d:"M20 4 10 14"}),(0,t.jsx)("path",{d:"M20 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h5"})]}),wissen:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M4 7h16"}),(0,t.jsx)("path",{d:"M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"}),(0,t.jsx)("path",{d:"M6 7l1 13a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1l1-13"})]}),sluit:(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("path",{d:"M6 6l12 12"}),(0,t.jsx)("path",{d:"M18 6 6 18"})]}),vink:(0,t.jsx)("path",{d:"M5 13l4 4L19 7"})};function D({name:e,size:n=16}){return(0,t.jsx)("svg",{width:n,height:n,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",style:{flex:"none"},children:N[e]})}function L({icon:e,title:a,onClick:i,href:l,small:r,plain:s,tone:o,style:d}
1){let[p,c]=(0,n.useState)(!1),g={width:r?28:32,height:r?28:32,borderRadius:8,padding:0,flex:"none",display:"inline-flex",alignItems:"center",justifyContent:"center",border:s?0:"1px solid var(--line)",background:p?"var(--wash)":s?"transparent":"var(--paper)",color:o||"var(--ink-soft)",cursor:"pointer",textDecoration:"none",...d},h={onMouseEnter:()=>c(!0),onMouseLeave:()=>c(!1)},u=(0,t.jsx)(D,{name:e,size:r?14:16});return l?(0,t.jsx)("a",{href:l,target:"_blank",rel:"noreferrer",title:a,style:g,...h,children:u}):(0,t.jsx)("button",{type:"button",title:a,onClick:i,style:g,...h,children:u})}function U({text:e,title:a,small:i,plain:l}){let[r,s]=(0,n.useState)(!1);return(0,t.jsx)(L,{icon:r?"vink":"kopieer",title:r?"Gekopieerd":a,small:i,plain:l,tone:r?"var(--orange-deep)":void 0,onClick:()=>{navigator.clipboard.writeText(e),s(!0),setTimeout(()=>s(!1),1500)}})}function _({href:e,children:n,style:a}){return(0,t.jsxs)("a",{href:e,target:"_blank",rel:"noreferrer",style:{...o,textDecoration:"none",display:"inline-flex",alignItems:"center",gap:6,...a},children:[n,(0,t.jsx)(D,{name:"extern",size:14})]})}function E({label:e,n,style:a}){return(0,t.jsxs)("h2",{style:{display:"flex",alignItems:"center",gap:8,...a},children:[(0,t.jsx)("span",{style:g,children:e}),null!=n?(0,t.jsx)("span",{style:{fontSize:11,fontWeight:800,color:"var(--ink-soft)",background:"var(--wash)",borderRadius:999,padding:"2px 8px",lineHeight:1.4},children:n}):null]})}function B({text:e,children:a,style:i}){let[l,r]=(0,n.useState)(!1);return(0,t.jsxs)("button",{style:{...o,display:"inline-flex",alignItems:"center",gap:6,...i},onClick:()=>{navigator.clipboard.writeText(e),r(!0),setTimeout(()=>r(!1),1500)},children:[(0,t.jsx)(D,{name:l?"vink":"kopieer",size:14}),l?"Gekopieerd":a]})}function P({value:e,placeholder:a,onSave:i}){let[l,s]=(0,n.useState)(!1),[o,d]=(0,n.useState)("");return l?(0,t.jsx)("input",{autoFocus:!0,style:{...r,padding:"6px 9px",fontSize:13.5},value:o,onChange:e=>d(e.target.value),onBlur:()=>{s(!1);let t=o.trim();t!==(e||"")&&i(t)},onKeyDown:t=>{"Enter"===t.key&&t.currentTarget.blur(),"Escape"===t.key&&(d(e||""),s(!1))}}):(0,t.jsx)("button",{onClick:()=>{d(e||""),s(!0)},title:"Klik om te bewerken",style:{background:"none",border:0,padding:"2px 0",textAlign:"left",cursor:"text",width:"100%",fontSize:13.5,fontWeight:e?600:500,color:e?"var(--ink)":"var(--ink-faint)",borderBottom:"1px dashed var(--line)",wordBreak:"break-word",lineHeight:1.4},children:e||a})}function H({tile:e,isNew:n,onOpen:a,origin:i}){let l=e.fixed||0,r="intake"===k(e)||!e.deployUrl,s=R(e);return(0,t.jsxs)("div",{role:"button",tabIndex:0,onClick:a,onKeyDown:e=>{e.target===e.currentTarget&&("Enter"===e.key||" "===e.key)&&(e.preventDefault(),a())},style:{textAlign:"left",border:"1px solid var(--line)",borderRadius:14,padding:"14px 15px 12px",background:"var(--paper)",cursor:"pointer",display:"flex",flexDirection:"column",position:"relative",minWidth:0,minHeight:118},children:[n?(0,t.jsx)("span",{style:{position:"absolute",top:11,right:11,width:9,height:9,borderRadius:99,background:"var(--orange)"}}):null,(0,t.jsx)("span",{style:{fontSize:13.5,fontWeight:700,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",paddingRight:14},children:e.name}),r?(0,t.jsxs)("span",{style:{fontSize:12,fontWeight:800,textTransform:"uppercase",letterSpacing:"0.06em",color:s.deep,marginTop:10},children:[s.label,s.date?` \xb7 ${W(s.date)}`:""]}):(0,t.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",gap:10,marginTop:8},children:[(0,t.jsxs)("span",{style:{minWidth:0},children:[(0,t.jsx)("span",{style:{display:"block",fontSize:30,fontWeight:800,letterSpacing:"-0.03em",lineHeight:1,color:e.open?"var(--ink)":"var(--ink-faint)"},children:e.open||0}),(0,t.jsx)("span",{style:{...h,fontSize:10},children:"Open"})]}),l>0?(0,t.jsxs)("span",{style:{marginTop:3,background:u,color:x,borderRadius:999,padding:"3px 9px",fontSize:11,fontWeight:800,textTransform:"uppercase",letterSpacing:"0.05em",whiteSpace:"nowrap"},children:[l," gefixt"]}):null]}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"flex-end",justifyContent:"space-between",gap:8,marginTop:"auto",paddingTop:10},children:[(0,t.jsxs)("span",{style:{...p,fontSize:11.5},children:[v(e)>1?`Ronde ${v(e)}`:"",v(e)>1&&e.lastActivity?" · ":"",e.lastActivity?I(e.lastActivity):""]}),(0,t.jsxs)("span",{onClick:e=>e.stopPropagation(),style:{display:"flex",gap:6},children:[(0,t.jsx)(U,{text:M(e,i),title:"Kopieer klantlink"}),e.deployUrl?(0,t.jsx)(L,{icon:"extern",title:"Open site",href:e.deployUrl}):null]})]})]})}function F({title:e,children:n}){return(0,t.jsxs)("section",{style:{borderTop:"1px solid var(--line)",marginTop:22,paddingTop:16},children:[(0,t.jsx)("h3",{style:{...h,marginBottom:10},children:e}),n]})}function K({n:e,label:n,tone:a}){return(0,t.jsxs)("div",{style:{background:"var(--wash)",borderRadius:10,padding:"10px 12px",minWidth:0},children:[(0,t.jsx)("span",{style:{display:"block",fontSize:"1.5rem",fontWeight:800,letterSpacing:"-0.02em",lineHeight:1.15,color:a||"var(--ink)"},children:e}),(0,t.jsx)("span",{style:{...h,fontSize:10.5},children:n})]})}function V({headers:e}
1){let[a,i]=(0,n.useState)("laden"),[l,r]=(0,n.useState)(!1),s="u">typeof navigator&&(/iP(hone|ad|od)/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1),d=window.matchMedia?.("(display-mode: standalone)")?.matches||!0===window.navigator.standalone;(0,n.useEffect)(()=>{"serviceWorker"in navigator&&"PushManager"in window&&"Notification"in window?navigator.serviceWorker.register("/sw.js").then(e=>e.pushManager.getSubscription()).then(e=>i(e?"aan":"uit")).catch(()=>i("niet")):i("niet")},[]);let c=async()=>{i("bezig");try{let t=await fetch("/api/push",{headers:e}).then(e=>e.ok?e.json():null).catch(()=>null),n=t?.enabled===!1?null:t?.publicKey||t?.key;if(!n)return void i("serverUit");let a=await Notification.requestPermission();if("granted"!==a)return void i("geblokkeerd");let l=await navigator.serviceWorker.ready,r=await l.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:function(e){let t="=".repeat((4-e.length%4)%4),n=atob((e+t).replace(/-/g,"+").replace(/_/g,"/")),a=new Uint8Array(n.length);for(let e=0;e<n.length;e++)a[e]=n.charCodeAt(e);return a}(n)}),s=await fetch("/api/push",{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify({subscription:r.toJSON()})}).then(e=>e.ok).catch(()=>!1);i(s?"aan":"uit")}catch{i("uit")}},g=async()=>{i("bezig");try{let t=await navigator.serviceWorker.ready,n=await t.pushManager.getSubscription();n&&(await fetch("/api/push",{method:"DELETE",headers:{"Content-Type":"application/json",...e},body:JSON.stringify({endpoint:n.endpoint})}).catch(()=>null),await n.unsubscribe())}catch{}i("uit")};if("niet"===a&&!(s&&!d))return null;let h="laden"===a?"Meldingen…":"bezig"===a?"Bezig…":"aan"===a?"Meldingen aan":"geblokkeerd"===a?"Meldingen geblokkeerd":"serverUit"===a?"Push niet geconfigureerd":"Meldingen uit";return(0,t.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:8,flexWrap:"wrap"},children:[(0,t.jsxs)("button",{style:{...o,display:"inline-flex",alignItems:"center",gap:6},onClick:()=>{s&&!d&&"niet"===a?r(!l):"aan"===a?g():"uit"===a&&c()},disabled:"laden"===a||"bezig"===a||"geblokkeerd"===a,title:"geblokkeerd"===a?"Meldingen staan uit in je browserinstellingen":"Push-meldingen op dit apparaat",children:["aan"===a?(0,t.jsx)(D,{name:"vink",size:14}):null,h]}),l?(0,t.jsxs)("span",{style:{...p,fontSize:12,maxWidth:260},children:["Zet het bord eerst op je beginscherm via Deel ",">"," Zet op beginscherm, daarna kun je hier meldingen aanzetten."]}):null]})}function J({headers:e,onCreated:a,onCancel:i}){let[d,p]=(0,n.useState)({bedrijf:"",site:"",naam:"",email:"",telefoon:"",notitie:""}
1),[c,g]=(0,n.useState)(!1),[h,u]=(0,n.useState)(""),x=e=>t=>p({...d,[e]:t.target.value}),m=async t=>{t.preventDefault();let n=d.bedrijf.trim();if(!n)return void u("Bedrijfsnaam is verplicht");g(!0),u("");let i=`${String(n||"").toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g,"").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"klant"}-${Math.floor(65536*Math.random()).toString(16).padStart(4,"0")}`,l={bedrijf:n};d.naam.trim()&&(l.naam=d.naam.trim()),d.email.trim()&&(l.email=d.email.trim()),d.telefoon.trim()&&(l.telefoon=d.telefoon.trim());let r=d.site.trim().replace(/\/+$/,""),s={name:n,slug:i,phase:"intake",contact:l};r&&(s.deployUrl=/^https?:\/\//.test(r)?r:"https://"+r),d.notitie.trim()&&(s.notities=d.notitie.trim());let o=await fetch("/api/projects",{method:"POST",headers:{"Content-Type":"application/json",...e},body:JSON.stringify(s)}).then(e=>e.json().then(t=>({ok:e.ok,d:t}))).catch(()=>null);(g(!1),o&&o.ok)?a(o.d?.project?.slug||i):u(o?.d?.error||"Aanmaken mislukte")};return(0,t.jsxs)("form",{onSubmit:m,style:{marginTop:16,border:"1px solid var(--line)",borderRadius:14,padding:18,background:"var(--wash)",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(180px, 1fr))",gap:10,alignItems:"end"},children:[(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{style:l,children:"Bedrijf"}),(0,t.jsx)("input",{autoFocus:!0,style:r,value:d.bedrijf,onChange:x("bedrijf")})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{style:l,children:"Site-URL"}),(0,t.jsx)("input",{style:r,value:d.site,onChange:x("site"),placeholder:"klant.vercel.app"})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{style:l,children:"Contactnaam"}),(0,t.jsx)("input",{style:r,value:d.naam,onChange:x("naam")})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{style:l,children:"E-mail"}),(0,t.jsx)("input",{style:r,type:"email",value:d.email,onChange:x("email")})]}),(0,t.jsxs)("div",{children:[(0,t.jsx)("label",{style:l,children:"Telefoon"}),(0,t.jsx)("input",{style:r,value:d.telefoon,onChange:x("telefoon")})]}),(0,t.jsxs)("div",{style:{gridColumn:"1 / -1"},children:[(0,t.jsx)("label",{style:l,children:"Notitie"}),(0,t.jsx)("input",{style:r,value:d.notitie,onChange:x("notitie"),placeholder:"Context, afspraken, eerste indruk"})]}),(0,t.jsxs)("div",{style:{gridColumn:"1 / -1",display:"flex",gap:8,alignItems:"center"},children:[(0,t.jsx)("button",{style:s,type:"submit",disabled:c,children:c?"Bezig…":"Klant aanmaken"}),(0,t.jsx)("button",{style:o,type:"button",onClick:i,children:"Annuleer"}),h?(0,t.jsx)("span",{style:{color:"var(--orange-deep)",fontSize:13.5},children:h}):null]})]})}function G({tile:e,headers:a,onDeleted:i}){let[l,d]=(0,n.useState)(!1),[p,c]=(0,n.useState)(""),[g,h]=(0,n.useState)(!1),[u,x]=(0,n.useState)(""),m=(e.total||0)>0,f=!m||p.trim().toLowerCase()===e.name.trim().toLowerCase(),y=async()=>{h(!0),x("");let t=await fetch("/api/projects",{method:"DELETE",headers:{"Content-Type":"application/json",...a},body:JSON.stringify({slug:e.slug})}).then(e=>e.json().then(t=>({ok:e.ok,d:t}))).catch(()=>null);(h(!1),t&&t.ok)?i():x(t?.d?.error||"Verwijderen mislukte")};return l?(0,t.jsxs)("div",{style:{border:`1px solid ${w.deep}`,borderRadius:12,padding:14,background:w.wash},children:[(0,t.jsxs)("p",{style:{fontSize:13.5,lineHeight:1.5,color:w.deep,fontWeight:600},children:["Dit verwijdert ",m?`de kaart, de links en ${e.total} feedbackpunt${1===e.total?"":"en"}`:"de kaart en de links"," definitief."]}),m?(0,t.jsx)("input",{style:{...r,marginTop:10,background:"var(--paper)"},placeholder:`Typ "${e.name}" om te bevestigen`,value:p,onChange:e=>c(e.target.value)}):null,(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:10,flexWrap:"wrap"},children:[(0,t.jsx)("button",{style:{...s,background:w.deep,color:"#fff",opacity:f?1:.45},onClick:y,disabled:!f||g,children:g?"Bezig…":"Verwijder definitief"}),(0,t.jsx)("button",{style:o,onClick:()=>{d(!1),c(""),x("")},children:"Annuleer"}),u?(0,t.jsx)("span",{style:{color:w.deep,fontSize:13.5,fontWeight:600},children:u}):null]})]}):(0,t.jsxs)("button",{style:{...o,color:w.deep,display:"inline-flex",alignItems:"center",gap:6},onClick:()=>
1d(!0),children:[(0,t.jsx)(D,{name:"wissen",size:14}),"Verwijder klant…"]})}function Z({tile:e,punten:a,onGesloten:i}){let[l,r]=(0,n.useState)(!1),[d,c]=(0,n.useState)(!1),[g,h]=(0,n.useState)(""),[u,x]=(0,n.useState)(null),m=v(e),{mee:f,achter:y}=function(e,t){let n=0,a=0;for(let i of e||[])"open"===i.status||!0===i.blijftHangen?n++:v(i)===t&&a++;return{mee:n,achter:a}}(a,m),k=async()=>{c(!0),h("");let t=await fetch("/api/ronde",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e.adminToken,vorige:m})}).then(e=>e.json().then(t=>({ok:e.ok,d:t})).catch(()=>({ok:e.ok,d:null}))).catch(()=>null);(c(!1),t&&t.ok)?(r(!1),x(t.d||null),i()):h(t?.d?.error||"Ronde sluiten mislukte")},j=u?`Ronde ${u.vorige??m} gesloten: ${b(u.meegeschoven??0)} mee, ${b(u.achtergebleven??0)} blijven staan. Nu ronde ${u.ronde??m+1}.`:"";return l?(0,t.jsxs)("div",{style:{border:"1px solid var(--orange)",borderRadius:12,padding:14,background:"var(--orange-wash)",marginTop:12},children:[(0,t.jsxs)("p",{style:{fontSize:13.5,lineHeight:1.5,color:"var(--orange-deep)",fontWeight:600},children:["Dit sluit ronde ",m," en zet ",e.name," op ronde ",m+1,". De klant ziet dat meteen."]}),(0,t.jsxs)("p",{style:{fontSize:13.5,lineHeight:1.5,color:"var(--ink-soft)",marginTop:8},children:[b(f)," schuiven mee: alles wat open staat of blijft hangen. ",b(y)," blijven in ronde ",m," staan. Er wordt niets verwijderd en geen status verandert."]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,alignItems:"center",marginTop:10,flexWrap:"wrap"},children:[(0,t.jsx)("button",{style:s,onClick:k,disabled:d,children:d?"Bezig…":`Sluit ronde ${m}`}),(0,t.jsx)("button",{style:o,onClick:()=>{r(!1),h("")},children:"Annuleer"}),g?(0,t.jsx)("span",{style:{color:"var(--orange-deep)",fontSize:13.5,fontWeight:600},children:g}):null]})]}):(0,t.jsxs)("div",{style:{marginTop:12},children:[(0,t.jsxs)("button",{style:{...o,display:"inline-flex",alignItems:"center",gap:6},onClick:()=>{x(null),h(""),r(!0)},children:[(0,t.jsx)(D,{name:"redo",size:14}),"Sluit ronde ",m,"…"]}),j?(0,t.jsx)("p",{style:{...p,marginTop:8,lineHeight:1.45},children:j}):null,g?(0,t.jsx)("p",{style:{color:"var(--orange-deep)",fontSize:13.5,marginTop:8},children:g}):null]})}function X({tile:e,origin:a,headers:i,punten:l,onClose:s,onPatch:g,onDeleted:u,onHerlaad:y}){let[w,S]=(0,n.useState)(e.notities||""),[T,z]=(0,n.useState)(!1),[$,O]=(0,n.useState)(!1),[N,U]=(0,n.useState)(!1),E=e.contact||{},H=R(e),V=e.intake||null,J=e.fixed||0,q=Math.max(0,(e.total||0)-(e.open||0)-J),Y=(E.naam||"").trim().split(/\s+/)[0]||"daar",Q=`https://zazu-intake.vercel.app/?klant=${e.slug}`,ee=M(e,a),et=`${a}/go/${e.adminToken}`,en=`<script defer src="${a}/overlay.js"></script>`,ea=[...e.log||[]].reverse().slice(0,8),ei=j(e);(0,n.useEffect)(()=>{let e=e=>{"Escape"===e.key&&s()};return window.addEventListener("keydown",e),document.body.style.overflow="hidden",()=>{window.removeEventListener("keydown",e),document.body.style.overflow=""}},[]);let el=async e=>{U(!0),await g({phase:e},{phase:e}),U(!1)},er=async()=>{await g({notities:w},{notities:w}),z(!0),setTimeout(()=>z(!1),1800)},es=async()=>{O(!0),await g({intakeSent:!e.intakeSentAt||"again"},{intakeSentAt:new Date().toISOString()}),O(!1)},eo=E.email?A(E.email,`Intake voor ${e.name}`,`Hoi ${Y},
2
3Leuk dat we aan de slag gaan met ${e.name}. Om goed te kunnen starten heb ik een korte intake voor je klaargezet. Invullen kost je ongeveer vijf minuten.
4
5${Q}
6
7Kom je ergens niet uit? Stuur me gerust een berichtje.
8
9Groet,
10Stefan van Zazu`):"",ed=E.email?A(E.email,`Demo van ${e.name} staat klaar`,`Hoi ${Y},
11
12De eerste versie van ${e.name} staat online. Bekijken en direct feedback geven doe je via deze link:
13
14${ee}
15
16Zo werkt het: je ziet de site met een feedbackknop in beeld. Klik op de plek waar je iets van vindt, typ je opmerking en klaar. Alles komt direct bij mij terecht.
17
18Groet,
19Stefan van Zazu`):"";return(0,t.jsx)("div",{onClick:s,style:{position:"fixed",inset:0,zIndex:60,background:"rgba(20, 17, 14, 0.35)",display:"flex",justifyContent:"flex-end"},children:(0,t.jsxs)("div",{onClick:e=>e.stopPropagation(),style:{width:"min(620px, 100%)",height:"100%",overflowY:"auto",background:"var(--paper)",borderLeft:"1px solid var(--line)",boxShadow:"-18px 0 50px rgba(20, 17, 14, 0.14)",padding:"26px 26px 80px"},children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10},children:[(0,t.jsx)("h2",{style:{fontSize:"1.3rem",fontWeight:800,letterSpacing:"-0.02em",flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.name}),(0,t.jsx)("select",{value:k(e),onChange:e=>el(e.target.value),disabled:N,style:c,title:"Fase",children:f.map(([e,n])=>(0,t.jsx)("option",{value:e,children:n},e))}),(0,t.jsx)(L,{icon:"sluit",title:"Sluiten",onClick:s})]}),(0,t.jsxs)(F,{title:"Links",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,t.jsx)("span",{style:{...h,flex:"none"},children:"URL"}),(0,t.jsx)("div",{style:{flex:1,minWidth:220},children:(0,t.jsx)(P,{value:e.deployUrl||"",placeholder:"https://project.vercel.app",onSave:e=>g({deployUrl:e},{deployUrl:e.replace(/\/+$/,"")})})})]}),(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:12},children:[(0,t.jsx)(B,{text:ee,style:{background:"var(--orange)",color:"var(--orange-ink)",border:0,fontWeight:700},children:"Kopieer klantlink"}),e.deployUrl?(0,t.jsxs)(t.Fragment,{children:[ed?(0,t.jsx)("a",{href:ed,style:{...o,textDecoration:"none"},children:"Mail reviewlink"}):null,(0,t.jsx)(_,{href:e.deployUrl,children:"Open site"}),(0,t.jsx)(_,{href:et,children:"Adminlink"})]}):null]}),e.deployUrl?(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",marginTop:8},children:[(0,t.jsx)(B,{text:en,children:"Snippet"}),(0,t.jsx)(_,{href:`${a}/v/${e.clientToken}`,children:"Viewer"}),(0,t.jsx)(_,{href:`${a}/api/export?token=${e.adminToken}`,children:"Export"})]}):(0,t.jsx)("p",{style:{...p,marginTop:10},children:"Vul de site-URL in voor de site zelf, snippet en de overige reviewacties."})]}),e.deployUrl?(0,t.jsx)(F,{title:"Resultaten",children:(0,t.jsxs)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(88px, 1fr))",gap:8},children:[(0,t.jsx)(K,{n:e.open||0,label:"Open",tone:(e.open||0)>0?"var(--orange-deep)":"var(--ink-faint)"}),(0,t.jsx)(K,{n:J,label:"Gefixt",tone:J>0?x:"var(--ink-faint)"}),(0,t.jsx)(K,{n:q,label:"Opgelost",tone:q>0?m:"var(--ink-faint)"}),(0,t.jsx)(K,{n:e.approvals||0,label:"Akkoord",tone:(e.approvals||0)>0?"var(--ink)":"var(--ink-faint)"}),(0,t.jsx)(K,{n:e.reviews||0,label:"Reviews",tone:(e.reviews||0)>0?"var(--ink)":"var(--ink-faint)"})]})}):null,(0,t.jsxs)(F,{title:"Ronde",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap"},children:[(0,t.jsxs)("span",{style:{...d,textTransform:"uppercase",letterSpacing:"0.05em"},children:["Ronde ",v(e)]}),(0,t.jsx)("span",{style:p,children:ei.length?`${ei.length} afgesloten ronde${1===ei.length?"":"n"}`:"Nog geen afgesloten rondes"})]}),ei.length?(0,t.jsx)("div",{style:{display:"grid",gap:7,marginTop:10},children:ei.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"baseline"},children:[(0,t.jsxs)("span",{style:{...h,fontSize:10.5,flex:"none",width:62},children:["Ronde ",e.nr??n+1]}),(0,t.jsx)("span",{style:{...p,fontSize:12,flex:"none",width:92},children:I(e.geslotenAt)}),(0,t.jsx)("span",{style:{fontSize:13,color:"var(--ink-soft)"},children:b(e.aantal||0)})]},e.nr??n))}):null,(0,t.jsx)(Z,{tile:e,punten:l,onGesloten:y})]}),(0,t.jsxs)(F,{title:"Contact & notities",children:[(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:10},children:[["naam","Naam","naam toevoegen"],["email","E-mail","e-mail toevoegen"],["telefoon","Telefoon","nummer toevoegen"]].map(([e,n,a])=>(0,t.jsxs)("div",{children:[(0,t.jsx)("span",{style:{...h,display:"block",marginBottom:3},children:n}),(0,t.jsx)(P,{value:E[e]||"",placeholder:a,onSave:t=>{let n;g({contact:n={...E,[e]:t}},{contact:n})}})]},e))}),(0,t.jsxs)("div",{style:{marginTop:14},children:[(0,t.jsx)("textarea",{value:w,onChange:e=>S(e.target.value),rows:3,placeholder:"Vrij veld: afspraken, context, wensen",style:{...r,resize:"vertical",fontFamily:"inherit",fontSize:13.5,lineHeight:1.45}}),(0,t.jsx)("div",{style:{marginTop:6},children:(0,t.jsx)("button",{style:{...o,display:"inline-flex",alignItems:"center",gap:6},onClick:er,children:T?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(D,{name:"vink",size:14}),"Opgeslagen"]}):"Opslaan"})})]})]}),"intake"===k(e)?(0,t.jsxs)(F,{title:"Intake",children:[(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"}
19,children:[(0,t.jsxs)("span",{style:{...d,background:H.wash,color:H.deep,textTransform:"uppercase",letterSpacing:"0.05em"},children:[H.label,H.date?` \xb7 ${W(H.date)}`:""]}),"ontvangen"===H.key&&V?.type?(0,t.jsx)("span",{style:d,children:V.type}):null]}),"ontvangen"===H.key&&V?.samenvatting?(0,t.jsx)("p",{style:{fontSize:13.5,lineHeight:1.5,color:"var(--ink-soft)",marginTop:10,background:"var(--wash)",borderRadius:10,padding:"9px 12px"},children:V.samenvatting}):null,(0,t.jsxs)("div",{style:{display:"flex",gap:8,flexWrap:"wrap",alignItems:"center",marginTop:12},children:[(0,t.jsx)(B,{text:Q,children:"Kopieer intake-link"}),eo?(0,t.jsx)("a",{href:eo,style:{...o,textDecoration:"none"},children:"Mail intake"}):(0,t.jsx)("span",{style:p,children:"Geen e-mail bij contact"}),"ontvangen"!==H.key?(0,t.jsx)("button",{style:o,onClick:es,disabled:$,children:$?"Bezig…":e.intakeSentAt?"Markeer opnieuw verstuurd":"Markeer verstuurd"}):null]})]}):null,(0,t.jsx)(F,{title:"Tijdlijn",children:ea.length?(0,t.jsx)("div",{style:{display:"grid",gap:7},children:ea.map((e,n)=>(0,t.jsxs)("div",{style:{display:"flex",gap:10,alignItems:"baseline"},children:[(0,t.jsx)("span",{style:{...p,fontSize:12,flex:"none",width:92},children:I(e.at)}),(0,t.jsx)("span",{style:{...h,fontSize:10.5,flex:"none"},children:C[e.type]||e.type||""}),e.text?(0,t.jsx)("span",{style:{fontSize:13,color:"var(--ink-soft)",minWidth:0,wordBreak:"break-word"},children:e.text}):null]},n))}):(0,t.jsx)("p",{style:{...p,margin:0},children:"Nog geen activiteit."})}),(0,t.jsx)(F,{title:"Verwijderen",children:(0,t.jsx)(G,{tile:e,headers:i,onDeleted:u})})]})})}e.s(["default",0,function(){let[e,l]=(0,n.useState)(null),[d,c]=(0,n.useState)("team"),[g,u]=(0,n.useState)(""),[x,y]=(0,n.useState)(""),[b,C]=(0,n.useState)(""),[R,A]=(0,n.use
19State)(""),[N,D]=(0,n.useState)(""),[_,B]=(0,n.useState)([]),[P,F]=(0,n.useState)([]),[K,G]=(0,n.useState)(!1),[Z,q]=(0,n.useState)(null),[Y,Q]=(0,n.useState)(!1),[ee,et]=(0,n.useState)(null),[en,ea]=(0,n.useState)("");async function ei(e){G(!0);let t=await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({magicToken:e})}).then(e=>e.json().then(t=>({ok:e.ok,d:t}))).catch(()=>null);(G(!1),t&&t.ok)?(localStorage.setItem("pb_session",t.d.token),localStorage.setItem("pb_naam",t.d.naam||""),er({mode:"team",secret:t.d.token,naam:t.d.naam||""})):A(t?.d?.error||"Loginlink is verlopen of al gebruikt")}async function el(){g.trim()?(G(!0),A(""),D(""),await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:g,magic:!0})}).catch(()=>null),G(!1),D("Loginlink onderweg naar je mail (als dit account bestaat). De link is 15 minuten geldig.")):A("Vul eerst je e-mailadres in")}function er(e){G(!0),fetch("/api/inbox",{headers:O(e)}).then(t=>{if(!t.ok)throw Error("team"===e.mode?"Sessie verlopen; log opnieuw in.":"Ongeldige key");return t.json()}).then(t=>{"master"===e.mode&&localStorage.setItem("pb_master",e.secret),l(e),A(""),B(t.tiles),F(t.inbox),fetch("/api/projects",{headers:O(e)}).then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e.projects))return;let t={};for(let n of e.projects)t[n.slug]={ronde:v(n),rondes:j(n)};B(e=>e.map(e=>({...e,...t[e.slug]||{}})))}).catch(()=>null),setTimeout(()=>localStorage.setItem("pb_admin_lastseen",new Date().toISOString()),4e3)}).catch(t=>{"team"===e.mode&&e.opgeslagen&&(localStorage.removeItem("pb_session"),localStorage.removeItem("pb_naam")),A(e.opgeslagen?"":t.message)}).finally(()=>G(!1))}(0,n.useEffect)(()=>{ea(window.location.origin),q(localStorage.getItem("pb_admin_lastseen"));let e=new URLSearchParams(window.location.search),t=e.get("klant"),n=e.get("ml");t&&et(t),(t||n)&&window.history.replaceState(null,"","/admin");let a=localStorage.getItem("pb_session"),i=localStorage.getItem("pb_master");n?ei(n):a?er({mode:"team",secret:a,naam:localStorage.getItem("pb_naam")||"",opgeslagen:!0}):i&&er({mode:"master",secret:i,opgeslagen:!0})},[]);let es=()=>e&&er(e);async function eo(e){e.preventDefault(),G(!0),A("");let t=await fetch("/api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:g,password:x})}).then(e=>e.json().then(t=>({ok:e.ok,d:t}))).catch(()=>null);(G(!1),t&&t.ok)?(localStorage.setItem("pb_session",t.d.token),localStorage.setItem("pb_naam",t.d.naam||""),y(""),er({mode:"team",secret:t.d.token,naam:t.d.naam||""})):A(t?.d?.error||"Inloggen mislukte")}let ed=async(t,n,a)=>{a&&B(e=>e.map(e=>e.slug===t?{...e,...a}:e)),await fetch("/api/projects",{method:"PATCH",headers:{"Content-Type":"application/json",...O(e)},body:JSON.stringify({slug:t,...n})}).catch(()=>null),es()},ep=(0,n.useMemo)(()=>{let e=[];for(let t of P){let n=t.device&&"desktop"!==t.device?`/v/${t.adminToken}?d=${t.device}&p=${encodeURIComponent(t.path)}&pt=${t.id}`:`${en}/go/${t.adminToken}?path=${encodeURIComponent(t.path)}&pt=${t.id}`;e.push({at:t.createdAt,klant:t.projectName,tekst:t.text,status:t.status,link:n,auteur:t.author})}for(let t of _)for(let n of t.log||[])"review_finished"===n.type&&e.push({at:n.at,klant:t.name,tekst:n.text?`Review klaar: ${n.text}`:"Review klaar",log:!0}),"intake_received"===n.type&&e.push({at:n.at,klant:t.name,tekst:"Intake ontvangen",log:!0});return e.sort((e,t)=>e.at<t.at?1:-1).slice(0,20)},[P,_,en]);if(!e)return(0,t.jsxs)("main",{style:{...a,maxWidth:420,padding:"120px 24px"},children:[(0,t.jsx)("h1",{style:i,children:"Prikbord"}),"team"===d?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{style:{color:"var(--ink-soft)",marginTop:6},children:"Log in met je Zazu-account."}),(0,t.jsxs)("form",{onSubmit:eo,style:{marginTop:20,display:"grid",gap:10},children:[(0,t.jsx)("input",{style:r,type:"email",autoComplete:"username",value:g,onChange:e=>u(e.target.value),placeholder:"[email protected]"}),(0,t.jsx)("input",{style:r,type:"password",autoComplete:"current-password",value:x,onChange:e=>y(e.target.value),placeholder:"Wachtwoord"}),(0,t.jsx)("button",{style:s,type:"submit",disabled:K,children:K?"Bezig…":"Inloggen"}),(0,t.jsx)("button",{style:o,type:"button",onClick:el,disabled:K,children:"Mail me een loginlink"}),R?(0,t.jsx)("p",{style:{color:"var(--orange-deep)",fontSize:14},children:R}):null,N?(0,t.jsx)("p",{style:{fontSize:13.5,color:"var(--ink-soft)",background:"var(--wash)",borderRadius:10,padding:"9px 12px",lineHeight:1.45},children:N}):null]})]}):(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("p",{style:{color:"var(--ink-soft)",marginTop:6},children:"Log in met je master key."}),(0,t.jsxs)("form",{onSubmit:e=>{e.preventDefault(),er({mode:"master",secret:b})},style:{marginTop:20,display:"grid",gap:10},children:[(0,t.jsx)("input",{style:r,type:"password",value:b,onChange:e=>C(e.target.value),placeholder:"Master key"}),(0,t.jsx)("button",{style:s,type:"submit",disabled:K,children:K?"Bezig…":"Inloggen"}),R?(0,t.jsx)("p",{style:{color:"var(--orange-deep)",fontSize:14},children:R}):null]})]}),(0,t.jsx)("button",{onClick:()=>{c("team"===d?"master":"team"),A("")},style:{background:"none",border:0,marginTop:18,color:"var(--ink-faint)",fontSize:13,textDecoration:"underline",cursor:"pointer",padding:0},children:"team"===d?"Inloggen met master key":"Inloggen met e-mail"})]});let ec=_.reduce((e,t)=>
19e+(t.open||0),0),eg=Z?P.filter(e=>e.createdAt>Z).length:0,eh=_.find(e=>e.slug===ee)||null;return(0,t.jsxs)("main",{style:a,children:[(0,t.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",flexWrap:"wrap",gap:12},children:[(0,t.jsx)("h1",{style:i,children:"Prikbord"}),(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:14,flexWrap:"wrap"},children:[(0,t.jsxs)("span",{style:p,children:[(0,t.jsxs)("b",{style:{color:ec?"var(--orange-deep)":"var(--ink-faint)",fontSize:15},children:[ec," open"]}),eg?(0,t.jsxs)("b",{style:{color:"var(--orange-deep)"},children:[" · ",eg," nieuw sinds je laatste bezoek"]}):null," ","· ",_.length," klanten",e.naam?` \xb7 ${e.naam}`:""]}),(0,t.jsx)(V,{headers:O(e)}),(0,t.jsx)("button",{style:o,onClick:function(){e?.mode==="team"?(fetch("/api/login",{method:"DELETE",headers:{"X-Session":e.secret}}).catch(()=>null),localStorage.removeItem("pb_session"),localStorage.removeItem("pb_naam")):localStorage.removeItem("pb_master"),l(null),u(""),y(""),C(""),A("")},title:"Uitloggen op dit apparaat",children:"Uitloggen"}),(0,t.jsx)("button",{style:s,onClick:()=>Q(!Y),children:"+ Nieuwe klant"})]})]}),Y?(0,t.jsx)(J,{headers:O(e),onCancel:()=>Q(!1),onCreated:e=>{Q(!1),et(e),es()}}):null,(()=>{let e=[],n=new Set,a=(t,a)=>{n.has(t.slug)||(n.add(t.slug),e.push({...a,slug:t.slug,naam:t.name||t.slug}))},i={review:"polish",polish:"live"};for(let e of _)(e.log||[]).some(e=>"review_finished"===e.type&&(!Z||e.at>Z))&&a(e,{cap:"Review klaar",kleur:w,num:e.open,sub:"open",icon:"extern",titel:"Open kaart",doe:()=>et(e.slug)});for(let e of _)Z&&e.lastActivity>Z&&e.open>0&&a(e,{cap:"Nieuwe feedback",kleur:S,num:e.open,sub:"open",icon:"extern",titel:"Open kaart",doe:()=>et(e.slug)});for(let e of _)"intake"===k(e)&&e.intakeReceivedAt&&a(e,{cap:"Intake binnen",kleur:S,sub:e.intake?.type||"",icon:"extern",titel:"Open kaart",doe:()=>et(e.slug)});for(let e of[..._].sort((e,t)=>t.open-e.open))"review"===k(e)&&e.open>0&&a(e,{cap:"Te verwerken",kleur:T,num:e.open,sub:"open",icon:"extern",titel:"Open kaart",doe:()=>et(e.slug)});for(let e of _)if(e.fixed>0&&0===e.open&&e.deployUrl){let t=$(e.lastActivity);a(e,{cap:"Wacht op klant",kleur:T,num:e.fixed,sub:`gefixt${t>1?`, ${t} dagen stil`:""}`,copy:M(e,en),titel:"Kopieer klantlink"})}for(let e of _)["review","polish"].includes(k(e))&&e.deployUrl&&$(e.lastActivity)>7&&a(e,{cap:"Stil",kleur:z,sub:`sinds ${W(e.lastActivity)}`,copy:M(e,en),titel:"Kopieer klantlink"});for(let e of _){let t=i[k(e)];t&&e.total>0&&0===e.open&&0===e.fixed&&a(e,{cap:"Schoon",kleur:z,sub:"0 open",icon:"redo",titel:`Door naar ${t}`,doe:()=>ed(e.slug,{phase:t},{phase:t})})}let l=e.slice(0,6);return l.length?(0,t.jsxs)("section",{style:{marginTop:20},children:[(0,t.jsx)(E,{label:"Nu nodig",n:l.length,style:{margin:"0 0 10px"}}),(0,t.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:6,background:"var(--wash)",borderRadius:14,padding:6},children:l.map(e=>(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"10px 12px",background:"var(--paper)",border:"1px solid var(--line)",borderRadius:10,minWidth:0},children:[(0,t.jsx)("span",{style:{flex:"none",width:36,textAlign:"center"},children:null!=e.num?(0,t.jsx)("span",{style:{fontSize:22,fontWeight:800,letterSpacing:"-0.02em",lineHeight:1,color:e.kleur.deep},children:e.num}):(0,t.jsx)("span",{style:{display:"inline-block",width:10,height:10,borderRadius:99,background:e.kleur.deep}})}),(0,t.jsxs)("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"baseline",gap:8,overflow:"hidden"},children:[(0,t.jsx)("strong",{style:{fontSize:14.5,fontWeight:800,whiteSpace:"nowrap"},children:e.naam}),(0,t.jsx)("span",{style:{...h,fontSize:10.5,color:e.kleur.deep,whiteSpace:"nowrap"},children:e.cap}),e.sub?(0,t.jsx)("span",{style:{fontSize:12.5,color:"var(--ink-faint)",fontWeight:600,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.sub}):null]}),e.copy?(0,t.jsx)(U,{text:e.copy,title:e.titel}):(0,t.jsx)(L,{icon:e.icon,title:e.titel,onClick:e.doe})]},e.slug))})]}):null})(),(0,t.jsxs)("div",{style:{marginTop:8},children:[f.map(([e,n])=>{let a=_.filter(t=>k(t)===e);return a.length?(0,t.jsxs)("section",{children:[(0,t.jsx)(E,{label:n,n:a.length,style:{margin:"30px 0 12px"}}),(0,t.jsx)("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(200px, 1fr))",gap:10},children:a.map(e=>(0,t.jsx)(H,{tile:e,isNew:Z&&e.lastActivity>Z,onOpen:()=>et(e.slug),origin:en},e.slug))})]},e):null}),_.length?null:(0,t.jsx)("p",{style:{...p,marginTop:30},children:"Nog geen klanten. Maak je eerste aan met de knop hierboven."})]}),ep.length?(0,t.jsxs)("section",{style:{marginTop:40},children:[(0,t.jsx)(E,{label:"Wat er gebeurt",n:ep.length}),(0,t.jsx)("div",{style:{display:"grid",gap:4,marginTop:12},children:ep.map((e,n)=>{let a=Z&&e.at>Z,i=e.log?"var(--ink-faint)":"open"===e.status?"var(--orange)":"fixed"===e.status?"#FBBF24":"resolved"===e.status?m:"var(--line)";return(0,t.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:10,padding:"6px 10px",borderRadius:10,background:a?"var(--orange-wash)":"transparent",minWidth:0},children:[(0,t.jsx)("span",{title:e.log?"":e.status,style:{flex:"none",width:8,height:8,borderRadius:99,background:i}}),(0,t.jsx)("span",{style:{fontSize:13,fontWeight:700,flex:"none",maxWidth:150,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:e.klant}),(0,t.jsx)("span",{title:e.auteur?`door ${e.auteur}`:"",style:{fontSize:13.5,color:e.log?"var(--ink-faint)":"var(--ink-soft)",fontStyle:e.log?"italic":"normal",minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:1},children:e.tekst}),e.link?(0,t.jsx)(L,{icon:"extern",title:"Bekijk op de site",href:e.link,small:!0,plain:!0}):(0,t.jsx)("span",{style:{flex:"none",width:28}}),(0,t.jsx)("span",{style:{...p,fontSize:12,flex:"none",width:92,textAlign:"right",fontVariantNumeric:"tabular-nums"},children:I(e.at)})]},n)})})]}):null,eh?(0,t.jsx)(X,{tile:eh,origin:en,headers:O(e),punten:P.filter(e=>e.projectSlug===eh.slug),onClose:()=>et(null),onPatch:(e,t)=>ed(eh.slug,e,t),onDeleted:()=>{et(null),es()},onHerlaad:es},eh.slug):null]})}])}]);

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.