diff --git a/app/[lang]/(preview)/preview/page.tsx b/app/[lang]/(preview)/preview/page.tsx index aafb77f2b..3040c7b0f 100644 --- a/app/[lang]/(preview)/preview/page.tsx +++ b/app/[lang]/(preview)/preview/page.tsx @@ -1,21 +1,21 @@ import { previewRequest } from "@/lib/previewRequest" import { GetCurrentBlockPage } from "@/lib/graphql/Query/CurrentBlockPage.graphql" -import type { PageArgs, LangParams, UriParams } from "@/types/params" +import type { PageArgs, LangParams, PreviewParams } from "@/types/params" import type { GetCurrentBlockPageData } from "@/types/requests/currentBlockPage" import ContentstackLivePreview from "@contentstack/live-preview-utils" -import LoadingPreview from "@/components/Current/LoadingPreview" +import LoadingSpinner from "@/components/Current/LoadingSpinner" import ContentPage from "@/components/Current/ContentPage" export default async function CurrentContentPage({ params, searchParams, -}: PageArgs) { +}: PageArgs) { try { ContentstackLivePreview.setConfigFromParams(searchParams) - if (!searchParams.uri) { - return + if (!searchParams.uri || !searchParams.live_preview) { + return } const response = await previewRequest( diff --git a/components/Current/Aside/Contacts/Contact.tsx b/components/Current/Aside/Contacts/Contact.tsx new file mode 100644 index 000000000..5a4085658 --- /dev/null +++ b/components/Current/Aside/Contacts/Contact.tsx @@ -0,0 +1,82 @@ +import styles from "./contact.module.css" + +import { langEnum } from "@/types/lang" +import type { Lang } from "@/types/lang" +import type { ContactNode } from "@/types/requests/asides/contact" + +export default function Contact({ + title, + mailing_address, + visiting_address, + phone, + system: { locale }, +}: ContactNode) { + const visitingAddressMessage = getVisitingAddressMessage(locale) + return ( +
+
+
+
+

{title}

+

+ {mailing_address.name} +
+ {mailing_address.street} +
+ {mailing_address.zip} {mailing_address.city} +
+ {mailing_address.country} +

+

+ {visitingAddressMessage}: {visiting_address.street}{" "} +

+
+
+
+
+

{phone.title}

+ +
+
+
+
+ ) +} + +function getVisitingAddressMessage(lang: Lang) { + switch (lang) { + case langEnum.sv: + return "Besöksadress" + case langEnum.en: + return "Visiting address" + case langEnum.da: + return "Besøgsadresse" + case langEnum.de: + return "Besuchsadresse" + case langEnum.fi: + return "Vierailuosoite" + case langEnum.no: + return "Besøksadresse" + default: + return "" + } +} diff --git a/components/Current/Aside/Contacts/contact.module.css b/components/Current/Aside/Contacts/contact.module.css new file mode 100644 index 000000000..12019ed03 --- /dev/null +++ b/components/Current/Aside/Contacts/contact.module.css @@ -0,0 +1,62 @@ + +.highlightBlock { + padding: 10px 10px 15px; + background: #fff; + overflow: hidden; +} + +.heading { + font-family: BrandonText-Bold, Arial, Helvetica, sans-serif; + font-size: 1.375rem; + line-height: 1.1em; + text-transform: uppercase; + font-weight: 400; + color: #483729; + margin-bottom: 1rem; +} +.phoneContainer { + display: flex; + gap: 10px; + align-items: center; +} + +.phoneNumberLink { + line-height: 1.1em; + font-family: Helvetica, Arial, sans-serif; + font-weight: 400; + text-transform: none; + font-size: 1.125rem; + color: #00838e; + text-decoration: none; + cursor: pointer; +} + +.phoneIcon { + width: 42px; + height: 42px; + fill: #00838e; +} + +.p { + color: #333; + line-height: 1.3; + margin-bottom: 1em; + padding-top: 7px; + text-decoration: none; +} +.phoneNumberLink:active, +.phoneNumberLink:hover { + outline: 0; + text-decoration: underline; +} + +@media screen and (min-width: 950px) { + .heading { + font-size: 1.625rem; + } + + .phoneNumberLink { + line-height: 1.1em; + font-size: 1.375rem; + } +} diff --git a/components/Current/Aside/Contacts/index.tsx b/components/Current/Aside/Contacts/index.tsx new file mode 100644 index 000000000..76abe48b3 --- /dev/null +++ b/components/Current/Aside/Contacts/index.tsx @@ -0,0 +1,8 @@ +import type { ContactsProps } from "@/types/components/current/asides/contact" +import Contact from "./Contact" + +export default function Contacts({ contacts }: ContactsProps) { + return contacts.map((contact) => ( + + )) +} diff --git a/components/Current/Asides/Puffs/Puff/index.tsx b/components/Current/Aside/Puffs/Puff/index.tsx similarity index 77% rename from components/Current/Asides/Puffs/Puff/index.tsx rename to components/Current/Aside/Puffs/Puff/index.tsx index 2cf515552..560c09f8c 100644 --- a/components/Current/Asides/Puffs/Puff/index.tsx +++ b/components/Current/Aside/Puffs/Puff/index.tsx @@ -8,7 +8,14 @@ import styles from "./puff.module.css" import type { PuffProps } from "@/types/components/current/asides/puff" import Image from "@/components/Image" -export default function Puff({ imageConnection, is_internal, link, pageConnection, text, title }: PuffProps) { +export default function Puff({ + imageConnection, + is_internal, + link, + pageConnection, + text, + title, +}: PuffProps) { if (is_internal) { const page = pageConnection.edges[0] if (!page?.node?.url) { @@ -35,11 +42,14 @@ export default function Puff({ imageConnection, is_internal, link, pageConnectio ) } - -function PuffContent({ imageConnection, text, title }: Pick) { +function PuffContent({ + imageConnection, + text, + title, +}: Pick) { return (
- {imageConnection.edges.map(image => ( + {imageConnection.edges.map((image) => ( {image.node.title} ))}
-
-

- {title} -

+
+

{title}

) -} \ No newline at end of file +} diff --git a/components/Current/Asides/Puffs/Puff/puff.module.css b/components/Current/Aside/Puffs/Puff/puff.module.css similarity index 85% rename from components/Current/Asides/Puffs/Puff/puff.module.css rename to components/Current/Aside/Puffs/Puff/puff.module.css index 3aff0bbe8..24d75861d 100644 --- a/components/Current/Asides/Puffs/Puff/puff.module.css +++ b/components/Current/Aside/Puffs/Puff/puff.module.css @@ -12,10 +12,12 @@ height: auto; object-fit: contain; object-position: center; + width: 100%; } .content { - padding: 20px 0px; + padding: 10px; + background-color: #fff; } .heading { @@ -40,6 +42,12 @@ text-decoration: none; } +@media screen and (min-width: 740px) { + .content { + padding: 20px 0px; + } +} + @media screen and (min-width: 950px) { .heading { font-size: 1.375rem; diff --git a/components/Current/Asides/Puffs/Puff/renderOptions.tsx b/components/Current/Aside/Puffs/Puff/renderOptions.tsx similarity index 100% rename from components/Current/Asides/Puffs/Puff/renderOptions.tsx rename to components/Current/Aside/Puffs/Puff/renderOptions.tsx diff --git a/components/Current/Asides/Puffs/index.tsx b/components/Current/Aside/Puffs/index.tsx similarity index 100% rename from components/Current/Asides/Puffs/index.tsx rename to components/Current/Aside/Puffs/index.tsx diff --git a/components/Current/Aside/aside.module.css b/components/Current/Aside/aside.module.css new file mode 100644 index 000000000..e488a822a --- /dev/null +++ b/components/Current/Aside/aside.module.css @@ -0,0 +1,3 @@ +.wrapper { + padding: 20px 10px 5px; +} \ No newline at end of file diff --git a/components/Current/Aside.tsx b/components/Current/Aside/index.tsx similarity index 53% rename from components/Current/Aside.tsx rename to components/Current/Aside/index.tsx index ea16faef9..d4100d2ff 100644 --- a/components/Current/Aside.tsx +++ b/components/Current/Aside/index.tsx @@ -1,22 +1,35 @@ -import Puffs from "./Asides/Puffs" +import Puffs from "./Puffs" +import Contacts from "./Contacts" import { AsideTypenameEnum } from "@/types/requests/utils/typename" import type { AsideProps } from "@/types/components/current/aside" +import styles from "./aside.module.css" + export default function Aside({ blocks }: AsideProps) { if (!blocks?.length) { return null } return ( -