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/package.json b/package.json
index 4ac369c..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": {
@@ -40,27 +40,27 @@
"@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",
+ "@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"
},
"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",
diff --git a/src/zebra/internationalization.tsx b/src/zebra/internationalization.tsx
deleted file mode 100644
index 1d7106a..0000000
--- a/src/zebra/internationalization.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-import { NextPage, Metadata } from 'next';
-
-type Props = {
- params: {
- slug: string[];
- };
-};
-
-export const localizedPage =
(Component: NextPage
, locale: string = 'en'): NextPage
=> {
- const WrappedComponent: NextPage
= (props: P) => {
- const modifiedProps: P = {
- ...props,
- params: {
- ...props.params,
- slug: props?.params?.slug ? [locale, ...props?.params?.slug] : [locale],
- },
- };
-
- return ;
- };
-
- WrappedComponent.displayName = `localizedPage(${Component.displayName || Component.name || 'Component'})`;
-
- return WrappedComponent;
-};
-
-export const localizedMetadata = (
- generateMetadata: ({ params }: Props) => Promise,
- locale: string = 'en'
-) => {
- return async ({
- params,
- }: {
- params: {
- slug: string[];
- };
- }): Promise => {
- const modifiedParams = {
- ...params,
- slug: params?.slug ? [locale, ...params.slug] : [locale],
- };
-
- return generateMetadata({ params: modifiedParams });
- };
-};
diff --git a/yarn.lock b/yarn.lock
index 55c47d7..df18f98 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1182,60 +1182,60 @@
"@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"
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==