PageSourceSearch

https://www.bnbpulse.ca/assets/app.pdf-preview-DA60jt4A.js

js bnbpulse.ca collected 2026-10-02 01:19:45 UTC 27,763 bytes, 1 lines download raw bytes

1import{c as Y,j as e,r as h,L as K,Y as J,E as Q,_ as O}from"./index-BT7Cep_C.js";import{Document as X,Page as w,Image as I,Text as r,View as s,StyleSheet as Z,Font as z,pdf as D}from"./react-pdf.browser-s7Aj3Sti.js";import{I as ee,a as te,b as re,c as ne}from"./Inter-Bold-BgqT8PqZ.js";import{BrochurePDF as oe}from"./BrochurePDF-CW9F9Z6s.js";import{L as F}from"./loader-circle-BP7aX8D9.js";const ie=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],ae=Y("refresh-cw",ie);z.register({family:"Inter",fonts:[{src:ee,fontWeight:400},{src:te,fontWeight:500},{src:re,fontWeight:600},{src:ne,fontWeight:700}]});z.registerHyphenationCallback(o=>[o]);const i={ink:"#0B1220",body:"#1F2937",muted:"#6B7280",line:"#E5E7EB",gold:"#B8884B"},t=Z.create({page:{fontFamily:"Inter",fontSize:10,color:i.body,paddingTop:56,paddingBottom:56,paddingHorizontal:56,lineHeight:1.55},header:{position:"absolute",top:24,left:56,right:56,flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:8,borderBottom:`0.75pt solid ${i.line}`},headerLeft:{flexDirection:"row",alignItems:"center",gap:8},headerCo:{fontSize:9,fontWeight:700,color:i.ink,letterSpacing:1},headerLogo:{height:18},headerMeta:{fontSize:8,color:i.muted},footer:{position:"absolute",bottom:24,left:56,right:56,flexDirection:"row",justifyContent:"space-between",paddingTop:6,borderTop:`0.75pt solid ${i.line}`,fontSize:8,color:i.muted},cover:{fontFamily:"Inter",paddingTop:80,paddingHorizontal:56,paddingBottom:56,color:i.ink},coverBadge:{fontSize:9,color:i.gold,fontWeight:700,letterSpacing:3,marginBottom:16},coverTitle:{fontSize:30,fontWeight:700,lineHeight:1.15,color:i.ink,marginBottom:14},coverSub:{fontSize:12,color:i.muted,marginBottom:32},coverRule:{height:3,width:64,backgroundColor:i.gold,marginBottom:32},coverLogo:{height:56,marginBottom:24,objectFit:"contain"},coverParties:{marginTop:32,padding:18,border:`0.75pt solid ${i.line}`,borderRadius:4},coverPartyLabel:{fontSize:8,color:i.muted,letterSpacing:1.5,marginBottom:4},coverPartyName:{fontSize:13,fontWeight:700,color:i.ink},coverPartyMeta:{fontSize:9,color:i.body,marginTop:2},coverFooter:{position:"absolute",bottom:40,left:56,right:56,fontSize:8,color:i.muted,flexDirection:"row",justifyContent:"space-between",paddingTop:8,borderTop:`0.75pt solid ${i.line}`},h1:{fontSize:16,fontWeight:700,color:i.ink,marginTop:4,marginBottom:10},h2:{fontSize:11,fontWeight:700,color:i.ink,marginTop:14,marginBottom:6,letterSpacing:.5},p:{marginBottom:6},bullet:{flexDirection:"row",marginBottom:4,paddingLeft:6},bulletDot:{width:10,color:i.gold,fontWeight:700},bulletText:{flex:1},defRow:{flexDirection:"row",marginBottom:4},defTerm:{fontWeight:700,color:i.ink},callout:{marginVertical:8,padding:10,backgroundColor:"#FAF7F2",borderLeft:`2pt solid ${i.gold}`},fieldRow:{flexDirection:"row",justifyContent:"space-between",marginBottom:4},fieldKey:{color:i.muted,fontWeight:600},fieldVal:{color:i.ink,fontWeight:600},sigRow:{flexDirection:"row",justifyContent:"space-between",marginTop:24,gap:24},sigBlock:{flex:1},sigLine:{borderBottom:`0.75pt solid ${i.ink}`,height:26,marginBottom:4},sigLabel:{fontSize:8,color:i.muted,letterSpacing:1}}),p=(o,n)=>`$${o.toLocaleString()} ${n}`;function P({d:o}){return e.jsxs(s,{style:t.header,fixed:!0,children:[e.jsxs(s,{style:t.headerLeft,children:[o.logoUrl?e.jsx(I,{src:o.logoUrl,style:t.headerLogo}):null,e.jsx(r,{style:t.headerCo,children:(o.companyName||"BNB Authority").toUpperCase()})]}),e.jsx(r,{style:t.headerMeta,children:"Property Management Agreement"})]})}function k({d:o}){return e.jsxs(s,{style:t.footer,fixed:!0,children:[e.jsx(r,{children:o.llcName||o.companyName}),e.jsx(r,{render:({pageNumber:n,totalPages:d})=>`Page ${n} of ${d}`})]})}function a({children:o}){return e.jsxs(s,{style:t.bullet,children:[e.jsx(r,{style:t.bulletDot,children:"•"}),e.jsx(r,{style:t.bulletText,children:o})]})}function se({data:o}){const n=o,d=n.currency,m=n.region==="canada"?"Taxes including GST/HST, PST, and any municipal accommodation taxes collected through platforms that do not automatically remit shall remain the responsibility of the Property Owner.":"Taxes including occupancy, lodging, sales, and county short-term rental taxes collected through platforms that do not automatically remit shall remain the responsibility of the Property Owner.",y=n.region==="canada"?"Province":"State";return e.jsxs(X,{title:`Property Management Agreement - ${n.companyName}`,children:[e.jsxs(w,{size:"LETTER",style:t.cover,children:[n.logoUrl?e.jsx(I,{src:n.logoUrl,
1style:t.coverLogo}):null,e.jsx(r,{style:t.coverBadge,children:"PROPERTY MANAGEMENT AGREEMENT"}),e.jsx(s,{style:t.coverRule}),e.jsx(r,{style:t.coverTitle,children:n.companyName||"BNB Authority"}),e.jsxs(r,{style:t.coverSub,children:["Property Management Agreement · ",n.region==="canada"?"Canada":"United States"," · ",n.currency]}),e.jsxs(s,{style:t.coverParties,children:[e.jsx(r,{style:t.coverPartyLabel,children:"MANAGER"}),e.jsx(r,{style:t.coverPartyName,children:n.llcName||n.companyName||"BNB Authority"}),e.jsx(r,{style:t.coverPartyMeta,children:n.contactName}),e.jsx(r,{style:t.coverPartyMeta,children:n.managerAddress}),e.jsx(r,{style:t.coverPartyMeta,children:[n.phone,n.email,n.website].filter(Boolean).join("  ·  ")})]}),e.jsxs(s,{style:[t.coverParties,{marginTop:16}],children:[e.jsx(r,{style:t.coverPartyLabel,children:"PROPERTY OWNER"}),e.jsx(r,{style:t.coverPartyName,children:n.landlordName||"[Owner Name]"}),e.jsx(r,{style:t.coverPartyMeta,children:n.landlordAddress||"[Owner Address]"}),e.jsxs(r,{style:[t.coverPartyMeta,{marginTop:6}],children:[e.jsx(r,{style:{fontWeight:700},children:"Property: "}),[n.propertyUnit,n.propertyAddress].filter(Boolean).join(", ")||"[Property Address]"]})]}),e.jsxs(s,{style:[t.coverParties,{marginTop:16}],children:[e.jsx(r,{style:t.coverPartyLabel,children:"KEY TERMS"}),e.jsxs(s,{style:t.fieldRow,children:[e.jsx(r,{style:t.fieldKey,children:"Agreement Date"}),e.jsx(r,{style:t.fieldVal,children:n.agreementDate||"-"})]}),e.jsxs(s,{style:t.fieldRow,children:[e.jsx(r,{style:t.fieldKey,children:"Start Date"}),e.jsx(r,{style:t.fieldVal,children:n.startDate||"-"})]}),e.jsxs(s,{style:t.fieldRow,children:[e.jsx(r,{style:t.fieldKey,children:"Performance Trial Period"}),e.jsxs(r,{style:t.fieldVal,children:[n.trialPeriodDays," days"]})]}),e.jsxs(s,{style:t.fieldRow,children:[e.jsx(r,{style:t.fieldKey,children:"Management Fee"}),e.jsxs(r,{style:t.fieldVal,children:[n.mgmtFeePct,"% of Rental Proceeds"]})]}),e.jsxs(s,{style:t.fieldRow,children:[e.jsx(r,{style:t.fieldKey,children:"Setup / Initial Deposit"}),e.jsx(r,{style:t.fieldVal,children:n.setupFee>0?p(n.setupFee,d):"Waived"})]}),e.jsxs(s,{style:t.fieldRow,children:[e.jsxs(r,{style:t.fieldKey,children:["Governing ",y]}),e.jsx(r,{style:t.fieldVal,children:n.jurisdiction||"-"})]})]}),e.jsxs(s,{style:t.coverFooter,fixed:!0,children:[e.jsx(r,{children:n.llcName||n.companyName}),e.jsx(r,{children:"Confidential"})]})]}),e.jsxs(w,{size:"LETTER",style:t.page,children:[e.jsx(P,{d:n}),e.jsx(k,{d:n}),e.jsx(r,{style:t.h1,children:"Property Management Agreement"}),e.jsx(r,{style:t.p,children:"This Agreement is entered into between:"}),e.jsxs(r,{style:[t.p,{marginLeft:14}],children:[e.jsx(r,{style:{fontWeight:700},children:n.llcName||n.companyName||"BNB Authority"}),"  ",'(referred to as "we", "us", "Manager", or the "Manager")']}),e.jsx(r,{style:[t.p,{marginLeft:14}],children:"AND"}),e.jsxs(r,{style:[t.p,{marginLeft:14}],children:[e.jsx(r,{style:{fontWeight:700},children:n.landlordName||"[Owner Name]"}),"  ",'(referred to as "you", "Owner", or "Property Owner")']}),e.jsx(r,{style:t.h2,children:"Introduction"}),e.jsx(r,{style:t.p,children:"This Agreement sets out the terms and conditions upon which we will provide property management services to you in relation to your property that you wish to let out through various booking platforms."}),e.jsx(r,{style:t.h2,children:"1. Definitions"}
1),[["Availability Period","the period for which the Property is available for receiving Guests"],["Cleaning Fee","a fee for cleaning and preparing the Property for occupation by a Guest"],["Excluded Services","the services that we do not provide as part of this Agreement, listed in Appendix A"],["Extra Maintenance Services","services such as deep clean, carpet shampoo, upholstery cleaning, mold removal, pest control, oven cleaning, external window/balcony cleaning, wall painting, work at height, serious plumbing, electrical or gas works and anything not covered by our Services"],["Fee","the fees charged by the Manager in accordance with clause 8 below"],["Guest","a guest who is renting the Property through one of the Booking Platforms"],["Booking Platform","a short stay rental marketplace including but not limited to Airbnb and such other websites as chosen by you"],["Services","the short-let management services described in clause 3 below"],["Listing","any advertisement of your Property on a Booking Platform"],["Rental Proceeds","the total amount paid by the Guest for a booking less any Cleaning Fee, credit card processing fees, pet fees, etc. and taxes levied by the Manager and/or any relevant Booking Platform"]].map(([f,x])=>e.jsxs(r,{style:t.p,children:[e.jsxs(r,{style:t.defTerm,children:['"',f,'"']})," means ",x,"."]},f)),e.jsxs(r,{style:t.p,children:[e.jsx(r,{style:t.defTerm,children:'"Property"'})," means unit ",e.jsx(r,{style:{fontWeight:700},children:n.propertyUnit||"_____________"})," located at ",e.jsx(r,{style:{fontWeight:700},children:n.propertyAddress||"_____________"})," or such other property as agreed between the Manager and you from time to time."]}),e.jsx(r,{style:t.h2,children:"2. Services"}),e.jsx(r,{style:t.p,children:"In exchange for the Management Fee you pay to us, we shall provide the following services to you:"}),e.jsx(a,{children:"Engaging a photographer to take photos of the Property for one full photo shoot. The cost of the photographer will be billed to you directly or you can choose a photographer of your own choosing."}),e.jsx(a,{children:"Writing up your listing and optimizing it across Booking Platforms. We shall select the Booking Platforms unless you tell us otherwise. The Manager shall maintain administrative control of listings created during the term of this Agreement. Upon termination, listing transfer or continued use shall be at the discretion of the Manager unless otherwise agreed in writing. Social media content created by the Manager utilizing photos or marketing material relating to the Property shall remain property of the Manager unless otherwise agreed in writing."}),e.jsx(a,{children:"Managing the pricing and availability calendar across Booking Platforms as we deem fit. You agree the Manager has the expertise to make pricing decisions and is therefore not required to consult with you before accepting a booking or setting prices, while bearing in mind your stated requirements."}),e.jsx(a,{children:"Responding to enquiries raised by Guests in relation to your Listings and managing all communications with Guests including any disputes that may arise."}),e.jsx(a,{children:"Providing housekeeping and linen service only once at the start of each Guest's stay."}),e.jsx(a,{children:"Remotely coordinating urgent repairs or maintenance works to your Property if and only if required to ensure complete Guest satisfaction."}),e.jsx(a,{children:"You agree we shall not provide the Excluded Services as part of this Agreement. If you need any such services, we will discuss them and may agree to arrange them for an extra cost plus expenses."}),e.jsx(r,{style:t.h2,children:"3. Booking Platform Accounts"}),e.jsx(r,{style:t.p,children:"The parties acknowledge that bookings may be managed through accounts owned or controlled by the Manager or the Owner. If bookings are managed through Manager accounts, all guest communication, reviews, and listing metrics shall remain associated with those accounts."})]}),e.jsxs(w,{size:"LETTER",style:t.page,children:[e.jsx(P,{d:n}),e.jsx(k,{d:n}),e.jsx(r,{style:t.h2,children:"4. Host (Owner) Obligations"}),e.jsx(r,{style:t.p,children:"To allow us to provide the Services you agree that you will:"}),e.jsx(a,{children:"Provide complete, accurate and timely information about the Property and any other information reasonably requested by us. It is y
1our responsibility to ensure that we have all the information needed to operate the Property and look after the safety of each Guest."}),e.jsxs(a,{children:["Maintain the Property at all times, including doing repairs as soon as possible upon request or refunding the Manager for repairs. Repairs will be brought to your attention for approval, but the Manager has discretion to expense up to ",p(250,d)," for any urgent repairs that arise if we cannot reach you for approval."]}),e.jsx(a,{children:"Comply with all legal requirements applicable to a landlord in the Property's city including fire safety regulations, gas and electrical safety, licensing, business registration, and short-term rental permits."}),e.jsx(a,{children:"Remove or lock away any expensive and fragile items in the Property and let us know about any particularly fragile or sensitive areas."}),e.jsx(a,{children:"Cooperate fully with us in the provision of the Services and pay our Fee and other costs when due."}),e.jsx(a,{children:"Supply 3 months' worth of cleaning supplies for the unit. After 3 months we will incur the cost of supplying cleaning supplies and may increase the cleaning fee accordingly."}),e.jsx(a,{children:"Supply all required linens, towels, airbeds, and other agreed upon items."}),e.jsxs(a,{children:["Cover the cost of a deep clean for the unit prior to the Manager commencing services. The Owner should anticipate that a deep clean will likely cost ",p(150,d),"+ and should be performed by a reputable company."]}),e.jsx(r,{style:t.h2,children:"5. Availability Period and Minimum Agreement"}),e.jsxs(r,{style:t.p,children:['The minimum Availability Period - also known as the "Performance Trial Period" - shall be'," ",e.jsxs(r,{style:{fontWeight:700},children:[n.trialPeriodDays," days"]})," from"," ",e.jsx(r,{style:{fontWeight:700},children:n.startDate||"_____________"})," ",'("Initial Availability Period").']}),e.jsx(r,{style:t.p,children:"Thereafter, the Availability Period will continue if this Agreement is not terminated. This Agreement can be terminated by either party by giving 30 days' notice after the Initial Availability Period has elapsed."}),e.jsxs(r,{style:t.p,children:["For the avoidance of doubt, by signing this Agreement, you agree to give us the Initial Availability Period of ",n.trialPeriodDays," bookable days, and any changes may incur extra charges."]}),e.jsx(r,{style:t.p,children:"Either party may terminate the Agreement during the Initial Availability Period upon written notice to the other party."}),e.jsx(r,{style:t.p,children:"Upon termination, we shall return your keys on the last day of the notice period or such other date as agreed."}),e.jsx(r,{style:t.h2,children:"6. Cancellation or Refunds of Bookings"}),e.jsx(r,{style:t.p,children:"If you cancel or cause a Guest to cancel any Booking, or if we are required to refund a part of a Booking, you shall be required to pay:"}),e.jsx(a,{children:"The Booking Platform's cancellation charges, if applicable."}),e.jsx(a,{children:"Any charges levied by payment processing sites for refunds, if applicable."}),e.jsx(a,{children:"The Manager's Fee for that Booking in its entirety."})]}),e.jsxs(w,{size:"LETTER",style:t.page,children:[e.jsx(P,{d:n}),e.jsx(k,{d:n}),e.jsx(r,{style:t.h2,children:"7. Fee and Payment"}),n.setupFee>0?e.jsxs(r,{style:t.p,children:[e.jsxs(r,{style:{fontWeight:700},children:["Initial deposit: ",p(n.setupFee,d),"."]})," ","This fee is an upfront retainer that is a gesture of goodwill for us to commence our services and will be returned to you by deducting it from future management commission payouts."]}):e.jsxs(r,{style:t.p,children:[e.jsx(r,{style:{fontWeight:700},children:"Initial deposit: Waived."})," ","No upfront retainer is required to commence services under this Agreement."]}),e.jsxs(s,{style:t.callout,children:[e.jsx(r,{style:{fontWeight:700,color:i.ink,marginBottom:4},children:"Owner Payout is defined as:"}),e.jsx(r,{children:"Total Revenue generated on Airbnb / Other Distribution Channels − Channel fees − Taxes − Cleaning Fees"})]}),e.jsxs(r,{style:t.p,children:["The Manager charges a ",e.jsxs(r,{style:{fontWeight:700},children:[n.mgmtFeePct,"% management fee"]})," ","on the Rental Proceeds and keeps the Cleaning Fee in full. In exchange, the Manager shall be responsible for coordinating cleaning services, turnover management, laundry coordination, and restocking standard guest consumables unless otherwise agreed in writing."]}),e.jsx(r,{style:t.p,children:`"Net Rental Proceeds" are Rental Proceeds received by the Owner for rental of the Home as a rental, less management fees and any other fees for services or items that are covered by the Manager's Management Fee.`}),e.jsx(r,{style:t.p,children:"We will collect all funds and remit your portion of the earnings on the tenth day of each month along with an attached owner's statement outlining total revenue earned, cleaning fees collected, and 
1your net payout."}),e.jsx(r,{style:t.h2,children:"Payment Authorization"}),e.jsx(r,{style:t.p,children:"Owner authorizes the Manager to collect booking revenue on Owner's behalf and deduct management fees, approved expenses, platform charges, refunds, and other authorized amounts prior to remitting Owner payouts."}),e.jsx(r,{style:t.h2,children:"Damage Claims"}),e.jsx(r,{style:t.p,children:"Owner authorizes the Manager to submit, negotiate, and manage guest damage claims through Airbnb, VRBO, or other Booking Platforms on Owner's behalf."}),e.jsx(r,{style:t.h2,children:"Definition of Rental Proceeds"}),e.jsx(r,{style:t.p,children:`For reservations booked on the Manager's website, websites of other brands owned by the Manager, or by phone through Manager reservation agents, "Rental Proceeds" shall be the total rent paid for the reservation period.`}),e.jsx(r,{style:t.p,children:'For reservations booked through a Booking Platform, "Rental Proceeds" shall be the total rent paid less fees, charges, or commissions imposed by the Booking Platform.'}),e.jsx(r,{style:t.p,children:"Rental Proceeds do not include taxes, cleaning fees, pet fees, or any other charges unless otherwise agreed in writing."}),e.jsx(r,{style:t.p,children:"You agree to pay interest on any amount payable under this Agreement and not paid on the due date at a rate equal to 3% above our business banking overnight rate from time to time."}),e.jsx(r,{style:t.p,children:m})]}),e.jsxs(w,{size:"LETTER",style:t.page,children:[e.jsx(P,{d:n}),e.jsx(k,{d:n}),e.jsx(r,{style:t.h2,children:"8. Extra Charges & Owner Use"}),e.jsx(r,{style:t.p,children:"Owner has the right to use the Home so long as Owner reserves the dates of use in advance with the Manager. Owner may not schedule an Owner stay for any period for which an existing reservation is in place."}),e.jsx(r,{style:t.p,children:"Owner stays are subject to the Manager's standard check-in and checkout times. Unless otherwise agreed in writing, the Manager shall clean the Home after each Owner stay and charge the then-current cleaning fee to the Owner."}),e.jsx(r,{style:t.h2,children:"9. Non-Circumvention"}),e.jsx(r,{style:t.p,children:"During the term of this Agreement and for 12 months thereafter, Owner agrees not to directly solicit or hire vendors, cleaners, contractors, photographers, or service providers introduced by the Manager without written consent."}),e.jsx(r,{style:t.h2,children:"10. Property Maintenance and Expenses"}),e.jsx(r,{style:t.p,children:"You shall be primarily responsible for the maintenance and upkeep of the Property and shall ensure that the Property is in good condition for Guests' use. You acknowledge that there will be normal wear and tear due to Guest use and that you shall be responsible for remedying such wear and tear."}),e.jsxs(r,{style:t.p,children:["The Manager may incur expenses up to ",p(250,d)," for emergency repairs reasonably necessary to protect Guests or the Property if Owner cannot be reached. We shall not undertake repairs exceeding ",p(250,d)," without prior approval except in emergency safety situations."]}),e.jsx(r,{style:t.h2,children:"11. Liability, Force Majeure & Miscellaneous"}),e.jsx(r,{style:t.p,children:"Each party's liability under this Agreement is limited to direct damages and shall not exceed the total Fees paid in the 3 months preceding the event giving rise to the claim. Neither party shall be liable for delay or failure to perform caused by events beyond its reasonable control, including acts of God, government action, pandemic, or platform outages."}),e.jsx(r,{style:t.p,children:"This Agreement constitutes the entire understanding between the parties and supersedes all prior agreements. Any amendment must be in writing and signed by both parties. If any provision is found to be unenforceable, the remaining provisions shall continue in full force and effect."}),e.jsx(r,{style:t.h2,children:"12. Governing Law"}),e.jsxs(r,{style:t.p,children:["This Agreement shall be governed by the laws of the ",y," of"," ",e.jsx(r,{style:{fontWeight:700},children:n.jurisdiction||"_____________"}
1)," ","in which the Property is located."]}),e.jsx(r,{style:t.h2,children:"Signatures"}),e.jsxs(r,{style:t.p,children:["Signed on ",e.jsx(r,{style:{fontWeight:700},children:n.agreementDate||"_____________"}),"."]}),e.jsxs(s,{style:t.sigRow,children:[e.jsxs(s,{style:t.sigBlock,children:[e.jsx(s,{style:t.sigLine}),e.jsxs(r,{style:t.sigLabel,children:["MANAGER · ",(n.llcName||n.companyName||"").toUpperCase()]}),e.jsx(r,{style:[t.sigLabel,{marginTop:2}],children:n.contactName})]}),e.jsxs(s,{style:t.sigBlock,children:[e.jsx(s,{style:t.sigLine}),e.jsx(r,{style:t.sigLabel,children:"OWNER"}),e.jsx(r,{style:[t.sigLabel,{marginTop:2}],children:n.landlordName||"-"})]})]}),e.jsx(r,{style:[t.h2,{marginTop:26}],children:"Appendix A - Excluded Services"}),e.jsx(r,{style:t.p,children:"The following are not included in the Services and may be arranged at the Owner's cost:"}),e.jsx(a,{children:"Deep cleans, carpet shampoo, upholstery cleaning, mold removal, pest control."}),e.jsx(a,{children:"Oven cleaning, external window or balcony cleaning, wall painting, work at height."}),e.jsx(a,{children:"Serious plumbing, electrical, or gas works and any structural repairs."}),e.jsx(a,{children:"Furnishing, restocking of consumables beyond standard guest amenities, and capital improvements."})]})]})}const le="pdf-preview-payload";function de(){if(typeof window>"u")return null;try{const o=window.localStorage.getItem(le);return o?JSON.parse(o):null}catch{return null}}function ye(){const[o,n]=h.useState(null),[d,m]=h.useState(!0),[y,f]=h.useState(!1),[x,T]=h.useState(null),[_,A]=h.useState([]);h.useEffect(()=>{n(de())},[]),h.useEffect(()=>{let l=!1,g=null;const c=[];return(async()=>{if(!o){m(!1);return}m(!0),T(null);try{const v=await W(o);if(l)return;g=URL.createObjectURL(v);const M=await O(()=>import("./pdf-C2_sJa3b.js"),[]),q=(await O(async()=>{const{default:u}=await import("./pdf.worker.min-8tKisUQY.js");return{default:u}},[])).default;M.GlobalWorkerOptions.workerSrc=q;const H=new Uint8Array(await v.arrayBuffer()),B=await M.getDocument({data:H}).promise,R=[];for(let u=1;u<=B.numPages;u+=1){const S=await B.getPage(u),b=S.getViewport({scale:1.35}),j=document.createElement("canvas"),L=j.getContext("2d");if(!L)throw new Error("Could not render preview canvas.");j.width=Math.ceil(b.width),j.height=Math.ceil(b.height),await S.render({canvas:j,canvasContext:L,viewport:b}).promise;const E=j.toDataURL("image/png");c.push(E),R.push({pageNumber:u,url:E,width:b.width,height:b.height})}if(l)return;A(R)}catch(v){l||(A([]),T(v?.message??"Could not build preview."))}finally{l||m(!1)}})(),()=>{l=!0,g&&URL.revokeObjectURL(g),c.length=0}},[o]);const N=_.length,U=o?.sourcePath??"/app/resources",G=o?.title??"PDF Preview",$=h.useMemo(()=>o?o.kind==="brochure"?"Owner proposal preview":`${o.region==="canada"?"Canada":"USA"} agreement preview`:"No preview data found.",[o]),V=async()=>{if(o){f(!0);try{const l=await W(o),g=URL.createObjectURL(l),c=document.createElement("a");c.href=g,c.download=o.fileName,document.body.appendChild(c),c.click(),c.remove(),setTimeout(()=>URL.revokeObjectURL(g),1e3)}finally{f(!1)}}};return e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx("div",{className:"sticky top-0 z-20 border-b border-border bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80",children:e.jsxs("div",{className:"container mx-auto flex max-w-6xl items-center justify-between gap-4 px-4 py-4",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsxs(K,{to:U,className:"mb-2 inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground",children:[e.jsx(J,{className:"h-4 w-4"})," Back"]}),e.jsx("h1",{className:"truncate font-display text-2xl font-bold",children:G}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d?"Building preview…":`${$}${N?` · ${N} page${N===1?"":"s"}`:""}`})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>window.location.reload(),className:"inline-flex items-center gap-2 rounded-lg border border-border px-4 py-2.5 text-sm font-semibold hover:bg-muted",children:[e.jsx(ae,{className:"h-4 w-4"})," Refresh"]}),e.jsxs("button",{onClick:V,disabled:!o||y||d,className:"inline-flex items-center gap-2 rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground hover:opacity-90 disabled:opacity-50",children:[y?e.jsx(F,{className:"h-4 w-4 animate-spin"}):e.jsx(Q,{className:"h-4 w-4"}),"Download PDF"]})]})]})}),e.jsxs("div",{className:"container mx-auto max-w-6xl px-4 py-8",children:[!
1o&&!d?e.jsx(C,{message:"Open preview from the brochure or agreement editor first."}):null,x?e.jsx(C,{message:x}):null,d?e.jsx("div",{className:"flex min-h-[50vh] items-center justify-center",children:e.jsxs("div",{className:"inline-flex items-center gap-3 rounded-lg border border-border bg-card px-4 py-3 text-sm text-muted-foreground",children:[e.jsx(F,{className:"h-4 w-4 animate-spin"})," Rendering PDF pages…"]})}):null,!d&&!x&&_.length>0?e.jsx("div",{className:"space-y-8",children:_.map(l=>e.jsxs("section",{className:"overflow-hidden rounded-lg border border-border bg-card shadow-sm",children:[e.jsxs("div",{className:"flex items-center justify-between border-b border-border px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:[e.jsxs("span",{children:["Page ",l.pageNumber]}),e.jsxs("span",{children:[Math.round(l.width)," × ",Math.round(l.height)]})]}),e.jsx("div",{className:"bg-muted/30 p-4 md:p-6",children:e.jsx("img",{src:l.url,alt:`PDF preview page ${l.pageNumber}`,className:"mx-auto h-auto w-full max-w-4xl rounded-sm border border-border bg-white shadow",loading:l.pageNumber===1?"eager":"lazy"})})]},l.pageNumber))}):null]})]})}function C({message:o}){return e.jsx("div",{className:"flex min-h-[40vh] items-center justify-center",children:e.jsx("div",{className:"rounded-xl border border-border bg-card px-6 py-5 text-center",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:o})})})}async function W(o){return o.kind==="brochure"?D(e.jsx(oe,{data:o.data})).toBlob():D(e.jsx(se,{data:o.data})).toBlob()}export{ye as component};

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.