From b19b7a4e6335d2c9d7d4d2633e6ed5a2f4431527 Mon Sep 17 00:00:00 2001 From: Michael Riehemann Date: Thu, 3 Apr 2025 17:41:11 +0200 Subject: [PATCH] Changes for Release 2412.0.0 --- CHANGELOG.md | 20 +- README.md | 2 +- apps/spark/{.eslintrc.js => .eslintrc.cjs} | 0 .../{download-crops.js => download-crops.cjs} | 0 .../bin/{set-version.js => set-version.cjs} | 0 apps/spark/package.json | 75 +- apps/spark/public/locales/de/translation.json | 6 + apps/spark/public/locales/en/translation.json | 6 + apps/spark/public/locales/fr/translation.json | 6 + apps/spark/public/locales/it/translation.json | 6 + apps/spark/src/components/App/GlobalStyle.tsx | 1 + apps/spark/src/components/App/PageContext.tsx | 17 +- .../src/components/Breadcrumb/Breadcrumb.tsx | 88 + .../components/Breadcrumb/assets/house.svg | 5 + apps/spark/src/components/Button/Button.tsx | 3 + apps/spark/src/components/CTA/CTA.tsx | 2 + apps/spark/src/components/Details/Detail.tsx | 4 + .../src/components/Details/DetailTOC.tsx | 75 + apps/spark/src/components/Link/Link.tsx | 13 + .../components/RichText/DynamicComponent.tsx | 12 +- .../components/RichText/RichTextHelper.tsx | 23 + .../components/ScrollTop/ScrollTopLink.tsx | 20 + apps/spark/src/context/BreadcrumbContext.tsx | 33 + apps/spark/src/models/Banner/Banner.ts | 1 + apps/spark/src/models/Banner/Target.ts | 1 + .../src/models/Navigation/NavigationPath.ts | 5 + apps/spark/src/pages/DetailPage.tsx | 16 +- apps/spark/src/pages/Page.tsx | 14 +- apps/spark/src/utils/Link/LinkUtils.ts | 7 + apps/spark/vite.config.ts | 2 + apps/standalone-fragment/package.json | 24 +- package.json | 6 +- packages/graphql-layer/package.json | 26 +- .../src/__downloaded__/schema.graphql | 11629 ++++++++-------- .../src/__downloaded__/schema.json | 1160 +- packages/graphql-layer/src/index.ts | 1 + .../src/queries/Detail.query.graphql | 1 + .../src/queries/PageByPath.query.graphql | 1 + .../PageByPathWithCampaigns.query.graphql | 1 + .../fragments/TeaserTarget.fragment.graphql | 1 + .../CMLinkableNavigationPath.fragment.graphql | 7 + packages/preview-integration/package.json | 14 +- packages/view-dispatcher/package.json | 10 +- pnpm-lock.yaml | 9433 +++++-------- servers/mocking/package.json | 18 +- servers/stitching/package.json | 12 +- 46 files changed, 10718 insertions(+), 12089 deletions(-) rename apps/spark/{.eslintrc.js => .eslintrc.cjs} (100%) rename apps/spark/bin/{download-crops.js => download-crops.cjs} (100%) rename apps/spark/bin/{set-version.js => set-version.cjs} (100%) create mode 100644 apps/spark/src/components/Breadcrumb/Breadcrumb.tsx create mode 100644 apps/spark/src/components/Breadcrumb/assets/house.svg create mode 100644 apps/spark/src/components/Details/DetailTOC.tsx create mode 100644 apps/spark/src/components/ScrollTop/ScrollTopLink.tsx create mode 100644 apps/spark/src/context/BreadcrumbContext.tsx create mode 100644 apps/spark/src/models/Navigation/NavigationPath.ts create mode 100644 packages/graphql-layer/src/queries/fragments/navigation/CMLinkableNavigationPath.fragment.graphql diff --git a/CHANGELOG.md b/CHANGELOG.md index 34f370ec..5d65a44a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## v2412.0.0 + +*Released 04.03.2025* + +### Breaking Changes: + +- Updated `schema.json` to CoreMedia Content Cloud v12 - 2604.0 + +### Features: + +- Added navigation breadcrumb +- Added anchor links und table of contents for detail pages (articles) + +### Bugfixes and Changes: + +- Updated minor versions of dependencies + +--- + ## v2406.0.1 *Released 13.08.2024* @@ -19,7 +38,6 @@ - Updated pnpm to version 9 - Updated `schema.json` to CoreMedia Content Cloud v12 - 2604.0 - ### Features: - Changed `.graphqlconfig` to new format `graphql.config.yml` diff --git a/README.md b/README.md index 317c7c86..17f80505 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![CoreMedia Labs Logo](https://documentation.coremedia.com/badges/banner_coremedia_labs_wide.png) -![CoreMedia Content Cloud Version](https://img.shields.io/static/v1?message=2406&label=CoreMedia%20Content%20Cloud&style=for-the-badge&labelColor=666666&color=672779 +![CoreMedia Content Cloud Version](https://img.shields.io/static/v1?message=2412&label=CoreMedia%20Content%20Cloud&style=for-the-badge&labelColor=666666&color=672779 "This badge shows the CoreMedia version this project is compatible with. Please read the versioning section of the project to see what other CoreMedia versions are supported and how to find them." ) diff --git a/apps/spark/.eslintrc.js b/apps/spark/.eslintrc.cjs similarity index 100% rename from apps/spark/.eslintrc.js rename to apps/spark/.eslintrc.cjs diff --git a/apps/spark/bin/download-crops.js b/apps/spark/bin/download-crops.cjs similarity index 100% rename from apps/spark/bin/download-crops.js rename to apps/spark/bin/download-crops.cjs diff --git a/apps/spark/bin/set-version.js b/apps/spark/bin/set-version.cjs similarity index 100% rename from apps/spark/bin/set-version.js rename to apps/spark/bin/set-version.cjs diff --git a/apps/spark/package.json b/apps/spark/package.json index 9abb39d3..d11eef54 100644 --- a/apps/spark/package.json +++ b/apps/spark/package.json @@ -3,33 +3,34 @@ "version": "1.0.0", "private": true, "license": "CoreMedia Open Source License", + "type": "module", "scripts": { "start": "vite", "serve": "vite preview", "build": "pnpm set-version && vite build", - "set-version": "node ./bin/set-version.js", + "set-version": "node bin/set-version.cjs", "test": "vitest run", "lint": "eslint --fix \"src/**/*.+(ts|tsx)\"", "lint:ci": "eslint \"src/**/*.+(ts|tsx)\"", "docs": "typedoc src", - "download:crops": "node ./bin/download-crops.js", + "download:crops": "node bin/download-crops.cjs", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build -o dist/storybook" }, "dependencies": { - "@apollo/client": "^3.11.4", + "@apollo/client": "^3.11.10", "@coremedia-labs/graphql-layer": "workspace:^", "@coremedia-labs/preview-integration": "workspace:^", "@coremedia-labs/view-dispatcher": "workspace:^", "@js-joda/core": "^5.6.3", "@js-joda/timezone": "^2.21.1", - "country-flag-icons": "^1.5.12", + "country-flag-icons": "^1.5.13", "crypto-hash": "^2.0.1", - "graphql": "^16.8.2", - "i18next": "^23.11.5", + "graphql": "^16.9.0", + "i18next": "^23.16.8", "i18next-browser-languagedetector": "^7.2.1", - "i18next-http-backend": "^2.5.2", - "loglevel": "^1.9.1", + "i18next-http-backend": "^2.7.1", + "loglevel": "^1.9.2", "query-string": "^7.1.3", "react": "^17.0.2", "react-dom": "^17.0.2", @@ -39,47 +40,49 @@ "react-player": "^2.16.0", "react-responsive": "^9.0.2", "react-router-dom": "^5.3.4", + "react-router-hash-link": "^2.4.3", "react-slick": "^0.30.2", "require-from-string": "^2.0.2", "slick-carousel": "^1.8.1", "styled-components": "^5.3.11" }, "devDependencies": { - "@chromatic-com/storybook": "^1.5.0", - "@storybook/addon-actions": "^8.1.10", - "@storybook/addon-backgrounds": "^8.1.10", - "@storybook/addon-docs": "^8.1.10", - "@storybook/addon-essentials": "^8.1.10", - "@storybook/addon-links": "^8.1.10", - "@storybook/addon-measure": "^8.1.10", - "@storybook/addon-outline": "^8.1.10", - "@storybook/client-logger": "^8.1.10", - "@storybook/node-logger": "^8.1.10", - "@storybook/react": "^8.1.10", - "@storybook/react-vite": "^8.1.10", - "@types/node": "^20.14.5", - "@types/react": "^17.0.80", + "@chromatic-com/storybook": "^3.2.2", + "@storybook/addon-actions": "^8.4.5", + "@storybook/addon-backgrounds": "^8.4.5", + "@storybook/addon-docs": "^8.4.5", + "@storybook/addon-essentials": "^8.4.5", + "@storybook/addon-links": "^8.4.5", + "@storybook/addon-measure": "^8.4.5", + "@storybook/addon-outline": "^8.4.5", + "@storybook/client-logger": "^8.4.5", + "@storybook/node-logger": "^8.4.5", + "@storybook/react": "^8.4.5", + "@storybook/react-vite": "^8.4.5", + "@types/node": "^20.17.6", + "@types/react": "^17.0.83", "@types/react-dom": "^17.0.25", "@types/react-router-dom": "^5.3.3", + "@types/react-router-hash-link": "^2.4.9", "@types/react-slick": "^0.23.13", "@types/styled-components": "^5.1.34", - "@typescript-eslint/eslint-plugin": "^7.13.1", - "@typescript-eslint/parser": "^7.13.1", - "@vitejs/plugin-react-swc": "^3.7.0", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", + "@vitejs/plugin-react-swc": "^3.7.1", "dotenv": "^16.4.5", - "eslint": "^8.57.0", + "eslint": "^8.57.1", "eslint-config-prettier": "^9.1.0", - "eslint-import-resolver-typescript": "^3.6.1", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-react": "^7.34.3", - "eslint-plugin-storybook": "^0.8.0", - "prettier": "^3.3.2", - "storybook": "^8.1.10", - "typedoc": "^0.25.13", + "eslint-import-resolver-typescript": "^3.6.3", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-storybook": "^0.11.1", + "prettier": "^3.3.3", + "storybook": "^8.4.5", + "typedoc": "^0.26.11", "typescript": "~5.2.2", - "vite": "^4.5.3", - "vitest": "^0.34.6" + "vite": "^5.4.17", + "vitest": "^2.1.9" }, "browserslist": { "production": [ diff --git a/apps/spark/public/locales/de/translation.json b/apps/spark/public/locales/de/translation.json index 7f02d5a2..782d8483 100644 --- a/apps/spark/public/locales/de/translation.json +++ b/apps/spark/public/locales/de/translation.json @@ -96,6 +96,12 @@ "relatedProducts": "Produkte", "related": "Ähnliche Inhalte" }, + "DetailTOC": { + "title": "Auf dieser Seite" + }, + "ScrollTopLink": { + "text": "Nach oben scrollen" + }, "CheckoutPage": { "successTitle": "Checkout abgeschlossen", "successMessage": "

