Merge branch 'feat/SW-185-implement-footer-navigation' into feat/sw-187-footer-content-stack
This commit is contained in:
@@ -7,8 +7,8 @@ import TrpcProvider from "@/lib/trpc/Provider"
|
||||
|
||||
import TokenRefresher from "@/components/Auth/TokenRefresher"
|
||||
import AdobeSDKScript from "@/components/Current/AdobeSDKScript"
|
||||
import Footer from "@/components/Current/Footer"
|
||||
import VwoScript from "@/components/Current/VwoScript"
|
||||
import Footer from "@/components/Footer"
|
||||
import { ToastHandler } from "@/components/TempDesignSystem/Toasts"
|
||||
import { preloadUserTracking } from "@/components/TrackingSDK"
|
||||
import { getIntl } from "@/i18n"
|
||||
|
||||
69
components/Footer/Details/details.module.css
Normal file
69
components/Footer/Details/details.module.css
Normal file
@@ -0,0 +1,69 @@
|
||||
.details {
|
||||
background: var(--Base-Text-High-contrast);
|
||||
color: var(--Primary-Dark-On-Surface-Text);
|
||||
padding: var(--Spacing-x3) var(--Spacing-x2) var(--Spacing-x6);
|
||||
}
|
||||
|
||||
.topContainer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding-bottom: var(--Spacing-x2);
|
||||
margin-bottom: var(--Spacing-x2);
|
||||
}
|
||||
|
||||
.bottomContainer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-direction: column-reverse;
|
||||
}
|
||||
|
||||
.socialNav {
|
||||
display: flex;
|
||||
gap: var(--Spacing-x2);
|
||||
}
|
||||
|
||||
.navigationContainer {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: var(--Spacing-x2);
|
||||
padding-bottom: var(--Spacing-x2);
|
||||
border-bottom: 1px solid var(--Base-Text-Medium-contrast);
|
||||
}
|
||||
|
||||
.navigation {
|
||||
display: flex;
|
||||
gap: var(--Spacing-x1);
|
||||
}
|
||||
|
||||
.link {
|
||||
&::after {
|
||||
content: "·";
|
||||
margin-left: var(--Spacing-x1);
|
||||
}
|
||||
&:last-child {
|
||||
&::after {
|
||||
content: "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.copyrightContainer {
|
||||
display: flex;
|
||||
gap: var(--Spacing-x1);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1367px) {
|
||||
.details {
|
||||
padding: var(--Spacing-x6) var(--Spacing-x5) var(--Spacing-x4);
|
||||
}
|
||||
.bottomContainer {
|
||||
border-top: 1px solid var(--Base-Text-Medium-contrast);
|
||||
padding-top: var(--Spacing-x2);
|
||||
flex-direction: row;
|
||||
}
|
||||
.navigationContainer {
|
||||
border-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
92
components/Footer/Details/index.tsx
Normal file
92
components/Footer/Details/index.tsx
Normal file
@@ -0,0 +1,92 @@
|
||||
import LanguageSwitcher from "@/components/Current/Header/LanguageSwitcher"
|
||||
import { getIconByIconName } from "@/components/Icons/get-icon-by-icon-name"
|
||||
import Image from "@/components/Image"
|
||||
import Link from "@/components/TempDesignSystem/Link"
|
||||
import Footnote from "@/components/TempDesignSystem/Text/Footnote"
|
||||
import { getLang } from "@/i18n/serverContext"
|
||||
|
||||
import { footer } from "../mockedData"
|
||||
|
||||
import styles from "./details.module.css"
|
||||
|
||||
import type { IconName } from "@/types/components/icon"
|
||||
|
||||
function socialIcon(iconName: string): JSX.Element | null {
|
||||
const SocialIcon = getIconByIconName(iconName as IconName)
|
||||
return SocialIcon ? <SocialIcon color="white" /> : <span>{iconName}</span>
|
||||
}
|
||||
|
||||
export default function FooterDetails() {
|
||||
const lang = getLang()
|
||||
const currentYear = new Date().getFullYear()
|
||||
const {
|
||||
socialMedia,
|
||||
copyrightCompany,
|
||||
copyrightInfo,
|
||||
tertiaryLinks,
|
||||
languageSwitcher,
|
||||
} = footer
|
||||
return (
|
||||
<section className={styles.details}>
|
||||
<div className={styles.topContainer}>
|
||||
<Link href={`/${lang}`}>
|
||||
<Image
|
||||
alt="Scandic Hotels logo"
|
||||
className={styles.logo}
|
||||
data-js="scandiclogoimg"
|
||||
data-nosvgsrc="/_static/img/scandic-logotype.png"
|
||||
itemProp="logo"
|
||||
height={22}
|
||||
src="/_static/img/scandic-logotype-white.svg"
|
||||
width={103}
|
||||
/>
|
||||
</Link>
|
||||
<nav className={styles.socialNav}>
|
||||
{socialMedia.links.map((link) => (
|
||||
<a
|
||||
className={styles.socialLink}
|
||||
color="white"
|
||||
href={link.href}
|
||||
key={link.id}
|
||||
target="_blank"
|
||||
title={link.title}
|
||||
>
|
||||
{socialIcon(link.title)}
|
||||
</a>
|
||||
))}
|
||||
</nav>
|
||||
</div>
|
||||
<div className={styles.bottomContainer}>
|
||||
<div className={styles.copyrightContainer}>
|
||||
<Footnote textTransform="uppercase">
|
||||
© {currentYear} {copyrightCompany}
|
||||
</Footnote>
|
||||
<Footnote textTransform="uppercase" color="peach50">
|
||||
{copyrightInfo}
|
||||
</Footnote>
|
||||
</div>
|
||||
<div className={styles.navigationContainer}>
|
||||
<nav className={styles.navigation}>
|
||||
{tertiaryLinks.map((link) => (
|
||||
<Footnote asChild textTransform="uppercase" key={link.id}>
|
||||
<Link
|
||||
className={styles.link}
|
||||
color="peach50"
|
||||
href={link.href}
|
||||
target="_blank"
|
||||
title={link.title}
|
||||
>
|
||||
{link.title}
|
||||
</Link>
|
||||
</Footnote>
|
||||
))}
|
||||
</nav>
|
||||
{
|
||||
// This will be changed to the new LangueSwitcher that is done in the header branch, when implementing contentstack
|
||||
}
|
||||
<LanguageSwitcher urls={languageSwitcher.urls} />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
31
components/Footer/Navigation/MainNav/index.tsx
Normal file
31
components/Footer/Navigation/MainNav/index.tsx
Normal file
@@ -0,0 +1,31 @@
|
||||
import { ArrowRightIcon } from "@/components/Icons"
|
||||
import Link from "@/components/TempDesignSystem/Link"
|
||||
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
|
||||
|
||||
import styles from "./mainnav.module.css"
|
||||
|
||||
import type { FooterMainNavProps } from "@/types/components/footer/navigation"
|
||||
|
||||
export default function FooterMainNav({ mainLinks }: FooterMainNavProps) {
|
||||
return (
|
||||
<nav className={styles.mainNavigation}>
|
||||
<ul className={styles.mainNavigationList}>
|
||||
{mainLinks.map((link) => (
|
||||
<li key={link.id} className={styles.mainNavigationItem}>
|
||||
<Subtitle type="two" asChild>
|
||||
<Link
|
||||
color="burgundy"
|
||||
href={link.href}
|
||||
className={styles.mainNavigationLink}
|
||||
>
|
||||
{link.title}
|
||||
|
||||
<ArrowRightIcon color="peach80" />
|
||||
</Link>
|
||||
</Subtitle>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
)
|
||||
}
|
||||
29
components/Footer/Navigation/MainNav/mainnav.module.css
Normal file
29
components/Footer/Navigation/MainNav/mainnav.module.css
Normal file
@@ -0,0 +1,29 @@
|
||||
.mainNavigation {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.mainNavigationList {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.mainNavigationItem {
|
||||
padding: var(--Spacing-x3) 0;
|
||||
border-bottom: 1px solid var(--Primary-Light-On-Surface-Divider);
|
||||
&:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.mainNavigationLink {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1367px) {
|
||||
.mainNavigation {
|
||||
max-width: 360px;
|
||||
}
|
||||
}
|
||||
67
components/Footer/Navigation/SecondaryNav/index.tsx
Normal file
67
components/Footer/Navigation/SecondaryNav/index.tsx
Normal file
@@ -0,0 +1,67 @@
|
||||
import Image from "@/components/Image"
|
||||
import Link from "@/components/TempDesignSystem/Link"
|
||||
import Body from "@/components/TempDesignSystem/Text/Body"
|
||||
|
||||
import styles from "./secondarynav.module.css"
|
||||
|
||||
import {
|
||||
AppDownnLoadLinks,
|
||||
type FooterSecondaryNavProps,
|
||||
} from "@/types/components/footer/navigation"
|
||||
|
||||
export default function FooterSecondaryNav({
|
||||
secondaryLinks,
|
||||
appDownloads,
|
||||
}: FooterSecondaryNavProps) {
|
||||
return (
|
||||
<div className={styles.secondaryNavigation}>
|
||||
<nav className={styles.secondaryNavigationGroup}>
|
||||
<Body color="peach80" textTransform="uppercase">
|
||||
{appDownloads.title}
|
||||
</Body>
|
||||
<ul className={styles.secondaryNavigationList}>
|
||||
{appDownloads.links.map((link) => (
|
||||
<li key={link.id} className={styles.appDownloadItem}>
|
||||
<a href={link.href} target="_blank" rel="noopener noreferrer">
|
||||
<Image
|
||||
src={
|
||||
AppDownnLoadLinks[link.id as keyof typeof AppDownnLoadLinks]
|
||||
}
|
||||
alt={link.title}
|
||||
width={125}
|
||||
height={40}
|
||||
/>
|
||||
</a>
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
{secondaryLinks.map((link) => (
|
||||
<nav className={styles.secondaryNavigationGroup} key={link.title}>
|
||||
<Body color="peach80" textTransform="uppercase">
|
||||
{link.title}
|
||||
</Body>
|
||||
<ul className={styles.secondaryNavigationList}>
|
||||
{link.links.map((link) => (
|
||||
<li key={link.id} className={styles.secondaryNavigationItem}>
|
||||
{link.isExternal ? (
|
||||
<a
|
||||
href={link.href}
|
||||
key={link.title}
|
||||
target={link.openInNewTab ? "_blank" : "_self"}
|
||||
>
|
||||
{link.title}
|
||||
</a>
|
||||
) : (
|
||||
<Link href={link.href} key={link.title}>
|
||||
{link.title}
|
||||
</Link>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</nav>
|
||||
))}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
.secondaryNavigation {
|
||||
display: flex;
|
||||
flex-direction: column-reverse;
|
||||
gap: var(--Spacing-x6);
|
||||
margin-top: var(--Spacing-x6);
|
||||
}
|
||||
|
||||
.secondaryNavigationList {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
list-style: none;
|
||||
gap: var(--Spacing-x3);
|
||||
}
|
||||
|
||||
.secondaryNavigationGroup {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--Spacing-x3);
|
||||
}
|
||||
|
||||
.secondaryNavigationGroupTitle {
|
||||
color: var(--Base-Text-Medium-contrast);
|
||||
font-weight: var(--typography-Body-Bold-fontWeight);
|
||||
font-family: var(--typography-Body-Bold-fontFamily);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1367px) {
|
||||
.secondaryNavigation {
|
||||
margin-top: 0;
|
||||
gap: 80px;
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
20
components/Footer/Navigation/index.tsx
Normal file
20
components/Footer/Navigation/index.tsx
Normal file
@@ -0,0 +1,20 @@
|
||||
import { footer } from "../mockedData"
|
||||
import FooterMainNav from "./MainNav"
|
||||
import FooterSecondaryNav from "./SecondaryNav"
|
||||
|
||||
import styles from "./navigation.module.css"
|
||||
|
||||
export default function FooterNavigation() {
|
||||
const { mainLinks, secondaryLinks, appDownloads } = footer
|
||||
return (
|
||||
<section className={styles.section}>
|
||||
<div className={styles.maxWidth}>
|
||||
<FooterMainNav mainLinks={mainLinks} />
|
||||
<FooterSecondaryNav
|
||||
secondaryLinks={secondaryLinks}
|
||||
appDownloads={appDownloads}
|
||||
/>
|
||||
</div>
|
||||
</section>
|
||||
)
|
||||
}
|
||||
21
components/Footer/Navigation/navigation.module.css
Normal file
21
components/Footer/Navigation/navigation.module.css
Normal file
@@ -0,0 +1,21 @@
|
||||
.section {
|
||||
background: var(--Primary-Light-Surface-Normal);
|
||||
padding: var(--Spacing-x7) var(--Spacing-x2);
|
||||
}
|
||||
|
||||
.maxWidth {
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-direction: column;
|
||||
max-width: var(--max-width-content);
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1367px) {
|
||||
.section {
|
||||
padding: var(--Spacing-x9) 0;
|
||||
}
|
||||
.maxWidth {
|
||||
flex-direction: row;
|
||||
}
|
||||
}
|
||||
11
components/Footer/index.tsx
Normal file
11
components/Footer/index.tsx
Normal file
@@ -0,0 +1,11 @@
|
||||
import FooterDetails from "./Details"
|
||||
import FooterNavigation from "./Navigation"
|
||||
|
||||
export default function Footer() {
|
||||
return (
|
||||
<footer>
|
||||
<FooterNavigation />
|
||||
<FooterDetails />
|
||||
</footer>
|
||||
)
|
||||
}
|
||||
192
components/Footer/mockedData.ts
Normal file
192
components/Footer/mockedData.ts
Normal file
@@ -0,0 +1,192 @@
|
||||
export const footer = {
|
||||
mainLinks: [
|
||||
{
|
||||
title: "Travel guides",
|
||||
href: "/travel-guides",
|
||||
id: "travel-guides",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "New hotels",
|
||||
href: "/new-hotels",
|
||||
id: "new-hotels",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Accessibililty",
|
||||
href: "/accessibility",
|
||||
id: "accessibility",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Sustanability",
|
||||
href: "/sustainability",
|
||||
id: "sustainability",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
],
|
||||
appDownloads: {
|
||||
title: "Scandic App",
|
||||
links: [
|
||||
{
|
||||
title: "App Store",
|
||||
href: "https://apps.apple.com/se/app/scandic-hotels/id1020208712",
|
||||
id: "apple",
|
||||
},
|
||||
{
|
||||
title: "Google Play",
|
||||
href: "https://play.google.com/store/apps/details?id=com.scandichotels.scandichotels",
|
||||
id: "google",
|
||||
},
|
||||
],
|
||||
},
|
||||
|
||||
secondaryLinks: [
|
||||
{
|
||||
title: "Customer service",
|
||||
links: [
|
||||
{
|
||||
title: "Contact us",
|
||||
href: "/contact-us",
|
||||
id: "contact-us",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Frequntly asked questions",
|
||||
href: "/frequently-asked-questions",
|
||||
id: "frequently-asked-questions",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Rates and policys",
|
||||
href: "/rates-and-policies",
|
||||
id: "rates-and-policies",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Terms and conditions",
|
||||
href: "/terms-and-conditions",
|
||||
id: "terms-and-conditions",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "About Scandic Hotels",
|
||||
links: [
|
||||
{
|
||||
title: "Scandic Group",
|
||||
href: "/scandic-group",
|
||||
id: "scandic-group",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Investors",
|
||||
href: "/investors",
|
||||
id: "investors",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Press",
|
||||
href: "/press",
|
||||
id: "press",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Sponsors",
|
||||
href: "/sponsors",
|
||||
id: "sponsors",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Partners",
|
||||
href: "/partners",
|
||||
id: "partners",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
{
|
||||
title: "Career",
|
||||
href: "/career",
|
||||
id: "career",
|
||||
openInNewTab: false,
|
||||
isExternal: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
copyrightCompany: "Scandic AB",
|
||||
copyrightInfo: "All rights reserved.",
|
||||
socialMedia: {
|
||||
links: [
|
||||
{
|
||||
title: "Facebook",
|
||||
href: "https://www.facebook.com/scandichotels/",
|
||||
id: "facebook",
|
||||
},
|
||||
{
|
||||
title: "Instagram",
|
||||
href: "https://www.instagram.com/scandichotels/",
|
||||
id: "instagram",
|
||||
},
|
||||
{
|
||||
title: "Tripadvisor",
|
||||
href: "https://www.tripadvisor.com/Hotel_Review-g297628-d1020208712-Reviews-Scandic_Hotels-Stockholm_Sweden.html",
|
||||
id: "tripadvisor",
|
||||
},
|
||||
],
|
||||
},
|
||||
tertiaryLinks: [
|
||||
{
|
||||
title: "Cookies",
|
||||
href: "/cookies",
|
||||
id: "cookies",
|
||||
},
|
||||
{
|
||||
title: "Privacy policy",
|
||||
href: "/privacy",
|
||||
id: "privacy",
|
||||
},
|
||||
],
|
||||
languageSwitcher: {
|
||||
urls: {
|
||||
da: {
|
||||
url: "https://www.scandichotels.com/da",
|
||||
isExternal: true,
|
||||
},
|
||||
de: {
|
||||
url: "https://www.scandichotels.com/de",
|
||||
isExternal: true,
|
||||
},
|
||||
en: {
|
||||
url: "https://www.scandichotels.com/en",
|
||||
isExternal: true,
|
||||
},
|
||||
fi: {
|
||||
url: "https://www.scandichotels.com/fi",
|
||||
isExternal: true,
|
||||
},
|
||||
no: {
|
||||
url: "https://www.scandichotels.com/no",
|
||||
isExternal: true,
|
||||
},
|
||||
sv: {
|
||||
url: "https://www.scandichotels.com/sv",
|
||||
isExternal: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
27
components/Icons/Facebook.tsx
Normal file
27
components/Icons/Facebook.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { iconVariants } from "./variants"
|
||||
|
||||
import type { IconProps } from "@/types/components/icon"
|
||||
|
||||
export default function FacebookIcon({
|
||||
className,
|
||||
color,
|
||||
...props
|
||||
}: IconProps) {
|
||||
const classNames = iconVariants({ className, color })
|
||||
return (
|
||||
<svg
|
||||
className={classNames}
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M18.25 2C19.283 2 20.1662 2.36675 20.8997 3.10026C21.6332 3.83377 22 4.71701 22 5.75V18.25C22 19.283 21.6332 20.1662 20.8997 20.8997C20.1662 21.6332 19.283 22 18.25 22H15.8021V14.2526H18.3932L18.7839 11.2318H15.8021V9.30469C15.8021 8.81858 15.9041 8.45399 16.1081 8.21094C16.3121 7.96788 16.7092 7.84635 17.2995 7.84635L18.888 7.83333V5.13802C18.3411 5.0599 17.5686 5.02083 16.5703 5.02083C15.3898 5.02083 14.4457 5.36806 13.7383 6.0625C13.0308 6.75694 12.6771 7.73785 12.6771 9.00521V11.2318H10.0729V14.2526H12.6771V22H5.75C4.71701 22 3.83377 21.6332 3.10026 20.8997C2.36675 20.1662 2 19.283 2 18.25V5.75C2 4.71701 2.36675 3.83377 3.10026 3.10026C3.83377 2.36675 4.71701 2 5.75 2H18.25Z"
|
||||
fill="black"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
27
components/Icons/Instagram.tsx
Normal file
27
components/Icons/Instagram.tsx
Normal file
@@ -0,0 +1,27 @@
|
||||
import { iconVariants } from "./variants"
|
||||
|
||||
import type { IconProps } from "@/types/components/icon"
|
||||
|
||||
export default function InstagramIcon({
|
||||
className,
|
||||
color,
|
||||
...props
|
||||
}: IconProps) {
|
||||
const classNames = iconVariants({ className, color })
|
||||
return (
|
||||
<svg
|
||||
className={classNames}
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M17.34 5.46C17.1027 5.46 16.8707 5.53038 16.6733 5.66224C16.476 5.79409 16.3222 5.98151 16.2313 6.20078C16.1405 6.42005 16.1168 6.66133 16.1631 6.89411C16.2094 7.12689 16.3236 7.34071 16.4915 7.50853C16.6593 7.67635 16.8731 7.79064 17.1059 7.83694C17.3387 7.88324 17.5799 7.85948 17.7992 7.76866C18.0185 7.67783 18.2059 7.52402 18.3378 7.32668C18.4696 7.12935 18.54 6.89734 18.54 6.66C18.54 6.34174 18.4136 6.03652 18.1885 5.81147C17.9635 5.58643 17.6583 5.46 17.34 5.46ZM21.94 7.88C21.9206 7.0503 21.7652 6.2294 21.48 5.45C21.2257 4.78313 20.83 4.17928 20.32 3.68C19.8248 3.16743 19.2196 2.77418 18.55 2.53C17.7727 2.23616 16.9508 2.07721 16.12 2.06C15.06 2 14.72 2 12 2C9.28 2 8.94 2 7.88 2.06C7.04915 2.07721 6.22734 2.23616 5.45 2.53C4.78168 2.77665 4.17693 3.16956 3.68 3.68C3.16743 4.17518 2.77418 4.78044 2.53 5.45C2.23616 6.22734 2.07721 7.04915 2.06 7.88C2 8.94 2 9.28 2 12C2 14.72 2 15.06 2.06 16.12C2.07721 16.9508 2.23616 17.7727 2.53 18.55C2.77418 19.2196 3.16743 19.8248 3.68 20.32C4.17693 20.8304 4.78168 21.2234 5.45 21.47C6.22734 21.7638 7.04915 21.9228 7.88 21.94C8.94 22 9.28 22 12 22C14.72 22 15.06 22 16.12 21.94C16.9508 21.9228 17.7727 21.7638 18.55 21.47C19.2196 21.2258 19.8248 20.8326 20.32 20.32C20.8322 19.8226 21.2283 19.2182 21.48 18.55C21.7652 17.7706 21.9206 16.9497 21.94 16.12C21.94 15.06 22 14.72 22 12C22 9.28 22 8.94 21.94 7.88ZM20.14 16C20.1327 16.6348 20.0178 17.2637 19.8 17.86C19.6403 18.2952 19.3839 18.6884 19.05 19.01C18.7256 19.3405 18.3332 19.5964 17.9 19.76C17.3037 19.9778 16.6748 20.0927 16.04 20.1C15.04 20.15 14.67 20.16 12.04 20.16C9.41 20.16 9.04 20.16 8.04 20.1C7.38089 20.1123 6.72459 20.0109 6.1 19.8C5.68578 19.6281 5.31136 19.3728 5 19.05C4.66809 18.7287 4.41484 18.3352 4.26 17.9C4.01586 17.2952 3.88044 16.6519 3.86 16C3.86 15 3.8 14.63 3.8 12C3.8 9.37 3.8 9 3.86 8C3.86448 7.35106 3.98295 6.70795 4.21 6.1C4.38605 5.67791 4.65627 5.30166 5 5C5.30381 4.65617 5.67929 4.3831 6.1 4.2C6.70955 3.98004 7.352 3.86508 8 3.86C9 3.86 9.37 3.8 12 3.8C14.63 3.8 15 3.8 16 3.86C16.6348 3.86728 17.2637 3.98225 17.86 4.2C18.3144 4.36865 18.7223 4.64285 19.05 5C19.3777 5.30718 19.6338 5.68273 19.8 6.1C20.0223 6.70893 20.1373 7.35178 20.14 8C20.19 9 20.2 9.37 20.2 12C20.2 14.63 20.19 15 20.14 16ZM12 6.87C10.9858 6.87198 9.99496 7.17453 9.15265 7.73942C8.31035 8.30431 7.65438 9.1062 7.26763 10.0438C6.88089 10.9813 6.78072 12.0125 6.97979 13.0069C7.17886 14.0014 7.66824 14.9145 8.38608 15.631C9.10392 16.3474 10.018 16.835 11.0129 17.0321C12.0077 17.2293 13.0387 17.1271 13.9755 16.7385C14.9123 16.35 15.7129 15.6924 16.2761 14.849C16.8394 14.0056 17.14 13.0142 17.14 12C17.1413 11.3251 17.0092 10.6566 16.7512 10.033C16.4933 9.40931 16.1146 8.84281 15.6369 8.36605C15.1592 7.88929 14.5919 7.51168 13.9678 7.25493C13.3436 6.99818 12.6749 6.86736 12 6.87ZM12 15.33C11.3414 15.33 10.6976 15.1347 10.15 14.7688C9.60234 14.4029 9.17552 13.8828 8.92348 13.2743C8.67144 12.6659 8.6055 11.9963 8.73398 11.3503C8.86247 10.7044 9.17963 10.111 9.64533 9.64533C10.111 9.17963 10.7044 8.86247 11.3503 8.73398C11.9963 8.6055 12.6659 8.67144 13.2743 8.92348C13.8828 9.17552 14.4029 9.60234 14.7688 10.15C15.1347 10.6976 15.33 11.3414 15.33 12C15.33 12.4373 15.2439 12.8703 15.0765 13.2743C14.9092 13.6784 14.6639 14.0454 14.3547 14.3547C14.0454 14.6639 13.6784 14.9092 13.2743 15.0765C12.8703 15.2439 12.4373 15.33 12 15.33Z"
|
||||
fill="black"
|
||||
/>
|
||||
</svg>
|
||||
)
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
import { FC } from "react"
|
||||
|
||||
import FacebookIcon from "./Facebook"
|
||||
import InstagramIcon from "./Instagram"
|
||||
import TripAdvisorIcon from "./TripAdvisor"
|
||||
import {
|
||||
AccessibilityIcon,
|
||||
AccountCircleIcon,
|
||||
@@ -85,6 +88,8 @@ export function getIconByIconName(icon?: IconName): FC<IconProps> | null {
|
||||
return ElectricBikeIcon
|
||||
case IconName.Email:
|
||||
return EmailIcon
|
||||
case IconName.Facebook:
|
||||
return FacebookIcon
|
||||
case IconName.Fitness:
|
||||
return FitnessIcon
|
||||
case IconName.Globe:
|
||||
@@ -95,6 +100,8 @@ export function getIconByIconName(icon?: IconName): FC<IconProps> | null {
|
||||
return ImageIcon
|
||||
case IconName.InfoCircle:
|
||||
return InfoCircleIcon
|
||||
case IconName.Instagram:
|
||||
return InstagramIcon
|
||||
case IconName.Location:
|
||||
return LocationIcon
|
||||
case IconName.Lock:
|
||||
@@ -115,6 +122,8 @@ export function getIconByIconName(icon?: IconName): FC<IconProps> | null {
|
||||
return RestaurantIcon
|
||||
case IconName.Sauna:
|
||||
return SaunaIcon
|
||||
case IconName.Tripadvisor:
|
||||
return TripAdvisorIcon
|
||||
case IconName.TshirtWash:
|
||||
return TshirtWashIcon
|
||||
case IconName.WarningTriangle:
|
||||
|
||||
@@ -126,6 +126,10 @@
|
||||
color: var(--Scandic-Brand-Pale-Peach);
|
||||
}
|
||||
|
||||
.peach50 {
|
||||
color: var(--Scandic-Peach-50);
|
||||
}
|
||||
|
||||
.peach80 {
|
||||
color: var(--Primary-Light-On-Surface-Accent);
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ export const linkVariants = cva(styles.link, {
|
||||
burgundy: styles.burgundy,
|
||||
none: "",
|
||||
pale: styles.pale,
|
||||
peach50: styles.peach50,
|
||||
peach80: styles.peach80,
|
||||
white: styles.white,
|
||||
},
|
||||
|
||||
@@ -34,6 +34,16 @@
|
||||
text-decoration: var(--typography-Body-Underline-textDecoration);
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
font-family: var(--typography-Body-Regular-fontFamily);
|
||||
font-size: var(--typography-Body-Regular-fontSize);
|
||||
font-weight: var(--typography-Body-Bold-fontWeight);
|
||||
letter-spacing: var(--typography-Body-Regular-letterSpacing);
|
||||
line-height: var(--typography-Body-Regular-lineHeight);
|
||||
text-decoration: var(--typography-Body-Regular-textDecoration);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.textAlignCenter {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -73,3 +83,7 @@
|
||||
.peach50 {
|
||||
color: var(--Primary-Dark-On-Surface-Accent);
|
||||
}
|
||||
|
||||
.peach80 {
|
||||
color: var(--Base-Text-Medium-contrast);
|
||||
}
|
||||
|
||||
@@ -16,15 +16,15 @@ export default function Body({
|
||||
const Comp = asChild ? Slot : "p"
|
||||
const classNames = fontOnly
|
||||
? bodyFontOnlyVariants({
|
||||
className,
|
||||
textAlign,
|
||||
textTransform,
|
||||
})
|
||||
className,
|
||||
textAlign,
|
||||
textTransform,
|
||||
})
|
||||
: bodyVariants({
|
||||
className,
|
||||
color,
|
||||
textAlign,
|
||||
textTransform,
|
||||
})
|
||||
className,
|
||||
color,
|
||||
textAlign,
|
||||
textTransform,
|
||||
})
|
||||
return <Comp className={classNames} {...props} />
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ const config = {
|
||||
textMediumContrast: styles.textMediumContrast,
|
||||
white: styles.white,
|
||||
peach50: styles.peach50,
|
||||
peach80: styles.peach80,
|
||||
},
|
||||
textAlign: {
|
||||
center: styles.textAlignCenter,
|
||||
@@ -22,6 +23,7 @@ const config = {
|
||||
bold: styles.bold,
|
||||
regular: styles.regular,
|
||||
underlined: styles.underlined,
|
||||
uppercase: styles.uppercase,
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
@@ -43,6 +45,7 @@ const fontOnlyconfig = {
|
||||
bold: styles.bold,
|
||||
regular: styles.regular,
|
||||
underlined: styles.underlined,
|
||||
uppercase: styles.uppercase,
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
|
||||
@@ -25,6 +25,16 @@
|
||||
text-decoration: var(--typography-Footnote-Regular-textDecoration);
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
font-family: var(--typography-Footnote-Regular-fontFamily);
|
||||
font-size: var(--typography-Footnote-Regular-fontSize);
|
||||
font-weight: var(--typography-Footnote-Bold-fontWeight);
|
||||
letter-spacing: var(--typography-Footnote-Regular-letterSpacing);
|
||||
line-height: var(--typography-Footnote-Regular-lineHeight);
|
||||
text-decoration: var(--typography-Footnote-Regular-textDecoration);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
@@ -45,6 +55,10 @@
|
||||
color: var(--Scandic-Brand-Pale-Peach);
|
||||
}
|
||||
|
||||
.peach50 {
|
||||
color: var(--Scandic-Peach-50);
|
||||
}
|
||||
|
||||
.textMediumContrast {
|
||||
color: var(--UI-Text-Medium-contrast);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ const config = {
|
||||
black: styles.black,
|
||||
burgundy: styles.burgundy,
|
||||
pale: styles.pale,
|
||||
peach50: styles.peach50,
|
||||
textMediumContrast: styles.textMediumContrast,
|
||||
},
|
||||
textAlign: {
|
||||
@@ -17,6 +18,7 @@ const config = {
|
||||
textTransform: {
|
||||
bold: styles.bold,
|
||||
regular: styles.regular,
|
||||
uppercase: styles.uppercase,
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
@@ -35,6 +37,7 @@ const fontOnlyConfig = {
|
||||
textTransform: {
|
||||
bold: styles.bold,
|
||||
regular: styles.regular,
|
||||
uppercase: styles.uppercase,
|
||||
},
|
||||
},
|
||||
defaultVariants: {
|
||||
|
||||
25
public/_static/img/app-store-badge.svg
Normal file
25
public/_static/img/app-store-badge.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<svg width="125" height="40" viewBox="0 0 125 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0.5 20C0.5 9.23045 9.23045 0.5 20 0.5H105C115.77 0.5 124.5 9.23045 124.5 20C124.5 30.7696 115.77 39.5 105 39.5H20C9.23045 39.5 0.5 30.7696 0.5 20Z" stroke="#26201E"/>
|
||||
<path d="M45.3613 10.4844V15.1282H46.7093C47.4245 15.1282 47.9747 14.9003 48.4148 14.473C48.8549 14.0456 49.0475 13.4758 49.0475 12.7921C49.0475 12.1083 48.8274 11.5385 48.4148 11.1112C48.0022 10.6838 47.4245 10.4844 46.7093 10.4844H45.3613ZM46.7093 11.1681C47.2044 11.1681 47.617 11.3106 47.8921 11.624C48.1947 11.9089 48.3323 12.3077 48.3323 12.8206C48.3323 13.3049 48.1947 13.7037 47.8921 14.0171C47.5895 14.3305 47.2044 14.473 46.7093 14.473H46.049V11.1681H46.7093Z" fill="#26201E"/>
|
||||
<path d="M51.3305 11.5957C50.8629 11.5957 50.4503 11.7666 50.1202 12.1085C49.7901 12.4504 49.625 12.8778 49.625 13.3906C49.625 13.9034 49.7901 14.3307 50.1202 14.6726C50.4503 15.0145 50.8354 15.1854 51.3305 15.2139C51.7982 15.2139 52.2108 15.043 52.5409 14.7011C52.871 14.3592 53.0361 13.9319 53.0361 13.4191C53.0361 12.9062 52.871 12.4789 52.5409 12.137C52.1833 11.7666 51.7982 11.5957 51.3305 11.5957ZM51.3305 12.2795C51.6056 12.2795 51.8532 12.3934 52.0458 12.6213C52.2383 12.8208 52.3209 13.1057 52.3209 13.4191C52.3209 13.7325 52.2108 14.0174 52.0458 14.2168C51.8532 14.4162 51.6056 14.5302 51.3305 14.5302C51.0555 14.5302 50.8079 14.4162 50.6153 14.2168C50.4228 13.9889 50.3402 13.7325 50.3402 13.4191C50.3402 13.1057 50.4228 12.8208 50.6153 12.6213C50.8079 12.3934 51.0555 12.2795 51.3305 12.2795Z" fill="#26201E"/>
|
||||
<path d="M57.0814 13.9034L56.0911 11.5957H55.8435L54.8807 13.9319L54.0279 11.6812H53.2852L54.7156 15.2139H54.9632L55.981 12.9062L56.9988 15.2139H57.2464L58.6494 11.6812H57.9066L57.0814 13.9034Z" fill="#26201E"/>
|
||||
<path d="M60.8494 11.5957C60.4643 11.5957 60.1342 11.7382 59.8866 12.0231V11.6812H59.2539V15.1285H59.9416V13.0772C59.9416 12.5929 60.2442 12.2795 60.6844 12.2795C61.097 12.2795 61.3721 12.5929 61.3721 13.0772V15.1285H62.0598V12.9632C62.0598 12.137 61.5922 11.5957 60.8494 11.5957Z" fill="#26201E"/>
|
||||
<path d="M62.9961 9.85742V15.1281H63.6838V9.85742H62.9961Z" fill="#26201E"/>
|
||||
<path d="M66.1587 11.5957C65.691 11.5957 65.2784 11.7666 64.9483 12.1085C64.6182 12.4504 64.4531 12.8778 64.4531 13.3906C64.4531 13.9034 64.6182 14.3307 64.9483 14.6726C65.2784 15.0145 65.6635 15.1854 66.1587 15.2139C66.6263 15.2139 67.039 15.043 67.3691 14.7011C67.6992 14.3592 67.8642 13.9319 67.8642 13.4191C67.8642 12.9062 67.6992 12.4789 67.3691 12.137C67.039 11.7666 66.6263 11.5957 66.1587 11.5957ZM66.1862 12.2795C66.4613 12.2795 66.7088 12.3934 66.9014 12.6213C67.094 12.8208 67.1765 13.1057 67.1765 13.4191C67.1765 13.7325 67.0665 14.0174 66.9014 14.2168C66.7088 14.4162 66.4613 14.5302 66.1862 14.5302C65.9111 14.5302 65.6635 14.4162 65.4709 14.2168C65.2784 13.9889 65.1959 13.7325 65.1959 13.4191C65.1959 13.1057 65.2784 12.8208 65.4709 12.6213C65.636 12.3934 65.8836 12.2795 66.1862 12.2795Z" fill="#26201E"/>
|
||||
<path d="M69.8995 11.5957C69.3219 11.5957 68.8817 11.8521 68.5516 12.3364L68.9367 12.7638C69.2118 12.4219 69.5144 12.251 69.817 12.251C70.2572 12.251 70.5047 12.5074 70.5047 12.9917V13.2196H69.5969C68.8817 13.2196 68.4141 13.6185 68.4141 14.2168C68.4141 14.8151 68.8542 15.2139 69.5419 15.2139C69.9821 15.2139 70.3122 15.0715 70.5597 14.7581V15.157H71.1925V13.0772C71.1925 12.1085 70.6698 11.5957 69.8995 11.5957ZM69.6795 14.6441C69.3494 14.6441 69.1293 14.4732 69.1293 14.1883C69.1293 13.9034 69.3219 13.7609 69.707 13.7609H70.5322V13.8179C70.5047 14.3023 70.1471 14.6441 69.6795 14.6441Z" fill="#26201E"/>
|
||||
<path d="M74.5764 12.1083C74.3288 11.7664 73.9712 11.5955 73.5036 11.5955C73.0634 11.5955 72.6783 11.7664 72.3757 12.1083C72.0731 12.4502 71.9355 12.8775 71.9355 13.3904C71.9355 13.9032 72.0731 14.3305 72.3757 14.6724C72.6783 15.0143 73.0359 15.1852 73.5036 15.1852C73.9987 15.1852 74.3838 14.9858 74.6314 14.6154V15.0998H75.2641V9.8291H74.5764V12.1083ZM73.6411 14.53C73.366 14.53 73.1184 14.416 72.9259 14.2166C72.7333 14.0171 72.6508 13.7322 72.6508 13.3904C72.6508 13.0485 72.7333 12.7921 72.9259 12.5926C73.1184 12.3932 73.3385 12.2792 73.6411 12.2792C73.8887 12.2792 74.1363 12.3647 74.3288 12.5641C74.5214 12.7636 74.6039 13.0485 74.6039 13.3904C74.6039 14.1596 74.1638 14.53 73.6411 14.53Z" fill="#26201E"/>
|
||||
<path d="M79.5825 11.5957C79.1149 11.5957 78.7022 11.7666 78.3721 12.1085C78.042 12.4504 77.877 12.8778 77.877 13.3906C77.877 13.9034 78.042 14.3307 78.3721 14.6726C78.7022 15.0145 79.0873 15.1854 79.5825 15.2139C80.0502 15.2139 80.4628 15.043 80.7929 14.7011C81.123 14.3592 81.288 13.9319 81.288 13.4191C81.288 12.9062 81.123 12.4789 80.7929 12.137C80.4353 11.7666 80.0502 11.5957 79.5825 11.5957ZM79.5825 12.2795C79.8576 12.2795 80.1052 12.3934 80.2977 12.6213C80.4903 12.8208 80.5728 13.1057 80.5728 13.4191C80.5728 13.7325 80.4628 14.0174 80.2977 14.2168C80.1052 14.4162 79.8576 14.5302 79.5825 14.5302C79.3074 14.5302 79.0598 14.4162 78.8673 14.2168C78.6747 13.9889 78.5922 13.7325 78.5922 13.4191C78.5922 13.1057 78.6747 12.8208 78.8673 12.6213C79.0598 12.3934 79.3074 12.2795 79.5825 12.2795Z" fill="#26201E"/>
|
||||
<path d="M83.6543 11.5957C83.2692 11.5957 82.9391 11.7382 82.6915 12.0231V11.6812H82.0588V15.1285H82.7465V13.0772C82.7465 12.5929 83.0491 12.2795 83.4892 12.2795C83.9019 12.2795 84.1769 12.5929 84.1769 13.0772V15.1285H84.8647V12.9632C84.8647 12.137 84.4245 11.5957 83.6543 11.5957Z" fill="#26201E"/>
|
||||
<path d="M89.1282 14.5302C88.7156 14.5302 88.4955 14.3878 88.4955 13.9319V12.308H89.4583V11.6812H88.4955V10.7695H87.8078V11.6812H87.2852V12.308H87.8078V13.9889C87.8078 14.7866 88.248 15.1855 88.9907 15.1855C89.1557 15.1855 89.3483 15.157 89.5684 15.1V14.4732C89.3483 14.5302 89.2108 14.5302 89.1282 14.5302Z" fill="#26201E"/>
|
||||
<path d="M91.8515 11.5953C91.4664 11.5953 91.1638 11.7378 90.9162 12.0227V9.85742H90.2285V15.1281H90.9162V13.0768C90.9162 12.5925 91.2188 12.2791 91.659 12.2791C92.0716 12.2791 92.3467 12.5925 92.3467 13.0768V15.1281H93.0344V12.9628C93.0344 12.1651 92.5943 11.5953 91.8515 11.5953Z" fill="#26201E"/>
|
||||
<path d="M96.9405 13.1911C96.9405 12.7353 96.803 12.3649 96.5279 12.0515C96.2528 11.7382 95.8952 11.5957 95.4826 11.5957C95.0149 11.5957 94.6298 11.7666 94.2997 12.137C93.9696 12.4789 93.832 12.9062 93.832 13.4191C93.832 13.9319 93.9971 14.3592 94.3272 14.7011C94.6573 15.043 95.0699 15.2139 95.5651 15.2139C96.0602 15.2139 96.4729 15.043 96.8305 14.6441L96.5004 14.1313C96.2253 14.4162 95.8952 14.5302 95.5651 14.5302C95.0149 14.5302 94.6023 14.1883 94.5198 13.6185H96.913C96.913 13.476 96.9405 13.3336 96.9405 13.1911ZM95.4275 12.2225C95.8952 12.2225 96.2528 12.5644 96.2528 13.0772H94.5198C94.6023 12.5644 94.9599 12.2225 95.4275 12.2225Z" fill="#26201E"/>
|
||||
<path d="M52.5962 27.5215L49.02 18.6611H48.5799L45.0312 27.5215H46.4067L46.9844 26.0685H50.6155L51.1932 27.5215H52.5962ZM47.452 24.872L48.8 21.2537L50.1204 24.872H47.452Z" fill="#26201E"/>
|
||||
<path d="M56.8323 20.8828C55.952 20.8828 55.1818 21.2817 54.7416 21.9654V21.0538H53.5312V29.9142H54.8242V26.7518C55.2918 27.3785 55.9795 27.6634 56.8323 27.6634C57.6851 27.6634 58.4003 27.35 58.9505 26.6948C59.5007 26.0395 59.7758 25.2418 59.7758 24.2731C59.7758 23.3045 59.5007 22.5067 58.9505 21.8515C58.4003 21.1962 57.6851 20.8828 56.8323 20.8828ZM56.6122 26.3814C56.1171 26.3814 55.6769 26.2104 55.3193 25.8401C54.9617 25.4697 54.7967 24.9569 54.7967 24.2446C54.7967 22.8486 55.6219 22.1364 56.6122 22.1364C57.1349 22.1364 57.575 22.3358 57.9327 22.7347C58.2903 23.1335 58.4553 23.6463 58.4553 24.2731C58.4553 24.8999 58.2903 25.3842 57.9327 25.7831C57.575 26.182 57.1349 26.3814 56.6122 26.3814Z" fill="#26201E"/>
|
||||
<path d="M64.2874 20.8828C63.4071 20.8828 62.6369 21.2817 62.1967 21.9654V21.0538H60.9863V29.9142H62.2792V26.7518C62.7469 27.3785 63.4346 27.6634 64.2874 27.6634C65.1402 27.6634 65.8554 27.35 66.4056 26.6948C66.9557 26.0395 67.2308 25.2418 67.2308 24.2731C67.2308 23.3045 66.9557 22.5067 66.4056 21.8515C65.8554 21.1962 65.1402 20.8828 64.2874 20.8828ZM64.0948 26.3814C63.5997 26.3814 63.1595 26.2104 62.8019 25.8401C62.4443 25.4697 62.2792 24.9569 62.2792 24.2446C62.2792 22.8486 63.1045 22.1364 64.0948 22.1364C64.6175 22.1364 65.0576 22.3358 65.4152 22.7347C65.7729 23.1335 65.9379 23.6463 65.9379 24.2731C65.9379 24.8999 65.7729 25.3842 65.4152 25.7831C65.0301 26.182 64.6175 26.3814 64.0948 26.3814Z" fill="#26201E"/>
|
||||
<path d="M74.1922 18.6611C73.4769 18.6611 72.8717 18.8891 72.3766 19.3164C71.8814 19.7438 71.6338 20.3136 71.6338 21.0258C71.6338 22.1369 72.3216 22.8492 73.5044 23.4475L74.3847 23.9033C75.2375 24.3306 75.5676 24.5871 75.5676 25.2138C75.5676 25.9546 75.0174 26.4389 74.1646 26.4389C73.3394 26.4389 72.6517 25.9831 72.0465 25.0429L71.1387 25.7836C71.7714 26.9517 72.8717 27.664 74.1922 27.664C74.9624 27.664 75.6226 27.4361 76.1178 26.9802C76.6404 26.5244 76.888 25.8976 76.888 25.1569C76.888 24.0173 76.2553 23.3335 74.9624 22.6782L74.0546 22.2224C73.2293 21.795 72.9267 21.5671 72.9267 20.9688C72.9267 20.2851 73.4769 19.9147 74.1371 19.9147C74.8248 19.9147 75.4025 20.2851 75.8427 20.9688L76.7505 20.2281C76.2828 19.2879 75.32 18.6611 74.1922 18.6611Z" fill="#26201E"/>
|
||||
<path d="M80.9584 26.4104C80.1882 26.4104 79.7755 26.1255 79.7755 25.2993V22.2224H81.5636V21.0258H79.7755V19.3164H78.4826V21.0258H77.4923V22.2224H78.4826V25.3848C78.4826 26.8948 79.3079 27.6355 80.6833 27.6355C80.9859 27.6355 81.3435 27.5785 81.7562 27.493V26.325C81.3986 26.3819 81.151 26.4104 80.9584 26.4104Z" fill="#26201E"/>
|
||||
<path d="M85.4702 20.8828C84.5899 20.8828 83.8196 21.2247 83.2144 21.8515C82.6092 22.5067 82.3066 23.3045 82.3066 24.2446C82.3066 25.1848 82.6092 26.011 83.2144 26.6378C83.8196 27.2931 84.5624 27.6065 85.4702 27.6349C86.3504 27.6349 87.0932 27.2931 87.7259 26.6663C88.3586 26.011 88.6612 25.2133 88.6612 24.2446C88.6612 23.3045 88.3311 22.4783 87.7259 21.8515C87.1207 21.2247 86.3504 20.8828 85.4702 20.8828ZM85.4977 22.1649C86.0203 22.1649 86.4605 22.3643 86.8181 22.7916C87.1757 23.1905 87.3683 23.6748 87.3683 24.3016C87.3683 24.8999 87.1757 25.3842 86.8181 25.8116C86.4605 26.2104 86.0203 26.4099 85.4977 26.4099C84.9475 26.4099 84.5073 26.2104 84.1772 25.8116C83.8196 25.4127 83.6546 24.8999 83.6546 24.3016C83.6546 23.7033 83.8196 23.1905 84.1772 22.7916C84.5073 22.3643 84.9475 22.1649 85.4977 22.1649Z" fill="#26201E"/>
|
||||
<path d="M92.8422 20.9688C92.0994 20.9688 91.5217 21.2821 91.0816 21.8804V21.0257H89.8712V27.493H91.1641V24.0457C91.1641 22.9061 91.9069 22.2508 92.9247 22.2508H93.3098V21.0257C93.1998 20.9972 93.0347 20.9688 92.8422 20.9688Z" fill="#26201E"/>
|
||||
<path d="M99.6368 23.8459C99.6368 22.9912 99.3618 22.279 98.8391 21.7092C98.3164 21.1394 97.6562 20.8545 96.8584 20.8545C95.9782 20.8545 95.2354 21.1964 94.6577 21.8516C94.0525 22.5069 93.7775 23.3046 93.7775 24.2448C93.7775 25.2135 94.0801 26.0112 94.6853 26.6665C95.2904 27.3217 96.0607 27.6351 96.996 27.6351C97.9038 27.6351 98.7015 27.2932 99.3893 26.581L98.7841 25.6408C98.2339 26.1536 97.6562 26.41 97.0235 26.41C95.9782 26.41 95.2354 25.7833 95.0704 24.7006H99.5543C99.5818 24.4157 99.6368 24.1308 99.6368 23.8459ZM96.8034 22.0511C97.6837 22.0511 98.3439 22.6779 98.3439 23.6465H95.0704C95.2629 22.6779 95.9507 22.0511 96.8034 22.0511Z" fill="#26201E"/>
|
||||
<path d="M39.0616 19.4299C39.0341 16.9513 41.1522 15.7547 41.2348 15.6977C40.0519 14.0168 38.1813 13.7889 37.5486 13.7604C36.0081 13.5895 34.4951 14.6721 33.6973 14.6721C32.8996 14.6721 31.6617 13.7889 30.3688 13.8174C28.6907 13.8459 27.0952 14.7861 26.2425 16.2675C24.4544 19.259 25.7748 23.675 27.5079 26.0966C28.3606 27.2932 29.351 28.6037 30.6714 28.5752C31.9643 28.5183 32.4319 27.7775 33.9724 27.7775C35.5129 27.7775 35.9531 28.5752 37.301 28.5467C38.6764 28.5183 39.5567 27.3502 40.382 26.1536C41.3723 24.7861 41.7574 23.447 41.7849 23.3901C41.7299 23.3616 39.0891 22.3929 39.0616 19.4299ZM36.5308 12.1935C37.2185 11.3673 37.6861 10.2277 37.5486 9.05957C36.5583 9.08806 35.2929 9.71484 34.5776 10.5411C33.9449 11.2533 33.3672 12.4499 33.5323 13.561C34.6602 13.6465 35.8155 12.9912 36.5308 12.1935Z" fill="#26201E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 12 KiB |
24
public/_static/img/google-play-badge.svg
Normal file
24
public/_static/img/google-play-badge.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<svg width="125" height="40" viewBox="0 0 125 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0.5 20C0.5 9.23045 9.23045 0.5 20 0.5H105C115.77 0.5 124.5 9.23045 124.5 20C124.5 30.7696 115.77 39.5 105 39.5H20C9.23045 39.5 0.5 30.7696 0.5 20Z" stroke="#26201E"/>
|
||||
<path d="M31.8834 19.601L22.5029 10.5127C22.4204 10.7406 22.3379 10.9685 22.3379 11.2819V28.0056C22.3379 28.319 22.4204 28.5469 22.5029 28.7748L31.8834 19.601Z" fill="#26201E"/>
|
||||
<path d="M32.9824 19.601L36.1184 22.6209L39.557 20.7406C40.6574 20.1423 40.6574 19.1452 39.557 18.5469L36.0359 16.5811L32.9824 19.601Z" fill="#26201E"/>
|
||||
<path d="M32.4332 19.0602L35.3217 16.1827L24.2906 10.1429C23.823 9.91493 23.3553 9.82946 23.0527 10.0004L32.4332 19.0602Z" fill="#26201E"/>
|
||||
<path d="M32.4332 20.1133L23.0527 29.2586C23.3553 29.401 23.823 29.3441 24.3732 29.1161L35.4592 23.0762L32.4332 20.1133Z" fill="#26201E"/>
|
||||
<path d="M47.3418 11.1396C46.7091 11.1396 46.1589 11.3676 45.7188 11.8234C45.2787 12.2792 45.0586 12.849 45.0586 13.5328C45.0586 14.2166 45.2787 14.7864 45.7188 15.2422C46.1589 15.6981 46.7091 15.926 47.3418 15.926C48.2221 15.926 48.9648 15.4416 49.35 14.7009V13.3904H47.3143V14.0456H48.6347V14.5585C48.3321 15.0428 47.9195 15.2707 47.3418 15.2707C46.8742 15.2707 46.489 15.0998 46.1865 14.7864C45.8839 14.4445 45.7463 14.0456 45.7463 13.5328C45.7463 13.0485 45.8839 12.6211 46.1865 12.3077C46.4615 11.9944 46.8467 11.8234 47.3143 11.8234C47.8645 11.8234 48.2771 12.0798 48.6072 12.5641L49.1024 12.1083C48.7173 11.4815 48.1121 11.1396 47.3418 11.1396Z" fill="#26201E"/>
|
||||
<path d="M50.2305 11.2246V15.8685H53.1464V15.2132H50.9182V13.7317H52.5412V13.0765H50.9182V11.8799H53.0639V11.2246H50.2305Z" fill="#26201E"/>
|
||||
<path d="M53.5039 11.2246V11.8799H54.9619V15.8685H55.6496V11.8799H57.1076V11.2246H53.5039Z" fill="#26201E"/>
|
||||
<path d="M59.2815 11.2246V15.8685H59.9692V11.2246H59.2815Z" fill="#26201E"/>
|
||||
<path d="M60.6289 11.2246V11.8799H62.0869V15.8685H62.7746V11.8799H64.2326V11.2246H60.6289Z" fill="#26201E"/>
|
||||
<path d="M68.3869 11.1396C67.7542 11.1396 67.204 11.3676 66.7639 11.8234C66.3237 12.2792 66.1037 12.849 66.1037 13.5328C66.1037 14.2166 66.3237 14.7864 66.7639 15.2422C67.204 15.6981 67.7267 15.926 68.3869 15.926C69.0196 15.926 69.5423 15.6981 69.9824 15.2422C70.4226 14.7864 70.6426 14.2166 70.6426 13.5328C70.6426 12.849 70.4226 12.2792 69.9824 11.8234C69.5698 11.3676 69.0196 11.1396 68.3869 11.1396ZM68.3869 11.8234C68.827 11.8234 69.2122 11.9944 69.4872 12.3077C69.7898 12.6211 69.9274 13.0485 69.9274 13.5328C69.9274 14.0456 69.7898 14.4445 69.4872 14.7579C69.1847 15.0713 68.827 15.2422 68.3869 15.2422C67.9468 15.2422 67.5616 15.0713 67.2865 14.7579C66.9839 14.416 66.8464 14.0171 66.8464 13.5328C66.8464 13.0485 66.9839 12.6211 67.2865 12.3077C67.5891 11.9944 67.9468 11.8234 68.3869 11.8234Z" fill="#26201E"/>
|
||||
<path d="M74.357 14.359L71.7437 11.1396H71.4961V15.869H72.1838V12.7351L74.8247 15.9545H75.0722V11.2251H74.3845V14.359H74.357Z" fill="#26201E"/>
|
||||
<path d="M49.0474 19.3164C47.9195 19.3164 46.9842 19.7153 46.214 20.5415C45.4437 21.3392 45.0586 22.3364 45.0586 23.5329C45.0586 24.7295 45.4437 25.7267 46.214 26.5244C46.9842 27.3221 47.9195 27.721 49.0474 27.721C50.5604 27.721 51.9083 26.8663 52.5685 25.5842V23.305H49.0199V24.4731H51.3581V25.3563C50.8354 26.1825 50.0927 26.5814 49.1024 26.5814C48.2771 26.5814 47.6169 26.2965 47.0942 25.7267C46.5716 25.1569 46.324 24.4161 46.324 23.5329C46.324 22.6782 46.5716 21.966 47.0667 21.3962C47.5619 20.8264 48.2221 20.5415 49.0199 20.5415C49.9552 20.5415 50.7254 20.9688 51.2756 21.8235L52.1559 21.0543C51.4406 19.8862 50.3953 19.3164 49.0474 19.3164Z" fill="#26201E"/>
|
||||
<path d="M56.0354 21.3965C55.2101 21.3965 54.4949 21.7099 53.9172 22.3082C53.3395 22.9065 53.0645 23.6757 53.0645 24.5589C53.0645 25.4421 53.3395 26.2113 53.9172 26.8096C54.4949 27.4079 55.1826 27.7213 56.0354 27.7213C56.8607 27.7213 57.5484 27.4079 58.1536 26.8096C58.7313 26.1828 59.0339 25.4421 59.0339 24.5589C59.0339 23.6757 58.7313 22.9065 58.1536 22.3082C57.5759 21.7099 56.8607 21.3965 56.0354 21.3965ZM56.0629 22.5931C56.5581 22.5931 56.9707 22.7925 57.3008 23.1629C57.6309 23.5332 57.796 23.9891 57.796 24.5589C57.796 25.1002 57.6309 25.5845 57.3008 25.9549C56.9707 26.3253 56.5581 26.4962 56.0629 26.4962C55.5678 26.4962 55.1551 26.3253 54.825 25.9549C54.4949 25.5845 54.3299 25.1002 54.3299 24.5589C54.3299 23.9891 54.4949 23.5332 54.825 23.1629C55.1276 22.764 55.5402 22.5931 56.0629 22.5931Z" fill="#26201E"/>
|
||||
<path d="M62.4456 21.3965C61.6203 21.3965 60.9051 21.7099 60.3274 22.3082C59.7497 22.9065 59.4746 23.6757 59.4746 24.5589C59.4746 25.4421 59.7497 26.2113 60.3274 26.8096C60.9051 27.4079 61.5928 27.7213 62.4456 27.7213C63.2708 27.7213 63.9585 27.4079 64.5637 26.8096C65.1414 26.1828 65.444 25.4421 65.444 24.5589C65.444 23.6757 65.1414 22.9065 64.5637 22.3082C63.9861 21.7099 63.2708 21.3965 62.4456 21.3965ZM62.4731 22.5931C62.9682 22.5931 63.3809 22.7925 63.711 23.1629C64.0411 23.5332 64.2061 23.9891 64.2061 24.5589C64.2061 25.1002 64.0411 25.5845 63.711 25.9549C63.3809 26.3253 62.9682 26.4962 62.4731 26.4962C61.9779 26.4962 61.5653 26.3253 61.2352 25.9549C60.9051 25.5845 60.74 25.1002 60.74 24.5589C60.74 23.9891 60.9051 23.5332 61.2352 23.1629C61.5378 22.764 61.9504 22.5931 62.4731 22.5931Z" fill="#26201E"/>
|
||||
<path d="M70.6708 22.3936C70.2307 21.7384 69.5704 21.3965 68.6902 21.3965C67.8924 21.3965 67.2597 21.6814 66.737 22.2512C66.2144 22.821 65.9668 23.5332 65.9668 24.4449C65.9668 25.3281 66.2419 26.0688 66.737 26.6386C67.2597 27.2084 67.8924 27.4933 68.6902 27.4933C69.5154 27.4933 70.1206 27.2084 70.5883 26.6386V27.066C70.5883 28.2056 69.9281 28.8039 68.9102 28.8039C68.25 28.8039 67.5898 28.519 66.9296 27.9492L66.2694 28.8609C67.0121 29.6301 67.9199 30.0005 68.9653 30.0005C70.6708 30.0005 71.7712 28.9178 71.7712 27.009V21.5959H70.6708V22.3936ZM68.8827 26.3253C68.3876 26.3253 68.0024 26.1543 67.6448 25.8124C67.3147 25.4421 67.1497 24.9862 67.1497 24.4449C67.1497 23.9036 67.3147 23.4478 67.6448 23.0774C67.9749 22.7355 68.3876 22.5646 68.8827 22.5646C69.818 22.5646 70.5883 23.1914 70.5883 24.4164C70.5883 25.0432 70.4232 25.4991 70.0931 25.8409C69.7355 26.1543 69.3504 26.3253 68.8827 26.3253Z" fill="#26201E"/>
|
||||
<path d="M72.9258 18.3477V27.5784H74.1362V18.3477H72.9258Z" fill="#26201E"/>
|
||||
<path d="M80.4625 24.1592C80.4625 23.3615 80.215 22.7062 79.7198 22.1649C79.2246 21.6236 78.6194 21.3672 77.8767 21.3672C77.0514 21.3672 76.3637 21.6806 75.8135 22.2789C75.2634 22.8772 74.9883 23.6464 74.9883 24.5296C74.9883 25.4413 75.2634 26.182 75.8411 26.7803C76.4187 27.3786 77.134 27.692 78.0142 27.692C78.867 27.692 79.6098 27.3786 80.27 26.7233L79.6923 25.8401C79.1971 26.3245 78.647 26.5524 78.0418 26.5524C77.079 26.5524 76.3637 25.9541 76.1987 24.9569H80.38C80.435 24.7005 80.4625 24.4156 80.4625 24.1592ZM77.8217 22.5068C78.647 22.5068 79.2521 23.0766 79.2521 23.9883H76.1987C76.3912 23.0766 77.0239 22.5068 77.8217 22.5068Z" fill="#26201E"/>
|
||||
<path d="M83.9844 19.459V27.5786H85.1948V24.4447H86.7353C87.5055 24.4447 88.1107 24.2168 88.6058 23.761C89.0735 23.3051 89.3211 22.6784 89.3211 21.9376C89.3211 21.1969 89.0735 20.5986 88.6058 20.1428C88.1382 19.6869 87.5055 19.459 86.7353 19.459H83.9844ZM86.7353 20.5986C87.588 20.5986 88.0832 21.1399 88.0832 21.9376C88.0832 22.7353 87.588 23.2767 86.7353 23.2767H85.2223V20.5986H86.7353Z" fill="#26201E"/>
|
||||
<path d="M90.0078 18.3477V27.5784H91.2182V18.3477H90.0078Z" fill="#26201E"/>
|
||||
<path d="M94.5485 21.3965C93.5307 21.3965 92.733 21.8238 92.1828 22.6785L92.8705 23.4478C93.3382 22.8495 93.8608 22.5361 94.4385 22.5361C95.2088 22.5361 95.6489 22.9919 95.6489 23.8181V24.217H94.0534C92.788 24.217 91.9902 24.9008 91.9902 25.9549C91.9902 27.009 92.7605 27.6928 93.9434 27.6928C94.7136 27.6928 95.3188 27.4079 95.7314 26.8666V27.5503H96.8593V23.9036C96.8593 22.3082 95.9515 21.3965 94.5485 21.3965ZM94.1909 26.7241C93.6133 26.7241 93.2006 26.4392 93.2006 25.9264C93.2006 25.4421 93.5307 25.1857 94.1909 25.1857H95.6214V25.2996C95.6489 26.1258 94.9887 26.7241 94.1909 26.7241Z" fill="#26201E"/>
|
||||
<path d="M100.215 25.954L98.5915 21.5381H97.2986L99.5543 27.3216L99.3343 27.8914C99.0592 28.5751 98.6741 28.7746 98.0964 28.7746C98.0138 28.7746 97.7938 28.7745 97.4362 28.7176V29.8002C97.7388 29.8857 98.0689 29.9142 98.3715 29.9142C99.3343 29.9142 99.967 29.4013 100.435 28.2617L103.185 21.5381H101.893L100.215 25.954Z" fill="#26201E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.2 KiB |
37
types/components/footer/navigation.ts
Normal file
37
types/components/footer/navigation.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
export type FooterMainNav = {
|
||||
id: string
|
||||
href: string
|
||||
title: string
|
||||
openInNewTab: boolean
|
||||
isExternal: boolean
|
||||
}
|
||||
export type FooterMainNavProps = {
|
||||
mainLinks: FooterMainNav[]
|
||||
}
|
||||
|
||||
export type FooterSecondaryNav = {
|
||||
id: string
|
||||
href: string
|
||||
title: string
|
||||
openInNewTab: boolean
|
||||
isExternal: boolean
|
||||
}
|
||||
export type FooterSecondaryNavProps = {
|
||||
secondaryLinks: {
|
||||
title: string
|
||||
links: FooterSecondaryNav[]
|
||||
}[]
|
||||
appDownloads: {
|
||||
title: string
|
||||
links: {
|
||||
title: string
|
||||
href: string
|
||||
id: string
|
||||
}[]
|
||||
}
|
||||
}
|
||||
|
||||
export enum AppDownnLoadLinks {
|
||||
apple = "/_static/img/app-store-badge.svg",
|
||||
google = "/_static/img/google-play-badge.svg",
|
||||
}
|
||||
@@ -27,11 +27,13 @@ export enum IconName {
|
||||
DoorOpen = "DoorOpen",
|
||||
ElectricBike = "ElectricBike",
|
||||
Email = "Email",
|
||||
Facebook = "Facebook",
|
||||
Fitness = "Fitness",
|
||||
Globe = "Globe",
|
||||
House = "House",
|
||||
Image = "Image",
|
||||
InfoCircle = "InfoCircle",
|
||||
Instagram = "Instagram",
|
||||
Location = "Location",
|
||||
Lock = "Lock",
|
||||
Parking = "Parking",
|
||||
@@ -42,6 +44,7 @@ export enum IconName {
|
||||
PlusCircle = "PlusCircle",
|
||||
Restaurant = "Restaurant",
|
||||
Sauna = "Sauna",
|
||||
Tripadvisor = "Tripadvisor",
|
||||
TshirtWash = "TshirtWash",
|
||||
Wifi = "Wifi",
|
||||
WarningTriangle = "WarningTriangle",
|
||||
|
||||
Reference in New Issue
Block a user