Merged in feat/SW-1067-special-needs-accessibility-page (pull request #1253)
feat/SW-1067 special needs accessibility page * feat(SW-1067): update types * feat(SW-1067): add sidebar * feat(SW-1067): add additional content component * feat(SW-1067): add special needs list * feat(SW-1067): update type * feat(SW-1067): update import * feat(SW-1067): remove component * feat(SW-1067): re add component * feat(SW-1067): update folder structure Approved-by: Erik Tiekstra
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
.container {
|
||||
display: grid;
|
||||
gap: var(--Spacing-x2);
|
||||
}
|
||||
|
||||
.accessibilityGroup {
|
||||
display: grid;
|
||||
gap: var(--Spacing-x1);
|
||||
}
|
||||
|
||||
.list {
|
||||
display: grid;
|
||||
gap: var(--Spacing-x1);
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.list > li::before {
|
||||
content: url("/_static/icons/heart.svg");
|
||||
position: relative;
|
||||
height: 8px;
|
||||
top: 3px;
|
||||
margin-right: var(--Spacing-x1);
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
import Body from "@/components/TempDesignSystem/Text/Body"
|
||||
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
|
||||
|
||||
import styles from "./accessibilityAdditionalContent.module.css"
|
||||
|
||||
import type { AdditionalData } from "@/types/hotel"
|
||||
|
||||
interface AccessibilityAdditionalContentProps {
|
||||
additionalData: AdditionalData
|
||||
}
|
||||
|
||||
export default function AccessibilityAdditionalContent({
|
||||
additionalData,
|
||||
}: AccessibilityAdditionalContentProps) {
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
{additionalData.specialNeedGroups.map((accessibilityGroup) => (
|
||||
<div
|
||||
key={accessibilityGroup.name}
|
||||
className={styles.accessibilityGroup}
|
||||
>
|
||||
<Subtitle type="two" color="uiTextHighContrast" asChild>
|
||||
<h2>{accessibilityGroup.name}</h2>
|
||||
</Subtitle>
|
||||
<ul className={styles.list}>
|
||||
{accessibilityGroup.specialNeeds.map((groupItem) => (
|
||||
<Body key={groupItem.name} asChild>
|
||||
<li>
|
||||
{groupItem.details
|
||||
? `${groupItem.name}: ${groupItem.details}`
|
||||
: groupItem.name}
|
||||
</li>
|
||||
</Body>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
import ParkingInformation from "@/components/ParkingInformation"
|
||||
|
||||
import styles from "./additionalContent.module.css"
|
||||
import styles from "./parkingAdditionalContent.module.css"
|
||||
|
||||
import type { Hotel } from "@/types/hotel"
|
||||
|
||||
@@ -1,22 +1,26 @@
|
||||
import {
|
||||
accessibilitySubPage,
|
||||
parkingSubPage,
|
||||
wellnessSubPage,
|
||||
} from "@/constants/routes/hotelSubpages"
|
||||
|
||||
import { getLang } from "@/i18n/serverContext"
|
||||
|
||||
import ParkingAdditionalContent from "./ParkingAdditionalContent"
|
||||
import AccessibilityAdditionalContent from "./Accessibility"
|
||||
import ParkingAdditionalContent from "./Parking"
|
||||
|
||||
import type { Hotel } from "@/types/hotel"
|
||||
import type { AdditionalData, Hotel } from "@/types/hotel"
|
||||
|
||||
interface HotelSubpageAdditionalContentProps {
|
||||
subpage: string
|
||||
hotel: Hotel
|
||||
additionalData: AdditionalData
|
||||
}
|
||||
|
||||
export default function HotelSubpageAdditionalContent({
|
||||
subpage,
|
||||
hotel,
|
||||
additionalData,
|
||||
}: HotelSubpageAdditionalContentProps) {
|
||||
const lang = getLang()
|
||||
|
||||
@@ -25,6 +29,8 @@ export default function HotelSubpageAdditionalContent({
|
||||
return <ParkingAdditionalContent hotel={hotel} />
|
||||
case wellnessSubPage[lang]:
|
||||
return null
|
||||
case accessibilitySubPage[lang]:
|
||||
return <AccessibilityAdditionalContent additionalData={additionalData} />
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
accessibilitySubPage,
|
||||
parkingSubPage,
|
||||
wellnessSubPage,
|
||||
} from "@/constants/routes/hotelSubpages"
|
||||
@@ -25,6 +26,8 @@ export default function HotelSubpageSidebar({
|
||||
return <ParkingSidebar hotel={hotel} />
|
||||
case wellnessSubPage[lang]:
|
||||
return <WellnessSidebar hotel={hotel} />
|
||||
case accessibilitySubPage[lang]:
|
||||
return null
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -63,7 +63,9 @@ export default async function HotelSubpage({
|
||||
<div className={styles.contentContainer}>
|
||||
<main className={styles.mainContent}>
|
||||
<div className={styles.intro}>
|
||||
<Title level="h1">{pageData.heading}</Title>
|
||||
<Title as="h2" level="h1">
|
||||
{pageData.heading}
|
||||
</Title>
|
||||
<Preamble>{pageData.elevatorPitch}</Preamble>
|
||||
</div>
|
||||
|
||||
@@ -72,6 +74,7 @@ export default async function HotelSubpage({
|
||||
<HotelSubpageAdditionalContent
|
||||
subpage={subpage}
|
||||
hotel={hotelData.hotel}
|
||||
additionalData={hotelData.additionalData}
|
||||
/>
|
||||
</main>
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import {
|
||||
accessibilitySubPage,
|
||||
parkingSubPage,
|
||||
wellnessSubPage,
|
||||
} from "@/constants/routes/hotelSubpages"
|
||||
@@ -44,6 +45,23 @@ export function getSubpageData(
|
||||
}
|
||||
: null,
|
||||
}
|
||||
case accessibilitySubPage[lang]:
|
||||
const accessibilityImage = additionalData.accessibility?.heroImages[0]
|
||||
return {
|
||||
...additionalData.hotelSpecialNeeds,
|
||||
heading: intl.formatMessage(
|
||||
{ id: "Accessibility at {hotel}" },
|
||||
{
|
||||
hotel: hotel.name,
|
||||
}
|
||||
),
|
||||
heroImage: accessibilityImage
|
||||
? {
|
||||
src: accessibilityImage.imageSizes.medium,
|
||||
alt: accessibilityImage.metaData.altText || "",
|
||||
}
|
||||
: null,
|
||||
}
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user