Danke für Ihre Bestellung.

Unser Team ist gerade dabei, Ihre Bestellung zu verpacken und zu versenden.

Wir werden Sie informieren, sobald die Ware auf dem Weg zu Ihnen ist.

", diff --git a/apps/spark/public/locales/en/translation.json b/apps/spark/public/locales/en/translation.json index 26ad0cbb..aa4af31c 100644 --- a/apps/spark/public/locales/en/translation.json +++ b/apps/spark/public/locales/en/translation.json @@ -96,6 +96,12 @@ "relatedProducts": "Products", "related": "Related" }, + "DetailTOC": { + "title": "On this page" + }, + "ScrollTopLink": { + "text": "Scroll to top" + }, "CheckoutPage": { "successTitle": "Checkout Completed", "successMessage": "

Thank you for your order.

Our team is currently packing and shipping your order.
We will inform you as soon as the goods are on their way to you.

", diff --git a/apps/spark/public/locales/fr/translation.json b/apps/spark/public/locales/fr/translation.json index 20af8219..e9020378 100644 --- a/apps/spark/public/locales/fr/translation.json +++ b/apps/spark/public/locales/fr/translation.json @@ -96,6 +96,12 @@ "relatedProducts": "Produits", "related": "Contenu connexe" }, + "DetailTOC": { + "title": "Sur cette page" + }, + "ScrollTopLink": { + "text": "Haut de page" + }, "CheckoutPage": { "successTitle": "Checkout terminé", "successMessage": "

