Merged in feat/sw-2863-move-contentstack-router-to-trpc-package (pull request #2389)

feat(SW-2863): Move contentstack router to trpc package

* Add exports to packages and lint rule to prevent relative imports

* Add env to trpc package

* Add eslint to trpc package

* Apply lint rules

* Use direct imports from trpc package

* Add lint-staged config to trpc

* Move lang enum to common

* Restructure trpc package folder structure

* WIP first step

* update internal imports in trpc

* Fix most errors in scandic-web

Just 100 left...

* Move Props type out of trpc

* Fix CategorizedFilters types

* Move more schemas in hotel router

* Fix deps

* fix getNonContentstackUrls

* Fix import error

* Fix entry error handling

* Fix generateMetadata metrics

* Fix alertType enum

* Fix duplicated types

* lint:fix

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package

* Fix broken imports

* Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package


Approved-by: Linus Flood
This commit is contained in:
Anton Gunnarsson
2025-06-26 07:53:01 +00:00
parent 0263ab8c87
commit 002d093af4
921 changed files with 3112 additions and 3008 deletions
@@ -2,10 +2,9 @@
import { useIntl } from "react-intl"
import { dt } from "@scandic-hotels/common/dt"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { dt } from "@/lib/dt"
import Button from "@/components/TempDesignSystem/Button"
import Caption from "@/components/TempDesignSystem/Text/Caption"
import Subtitle from "@/components/TempDesignSystem/Text/Subtitle"
@@ -1,7 +1,6 @@
import {
MembershipLevelEnum,
membershipLevels,
} from "@/constants/membershipLevels"
import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membershipLevels"
import { membershipLevels } from "@/constants/membershipLevels"
import MembershipLevelIcon from "@/components/Levels/Icon"
import Body from "@/components/TempDesignSystem/Text/Body"
@@ -1,6 +1,5 @@
import { Lang } from "@scandic-hotels/common/constants/language"
import { dt } from "@/lib/dt"
import { dt } from "@scandic-hotels/common/dt"
import Body from "@/components/TempDesignSystem/Text/Body"
import { getIntl } from "@/i18n"
@@ -1,4 +1,5 @@
import { MembershipLevelEnum } from "@/constants/membershipLevels"
import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membershipLevels"
import { serverClient } from "@/lib/trpc/server"
import { getIntl } from "@/i18n"
@@ -1,12 +1,10 @@
"use client"
import { useReducer } from "react"
import { useIntl } from "react-intl"
import {
type MembershipLevel,
membershipLevels,
} from "@/constants/membershipLevels"
import { type MembershipLevel } from "@scandic-hotels/common/constants/membershipLevels"
import { membershipLevels } from "@/constants/membershipLevels"
import MembershipLevelIcon from "@/components/Levels/Icon"
import DeprecatedSelect from "@/components/TempDesignSystem/DeprecatedSelect"
@@ -1,12 +1,13 @@
import {
type MembershipLevel,
MembershipLevelEnum,
} from "@/constants/membershipLevels"
} from "@scandic-hotels/common/constants/membershipLevels"
import { getSteppedUpLevel } from "@/utils/user"
import type { LevelWithRewards } from "@scandic-hotels/trpc/routers/contentstack/loyaltyLevel/output"
import {
type LevelWithRewards,
OverviewTableActionsEnum,
type OverviewTableClientProps,
type OverviewTableReducerAction,
@@ -3,8 +3,9 @@
import { usePathname } from "next/navigation"
import { useIntl } from "react-intl"
import { dt } from "@scandic-hotels/common/dt"
import { webviews } from "@/constants/routes/webviews"
import { dt } from "@/lib/dt"
import Link from "@/components/TempDesignSystem/Link"
import Table from "@/components/TempDesignSystem/Table"
@@ -2,7 +2,7 @@
import { useIntl } from "react-intl"
import { dt } from "@/lib/dt"
import { dt } from "@scandic-hotels/common/dt"
import Table from "@/components/TempDesignSystem/Table"
import Body from "@/components/TempDesignSystem/Text/Body"
@@ -2,6 +2,8 @@
import { useRef, useState } from "react"
import { type Reward } from "@scandic-hotels/trpc/types/rewards"
import { REWARDS_PER_PAGE } from "@/constants/rewards"
import { trpc } from "@/lib/trpc/client"
@@ -19,7 +21,6 @@ import Redeem from "../Redeem"
import styles from "./current.module.css"
import type { CurrentRewardsClientProps } from "@/types/components/myPages/myPage/accountPage"
import type { Reward } from "@/types/components/myPages/rewards"
export default function ClientCurrentRewards({
rewards: initialData,
@@ -1,6 +1,7 @@
import { Lock } from "react-feather"
import { MembershipLevelEnum } from "@/constants/membershipLevels"
import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membershipLevels"
import { getMembershipLevel } from "@/lib/trpc/memoizedRequests"
import { serverClient } from "@/lib/trpc/server"
@@ -14,7 +14,7 @@ import { RewardIcon } from "../../RewardIcon"
import styles from "../redeem.module.css"
import type { Campaign } from "@/types/components/myPages/rewards"
import type { Campaign } from "@scandic-hotels/trpc/types/rewards"
export default function Campaign({ reward }: { reward: Campaign }) {
const intl = useIntl()
@@ -16,7 +16,7 @@ import useRedeemFlow from "../useRedeemFlow"
import styles from "../redeem.module.css"
import type { Surprise, Tier } from "@/types/components/myPages/rewards"
import type { Surprise, Tier } from "@scandic-hotels/trpc/types/rewards"
export default function Tier({
reward,
@@ -2,10 +2,9 @@
import { useIntl } from "react-intl"
import { dt } from "@scandic-hotels/common/dt"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { dt } from "@/lib/dt"
import Countdown from "@/components/Countdown"
import Caption from "@/components/TempDesignSystem/Text/Caption"
@@ -25,12 +25,13 @@ import { RedeemContext } from "./useRedeemFlow"
import styles from "./redeem.module.css"
import type { Reward } from "@scandic-hotels/trpc/types/rewards"
import type {
RedeemModalState,
RedeemProps,
RedeemStep,
} from "@/types/components/myPages/myPage/accountPage"
import type { Reward } from "@/types/components/myPages/rewards"
const MotionOverlay = motion.create(ModalOverlay)
const MotionModal = motion.create(Modal)
@@ -6,8 +6,9 @@ import { trpc } from "@/lib/trpc/client"
import { getFirstRedeemableCoupon } from "@/utils/rewards"
import type { Reward } from "@scandic-hotels/trpc/types/rewards"
import type { RedeemFlowContext } from "@/types/components/myPages/myPage/accountPage"
import type { Reward } from "@/types/components/myPages/rewards"
export const RedeemContext = createContext<RedeemFlowContext>({
redeemStep: "initial",
@@ -1,4 +1,6 @@
import { REWARD_IDS } from "@/constants/rewards"
// import { REWARD_IDS } from "@scandic-hotels/trpc/types/rewards"
import { REWARD_IDS, type RewardId } from "@scandic-hotels/trpc/types/rewards"
import { IconName } from "@/components/Icons/iconName"
import { IllustrationByIconName } from "@/components/Icons/IllustrationByIconName"
@@ -7,7 +9,7 @@ import { isValidRewardId } from "@/utils/rewards"
import type { IconProps } from "@scandic-hotels/design-system/Icons"
import type { FC } from "react"
import type { RewardId } from "@/types/components/myPages/rewards"
// import type { RewardId } from "@/types/components/myPages/rewards"
function getIconForRewardId(rewardId: RewardId): IconName {
switch (rewardId) {
@@ -1,6 +1,11 @@
import { mapRewardToIcon } from "./data"
import type { RewardIconProps } from "@/types/components/myPages/rewards"
import type { LogoAndIllustrationProps } from "@scandic-hotels/design-system/Icons"
export interface RewardIconProps extends LogoAndIllustrationProps {
rewardId: string
iconSize?: "small" | "medium" | "large"
}
// Original SVG aspect ratio is 358:202 (≈1.77:1)
const sizeMap = {
@@ -1,9 +1,8 @@
"use client"
import { dt } from "@scandic-hotels/common/dt"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import { dt } from "@/lib/dt"
import Image from "@/components/Image"
import Link from "@/components/TempDesignSystem/Link"
import Caption from "@/components/TempDesignSystem/Text/Caption"
@@ -1,5 +1,7 @@
import { Suspense } from "react"
import { DynamicContentEnum } from "@scandic-hotels/trpc/types/dynamicContent"
import { env } from "@/env/server"
import HowItWorks from "@/components/Blocks/DynamicContent/HowItWorks"
@@ -22,7 +24,6 @@ import LoadingSpinner from "@/components/LoadingSpinner"
import JobylonFeed from "./JobylonFeed"
import type { DynamicContentProps } from "@/types/components/blocks/dynamicContent"
import { DynamicContentEnum } from "@/types/enums/dynamicContent"
export default function DynamicContent(props: DynamicContentProps) {
return (