From 8a143a29164a0a8a7d6f9ca6e2e8175ee9e9438c Mon Sep 17 00:00:00 2001 From: Erik Tiekstra Date: Wed, 21 Jan 2026 07:19:19 +0000 Subject: [PATCH] chore: Moved Breadcrumbs to design system and added stories Approved-by: Bianca Widstam --- .../my-pages/@breadcrumbs/[...path]/page.tsx | 7 +- .../campaign_overview_page/[uid]/page.tsx | 8 +- .../@breadcrumbs/campaign_page/[uid]/page.tsx | 8 +- .../@breadcrumbs/loyalty_page/[uid]/page.tsx | 10 +- .../promo_campaign_page/[uid]/page.tsx | 8 +- .../components/Breadcrumbs/index.tsx | 19 +- .../ContentType/CollectionPage/index.tsx | 9 +- .../ContentType/ContentPage/index.tsx | 4 +- .../DestinationCityPageSkeleton.tsx | 7 +- .../DestinationCityPage/index.tsx | 4 +- .../DestinationCountryPageSkeleton.tsx | 7 +- .../DestinationCountryPage/index.tsx | 4 +- .../ContentType/HotelPage/index.tsx | 4 +- .../HotelSubpage/HeroHeader/index.tsx | 4 +- .../Breadcrumbs/Breadcrumb.tsx | 39 ---- .../Breadcrumbs/BreadcrumbsSkeleton/index.tsx | 41 ----- .../Breadcrumbs/breadcrumbs.module.css | 171 ------------------ .../Breadcrumbs/breadcrumbs.ts | 22 --- packages/design-system/.storybook/preview.tsx | 2 +- .../Breadcrumbs/Arrow/arrow.module.css | 0 .../components}/Breadcrumbs/Arrow/arrow.ts | 3 +- .../components}/Breadcrumbs/Arrow/index.tsx | 0 .../components}/Breadcrumbs/Arrow/variants.ts | 0 .../Breadcrumb/BreadcrumbSkeleton.tsx | 27 +++ .../Breadcrumb/breadcrumb.module.css | 27 +++ .../Breadcrumbs/Breadcrumb/index.tsx | 47 +++++ .../Breadcrumbs/Breadcrumbs.stories.tsx | 139 ++++++++++++++ .../components/Breadcrumbs/Breadcrumbs.tsx | 66 +++---- .../Breadcrumbs/BreadcrumbsSkeleton.tsx | 30 +++ .../Breadcrumbs/breadcrumbs.module.css | 127 +++++++++++++ .../lib/components/Breadcrumbs/index.tsx | 4 + .../lib/components/Breadcrumbs/types.ts | 22 +++ .../lib/components}/Breadcrumbs/utils.ts | 2 +- .../lib/components}/Breadcrumbs/variants.ts | 8 +- packages/design-system/package.json | 1 + 35 files changed, 524 insertions(+), 357 deletions(-) delete mode 100644 apps/scandic-web/components/TempDesignSystem/Breadcrumbs/Breadcrumb.tsx delete mode 100644 apps/scandic-web/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton/index.tsx delete mode 100644 apps/scandic-web/components/TempDesignSystem/Breadcrumbs/breadcrumbs.module.css delete mode 100644 apps/scandic-web/components/TempDesignSystem/Breadcrumbs/breadcrumbs.ts rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/Arrow/arrow.module.css (100%) rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/Arrow/arrow.ts (72%) rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/Arrow/index.tsx (100%) rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/Arrow/variants.ts (100%) create mode 100644 packages/design-system/lib/components/Breadcrumbs/Breadcrumb/BreadcrumbSkeleton.tsx create mode 100644 packages/design-system/lib/components/Breadcrumbs/Breadcrumb/breadcrumb.module.css create mode 100644 packages/design-system/lib/components/Breadcrumbs/Breadcrumb/index.tsx create mode 100644 packages/design-system/lib/components/Breadcrumbs/Breadcrumbs.stories.tsx rename apps/scandic-web/components/TempDesignSystem/Breadcrumbs/index.tsx => packages/design-system/lib/components/Breadcrumbs/Breadcrumbs.tsx (76%) create mode 100644 packages/design-system/lib/components/Breadcrumbs/BreadcrumbsSkeleton.tsx create mode 100644 packages/design-system/lib/components/Breadcrumbs/breadcrumbs.module.css create mode 100644 packages/design-system/lib/components/Breadcrumbs/index.tsx create mode 100644 packages/design-system/lib/components/Breadcrumbs/types.ts rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/utils.ts (84%) rename {apps/scandic-web/components/TempDesignSystem => packages/design-system/lib/components}/Breadcrumbs/variants.ts (82%) diff --git a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx index e28ff5c69..4168c4d37 100644 --- a/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(protected)/my-pages/@breadcrumbs/[...path]/page.tsx @@ -1,11 +1,12 @@ import { Suspense } from "react" -import Breadcrumbs from "@/components/Breadcrumbs" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" +import { BreadcrumbsSkeleton } from "@scandic-hotels/design-system/Breadcrumbs" + +import { Breadcrumbs } from "@/components/Breadcrumbs" export default function AllBreadcrumbs() { return ( - }> + }> ) diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_overview_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_overview_page/[uid]/page.tsx index eae837fe6..dfde73b46 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_overview_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_overview_page/[uid]/page.tsx @@ -1,9 +1,11 @@ import { Suspense } from "react" -import Breadcrumbs from "@/components/Breadcrumbs" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" +import { + type BreadcrumbsProps, + BreadcrumbsSkeleton, +} from "@scandic-hotels/design-system/Breadcrumbs" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" export default function CampaignOverviewPageBreadcrumbs() { const variants: Pick = { diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_page/[uid]/page.tsx index af1ba8270..c1f05282c 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/campaign_page/[uid]/page.tsx @@ -1,9 +1,11 @@ import { Suspense } from "react" -import Breadcrumbs from "@/components/Breadcrumbs" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" +import { + type BreadcrumbsProps, + BreadcrumbsSkeleton, +} from "@scandic-hotels/design-system/Breadcrumbs" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" export default function CampaignPageBreadcrumbs() { const variants: Pick = { diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/loyalty_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/loyalty_page/[uid]/page.tsx index 72be8de1a..489bfb77f 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/loyalty_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/loyalty_page/[uid]/page.tsx @@ -1,10 +1,12 @@ import { Suspense } from "react" -import Breadcrumbs from "@/components/Breadcrumbs" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" -import { isLoggedInUser } from "@/utils/isLoggedInUser" +import { + type BreadcrumbsProps, + BreadcrumbsSkeleton, +} from "@scandic-hotels/design-system/Breadcrumbs" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" +import { isLoggedInUser } from "@/utils/isLoggedInUser" export default async function LoyaltyPageBreadcrumbs() { const isUserLoggedIn = await isLoggedInUser() diff --git a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/promo_campaign_page/[uid]/page.tsx b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/promo_campaign_page/[uid]/page.tsx index 0a6a269ac..155cc0b90 100644 --- a/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/promo_campaign_page/[uid]/page.tsx +++ b/apps/scandic-web/app/[lang]/(live)/(public)/(contentTypes)/@breadcrumbs/promo_campaign_page/[uid]/page.tsx @@ -1,9 +1,11 @@ import { Suspense } from "react" -import Breadcrumbs from "@/components/Breadcrumbs" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" +import { + type BreadcrumbsProps, + BreadcrumbsSkeleton, +} from "@scandic-hotels/design-system/Breadcrumbs" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" export default function PromoCampaignPageBreadcrumbs() { const variants: Pick = { diff --git a/apps/scandic-web/components/Breadcrumbs/index.tsx b/apps/scandic-web/components/Breadcrumbs/index.tsx index 12bd931e9..5c49f84e4 100644 --- a/apps/scandic-web/components/Breadcrumbs/index.tsx +++ b/apps/scandic-web/components/Breadcrumbs/index.tsx @@ -1,15 +1,18 @@ +import { + Breadcrumbs as BreadcrumbsComponent, + type BreadcrumbsProps, +} from "@scandic-hotels/design-system/Breadcrumbs" + import { serverClient } from "@/lib/trpc/server" -import BreadcrumbsComp from "@/components/TempDesignSystem/Breadcrumbs" import { generateBreadcrumbsSchema } from "@/utils/jsonSchemas" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" - -interface Props extends Omit { +export async function Breadcrumbs({ + subpageTitle, + ...props +}: Omit & { subpageTitle?: string -} - -export default async function Breadcrumbs({ subpageTitle, ...props }: Props) { +}) { const caller = await serverClient() const breadcrumbs = await caller.contentstack.breadcrumbs.get() if (!breadcrumbs?.length) { @@ -30,7 +33,7 @@ export default async function Breadcrumbs({ subpageTitle, ...props }: Props) { __html: JSON.stringify(jsonSchema.jsonLd), }} /> - + ) } diff --git a/apps/scandic-web/components/ContentType/CollectionPage/index.tsx b/apps/scandic-web/components/ContentType/CollectionPage/index.tsx index 6a1d6eff1..0be6e7f7e 100644 --- a/apps/scandic-web/components/ContentType/CollectionPage/index.tsx +++ b/apps/scandic-web/components/ContentType/CollectionPage/index.tsx @@ -1,6 +1,10 @@ import { cx } from "class-variance-authority" import { Suspense } from "react" +import { + type BreadcrumbsProps, + BreadcrumbsSkeleton, +} from "@scandic-hotels/design-system/Breadcrumbs" import ButtonLink from "@scandic-hotels/design-system/ButtonLink" import Image from "@scandic-hotels/design-system/Image" import { Typography } from "@scandic-hotels/design-system/Typography" @@ -9,17 +13,14 @@ import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK" import { serverClient } from "@/lib/trpc/server" import Blocks from "@/components/Blocks" -import Breadcrumbs from "@/components/Breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" import HeaderDynamicContent from "@/components/Headers/DynamicContent" import { HeroVideo } from "@/components/HeroVideo" import MeetingPackageWidget from "@/components/MeetingPackageWidget" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" import LinkChips from "@/components/TempDesignSystem/LinkChips" import styles from "./collectionPage.module.css" -import type { BreadcrumbsProps } from "@/components/TempDesignSystem/Breadcrumbs/breadcrumbs" - export async function CollectionPage() { const caller = await serverClient() const collectionPageRes = await caller.contentstack.collectionPage.get() diff --git a/apps/scandic-web/components/ContentType/ContentPage/index.tsx b/apps/scandic-web/components/ContentType/ContentPage/index.tsx index cd77cb925..e6a0e1de6 100644 --- a/apps/scandic-web/components/ContentType/ContentPage/index.tsx +++ b/apps/scandic-web/components/ContentType/ContentPage/index.tsx @@ -1,5 +1,6 @@ import { Suspense } from "react" +import { BreadcrumbsSkeleton } from "@scandic-hotels/design-system/Breadcrumbs" import ButtonLink from "@scandic-hotels/design-system/ButtonLink" import { Typography } from "@scandic-hotels/design-system/Typography" import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK" @@ -7,14 +8,13 @@ import { TrackingSDK } from "@scandic-hotels/tracking/TrackingSDK" import { serverClient } from "@/lib/trpc/server" import Blocks from "@/components/Blocks" -import Breadcrumbs from "@/components/Breadcrumbs" +import { Breadcrumbs } from "@/components/Breadcrumbs" import HeaderDynamicContent from "@/components/Headers/DynamicContent" import Hero from "@/components/Hero" import { HeroVideo } from "@/components/HeroVideo" import Sidebar from "@/components/Sidebar" import SidebarSkeleton from "@/components/Sidebar/SidebarSkeleton" import StickyMeetingPackageWidget from "@/components/StickyMeetingPackageWidget" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" import LinkChips from "@/components/TempDesignSystem/LinkChips" import styles from "./contentPage.module.css" diff --git a/apps/scandic-web/components/ContentType/DestinationPage/DestinationCityPage/DestinationCityPageSkeleton.tsx b/apps/scandic-web/components/ContentType/DestinationPage/DestinationCityPage/DestinationCityPageSkeleton.tsx index ca2a9890b..5403829f9 100644 --- a/apps/scandic-web/components/ContentType/DestinationPage/DestinationCityPage/DestinationCityPageSkeleton.tsx +++ b/apps/scandic-web/components/ContentType/DestinationPage/DestinationCityPage/DestinationCityPageSkeleton.tsx @@ -1,9 +1,8 @@ "use client" +import { BreadcrumbsSkeleton } from "@scandic-hotels/design-system/Breadcrumbs" import SkeletonShimmer from "@scandic-hotels/design-system/SkeletonShimmer" -import BreadcrumbsSkeleton from "@/components/TempDesignSystem/Breadcrumbs/BreadcrumbsSkeleton" - import HotelListingSkeleton from "../DestinationListing/HotelListing/HotelListingSkeleton" import ExperienceListSkeleton from "../ExperienceList/ExperienceListSkeleton" import SidebarContentWrapperSkeleton from "../SidebarContentWrapper/SidebarContentWrapperSkeleton" @@ -19,7 +18,9 @@ export default function DestinationCityPageSkeleton() {
- +
+ +