From 63671cb23494d8bd3e6a4be317cce764d64d313c Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Mon, 7 Jul 2025 12:13:42 +0200 Subject: [PATCH 1/7] chore: update zebra --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 4ac369c..7d3fca6 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@babel/preset-react": "^7.24.7", "@babel/preset-typescript": "^7.24.7", "@babel/runtime": "^7.24.7", - "@networkteam/zebra": "^1.0.0", + "@networkteam/zebra": "^2.0.0", "@types/node": "^20.14.9", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", diff --git a/yarn.lock b/yarn.lock index 55c47d7..423100c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1182,10 +1182,10 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@networkteam/zebra@^1.0.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@networkteam/zebra/-/zebra-1.2.0.tgz#4c3ae96fd016d426a5c10de352b55d5807352d60" - integrity sha512-zPMgiE8jINiU6EkNZeYZgFUfQ6SGBHBBti/6rMHMFtpvcEX6eU9/wK0DHft6h4CUD0tbQKqXZ7wXE/Of9dt4iw== +"@networkteam/zebra@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@networkteam/zebra/-/zebra-2.0.0.tgz#f959b5eb5a22661e3927aeb4edd168beb097984d" + integrity sha512-zXblUacVsTWLYBvv/Fois1LR8fzwRVz4b0diT62g0U5GuGUVOdqToTU0VaewUn1kRj0+qivFGOiLYYz1Rm5etw== dependencies: "@babel/runtime" "^7.20.13" "@supercharge/promise-pool" "^2.3.2" From 09c2d2e8a6b2f674f9207a3fc35300c886879eb5 Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Mon, 7 Jul 2025 12:48:43 +0200 Subject: [PATCH 2/7] chore: update next and react --- package.json | 10 ++-- yarn.lock | 134 +++++++++++++++++++++++++-------------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index 7d3fca6..96cf4ea 100644 --- a/package.json +++ b/package.json @@ -42,18 +42,18 @@ "@babel/runtime": "^7.24.7", "@networkteam/zebra": "^2.0.0", "@types/node": "^20.14.9", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", "@typescript-eslint/eslint-plugin": "^7.14.1", "@typescript-eslint/parser": "^7.14.1", "eslint": "^9.5.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "eslint-plugin-simple-import-sort": "^12.1.0", - "next": "^15.3.0", + "next": "^15.3.5", "prettier": "^3.3.2", - "react": "^19.0.0", - "react-dom": "^19.0.0", + "react": "^19.1.0", + "react-dom": "^19.1.0", "tailwindcss": "^3.4.4", "typescript": "^5.5.2" }, diff --git a/yarn.lock b/yarn.lock index 423100c..df18f98 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1192,50 +1192,50 @@ loglevel "^1.8.0" qs "^6.12.1" -"@next/env@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-15.3.0.tgz#ea3a2a02e8023097efa23ec573540f522815e9d4" - integrity sha512-6mDmHX24nWlHOlbwUiAOmMyY7KELimmi+ed8qWcJYjqXeC+G6JzPZ3QosOAfjNwgMIzwhXBiRiCgdh8axTTdTA== - -"@next/swc-darwin-arm64@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.0.tgz#804660ea060920ed9835d079a0af64552771ccf4" - integrity sha512-PDQcByT0ZfF2q7QR9d+PNj3wlNN4K6Q8JoHMwFyk252gWo4gKt7BF8Y2+KBgDjTFBETXZ/TkBEUY7NIIY7A/Kw== - -"@next/swc-darwin-x64@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.0.tgz#0e352c9aee544b18d3e4c138487ecc6aa71469b4" - integrity sha512-m+eO21yg80En8HJ5c49AOQpFDq+nP51nu88ZOMCorvw3g//8g1JSUsEiPSiFpJo1KCTQ+jm9H0hwXK49H/RmXg== - -"@next/swc-linux-arm64-gnu@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.0.tgz#2dbdc7e7234bb56031ede78ad48275f66a09cdce" - integrity sha512-H0Kk04ZNzb6Aq/G6e0un4B3HekPnyy6D+eUBYPJv9Abx8KDYgNMWzKt4Qhj57HXV3sTTjsfc1Trc1SxuhQB+Tg== - -"@next/swc-linux-arm64-musl@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.0.tgz#410143ca5650e366da5483bd5078ba9dfdd96185" - integrity sha512-k8GVkdMrh/+J9uIv/GpnHakzgDQhrprJ/FbGQvwWmstaeFG06nnAoZCJV+wO/bb603iKV1BXt4gHG+s2buJqZA== - -"@next/swc-linux-x64-gnu@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.0.tgz#1db7dc39e528a2de8ba11156585dfc74b4d6e2aa" - integrity sha512-ZMQ9yzDEts/vkpFLRAqfYO1wSpIJGlQNK9gZ09PgyjBJUmg8F/bb8fw2EXKgEaHbCc4gmqMpDfh+T07qUphp9A== - -"@next/swc-linux-x64-musl@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.0.tgz#3f7f0fb55a16d7b87801451555cb929117b8ff88" - integrity sha512-RFwq5VKYTw9TMr4T3e5HRP6T4RiAzfDJ6XsxH8j/ZeYq2aLsBqCkFzwMI0FmnSsLaUbOb46Uov0VvN3UciHX5A== - -"@next/swc-win32-arm64-msvc@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.0.tgz#1eb4ba20beae55d41e02e1780bc45ceabd45550f" - integrity sha512-a7kUbqa/k09xPjfCl0RSVAvEjAkYBYxUzSVAzk2ptXiNEL+4bDBo9wNC43G/osLA/EOGzG4CuNRFnQyIHfkRgQ== - -"@next/swc-win32-x64-msvc@15.3.0": - version "15.3.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.0.tgz#68740dee9831fcd738ab2056438bd3de75712f65" - integrity sha512-vHUQS4YVGJPmpjn7r5lEZuMhK5UQBNBRSB+iGDvJjaNk649pTIcRluDWNb9siunyLLiu/LDPHfvxBtNamyuLTw== +"@next/env@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/env/-/env-15.3.5.tgz#1dd661b96c4730e999bb9f48a9b212dae6e290d5" + integrity sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g== + +"@next/swc-darwin-arm64@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.5.tgz#75606cb72e1659a23f15195dba760dc01b186c5d" + integrity sha512-lM/8tilIsqBq+2nq9kbTW19vfwFve0NR7MxfkuSUbRSgXlMQoJYg+31+++XwKVSXk4uT23G2eF/7BRIKdn8t8w== + +"@next/swc-darwin-x64@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.5.tgz#78ffad7ef26685e5b8150891b467a4ecef94e179" + integrity sha512-WhwegPQJ5IfoUNZUVsI9TRAlKpjGVK0tpJTL6KeiC4cux9774NYE9Wu/iCfIkL/5J8rPAkqZpG7n+EfiAfidXA== + +"@next/swc-linux-arm64-gnu@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.5.tgz#d9a405ceec729d62033dbdc48f8c331c544f09fd" + integrity sha512-LVD6uMOZ7XePg3KWYdGuzuvVboxujGjbcuP2jsPAN3MnLdLoZUXKRc6ixxfs03RH7qBdEHCZjyLP/jBdCJVRJQ== + +"@next/swc-linux-arm64-musl@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.5.tgz#65f19ad3ecd2881381ec2a149afba261ba180dde" + integrity sha512-k8aVScYZ++BnS2P69ClK7v4nOu702jcF9AIHKu6llhHEtBSmM2zkPGl9yoqbSU/657IIIb0QHpdxEr0iW9z53A== + +"@next/swc-linux-x64-gnu@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.5.tgz#cd7f7e002212360b99f7e791a2d2fedb352f2374" + integrity sha512-2xYU0DI9DGN/bAHzVwADid22ba5d/xrbrQlr2U+/Q5WkFUzeL0TDR963BdrtLS/4bMmKZGptLeg6282H/S2i8A== + +"@next/swc-linux-x64-musl@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.5.tgz#302c9e4ace935c963d45fce9584754a19295c452" + integrity sha512-TRYIqAGf1KCbuAB0gjhdn5Ytd8fV+wJSM2Nh2is/xEqR8PZHxfQuaiNhoF50XfY90sNpaRMaGhF6E+qjV1b9Tg== + +"@next/swc-win32-arm64-msvc@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.5.tgz#5bbe1434afa2360634d45fc7860a038d11e4e296" + integrity sha512-h04/7iMEUSMY6fDGCvdanKqlO1qYvzNxntZlCzfE8i5P0uqzVQWQquU1TIhlz0VqGQGXLrFDuTJVONpqGqjGKQ== + +"@next/swc-win32-x64-msvc@15.3.5": + version "15.3.5" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.5.tgz#9629b2eac3159c70f3449cecc2a29bfd4bcb2d5a" + integrity sha512-5fhH6fccXxnX2KhllnGhkYMndhOiLOLEiVGYjP2nizqeGWkN10sA9taATlXwake2E2XMvYZjjz0Uj7T0y+z1yw== "@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": version "2.1.8-no-fsevents.3" @@ -1307,15 +1307,15 @@ dependencies: undici-types "~6.19.2" -"@types/react-dom@^19.0.0": - version "19.1.2" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.2.tgz#bd1fe3b8c28a3a2e942f85314dcfb71f531a242f" - integrity sha512-XGJkWF41Qq305SKWEILa1O8vzhb3aOo3ogBlSmiqNko/WmRb6QIaweuZCXjKygVDXpzXb5wyxKTSOsmkuqj+Qw== +"@types/react-dom@19.1.6": + version "19.1.6" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-19.1.6.tgz#4af629da0e9f9c0f506fc4d1caa610399c595d64" + integrity sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw== -"@types/react@^19.0.0": - version "19.1.1" - resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.1.tgz#f7f2bb4a0a8d22b9ee4b8f6e27f0c78d76eb7f9b" - integrity sha512-ePapxDL7qrgqSF67s0h9m412d9DbXyC1n59O2st+9rjuuamWsZuD2w55rqY12CbzsZ7uVXb5Nw0gEp9Z8MMutQ== +"@types/react@19.1.8": + version "19.1.8" + resolved "https://registry.yarnpkg.com/@types/react/-/react-19.1.8.tgz#ff8395f2afb764597265ced15f8dddb0720ae1c3" + integrity sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g== dependencies: csstype "^3.0.2" @@ -2359,12 +2359,12 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== -next@^15.3.0: - version "15.3.0" - resolved "https://registry.yarnpkg.com/next/-/next-15.3.0.tgz#f8aa64ab584664db75648bd87d5d68c02eb2d56f" - integrity sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ== +next@15.3.5: + version "15.3.5" + resolved "https://registry.yarnpkg.com/next/-/next-15.3.5.tgz#9e892c1ed87954229d53194452b9d39429af8bf5" + integrity sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw== dependencies: - "@next/env" "15.3.0" + "@next/env" "15.3.5" "@swc/counter" "0.1.3" "@swc/helpers" "0.5.15" busboy "1.6.0" @@ -2372,14 +2372,14 @@ next@^15.3.0: postcss "8.4.31" styled-jsx "5.1.6" optionalDependencies: - "@next/swc-darwin-arm64" "15.3.0" - "@next/swc-darwin-x64" "15.3.0" - "@next/swc-linux-arm64-gnu" "15.3.0" - "@next/swc-linux-arm64-musl" "15.3.0" - "@next/swc-linux-x64-gnu" "15.3.0" - "@next/swc-linux-x64-musl" "15.3.0" - "@next/swc-win32-arm64-msvc" "15.3.0" - "@next/swc-win32-x64-msvc" "15.3.0" + "@next/swc-darwin-arm64" "15.3.5" + "@next/swc-darwin-x64" "15.3.5" + "@next/swc-linux-arm64-gnu" "15.3.5" + "@next/swc-linux-arm64-musl" "15.3.5" + "@next/swc-linux-x64-gnu" "15.3.5" + "@next/swc-linux-x64-musl" "15.3.5" + "@next/swc-win32-arm64-msvc" "15.3.5" + "@next/swc-win32-x64-msvc" "15.3.5" sharp "^0.34.1" node-releases@^2.0.19: @@ -2606,14 +2606,14 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -react-dom@^19.0.0: +react-dom@19.1.0: version "19.1.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.0.tgz#133558deca37fa1d682708df8904b25186793623" integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g== dependencies: scheduler "^0.26.0" -react@^19.0.0: +react@19.1.0: version "19.1.0" resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75" integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg== From e359e07b5a9268fe006c26a076966201d5b1ccf3 Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Mon, 7 Jul 2025 12:49:09 +0200 Subject: [PATCH 3/7] fix: adapt localization to async req-api --- src/zebra/internationalization.tsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/zebra/internationalization.tsx b/src/zebra/internationalization.tsx index 1d7106a..f15d37b 100644 --- a/src/zebra/internationalization.tsx +++ b/src/zebra/internationalization.tsx @@ -1,18 +1,19 @@ -import { NextPage, Metadata } from 'next'; +import { Metadata, NextPage } from 'next'; type Props = { - params: { + params: Promise<{ slug: string[]; - }; + }>; }; export const localizedPage =

