diff --git a/apps/partner-sas/package.json b/apps/partner-sas/package.json index baec9384c..5772575a6 100644 --- a/apps/partner-sas/package.json +++ b/apps/partner-sas/package.json @@ -29,8 +29,12 @@ "@scandic-hotels/trpc": "workspace:*", "@sentry/nextjs": "^10.33.0", "@swc/plugin-formatjs": "^3.2.2", + "@t3-oss/env-nextjs": "^0.13.4", "@tanstack/react-query": "^5.75.5", "@tanstack/react-query-devtools": "^5.75.5", + "@trpc/client": "^11.1.2", + "@trpc/server": "^11.1.2", + "class-variance-authority": "^0.7.1", "iron-session": "^8.0.4", "next": "16.0.10", "next-auth": "5.0.0-beta.29", @@ -39,7 +43,8 @@ "react-dom": "19.2.1", "react-intl": "^7.1.11", "server-only": "^0.0.1", - "usehooks-ts": "3.1.1" + "usehooks-ts": "3.1.1", + "zod": "^3.24.4" }, "devDependencies": { "@playwright/test": "^1.53.1", @@ -49,14 +54,15 @@ "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@typescript/native-preview": "^7.0.0-dev.20251104.1", + "@vitejs/plugin-react": "^5.1.1", "babel-plugin-formatjs": "^10.5.39", "eslint": "^9", "eslint-config-next": "16.0.7", "eslint-plugin-formatjs": "^5.3.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-simple-import-sort": "^12.1.1", - "graphql-tag": "^2.12.6", "typescript": "5.8.3", + "vite-tsconfig-paths": "^5.1.4", "vitest": "^4.0.0" }, "engines": { diff --git a/apps/redis-api/package.json b/apps/redis-api/package.json index 583535702..67ba11503 100644 --- a/apps/redis-api/package.json +++ b/apps/redis-api/package.json @@ -18,7 +18,8 @@ "bullmq": "5.54.3", "elysia": "1.3.1", "ioredis": "5.8.2", - "pino": "9.6.0" + "pino": "9.6.0", + "zod": "^3.24.4" }, "devDependencies": { "@eslint/eslintrc": "^3.3.1", diff --git a/apps/scandic-web/components/ContentType/HotelSubpage/HtmlContent/index.tsx b/apps/scandic-web/components/ContentType/HotelSubpage/HtmlContent/index.tsx index 604b06123..a7115998b 100644 --- a/apps/scandic-web/components/ContentType/HotelSubpage/HtmlContent/index.tsx +++ b/apps/scandic-web/components/ContentType/HotelSubpage/HtmlContent/index.tsx @@ -1,4 +1,3 @@ -import { ElementType } from "domelementtype" import parse, { type DOMNode, Element, type Text } from "html-react-parser" import Table from "@scandic-hotels/design-system/Table" @@ -38,7 +37,7 @@ function renderChildren(node: Element) { } function renderNode(domNode: Node, idx: number) { - if (domNode.type === ElementType.Tag) { + if (domNode.type === "tag") { switch (domNode.name) { case NodeNames.h1: return ( @@ -237,7 +236,7 @@ function renderNode(domNode: Node, idx: number) { ) } - } else if (domNode.type === ElementType.Text) { + } else if (domNode.type === "text") { return domNode.data } return null diff --git a/apps/scandic-web/package.json b/apps/scandic-web/package.json index e7a50aaff..169ab831e 100644 --- a/apps/scandic-web/package.json +++ b/apps/scandic-web/package.json @@ -32,7 +32,6 @@ "@netlify/functions": "^3.0.0", "@netlify/plugin-nextjs": "^5.15.1", "@radix-ui/react-slot": "^1.2.2", - "@react-aria/ssr": "^3.9.8", "@scandic-hotels/booking-flow": "workspace:*", "@scandic-hotels/common": "workspace:*", "@scandic-hotels/design-system": "workspace:*", @@ -44,7 +43,6 @@ "@tanstack/react-query": "^5.75.5", "@tanstack/react-query-devtools": "^5.75.5", "@tanstack/react-table": "^8.21.3", - "@testing-library/dom": "^10.4.0", "@trpc/client": "^11.1.2", "@trpc/server": "^11.1.2", "@tsparticles/confetti": "^3.8.1", @@ -60,8 +58,6 @@ "dialogshift-webchat-sdk": "^2.10.1", "embla-carousel": "^8.6.0", "embla-carousel-react": "^8.6.0", - "flat": "^6.0.1", - "graphql-tag": "^2.12.6", "html-react-parser": "^5.2.3", "ics": "^3.8.1", "immer": "10.1.1", @@ -70,7 +66,6 @@ "jsonwebtoken": "^9.0.2", "md5": "^2.3.0", "motion": "^12.10.0", - "nanoid": "^5.1.5", "next": "16.0.10", "next-auth": "5.0.0-beta.29", "react": "19.2.1", @@ -89,23 +84,15 @@ "zustand": "^4.5.2" }, "devDependencies": { - "@formatjs/cli": "^6.7.1", - "@lokalise/node-api": "^14.0.0", "@playwright/test": "^1.57.0", - "@react-aria/test-utils": "1.0.0-alpha.8", "@scandic-hotels/typescript-config": "workspace:*", - "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "^14.6.1", - "@types/adm-zip": "^0.5.7", "@types/json-stable-stringify-without-jsonify": "^1.0.2", "@types/jsonwebtoken": "^9", "@types/node": "^20", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "^5.0.0", - "adm-zip": "^0.5.16", "babel-plugin-formatjs": "^10.5.39", - "dotenv": "^16.5.0", "eslint": "^9", "eslint-config-next": "16.0.7", "eslint-plugin-formatjs": "^5.3.1", @@ -113,7 +100,6 @@ "eslint-plugin-simple-import-sort": "^12.1.1", "jiti": "^1.21.0", "jsdom": "^26.1.0", - "lint-staged": "^15.5.2", "schema-dts": "^1.1.5", "typescript": "5.8.3", "vite-tsconfig-paths": "^5.1.4", diff --git a/knip.json b/knip.json index fda971907..9d72b1ef1 100644 --- a/knip.json +++ b/knip.json @@ -6,7 +6,8 @@ "scripts/**/*.{ts,mts,mjs,js}", "netlify/netlify-plugin-branch-sync/index.js" ], - "project": ["scripts/**/*.{ts,mts,mjs,js}"] + "project": ["scripts/**/*.{ts,mts,mjs,js}"], + "ignoreDependencies": ["@scandic-hotels/*"] }, "apps/scandic-web": { "entry": [ @@ -20,7 +21,8 @@ "!**/*.stories.{ts,tsx}", "!**/*.test.{ts,tsx}", "!**/*.spec.{ts,tsx}" - ] + ], + "ignoreDependencies": ["@swc/plugin-formatjs", "eslint-plugin-import"] }, "apps/partner-sas": { "entry": ["app/**/*.{ts,tsx}", "auth.ts"], @@ -29,7 +31,8 @@ "!**/*.stories.{ts,tsx}", "!**/*.test.{ts,tsx}", "!**/*.spec.{ts,tsx}" - ] + ], + "ignoreDependencies": ["@swc/plugin-formatjs", "eslint-plugin-import"] }, "apps/redis-api": { "entry": ["src/index.ts", "scripts/**/*.ts"], @@ -40,33 +43,41 @@ "project": [ "netlify/**/*.{ts,tsx,mts,js}", "scripts/**/*.{ts,tsx,mts,js}" - ] + ], + "ignoreDependencies": ["@netlify/functions"] }, "packages/booking-flow": { - "project": ["lib/**/*.{ts,tsx}", "env/**/*.ts"] + "project": ["**/*.{ts,tsx}"], + "ignoreDependencies": ["eslint-plugin-import"] }, "packages/common": { "project": ["**/*.{ts,tsx}", "!**/*.test.{ts,tsx}", "!**/*.spec.{ts,tsx}"] }, "packages/design-system": { - "entry": ["generate/generate.ts"], + "entry": [".storybook/content/**/*.{js,jsx,ts,tsx,mdx}"], "project": [ "lib/**/*.{ts,tsx}", - ".storybook/**/*.{ts,tsx}", - "generate/**/*.ts" + "generate/**/*.ts", + ".storybook/**/*.{js,jsx,ts,tsx,mts,mdx}" + ], + "ignoreDependencies": [ + "@typescript-eslint/eslint-plugin", + "eslint-plugin-react-hooks", + "eslint-plugin-storybook" ] }, "packages/tracking": { - "project": ["lib/**/*.{ts,tsx}"] + "project": ["**/*.{ts,tsx}"] }, "packages/trpc": { - "project": ["lib/**/*.{ts,tsx}"] + "project": ["**/*.{ts,tsx}"] }, "packages/typescript-config": { "entry": [], "project": ["**/*.json"] } }, + "ignoreDependencies": ["jsdom", "babel-plugin-formatjs"], "ignore": [ "**/dist/**", "**/build/**", diff --git a/package.json b/package.json index 602756597..1a6d42783 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "format": "turbo run format", "postinstall": "husky", "knip": "knip", - "knip:production": "knip --production --strict", "icons:update": "jiti scripts/material-symbols-update.mts", "check-types": "turbo run check-types", "env:web": "node scripts/show-env.mjs scandic-web --missing", @@ -38,13 +37,15 @@ "packages/*" ], "devDependencies": { - "@eslint/compat": "^1.2.9", "@formatjs/cli": "^6.7.1", + "@lokalise/node-api": "^14.0.0", + "@types/adm-zip": "^0.5.7", "@types/react": "19.2.7", - "@types/react-dom": "19.2.3", "@typescript/native-preview": "^7.0.0-dev.20251104.1", "@yarnpkg/types": "^4.0.1", + "adm-zip": "^0.5.16", "commander": "^14.0.0", + "dotenv": "^16.5.0", "husky": "^9.1.7", "jiti": "^1.21.0", "knip": "^5.80.2", diff --git a/packages/booking-flow/package.json b/packages/booking-flow/package.json index 5cd08d244..adc48e3b5 100644 --- a/packages/booking-flow/package.json +++ b/packages/booking-flow/package.json @@ -62,14 +62,12 @@ "immer": "^10.1.3", "json-stable-stringify-without-jsonify": "^1.0.1", "libphonenumber-js": "^1.12.15", - "motion": "^12.10.0", "nuqs": "2.4.3", "react-aria": "^3.39.0", "react-aria-components": "1.8.0", "react-day-picker": "^9.6.7", "react-hook-form": "^7.56.2", "react-intl": "^7.1.11", - "react-to-print": "^3.1.0", "server-only": "^0.0.1", "usehooks-ts": "3.1.1", "zustand": "^4.5.2" @@ -80,17 +78,11 @@ "react": "^19" }, "devDependencies": { - "@eslint/compat": "^1.2.9", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "^9.26.0", "@scandic-hotels/typescript-config": "workspace:*", "@t3-oss/env-nextjs": "^0.13.4", "@types/react": "19.2.7", - "@typescript-eslint/eslint-plugin": "^8.32.0", - "@typescript-eslint/parser": "^8.32.0", - "@vitest/coverage-v8": "^4.0.0", - "dotenv": "^16.5.0", "eslint": "^9", + "eslint-config-next": "16.0.7", "eslint-plugin-formatjs": "^5.3.1", "eslint-plugin-import": "^2.31.0", "eslint-plugin-simple-import-sort": "^12.1.1", diff --git a/packages/common/package.json b/packages/common/package.json index f81f9122f..d602a2bb5 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -74,23 +74,28 @@ "flat": "^6.0.1", "libphonenumber-js": "^1.12.7", "nanoid": "^5.1.5", + "server-only": "^0.0.1", + "usehooks-ts": "3.1.1", "zod": "^3.24.4", "zustand": "^4.5.2" }, "peerDependencies": { - "react": "^19" + "@vis.gl/react-google-maps": "^1", + "dayjs": "^1", + "next": "^16", + "react": "^19", + "react-intl": "^7" }, "devDependencies": { - "@eslint/compat": "^1.2.9", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.26.0", "@scandic-hotels/typescript-config": "workspace:*", "@typescript-eslint/eslint-plugin": "^8.32.0", "@typescript-eslint/parser": "^8.32.0", - "dotenv": "^16.5.0", "eslint": "^9", "eslint-plugin-import": "^2.31.0", "eslint-plugin-simple-import-sort": "^12.1.1", + "react-intl": "^7", "typescript": "5.8.3", "vitest": "^4.0.0" }, diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 37fb7dc41..1f5be3285 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -226,7 +226,8 @@ "dependencies": { "@material-symbols/svg-400": "0.40.2", "@scandic-hotels/common": "workspace:*", - "sonner": "^2.0.3" + "sonner": "^2.0.3", + "class-variance-authority": "^0.7.1" }, "peerDependencies": { "@babel/core": "^7.27.4", @@ -257,7 +258,6 @@ "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.1.0", "@testing-library/user-event": "^14.5.2", - "@types/css-modules": "^1.0.5", "@types/node": "^20.17.17", "@types/react": "19.2.7", "@types/react-dom": "19.2.3", @@ -267,7 +267,6 @@ "@vitest/browser": "^4.0.0", "@vitest/browser-playwright": "^4.0.0", "babel-plugin-formatjs": "^10.5.10", - "class-variance-authority": "^0.7.1", "colord": "^2.9.3", "copy-to-clipboard": "^3.3.3", "deepmerge-ts": "^7.1.5", @@ -280,9 +279,7 @@ "eslint-plugin-storybook": "^10.0.8", "glob": "^11.0.2", "globals": "^16.1.0", - "husky": "^9.1.7", "jiti": "^1.21.0", - "lint-staged": "^15.5.2", "motion": "^12.10.0", "playwright": "^1.54.2", "react": "^19.1.0", @@ -296,7 +293,6 @@ "vite-plugin-dts": "^4.5.4", "vite-plugin-lib-inject-css": "^2.2.2", "vitest": "^4.0.0", - "vitest-browser-react": "^1.0.1", "zod": "^3.24.1" } } diff --git a/packages/tracking/package.json b/packages/tracking/package.json index ab40b3d23..681dbfc1e 100644 --- a/packages/tracking/package.json +++ b/packages/tracking/package.json @@ -21,16 +21,18 @@ "@scandic-hotels/trpc": "workspace:*" }, "peerDependencies": { - "react": "^19" + "date-fns": "^4", + "next": "^16", + "next-auth": "5.0.0-beta.29", + "react": "^19", + "react-hook-form": "^7" }, "devDependencies": { - "@eslint/compat": "^1.2.9", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.26.0", "@scandic-hotels/typescript-config": "workspace:*", "@typescript-eslint/eslint-plugin": "^8.32.0", "@typescript-eslint/parser": "^8.32.0", - "dotenv": "^16.5.0", "eslint": "^9", "eslint-plugin-import": "^2.31.0", "eslint-plugin-simple-import-sort": "^12.1.1", diff --git a/packages/trpc/package.json b/packages/trpc/package.json index 3be1df627..3765ddeac 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -52,6 +52,7 @@ "@trpc/server": "^11.1.2", "dayjs": "^1.11.13", "deepmerge": "^4.3.1", + "flat": "^6.0.1", "fuse.js": "^7.1.0", "graphql": "^16.11.0", "graphql-request": "^7.1.2", @@ -72,7 +73,6 @@ "react": "^19" }, "devDependencies": { - "@eslint/compat": "^1.2.9", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.26.0", "@scandic-hotels/typescript-config": "workspace:*", @@ -80,10 +80,10 @@ "@typescript-eslint/eslint-plugin": "^8.32.0", "@typescript-eslint/parser": "^8.32.0", "@typescript/native-preview": "^7.0.0-dev.20251104.1", - "dotenv": "^16.5.0", "eslint": "^9", "eslint-plugin-import": "^2.31.0", "eslint-plugin-simple-import-sort": "^12.1.1", + "fast-glob": "^3.3.3", "typescript": "5.8.3", "vitest": "^4.0.0" } diff --git a/yarn.lock b/yarn.lock index 27eff744c..b9efb12e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -398,13 +398,6 @@ __metadata: languageName: node linkType: hard -"@bcoe/v8-coverage@npm:^1.0.2": - version: 1.0.2 - resolution: "@bcoe/v8-coverage@npm:1.0.2" - checksum: 10c0/1eb1dc93cc17fb7abdcef21a6e7b867d6aa99a7ec88ec8207402b23d9083ab22a8011213f04b2cf26d535f1d22dc26139b7929e6c2134c254bd1e14ba5e678c3 - languageName: node - linkType: hard - "@colors/colors@npm:1.6.0, @colors/colors@npm:^1.6.0": version: 1.6.0 resolution: "@colors/colors@npm:1.6.0" @@ -1145,20 +1138,6 @@ __metadata: languageName: node linkType: hard -"@eslint/compat@npm:^1.2.9": - version: 1.4.1 - resolution: "@eslint/compat@npm:1.4.1" - dependencies: - "@eslint/core": "npm:^0.17.0" - peerDependencies: - eslint: ^8.40 || 9 - peerDependenciesMeta: - eslint: - optional: true - checksum: 10c0/46f5ff884873c2e2366df55dd7b2d6b12f7f852bfba8e2a48dae4819cc5e58756deefa9b7f87f1b107af725ee883a05fcc02caf969b58fb142e790c6036a0450 - languageName: node - linkType: hard - "@eslint/config-array@npm:^0.21.1": version: 0.21.1 resolution: "@eslint/config-array@npm:0.21.1" @@ -1814,7 +1793,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28, @jridgewell/trace-mapping@npm:^0.3.31": +"@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.28": version: 0.3.31 resolution: "@jridgewell/trace-mapping@npm:0.3.31" dependencies: @@ -3704,20 +3683,6 @@ __metadata: languageName: node linkType: hard -"@react-aria/test-utils@npm:1.0.0-alpha.8": - version: 1.0.0-alpha.8 - resolution: "@react-aria/test-utils@npm:1.0.0-alpha.8" - dependencies: - "@swc/helpers": "npm:^0.5.0" - peerDependencies: - "@testing-library/react": ^16.0.0 - "@testing-library/user-event": ^14.0.0 - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10c0/708e2b6853ddfc0baf3dee1100fe0ae182b81e1e7e78267bcf589bede6ac25d8447bc620ea147a35e0d4de74ab262c76f823bae7300f430cd09aaf8fd83ed3a4 - languageName: node - linkType: hard - "@react-aria/textfield@npm:^3.17.2, @react-aria/textfield@npm:^3.18.2": version: 3.18.2 resolution: "@react-aria/textfield@npm:3.18.2" @@ -4986,9 +4951,6 @@ __metadata: version: 0.0.0-use.local resolution: "@scandic-hotels/booking-flow@workspace:packages/booking-flow" dependencies: - "@eslint/compat": "npm:^1.2.9" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:^9.26.0" "@hookform/resolvers": "npm:^5.0.1" "@scandic-hotels/common": "workspace:*" "@scandic-hotels/design-system": "workspace:*" @@ -4998,18 +4960,15 @@ __metadata: "@t3-oss/env-nextjs": "npm:^0.13.4" "@trpc/client": "npm:^11.1.2" "@types/react": "npm:19.2.7" - "@typescript-eslint/eslint-plugin": "npm:^8.32.0" - "@typescript-eslint/parser": "npm:^8.32.0" "@vis.gl/react-google-maps": "npm:^1.5.2" - "@vitest/coverage-v8": "npm:^4.0.0" class-variance-authority: "npm:^0.7.1" client-only: "npm:^0.0.1" date-fns: "npm:^4.1.0" dayjs: "npm:^1.11.13" deepmerge: "npm:^4.3.1" - dotenv: "npm:^16.5.0" downshift: "npm:^9.0.9" eslint: "npm:^9" + eslint-config-next: "npm:16.0.7" eslint-plugin-formatjs: "npm:^5.3.1" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" @@ -5018,14 +4977,12 @@ __metadata: immer: "npm:^10.1.3" json-stable-stringify-without-jsonify: "npm:^1.0.1" libphonenumber-js: "npm:^1.12.15" - motion: "npm:^12.10.0" nuqs: "npm:2.4.3" react-aria: "npm:^3.39.0" react-aria-components: "npm:1.8.0" react-day-picker: "npm:^9.6.7" react-hook-form: "npm:^7.56.2" react-intl: "npm:^7.1.11" - react-to-print: "npm:^3.1.0" server-only: "npm:^0.0.1" typescript: "npm:5.8.3" usehooks-ts: "npm:3.1.1" @@ -5043,7 +5000,6 @@ __metadata: version: 0.0.0-use.local resolution: "@scandic-hotels/common@workspace:packages/common" dependencies: - "@eslint/compat": "npm:^1.2.9" "@eslint/eslintrc": "npm:^3.3.1" "@eslint/js": "npm:^9.26.0" "@scandic-hotels/typescript-config": "workspace:*" @@ -5052,19 +5008,25 @@ __metadata: "@typescript-eslint/eslint-plugin": "npm:^8.32.0" "@typescript-eslint/parser": "npm:^8.32.0" deepmerge: "npm:^4.3.1" - dotenv: "npm:^16.5.0" eslint: "npm:^9" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" flat: "npm:^6.0.1" libphonenumber-js: "npm:^1.12.7" nanoid: "npm:^5.1.5" + react-intl: "npm:^7" + server-only: "npm:^0.0.1" typescript: "npm:5.8.3" + usehooks-ts: "npm:3.1.1" vitest: "npm:^4.0.0" zod: "npm:^3.24.4" zustand: "npm:^4.5.2" peerDependencies: + "@vis.gl/react-google-maps": ^1 + dayjs: ^1 + next: ^16 react: ^19 + react-intl: ^7 languageName: unknown linkType: soft @@ -5086,7 +5048,6 @@ __metadata: "@testing-library/dom": "npm:^10.4.0" "@testing-library/react": "npm:^16.1.0" "@testing-library/user-event": "npm:^14.5.2" - "@types/css-modules": "npm:^1.0.5" "@types/node": "npm:^20.17.17" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" @@ -5109,9 +5070,7 @@ __metadata: eslint-plugin-storybook: "npm:^10.0.8" glob: "npm:^11.0.2" globals: "npm:^16.1.0" - husky: "npm:^9.1.7" jiti: "npm:^1.21.0" - lint-staged: "npm:^15.5.2" motion: "npm:^12.10.0" playwright: "npm:^1.54.2" react: "npm:^19.1.0" @@ -5126,7 +5085,6 @@ __metadata: vite-plugin-dts: "npm:^4.5.4" vite-plugin-lib-inject-css: "npm:^2.2.2" vitest: "npm:^4.0.0" - vitest-browser-react: "npm:^1.0.1" zod: "npm:^3.24.1" peerDependencies: "@babel/core": ^7.27.4 @@ -5161,19 +5119,23 @@ __metadata: "@scandic-hotels/typescript-config": "workspace:*" "@sentry/nextjs": "npm:^10.33.0" "@swc/plugin-formatjs": "npm:^3.2.2" + "@t3-oss/env-nextjs": "npm:^0.13.4" "@tanstack/react-query": "npm:^5.75.5" "@tanstack/react-query-devtools": "npm:^5.75.5" + "@trpc/client": "npm:^11.1.2" + "@trpc/server": "npm:^11.1.2" "@types/node": "npm:^20" "@types/react": "npm:19.2.7" "@types/react-dom": "npm:19.2.3" "@typescript/native-preview": "npm:^7.0.0-dev.20251104.1" + "@vitejs/plugin-react": "npm:^5.1.1" babel-plugin-formatjs: "npm:^10.5.39" + class-variance-authority: "npm:^0.7.1" eslint: "npm:^9" eslint-config-next: "npm:16.0.7" eslint-plugin-formatjs: "npm:^5.3.1" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" - graphql-tag: "npm:^2.12.6" iron-session: "npm:^8.0.4" next: "npm:16.0.10" next-auth: "npm:5.0.0-beta.29" @@ -5184,7 +5146,9 @@ __metadata: server-only: "npm:^0.0.1" typescript: "npm:5.8.3" usehooks-ts: "npm:3.1.1" + vite-tsconfig-paths: "npm:^5.1.4" vitest: "npm:^4.0.0" + zod: "npm:^3.24.4" languageName: unknown linkType: soft @@ -5210,6 +5174,7 @@ __metadata: pino: "npm:9.6.0" pino-pretty: "npm:^13.0.0" typescript: "npm:^5.7.2" + zod: "npm:^3.24.4" languageName: unknown linkType: soft @@ -5229,19 +5194,15 @@ __metadata: resolution: "@scandic-hotels/scandic-web@workspace:apps/scandic-web" dependencies: "@contentstack/live-preview-utils": "npm:^3.2.1" - "@formatjs/cli": "npm:^6.7.1" "@formatjs/intl": "npm:^3.1.6" "@hookform/error-message": "npm:^2.0.1" "@hookform/resolvers": "npm:^5.0.1" "@internationalized/date": "npm:^3.8.0" - "@lokalise/node-api": "npm:^14.0.0" "@netlify/blobs": "npm:^8.1.0" "@netlify/functions": "npm:^3.0.0" "@netlify/plugin-nextjs": "npm:^5.15.1" "@playwright/test": "npm:^1.57.0" "@radix-ui/react-slot": "npm:^1.2.2" - "@react-aria/ssr": "npm:^3.9.8" - "@react-aria/test-utils": "npm:1.0.0-alpha.8" "@scandic-hotels/booking-flow": "workspace:*" "@scandic-hotels/common": "workspace:*" "@scandic-hotels/design-system": "workspace:*" @@ -5254,13 +5215,9 @@ __metadata: "@tanstack/react-query": "npm:^5.75.5" "@tanstack/react-query-devtools": "npm:^5.75.5" "@tanstack/react-table": "npm:^8.21.3" - "@testing-library/dom": "npm:^10.4.0" - "@testing-library/react": "npm:^16.3.0" - "@testing-library/user-event": "npm:^14.6.1" "@trpc/client": "npm:^11.1.2" "@trpc/server": "npm:^11.1.2" "@tsparticles/confetti": "npm:^3.8.1" - "@types/adm-zip": "npm:^0.5.7" "@types/geojson": "npm:^7946.0.16" "@types/json-stable-stringify-without-jsonify": "npm:^1.0.2" "@types/jsonwebtoken": "npm:^9" @@ -5271,7 +5228,6 @@ __metadata: "@typescript/native-preview": "npm:^7.0.0-dev.20251104.1" "@vis.gl/react-google-maps": "npm:^1.5.2" "@vitejs/plugin-react": "npm:^5.0.0" - adm-zip: "npm:^0.5.16" babel-plugin-formatjs: "npm:^10.5.39" class-variance-authority: "npm:^0.7.1" client-only: "npm:^0.0.1" @@ -5279,7 +5235,6 @@ __metadata: date-fns: "npm:^4.1.0" dayjs: "npm:^1.11.13" dialogshift-webchat-sdk: "npm:^2.10.1" - dotenv: "npm:^16.5.0" embla-carousel: "npm:^8.6.0" embla-carousel-react: "npm:^8.6.0" eslint: "npm:^9" @@ -5287,8 +5242,6 @@ __metadata: eslint-plugin-formatjs: "npm:^5.3.1" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" - flat: "npm:^6.0.1" - graphql-tag: "npm:^2.12.6" html-react-parser: "npm:^5.2.3" ics: "npm:^3.8.1" immer: "npm:10.1.1" @@ -5297,10 +5250,8 @@ __metadata: jsdom: "npm:^26.1.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" jsonwebtoken: "npm:^9.0.2" - lint-staged: "npm:^15.5.2" md5: "npm:^2.3.0" motion: "npm:^12.10.0" - nanoid: "npm:^5.1.5" next: "npm:16.0.10" next-auth: "npm:5.0.0-beta.29" react: "npm:19.2.1" @@ -5328,7 +5279,6 @@ __metadata: version: 0.0.0-use.local resolution: "@scandic-hotels/tracking@workspace:packages/tracking" dependencies: - "@eslint/compat": "npm:^1.2.9" "@eslint/eslintrc": "npm:^3.3.1" "@eslint/js": "npm:^9.26.0" "@scandic-hotels/common": "workspace:*" @@ -5336,14 +5286,17 @@ __metadata: "@scandic-hotels/typescript-config": "workspace:*" "@typescript-eslint/eslint-plugin": "npm:^8.32.0" "@typescript-eslint/parser": "npm:^8.32.0" - dotenv: "npm:^16.5.0" eslint: "npm:^9" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" typescript: "npm:5.8.3" vitest: "npm:^4.0.0" peerDependencies: + date-fns: ^4 + next: ^16 + next-auth: 5.0.0-beta.29 react: ^19 + react-hook-form: ^7 languageName: unknown linkType: soft @@ -5351,7 +5304,6 @@ __metadata: version: 0.0.0-use.local resolution: "@scandic-hotels/trpc@workspace:packages/trpc" dependencies: - "@eslint/compat": "npm:^1.2.9" "@eslint/eslintrc": "npm:^3.3.1" "@eslint/js": "npm:^9.26.0" "@scandic-hotels/common": "workspace:*" @@ -5366,10 +5318,11 @@ __metadata: "@typescript/native-preview": "npm:^7.0.0-dev.20251104.1" dayjs: "npm:^1.11.13" deepmerge: "npm:^4.3.1" - dotenv: "npm:^16.5.0" eslint: "npm:^9" eslint-plugin-import: "npm:^2.31.0" eslint-plugin-simple-import-sort: "npm:^12.1.1" + fast-glob: "npm:^3.3.3" + flat: "npm:^6.0.1" fuse.js: "npm:^7.1.0" graphql: "npm:^16.11.0" graphql-request: "npm:^7.1.2" @@ -6472,7 +6425,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:^16.1.0, @testing-library/react@npm:^16.3.0": +"@testing-library/react@npm:^16.1.0": version: 16.3.0 resolution: "@testing-library/react@npm:16.3.0" dependencies: @@ -6900,13 +6853,6 @@ __metadata: languageName: node linkType: hard -"@types/css-modules@npm:^1.0.5": - version: 1.0.5 - resolution: "@types/css-modules@npm:1.0.5" - checksum: 10c0/56ee69ec66b726765c6b4a57e0b58665341919267cbe380f9320379e84402a17afacc13228ea1271e1ce2f049465240d553d7bfa236b1f0b87c26c561f9eb875 - languageName: node - linkType: hard - "@types/deep-eql@npm:*": version: 4.0.2 resolution: "@types/deep-eql@npm:4.0.2" @@ -7737,31 +7683,6 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:^4.0.0": - version: 4.0.14 - resolution: "@vitest/coverage-v8@npm:4.0.14" - dependencies: - "@bcoe/v8-coverage": "npm:^1.0.2" - "@vitest/utils": "npm:4.0.14" - ast-v8-to-istanbul: "npm:^0.3.8" - istanbul-lib-coverage: "npm:^3.2.2" - istanbul-lib-report: "npm:^3.0.1" - istanbul-lib-source-maps: "npm:^5.0.6" - istanbul-reports: "npm:^3.2.0" - magicast: "npm:^0.5.1" - obug: "npm:^2.1.1" - std-env: "npm:^3.10.0" - tinyrainbow: "npm:^3.0.3" - peerDependencies: - "@vitest/browser": 4.0.14 - vitest: 4.0.14 - peerDependenciesMeta: - "@vitest/browser": - optional: true - checksum: 10c0/ae4f7c0b187167bb679c6eee9b6dc6d036e15b629506cb2a462675de7ebd7bcf43ed07c2ade9d9737c351cf9f8fcd614f42b028a26cd4e44fce56ec05a79d6ca - languageName: node - linkType: hard - "@vitest/expect@npm:3.2.4": version: 3.2.4 resolution: "@vitest/expect@npm:3.2.4" @@ -8489,17 +8410,6 @@ __metadata: languageName: node linkType: hard -"ast-v8-to-istanbul@npm:^0.3.8": - version: 0.3.8 - resolution: "ast-v8-to-istanbul@npm:0.3.8" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.31" - estree-walker: "npm:^3.0.3" - js-tokens: "npm:^9.0.1" - checksum: 10c0/6f7d74fc36011699af6d4ad88ecd8efc7d74bd90b8e8dbb1c69d43c8f4bec0ed361fb62a5b5bd98bbee02ee87c62cd8bcc25a39634964e45476bf5489dfa327f - languageName: node - linkType: hard - "async-function@npm:^1.0.0": version: 1.0.0 resolution: "async-function@npm:1.0.0" @@ -11682,13 +11592,6 @@ __metadata: languageName: node linkType: hard -"html-escaper@npm:^2.0.0": - version: 2.0.2 - resolution: "html-escaper@npm:2.0.2" - checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 - languageName: node - linkType: hard - "html-react-parser@npm:^5.2.3": version: 5.2.10 resolution: "html-react-parser@npm:5.2.10" @@ -12365,45 +12268,6 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": - version: 3.2.2 - resolution: "istanbul-lib-coverage@npm:3.2.2" - checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b - languageName: node - linkType: hard - -"istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": - version: 3.0.1 - resolution: "istanbul-lib-report@npm:3.0.1" - dependencies: - istanbul-lib-coverage: "npm:^3.0.0" - make-dir: "npm:^4.0.0" - supports-color: "npm:^7.1.0" - checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 - languageName: node - linkType: hard - -"istanbul-lib-source-maps@npm:^5.0.6": - version: 5.0.6 - resolution: "istanbul-lib-source-maps@npm:5.0.6" - dependencies: - "@jridgewell/trace-mapping": "npm:^0.3.23" - debug: "npm:^4.1.1" - istanbul-lib-coverage: "npm:^3.0.0" - checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f - languageName: node - linkType: hard - -"istanbul-reports@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-reports@npm:3.2.0" - dependencies: - html-escaper: "npm:^2.0.0" - istanbul-lib-report: "npm:^3.0.0" - checksum: 10c0/d596317cfd9c22e1394f22a8d8ba0303d2074fe2e971887b32d870e4b33f8464b10f8ccbe6847808f7db485f084eba09e6c2ed706b3a978e4b52f07085b8f9bc - languageName: node - linkType: hard - "iterator.prototype@npm:^1.1.4": version: 1.1.5 resolution: "iterator.prototype@npm:1.1.5" @@ -12486,13 +12350,6 @@ __metadata: languageName: node linkType: hard -"js-tokens@npm:^9.0.1": - version: 9.0.1 - resolution: "js-tokens@npm:9.0.1" - checksum: 10c0/68dcab8f233dde211a6b5fd98079783cbcd04b53617c1250e3553ee16ab3e6134f5e65478e41d82f6d351a052a63d71024553933808570f04dbf828d7921e80e - languageName: node - linkType: hard - "js-yaml@npm:^4.1.0, js-yaml@npm:^4.1.1": version: 4.1.1 resolution: "js-yaml@npm:4.1.1" @@ -12810,7 +12667,7 @@ __metadata: languageName: node linkType: hard -"lint-staged@npm:^15.2.2, lint-staged@npm:^15.5.2": +"lint-staged@npm:^15.2.2": version: 15.5.2 resolution: "lint-staged@npm:15.5.2" dependencies: @@ -13082,26 +12939,6 @@ __metadata: languageName: node linkType: hard -"magicast@npm:^0.5.1": - version: 0.5.1 - resolution: "magicast@npm:0.5.1" - dependencies: - "@babel/parser": "npm:^7.28.5" - "@babel/types": "npm:^7.28.5" - source-map-js: "npm:^1.2.1" - checksum: 10c0/a00bbf3688b9b3e83c10b3bfe3f106cc2ccbf20c4f2dc1c9020a10556dfe0a6a6605a445ee8e86a6e2b484ec519a657b5e405532684f72678c62e4c0d32f962c - languageName: node - linkType: hard - -"make-dir@npm:^4.0.0": - version: 4.0.0 - resolution: "make-dir@npm:4.0.0" - dependencies: - semver: "npm:^7.5.3" - checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 - languageName: node - linkType: hard - "make-fetch-happen@npm:^15.0.0": version: 15.0.3 resolution: "make-fetch-happen@npm:15.0.3" @@ -14962,7 +14799,7 @@ __metadata: languageName: node linkType: hard -"react-intl@npm:^7.1.11": +"react-intl@npm:^7, react-intl@npm:^7.1.11": version: 7.1.14 resolution: "react-intl@npm:7.1.14" dependencies: @@ -15055,15 +14892,6 @@ __metadata: languageName: node linkType: hard -"react-to-print@npm:^3.1.0": - version: 3.2.0 - resolution: "react-to-print@npm:3.2.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ~19 - checksum: 10c0/f40375ec592a873edc84293f9238eee2de50970aefc683803143d9eae5a69becd89ad9b0b02f144562cc2c702a5d1f6ef00b064372154c9d88445b11cb187e22 - languageName: node - linkType: hard - "react@npm:~19.2.0": version: 19.2.0 resolution: "react@npm:19.2.0" @@ -15593,13 +15421,15 @@ __metadata: version: 0.0.0-use.local resolution: "scandic@workspace:." dependencies: - "@eslint/compat": "npm:^1.2.9" "@formatjs/cli": "npm:^6.7.1" + "@lokalise/node-api": "npm:^14.0.0" + "@types/adm-zip": "npm:^0.5.7" "@types/react": "npm:19.2.7" - "@types/react-dom": "npm:19.2.3" "@typescript/native-preview": "npm:^7.0.0-dev.20251104.1" "@yarnpkg/types": "npm:^4.0.1" + adm-zip: "npm:^0.5.16" commander: "npm:^14.0.0" + dotenv: "npm:^16.5.0" husky: "npm:^9.1.7" jiti: "npm:^1.21.0" knip: "npm:^5.80.2" @@ -17374,25 +17204,6 @@ __metadata: languageName: node linkType: hard -"vitest-browser-react@npm:^1.0.1": - version: 1.0.1 - resolution: "vitest-browser-react@npm:1.0.1" - peerDependencies: - "@types/react": ^18.0.0 || ^19.0.0 - "@types/react-dom": ^18.0.0 || ^19.0.0 - "@vitest/browser": ^2.1.0 || ^3.0.0 || ^4.0.0-0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - vitest: ^2.1.0 || ^3.0.0 || ^4.0.0-0 - peerDependenciesMeta: - "@types/react": - optional: true - "@types/react-dom": - optional: true - checksum: 10c0/a83353743cb490df846cca81d6a7661568088e079c174e62aa561b34db032e7e042770cb7557d25ab2c66c959d303b7a4706ba49f2b715796823b663ef469e41 - languageName: node - linkType: hard - "vitest@npm:^4.0.0": version: 4.0.14 resolution: "vitest@npm:4.0.14"