88 Grid ,
99 Heading ,
1010 Icon ,
11+ Link ,
1112 List ,
1213 Stack ,
1314 Text ,
@@ -72,7 +73,8 @@ const OfficeUtilizationPage = (
7273 ) ;
7374
7475 const t = useTranslations ( "OfficeUtilization" ) ;
75- const { locationData, comparisonCities } = props ;
76+ const { locationData, comparisonCities : comparisonCitiesFromProps } = props ;
77+ const comparisonCities = comparisonCitiesFromProps as LocationData [ ] ;
7678 let [ sortedBlogArticles ] = createShuffle ( [
7779 sortedBlogArticlesButNotShuffled ,
7880 locationData . city ,
@@ -85,12 +87,10 @@ const OfficeUtilizationPage = (
8587 ] ,
8688 } ) ;
8789
88- const comparisonCitiesData = ( comparisonCities as LocationData [ ] ) . map (
89- ( city ) => ( {
90- allocation : parseInt ( city . attendance_high_percentage ) ,
91- name : city . city ,
92- } ) ,
93- ) ;
90+ const comparisonCitiesData = comparisonCities . map ( ( city ) => ( {
91+ allocation : parseInt ( city . attendance_high_percentage ) ,
92+ name : city . city ,
93+ } ) ) ;
9494
9595 const mainCityData = {
9696 allocation : parseInt ( locationData . attendance_high_percentage ) ,
@@ -145,14 +145,18 @@ const OfficeUtilizationPage = (
145145 Util_Peak_High : locationData . util_peak_high_percentage ,
146146 } ) ;
147147
148+ const kebabCasedLocation = kebabCase ( locationData . city . toLowerCase ( ) ) ;
149+
150+ const fullUrl = `${ url } /office-utilization/${ kebabCasedLocation } ` ;
151+
148152 return (
149153 < >
150154 < NextSeo
151155 title = { title }
152156 description = { description }
153- canonical = { ` ${ url } /office-utilization/ ${ locationData . city . toLowerCase ( ) } ` }
157+ canonical = { fullUrl }
154158 openGraph = { {
155- url,
159+ url : fullUrl ,
156160 type : "website" ,
157161 title : title ,
158162 description,
@@ -182,7 +186,7 @@ const OfficeUtilizationPage = (
182186 >
183187 < Container maxW = "3xl" paddingTop = { 4 } colorPalette = { "orange" } >
184188 < Stack direction = "row" justify = "space-between" align = "center" >
185- < Heading size = "3xl" color = { "orange.1000" } marginTop = { 4 } >
189+ < Heading size = "3xl" color = { "orange.1000" } marginTop = { 4 } as = { "h1" } >
186190 Office Utilization — { City } • 2025
187191 </ Heading >
188192 < Box >
@@ -418,6 +422,32 @@ const OfficeUtilizationPage = (
418422 </ Container >
419423 </ Box >
420424
425+ < Box marginTop = { 6 } >
426+ < Container maxW = "4xl" >
427+ < Heading as = { "h2" } fontWeight = { 500 } >
428+ Related Office Utilization Pages
429+ </ Heading >
430+ < Stack direction = "row" gap = { 2 } >
431+ { comparisonCities . map ( ( city , index ) => (
432+ < >
433+ < Box key = { city . city } >
434+ < Link colorPalette = "orange" asChild >
435+ < NextLink
436+ href = { `/office-utilization/${ kebabCase ( city . city . toLowerCase ( ) ) } ` }
437+ >
438+ < Text textWrap = { "nowrap" } > { city . city } </ Text >
439+ </ NextLink >
440+ </ Link >
441+ </ Box >
442+ { index < comparisonCities . length - 1 && (
443+ < Box borderWidth = { 0 } > { "•" } </ Box >
444+ ) }
445+ </ >
446+ ) ) }
447+ </ Stack >
448+ </ Container >
449+ </ Box >
450+
421451 < Container maxW = "5xl" py = { 16 } >
422452 { /* CTA */ }
423453 < CtaActionContainer
0 commit comments