Merci pour votre commande.

Notre équipe est actuellement en train d'emballer et d'expédier votre commande.
Nous vous informerons dès que les marchandises seront en route vers vous.

", diff --git a/apps/spark/public/locales/it/translation.json b/apps/spark/public/locales/it/translation.json index 442bcb35..08c0614f 100644 --- a/apps/spark/public/locales/it/translation.json +++ b/apps/spark/public/locales/it/translation.json @@ -96,6 +96,12 @@ "relatedProducts": "Prodotti", "related": "Contenuto relativo" }, + "DetailTOC": { + "title": "Su questa pagina" + }, + "ScrollTopLink": { + "text": "Scorri in alto" + }, "CheckoutPage": { "successTitle": "Checkout completato", "successMessage": "

Grazie per il suo ordine.

Il nostro team sta attualmente imballando e spedendo il suo ordine.
La informeremo non appena la merce sarà in viaggio verso di lei.

", diff --git a/apps/spark/src/components/App/GlobalStyle.tsx b/apps/spark/src/components/App/GlobalStyle.tsx index 052c0a3b..beed4008 100644 --- a/apps/spark/src/components/App/GlobalStyle.tsx +++ b/apps/spark/src/components/App/GlobalStyle.tsx @@ -29,6 +29,7 @@ export const GlobalStyle = createGlobalStyle` --color-turquoise: #6fc3b8; --color-green: #2fac66; --color-yellow: #efdf0f; + --color-grey: #919191; --color-light-grey: #f4f4f4; --color-black: #000; --color-white: #fff; diff --git a/apps/spark/src/components/App/PageContext.tsx b/apps/spark/src/components/App/PageContext.tsx index 1458a783..7f958385 100644 --- a/apps/spark/src/components/App/PageContext.tsx +++ b/apps/spark/src/components/App/PageContext.tsx @@ -4,15 +4,20 @@ import FooterNavigation from "../Footer/FooterNavigation"; import Footer from "../Footer/Footer"; import { metaDataForResponsiveDevices } from "../../utils/Preview/MetaData"; import { StyledGrid } from "../PageGrid/PageGrid"; +import { BreadcrumbContextProvider } from "../../context/BreadcrumbContext"; +import Breadcrumb from "../Breadcrumb/Breadcrumb"; const PageContext: FC = ({ children }) => { return ( - -
- {children} - -