PageSourceSearch

https://www.buyairspace.com.au/assets/AirspaceIndexSuburb-Bg228mWN.js

js buyairspace.com.au collected 2026-10-06 15:03:32 UTC 4,558 bytes, 1 lines download raw bytes

1import{h as I,r as o,k as L,l as m,bs as x,by as R,bz as A,j as e,H as k,bt as d,bu as P,bv as U,bw as B,L as b,e as f,a as q}from"./index-CzwC4j7R.js";import{I as z,a as E,K as h}from"./IndexShell-CPoDLz_k.js";function J(){const{council:i,suburb:n}=I(),[r,v]=o.useState(""),[H,S]=o.useState(""),[t,N]=o.useState(null),[l,g]=o.useState(!0),[y,$]=o.useState([]);o.useEffect(()=>{window.scrollTo(0,0);let a=!1;return g(!0),(async()=>{try{const c=(await L()).find(u=>m(u.name)===(i??"").toLowerCase());if(a||!c)return;v(x(c.name)),S(c.name);const w=(await R(c.name)).find(u=>m(u.name)===(n??"").toLowerCase());if(a||!w)return;N(w);const C=await A(c.name);a||$(C.filter(u=>m(u.suburb)===(n??"").toLowerCase()))}catch(j){console.error(j)}finally{a||g(!1)}})(),()=>{a=!0}},[i,n]);const s=t?x(t.name):x((n??"").replace(/-/g," ")),p=`https://www.buyairspace.com.au/airspace-index/${i}/${n}`;return e.jsxs(z,{children:[e.jsxs(k,{children:[e.jsx("title",{children:`${s} Airspace: Unused Rooftop Development Potential`}),e.jsx("meta",{name:"description",content:`Unused rooftop airspace above buildings in ${s} — indicative floor area and value, suburb and council breakdown.`}),e.jsx("link",{rel:"canonical",href:p}),e.jsx("meta",{property:"og:title",content:`${s} Airspace Index`}),e.jsx("meta",{property:"og:description",content:`Unused rooftop airspace above buildings in ${s}.`}),e.jsx("meta",{property:"og:url",content:p}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"Place",name:`${s}, NSW`,address:{"@type":"PostalAddress",addressLocality:s,addressRegion:"NSW",addressCountry:"AU"},url:p})}),e.jsx("script",{type:"application/ld+json",children:JSON.stringify({"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:[{"@type":"ListItem",position:1,name:"Home",item:"https://www.buyairspace.com.au/"},{"@type":"ListItem",position:2,name:"NSW Airspace Index",item:"https://www.buyairspace.com.au/airspace-index"},{"@type":"ListItem",position:3,name:r||"Council",item:`https://www.buyairspace.com.au/airspace-index/${i}`},{"@type":"ListItem",position:4,name:s,item:p}]})})]}),e.jsxs(E,{eyebrow:r?`${r} council area`:"Airspace Index",title:s,highlight:"Airspace",intro:`What the planning controls still allow above the existing rooftops in ${s}, suburb by suburb.`,crumbs:[{label:"Airspace Index",href:"/airspace-index"},{label:r||"Council",href:`/airspace-index/${i}`},{label:s}],children:[e.jsxs("div",{className:"mt-10 grid grid-cols-2 lg:grid-cols-4 gap-3",children:[e.jsx(h,{label:"Buildings assessed",value:l?"—":d((t==null?void 0:t.buildings)??0),hint:t?`${d(t.strataBuildings)} strata · ${d(t.nonstrataBuildings)} company title`:void 0}),e.jsx(h,{label:"Unused floor area",value:l?"—":P((t==null?void 0:t.unusedSqm)??0)}),e.jsx(h,{label:"Indicative value",value:l?"—":U((t==null?void 0:t.totalValue)??0)}),e.jsx(h,{label:"Rooftop homes it could hold",value:l?"—":d(B((t==null?void 0:t.unusedSqm)??0,(t==null?void 0:t.atticSqm)??0))})]}),!l&&e.jsx("p",{className:"mt-4 font-body text-sm text-primary-foreground/60",children:"One home per 75 m² of new floor space. Unused attic space is counted at 50% liveable — so 150 m² of attic area makes one home."})]}),e.jsxs("section",{className:"container mx-auto px-6 py-14",children:[y.length>0&&e.jsxs("div",{className:"mt-12",children:[e.jsxs("h2",{className:"font-display text-xl md:text-2xl font-bold text-foreground",children:["Streets in ",s]}),e.jsx("p",{className:"mt-2 font-body text-sm text-muted-foreground",children:"Open a street to see every building on it and the airspace above them."}),e.jsx("div",{className:"mt-4 flex flex-wrap gap-2",children:y.map(a=>e.jsxs(b,{to:`/airspace-index/${i}/${n}/${m(a.street)}`,className:"rounded-full border border-border px-3 py-1.5 font-body text-sm text-muted-foreground hover:border-gold hover:text-gold transition-colors",children:[x(a.street)," ",e.jsxs("span",{className:"text-xs opacity-70",children:["(",d(a.buildings),")"]})]},a.street))})]}),e.jsxs("div",{className:"mt-8 flex flex-col sm:flex-row gap-3",children:[e.jsx(f,{asChild:!0,size:"lg",children:e.jsx(b,{to:"/get-assessed",children:"Check your own building"})}),e.jsx(f,{asChild:!0,size:"lg",variant:"outline",children:e.jsx(b,{to:"/contact",children:"Talk to the team"})}),e.jsx(f,{asChild:!0,size:"lg",variant:"outline",children:e.jsxs(b,{to:`/airspace-index/${i}`,children:["All ",r," suburbs"]})})]})]}),e.jsx(q,{})]})}
1export{J 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.