PageSourceSearch

https://www.buyairspace.com.au/assets/SpecialLevyCalculator-wBmjHthc.js

js buyairspace.com.au collected 2026-10-06 15:02:55 UTC 37,892 bytes, 59 lines download raw bytes

1import{o as ge,r as i,j as e,M as me,b as fe,B as je,s as te,H as ve,N as Ne,m as pe,d as ke,L as Se,A as Ce,F as Pe,q as se}from"./index-CzwC4j7R.js";import{A as $e}from"./AssessedAddressInput-BHaEpqZz.js";import{l as _e,s as Ae}from"./proposalToolState-BRVXWKPi.js";import{S as Le}from"./StrataBriefingDownload-DyGaL5zm.js";import{M as qe}from"./MotionPackDownload-DKVRnOO8.js";import{S as ne}from"./slider-f8cw1LK9.js";import{u as Be}from"./use-paid-addresses-n3ih62L5.js";import{S as de}from"./search-D_ZKOQ8N.js";import{R as Ee}from"./ruler-ClBc5tRh.js";import{L as De}from"./layers-CytdMVGJ.js";import{S as Oe}from"./sparkles-DEzRB1OS.js";import{L as ue}from"./landmark-H0w8HGaC.js";import{C as Re}from"./camera-Bc9GEylb.js";import{C as ie}from"./circle-x-Buv7nCAS.js";import{C as he}from"./circle-check-big-CKgndsPD.js";import{T as ze}from"./trending-up-DEdJSO51.js";import{P as Fe}from"./piggy-bank-BjVT99eU.js";import{W as Me}from"./wrench-DpQe5YCU.js";import{H as Ie}from"./handshake-BI5DkTgv.js";import{K as He}from"./key-round-Df6VsaOO.js";import{C as Te}from"./calculator-BDvOslPG.js";import{M as We}from"./map-C4E2qXyS.js";import{S as Je}from"./scale-izitgBb1.js";import{V as Ve}from"./vote-DbzP4ll_.js";import{D as Ue}from"./download-CoHjmGhK.js";import{F as Xe}from"./file-text-B9bZtFGg.js";import"./mapEvents-CIpMtt8t.js";import"./file-down-BWOOUcfg.js";import"./label-C0Xfc1p-.js";import"./address-state-C01-N0yW.js";import"./gavel-DHFnOBcB.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const Ke=ge("CalendarCheck",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}],["path",{d:"m9 16 2 2 4-4",key:"19s6y9"}]]);/**
7 * @license lucide-react v0.462.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const Qe=ge("DraftingCompass",[["path",{d:"m12.99 6.74 1.93 3.44",key:"iwagvd"}],["path",{d:"M19.136 12a10 10 0 0 1-14.271 0",key:"ppmlo4"}],["path",{d:"m21 21-2.16-3.84",key:"vylbct"}],["path",{d:"m3 21 8.02-14.26",key:"1ssaw4"}],["circle",{cx:"12",cy:"5",r:"2",key:"f1ur92"}]]),T="https://zbdrwswzkowyrswcyzxl.supabase.co",W={"Content-Type":"application/json",apikey:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InpiZHJ3c3d6a293eXJzd2N5enhsIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzI0NDI0MDEsImV4cCI6MjA4ODAxODQwMX0.juNKIW9X16Xx20QtPmXSz1f1QhNCw0-dx3coKdN_bDE"},Ye=r=>/\bvic(toria)?\b/i.test(r),xe=r=>{const w=r.match(/,\s*([^,]+?)\s+(NSW|VIC|QLD|WA|SA|TAS|ACT|NT)\b/i);if(w)return w[1].trim();const c=r.split(",").map(j=>j.trim()).filter(Boolean);return c.length>=2&&c[c.length-1].replace(/\b(NSW|VIC|QLD|WA|SA|TAS|ACT|NT)\b.*$/i,"").replace(/\b\d{4}\b/,"").trim()||null},Ze=({onProfile:r})=>{const[w,c]=i.useState(""),[j,u]=i.useState([]),[h,x]=i.useState(""),[g,v]=i.useState(!1),[E,d]=i.useState(!1),[$,J]=i.useState(null),{isPaid:V}=Be(),I=i.useRef(null);i.useEffect(()=>{const n=S=>{I.current&&!I.current.contains(S.target)&&v(!1)};return document.addEventListener("mousedown",n),()=>document.removeEventListener("mousedown",n)},[]);const U=n=>{c(n),g&&v(!1)},ae=async n=>{const S=n.trim();if(S.length<4){u([]),v(!1);return}try{const[p,R]=await Promise.all([fetch(`${T}/functions/v1/geoscape-address`,{method:"POST",headers:W,body:JSON.stringify({action:"suggest",query:S})}).then(m=>m.json()).then(m=>(m==null?void 0:m.suggest)??[]).catch(()=>[]),te.functions.invoke("address-autocomplete",{body:{input:S}}).then(m=>{var P;return((P=m.data)==null?void 0:P.suggestions)??[]}).catch(()=>[])]),C=new Set,q=[],_=(m,P)=>{const z=P.toLowerCase().replace(/[^a-z0-9]/g,"");!P||C.has(z)||(C.add(z),q.push({id:m,address:P}))};p.forEach(m=>_(m.id,m.address)),R.forEach(m=>_(m.place_id??m.description,String(m.description??"").replace(/, Australia$/,""))),u(q.slice(0,8)),x(S),v(q.length>0)}catch{u([])}},X=()=>{const n=w.trim();n.length<5||(h!==n?ae(n):v(j.length>0))},s=async n=>{var S,p,R,C,q,_,m,P,z,F;if(v(!1),!V(n)){J("We prepare the building figures by hand as part of your assessment. Order an assessment for this address and we'll email the numbers to you.");return}d(!0),J(null);try{const[N,H]=await Promise.allSettled([fetch(`${T}/functions/v1/geoscape-address`,{method:"POST",headers:W,body:JSON.stringify({action:"building_by_query",query:n})}).then(a=>a.json()),fetch(`${T}/functions/v1/valuation-search`,{method:"POST",headers:W,body:JSON.stringify({mode:"suggest",query:n})}).then(a=>a.json())]);let t=null,o=null,A=null,M=null,K=null,D=n;if(N.status==="fulfilled"&&((R=(p=(S=N.value)==null?void 0:S.buildings)==null?void 0:p.features)!=null&&R.length)){const a=N.value.buildings.features,f=a.length>1?a.reduce((L,B)=>{var G,ee;return(((G=B==null?void 0:B.properties)==null?void 0:G.building_area)??0)>(((ee=L==null?void 0:L.properties)==null?void 0:ee.building_area)??0)?B:L},a[0]):a[0],b=(f==null?void 0:f.properties)??{};t=b.building_area!=null?Math.round(Number(b.building_area)):null,o=b.roof_height_max!=null?Number(b.roof_height_max):null,A=b.estimated_floors!=null?Number(b.estimated_floors):null;const y=(_=(q=(C=f==null?void 0:f.geometry)==null?void 0:C.coordinates)==null?void 0:q[0])==null?void 0:_[0];Array.isArray(y)&&y.length>0&&(K=y.reduce((L,B)=>L+B[0],0)/y.length,M=y.reduce((L,B)=>L+B[1],0)/y.length)}N.status==="fulfilled"&&((m=N.value)!=null&&m.matched_address)&&(D=N.value.matched_address);let l=null;if(H.status==="fulfilled"){const a=(z=(P=H.value)==null?void 0:P.suggestions)==null?void 0:z[0];if(a!=null&&a.property_number||a!=null&&a.id)try{const f=await fetch(`${T}/functions/v1/valuation-search`,{method:"POST",headers:W,body:JSON.stringify({id:a.property_number||a.id})}).then(y=>y.json()),b=(f==null?void 0:f.result)??null;if(b!=null&&b.address){const y=oe=>oe.toLowerCase().replace(/[^a-z0-9 ]/g," ").replace(/\s+/g," ").trim(),L=y(b.address),G=y(D).split(" ").find(oe=>/^\d+[a-z]?$/.test(oe)),ee=(F=xe(D))==null?void 0:F.toLowerCase(),ce=b.city?y(b.city):null,ye=!G||L.includes(G),we=!ee||!ce||ce===y(ee);ye&&we&&(l=b)}}catch{}}let O=l!=null&&l.max_height?Number(l.max_height):null,Q=l!=null&&l.fsr?String(l.fsr):null,Y=(l==null?void 0:l.zoning)??null,Z=(l==null?void 0:l.council)??null,re=null;try{if(Ye(D)){const a=await fetch(`${T}/functions/v1/vic-planning-lookup`,{method:"POST",headers:W,body:JSON.stringify({address:D})}).then(f=>f.json());a!=null&&a.error||(!O&&a.maxHeight&&(O=parseFloat(a.maxHeight)),!Q&&a.fsr&&(Q=String(a.fsr)),!Y&&(a.zoneCode||a.zoneDescription)&&(Y=a.zoneCode||a.zoneDescription),!Z&&a.lgaName&&(Z=a.lgaName),re=a.schemeCode??null)}else if(M!=null&&K!=null){const a=await fetch(`${T}/functions/v1/planning-lookup`,{method:"POST",headers:W,body:JSON.stringify({address:D,lat:M,lng:K})}).then(f=>f.json());a&&!a.error&&(!O&&a.heightOfBuilding&&(O=parseFloat(a.heightOfBuilding)),!Q&&a.fsr&&(Q=String(a.fsr)),!Y&&a.zoning&&(Y=a.zoning),!Z&&a.council&&(Z=a.council),re=a.epiName??null)}}catch{}o==null&&(l!=null&&l.height_existing)&&(o=Number(l.height_existing)),t==null&&(l!=null&&l.floor_space_existing)&&(t=Math.round(Number(l.floor_space_existing)));let le=(l==null?void 0:l.image_url)??null;if(!le&&M!=null&&K!=null)try{const{data:a}=await te.functions.invoke("get-maps-key");
11a!=null&&a.key&&(le=`https://maps.googleapis.com/maps/api/streetview?size=800x450&location=${M},${K}&key=${a.key}`)}catch{}const be=O!=null&&o!=null&&O>o?Math.floor((O-o)/3):null;r({address:(l==null?void 0:l.address)??D,photo:le,footprint:t,existingHeight:o,storeys:A,maxHeightControl:O,fsr:Q,zoning:Y,council:Z,lep:re,additionalStoreys:be,suburb:(l==null?void 0:l.city)??xe(D),assessed:!!l,strataPlan:(l==null?void 0:l.property_number)??null})}catch(N){console.error("Building lookup failed:",N),J("We couldn't retrieve building data for that address. You can still adjust the sliders manually below.")}finally{d(!1)}};return e.jsxs("div",{ref:I,className:"relative",children:[e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsxs("div",{className:"relative flex-1 group",children:[e.jsx(me,{className:"absolute left-4 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400 group-focus-within:text-amber-600 pointer-events-none transition-colors"}),e.jsx("input",{type:"text",value:w,onChange:n=>U(n.target.value),onFocus:()=>j.length>0&&v(!0),onKeyDown:n=>{n.key==="Enter"&&w.trim().length>=5&&(n.preventDefault(),X())},placeholder:"Search building address…",className:"w-full py-3 rounded-xl border border-slate-200 bg-white pl-11 pr-12 text-sm font-manrope text-slate-900 placeholder:text-slate-400 shadow-sm focus:outline-none focus:ring-2 focus:ring-amber-500/20 focus:border-amber-500 transition-all"}),e.jsx("button",{type:"button","aria-label":"Find address suggestions",onClick:X,disabled:w.trim().length<5||E,className:"absolute right-3 top-1/2 -translate-y-1/2 rounded-lg p-2 text-slate-400 hover:text-amber-600 hover:bg-amber-50 transition-colors disabled:opacity-40",children:e.jsx(de,{className:"h-4 w-4"})}),g&&j.length>0&&e.jsx("div",{className:"absolute z-30 mt-2 w-full rounded-xl border border-slate-200 bg-white shadow-xl overflow-hidden",children:j.map(n=>e.jsxs("button",{type:"button",onClick:()=>{c(n.address),s(n.address)},className:"w-full text-left px-4 py-3 text-sm font-manrope text-slate-700 hover:bg-slate-50 flex items-center gap-2",children:[e.jsx(me,{className:"h-3.5 w-3.5 text-amber-600 shrink-0"}),e.jsx("span",{className:"truncate",children:n.address})]},n.id))})]}),e.jsxs("button",{type:"button",disabled:E||w.trim().length<5,onClick:X,className:"py-3 px-5 rounded-xl bg-amber-600 text-white font-manrope font-bold text-sm flex items-center justify-center gap-2 hover:bg-amber-500 disabled:opacity-50 disabled:cursor-not-allowed shadow-lg shadow-amber-600/20 transition-colors whitespace-nowrap",children:[E?e.jsx(fe,{className:"h-4 w-4 animate-spin"}):e.jsx(de,{className:"h-4 w-4"}),E?"Analysing building…":"Personalise my proposal"]})]}),$&&e.jsx("p",{className:"mt-3 text-sm font-manrope text-red-600",children:$})]})},Ge=({profile:r,compact:w=!1})=>{const[c,j]=i.useState(!0),u=r.photo&&c,h=[];r.footprint!=null&&h.push({icon:Ee,label:"Rooftop footprint",value:`${r.footprint.toLocaleString()} sqm`}),r.existingHeight!=null&&h.push({icon:je,label:"Existing height",value:`${r.existingHeight} m${r.storeys?` (~${r.storeys} storeys)`:""}`}),r.maxHeightControl!=null&&h.push({icon:De,label:"Planning height control",value:`${r.maxHeightControl} m`}),r.additionalStoreys!=null&&r.additionalStoreys>0&&h.push({icon:Oe,label:"Potential additional storeys",value:`~${r.additionalStoreys}`}),r.zoning&&h.push({icon:ue,label:"Zoning",value:r.zoning}),r.council&&h.push({icon:ue,label:"Council",value:r.council});const x=r.assessed?`Assessed building${r.strataPlan?` · ${r.strataPlan}`:""}`:"Building profile";return w?e.jsxs("div",{className:"rounded-2xl border border-slate-200 bg-white shadow-sm p-4 space-y-3",children:[e.jsxs("div",{className:"flex gap-3 items-start",children:[u&&e.jsx("img",{src:r.photo,alt:`Street view of ${r.address}`,className:"w-16 h-16 rounded-xl object-cover shrink-0 bg-slate-100",loading:"lazy",onError:()=>j(!1)}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("p",{className:"text-[10px] font-bold text-amber-600 uppercase tracking-wider",children:x}),e.jsx("p",{className:"text-sm font-bold text-slate-900 font-sora leading-snug mt-0.5",children:r.address})]})]}),h.length>0&&e.jsx("div",{className:"grid grid-cols-2 gap-2",children:h.slice(0,4).map(g=>e.jsxs("div",{className:"rounded-lg bg-slate-50 border border-slate-100 p-2.5",children:[e.jsx("p",{className:"text-[9px] uppercase tracking-wider text-slate-400 font-manrope",children:g.label}),e.jsx("p",{className:"text-xs font-bold text-slate-900 font-sora mt-0.5",children:g.value})]},g.label))}),h.length===0&&e.jsx("p",{className:"text-xs font-manrope text-slate-500",children:"No published metrics found — adjust the sliders manually, or request an assessment and we'll research it for you."})]}):e.jsxs("div",{className:"rounded-2xl border border-slate-200 bg-white shadow-sm overflow-hidden",children:[u&&e.jsxs("div",{className:"relative h-52 sm:h-64 w-full",children:[e.jsx("img",{src:r.photo,alt:`Street view of ${r.address}`,className:"w-full h-full object-cover",loading:"lazy",onError:()=>j(!1)}),e.jsxs("div",{className:"absolute inset-x-0 bottom-0 bg-gradient-to-t from-slate-900/90 to-transparent p-4",children:[e.jsxs("p",{className:"font-manrope text-xs uppercase tracking-widest text-amber-400 flex items-center gap-1.5",children:[e.jsx(Re,{className:"h-3.5 w-3.5"})," Your building"]}),e.jsx("p",{className:"font-sora text-lg font-semibold text-white",children:r.address})]})]}),e.jsxs("div",{className:"p-6 sm:p-8 space-y-5",children:[!u&&e.jsx("p",{className:"font-sora text-lg font-semibold text-slate-900",children:r.address}),r.strataPlan&&e.jsx("p",{className:"font-manrope text-xs uppercase tracking-widest text-amber-600",children:x}),e.jsx("div",{className:"grid sm:grid-cols-2 lg:grid-cols-3 gap-4",children:h.map(g=>e.jsxs("div",{className:"rounded-xl border border-slate-200 bg-slate-50 p-4",children:[e.jsx(g.icon,{className:"h-4 w-4 text-amber-600 mb-2"}),e.jsx("p",{className:"text-xs uppercase tracking-widest text-slate-400 font-manrope",children:g.label}),e.jsx("p",{className:"font-sora text-lg font-semibold text-slate-900 mt-1",children:g.value})]},g.label))}),h.length===0&&e.jsx("p",{className:"font-manrope text-sm text-slate-500",children:"We couldn't find published metrics for this building — adjust the sliders below manually, or request an assessment and we'll research it for you."})]})]})},k=r=>new Intl.NumberFormat("en-AU",{style:"currency",currency:"AUD",maximumFractionDigits:0}).format(r),Lt=()=>{const[r,w]=i.useState([]),[c,j]=i.useState([6e5]),[u,h]=i.useState([16]),[x,g]=i.useState([250]),[v,E]=i.useState(0),[d,$]=i.useState({name:"",email:"",ph
11one:"",address:"",strataPlan:""}),[J,V]=i.useState(!1),[I,U]=i.useState(!1),[ae,X]=i.useState(!1),[s,n]=i.useState(null);i.useEffect(()=>{const t=_e("special-levy-calculator");t&&(t.capitalCost&&j(t.capitalCost),t.lots&&h(t.lots),t.footprint&&g(t.footprint),typeof t.selectedIdx=="number"&&E(t.selectedIdx),t.form&&$(t.form))},[]),i.useEffect(()=>{Ae("special-levy-calculator",{capitalCost:c,lots:u,footprint:x,selectedIdx:v,form:d})},[c,u,x,v,d]);const S=t=>{if(n(t),V(!0),t.footprint!=null&&t.footprint>=50&&g([Math.min(1e3,Math.max(100,t.footprint))]),t.suburb&&r.length>0){const o=t.suburb.toLowerCase().trim(),A=r.findIndex(M=>M.suburb.toLowerCase().trim()===o);A>=0&&E(A)}$(o=>({...o,address:t.address,strataPlan:t.strataPlan??o.strataPlan})),se.success("Proposal personalised with your building's data.")};i.useEffect(()=>{(async()=>{const{data:o}=await te.from("airspace_values").select("id, postcode, suburb, calculated_per_sqm, value_15_pct, value_25_pct").order("calculated_per_sqm",{ascending:!1});o&&o.length>0&&w(o)})()},[]);const p=r[v],R=i.useMemo(()=>Math.round(c[0]/Math.max(u[0],1)),[c,u]),C=i.useMemo(()=>p?Math.round(x[0]*p.value_15_pct):0,[x,p]),q=i.useMemo(()=>p?Math.round(x[0]*p.value_25_pct):0,[x,p]),_=i.useMemo(()=>Math.max(0,C-c[0]),[C,c]),m=C>=c[0],P=()=>{const t=window.open("","_blank");if(!t)return;const o=new Date().toLocaleDateString("en-AU",{day:"numeric",month:"long",year:"numeric"}),A=s?[s.footprint!=null?`<tr><td>Rooftop footprint</td><td><strong>${s.footprint.toLocaleString()} sqm</strong></td></tr>`:"",s.existingHeight!=null?`<tr><td>Existing height</td><td><strong>${s.existingHeight} m${s.storeys?` (~${s.storeys} storeys)`:""}</strong></td></tr>`:"",s.maxHeightControl!=null?`<tr><td>Planning height control</td><td><strong>${s.maxHeightControl} m</strong></td></tr>`:"",s.additionalStoreys!=null&&s.additionalStoreys>0?`<tr><td>Potential additional storeys</td><td><strong>~${s.additionalStoreys}</strong></td></tr>`:"",s.zoning?`<tr><td>Zoning</td><td>${s.zoning}</td></tr>`:"",s.council?`<tr><td>Council</td><td>${s.council}</td></tr>`:"",s.lep?`<tr><td>Planning instrument</td><td>${s.lep}</td></tr>`:"",s.strataPlan?`<tr><td>Strata plan</td><td>${s.strataPlan}</td></tr>`:""].filter(Boolean).join(""):"";t.document.write(`<!DOCTYPE html><html><head><title>Strata Committee Summary — Rooftop Airspace vs Special Levy</title>
12<style>
13  body{font-family:Georgia,serif;color:#0f1b2d;max-width:720px;margin:40px auto;padding:0 24px;line-height:1.6}
14  h1{font-size:26px;border-bottom:3px solid #EAB308;padding-bottom:12px}
15  h2{font-size:18px;margin-top:28px}
16  table{width:100%;border-collapse:collapse;margin-top:12px;font-size:14px}
17  th,td{border:1px solid #ccc;padding:10px;text-align:left}
18  th{background:#0f1b2d;color:#fff}
19  .good{color:#166534;font-weight:bold}
20  .bad{color:#991b1b;font-weight:bold}
21  .foot{margin-top:32px;font-size:12px;color:#666;border-top:1px solid #ccc;padding-top:12px}
22  .hero-img{width:100%;border-radius:8px;margin-top:8px}
23</style></head><body>
24<h1>Strata Committee Summary Report</h1>
25<p><strong>Rooftop Airspace vs Special Levy Comparison</strong> — prepared ${o} by Buy Airspace (buyairspace.com.au)</p>
26${s?`<h2>Your Building</h2>
27<p><strong>${s.address}</strong>${s.assessed?" — independently assessed by Buy Airspace":""}</p>
28${s.photo?`<img class="hero-img" src="${s.photo}" alt="Street view of ${s.address}" />`:""}
29${A?`<table><tr><th>Building metric</th><th>Value</th></tr>${A}</table>`:""}`:""}
30<h2>Building Assumptions</h2>
31<ul>
32  <li>Estimated capital works cost: <strong>${k(c[0])}</strong></li>
33  <li>Existing lots: <strong>${u[0]}</strong></li>
34  <li>Estimated rooftop footprint: <strong>${x[0]} sqm</strong></li>
35  <li>Location: <strong>${p?`${p.suburb} ${p.postcode}`:"Not selected"}</strong></li>
36</ul>
37<h2>Side-by-Side Comparison</h2>
38<table>
39  <tr><th></th><th>Special Levy Route</th><th>Airspace Development Model</th></tr>
40  <tr><td>Out-of-pocket per owner</td><td class="bad">${k(R)}</td><td class="good">$0</td></tr>
41  <tr><td>Reserve / sinking fund</td><td class="bad">Depleted</td><td class="good">${_>0?`Potential surplus of ~${k(_)}`:"Preserved"}</td></tr>
42  <tr><td>Remediation funding</td><td>Owner-funded, staged</td><td class="good">100% covered by developer / airspace rights</td></tr>
43  <tr><td>Ongoing levies</td><td>Unchanged or higher</td><td class="good">Est. 10–15% quarterly reduction (expanded unit entitlements)</td></tr>
44  <tr><td>Building upgrades</td><td>Baseline patch repairs</td><td class="good">Full remediation + new lift, waterproofing & facade scope negotiable</td></tr>
45</table>
46<p>Estimated rooftop airspace value in ${p?p.suburb:"your suburb"}: <strong>${k(C)} – ${k(q)}</strong>.</p>
47<h2>How Buy Airspace Manages Your Uplift</h2>
48<table>
49  <tr><th>Phase</th><th>What we handle for the committee</th></tr>
50  <tr><td>1. Feasibility</td><td>Planning controls, structural capacity and market valuation of the rooftop airspace.</td></tr>
51  <tr><td>2. Design &amp; Planning</td><td>Concept design, consultant coordination and the development application with council.</td></tr>
52  <tr><td>3. Developer Procurement</td><td>Competitive tender to vetted developers, heads of terms, and airspace rights agreement negotiation.</td></tr>
53  <tr><td>4. Delivery &amp; Registration</td><td>Remediation works oversight, strata subdivision and registration of the new lots at settlement.</td></tr>
54</table>
55<div class="foot">This is a preliminary estimate only. A full feasibility assessment considers planning controls, structural capacity and market conditions. Contact Buy Airspace for a building assessment — buyairspace.com.au/contact.</div>
56<script>window.print()<\/script>
57</body></html>`),t.document.close()},z=async t=>{if(t.preventDefault(),!d.name.trim()||!d.email.trim()||!d.address.trim()){se.error("Please fill in your name, email, and building address.");return}if(!J){se.error("Please select the property from the list so we assess the exact building.");return}U(!0);const o=[d.strataPlan.trim()?`Strata Plan: ${d.strataPlan.trim()}`:null,"Source: Airspace vs Special Levy Calculator",`Capital works: ${k(c[0])} | Lots: ${u[0]} | Footprint: ${x[0]} sqm | Suburb: ${p?p.suburb:"n/a"}`,s?["--- Building profile ---",`Address: ${s.address}`,s.footprint!=null?`Footprint: ${s.footprint} sqm`:null,s.existingHeight!=null?`Existing height: ${s.existingHeight} m${s.storeys?` (~${s.storeys} storeys)`:""}`:null,s.maxHeightControl!=null?`Height control: ${s.maxHeightControl} m`:null,s.additionalStoreys!=null?`Potential additional storeys: ~${s.additionalStoreys}`:null,s.zoning?`Zoning: ${s.zoning}`:null,s.council?`Council: ${s.council}
57`:null,s.assessed?"Assessed building: yes":null].filter(Boolean).join(`
58`):null].filter(Boolean).join(`
59`),{error:A}=await te.from("assessment_requests").insert({valuation_id:null,property_address:d.address.trim(),requester_name:d.name.trim(),requester_email:d.email.trim(),requester_phone:d.phone.trim()||null,message:o});if(A){U(!1),se.error("Failed to submit request. Please try again.");return}te.functions.invoke("notify-assessment-request",{body:{property_address:d.address.trim(),requester_name:d.name.trim(),requester_email:d.email.trim(),requester_phone:d.phone.trim()||void 0,message:o}}).catch(()=>{}),U(!1),X(!0)},F="text-xs font-semibold text-slate-700 uppercase tracking-wide font-manrope",N="text-sm font-bold text-slate-900 font-sora whitespace-nowrap",H="flex justify-between text-[11px] text-slate-400 font-manrope";return e.jsxs("main",{className:"page-light min-h-screen bg-slate-100 text-slate-900 font-manrope",children:[e.jsxs(ve,{children:[e.jsx("title",{children:"Capital Works Fund & Special Levy Calculator | Strata Funding"}),e.jsx("meta",{name:"description",content:"Strata funding calculator: compare a special levy or capital works fund top-up with selling rooftop airspace to pay for strata repairs and capital works."}),e.jsx("link",{rel:"canonical",href:"https://www.buyairspace.com.au/special-levy-calculator"}),e.jsx("meta",{property:"og:title",content:"Capital Works Fund & Special Levy Calculator | Strata Funding"}),e.jsx("meta",{property:"og:description",content:"Compare a special levy or capital works fund top-up with selling rooftop airspace to fund strata repairs and capital works."}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://www.buyairspace.com.au/special-levy-calculator"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"})]}),e.jsx(Ne,{}),e.jsxs("div",{className:"pt-24 md:pt-28 pb-16 px-4 sm:px-6",children:[e.jsxs(pe.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.5},className:"max-w-7xl mx-auto grid grid-cols-1 lg:grid-cols-12 bg-white rounded-3xl shadow-2xl border border-slate-200 overflow-hidden",children:[e.jsxs("aside",{className:"lg:col-span-4 bg-slate-50 border-b lg:border-b-0 lg:border-r border-slate-200 p-6 sm:p-8 space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-slate-400 mb-4",children:"Personalise proposal"}),e.jsx(Ze,{onProfile:S}),e.jsx("p",{className:"mt-3 text-xs text-slate-400 leading-relaxed",children:"We'll pull the photo, rooftop footprint, height, planning controls and any existing Buy Airspace assessment — then pre-fill the calculator."})]}),s&&e.jsx(pe.div,{initial:{opacity:0,y:12},animate:{opacity:1,y:0},transition:{duration:.4},children:e.jsx(Ge,{profile:s,compact:!0})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx("h3",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-slate-400",children:"Calculator inputs"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-end gap-3",children:[e.jsxs("label",{className:F,children:["Capital works cost",e.jsx("span",{className:"block text-[10px] text-slate-400 font-normal normal-case tracking-normal",children:"Waterproofing / lifts / structural"})]}),e.jsx("span",{className:N,children:k(c[0])})]}),e.jsx(ne,{value:c,onValueChange:j,min:1e5,max:3e6,step:25e3,className:"py-2 [&>span:first-child]:bg-slate-200 [&>span:first-child>span]:bg-amber-600 [&_[role=slider]]:border-amber-600 [&_[role=slider]]:bg-white"}),e.jsxs("div",{className:H,children:[e.jsx("span",{children:"$100k"}),e.jsx("span",{children:"$3M"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-end gap-3",children:[e.jsx("label",{className:F,children:"Existing lots"}),e.jsxs("span",{className:N,children:[u[0]," lots"]})]}),e.jsx(ne,{value:u,onValueChange:h,min:4,max:80,step:1,className:"py-2 [&>span:first-child]:bg-slate-200 [&>span:first-child>span]:bg-amber-600 [&_[role=slider]]:border-amber-600 [&_[role=slider]]:bg-white"}),e.jsxs("div",{className:H,children:[e.jsx("span",{children:"4"}),e.jsx("span",{children:"80"})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex justify-between items-end gap-3",children:[e.jsx("label",{className:F,children:"Rooftop footprint"}),e.jsxs("span",{className:N,children:[x[0]," sqm"]})]}),e.jsx(ne,{value:x,onValueChange:g,min:100,max:1e3,step:10,className:"py-2 [&>span:first-child]:bg-slate-200 [&>span:first-child>span]:bg-amber-600 [&_[role=slider]]:border-amber-600 [&_[role=slider]]:bg-white"}),e.jsxs("div",{className:H,children:[e.jsx("span",{children:"100 sqm"}),e.jsx("span",{children:"1,000 sqm"})]})]}),e.jsxs("div",{className:"space-y-2 pt-2 border-t border-slate-200",children:[e.jsx("label",{className:F,children:"Building location suburb"}
59),e.jsx("select",{value:v,onChange:t=>E(Number(t.target.value)),className:"w-full p-3 rounded-xl border border-slate-200 bg-white text-slate-900 text-sm font-manrope shadow-sm focus:outline-none focus:ring-2 focus:ring-amber-500/20 focus:border-amber-500 appearance-none cursor-pointer",style:{backgroundImage:`url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")`,backgroundRepeat:"no-repeat",backgroundPosition:"right 12px center"},children:r.map((t,o)=>e.jsxs("option",{value:o,children:[t.suburb," — ",t.postcode]},t.id))})]})]})]}),e.jsxs("div",{className:"lg:col-span-8 p-6 sm:p-10",children:[e.jsxs("header",{className:"mb-10",children:[e.jsx("span",{className:"inline-block px-3 py-1 bg-amber-50 text-amber-700 border border-amber-200 rounded-full text-[10px] font-bold uppercase tracking-widest mb-4",children:"Strata funding comparison"}),e.jsx("h1",{className:"font-sora text-3xl md:text-4xl font-extrabold text-slate-900 tracking-tight mb-3",children:"Capital Works Fund & Special Levy Calculator"}),e.jsx("p",{className:"text-base text-slate-500 max-w-2xl leading-relaxed",children:"Strata funding, compared side by side. See how a special levy or capital works fund top-up stacks up against selling your rooftop airspace to pay for strata repairs and your capital works plan — without out-of-pocket levies for owners."})]}),e.jsxs("div",{className:"grid md:grid-cols-2 gap-6 mb-14",children:[e.jsxs("div",{className:"p-6 sm:p-8 rounded-3xl border border-slate-200 bg-white hover:shadow-lg transition-shadow",children:[e.jsx("div",{className:"inline-block px-3 py-1 bg-red-50 text-red-600 rounded-full text-[10px] font-bold uppercase tracking-wider mb-5",children:"Traditional Special Levy"}),e.jsx("div",{className:"text-4xl md:text-5xl font-bold text-slate-900 font-sora mb-1.5",children:k(R)}),e.jsxs("p",{className:"text-sm font-medium text-slate-500 mb-6",children:["Immediate cost per owner — ",k(c[0])," ÷ ",u[0]," lots"]}),e.jsxs("ul",{className:"space-y-3.5 border-t border-slate-100 pt-5 text-sm text-slate-600",children:[e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(ie,{className:"h-4.5 w-4.5 h-[18px] w-[18px] mt-0.5 text-red-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Reserve fund impact:"})," Depleted — owners fund works directly"]})]}),e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(ie,{className:"h-[18px] w-[18px] mt-0.5 text-red-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Building upgrades:"})," Only baseline patch repairs"]})]}),e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(ie,{className:"h-[18px] w-[18px] mt-0.5 text-red-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Ongoing levies:"})," Unchanged or increased post-works"]})]})]})]}),e.jsxs("div",{className:"p-6 sm:p-8 rounded-3xl border-2 border-amber-500 bg-amber-50/40 relative overflow-hidden",children:[e.jsx("div",{className:"absolute top-0 right-0 bg-amber-600 text-white text-[10px] font-bold px-4 py-1.5 rounded-bl-2xl uppercase tracking-[0.15em]",children:"Best value"}),e.jsx("div",{className:"inline-block px-3 py-1 bg-amber-100 text-amber-700 rounded-full text-[10px] font-bold uppercase tracking-wider mb-5",children:"Buy Airspace Development Model"}),e.jsx("div",{className:"text-4xl md:text-5xl font-bold text-emerald-600 font-sora mb-1.5",children:"$0"}),e.jsxs("p",{className:"text-sm font-medium text-slate-500 mb-6",children:["Out-of-pocket per owner — airspace value",p?` (${p.suburb})`:"",": ",k(C)," – ",k(q)]}),e.jsxs("ul",{className:"space-y-3.5 border-t border-amber-200/60 pt-5 text-sm text-slate-700",children:[e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(he,{className:"h-[18px] w-[18px] mt-0.5 text-emerald-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Remediation funding:"})," 100% covered by developer / airspace rights"]})]}),e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(ze,{className:"h-[18px] w-[18px] mt-0.5 text-emerald-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Ongoing levy impact:"}
59)," Est. 10–15% quarterly reduction from expanded unit entitlements"]})]}),e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(Fe,{className:"h-[18px] w-[18px] mt-0.5 text-emerald-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Sinking fund:"})," ",m&&_>0?`Potential surplus of ~${k(_)} after funding works`:"Preserved — no drawdown required"]})]}),e.jsxs("li",{className:"flex items-start gap-2.5",children:[e.jsx(Me,{className:"h-[18px] w-[18px] mt-0.5 text-emerald-500 shrink-0"}),e.jsxs("span",{children:[e.jsx("strong",{className:"text-slate-900",children:"Building upgrades:"})," Full remediation with lift, waterproofing & facade scope negotiable"]})]})]})]})]}),e.jsxs("section",{className:"mb-14",children:[e.jsx("p",{className:"text-[10px] font-bold uppercase tracking-[0.2em] text-slate-400 mb-2",children:"End-to-end delivery"}),e.jsxs("h2",{className:"font-sora text-xl font-bold text-slate-900 mb-2",children:["How Buy Airspace manages ",s?`the uplift at ${s.address.split(",")[0]}`:"your building's airspace uplift"]}),e.jsx("p",{className:"text-sm text-slate-500 mb-7 max-w-2xl",children:"We act for the owners corporation — never the developer — from first feasibility through to registration of the new lots."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6",children:[{icon:de,phase:"Phase 01",title:"Feasibility",desc:"Planning controls, structural capacity and market valuation of your rooftop — starting with an initial assessment."},{icon:Qe,phase:"Phase 02",title:"Design & Planning",desc:"Concept design, consultant coordination and the development application with council."},{icon:Ie,phase:"Phase 03",title:"Developer Procurement",desc:"Competitive tender to vetted developers, heads of terms and airspace rights negotiation — so owners keep leverage."},{icon:He,phase:"Phase 04",title:"Delivery & Registration",desc:"Remediation works oversight, strata subdivision and registration of new lots at settlement."}].map(t=>e.jsxs("div",{children:[e.jsx("div",{className:"h-1.5 w-full bg-amber-500 rounded-full mb-4"}),e.jsxs("p",{className:"text-[10px] font-bold text-amber-600 uppercase tracking-wider mb-1 flex items-center gap-1.5",children:[e.jsx(t.icon,{className:"h-3.5 w-3.5"})," ",t.phase]}),e.jsx("p",{className:"text-sm font-bold text-slate-900 font-sora",children:t.title}),e.jsx("p",{className:"text-xs text-slate-500 mt-1.5 leading-relaxed",children:t.desc})]},t.phase))})]}),e.jsxs("section",{className:"mb-14",children:[e.jsx("h2",{className:"font-sora text-xl font-bold text-slate-900 mb-2",children:"Keep building your proposal"}),e.jsx("p",{className:"text-sm text-slate-500 mb-6",children:"Everything your committee needs to take this from idea to a vote."}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4",children:[{to:"/get-assessment",icon:Te,label:"Airspace Calculator",desc:"Detailed feasibility inputs"},{to:"/mapbox",icon:We,label:"Airspace Map",desc:"See assessed buildings nearby"},{to:"/legal-guide",icon:Je,label:"Legal Guide",desc:"Airspace rights & strata law"},{to:"/voting",icon:Ve,label:"Voting Portal",desc:"Run the committee vote"},{to:"/strata-jv",icon:ke,label:"Strata JV Rebuild",desc:"Knock down & rebuild option"},{to:"/book-consultation",icon:Ke,label:"Book a Consultation",desc:"1-hour strategy session"}].map(t=>e.jsxs(Se,{to:t.to,className:"group flex flex-col p-4 bg-white rounded-xl border border-slate-200 hover:border-amber-400 hover:shadow-md transition-all",children:[e.jsx("div",{className:"w-10 h-10 rounded-full bg-slate-50 flex items-center justify-center group-hover:bg-amber-50 mb-3 transition-colors",children:e.jsx(t.icon,{className:"h-5 w-5 text-slate-500 group-hover:text-amber-600 transition-colors"})}),e.jsx("span",{className:"text-sm font-bold text-slate-800 font-sora",children:t.label}),e.jsx("span",{className:"text-xs text-slate-400 mt-0.5",children:t.desc})]},t.to))})]}),e.jsx("footer",{className:"bg-slate-900 rounded-[2rem] p-6 sm:p-10 text-white",children:e.jsxs("div",{className:"grid md:grid-cols-2 gap-8 md:gap-12 items-start",children:[e.jsxs("div",{className:"space-y-5",children:[e.jsx("h3",{className:"font-sora text-2xl md:text-3xl font-bold",children:"Take the next step"}),e.jsx("p",{className:"text-slate-400 text-sm leading-relaxed",children:"Share the comparison with your committee, or get a tailored feasibility assessment for your building."}),e.jsxs("button",{type:"button",onClick:P,className:"px-6 py-3.5 bg-amber-600 hover:bg-amber-500 rounded-2xl font-bold font-manrope text-sm transition-colors flex items-center gap-2.5",children:[e.jsx(Ue,{className:"h-4 w-4"})," Download Airspace 360 Strata Brief (PDF)"]})]}),e.jsx("div",{className:"bg-white/5 border border-white/10 p-6 rounded-3xl",children:ae?e.jsxs("div",{className:"text-center py-6",children:[e.jsx(he,{className:"h-10 w-10 text-amber-400 mx-auto mb-3"}),e.jsx("p",{className:"font-sora text-lg font-semibold",children:"Request submitted!"}),e.jsx("p",{className:"font-manrope text-sm text-slate-400 mt-1",children:"We'll review your building and be in touch shortly."})]}):e.jsxs("form",{onSubmit:z,className:"space-y-4",children:[e.jsxs("p",{className:"text-xs font-bold uppercase tracking-widest text-amber-400 flex items-center gap-2",children:[e.jsx(Xe,{className:"h-4 w-4"})," Request a feasibility assessment"]}),e.jsxs("div",{className:"grid sm:grid-cols-2 gap-3",children:[e.jsx("input",{id:"slc-name",value:d.name,onChange:t=>$(o=>({...o,name:t.target.value})),placeholder:"Full name *",required:!0,className:"w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-sm font-manrope placeholder:text-slate-500 focus:outline-none focus:border-amber-500"}),e.jsx("input",{id:"slc-email",type:"email",value:d.email,onChange:t=>$(o=>({...o,email:t.target.value})),placeholder:"Email *",required:!0,className:"w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-sm font-manrope placeholder:text-slate-500 focus:outline-none focus:border-amber-500"}),e.jsx("input",{id:"slc-phone",type:"tel",value:d.phone,onChange:t=>$(o=>({...o,phone:t.target.value})),placeholder:"Phone (optional)",className:"w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-sm font-manrope placeholder:text-slate-500 focus:outline-none focus:border-amber-500"}),e.jsx("input",{id:"slc-sp",value:d.strataPlan,onChange:t=>$(o=>({...o,strataPlan:t.target.value})),placeholder:"Strata plan # e.g. SP12345",className:"w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-sm font-manrope placeholder:text-slate-500 focus:outline-none focus:border-amber-500"})]}),e.jsx($e,{id:"slc-address",value:d.address,onChange:t=>{$(o=>({...o,address:t})),V(!1)},onSelect:()=>V(!0),placeholder:"Building address * — pick from the list",className:"h-auto w-full px-4 py-3 bg-slate-800 border border-slate-700 rounded-xl text-sm font-manrope placeholder:text-slate-500 focus:outline-none focus:border-amber-500"}),e.jsxs("button",{type:"submit",disabled:I,className:"w-full py-3.5 bg-white text-slate-900 rounded-xl font-bold font-manrope text-sm hover:bg-slate-100 transition-colors shadow-lg flex items-center justify-center gap-2 disabled:opacity-60",children:[I?e.jsx(fe,{className:"h-4 w-4 animate-spin"}):e.jsx(Ce,{className:"h-4 w-4"}),"Request Feasibility Assessment"]}),e.jsx("p",{className:"text-[11px] text-slate-500 font-manrope text-center",children:"Preliminary figures only. A full assessment considers planning controls, structural capacity and market conditions."})]})})]})})]})]}),e.jsxs("div",{className:"mx-auto mt-8 max-w-5xl",children:[e.jsx(Le,{}),e.jsx(qe,{className:"mt-6"})]})]}),e.jsx(Pe,{})]})};export{Lt 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.