PageSourceSearch

https://buckettys.com.au/assets/booking-calendar-C9UhyzEM.js

js buckettys.com.au collected 2026-10-04 20:59:09 UTC 20,223 bytes, 18 lines download raw bytes

1import{i as ie,A as ce,u as V,r as m,k as G,j as e,D as he,m as ge,n as ye,p as fe,q as be,c as H,h as O,I,v as je,B as $,y as ve,C as ke,d as De,e as we,aE as Ne,as as Se,g as Pe,z as Y,b_ as ee,K as te,X as Z}from"./index-CLsVjUEP.js";import{f as se}from"./pricing-BYmv5Kq5.js";import _e from"./booking-details-modal-Xv8RfaBk.js";import{g as w}from"./staff-dashboard-page-uVwxVDpr.js";import{C as ae}from"./calendar-CMj9bFb6.js";import{U as re}from"./users-DMVh16ZZ.js";import"./checkbox-B8G-ncAz.js";import"./textarea-D4pf2qWA.js";import"./radio-group-C_dRflPN.js";import"./index-a_vTPfhM.js";import"./circle-CwujxWP4.js";import"./alert-dialog-B9M004GQ.js";import"./customer-details-modal-D0bytNLr.js";import"./mail-BoC73zxf.js";import"./sparkles-C0irpdfK.js";import"./circle-dot-DDz425NJ.js";import"./save-DIphrqo5.js";import"./phone-Bp26UHOw.js";import"./clock-CPWL5_4I.js";import"./trash-2-DijQlxkA.js";import"./message-square-DXqvkvbN.js";import"./refresh-cw-DueIE6y0.js";import"./dollar-sign-BZcTk_uR.js";import"./rotate-ccw-9jiJwTkY.js";import"./credit-card-CmMp3NdH.js";import"./history-hSsfGFii.js";import"./file-text-BxjSon1V.js";import"./room-hire-CRtkwBbH.js";import"./tabs-CjZJTiyn.js";import"./formatDistanceToNow-Dawduvhs.js";import"./differenceInMilliseconds-DGhl5_Eo.js";import"./ticket-BKHVfCOQ.js";import"./heart-BedGe3YB.js";import"./search-uUygtomf.js";import"./staff-calendar-Dr_AT00F.js";import"./event-image-upload-D8Ua4z6i.js";import"./event-draft-preview-DrfWRYsg.js";import"./event-description-Cej2Z34W.js";import"./switch-BJzQxi9-.js";import"./upload-CUjuml_o.js";import"./grip-vertical-BuC2_04n.js";import"./pencil-BSJG_kQW.js";import"./calendar-plus-BFgZWskC.js";import"./undo-2-DI5t7vMZ.js";import"./event-html-editor-DeQVTN8u.js";import"./external-link-C7C76T6P.js";import"./image-plus-Omr1NA25.js";import"./chart-column-BTcmWaYs.js";import"./activity-BTDQ_j0k.js";import"./package-CXI4ZM-9.js";import"./banknote-BQjK0agG.js";import"./qr-code-DxbUVKXf.js";import"./arrow-up-D6xIXWaK.js";import"./tag-atVGBrNh.js";import"./link-2-CznryKyb.js";import"./wallet-DZBWOW06.js";import"./gift-B1P0gyKy.js";import"./generateCategoricalChart-DWjh69gp.js";function Ce({open:K,onOpenChange:v,date:p}){const{toast:S}=ie(),P=ce(),{data:n,isLoading:F}=V({queryKey:["/api/pricing/date",p],queryFn:async()=>{if(!p)return null;const a=await fetch(`/api/pricing/date/${p}`);if(!a.ok)throw new Error("Failed to fetch pricing");return a.json()},enabled:!!p&&K}),[y,q]=m.useState(""),[T,k]=m.useState(""),[M,B]=m.useState(""),[E,A]=m.useState(""),[_,L]=m.useState("");m.useEffect(()=>{n&&(q(n.karaoke_offpeak_price||""),k(n.karaoke_peak_price||""),B(n.pool_member_price||""),A(n.pool_nonmember_price||""),L(n.pool_peak_surcharge||""))},[n]);const f=G({mutationFn:async a=>{const C=await fetch("/api/pricing/date",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!C.ok){const R=await C.json();throw new Error(R.message||"Failed to save pricing")}return C.json()},onSuccess:()=>{S({title:"Pricing Updated",description:"Date-specific pricing has been saved successfully."}),P.invalidateQueries({queryKey:["/api/pricing/date",p]}),v(!1)},onError:a=>{S({variant:"destructive",title:"Error",description:a.message||"Failed to save pricing"})}}),b=G({mutationFn:async()=>{const a=await fetch(`/api/pricing/date/${p}`,{method:"DELETE"});if(!a.ok){const C=await a.json();throw new Error(C.message||"Failed to reset pricing")}return a.json()},onSuccess:()=>{S({title:"Pricing Reset",description:"Date-specific pricing has been removed. Using default pricing."}),P.invalidateQueries({queryKey:["/api/pricing/date",p]}),v(!1)},onError:a=>{S({variant:"destructive",title:"Error",description:a.message||"Failed to reset pricing"})}}),W=()=>{if(!p)return;const a={date:p};y&&(a.karaoke_offpeak_price=parseFloat(y).toFixed(2)),T&&(a.karaoke_peak_price=parseFloat(T).toFixed(2)),M&&(a.pool_member_price=parseFloat(M).toFixed(2)),E&&(a.pool_nonmember_price=parseFloat(E).toFixed(2)),_&&(a.pool_peak_surcharge=parseFloat(_).toFixed(2)),f.mutate(a)},U=()=>{p&&confirm("Are you sure you want to reset pricing to defaults for this date?")&&b.mutate()},z=p?new Date(p+"T00:00:00").toLocaleDateString("en-AU",{weekday:"long",year:"numeric",month:"long",day:"numeric"}):"";return e.jsx(he,{open:K,onOpenChange:v,children:e.jsxs(ge,{className:"max-w-2xl max-h-[90vh] overflow-y-auto",children:[e.jsxs(ye,{children:[e.jsxs(fe,{children:["Pricing Override for ",z]}),e.jsx(be,{children:"Set custom pricing for this specific date. Leave fields empty to use default pricing."})]}),F?e.jsx("div",{className:"flex items-center justify-center p-8",children:e.jsx(H,{className:"w-6 h-6 animate-spin"})}):e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-semibold text-lg border-b pb-2",children:"Karaoke Room Pricing"}),e.jsx("p",{className:"text-sm text-gray-500",children:"Per person per hour"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"karaoke-offpeak",children:"Off-Peak Price ($)"}),e.jsx(I,{id:"karaoke-offpeak",type:"number",step:"0.01",min:"0",placeholder:n!=null&&n.is_default?"10.00 (default)":"10.00",value:y,onChange:a=>q(a.target.value),"data-testid":"input-karaoke-offpeak"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"karaoke-peak",children:"Peak Price ($)"}),e.jsx(I,{id:"karaoke-peak",type:"number",step:"0.01",min:"0",placeholder:n!=null&&n.is_default?"20.00 (default)":"20.00",value:T,onChange:a=>k(a.target.value),"data-testid":"input-karaoke-peak"})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"font-semibold text-lg border-b pb-2",children:"Pool Table Pricing"}),e.jsx("p",{className:"text-sm text-gray-500",children:"Per hour"}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"pool-member",children:"Member Price ($)"}),e.jsx(I,{id:"pool-member",type:"number",step:"0.01",min:"0",placeholder:n!=null&&n.is_default?"20.00 (default)":"20.00",value:M,onChange:a=>B(a.target.value),"data-testid":"input-pool-member"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"pool-nonmember",children:"Non-Member Price ($)"}),e.jsx(I,{id:"pool-nonmember",type:"number",step:"0.01",min:"0",placeholder:n!=null&&n.is_default?"25.00 (default)":"25.00",value:E,onChange:a=>A(a.target.value),"data-testid":"input-pool-nonmember"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(O,{htmlFor:"pool-peak-surcharge",children:"Peak Time Surcharge ($)"}),e.jsx(I,{id:"pool-peak-surcharge",type:"number",step:"0.01",min:"0",placeholder:n!=null&&n.is_default?"5.00 (default)":"5.00",value:_,onCh
1ange:a=>L(a.target.value),"data-testid":"input-pool-peak-surcharge",className:"w-full md:w-1/2"}),e.jsx("p",{className:"text-xs text-gray-500",children:"Added to base price during peak times (Fri/Sat after 5pm)"})]})]})]}),e.jsxs(je,{className:"gap-2",children:[!(n!=null&&n.is_default)&&e.jsxs($,{variant:"outline",onClick:U,disabled:b.isPending,"data-testid":"button-reset-pricing",children:[b.isPending&&e.jsx(H,{className:"w-4 h-4 mr-2 animate-spin"}),"Reset to Defaults"]}),e.jsx($,{variant:"outline",onClick:()=>v(!1),"data-testid":"button-cancel",children:"Cancel"}),e.jsxs($,{onClick:W,disabled:f.isPending,"data-testid":"button-save-pricing",children:[f.isPending&&e.jsx(H,{className:"w-4 h-4 mr-2 animate-spin"}),"Save Pricing"]})]})]})})}const oe={rockstar:"bg-red-100 border-red-300 text-red-800",grandmas:"bg-blue-100 border-blue-300 text-blue-800","childrens-party":"bg-green-100 border-green-300 text-green-800"},ne={pending:"bg-yellow-100 text-yellow-800",confirmed:"bg-blue-100 text-blue-800",checked_in:"bg-green-100 text-green-800",completed:"bg-gray-100 text-gray-800",cancelled:"bg-red-100 text-red-800"};function Bt({className:K=""}){const[v,p]=m.useState(new Date),[S,P]=m.useState(null),[n,F]=m.useState(!1),[y,q]=m.useState(null),[T,k]=m.useState(!1),[M,B]=m.useState(!1),[E,A]=m.useState(null),{toast:_}=ie(),L=ce(),{startDate:f,endDate:b,daysInMonth:W}=m.useMemo(()=>{const t=new Date(v);t.setHours(0,0,0,0);const r=t.getDay();t.setDate(t.getDate()-r);const i=new Date(t);i.setDate(i.getDate()+41);const c=[],s=new Date(t);for(;s<=i;)c.push(new Date(s)),s.setDate(s.getDate()+1);return{startDate:t,endDate:i,daysInMonth:c}},[v]),{data:U=[],isLoading:z}=V({queryKey:["/api/staff/bookings/calendar",w(f),w(b)],queryFn:async()=>{const t=w(f),r=w(b),i=await fetch(`/api/staff/bookings/calendar?startDate=${t}&endDate=${r}`);if(!i.ok)throw new Error("Failed to fetch bookings");return i.json()}}),{data:a=[],isLoading:C}=V({queryKey:["/api/room-blocks",w(f),w(b)],queryFn:async()=>{const t=w(f),r=w(b),i=await fetch(`/api/room-blocks?startDate=${t}&endDate=${r}`);if(!i.ok)throw new Error("Failed to fetch room blocks");return i.json()}}),R=m.useMemo(()=>{const t={};return U.forEach(r=>{var u,d,g,x;const i=new Date(r.start_time),c=new Intl.DateTimeFormat("en-US",{timeZone:"Australia/Sydney",year:"numeric",month:"2-digit",day:"2-digit",weekday:"short"}).formatToParts(i),s=(u=c.find(h=>h.type==="year"))==null?void 0:u.value,D=(d=c.find(h=>h.type==="month"))==null?void 0:d.value,j=(g=c.find(h=>h.type==="day"))==null?void 0:g.value;(x=c.find(h=>h.type==="weekday"))==null||x.value;const l=new Date(parseInt(s),parseInt(D)-1,parseInt(j)).toDateString();t[l]||(t[l]=[]),t[l].push(r)}),t},[U]),Q=m.useMemo(()=>{const t={};return a.forEach(r=>{var u,d,g;const i=new Date(r.start_time),c=new Intl.DateTimeFormat("en-US",{timeZone:"Australia/Sydney",year:"numeric",month:"2-digit",day:"2-digit"}).formatToParts(i),s=(u=c.find(x=>x.type==="year"))==null?void 0:u.value,D=(d=c.find(x=>x.type==="month"))==null?void 0:d.value,j=(g=c.find(x=>x.type==="day"))==null?void 0:g.value,l=new Date(parseInt(s),parseInt(D)-1,parseInt(j)).toDateString();t[l]||(t[l]=[]),t[l].push(r)}),t},[a]),le=G({mutationFn:async t=>(await ve("DELETE",`/api/room-blocks/${t}`,{})).json(),onSuccess:()=>{L.invalidateQueries({queryKey:["/api/room-blocks"]}),L.invalidateQueries({queryKey:["/api/staff/bookings/calendar"]}),_({title:"Block Removed",description:"Room block has been removed successfully"})},onError:t=>{_({title:"Error",description:t.message||"Failed to remove room block",variant:"destructive"})}}),J=(t,r)=>{r.stopPropagation(),confirm("Are you sure you want to remove this room block?")&&le.mutate(t)},X=t=>{const r=new Date(v);t==="prev"?r.setDate(r.getDate()-7):r.setDate(r.getDate()+7),p(r)},de=()=>{p(new Date)},me=t=>{const r=new Date;return t.toDateString()===r.toDateString()},pe=t=>{const r=new Date;r.setHours(0,0,0,0);const i=new Date(r);i.setDate(r.getDate()-r.getDay());const c=new Date(i);return c.setDate(i.getDate()+6),t>=i&&t<=c},N=t=>new Date(t).toLocaleTimeString("en-AU",{hour:"numeric",minute:"2-digit",hour12:!0}),ue=t=>{P(t),F(!0)},xe=()=>{F(!1),P(null)};return e.jsxs(ke,{className:K,children:[e.jsxs(De,{children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs(we,{className:"flex items-center",children:[e.jsx(ae,{className:"w-5 h-5 mr-2"}),"Booking Calendar - Next 6 Weeks"]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx($,{variant:"outline",size:"sm",onClick:()=>X("prev"),"data-testid":"button-prev-week",children:e.jsx(Ne,{className:"w-4 h-4"})}),e.jsx($,{variant:"outline",size:"sm",onClick:de,"data-testid":"button-today",children:"Today"}),e.jsxs("div",{className:"text-sm font-semibold min-w-[250px] text-center","data-testid":"current-date-range",children:[f.toLocaleDateString("en-AU",{day:"numeric",month:"short"})," - ",b.toLocaleDateString("en-AU",{day:"numeric",month:"short",year:"numeric"})]}),e.jsx($,{variant:"outline",size:"sm",onClick:()=>X("next"),"data-testid":"button-next-week",children:e.jsx(Se,{className:"w-4 h-4"})})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-4 text-sm",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("div",{className:"w-3 h-3 rounded bg-red-200 border border-red-300"}),e.jsx("span",{children:"Rockstar Room"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("div",{className:"w-3 h-3 rounded bg-blue-200 border border-blue-300"}),e.jsx("span",{children:"Grandma's Room"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("div",{className:"w-3 h-3 rounded bg-green-200 border border-green-300"}),e.jsx("span",{children:"Children's Party"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx("div",{className:"w-3 h-3 rounded bg-gray-200 border border-gray-400"}),e.jsx("span",{children:"Room Block"})]})]})]}),e.jsx(Pe,{children:z?e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ae,{className:"w-8 h-8 mx-auto mb-2 text-gray-400"}
1),e.jsx("p",{className:"text-gray-500",children:"Loading calendar..."})]})}):e.jsxs("div",{className:"grid grid-cols-7 gap-1",children:[["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map(t=>e.jsx("div",{className:"p-2 text-center font-medium text-gray-500 text-sm",children:t},t)),W.map((t,r)=>{const i=t.toDateString(),c=R[i]||[],s=Q[i]||[],D=pe(t),j=me(t);return e.jsxs("div",{className:`
2                    min-h-[120px] p-1 border border-gray-200 
3                    ${D?"bg-blue-50":"bg-white"}
4                    ${j?"ring-2 ring-ecology-500":""}
5                  `,"data-testid":`calendar-day-${t.getDate()}`,children:[e.jsx("div",{className:`
6                      text-sm font-medium mb-1 text-gray-900 cursor-pointer hover:text-ecology-600 transition-colors
7                      ${j?"text-ecology-700 font-bold":""}
8                    `,onDoubleClick:()=>{const o=t.getFullYear(),l=String(t.getMonth()+1).padStart(2,"0"),u=String(t.getDate()).padStart(2,"0"),d=`${o}-${l}-${u}`;A(d),B(!0)},title:"Double-click to edit pricing for this date","data-testid":`date-number-${t.getDate()}`,children:t.getDate()}),e.jsxs("div",{className:"space-y-1",children:[c.slice(0,3).map(o=>{var u,d,g,x,h;const l=o.status==="pending";return e.jsxs("div",{className:`
9                            p-1 rounded text-xs cursor-pointer hover:opacity-80 transition-opacity
10                            ${l?"border-2 border-dashed":"border"}
11                            ${oe[(u=o.room)==null?void 0:u.type]||"bg-gray-100 border-gray-300"}
12                            ${l?"opacity-75":""}
13                          `,"data-testid":`booking-${o.id}`,onDoubleClick:()=>ue(o),title:`${l?"⏳ Pending Payment - ":""}Double-click to view details`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"font-medium",children:[l&&"⏳ ",N(o.start_time)]}),e.jsx(Y,{className:`text-xs px-1 py-0 ${ne[o.status]}`,children:o.status})]}),e.jsxs("div",{className:"flex items-center mt-1 text-xs opacity-90",children:[e.jsx(re,{className:"w-3 h-3 mr-1"}),o.party_size,e.jsx(ee,{className:"w-3 h-3 ml-2 mr-1"}),((g=(d=o.room)==null?void 0:d.name)==null?void 0:g.split(" ")[0])||"Room"]}),e.jsxs("div",{className:"truncate text-xs font-medium",children:[(x=o.customer)==null?void 0:x.first_name," ",(h=o.customer)==null?void 0:h.last_name]}),e.jsx("div",{className:"text-xs font-medium text-green-700",children:se(parseFloat(o.total_amount))})]},o.id)}),s.map(o=>e.jsxs("div",{className:"p-1 rounded text-xs border bg-gray-200 border-gray-400 text-gray-800 relative group","data-testid":`block-${o.id}`,title:`Blocked: ${o.reason}`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center flex-1 min-w-0",children:[e.jsx(te,{className:"w-3 h-3 mr-1 flex-shrink-0"}),e.jsxs("span",{className:"font-medium truncate",children:[N(o.start_time)," - ",N(o.end_time)]})]}),e.jsx("button",{onClick:l=>J(o.id,l),className:"ml-1 p-0.5 hover:bg-gray-300 rounded opacity-0 group-hover:opacity-100 transition-opacity flex-shrink-0",title:"Remove block","data-testid":`button-delete-block-${o.id}`,children:e.jsx(Z,{className:"w-3 h-3"})})]}),e.jsx("div",{className:"truncate text-xs mt-1",children:o.reason})]},o.id)),c.length+s.length>3&&e.jsxs("button",{onClick:()=>{q(t),k(!0)},className:"text-xs text-ecology-600 hover:text-ecology-700 font-medium text-center w-full py-1 hover:bg-ecology-50 rounded transition-colors","data-testid":`button-show-more-${t.getDate()}`,children:["+",c.length+s.length-3," more"]})]})]},r)})]})}),e.jsx(_e,{booking:S,isOpen:n,onClose:xe}),T&&y&&e.jsx("div",{className:"fixed inset-0 bg-black/50 z-50 flex items-center justify-center p-4",onClick:()=>k(!1),children:e.jsxs("div",{className:"bg-white rounded-lg max-w-2xl w-full max-h-[80vh] overflow-hidden",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{className:"p-4 border-b border-gray-200 flex items-center justify-between",children:[e.jsx("h3",{className:"text-lg font-semibold text-domino-900",children:y.toLocaleDateString("en-AU",{weekday:"long",year:"numeric",month:"long",day:"numeric",timeZone:"Australia/Sydney"})}),e.jsx("button",{onClick:()=>k(!1),className:"p-1 hover:bg-gray-100 rounded","data-testid":"button-close-day-view",children:e.jsx(Z,{className:"w-5 h-5"})})]}),e.jsx("div",{className:"p-4 overflow-y-auto max-h-[calc(80vh-80px)]",children:e.jsx("div",{className:"space-y-2",children:(()=>{const t=y.toDateString(),r=R[t]||[],i=Q[t]||[],c=[...r.map(s=>({...s,type:"booking",time:new Date(s.start_time)})),...i.map(s=>({...s,type:"block",time:new Date(s.start_time)}))].sort((s,D)=>s.time.getTime()-D.time.getTime());return c.length===0?e.jsx("div",{className:"text-center text-gray-500 py-8",children:"No bookings or blocks for this day"}):c.map((s,D)=>{var j,o,l,u;if(s.type==="booking"){const d=s.status==="pending";return e.jsxs("div",{className:`
14                            p-3 rounded cursor-pointer hover:opacity-80 transition-opacity
15                            ${d?"border-2 border-dashed":"border"}
16                            ${oe[(j=s.room)==null?void 0:j.type]||"bg-gray-100 border-gray-300"}
17                            ${d?"opacity-75":""}
18                          `,onClick:()=>{P(s),F(!0),k(!1)},title:d?"⏳ Pending Payment - Click to view details":"Click to view details","data-testid":`day-view-booking-${s.id}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"font-medium",children:[d&&"⏳ ",N(s.start_time)," - ",N(s.end_time)]}),e.jsx(Y,{className:`${ne[s.status]}`,children:s.status})]}),e.jsxs("div",{className:"flex items-center gap-4 text-sm",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(re,{className:"w-4 h-4 mr-1"}),s.party_size," guests"]}),e.jsxs("div",{className:"flex items-center",children:[e.jsx(ee,{className:"w-4 h-4 mr-1"}),(o=s.room)==null?void 0:o.name]})]}
18),e.jsxs("div",{className:"font-medium mt-1",children:[(l=s.customer)==null?void 0:l.first_name," ",(u=s.customer)==null?void 0:u.last_name]}),e.jsx("div",{className:"text-sm font-medium text-green-700",children:se(parseFloat(s.total_amount))})]},`booking-${s.id}`)}else return e.jsxs("div",{className:"p-3 rounded border bg-gray-200 border-gray-400 text-gray-800","data-testid":`day-view-block-${s.id}`,children:[e.jsxs("div",{className:"flex items-center justify-between mb-1",children:[e.jsxs("div",{className:"flex items-center",children:[e.jsx(te,{className:"w-4 h-4 mr-2"}),e.jsxs("span",{className:"font-medium",children:[N(s.start_time)," - ",N(s.end_time)]})]}),e.jsx("button",{onClick:d=>{d.stopPropagation(),J(s.id,d),setTimeout(()=>{if(y){const g=y.toDateString(),x=R[g]||[],h=Q[g]||[];x.length+h.length===0&&k(!1)}},500)},className:"p-1 hover:bg-gray-300 rounded",title:"Remove block","data-testid":`day-view-delete-block-${s.id}`,children:e.jsx(Z,{className:"w-4 h-4"})})]}),e.jsx("div",{className:"text-sm ml-6",children:s.reason}),s.staff_username&&e.jsxs("div",{className:"text-xs text-gray-600 ml-6 mt-1",children:["Blocked by: ",s.staff_username]})]},`block-${s.id}`)})})()})})]})}),e.jsx(Ce,{open:M,onOpenChange:B,date:E})]})}export{Bt 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.