(Component: NextPage

, locale: string = 'en'): NextPage

=> { - const WrappedComponent: NextPage

= (props: P) => { + const WrappedComponent: NextPage

= async (props: P) => { + const { slug } = await props?.params; const modifiedProps: P = { ...props, params: { ...props.params, - slug: props?.params?.slug ? [locale, ...props?.params?.slug] : [locale], + slug: slug ? [locale, ...slug] : [locale], }, }; @@ -31,13 +32,14 @@ export const localizedMetadata = ( return async ({ params, }: { - params: { + params: Promise<{ slug: string[]; - }; + }>; }): Promise => { + const { slug } = await params; const modifiedParams = { ...params, - slug: params?.slug ? [locale, ...params.slug] : [locale], + slug: slug ? [locale, ...slug] : [locale], }; return generateMetadata({ params: modifiedParams }); From a4724bf08baf823ba405fedf1079e60b41a07471 Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Mon, 7 Jul 2025 15:29:44 +0200 Subject: [PATCH 4/7] fix: async localized wrapper --- src/zebra/internationalization.tsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/zebra/internationalization.tsx b/src/zebra/internationalization.tsx index f15d37b..ed4c2eb 100644 --- a/src/zebra/internationalization.tsx +++ b/src/zebra/internationalization.tsx @@ -6,7 +6,10 @@ type Props = { }>; }; -export const localizedPage =

(Component: NextPage

, locale: string = 'en'): NextPage

=> { +export const localizedPage = async

( + AsyncComponent: Promise>, + locale: string = 'en' +): Promise> => { const WrappedComponent: NextPage

= async (props: P) => { const { slug } = await props?.params; const modifiedProps: P = { @@ -17,9 +20,11 @@ export const localizedPage =

(Component: NextPage

, locale: s }, }; + const Component = await AsyncComponent; return ; }; + const Component = await AsyncComponent; WrappedComponent.displayName = `localizedPage(${Component.displayName || Component.name || 'Component'})`; return WrappedComponent; From d6197846a894d391c1d9b22a1145430fe72ebf34 Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Fri, 8 Aug 2025 12:00:40 +0200 Subject: [PATCH 5/7] fix: remove internationalization from package and README --- README.md | 66 ------------------------------ src/zebra/internationalization.tsx | 52 ----------------------- 2 files changed, 118 deletions(-) delete mode 100644 src/zebra/internationalization.tsx diff --git a/README.md b/README.md index a6aad78..56e044d 100644 --- a/README.md +++ b/README.md @@ -39,72 +39,6 @@ import { revalidate } from '@networkteam/zebra-utils'; export const POST = revalidate; ``` -### Internationalization - -For multilanguage projects, it is necessary to create subfolders for each locale, e.g., `/en`, `/fr`. To avoid duplicated code, you can use these helpers to utilize the functions exported by page, layout and not-found inside the root-`[[...slug]]` directory, but with the locale prepended to the passed slug. By default, the prepended locale is `en`, but it can be overwritten, as shown in the example of the not-found page. - -#### Example Usage - -page file - -```ts -// app/en/[[...slug]]/page.tsx - -import { localizedMetadata, localizedPage } from '@networkteam/zebra-utils'; -import Page, { generateMetadata as originalGenerateMetadata } from 'app/[[...slug]]/page'; - -export const generateMetadata = localizedMetadata(originalGenerateMetadata); -export default localizedPage(Page); -``` - -layout file - -```ts -// app/en/[[...slug]]/layout.tsx - -import { localizedPage } from '@networkteam/zebra-utils'; -import RootLayout from 'app/[[...slug]]/layout'; - -export default localizedPage(RootLayout); -``` - -not-found file (with passed locale) - -```ts -// app/fr/[[...slug]]/layout.tsx - -import { localizedPage } from '@networkteam/zebra-utils'; -import NotFound from 'app/[[...slug]]/not-found'; - -// Pass the locale to localizedPage/localizedMetadata if other than 'en' -export default localizedPage(NotFound, 'fr'); -``` - -#### Folder Structure - -For the above approach to work, the folder structure needs to look like this. Note: there must be **no** other layout or not-found file in the root of the app directory: - -``` -app -│ -└── [[...slug]] -│ ├── layout.tsx -│ ├── not-found.tsx -│ └── page.tsx -│ -└── en -│ └── [[...slug]] -│ ├── layout.tsx -│ ├── not-found.tsx -│ └── page.tsx -│ -└── fr - └── [[...slug]] - ├── layout.tsx - ├── not-found.tsx - └── page.tsx -``` - ## ImgProxy The next config provides a way to use a custom image loader for all (next)-images. It's possible to define custom imageSizes and deviceSizes as well, which are used to create the srcset of the responsive image. The image loader middleware restricts images with dimensions outside of these widths. It uses the default image sizes concatenated with the default device sizes used by Next.js. diff --git a/src/zebra/internationalization.tsx b/src/zebra/internationalization.tsx deleted file mode 100644 index ed4c2eb..0000000 --- a/src/zebra/internationalization.tsx +++ /dev/null @@ -1,52 +0,0 @@ -import { Metadata, NextPage } from 'next'; - -type Props = { - params: Promise<{ - slug: string[]; - }>; -}; - -export const localizedPage = async

( - AsyncComponent: Promise>, - locale: string = 'en' -): Promise> => { - const WrappedComponent: NextPage

= async (props: P) => { - const { slug } = await props?.params; - const modifiedProps: P = { - ...props, - params: { - ...props.params, - slug: slug ? [locale, ...slug] : [locale], - }, - }; - - const Component = await AsyncComponent; - return ; - }; - - const Component = await AsyncComponent; - WrappedComponent.displayName = `localizedPage(${Component.displayName || Component.name || 'Component'})`; - - return WrappedComponent; -}; - -export const localizedMetadata = ( - generateMetadata: ({ params }: Props) => Promise, - locale: string = 'en' -) => { - return async ({ - params, - }: { - params: Promise<{ - slug: string[]; - }>; - }): Promise => { - const { slug } = await params; - const modifiedParams = { - ...params, - slug: slug ? [locale, ...slug] : [locale], - }; - - return generateMetadata({ params: modifiedParams }); - }; -}; From 8ab0ceb579ccfbe62b8d3ae38b367d3fc0e5224b Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Fri, 8 Aug 2025 12:04:01 +0200 Subject: [PATCH 6/7] fix: align peerDependencies with devDependencies --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 96cf4ea..d1b1b87 100644 --- a/package.json +++ b/package.json @@ -58,9 +58,9 @@ "typescript": "^5.5.2" }, "peerDependencies": { - "next": "^15.2.3", - "react": "^19.0.0", - "react-dom": "^19.0.0" + "next": "^15.3.5", + "react": "^19.1.0", + "react-dom": "^19.1.0" }, "files": [ "src", From 89de6ea7fc28898c9e9877d7986b987853751dc5 Mon Sep 17 00:00:00 2001 From: Jonathan Philipp Date: Fri, 8 Aug 2025 12:17:18 +0200 Subject: [PATCH 7/7] feat: bump version to 0.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d1b1b87..87f2e7d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@networkteam/zebra-utils", - "version": "0.5.0", + "version": "0.6.0", "author": "networkteam GmbH", "license": "MIT", "publishConfig": {