From b36b5c1eb1c1981bc523af620532187942882162 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Fri, 24 Jan 2025 19:15:40 +0000 Subject: [PATCH 01/25] chore(deps): update dependency eslint to ^9.19.0 (#2104) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- apps/tasks/package.json | 2 +- apps/websocket/package.json | 2 +- packages/analytics/package.json | 2 +- packages/api/package.json | 2 +- packages/auth/package.json | 2 +- packages/certificates/package.json | 2 +- packages/cli/package.json | 2 +- packages/common/package.json | 2 +- packages/cron-job-runner/package.json | 2 +- packages/cron-job-status/package.json | 2 +- packages/cron-jobs-core/package.json | 2 +- packages/cron-jobs/package.json | 2 +- packages/db/package.json | 2 +- packages/definitions/package.json | 2 +- packages/docker/package.json | 2 +- packages/form/package.json | 2 +- packages/icons/package.json | 2 +- packages/integrations/package.json | 2 +- packages/log/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 2 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 2 +- packages/old-schema/package.json | 2 +- packages/ping/package.json | 2 +- packages/redis/package.json | 2 +- packages/request-handler/package.json | 2 +- packages/server-settings/package.json | 2 +- packages/spotlight/package.json | 2 +- packages/translation/package.json | 2 +- packages/ui/package.json | 2 +- packages/validation/package.json | 2 +- packages/widgets/package.json | 2 +- pnpm-lock.yaml | 319 ++++++++++++------------ tooling/eslint/package.json | 2 +- 36 files changed, 195 insertions(+), 194 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index ae9ab5072..1354c4330 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -91,7 +91,7 @@ "@types/react-dom": "19.0.3", "@types/swagger-ui-react": "^4.18.3", "concurrently": "^9.1.2", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "node-loader": "^2.1.0", "prettier": "^3.4.2", "typescript": "^5.7.3" diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 6b6c64429..96f49377e 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -46,7 +46,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/node": "^22.10.10", "dotenv-cli": "^8.0.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.3" diff --git a/apps/websocket/package.json b/apps/websocket/package.json index bb72431d6..b25a28aa2 100644 --- a/apps/websocket/package.json +++ b/apps/websocket/package.json @@ -34,7 +34,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/ws": "^8.5.14", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 7d454f655..101215bb0 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/api/package.json b/packages/api/package.json index dcbfc6b7d..a49212a74 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -54,7 +54,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/auth/package.json b/packages/auth/package.json index 580cae28d..357e6be9d 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -46,7 +46,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/bcrypt": "5.0.2", "@types/cookies": "0.9.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "prettier": "^3.4.2", "typescript": "^5.7.3" } diff --git a/packages/certificates/package.json b/packages/certificates/package.json index 047aa3e5c..255f8c8dd 100644 --- a/packages/certificates/package.json +++ b/packages/certificates/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 6fbd90a33..d9efbfd63 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/common/package.json b/packages/common/package.json index 3afb50f1d..a49eb0c6f 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -39,7 +39,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-job-runner/package.json b/packages/cron-job-runner/package.json index b86fcf21d..faa4b8fa0 100644 --- a/packages/cron-job-runner/package.json +++ b/packages/cron-job-runner/package.json @@ -30,7 +30,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-job-status/package.json b/packages/cron-job-status/package.json index 2b84ecdc2..e6e3da1f4 100644 --- a/packages/cron-job-status/package.json +++ b/packages/cron-job-status/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs-core/package.json b/packages/cron-jobs-core/package.json index d9286fcb0..a2e3b6c11 100644 --- a/packages/cron-jobs-core/package.json +++ b/packages/cron-jobs-core/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/node-cron": "^3.0.11", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 25c6b5af2..147106b59 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -44,7 +44,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/db/package.json b/packages/db/package.json index f29b5e1e8..13bb3497e 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -58,7 +58,7 @@ "@homarr/tsconfig": "workspace:^0.1.0", "@types/better-sqlite3": "7.6.12", "dotenv-cli": "^8.0.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "prettier": "^3.4.2", "tsx": "4.19.2", "typescript": "^5.7.3" diff --git a/packages/definitions/package.json b/packages/definitions/package.json index 8fe5d1ee6..3544e2e16 100644 --- a/packages/definitions/package.json +++ b/packages/definitions/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/docker/package.json b/packages/docker/package.json index a82c1719e..efc2f8ead 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -32,7 +32,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/dockerode": "^3.3.34", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/form/package.json b/packages/form/package.json index 6b3cf0427..447f82dd0 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/icons/package.json b/packages/icons/package.json index d213eb733..dfdd91a66 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/integrations/package.json b/packages/integrations/package.json index bfde3dfcc..15cceb120 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -45,7 +45,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/xml2js": "^0.4.14", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/log/package.json b/packages/log/package.json index 4bbf90ad1..6573bd280 100644 --- a/packages/log/package.json +++ b/packages/log/package.json @@ -34,7 +34,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 6e8af4be2..9f7a51e76 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -43,7 +43,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/modals/package.json b/packages/modals/package.json index 6072ce7b7..a2a511316 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/notifications/package.json b/packages/notifications/package.json index 2b16f4a8a..afe7716b8 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -31,7 +31,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 1517046ed..fff06dd8e 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -52,7 +52,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/adm-zip": "0.5.7", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/old-schema/package.json b/packages/old-schema/package.json index 596778f36..d3887fb51 100644 --- a/packages/old-schema/package.json +++ b/packages/old-schema/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/ping/package.json b/packages/ping/package.json index b04faef1b..4972239e8 100644 --- a/packages/ping/package.json +++ b/packages/ping/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/redis/package.json b/packages/redis/package.json index f3024dddf..87d9d5eab 100644 --- a/packages/redis/package.json +++ b/packages/redis/package.json @@ -33,7 +33,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index b85124ddd..c1d84b10c 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -38,7 +38,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/server-settings/package.json b/packages/server-settings/package.json index 5c1f86c6f..55b5d7b42 100644 --- a/packages/server-settings/package.json +++ b/packages/server-settings/package.json @@ -29,7 +29,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 32523f0c3..3eb70a890 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -46,7 +46,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/translation/package.json b/packages/translation/package.json index c6b9081bb..70ed7a76b 100644 --- a/packages/translation/package.json +++ b/packages/translation/package.json @@ -41,7 +41,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 6d377f55b..a7ba35eaf 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -43,7 +43,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/css-modules": "^1.0.5", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/validation/package.json b/packages/validation/package.json index a26e0c598..c5edcc35f 100644 --- a/packages/validation/package.json +++ b/packages/validation/package.json @@ -32,7 +32,7 @@ "@homarr/eslint-config": "workspace:^0.2.0", "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 1123275a1..77b0250ca 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -71,7 +71,7 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/video.js": "^7.3.58", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9cc40191a..4426baaa6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -198,16 +198,16 @@ importers: version: 5.64.2(@tanstack/react-query@5.64.2(react@19.0.0))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.718(typescript@5.7.3) + version: 11.0.0-rc.724(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -306,8 +306,8 @@ importers: specifier: ^9.1.2 version: 9.1.2 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 node-loader: specifier: ^2.1.0 version: 2.1.0(webpack@5.94.0) @@ -394,8 +394,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -455,8 +455,8 @@ importers: specifier: ^8.5.14 version: 8.5.14 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -492,8 +492,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -559,13 +559,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.718(typescript@5.7.3) + version: 11.0.0-rc.724(typescript@5.7.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -583,7 +583,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -595,8 +595,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -671,8 +671,8 @@ importers: specifier: 0.9.0 version: 0.9.0 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -699,8 +699,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -733,8 +733,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -773,8 +773,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -801,8 +801,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -823,8 +823,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -893,8 +893,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -921,8 +921,8 @@ importers: specifier: ^3.0.11 version: 3.0.11 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -988,8 +988,8 @@ importers: specifier: ^8.0.0 version: 8.0.0 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 prettier: specifier: ^3.4.2 version: 3.4.2 @@ -1016,8 +1016,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1047,8 +1047,8 @@ importers: specifier: ^3.3.34 version: 3.3.34 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1078,8 +1078,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1106,8 +1106,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1173,8 +1173,8 @@ importers: specifier: ^0.4.14 version: 0.4.14 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1201,8 +1201,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1235,8 +1235,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1302,8 +1302,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1330,8 +1330,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1412,8 +1412,8 @@ importers: specifier: 0.5.7 version: 0.5.7 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1437,8 +1437,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1462,8 +1462,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1499,8 +1499,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1551,8 +1551,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1576,8 +1576,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1649,8 +1649,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1695,8 +1695,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1756,8 +1756,8 @@ importers: specifier: ^1.0.5 version: 1.0.5 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1787,8 +1787,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1932,8 +1932,8 @@ importers: specifier: ^7.3.58 version: 7.3.58 eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -1945,25 +1945,25 @@ importers: version: 15.1.6 eslint-config-prettier: specifier: ^10.0.1 - version: 10.0.1(eslint@9.18.0) + version: 10.0.1(eslint@9.19.0) eslint-config-turbo: specifier: ^2.3.4 - version: 2.3.4(eslint@9.18.0)(turbo@2.3.4) + version: 2.3.4(eslint@9.19.0)(turbo@2.3.4) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0) + version: 2.31.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 - version: 6.10.2(eslint@9.18.0) + version: 6.10.2(eslint@9.19.0) eslint-plugin-react: specifier: ^7.37.4 - version: 7.37.4(eslint@9.18.0) + version: 7.37.4(eslint@9.19.0) eslint-plugin-react-hooks: specifier: ^5.1.0 - version: 5.1.0(eslint@9.18.0) + version: 5.1.0(eslint@9.19.0) typescript-eslint: specifier: ^8.21.0 - version: 8.21.0(eslint@9.18.0)(typescript@5.7.3) + version: 8.21.0(eslint@9.19.0)(typescript@5.7.3) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -1972,8 +1972,8 @@ importers: specifier: workspace:^0.1.0 version: link:../typescript eslint: - specifier: ^9.18.0 - version: 9.18.0 + specifier: ^9.19.0 + version: 9.19.0 typescript: specifier: ^5.7.3 version: 5.7.3 @@ -2975,8 +2975,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.18.0': - resolution: {integrity: sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==} + '@eslint/js@9.19.0': + resolution: {integrity: sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -4220,19 +4220,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.718': - resolution: {integrity: sha512-pTeMVFcNSw7akDz7XySsbBckfmoEYVSKLB4TCare4eAmJkFRnuPuFeKvs97hm2hxTQ43j9rrEOQGCRY84Vc4Ew==} + '@trpc/client@11.0.0-rc.724': + resolution: {integrity: sha512-Ou62Zw2wmfJ/X9/YlSacrGbkLP7FE1Ohv/bgQJYzWctSeEkQkIAsFOgy7a/T0Ry7kD78w3YTf7U1MKOf5X3NNA==} peerDependencies: - '@trpc/server': 11.0.0-rc.718+2018e3914 + '@trpc/server': 11.0.0-rc.724+0eee7e763 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.718': - resolution: {integrity: sha512-z9Yp9rcQbEmqcY8AuGdAArVyoWV2fQA2JVA0kJ1FYpatgpJqMEXFXnxyS7TduZsC0VNWlANdveUOW9Fsv5T4AA==} + '@trpc/next@11.0.0-rc.724': + resolution: {integrity: sha512-wHioN0C/HIS1wkAfZOEbL0MG8VLBwImEpils3NZK+zyxQfuOM8pzzagE9cVDA8XrW0kO6DtffS7U4Yr4GnxErA==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.718+2018e3914 - '@trpc/react-query': 11.0.0-rc.718+2018e3914 - '@trpc/server': 11.0.0-rc.718+2018e3914 + '@trpc/client': 11.0.0-rc.724+0eee7e763 + '@trpc/react-query': 11.0.0-rc.724+0eee7e763 + '@trpc/server': 11.0.0-rc.724+0eee7e763 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4243,18 +4243,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.718': - resolution: {integrity: sha512-oFz47ice2sxjH9X4jqlny/XBm03//Q7fBxaXdrlZD2OjkQhBFzA1QXcvtFwq2M54a3kwpa7IqfrFoJnRzvAMAw==} + '@trpc/react-query@11.0.0-rc.724': + resolution: {integrity: sha512-m98fkA7h51FKWe16fQACQN0aZJzLa7emtdBVqJqzCg6h8OTbexNbHx2NYpF3zAWZft5sGTVSljL9ixWFqLUYqg==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.718+2018e3914 - '@trpc/server': 11.0.0-rc.718+2018e3914 + '@trpc/client': 11.0.0-rc.724+0eee7e763 + '@trpc/server': 11.0.0-rc.724+0eee7e763 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.718': - resolution: {integrity: sha512-u9xKci9yEVBjia3X6XhYG9Me3klf0HmyQUAPCzxPYUg8WNvwXEGfTJrIC1bBfst2pjvv3xmXsi16e3tGU16c6g==} + '@trpc/server@11.0.0-rc.724': + resolution: {integrity: sha512-kdDDwLYWGlnoXxgNeOzgb620lsnueEXMn8PLPDZW5Lpm5T3kJPT4F0JYTZINk/DM0e7q4iWx488FvwBNpNhACA==} peerDependencies: typescript: '>=5.7.2' @@ -5973,8 +5973,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.18.0: - resolution: {integrity: sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==} + eslint@9.19.0: + resolution: {integrity: sha512-ug92j0LepKlbbEv6hD911THhoRHmbdXt2gX+VDABAW/Ir7D3nqKdv5Pf5vtlyY6HQMTEP2skXY43ueqTCWssEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -7096,6 +7096,7 @@ packages: lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} @@ -10543,9 +10544,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.18.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.19.0)': dependencies: - eslint: 9.18.0 + eslint: 9.19.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -10576,7 +10577,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.18.0': {} + '@eslint/js@9.19.0': {} '@eslint/object-schema@2.1.4': {} @@ -12114,33 +12115,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.718(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.718(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) next: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.64.2(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.718(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.64.2(react@19.0.0) - '@trpc/client': 11.0.0-rc.718(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.718(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.718(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.724(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -12405,15 +12406,15 @@ snapshots: dependencies: '@types/node': 22.10.10 - '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/eslint-plugin@8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) '@typescript-eslint/scope-manager': 8.21.0 - '@typescript-eslint/type-utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/type-utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.21.0 - eslint: 9.18.0 + eslint: 9.19.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -12422,14 +12423,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/scope-manager': 8.21.0 '@typescript-eslint/types': 8.21.0 '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) '@typescript-eslint/visitor-keys': 8.21.0 debug: 4.4.0 - eslint: 9.18.0 + eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -12439,12 +12440,12 @@ snapshots: '@typescript-eslint/types': 8.21.0 '@typescript-eslint/visitor-keys': 8.21.0 - '@typescript-eslint/type-utils@8.21.0(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/type-utils@8.21.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) debug: 4.4.0 - eslint: 9.18.0 + eslint: 9.19.0 ts-api-utils: 2.0.0(typescript@5.7.3) typescript: 5.7.3 transitivePeerDependencies: @@ -12466,13 +12467,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.21.0(eslint@9.18.0)(typescript@5.7.3)': + '@typescript-eslint/utils@8.21.0(eslint@9.19.0)(typescript@5.7.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.19.0) '@typescript-eslint/scope-manager': 8.21.0 '@typescript-eslint/types': 8.21.0 '@typescript-eslint/typescript-estree': 8.21.0(typescript@5.7.3) - eslint: 9.18.0 + eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color @@ -14125,14 +14126,14 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.0.1(eslint@9.18.0): + eslint-config-prettier@10.0.1(eslint@9.19.0): dependencies: - eslint: 9.18.0 + eslint: 9.19.0 - eslint-config-turbo@2.3.4(eslint@9.18.0)(turbo@2.3.4): + eslint-config-turbo@2.3.4(eslint@9.19.0)(turbo@2.3.4): dependencies: - eslint: 9.18.0 - eslint-plugin-turbo: 2.3.4(eslint@9.18.0)(turbo@2.3.4) + eslint: 9.19.0 + eslint-plugin-turbo: 2.3.4(eslint@9.19.0)(turbo@2.3.4) turbo: 2.3.4 eslint-import-resolver-node@0.3.9: @@ -14143,17 +14144,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.19.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) - eslint: 9.18.0 + '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + eslint: 9.19.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14162,9 +14163,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.18.0 + eslint: 9.19.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.18.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint-import-resolver-node@0.3.9)(eslint@9.19.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14176,13 +14177,13 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@9.18.0): + eslint-plugin-jsx-a11y@6.10.2(eslint@9.19.0): dependencies: aria-query: 5.3.2 array-includes: 3.1.8 @@ -14192,7 +14193,7 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 9.18.0 + eslint: 9.19.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -14201,11 +14202,11 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@5.1.0(eslint@9.18.0): + eslint-plugin-react-hooks@5.1.0(eslint@9.19.0): dependencies: - eslint: 9.18.0 + eslint: 9.19.0 - eslint-plugin-react@7.37.4(eslint@9.18.0): + eslint-plugin-react@7.37.4(eslint@9.19.0): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -14213,7 +14214,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.18.0 + eslint: 9.19.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -14227,10 +14228,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-turbo@2.3.4(eslint@9.18.0)(turbo@2.3.4): + eslint-plugin-turbo@2.3.4(eslint@9.19.0)(turbo@2.3.4): dependencies: dotenv: 16.0.3 - eslint: 9.18.0 + eslint: 9.19.0 turbo: 2.3.4 eslint-scope@5.1.1: @@ -14247,14 +14248,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.18.0: + eslint@9.19.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.18.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.19.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 '@eslint/core': 0.10.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.18.0 + '@eslint/js': 9.19.0 '@eslint/plugin-kit': 0.2.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -17761,9 +17762,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.718(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.718(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 @@ -17949,12 +17950,12 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.21.0(eslint@9.18.0)(typescript@5.7.3): + typescript-eslint@8.21.0(eslint@9.19.0)(typescript@5.7.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.18.0)(typescript@5.7.3))(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/parser': 8.21.0(eslint@9.18.0)(typescript@5.7.3) - '@typescript-eslint/utils': 8.21.0(eslint@9.18.0)(typescript@5.7.3) - eslint: 9.18.0 + '@typescript-eslint/eslint-plugin': 8.21.0(@typescript-eslint/parser@8.21.0(eslint@9.19.0)(typescript@5.7.3))(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/parser': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + '@typescript-eslint/utils': 8.21.0(eslint@9.19.0)(typescript@5.7.3) + eslint: 9.19.0 typescript: 5.7.3 transitivePeerDependencies: - supports-color diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 29aaffb7e..770161fa9 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", - "eslint": "^9.18.0", + "eslint": "^9.19.0", "typescript": "^5.7.3" } } From 614f8077e1eb8217e6f5f90363e3bf6a468c4770 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Fri, 24 Jan 2025 20:22:11 +0100 Subject: [PATCH 02/25] chore(issue-template): add missing homarr version 1.2.0 --- .github/ISSUE_TEMPLATE/bug_report.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index eb3bba3d6..b9d99f449 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -31,6 +31,7 @@ body: label: Version description: What version of Homarr are you running? options: + - 1.2.0 - 1.1.0 - 1.0.1 - 1.0.0 From 3e85f4e44d082031741d1e49e399d30bf97b1c40 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sat, 25 Jan 2025 00:42:53 +0000 Subject: [PATCH 03/25] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> --- packages/translation/src/lang/cn.json | 46 ++++---- packages/translation/src/lang/cs.json | 4 + packages/translation/src/lang/da.json | 10 +- packages/translation/src/lang/de.json | 4 + packages/translation/src/lang/el.json | 4 + packages/translation/src/lang/es.json | 4 + packages/translation/src/lang/et.json | 4 + packages/translation/src/lang/fr.json | 4 + packages/translation/src/lang/he.json | 4 + packages/translation/src/lang/hr.json | 4 + packages/translation/src/lang/hu.json | 4 + packages/translation/src/lang/it.json | 4 + packages/translation/src/lang/ja.json | 4 + packages/translation/src/lang/ko.json | 4 + packages/translation/src/lang/lt.json | 4 + packages/translation/src/lang/lv.json | 4 + packages/translation/src/lang/nl.json | 4 + packages/translation/src/lang/no.json | 4 + packages/translation/src/lang/pl.json | 4 + packages/translation/src/lang/pt.json | 110 +++++++++--------- packages/translation/src/lang/ro.json | 4 + packages/translation/src/lang/ru.json | 4 + packages/translation/src/lang/sk.json | 4 + packages/translation/src/lang/sl.json | 4 + packages/translation/src/lang/sv.json | 4 + packages/translation/src/lang/tr.json | 4 + packages/translation/src/lang/uk.json | 158 +++++++++++++------------- packages/translation/src/lang/vi.json | 4 + packages/translation/src/lang/zh.json | 12 +- 29 files changed, 274 insertions(+), 158 deletions(-) diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 40127fd64..5ee7d84f6 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -735,12 +735,12 @@ "newLabel": "新密码" }, "tokenId": { - "label": "密鑰 ID", - "newLabel": "新密鑰 ID" + "label": "令牌ID", + "newLabel": "新令牌 ID" }, "realm": { - "label": "領域", - "newLabel": "新領域" + "label": "领域", + "newLabel": "新领域" } } }, @@ -787,7 +787,7 @@ "label": "复制 URL" }, "open": { - "label": "" + "label": "打开媒体" } } }, @@ -908,7 +908,7 @@ "passwordRequirements": "密码不符合要求", "boardAlreadyExists": "具有此名称的面板已存在", "invalidFileType": "无效的文件类型,例如 {expected}", - "invalidFileName": "無效的檔案名稱", + "invalidFileName": "文件名无效", "fileTooLarge": "文件太大,最大大小为 {maxSize}", "invalidConfiguration": "无效配置", "groupNameTaken": "用户组名称已存在" @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "隐藏图标" }, "hideHostname": { - "label": "" + "label": "隐藏主机名" }, "openNewTab": { - "label": "" + "label": "在新标签页中打开" }, "items": { "label": "书签", @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "系统健康监测", "description": "显示系统运行状况和状态的信息。", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU 温度(华氏度)" @@ -1433,10 +1437,10 @@ "label": "显示文件系统信息" }, "defaultTab": { - "label": "預設頁面" + "label": "默认标签" }, "sectionIndicatorRequirement": { - "label": "部分指示需求" + "label": "部分指标要求" } }, "popover": { @@ -1459,34 +1463,34 @@ }, "cluster": { "summary": { - "cpu": "處理器", - "memory": "記憶體" + "cpu": "处理器", + "memory": "内存" }, "resource": { "node": { - "name": "節點" + "name": "节点" }, "qemu": { - "name": "虛擬機" + "name": "虚拟机" }, "lxc": { "name": "LXCs" }, "storage": { - "name": "儲存裝置" + "name": "存储" } }, "popover": { "rightSection": { - "node": "節點", - "vmId": "虛擬機 ID", + "node": "节点", + "vmId": "虚拟 ID", "plugin": "插件" }, "detail": { "cpu": "核心", - "memory": "記憶體", - "storage": "儲存裝置", - "uptime": "運行時間", + "memory": "内存", + "storage": "存储", + "uptime": "运行时间", "haState": "HA 状态", "storageType": { "local": "本地存储", diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index cac4f7665..e5387b1da 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitorování stavu systému", "description": "Zobrazuje informace o stavu a kondici Vašeho systému (systémů).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Teplota CPU ve stupních Fahrenheit" diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 5d0b1f7ee..2f7baab11 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "Skjul ikoner" }, "hideHostname": { - "label": "" + "label": "Skjul værtsnavne" }, "openNewTab": { - "label": "" + "label": "Åbn i nyt faneblad" }, "items": { "label": "Bogmærker", @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Systemsundhedsovervågning", "description": "Viser oplysninger om dit/dine systems tilstand og status.", + "tab": { + "system": "System", + "cluster": "Klynge" + }, "option": { "fahrenheit": { "label": "CPU-temperatur i Fahrenheit" diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index c03d2bc8a..7787b82dd 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Überwachung des Systemzustands", "description": "Zeigt Informationen zum Zustand und Status Ihres/Ihrer Systeme(s) an.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU-Temperatur in Fahrenheit" diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 7df079789..dd7493fc2 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Παρακολούθηση της υγείας του συστήματος", "description": "Εμφανίζει πληροφορίες που δείχνουν την κατάσταση και την υγεία του/ων συστήματος/ων σας.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Θερμοκρασία CPU σε Φαρενάιτ" diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index fb6143e8c..6905ec183 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitorización de Salud del Sistema", "description": "Muestra información sobre la salud y el estado de tu(s) sistema(s).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Temperatura de la CPU en grados Fahrenheit" diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 4f7300a70..56c126f70 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 1842dbb14..8053ac895 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Surveillance de l'état du système", "description": "Affiche des informations sur l'état et la santé de votre (vos) système(s).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Température du processeur en Fahrenheit" diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index bda33e8c3..2f6a84675 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "ניטור בריאות המערכת", "description": "מציג מידע המציג את התקינות והסטטוס של המערכות שלך.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "טמפרטורת המעבד בפרנהייט" diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index 1a0f2d3a2..900c81214 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 013f31247..c94b5381b 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Rendszerállapot-felügyelet", "description": "Megjeleníti a rendszer(ek) állapotát és állapotát mutató információkat.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU hőmérséklet Fahrenheitben" diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index 5bae1c92a..69ebb45e6 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitoraggio Salute di Sistema", "description": "Visualizza informazioni sulla salute e stato dei tuoi sistemi.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Temperatura CPU in Fahrenheit" diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 490aaf4bb..54672b2a7 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "システムヘルスモニタリング", "description": "システムの健全性とステータスを示す情報を表示します。", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU温度(華氏)" diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index a32274bd2..9bbf155db 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index edbc043f3..787f51aff 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Sistemos būklės stebėjimas", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index b34efbde6..d2c557f4b 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Sistēmas Stāvokļa Uzraudzība", "description": "Tiek parādīta informācija par sistēmas(-u) stāvokli un stāvokli.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU temperatūra pēc Fārenheita" diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index c0808c188..2f0d29504 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Systeem gezondheidsmonitoring", "description": "Toont informatie over de gezondheid en status van je systeem(en).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU-temperatuur in fahrenheit" diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index fcee80bb4..c943784b9 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Systemhelseovervåking", "description": "Viser informasjon som viser helsen og statusen til systemet(e).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU-temp i Fahrenheit" diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 185f4a44a..de66791f7 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitorowanie zdrowia systemu", "description": "Wyświetla informacje o stanie Twojego systemu(ów).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Temperatura procesora w Fahrenheit" diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index 98f2a1073..da18b5183 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -119,13 +119,13 @@ }, "init": { "title": "Nova instalação do Homarr", - "subtitle": "" + "subtitle": "Por favor, crie o usuário administrador inicial" } }, "field": { "email": { "label": "E-mail", - "verified": "" + "verified": "Verificado" }, "username": { "label": "Usuário" @@ -133,46 +133,46 @@ "password": { "label": "Senha", "requirement": { - "length": "", + "length": "Inclua pelo menos 8 caracteres", "lowercase": "Inclui letras minúsculas", "uppercase": "Inclui letras maiúsculas", "number": "Inclui número", - "special": "" + "special": "Inclua um caractere especial" } }, "passwordConfirm": { "label": "Confirmar senha" }, "previousPassword": { - "label": "" + "label": "Senha anterior" }, "homeBoard": { - "label": "" + "label": "Quadro inicial" }, "pingIconsEnabled": { - "label": "" + "label": "Usar ícone para pings" } }, "error": { - "usernameTaken": "" + "usernameTaken": "Nome de usuário já em uso" }, "action": { "login": { "label": "“Login”", - "labelWith": "", + "labelWith": "Iniciar sessão com {provider}", "notification": { "success": { - "title": "", - "message": "" + "title": "Início de sessão bem-sucedido", + "message": "Agora você está conectado" }, "error": { - "title": "", - "message": "" + "title": "Falha ao iniciar sessão", + "message": "Seu acesso falhou" } }, "forgotPassword": { - "label": "", - "description": "" + "label": "Esqueceu sua senha?", + "description": "Um administrador pode usar o seguinte comando para redefinir sua senha:" } }, "register": { @@ -180,91 +180,91 @@ "notification": { "success": { "title": "Conta criada", - "message": "" + "message": "Por favor, entre para continuar" }, "error": { - "title": "", - "message": "" + "title": "Criação da conta falhou", + "message": "Sua conta não pode ser criada" } } }, "create": "Criar usuário", "changePassword": { - "label": "", + "label": "Alterar senha", "notification": { "success": { - "message": "" + "message": "Senha alterada com sucesso" }, "error": { - "message": "" + "message": "Não é possível alterar a senha" } } }, "changeHomeBoard": { "notification": { "success": { - "message": "" + "message": "Quadro inicial alterado com sucesso" }, "error": { - "message": "" + "message": "Não foi possível alterar o quadro inicial" } } }, "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Mecanismo de busca padrão alterado com sucesso" }, "error": { - "message": "" + "message": "Não foi possível alterar o mecanismo de busca padrão" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "Primeiro dia da semana alterado com sucesso" }, "error": { - "message": "" + "message": "Não foi possível alterar o primeiro dia da semana" } } }, "changePingIconsEnabled": { "notification": { "success": { - "message": "" + "message": "Ícones de ping alterados com sucesso" }, "error": { - "message": "" + "message": "Não foi possível alternar ícones de ping" } } }, "manageAvatar": { "changeImage": { - "label": "", + "label": "Alterar imagem", "notification": { "success": { - "message": "" + "message": "A imagem foi alterada com sucesso" }, "error": { - "message": "" + "message": "Não é possível alterar a imagem" }, "toLarge": { - "title": "", - "message": "" + "title": "A imagem é muito grande", + "message": "O tamanho máximo da imagem é {size}" } } }, "removeImage": { - "label": "", - "confirm": "", + "label": "Remover imagem", + "confirm": "Tem certeza de que deseja remover esta imagem?", "notification": { "success": { - "message": "" + "message": "Imagem removida com sucesso" }, "error": { - "message": "" + "message": "Não é possível remover a imagem" } } } @@ -272,34 +272,34 @@ "editProfile": { "notification": { "success": { - "message": "" + "message": "Perfil atualizado com sucesso" }, "error": { - "message": "" + "message": "Não foi possível atualizar o perfil" } } }, "delete": { - "label": "", - "description": "", - "confirm": "" + "label": "Excluir usuário permanentemente", + "description": "Exclui esse usuário incluindo suas preferências. Isso não removerá nenhum quadro. O usuário não sera notificado.", + "confirm": "Tem certeza que deseja excluir o usuário {username} e suas preferências?" }, "select": { - "label": "", - "notFound": "" + "label": "Selecionar usuário", + "notFound": "Nenhum usuário encontrado" }, "transfer": { - "label": "" + "label": "Selecionar novo proprietário" } } }, "group": { - "title": "", - "name": "", - "search": "", + "title": "Grupos", + "name": "Grupo", + "search": "Encontrar um grupo", "field": { "name": "Nome", - "members": "" + "members": "Membros" }, "permission": { "admin": { @@ -438,9 +438,9 @@ } }, "transfer": { - "label": "", - "description": "", - "confirm": "", + "label": "Transferir propriedade", + "description": "Transferir propriedade deste grupo para outro usuário.", + "confirm": "Tem certeza de que deseja transferir a propriedade do grupo {name} para {username}?", "notification": { "success": { "message": "" @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitoramento da integridade do sistema", "description": "Exibe informações que mostram a saúde e status de seu(s) sistema(s).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Temperatura da CPU em Fahrenheit" diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 53f1d0f50..9442dc7a4 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitorizarea sănătății sistemului", "description": "Afișează informații care arată starea de sănătate și statistica sistemului (sistemelor) dumneavoastră.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Temperatura procesorului în Fahrenheit" diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 304a49678..fa3b2551a 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Мониторинг состояния системы", "description": "Отображает информацию о состоянии и работоспособности вашей системы (систем).", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Температура CPU в градусах Фаренгейта" diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 590bbc6eb..8aed1f86a 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Monitorovanie stavu systému", "description": "Zobrazuje informácie o stave a kondícii vášho systému.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Teplota CPU v stupňoch Fahrenheita" diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index dc4a008b2..597525788 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index 422841337..db2cdff83 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Övervakning av systemhälsan", "description": "Visar information som visar hälsa och status för ditt/dina system.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "CPU-temperatur i Fahrenheit" diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index dde31fcd8..5c01cb3f2 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Sistem Sağlığı İzleme", "description": "Sistem(ler)inizin sağlığını ve durumunu gösteren bilgileri görüntüler.", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "Fahrenheit cinsinden CPU Sıcaklığı" diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index bd7b753be..899eb60ad 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -438,8 +438,8 @@ } }, "transfer": { - "label": "", - "description": "", + "label": "Змінити власника", + "description": "Передати право власності на цю групу іншому користувачеві.", "confirm": "Ви впевнені, що бажаєте передати право власності на групу {name} користувачу {username}?", "notification": { "success": { @@ -637,7 +637,7 @@ "create": "Перевірити підключення та створити", "edit": "Перевірити підключення та зберегти" }, - "alertNotice": "", + "alertNotice": "Кнопка \"Зберегти\" стане доступною після успішного підключення", "notification": { "success": { "title": "З'єднання встановлено", @@ -680,34 +680,34 @@ "message": "На сервері сталася помилка" }, "serviceUnavailable": { - "title": "", + "title": "Сервіс недоступний", "message": "Сервер зараз недоступний" }, "connectionAborted": { - "title": "", - "message": "" + "title": "Підключення перервано", + "message": "Підключення було перервано" }, "domainNotFound": { "title": "Домен не знайдено", "message": "Домен не знайдено" }, "connectionRefused": { - "title": "", - "message": "" + "title": "У підключенні відмовлено", + "message": "У підключенні було відмовлено" }, "invalidJson": { - "title": "", + "title": "Невірний JSON", "message": "" }, "wrongPath": { - "title": "", - "message": "" + "title": "Неправильний шлях", + "message": "Ймовірно, шлях не правильний" } } }, "secrets": { "title": "", - "lastUpdated": "", + "lastUpdated": "Останнє оновлення {date}", "notSet": { "label": "", "tooltip": "Обов’язковий ключ ще не був встановлений" @@ -746,7 +746,7 @@ }, "permission": { "use": "", - "interact": "", + "interact": "Взаємодія з інтеграціями", "full": "Повний доступ до інтеграції" } }, @@ -764,22 +764,22 @@ "file": "Виберіть файл", "notification": { "success": { - "message": "" + "message": "Медіафайл успішно завантажено" }, "error": { - "message": "" + "message": "Не вдалося завантажити медіафайл" } } }, "delete": { "label": "Видалити медіа", - "description": "", + "description": "Ви впевнені, що хочете видалити медіа ?", "notification": { "success": { - "message": "" + "message": "Медіафайл успішно видалено" }, "error": { - "message": "" + "message": "Не вдалося видалити медіафайл" } } }, @@ -807,17 +807,17 @@ "saveChanges": "Зберегти зміни", "cancel": "Скасувати", "delete": "Видалити", - "discard": "", + "discard": "Відмінити", "confirm": "Підтвердити", "continue": "Продовжити", "previous": "Попередній", "next": "Далі", - "checkoutDocs": "", + "checkoutDocs": "Переглянути документацію", "checkLogs": "Щоб дізнатися більше, перевірте логи", "tryAgain": "Повторіть спробу", "loading": "Завантаження" }, - "here": "", + "here": "тут", "iconPicker": { "label": "", "header": "" @@ -849,15 +849,15 @@ "error": "Не вдалося застосувати зміни" }, "transfer": { - "success": "", + "success": "Передача пройшла успішно", "error": "" } }, "multiSelect": { - "placeholder": "" + "placeholder": "Виберіть одне або декілька значень" }, "multiText": { - "placeholder": "", + "placeholder": "Додати більше значень", "addLabel": "Додати {value}" }, "select": { @@ -937,8 +937,8 @@ "create": "Нова категорія", "edit": "Перейменувати категорію", "remove": "Видалити категорію", - "moveUp": "Рухайся.", - "moveDown": "Вниз.", + "moveUp": "Перемістити вгору", + "moveDown": "Перемістити вниз", "createAbove": "Нові категорії зверху", "createBelow": "Нова категорія знизу" }, @@ -979,7 +979,7 @@ "create": { "title": "Виберіть елемент для додавання", "search": "Фільтр елементів", - "addToBoard": "" + "addToBoard": "Додати до дошки" }, "moveResize": { "title": "Перемістити/змінити розмір", @@ -1042,16 +1042,16 @@ "error": { "notFound": { "label": "", - "tooltip": "" + "tooltip": "Ви не обрали дійсну програму" } } }, "bookmarks": { - "name": "", + "name": "Закладки", "description": "", "option": { "title": { - "label": "" + "label": "Назва" }, "layout": { "label": "Макет", @@ -1063,7 +1063,7 @@ "label": "Вертикальний" }, "grid": { - "label": "" + "label": "Сітка" } } }, @@ -1071,14 +1071,14 @@ "label": "" }, "hideHostname": { - "label": "" + "label": "Приховати імена хостів" }, "openNewTab": { - "label": "" + "label": "Відкрити в новій вкладці" }, "items": { - "label": "", - "add": "" + "label": "Закладки", + "add": "Додати закладку" } } }, @@ -1096,7 +1096,7 @@ "label": "Вертикальний" }, "grid": { - "label": "" + "label": "Сітка" } } }, @@ -1106,7 +1106,7 @@ }, "error": { "internalServerError": "", - "integrationsDisconnected": "" + "integrationsDisconnected": "Немає даних, всі інтеграції відключені" }, "data": { "adsBlockedToday": "Заблоковано сьогодні", @@ -1130,7 +1130,7 @@ "label": "Вертикальний" }, "grid": { - "label": "" + "label": "Сітка" } } }, @@ -1149,7 +1149,7 @@ "enabled": "Увімкнено", "disabled": "Вимкнено", "processing": "", - "disconnected": "", + "disconnected": "Відключено", "hours": "", "minutes": "", "unlimited": "" @@ -1181,7 +1181,7 @@ "description": "" }, "showDate": { - "label": "" + "label": "Показувати дату" }, "dateFormat": { "label": "Формат дати", @@ -1191,7 +1191,7 @@ }, "minecraftServerStatus": { "name": "Статус сервера Minecraft", - "description": "", + "description": "Відображає статус сервера Minecraft", "option": { "title": { "label": "Назва" @@ -1243,8 +1243,8 @@ "link": "Посилання", "unlink": "Видалити посилання", "image": "", - "addTable": "", - "deleteTable": "", + "addTable": "Додати таблицю", + "deleteTable": "Видалити таблицю", "colorCell": "", "mergeCell": "", "addColumnLeft": "", @@ -1261,7 +1261,7 @@ }, "popover": { "clearColor": "", - "source": "", + "source": "Джерело", "widthPlaceholder": "", "columns": "", "rows": "", @@ -1371,10 +1371,10 @@ "label": "Погодна локація" }, "showCity": { - "label": "" + "label": "Показувати місто" }, "hasForecast": { - "label": "" + "label": "Показувати прогноз погоди" }, "forecastDayCount": { "label": "", @@ -1417,17 +1417,21 @@ } }, "healthMonitoring": { - "name": "", + "name": "Моніторинг системних ресурсів", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" }, "cpu": { - "label": "" + "label": "Показати інформацію про ЦП" }, "memory": { - "label": "" + "label": "Показати інформацію про пам'ять" }, "fileSystem": { "label": "" @@ -1440,17 +1444,17 @@ } }, "popover": { - "information": "", - "processor": "", + "information": "Інформація", + "processor": "Процесор: {cpuModelName}", "memory": "", "memoryAvailable": "", - "version": "", + "version": "Версія: {version}", "uptime": "", - "loadAverage": "", - "minute": "", - "minutes": "", - "used": "", - "available": "", + "loadAverage": "Середнє навантаження:", + "minute": "1 хвилина", + "minutes": "{count} хвилин(и)", + "used": "Використано", + "available": "Доступно", "lastSeen": "" }, "memory": {}, @@ -1520,7 +1524,7 @@ "population": "Населення" }, "action": { - "select": "" + "select": "Виберіть {city}, {countryCode}" }, "population": { "fallback": "Невідомо" @@ -1528,16 +1532,16 @@ } }, "integration": { - "noData": "", + "noData": "Не знайдено інтеграції", "description": "" }, "app": { - "noData": "", + "noData": "Додаток не знайдено", "description": "" }, "error": { - "noIntegration": "", - "noData": "" + "noIntegration": "Інтеграція не вибрана", + "noData": "Немає даних про інтеграцію" }, "option": {} }, @@ -1618,7 +1622,7 @@ "columnTitle": "" }, "added": { - "columnTitle": "", + "columnTitle": "Додано", "detailsTitle": "Дата додавання" }, "category": { @@ -1644,7 +1648,7 @@ }, "progress": { "columnTitle": "Прогрес", - "detailsTitle": "" + "detailsTitle": "Прогрес завантаження" }, "ratio": { "columnTitle": "Співвідношення", @@ -1652,11 +1656,11 @@ }, "received": { "columnTitle": "", - "detailsTitle": "" + "detailsTitle": "Всього завантажено" }, "sent": { "columnTitle": "", - "detailsTitle": "" + "detailsTitle": "Всього вивантажено" }, "size": { "columnTitle": "Розмір файлу", @@ -1667,7 +1671,7 @@ "detailsTitle": "" }, "time": { - "columnTitle": "", + "columnTitle": "Час завершення", "detailsTitle": "" }, "type": { @@ -1676,7 +1680,7 @@ }, "upSpeed": { "columnTitle": "Віддача", - "detailsTitle": "" + "detailsTitle": "Швидкість вивантаження" } }, "states": { @@ -1684,8 +1688,8 @@ "queued": "У черзі", "paused": "Призупинено", "completed": "Завершено", - "failed": "", - "processing": "", + "failed": "Невдало", + "processing": "В обробці", "leeching": "", "stalled": "", "unknown": "Невідомо", @@ -1693,16 +1697,16 @@ }, "actions": { "clients": { - "modalTitle": "", - "pause": "", - "resume": "" + "modalTitle": "Завантажити список клієнтів", + "pause": "Призупинити всі клієнти/елементи", + "resume": "Відновити всі клієнти/елементи" }, "client": { - "pause": "", - "resume": "" + "pause": "Призупинити клієнт", + "resume": "Відновити клієнт" }, "item": { - "pause": "", + "pause": "Призупинити елемент", "resume": "", "delete": { "title": "Видалити елемент", @@ -1759,7 +1763,7 @@ } }, "mediaTranscoding": { - "name": "", + "name": "Перекодування медіа", "description": "", "option": { "defaultView": { diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index 00ea5d396..6d0aaf0c4 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "Giám sát tình trạng hệ thống", "description": "", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "" diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index 0e6cdd1c5..9cf8587a0 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -787,7 +787,7 @@ "label": "複製網址" }, "open": { - "label": "" + "label": "開啟多媒體" } } }, @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "隱藏 icons" }, "hideHostname": { - "label": "" + "label": "隱藏 hostname" }, "openNewTab": { - "label": "" + "label": "於新分頁開啟" }, "items": { "label": "書籤", @@ -1419,6 +1419,10 @@ "healthMonitoring": { "name": "系統健康監測", "description": "顯示系統運行狀態", + "tab": { + "system": "", + "cluster": "" + }, "option": { "fahrenheit": { "label": "處理器溫度" From b28274fa859422e28d0705198bf19f9bc58a8baa Mon Sep 17 00:00:00 2001 From: Spillebulle <46653946+Spillebulle@users.noreply.github.com> Date: Sat, 25 Jan 2025 16:34:56 +0100 Subject: [PATCH 04/25] chore(lang): fix typo in english translation (#2112) --- packages/translation/src/lang/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index e3ee9156f..121ede892 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -28,7 +28,7 @@ }, "boardSelection": { "title": "Found {count} boards", - "description": "Choose all boards with there size you want to import", + "description": "Choose all boards with the size you want to import", "action": { "selectAll": "Select all", "unselectAll": "Unselect all" From 963d77463a5206ac1cb5d035b52271c6bbbd5e73 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 11:50:53 +0100 Subject: [PATCH 05/25] fix(deps): update dependency @t3-oss/env-nextjs to ^0.12.0 (#2117) * fix(deps): update dependency @t3-oss/env-nextjs to ^0.12.0 * fix: inconsistent tanstack versions * fix: broken lock file --------- Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- apps/nextjs/package.json | 4 +- packages/auth/package.json | 2 +- packages/db/package.json | 2 +- packages/docker/package.json | 2 +- pnpm-lock.yaml | 119 +++++++++++++++++++---------------- 5 files changed, 69 insertions(+), 60 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 1354c4330..4a2c8463e 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -48,11 +48,11 @@ "@mantine/modals": "^7.16.1", "@mantine/tiptap": "^7.16.1", "@million/lint": "1.0.14", - "@t3-oss/env-nextjs": "^0.11.1", + "@t3-oss/env-nextjs": "^0.12.0", "@tabler/icons-react": "^3.29.0", "@tanstack/react-query": "^5.64.2", "@tanstack/react-query-devtools": "^5.64.2", - "@tanstack/react-query-next-experimental": "5.64.2", + "@tanstack/react-query-next-experimental": "^5.64.2", "@trpc/client": "next", "@trpc/next": "next", "@trpc/react-query": "next", diff --git a/packages/auth/package.json b/packages/auth/package.json index 357e6be9d..1afba2a8e 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -30,7 +30,7 @@ "@homarr/definitions": "workspace:^0.1.0", "@homarr/log": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@t3-oss/env-nextjs": "^0.11.1", + "@t3-oss/env-nextjs": "^0.12.0", "bcrypt": "^5.1.1", "cookies": "^0.9.1", "ldapts": "7.3.1", diff --git a/packages/db/package.json b/packages/db/package.json index 13bb3497e..6b63b386c 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -43,7 +43,7 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@paralleldrive/cuid2": "^2.2.2", - "@t3-oss/env-nextjs": "^0.11.1", + "@t3-oss/env-nextjs": "^0.12.0", "@testcontainers/mysql": "^10.17.1", "better-sqlite3": "^11.8.1", "dotenv": "^16.4.7", diff --git a/packages/docker/package.json b/packages/docker/package.json index efc2f8ead..a8b8c6d1d 100644 --- a/packages/docker/package.json +++ b/packages/docker/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/common": "workspace:^0.1.0", - "@t3-oss/env-nextjs": "^0.11.1", + "@t3-oss/env-nextjs": "^0.12.0", "dockerode": "^4.0.4" }, "devDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4426baaa6..e497b9367 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -182,8 +182,8 @@ importers: specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) '@t3-oss/env-nextjs': - specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.3)(zod@3.24.1) + specifier: ^0.12.0 + version: 0.12.0(typescript@5.7.3)(zod@3.24.1) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) @@ -194,20 +194,20 @@ importers: specifier: ^5.64.2 version: 5.64.2(@tanstack/react-query@5.64.2(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: 5.64.2 + specifier: ^5.64.2 version: 5.64.2(@tanstack/react-query@5.64.2(react@19.0.0))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react@19.0.0) '@trpc/client': specifier: next - version: 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3) '@trpc/next': specifier: next - version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.724(typescript@5.7.3) + version: 11.0.0-rc.729(typescript@5.7.3) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -559,13 +559,13 @@ importers: version: link:../validation '@trpc/client': specifier: next - version: 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) + version: 11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3) '@trpc/react-query': specifier: next - version: 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + version: 11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) '@trpc/server': specifier: next - version: 11.0.0-rc.724(typescript@5.7.3) + version: 11.0.0-rc.729(typescript@5.7.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -583,7 +583,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.2 - version: 2.1.2(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + version: 2.1.2(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -628,8 +628,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@t3-oss/env-nextjs': - specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.3)(zod@3.24.1) + specifier: ^0.12.0 + version: 0.12.0(typescript@5.7.3)(zod@3.24.1) bcrypt: specifier: ^5.1.1 version: 5.1.1 @@ -948,8 +948,8 @@ importers: specifier: ^2.2.2 version: 2.2.2 '@t3-oss/env-nextjs': - specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.3)(zod@3.24.1) + specifier: ^0.12.0 + version: 0.12.0(typescript@5.7.3)(zod@3.24.1) '@testcontainers/mysql': specifier: ^10.17.1 version: 10.17.1 @@ -1028,8 +1028,8 @@ importers: specifier: workspace:^0.1.0 version: link:../common '@t3-oss/env-nextjs': - specifier: ^0.11.1 - version: 0.11.1(typescript@5.7.3)(zod@3.24.1) + specifier: ^0.12.0 + version: 0.12.0(typescript@5.7.3)(zod@3.24.1) dockerode: specifier: ^4.0.4 version: 4.0.4 @@ -3945,23 +3945,33 @@ packages: '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@t3-oss/env-core@0.11.1': - resolution: {integrity: sha512-MaxOwEoG1ntCFoKJsS7nqwgcxLW1SJw238AJwfJeaz3P/8GtkxXZsPPolsz1AdYvUTbe3XvqZ/VCdfjt+3zmKw==} + '@t3-oss/env-core@0.12.0': + resolution: {integrity: sha512-lOPj8d9nJJTt81mMuN9GMk8x5veOt7q9m11OSnCBJhwp1QrL/qR+M8Y467ULBSm9SunosryWNbmQQbgoiMgcdw==} peerDependencies: typescript: '>=5.0.0' - zod: ^3.0.0 + valibot: ^1.0.0-beta.7 || ^1.0.0 + zod: ^3.24.0 peerDependenciesMeta: typescript: optional: true + valibot: + optional: true + zod: + optional: true - '@t3-oss/env-nextjs@0.11.1': - resolution: {integrity: sha512-rx2XL9+v6wtOqLNJbD5eD8OezKlQD1BtC0WvvtHwBgK66jnF5+wGqtgkKK4Ygie1LVmoDClths2T4tdFmRvGrQ==} + '@t3-oss/env-nextjs@0.12.0': + resolution: {integrity: sha512-rFnvYk1049RnNVUPvY8iQ55AuQh1Rr+qZzQBh3t++RttCGK4COpXGNxS4+45afuQq02lu+QAOy/5955aU8hRKw==} peerDependencies: typescript: '>=5.0.0' - zod: ^3.0.0 + valibot: ^1.0.0-beta.7 || ^1.0.0 + zod: ^3.24.0 peerDependenciesMeta: typescript: optional: true + valibot: + optional: true + zod: + optional: true '@tabler/icons-react@3.29.0': resolution: {integrity: sha512-jaa3b3j91CplY7TPgx/Gj/e+PcOnQgYiK6c5qtp1P0ytfKM5WPc1qtXyRLE3NcYlfxS2Pcst4YGy1vUML7SjbQ==} @@ -4220,19 +4230,19 @@ packages: '@tootallnate/quickjs-emscripten@0.23.0': resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} - '@trpc/client@11.0.0-rc.724': - resolution: {integrity: sha512-Ou62Zw2wmfJ/X9/YlSacrGbkLP7FE1Ohv/bgQJYzWctSeEkQkIAsFOgy7a/T0Ry7kD78w3YTf7U1MKOf5X3NNA==} + '@trpc/client@11.0.0-rc.729': + resolution: {integrity: sha512-soDEkBWeLX+WOa+FRqkkCWY6GEaogDc85zWcvxXaXUiZ45ORiz4bVzGyLUYJGuzxYs1cUxv0RAhy6zhGtC688Q==} peerDependencies: - '@trpc/server': 11.0.0-rc.724+0eee7e763 + '@trpc/server': 11.0.0-rc.729+a60413241 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.724': - resolution: {integrity: sha512-wHioN0C/HIS1wkAfZOEbL0MG8VLBwImEpils3NZK+zyxQfuOM8pzzagE9cVDA8XrW0kO6DtffS7U4Yr4GnxErA==} + '@trpc/next@11.0.0-rc.729': + resolution: {integrity: sha512-x7sSyxIKvdbJKJWL9BBeKEA01cVYhJnNKRx727xNOq6XsWfTYxPXOEu8RwNmdQ+Qp5rARwrQgcmKcN04RWCbpw==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.724+0eee7e763 - '@trpc/react-query': 11.0.0-rc.724+0eee7e763 - '@trpc/server': 11.0.0-rc.724+0eee7e763 + '@trpc/client': 11.0.0-rc.729+a60413241 + '@trpc/react-query': 11.0.0-rc.729+a60413241 + '@trpc/server': 11.0.0-rc.729+a60413241 next: '*' react: '>=16.8.0' react-dom: '>=16.8.0' @@ -4243,18 +4253,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.724': - resolution: {integrity: sha512-m98fkA7h51FKWe16fQACQN0aZJzLa7emtdBVqJqzCg6h8OTbexNbHx2NYpF3zAWZft5sGTVSljL9ixWFqLUYqg==} + '@trpc/react-query@11.0.0-rc.729': + resolution: {integrity: sha512-pesyuBcSvV+lj2y0g3kPIk/opONI5j/HKvwgaJh8UtJJCukh09cFKZmtObfemfwfwK4U3HyQ9mSnzUbnEv3sRQ==} peerDependencies: '@tanstack/react-query': ^5.62.8 - '@trpc/client': 11.0.0-rc.724+0eee7e763 - '@trpc/server': 11.0.0-rc.724+0eee7e763 + '@trpc/client': 11.0.0-rc.729+a60413241 + '@trpc/server': 11.0.0-rc.729+a60413241 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.724': - resolution: {integrity: sha512-kdDDwLYWGlnoXxgNeOzgb620lsnueEXMn8PLPDZW5Lpm5T3kJPT4F0JYTZINk/DM0e7q4iWx488FvwBNpNhACA==} + '@trpc/server@11.0.0-rc.729': + resolution: {integrity: sha512-rjkzNpnmbuFWT/BSSRN14/23ebt9CnkZqaq+WPdWZiBsxaDVvQRmm2mcjtKhEokwxWX1p1yuJhdIwG5yt5YuDw==} peerDependencies: typescript: '>=5.7.2' @@ -11839,18 +11849,17 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.11.1(typescript@5.7.3)(zod@3.24.1)': - dependencies: - zod: 3.24.1 + '@t3-oss/env-core@0.12.0(typescript@5.7.3)(zod@3.24.1)': optionalDependencies: typescript: 5.7.3 + zod: 3.24.1 - '@t3-oss/env-nextjs@0.11.1(typescript@5.7.3)(zod@3.24.1)': + '@t3-oss/env-nextjs@0.12.0(typescript@5.7.3)(zod@3.24.1)': dependencies: - '@t3-oss/env-core': 0.11.1(typescript@5.7.3)(zod@3.24.1) - zod: 3.24.1 + '@t3-oss/env-core': 0.12.0(typescript@5.7.3)(zod@3.24.1) optionalDependencies: typescript: 5.7.3 + zod: 3.24.1 '@tabler/icons-react@3.29.0(react@19.0.0)': dependencies: @@ -12115,33 +12124,33 @@ snapshots: '@tootallnate/quickjs-emscripten@0.23.0': {} - '@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3)': + '@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3)': dependencies: - '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.729(typescript@5.7.3) typescript: 5.7.3 - '@trpc/next@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/next@11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/react-query@11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(next@15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: - '@trpc/client': 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.729(typescript@5.7.3) next: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 optionalDependencies: '@tanstack/react-query': 5.64.2(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) + '@trpc/react-query': 11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3) - '@trpc/react-query@11.0.0-rc.724(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': + '@trpc/react-query@11.0.0-rc.729(@tanstack/react-query@5.64.2(react@19.0.0))(@trpc/client@11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3))(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.3)': dependencies: '@tanstack/react-query': 5.64.2(react@19.0.0) - '@trpc/client': 11.0.0-rc.724(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(typescript@5.7.3) - '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) + '@trpc/client': 11.0.0-rc.729(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.729(typescript@5.7.3) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.7.3 - '@trpc/server@11.0.0-rc.724(typescript@5.7.3)': + '@trpc/server@11.0.0-rc.729(typescript@5.7.3)': dependencies: typescript: 5.7.3 @@ -17762,9 +17771,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.724(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): + trpc-to-openapi@2.1.2(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1): dependencies: - '@trpc/server': 11.0.0-rc.724(typescript@5.7.3) + '@trpc/server': 11.0.0-rc.729(typescript@5.7.3) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 From 5aaca9261f3508039b3b4d3f2039a35ff957a9e8 Mon Sep 17 00:00:00 2001 From: "homarr-crowdin[bot]" <190541745+homarr-crowdin[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 10:58:49 +0000 Subject: [PATCH 06/25] chore(lang): updated translations from crowdin Co-authored-by: Crowdin Homarr <190541745+homarr-crowdin[bot]@users.noreply.github.com> Co-authored-by: Meier Lukas --- packages/translation/src/lang/he.json | 10 +- packages/translation/src/lang/no.json | 658 +++++++++++++------------- packages/translation/src/lang/ru.json | 12 +- packages/translation/src/lang/tr.json | 10 +- packages/translation/src/lang/uk.json | 392 +++++++-------- 5 files changed, 541 insertions(+), 541 deletions(-) diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 2f6a84675..6f9094b37 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "הסתרת אייקונים" }, "hideHostname": { - "label": "" + "label": "הסתרת כתובת רשת" }, "openNewTab": { - "label": "" + "label": "פתיחה בכרטיסיה חדשה" }, "items": { "label": "סימניות", @@ -1420,8 +1420,8 @@ "name": "ניטור בריאות המערכת", "description": "מציג מידע המציג את התקינות והסטטוס של המערכות שלך.", "tab": { - "system": "", - "cluster": "" + "system": "מערכת", + "cluster": "אשכול" }, "option": { "fahrenheit": { diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index c943784b9..a045dc57e 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -2,130 +2,130 @@ "init": { "step": { "start": { - "title": "", - "subtitle": "", - "description": "", + "title": "Velkommen til Homarr", + "subtitle": "La oss begynne med å sette opp Homarr-forekomsten din.", + "description": "For å komme i gang, velg hvordan du vil sette opp din Homarr forekomst.", "action": { - "scratch": "", - "importOldmarr": "" + "scratch": "Start fra begynnelsen", + "importOldmarr": "Importer fra Homarr før 1.0" } }, "import": { - "title": "", - "subtitle": "", + "title": "Importer data", + "subtitle": "Du kan importere data fra en eksisterende Homarr-forekomst.", "dropzone": { - "title": "", - "description": "" + "title": "Dra zip-filen hit eller klikk for å bla gjennom", + "description": "Den opplastede zip-filen vil bli behandlet og du kan velge hva du ønsker å importere" }, "fileInfo": { "action": { - "change": "" + "change": "Endre fil" } }, "importSettings": { - "title": "", - "description": "" + "title": "Importinnstillinger", + "description": "Konfigurer import oppførsel" }, "boardSelection": { - "title": "", - "description": "", + "title": "Fant {count} tavler", + "description": "Velg alle tavler med størrelse du vil importere", "action": { - "selectAll": "", - "unselectAll": "" + "selectAll": "Velg alle", + "unselectAll": "Velg bort alle" } }, "summary": { - "title": "", - "description": "", + "title": "Importoversikt", + "description": "I oversikten nedenfor kan du se hva som vil bli importert", "action": { - "import": "" + "import": "Bekreft import og fortsett" }, "entities": { "apps": "Apper", "boards": "Tavler", - "integrations": "", - "credentialUsers": "" + "integrations": "Integrasjoner", + "credentialUsers": "Påloggings-brukere" } }, "tokenModal": { - "title": "", + "title": "Angi import-token", "field": { "token": { - "label": "", - "description": "" + "label": "Token", + "description": "Angi vist import-token for din forrige homarr forekomst" } }, "notification": { "error": { - "title": "", - "message": "" + "title": "Ugyldig token", + "message": "Token du anga er ugyldig" } } } }, "user": { - "title": "", - "subtitle": "", + "title": "Admin-bruker", + "subtitle": "Angi innloggingsdetaljene for administratorbrukeren din.", "notification": { "success": { - "title": "", - "message": "" + "title": "Bruker opprettet", + "message": "Bruker opprettet" }, "error": { - "title": "" + "title": "Brukeropprettelse feilet" } } }, "group": { - "title": "", - "subtitle": "", + "title": "Ekstern gruppe", + "subtitle": "Angi gruppen som skal brukes for eksterne brukere.", "form": { "name": { - "label": "", - "description": "" + "label": "Gruppenavn", + "description": "Navnet må stemme med administratorgruppe av ekstern leverandør" } } }, "settings": { "title": "Innstillinger", - "subtitle": "" + "subtitle": "Konfigurer serverinnstillinger." }, "finish": { - "title": "", - "subtitle": "", - "description": "", + "title": "Fullfør oppsett", + "subtitle": "Alt er klart!", + "description": "Du har fullført installasjonsprosessen. Du kan nå bruke Homarr. Velg din neste handling:", "action": { - "goToBoard": "", - "createBoard": "", - "inviteUser": "", - "docs": "" + "goToBoard": "Gå til {name} tavlen", + "createBoard": "Opprett din første tavle", + "inviteUser": "Inviter andre brukere", + "docs": "Les dokumentasjonen" } } }, - "backToStart": "" + "backToStart": "Tilbake til start" }, "user": { "title": "Brukere", "name": "Bruker", "page": { "login": { - "title": "", - "subtitle": "" + "title": "Logg inn på din bruker", + "subtitle": "Velkommen tilbake! Vennligst skriv inn påloggingsinformasjon" }, "invite": { - "title": "", - "subtitle": "", - "description": "" + "title": "Bli med i Homarr", + "subtitle": "Velkommen til Homarr! Vennligst opprett en konto", + "description": "Du ble invitert av {username}" }, "init": { - "title": "", - "subtitle": "" + "title": "Ny Homarr installasjon", + "subtitle": "Vennligst opprett den første administratorbrukeren" } }, "field": { "email": { "label": "E-post", - "verified": "" + "verified": "Verifisert" }, "username": { "label": "Brukernavn" @@ -133,46 +133,46 @@ "password": { "label": "Passord", "requirement": { - "length": "", + "length": "Inkluderer minst 8 tegn", "lowercase": "Inkluderer liten bokstav", "uppercase": "Inkluderer stor bokstav", "number": "Inkluderer nummer", - "special": "" + "special": "Inkluderer spesialsymbol" } }, "passwordConfirm": { "label": "Bekreft passord" }, "previousPassword": { - "label": "" + "label": "Forrige passord" }, "homeBoard": { - "label": "" + "label": "Hjem tavle" }, "pingIconsEnabled": { - "label": "" + "label": "Bruk ikoner for pinger" } }, "error": { - "usernameTaken": "" + "usernameTaken": "Brukernavn allerede tatt" }, "action": { "login": { "label": "Logg Inn", - "labelWith": "", + "labelWith": "Logg inn med {provider}", "notification": { "success": { - "title": "", - "message": "" + "title": "Innlogging vellykket", + "message": "Du er nå innlogget" }, "error": { - "title": "", - "message": "" + "title": "Innlogging feilet", + "message": "Din innlogging feilet" } }, "forgotPassword": { - "label": "", - "description": "" + "label": "Glemt passord?", + "description": "En administrator kan bruke følgende kommando for å tilbakestille passordet:" } }, "register": { @@ -180,91 +180,91 @@ "notification": { "success": { "title": "Konto opprettet", - "message": "" + "message": "Vennligst logg inn for å fortsette" }, "error": { - "title": "", - "message": "" + "title": "Kontoopprettelse feilet", + "message": "Kontoen din kunne ikke opprettes" } } }, "create": "Opprett bruker", "changePassword": { - "label": "", + "label": "Endre passord", "notification": { "success": { - "message": "" + "message": "Passordet er endret" }, "error": { - "message": "" + "message": "Kunne ikke endre passord" } } }, "changeHomeBoard": { "notification": { "success": { - "message": "" + "message": "Hjem tavle ble endret" }, "error": { - "message": "" + "message": "Kune ikke endre hjem tavle" } } }, "changeDefaultSearchEngine": { "notification": { "success": { - "message": "" + "message": "Standard søkemotor endret" }, "error": { - "message": "" + "message": "Kunne ikke endre standard søkemotor" } } }, "changeFirstDayOfWeek": { "notification": { "success": { - "message": "" + "message": "Første dag i uken endret" }, "error": { - "message": "" + "message": "Kunne ikke endre første dag i uken" } } }, "changePingIconsEnabled": { "notification": { "success": { - "message": "" + "message": "Ping av ikoner endret" }, "error": { - "message": "" + "message": "Kunne ikke endre ping av ikoner" } } }, "manageAvatar": { "changeImage": { - "label": "", + "label": "Endre bilde", "notification": { "success": { - "message": "" + "message": "Bilde endret" }, "error": { - "message": "" + "message": "Kunne ikke endre bilde" }, "toLarge": { - "title": "", - "message": "" + "title": "Bilde er for stort", + "message": "Maks bildestørrelse er {size}" } } }, "removeImage": { - "label": "", - "confirm": "", + "label": "Fjern bilde", + "confirm": "Er du sikker på at du ønsker å fjerne bildet?", "notification": { "success": { - "message": "" + "message": "Bilde fjernet" }, "error": { - "message": "" + "message": "Kunne ikke fjerne bilde" } } } @@ -272,42 +272,42 @@ "editProfile": { "notification": { "success": { - "message": "" + "message": "Profil oppdatert" }, "error": { - "message": "" + "message": "Kan ikke oppdatere profil" } } }, "delete": { - "label": "", - "description": "", - "confirm": "" + "label": "Slett bruker permanent", + "description": "Sletter denne brukeren inkludert deres innstillinger. Vil ikke slette tavler. Brukeren vil ikke bli varslet.", + "confirm": "Er du sikker på at du vil slette brukeren {username} med innstillinger dems?" }, "select": { - "label": "", - "notFound": "" + "label": "Velg bruker", + "notFound": "Ingen bruker funnet" }, "transfer": { - "label": "" + "label": "Velg ny eier" } } }, "group": { - "title": "", - "name": "", - "search": "", + "title": "Grupper", + "name": "Gruppe", + "search": "Finn en gruppe", "field": { "name": "Navn", - "members": "" + "members": "Medlemmer" }, "permission": { "admin": { "title": "Administrator", "item": { "admin": { - "label": "", - "description": "" + "label": "Administrator", + "description": "Medlemmer med denne tillatelsen har full tilgang til alle funksjoner og innstillinger" } } }, @@ -315,20 +315,20 @@ "title": "Apper", "item": { "create": { - "label": "", - "description": "" + "label": "Opprett apper", + "description": "Tillat medlemmer å opprette apper" }, "use-all": { - "label": "", - "description": "" + "label": "Bruk alle apper", + "description": "Tillat medlemmer å legge alle apper til tavlene sine" }, "modify-all": { - "label": "", - "description": "" + "label": "Endre alle apper", + "description": "Tillat medlemmer å endre alle apper" }, "full-all": { - "label": "", - "description": "" + "label": "Full app tilgang", + "description": "Tillat medlemmer å administrere, bruke og slette alle apper" } } }, @@ -336,215 +336,215 @@ "title": "Tavler", "item": { "create": { - "label": "", - "description": "" + "label": "Opprett tavler", + "description": "Tillat medlemmer å opprette tavler" }, "view-all": { - "label": "", - "description": "" + "label": "Vis alle tavler", + "description": "Tillat medlemmer å se alle tavler" }, "modify-all": { - "label": "", - "description": "" + "label": "Endre alle tavler", + "description": "Tillat medlemmer å endre alle tavler (inkluderer ikke tilgangskontroll og faresone)" }, "full-all": { - "label": "", - "description": "" + "label": "Full tavle tilgang", + "description": "Tillat medlemmer å se, endre og slette alle tavler (inkludert tilgangskontroll og faresone)" } } }, "integration": { - "title": "", + "title": "Integrasjoner", "item": { "create": { - "label": "", - "description": "" + "label": "Opprett integrasjon", + "description": "Tillat medlemmer å opprette integrasjoner" }, "use-all": { - "label": "", - "description": "" + "label": "Bruke alle integrasjoner", + "description": "Tillat medlemmer å legge alle integrasjoner til tavlene sine" }, "interact-all": { - "label": "", - "description": "" + "label": "Samhandle med alle integrasjoner", + "description": "Tillat medlemmer til å samhandle med alle integrasjoner" }, "full-all": { - "label": "", - "description": "" + "label": "Full integrasjons-tilgang", + "description": "Tillat medlemmer til å bruke og samhandle med alle integrasjoner" } } }, "media": { - "title": "", + "title": "Medier", "item": { "upload": { - "label": "", - "description": "" + "label": "Last opp medier", + "description": "Tillat medlemmer å laste opp medier" }, "view-all": { - "label": "", - "description": "" + "label": "Vis alle medier", + "description": "Tillat medlemmer å se alle medier" }, "full-all": { - "label": "", - "description": "" + "label": "Full medie tilgang", + "description": "Tillat medlemmer å administrere og slette alle medier" } } }, "other": { - "title": "", + "title": "Andre", "item": { "view-logs": { - "label": "", - "description": "" + "label": "Se logger", + "description": "Tillat medlemmer å se logger" } } }, "search-engine": { - "title": "", + "title": "Søkemotorer", "item": { "create": { - "label": "", - "description": "" + "label": "Opprette søkemotorer", + "description": "Tillat medlemmer å opprette søkemotorer" }, "modify-all": { - "label": "", - "description": "" + "label": "Endre alle søkemotorer", + "description": "Tillate medlemmer til å endre alle søkemotorer" }, "full-all": { - "label": "", - "description": "" + "label": "Full søkemotor tilgang", + "description": "Tillat medlemmer å administrere og slette alle søkemotorer" } } } }, "memberNotice": { - "mixed": "", - "external": "" + "mixed": "Noen medlemmer er fra eksterne leverandører og kan ikke administreres her", + "external": "Alle medlemmer er fra eksterne leverandører og kan ikke administreres her" }, "reservedNotice": { - "message": "" + "message": "Denne gruppen er reservert for systembruk og begrenser noen handlinger. " }, "action": { "create": { - "label": "", + "label": "Ny gruppe", "notification": { "success": { - "message": "" + "message": "Gruppe opprettet" }, "error": { - "message": "" + "message": "Gruppen kunne ikke opprettes" } } }, "transfer": { - "label": "", - "description": "", - "confirm": "", + "label": "Overfør eierskap", + "description": "Overfør eierskap til denne gruppen til en annen bruker.", + "confirm": "Er du sikker på at du ønsker å overføre eierskapet til gruppen {name} til {username}?", "notification": { "success": { - "message": "" + "message": "Gruppen {group} ble vellykket overført til {user}" }, "error": { - "message": "" + "message": "Kunne ikke overføre eierskap" } } }, "addMember": { - "label": "" + "label": "Legg til medlem" }, "removeMember": { - "label": "", - "confirm": "" + "label": "Fjern medlem", + "confirm": "Er du sikker på at du vil fjerne {user} fra denne gruppen?" }, "delete": { - "label": "", - "description": "", - "confirm": "", + "label": "Slett gruppe", + "description": "Når du sletter en gruppe, er det ingen tilbakeføring. Ver sikker på at du ønsker å slette.", + "confirm": "Er du sikker på at du vil slette gruppen {name}?", "notification": { "success": { - "message": "" + "message": "Slettet gruppe {name}" }, "error": { - "message": "" + "message": "Kunne ikke slette gruppe {name}" } } }, "changePermissions": { "notification": { "success": { - "title": "", - "message": "" + "title": "Tillatelser lagret", + "message": "Tillatelsene er lagret" }, "error": { - "title": "", - "message": "" + "title": "Tillatelser ikke lagret", + "message": "Tillatelsene er ikke lagret" } } }, "update": { "notification": { "success": { - "message": "" + "message": "Gruppen {name} ble lagret" }, "error": { - "message": "" + "message": "Kunne ikke lagre gruppe {name}" } } }, "select": { - "label": "", - "notFound": "" + "label": "Velg gruppe", + "notFound": "Ingen gruppe funnet" } } }, "app": { - "search": "", + "search": "Finn en app", "page": { "list": { "title": "Apper", "noResults": { - "title": "", - "action": "" + "title": "Det er ingen apper enda", + "action": "Opprett din første app" } }, "create": { - "title": "", + "title": "Ny app", "notification": { "success": { - "title": "", - "message": "" + "title": "Opprettelse vellykket", + "message": "App opprettet" }, "error": { - "title": "", - "message": "" + "title": "Opprettelse mislyktes", + "message": "App kunne ikke opprettes" } } }, "edit": { - "title": "", + "title": "Rediger app", "notification": { "success": { - "title": "", - "message": "" + "title": "Endringer fullført", + "message": "App lagret" }, "error": { - "title": "", - "message": "" + "title": "Kunne ikke fullføre endringer", + "message": "App kunne ikke lagres" } } }, "delete": { - "title": "", - "message": "", + "title": "Slett app", + "message": "Er du sikker på at du vil slette appen {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Slettet", + "message": "App slettet" }, "error": { - "title": "", - "message": "" + "title": "Sletting feilet", + "message": "Kunne ikke slette appen" } } } @@ -554,65 +554,65 @@ "label": "Navn" }, "description": { - "label": "" + "label": "Beskrivelse" }, "url": { - "label": "" + "label": "Url" } }, "action": { "select": { - "label": "", - "notFound": "" + "label": "Velg app", + "notFound": "Ingen app funnet" } } }, "integration": { "page": { "list": { - "title": "", - "search": "", + "title": "Integrasjoner", + "search": "Søk integrasjoner", "noResults": { - "title": "" + "title": "Det er ingen integrasjoner enda" } }, "create": { - "title": "", + "title": "Ny {name} integrasjon", "notification": { "success": { - "title": "", - "message": "" + "title": "Opprettelse vellykket", + "message": "Integrasjon opprettet" }, "error": { - "title": "", - "message": "" + "title": "Opprettelse mislyktes", + "message": "Integrasjonen kunne ikke opprettes" } } }, "edit": { - "title": "", + "title": "Rediger {name} integrasjon", "notification": { "success": { - "title": "", - "message": "" + "title": "Endringer fullført", + "message": "Integrasjonen ble lagret" }, "error": { - "title": "", - "message": "" + "title": "Kunne ikke fullføre endringer", + "message": "Integrasjonen kunne ikke lagres" } } }, "delete": { - "title": "", - "message": "", + "title": "Slett integrasjon", + "message": "Er du sikker på at du vil slette integrasjonen {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Slettet", + "message": "Integrasjon slettet" }, "error": { - "title": "", - "message": "" + "title": "Sletting feilet", + "message": "Kunne ikke slette integrasjonen" } } } @@ -622,120 +622,120 @@ "label": "Navn" }, "url": { - "label": "" + "label": "Url" }, "attemptSearchEngineCreation": { - "label": "", - "description": "" + "label": "Opprett søkemotor", + "description": "Integrasjon \"{kind}\" kan brukes med søkemotorene. Huk av her for å automatisk konfigurere søkemotor." } }, "action": { - "create": "" + "create": "Ny integrasjon" }, "testConnection": { "action": { - "create": "", - "edit": "" + "create": "Test tilkobling og opprett", + "edit": "Test tilkobling og lagre" }, - "alertNotice": "", + "alertNotice": "Lagre-knappen er aktivert når en vellykket tilkobling er opprettet", "notification": { "success": { - "title": "", - "message": "" + "title": "Tilkobling vellykket", + "message": "Tilkoblingen ble opprettet" }, "invalidUrl": { "title": "Ugyldig URL", - "message": "" + "message": "URL er ugyldig" }, "secretNotDefined": { - "title": "", - "message": "" + "title": "Manglende innloggingsinformasjon", + "message": "Ikke all data ble angitt" }, "invalidCredentials": { - "title": "", - "message": "" + "title": "Ugyldig innloggingsinformasjon", + "message": "Innloggingsinformasjon er ugyldig" }, "commonError": { - "title": "", - "message": "" + "title": "Tilkobling feilet", + "message": "Tilkobling kunne ikke opprettes" }, "badRequest": { - "title": "", - "message": "" + "title": "Ugyldig forespørsel", + "message": "Forespørselen er feilformet" }, "unauthorized": { - "title": "", - "message": "" + "title": "Uautorisert", + "message": "Sannsynligvis feil innloggingsinformasjon" }, "forbidden": { - "title": "", - "message": "" + "title": "Forbudt", + "message": "Sannsynligvis manglende tillatelser" }, "notFound": { - "title": "", - "message": "" + "title": "Ikke funnet", + "message": "Sannsynligvis feil url eller bane" }, "internalServerError": { - "title": "", - "message": "" + "title": "Intern server feil", + "message": "Serveren støtte på en feil" }, "serviceUnavailable": { - "title": "", - "message": "" + "title": "Tjenesten er ikke tilgjengelig", + "message": "Serveren er for tiden utilgjengelig" }, "connectionAborted": { - "title": "", - "message": "" + "title": "Tilkobling avbrutt", + "message": "Tilkoblingen ble avbrutt" }, "domainNotFound": { - "title": "", - "message": "" + "title": "Domene ikke funnet", + "message": "Domenet kunne ikke bli funnet" }, "connectionRefused": { - "title": "", - "message": "" + "title": "Tilkobling avvist", + "message": "Tilkoblingen ble avvist" }, "invalidJson": { - "title": "", - "message": "" + "title": "Ugyldig JSON", + "message": "Svaret var ikke gyldig JSON" }, "wrongPath": { - "title": "", - "message": "" + "title": "Feil bane", + "message": "Banen er sannsynligvis ikke riktig" } } }, "secrets": { - "title": "", - "lastUpdated": "", + "title": "Hemmeligheter", + "lastUpdated": "Sist oppdatert {date}", "notSet": { - "label": "", - "tooltip": "" + "label": "Ingen verdi satt", + "tooltip": "Denne nødvendige hemmeligheten er ikke satt enda" }, - "secureNotice": "", + "secureNotice": "Denne hemmeligheten kan ikke hentes etter opprettelse", "reset": { - "title": "", - "message": "" + "title": "Tilbakestill hemmelighet", + "message": "Er du sikker på at du vil tilbakestille denne hemmeligheten?" }, "noSecretsRequired": { - "segmentTitle": "", - "text": "" + "segmentTitle": "Ingen hemmeligheter", + "text": "Ingen hemmeligheter kreves for denne integrasjonen" }, "kind": { "username": { "label": "Brukernavn", - "newLabel": "" + "newLabel": "Nytt brukernavn" }, "apiKey": { - "label": "", - "newLabel": "" + "label": "API-nøkkel", + "newLabel": "Ny API-nøkkel" }, "password": { "label": "Passord", "newLabel": "Nytt passord" }, "tokenId": { - "label": "", + "label": "Token ID", "newLabel": "" }, "realm": { @@ -869,21 +869,21 @@ "userAvatar": { "menu": { "switchToDarkMode": "", - "switchToLightMode": "", - "management": "", + "switchToLightMode": "Bytt til lys modus", + "management": "Administrasjon", "preferences": "Dine innstillinger", - "logout": "", + "logout": "Logg ut", "login": "Logg Inn", - "homeBoard": "", - "loggedOut": "", - "updateAvailable": "" + "homeBoard": "Hjem-tavlen din", + "loggedOut": "Logget ut", + "updateAvailable": "{countUpdates} oppdateringer tilgjengelig: {tag}" } }, "dangerZone": "Faresonen", "noResults": "Ingen resultater funnet", "preview": { - "show": "", - "hide": "" + "show": "Vis forhåndsvisning", + "hide": "Skjul forhåndsvisning" }, "zod": { "errors": { @@ -893,7 +893,7 @@ "startsWith": "Dette feltet må starte med {startsWith}", "endsWith": "Dette feltet må slutte med {endsWith}", "includes": "Dette feltet må inneholde {includes}", - "invalidEmail": "" + "invalidEmail": "Dette feltet må være en gyldig e-post" }, "tooSmall": { "string": "Dette feltet må være på minst {minimum} tegn", @@ -904,14 +904,14 @@ "number": "Dette feltet må være mindre enn eller lik {maximum}" }, "custom": { - "passwordsDoNotMatch": "", - "passwordRequirements": "", - "boardAlreadyExists": "", - "invalidFileType": "", - "invalidFileName": "", - "fileTooLarge": "", - "invalidConfiguration": "", - "groupNameTaken": "" + "passwordsDoNotMatch": "Passordene er ikke like", + "passwordRequirements": "Passordet oppfyller ikke kravene", + "boardAlreadyExists": "En tavle med dette navnet finnes allerede", + "invalidFileType": "Ugyldig filtype, forventet {expected}", + "invalidFileName": "Ugyldig filnavn", + "fileTooLarge": "Filen er for stor, maks størrelse er {maxSize}", + "invalidConfiguration": "Ugyldig konfigurasjon", + "groupNameTaken": "Gruppenavn allerede tatt" } } } @@ -919,12 +919,12 @@ "section": { "dynamic": { "action": { - "create": "", - "remove": "" + "create": "Ny dynamisk seksjon", + "remove": "Fjern dynamisk seksjon" }, "remove": { - "title": "", - "message": "" + "title": "Fjern dynamisk seksjon", + "message": "Er du sikker på at du vil fjerne denne dynamiske delen? Elementer vil bli flyttet til samme sted i overordnet seksjon." } }, "category": { @@ -934,29 +934,29 @@ } }, "action": { - "create": "", - "edit": "", - "remove": "", + "create": "Ny kategori", + "edit": "Endre kategorinavn", + "remove": "Fjern kategori", "moveUp": "Flytte opp", "moveDown": "Flytt ned", - "createAbove": "", - "createBelow": "" + "createAbove": "Ny kategori over", + "createBelow": "Ny kategori under" }, "create": { - "title": "", - "submit": "" + "title": "Ny kategori", + "submit": "Legg til kategori" }, "remove": { - "title": "", - "message": "" + "title": "Fjern kategori", + "message": "Er du sikker på at du vil slette kategorien {name}?" }, "edit": { - "title": "", - "submit": "" + "title": "Endre kategorinavn", + "submit": "Endre kategorinavn" }, "menu": { "label": { - "create": "", + "create": "Ny kategori", "changePosition": "Endre posisjon" } } @@ -964,12 +964,12 @@ }, "item": { "action": { - "create": "", - "import": "", - "edit": "", - "moveResize": "", - "duplicate": "", - "remove": "" + "create": "Nytt element", + "import": "Importer element", + "edit": "Rediger element", + "moveResize": "Flytt / endre størrelse element", + "duplicate": "Dupliser element", + "remove": "Slett element" }, "menu": { "label": { @@ -977,12 +977,12 @@ } }, "create": { - "title": "", - "search": "", - "addToBoard": "" + "title": "Velg element du vil legge til", + "search": "Filtrer elementer", + "addToBoard": "Legg til tavle" }, "moveResize": { - "title": "", + "title": "Flytt / endre størrelse på element", "field": { "width": { "label": "Bredde" @@ -991,25 +991,25 @@ "label": "Høyde" }, "xOffset": { - "label": "" + "label": "X forskyvning" }, "yOffset": { - "label": "" + "label": "Y forskyvning" } } }, "edit": { - "title": "", + "title": "Rediger element", "advancedOptions": { - "label": "", - "title": "" + "label": "Avanserte innstillinger", + "title": "Avanserte elementinnstillinger" }, "field": { "integrations": { - "label": "" + "label": "Integrasjoner" }, "customCssClasses": { - "label": "" + "label": "Egendefinerte css-klasser" } } }, @@ -1184,33 +1184,33 @@ "label": "" }, "dateFormat": { - "label": "", - "description": "" + "label": "Datoformat", + "description": "Hvordan datoen skal se ut" } } }, "minecraftServerStatus": { - "name": "", - "description": "", + "name": "Minecraft Server Status", + "description": "Viser statusen til en Minecraft server", "option": { "title": { - "label": "" + "label": "Tittel" }, "domain": { - "label": "" + "label": "Serveradresse" }, "isBedrockServer": { - "label": "" + "label": "Bedrock server" } }, "status": { - "online": "", - "offline": "" + "online": "Online", + "offline": "Offline" } }, "notebook": { "name": "Notisbok", - "description": "", + "description": "En enkel notatbok widget som støtter markdown", "option": { "showToolbar": { "label": "Vis verktøylinjen for å hjelpe deg med å skrive markdown" @@ -1240,7 +1240,7 @@ "checkList": "Sjekkliste", "increaseIndent": "Øk innrykk", "decreaseIndent": "Reduser innrykk", - "link": "", + "link": "Link", "unlink": "Fjern lenke", "image": "Bygg inn bilde", "addTable": "Legg til tabell", @@ -1270,7 +1270,7 @@ } }, "iframe": { - "name": "", + "name": "iFrame", "description": "Bygg inn innhold fra Internett. Noen nettsteder kan begrense adgang.", "option": { "embedUrl": { @@ -1302,13 +1302,13 @@ } }, "error": { - "noUrl": "", - "unsupportedProtocol": "", + "noUrl": "Ingen iFrame URL angitt", + "unsupportedProtocol": "URL som er oppgitt bruker en ikke-støttet protokoll. Bruk en av ({supportedProtocols})", "noBrowerSupport": "Nettleseren din støtter ikke iframes. Vennligst oppdater nettleseren din." } }, "smartHome-entityState": { - "name": "", + "name": "Enhet status", "description": "", "option": { "entityId": { diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index fa3b2551a..956a3ffa3 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -787,7 +787,7 @@ "label": "Копировать URL" }, "open": { - "label": "" + "label": "Открыть медиа" } } }, @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "Скрывать иконки" }, "hideHostname": { - "label": "" + "label": "Скрыть имена хостов" }, "openNewTab": { - "label": "" + "label": "Открывать в новой вкладке" }, "items": { "label": "Закладки", @@ -1420,8 +1420,8 @@ "name": "Мониторинг состояния системы", "description": "Отображает информацию о состоянии и работоспособности вашей системы (систем).", "tab": { - "system": "", - "cluster": "" + "system": "Система", + "cluster": "Кластер" }, "option": { "fahrenheit": { diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index 5c01cb3f2..bc6a25cd0 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -1068,13 +1068,13 @@ } }, "hideIcon": { - "label": "" + "label": "Simgeleri gizle" }, "hideHostname": { - "label": "" + "label": "Ana bilgisayar adlarını gizle" }, "openNewTab": { - "label": "" + "label": "Yeni sekmede aç" }, "items": { "label": "Yer İmleri", @@ -1420,8 +1420,8 @@ "name": "Sistem Sağlığı İzleme", "description": "Sistem(ler)inizin sağlığını ve durumunu gösteren bilgileri görüntüler.", "tab": { - "system": "", - "cluster": "" + "system": "Sistem", + "cluster": "Küme" }, "option": { "fahrenheit": { diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index 899eb60ad..16235f1e7 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -709,7 +709,7 @@ "title": "", "lastUpdated": "Останнє оновлення {date}", "notSet": { - "label": "", + "label": "Значення не вказано", "tooltip": "Обов’язковий ключ ще не був встановлений" }, "secureNotice": "Цей секрет неможливо буде побачити після створення", @@ -850,7 +850,7 @@ }, "transfer": { "success": "Передача пройшла успішно", - "error": "" + "error": "Помилка передачі" } }, "multiSelect": { @@ -863,7 +863,7 @@ "select": { "placeholder": "", "badge": { - "recommended": "" + "recommended": "Рекомендовано" } }, "userAvatar": { @@ -882,8 +882,8 @@ "dangerZone": "Небезпечна зона", "noResults": "Результатів не знайдено", "preview": { - "show": "", - "hide": "" + "show": "Показати попередній перегляд", + "hide": "Приховати попередній перегляд" }, "zod": { "errors": { @@ -893,7 +893,7 @@ "startsWith": "Це поле повинно починатися з {startsWith}", "endsWith": "Це поле повинно закінчуватися на {endsWith}", "includes": "Це поле повинно містити {includes}", - "invalidEmail": "" + "invalidEmail": "Це поле має бути дійсною електронною поштою" }, "tooSmall": { "string": "Це поле повинно мати довжину не менше {minimum} символів", @@ -909,9 +909,9 @@ "boardAlreadyExists": "Дошка з такою назвою вже існує", "invalidFileType": "", "invalidFileName": "", - "fileTooLarge": "", - "invalidConfiguration": "", - "groupNameTaken": "" + "fileTooLarge": "Файл завеликий, максимальний розмір становить {maxSize}", + "invalidConfiguration": "Невірна конфігурація", + "groupNameTaken": "Назва групи вже зайнята" } } } @@ -1009,7 +1009,7 @@ "label": "Інтеграції" }, "customCssClasses": { - "label": "" + "label": "Користувацькі css класи" } } }, @@ -1021,7 +1021,7 @@ "widget": { "app": { "name": "Додаток", - "description": "", + "description": "Вбудовує додаток до дошки.", "option": { "appId": { "label": "Виберіть додаток" @@ -1030,7 +1030,7 @@ "label": "Відкрити в новій вкладці" }, "showTitle": { - "label": "" + "label": "Показувати назву додатка" }, "showDescriptionTooltip": { "label": "" @@ -1041,7 +1041,7 @@ }, "error": { "notFound": { - "label": "", + "label": "Немає додатку", "tooltip": "Ви не обрали дійсну програму" } } @@ -1148,10 +1148,10 @@ "set": "", "enabled": "Увімкнено", "disabled": "Вимкнено", - "processing": "", + "processing": "Обробка", "disconnected": "Відключено", - "hours": "", - "minutes": "", + "hours": "Годин", + "minutes": "Хвилин", "unlimited": "" } }, @@ -1160,8 +1160,8 @@ "description": "Показує поточні дату і час.", "option": { "customTitleToggle": { - "label": "", - "description": "" + "label": "Налаштувати відображення назви міста", + "description": "Відобразити свою назву чи назву міста/країни зверху годинника." }, "customTitle": { "label": "Назва" @@ -1171,14 +1171,14 @@ "description": "Використовувати 24-годинний формат замість 12-годинного" }, "showSeconds": { - "label": "" + "label": "Показувати секунди" }, "useCustomTimezone": { - "label": "" + "label": "Використовувати фіксований часовий пояс" }, "timezone": { "label": "Часовий пояс", - "description": "" + "description": "Виберіть часовий пояс відповідно до стандарту IANA" }, "showDate": { "label": "Показувати дату" @@ -1200,7 +1200,7 @@ "label": "Адреса сервера" }, "isBedrockServer": { - "label": "" + "label": "Сервер Bedrock" } }, "status": { @@ -1225,8 +1225,8 @@ "controls": { "bold": "Жирний", "italic": "Курсив", - "strikethrough": "", - "underline": "", + "strikethrough": "Закреслений", + "underline": "Підкреслений", "colorText": "Колір тексту", "colorHighlight": "", "code": "Код", @@ -1315,7 +1315,7 @@ "label": "Ідентифікатор об'єкта" }, "displayName": { - "label": "" + "label": "Відображуване ім'я" }, "entityUnit": { "label": "" @@ -1326,8 +1326,8 @@ } }, "smartHome-executeAutomation": { - "name": "", - "description": "", + "name": "Запустити автоматизацію", + "description": "Запустити автоматизацію одним натисканням", "option": { "displayName": { "label": "Відображати ім'я" @@ -1337,7 +1337,7 @@ } }, "spotlightAction": { - "run": "" + "run": "Запустити {name}" } }, "calendar": { @@ -1353,7 +1353,7 @@ } }, "filterPastMonths": { - "label": "" + "label": "Почати з" }, "filterFutureMonths": { "label": "" @@ -1365,7 +1365,7 @@ "description": "Показує поточну інформацію про погоду в заданому місці.", "option": { "isFormatFahrenheit": { - "label": "" + "label": "Температура за Фаренгейтом" }, "location": { "label": "Погодна локація" @@ -1377,11 +1377,11 @@ "label": "Показувати прогноз погоди" }, "forecastDayCount": { - "label": "", - "description": "" + "label": "Кількість днів прогнозу", + "description": "Якщо віджет недостатньо широкий, відображається менше днів" }, "dateFormat": { - "label": "", + "label": "Формат дати", "description": "" } }, @@ -1455,15 +1455,15 @@ "minutes": "{count} хвилин(и)", "used": "Використано", "available": "Доступно", - "lastSeen": "" + "lastSeen": "Останнє оновлення статусу: {lastSeen}" }, "memory": {}, "error": { - "internalServerError": "" + "internalServerError": "Не вдалося отримати дані про стан системи" }, "cluster": { "summary": { - "cpu": "", + "cpu": "ЦП", "memory": "" }, "resource": { @@ -1477,31 +1477,31 @@ "name": "" }, "storage": { - "name": "" + "name": "Сховище" } }, "popover": { "rightSection": { "node": "", "vmId": "", - "plugin": "" + "plugin": "Плагін" }, "detail": { - "cpu": "", - "memory": "", - "storage": "", - "uptime": "", + "cpu": "Ядра", + "memory": "Пам'ять", + "storage": "Сховище", + "uptime": "Час роботи", "haState": "", "storageType": { - "local": "", - "shared": "" + "local": "Локальне сховище", + "shared": "Спільне сховище" } } }, "table": { "header": { - "name": "", - "cpu": "", + "name": "Назва", + "cpu": "ЦП", "memory": "", "node": "" } @@ -1511,8 +1511,8 @@ "common": { "location": { "query": "Місто / Поштовий індекс", - "latitude": "", - "longitude": "", + "latitude": "Широта", + "longitude": "Довгота", "disabledTooltip": "Введіть місто або поштовий індекс", "unknownLocation": "Невідоме місцерозташування", "search": "Пошук", @@ -1533,11 +1533,11 @@ }, "integration": { "noData": "Не знайдено інтеграції", - "description": "" + "description": "Натисніть для створення нової інтеграції" }, "app": { "noData": "Додаток не знайдено", - "description": "" + "description": "Натисніть щоб створити новий додаток" }, "error": { "noIntegration": "Інтеграція не вибрана", @@ -1557,15 +1557,15 @@ "description": "" }, "isMuted": { - "label": "" + "label": "Без звуку" }, "hasControls": { - "label": "" + "label": "Показати елементи керування" } }, "error": { "noUrl": "", - "forYoutubeUseIframe": "" + "forYoutubeUseIframe": "Для відео YouTube використовуйте опцію iframe" } }, "mediaServer": { @@ -1574,25 +1574,25 @@ "option": {}, "items": { "user": "Користувач", - "name": "", + "name": "Назва", "id": "Id" } }, "downloads": { - "name": "", - "description": "", + "name": "Завантаження", + "description": "Дозволяє переглядати та керувати завантаженнями від клієнтів Torrent та Usenet.", "option": { "columns": { - "label": "" + "label": "Стовпці, що відображаються" }, "enableRowSorting": { - "label": "" + "label": "Увімкнути сортування елементів" }, "defaultSort": { - "label": "" + "label": "Стовпець для сортування за замовчуванням" }, "descendingDefaultSort": { - "label": "" + "label": "Зворотнє сортування" }, "showCompletedUsenet": { "label": "" @@ -1601,7 +1601,7 @@ "label": "" }, "activeTorrentThreshold": { - "label": "" + "label": "Приховувати завершені торенти нижче за цей поріг (у КіБ/с)" }, "categoryFilter": { "label": "" @@ -1610,23 +1610,23 @@ "label": "" }, "applyFilterToRatio": { - "label": "" + "label": "Використати фільтр при розрахунку рейтингу" } }, "errors": { - "noColumns": "", - "noCommunications": "" + "noColumns": "Вибір стовпців в елементах", + "noCommunications": "Не вдалося завантажити дані з інтеграції" }, "items": { "actions": { - "columnTitle": "" + "columnTitle": "Управління" }, "added": { "columnTitle": "Додано", "detailsTitle": "Дата додавання" }, "category": { - "columnTitle": "", + "columnTitle": "Додатково", "detailsTitle": "" }, "downSpeed": { @@ -1644,7 +1644,7 @@ "columnTitle": "Інтеграція" }, "name": { - "columnTitle": "" + "columnTitle": "Назва" }, "progress": { "columnTitle": "Прогрес", @@ -1710,13 +1710,13 @@ "resume": "", "delete": { "title": "Видалити елемент", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "modalTitle": "Ви дійсно бажаєте видалити це?", + "entry": "Видалити запис", + "entryAndFiles": "Видалити запис і файл(и)" } } }, - "globalRatio": "" + "globalRatio": "Загальний рейтинг" }, "mediaRequests-requestList": { "name": "Список медіа запитів", @@ -1735,7 +1735,7 @@ "unknown": "Невідомо", "pending": "В очікуванні", "processing": "В обробці", - "partiallyAvailable": "", + "partiallyAvailable": "Частково доступно", "available": "Доступно" }, "toBeDetermined": "" @@ -1770,7 +1770,7 @@ "label": "Вигляд за замовчуванням" }, "queuePageSize": { - "label": "" + "label": "Розмір сторінки черги" } }, "tab": { @@ -1846,7 +1846,7 @@ "disabled": "" }, "dimensions": { - "title": "" + "title": "Змінити розміри" } }, "board": { @@ -1868,28 +1868,28 @@ "edit": { "notification": { "success": { - "title": "", - "message": "" + "title": "Зміни успішно застосовано", + "message": "Дошка успішно збережена" }, "error": { - "title": "", - "message": "" + "title": "Не вдалося застосувати зміни", + "message": "Не вдалося зберегти дошку" } }, "confirmLeave": { - "title": "", - "message": "" + "title": "Незбережені зміни", + "message": "У вас є незбережені зміни. Ви впевнені, що хочете вийти?" } }, "oldImport": { "label": "Імпорт з homarr до версії 1.0.0", "notification": { "success": { - "title": "", - "message": "" + "title": "Успішно імпортовано", + "message": "Дошка успішно імпортована" }, "error": { - "title": "", + "title": "Помилка імпорту", "message": "" } }, @@ -1905,16 +1905,16 @@ "description": "Ігнорує додатки, якщо додаток з таким самим посиланням вже існує" }, "onlyImportApps": { - "label": "", + "label": "Імпортувати лише додатки", "description": "" } }, "name": { - "label": "" + "label": "Назва дошки" }, "screenSize": { - "label": "", - "description": "", + "label": "Розмір екрану", + "description": "У версіях до 1.0 існувало три різні режими, тому ви могли вибрати кількість стовпців для кожного розміру екрана.", "option": { "sm": "Малий", "md": "Середній", @@ -1940,7 +1940,7 @@ }, "field": { "pageTitle": { - "label": "" + "label": "Назва сторінки" }, "metaTitle": { "label": "" @@ -1959,7 +1959,7 @@ "option": { "fixed": { "label": "", - "description": "" + "description": "Фон залишається в тому ж положенні." }, "scroll": { "label": "", @@ -2008,7 +2008,7 @@ "label": "Вторинний колір" }, "opacity": { - "label": "" + "label": "Непрозорість" }, "customCss": { "label": "", @@ -2090,22 +2090,22 @@ }, "confirm": { "public": { - "title": "", + "title": "Зробити дошку приватною", "description": "" }, "private": { "title": "", - "description": "" + "description": "Ви впевнені, що хочете зробити цю дошку публічною? Це зробить дошку доступною для всіх." } } }, "delete": { - "label": "", - "description": "", - "button": "", + "label": "Видалити цю дошку", + "description": "Як тільки ви видалите дошку, вона вже не повернеться. Будь ласка, будьте певні.", + "button": "Видалити цю дошку", "confirm": { "title": "Видалити дошку", - "description": "" + "description": "Ви впевнені, що хочете видалити цю дошку? Ця дія остаточно видалить дошку з усім її вмістом." } } } @@ -2114,33 +2114,33 @@ }, "error": { "noBoard": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "Ласкаво просимо до Homarr", + "description": "Витончена сучасна інформаційна панель, на якій усі ваші програми та служби будуть під рукою.", + "link": "Створіть свою першу дошку", + "notice": "Щоб ця сторінка зникла, створіть дошку та встановіть її як домашню" }, "notFound": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "Дошка не знайдена", + "description": "Вказана дошка або не знайдена, або Ви не маєте до неї доступу.", + "link": "Переглянути всі дошки", + "notice": "Перевірте посилання або зверніться до адміністратора, якщо вважаєте, що вона має бути доступна" }, "homeBoard": { - "title": "", + "title": "Немає домашньої дошки", "admin": { - "description": "", + "description": "Ви ще не встановили домашню дошку для сервера.", "link": "", - "notice": "" + "notice": "Щоб змусити цю сторінку зникнути для всіх користувачів, встановіть домашню плату для сервера" }, "user": { - "description": "", - "link": "", + "description": "Ви ще не встановили домашню дошку.", + "link": "Налаштуйте домашню дошку", "notice": "" }, "anonymous": { - "description": "", - "link": "", - "notice": "" + "description": "Адміністратор сервера ще не встановив домашню дошку.", + "link": "Переглянути публічні дошки", + "notice": "Щоб ця сторінка зникла, попросіть адміністратора сервера встановити домашню дошку для сервера" } } } @@ -2148,38 +2148,38 @@ "management": { "metaTitle": "", "title": { - "morning": "", - "afternoon": "", - "evening": "" + "morning": "Доброго ранку, {username}", + "afternoon": "Доброго дня, {username}", + "evening": "Доброго вечора, {username}" }, "notFound": { - "title": "", - "text": "" + "title": "Не знайдено", + "text": "Не вдалося знайти запитуваний ресурс" }, "navbar": { "items": { "home": "Головна", "boards": "Дошки", "apps": "Додатки", - "integrations": "", - "searchEngies": "", - "medias": "", + "integrations": "Інтеграції", + "searchEngies": "Пошукові системи", + "medias": "Медіа", "users": { "label": "Користувачі", "items": { "manage": "Керувати", "invites": "Запрошує", - "groups": "" + "groups": "Групи" } }, "tools": { "label": "Інструменти", "items": { - "docker": "", - "logs": "", - "api": "", - "certificates": "", - "tasks": "" + "docker": "Докер", + "logs": "Логи", + "api": "API", + "certificates": "Сертифікати", + "tasks": "Завдання" } }, "settings": "Налаштування", @@ -2201,15 +2201,15 @@ "board": "Дошки", "user": "Користувачі", "invite": "Запрошення", - "integration": "", + "integration": "Інтеграції", "app": "Додатки", - "group": "" + "group": "Групи" }, "statisticLabel": { "boards": "Дошки", - "resources": "", - "authentication": "", - "authorization": "" + "resources": "Ресурси", + "authentication": "Аутентифікація", + "authorization": "Авторизація" } }, "board": { @@ -2234,7 +2234,7 @@ "setMobileHomeBoard": { "label": "Встановити як мобільну дошку", "badge": { - "label": "", + "label": "Мобільна", "tooltip": "Ця дошка буде вашою мобільною дошкою" } }, @@ -2245,12 +2245,12 @@ "label": "Видалити назавжди", "confirm": { "title": "Видалити дошку", - "description": "" + "description": "Ви впевнені, що хочете видалити дошку {name}?" } } }, "visibility": { - "public": "", + "public": "Ця дошка є публічною", "private": "" }, "modal": { @@ -2532,12 +2532,12 @@ } }, "api": { - "title": "", + "title": "API", "modal": { "createApiToken": { - "title": "", - "description": "", - "button": "" + "title": "API токен створено", + "description": "API-токен було створено. Будьте обережні, цей токен шифрується в базі даних і більше ніколи не буде переданий вам. Якщо ви втратите цей токен, у вас більше не буде змоги отримати цей токен.", + "button": "Копіювати та закрити" } }, "tab": { @@ -2545,10 +2545,10 @@ "label": "Документація" }, "apiKey": { - "label": "", - "title": "", + "label": "Аутентифікація", + "title": "Ключі API", "button": { - "createApiToken": "" + "createApiToken": "Створити API токен" }, "table": { "header": { @@ -2583,7 +2583,7 @@ "docker": { "title": "Контейнери", "table": { - "updated": "", + "updated": "Оновлено {when}", "search": "", "selected": "" }, @@ -2600,7 +2600,7 @@ "restarting": "Перезапуск", "exited": "", "removing": "Видалення", - "dead": "" + "dead": "Несправний" } }, "containerImage": { @@ -2615,12 +2615,12 @@ "label": "Пуск", "notification": { "success": { - "title": "", - "message": "" + "title": "Контейнери запущено", + "message": "Контейнери успішно запущені" }, "error": { - "title": "", - "message": "" + "title": "Контейнери не запущено", + "message": "Не вдалося запустити контейнери" } } }, @@ -2628,12 +2628,12 @@ "label": "Зупинити", "notification": { "success": { - "title": "", - "message": "" + "title": "Контейнери зупинено", + "message": "Контейнери успішно зупинені" }, "error": { - "title": "", - "message": "" + "title": "Контейнери не зупинені", + "message": "Контейнери не вдалося зупинити" } } }, @@ -2641,12 +2641,12 @@ "label": "Перезапустити", "notification": { "success": { - "title": "", - "message": "" + "title": "Контейнери перезавантажено", + "message": "Контейнери успішно перезавантажено" }, "error": { - "title": "", - "message": "" + "title": "Контейнери не перезавантажено", + "message": "Не вдалося перезапустити контейнери" } } }, @@ -2654,42 +2654,42 @@ "label": "Видалити", "notification": { "success": { - "title": "", - "message": "" + "title": "Контейнери видалено", + "message": "Контейнери успішно видалені" }, "error": { - "title": "", - "message": "" + "title": "Контейнери не видалено", + "message": "Не вдалося видалити контейнери" } } }, "refresh": { - "label": "", + "label": "Оновити", "notification": { "success": { - "title": "", - "message": "" + "title": "Контейнери оновлено", + "message": "Зараз ви переглядаєте останні дані" }, "error": { - "title": "", - "message": "" + "title": "Контейнери не оновлено", + "message": "Під час оновлення контейнерів сталася помилка" } } }, "addToHomarr": { - "label": "", + "label": "Додати до Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "Додано до Homarr", + "message": "Обрані додатки додано до Homarr" }, "error": { - "title": "", - "message": "" + "title": "Не вдалося додати до Homarr", + "message": "Не вдалося додати обрані додатки до Homarr" } }, "modal": { - "title": "" + "title": "Додати контейнер(и) докер до Homarr" } } }, @@ -2698,7 +2698,7 @@ } }, "permission": { - "title": "", + "title": "Дозволи", "userSelect": { "title": "" }, @@ -2707,15 +2707,15 @@ }, "tab": { "user": "Користувачі", - "group": "", - "inherited": "" + "group": "Групи", + "inherited": "Унаслідувані групи" }, "field": { "user": { "label": "Користувач" }, "group": { - "label": "" + "label": "Група" }, "permission": { "label": "" @@ -2926,24 +2926,24 @@ }, "option": { "google": { - "name": "", - "description": "" + "name": "Google", + "description": "Пошук в мережі з Google" }, "bing": { - "name": "", - "description": "" + "name": "Bing", + "description": "Пошук в мережі з Bing" }, "duckduckgo": { - "name": "", - "description": "" + "name": "DuckDuckGo", + "description": "Пошук в мережі з DuckDuckGo" }, "torrent": { "name": "Torrent", "description": "" }, "youTube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Пошук відео на YouTube" } } } @@ -2973,25 +2973,25 @@ "home": { "group": { "search": { - "title": "", + "title": "Пошук", "option": { "other": { - "label": "" + "label": "Пошук за допомогою іншої пошукової системи" }, "no-default": { - "label": "", + "label": "Немає стандартної пошукової системи", "description": "" }, "search": { - "label": "" + "label": "Пошук \"{query}\" з {name}" }, "from-integration": { - "description": "" + "description": "Почніть вводити для пошуку" } } }, "local": { - "title": "" + "title": "Локальні результати" } } }, @@ -2999,7 +2999,7 @@ "help": "Пошук сторінок", "group": { "page": { - "title": "", + "title": "Сторінки", "option": { "manageHome": { "label": "" @@ -3073,21 +3073,21 @@ } }, "group": { - "title": "", + "title": "Групи", "children": { "action": { "detail": { - "label": "" + "label": "Показати деталі групи" }, "manageMember": { - "label": "" + "label": "Керувати учасниками" }, "managePermission": { - "label": "" + "label": "Керування дозволами" } }, "detail": { - "title": "" + "title": "Вибрати дію для групи" } } } @@ -3107,12 +3107,12 @@ "label": "" }, "description": { - "label": "" + "label": "Опис" } }, "page": { "list": { - "title": "", + "title": "Пошукові системи", "noResults": { "title": "", "action": "" From bbac4128eb36d934310a83087c733338ae2b9b9c Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 12:56:37 +0000 Subject: [PATCH 07/25] fix(deps): update mantine monorepo to ^7.16.2 (#2129) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 12 +- packages/form/package.json | 2 +- packages/modals-collection/package.json | 2 +- packages/modals/package.json | 4 +- packages/notifications/package.json | 2 +- packages/old-import/package.json | 4 +- packages/spotlight/package.json | 6 +- packages/ui/package.json | 6 +- packages/widgets/package.json | 4 +- pnpm-lock.yaml | 222 ++++++++++++------------ 10 files changed, 132 insertions(+), 132 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 4a2c8463e..41dc826ff 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -41,12 +41,12 @@ "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@homarr/widgets": "workspace:^0.1.0", - "@mantine/colors-generator": "^7.16.1", - "@mantine/core": "^7.16.1", - "@mantine/dropzone": "^7.16.1", - "@mantine/hooks": "^7.16.1", - "@mantine/modals": "^7.16.1", - "@mantine/tiptap": "^7.16.1", + "@mantine/colors-generator": "^7.16.2", + "@mantine/core": "^7.16.2", + "@mantine/dropzone": "^7.16.2", + "@mantine/hooks": "^7.16.2", + "@mantine/modals": "^7.16.2", + "@mantine/tiptap": "^7.16.2", "@million/lint": "1.0.14", "@t3-oss/env-nextjs": "^0.12.0", "@tabler/icons-react": "^3.29.0", diff --git a/packages/form/package.json b/packages/form/package.json index 447f82dd0..a41143d70 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,7 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.16.1" + "@mantine/form": "^7.16.2" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index 9f7a51e76..ce2f55816 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -32,7 +32,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", + "@mantine/core": "^7.16.2", "@tabler/icons-react": "^3.29.0", "dayjs": "^1.11.13", "next": "15.1.6", diff --git a/packages/modals/package.json b/packages/modals/package.json index a2a511316..024e503aa 100644 --- a/packages/modals/package.json +++ b/packages/modals/package.json @@ -24,8 +24,8 @@ "dependencies": { "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", - "@mantine/hooks": "^7.16.1", + "@mantine/core": "^7.16.2", + "@mantine/hooks": "^7.16.2", "react": "19.0.0" }, "devDependencies": { diff --git a/packages/notifications/package.json b/packages/notifications/package.json index afe7716b8..00e8eb12b 100644 --- a/packages/notifications/package.json +++ b/packages/notifications/package.json @@ -24,7 +24,7 @@ "prettier": "@homarr/prettier-config", "dependencies": { "@homarr/ui": "workspace:^0.1.0", - "@mantine/notifications": "^7.16.1", + "@mantine/notifications": "^7.16.2", "@tabler/icons-react": "^3.29.0" }, "devDependencies": { diff --git a/packages/old-import/package.json b/packages/old-import/package.json index fff06dd8e..18a8ad00c 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -37,8 +37,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", - "@mantine/hooks": "^7.16.1", + "@mantine/core": "^7.16.2", + "@mantine/hooks": "^7.16.2", "adm-zip": "0.5.16", "next": "15.1.6", "react": "19.0.0", diff --git a/packages/spotlight/package.json b/packages/spotlight/package.json index 3eb70a890..ea562d36f 100644 --- a/packages/spotlight/package.json +++ b/packages/spotlight/package.json @@ -32,9 +32,9 @@ "@homarr/modals-collection": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", - "@mantine/hooks": "^7.16.1", - "@mantine/spotlight": "^7.16.1", + "@mantine/core": "^7.16.2", + "@mantine/hooks": "^7.16.2", + "@mantine/spotlight": "^7.16.2", "@tabler/icons-react": "^3.29.0", "jotai": "^2.11.1", "next": "15.1.6", diff --git a/packages/ui/package.json b/packages/ui/package.json index a7ba35eaf..915a3c557 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -29,9 +29,9 @@ "@homarr/log": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", - "@mantine/dates": "^7.16.1", - "@mantine/hooks": "^7.16.1", + "@mantine/core": "^7.16.2", + "@mantine/dates": "^7.16.2", + "@mantine/hooks": "^7.16.2", "@tabler/icons-react": "^3.29.0", "mantine-react-table": "2.0.0-beta.8", "next": "15.1.6", diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 77b0250ca..d2f957ad4 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -40,8 +40,8 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/core": "^7.16.1", - "@mantine/hooks": "^7.16.1", + "@mantine/core": "^7.16.2", + "@mantine/hooks": "^7.16.2", "@tabler/icons-react": "^3.29.0", "@tiptap/extension-color": "2.11.3", "@tiptap/extension-highlight": "2.11.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e497b9367..de78bbb37 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -161,23 +161,23 @@ importers: specifier: workspace:^0.1.0 version: link:../../packages/widgets '@mantine/colors-generator': - specifier: ^7.16.1 - version: 7.16.1(chroma-js@3.1.2) + specifier: ^7.16.2 + version: 7.16.2(chroma-js@3.1.2) '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) '@mantine/modals': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tiptap/extension-link@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3))(@tiptap/react@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tiptap/extension-link@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3))(@tiptap/react@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@million/lint': specifier: 1.0.14 version: 1.0.14(rollup@4.21.3)(webpack-sources@3.2.3) @@ -240,7 +240,7 @@ importers: version: 2.11.1(@types/react@19.0.8)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.6 version: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1065,8 +1065,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/form': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1216,11 +1216,11 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1274,8 +1274,8 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) @@ -1314,8 +1314,8 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/notifications': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) @@ -1372,11 +1372,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) adm-zip: specifier: 0.5.16 version: 0.5.16 @@ -1612,14 +1612,14 @@ importers: specifier: workspace:^0.1.0 version: link:../ui '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) '@mantine/spotlight': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) @@ -1671,7 +1671,7 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.6 version: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1719,20 +1719,20 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': - specifier: ^7.16.1 - version: 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.6 version: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -1844,11 +1844,11 @@ importers: specifier: workspace:^0.1.0 version: link:../validation '@mantine/core': - specifier: ^7.16.1 - version: 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': - specifier: ^7.16.1 - version: 7.16.1(react@19.0.0) + specifier: ^7.16.2 + version: 7.16.2(react@19.0.0) '@tabler/icons-react': specifier: ^3.29.0 version: 3.29.0(react@19.0.0) @@ -1905,7 +1905,7 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.8 - version: 2.0.0-beta.8(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 2.0.0-beta.8(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.6 version: 15.1.6(@babel/core@7.26.0)(@playwright/test@1.49.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(sass@1.83.4) @@ -3237,79 +3237,79 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} - '@mantine/colors-generator@7.16.1': - resolution: {integrity: sha512-1xLtqUtTwPlzFdxQrzDv7DRpSRsu8yYANMHnMtKD6oW5fIr10Supjg15G2HXEHCC9OX3MY02Y7Thbx46pJjfRQ==} + '@mantine/colors-generator@7.16.2': + resolution: {integrity: sha512-IZFKqZr5bG9/otmpq3EVTmZ7JyWEUcoCTB5yHNoKxGBAP3oR92K0sDGwPmiLrOSbLi1joUJ4YhCouUOSmEP39Q==} peerDependencies: chroma-js: '>=2.4.2' - '@mantine/core@7.16.1': - resolution: {integrity: sha512-HYdjCeMU3dUJbc1CrAAedeAASTG5kVyL/qsiuYh5b7BoG0qsRtK8WJxBpUjW6VqtJpUaE94c5tlBJ8MgAmPHTQ==} + '@mantine/core@7.16.2': + resolution: {integrity: sha512-6dwFz+8HrOqFan7GezgpoWyZSCxedh10S8iILGVsc3GXiD4gzo+3VZndZKccktkYZ3GVC9E3cCS3SxbiyKSAVw==} peerDependencies: - '@mantine/hooks': 7.16.1 + '@mantine/hooks': 7.16.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dates@7.16.1': - resolution: {integrity: sha512-d6ErRBaTBHd3KK4pBWPx+KuX+xBY1vTRMw0ckiqAbbek7D02OIKrgT1Rwz0NLrEVh8gqFbUVBSKZYQtePYR4pw==} + '@mantine/dates@7.16.2': + resolution: {integrity: sha512-TmAEqMwC1wKpQnxgfDQK7Ao3p9SdSAYbm2orN9wqzDiqZI9NGepWMa1VJWfykDu4XAkVIjjznAdLOzXpuXhouQ==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 dayjs: '>=1.0.0' react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/dropzone@7.16.1': - resolution: {integrity: sha512-5lQsy2JScvaWq87fOrD2QNvlVzCErQE9nzjNdADAH9u/34fLIgGE0v5MBbVdVPI+wYxrPAwW4hahEKSa5LelXA==} + '@mantine/dropzone@7.16.2': + resolution: {integrity: sha512-iRZJI/zzRrsSES+dVdqHInXnuxHQ6a7YPBwIP1Td9pBdaVHqF6Nvd/I2OVQSYhseYTxFT5ythdw32wFeCgpRSg==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/form@7.16.1': - resolution: {integrity: sha512-SZfOlmO14oAYdqo3SJKJlPrSNaeWyTPIPV/cur/4sPf114cAyggEZHoHJEjy2yA8UccfwYZx39yWrwxQCb8J8w==} + '@mantine/form@7.16.2': + resolution: {integrity: sha512-JZkLbZ7xWAZndPrxObkf10gjHj57x8yvI/vobjDhfWN3zFPTSWmSSF6yBE1FpITseOs3oR03hlkqG6EclK6g+g==} peerDependencies: react: ^18.x || ^19.x - '@mantine/hooks@7.16.1': - resolution: {integrity: sha512-+hER8E4d2ByfQ/DKIXGM3Euxb7IH5ArSjzzzoF21sG095iXIryOCob22ZanrmiXCoAzKKdxqgVj4Di67ikLYSQ==} + '@mantine/hooks@7.16.2': + resolution: {integrity: sha512-ZFHQhDi9T+r6VR5NEeE47gigPPIAHVIKDOCWsCsbCqHc3yz5l8kiO2RdfUmsTKV2KD/AiXnAw4b6pjQEP58GOg==} peerDependencies: react: ^18.x || ^19.x - '@mantine/modals@7.16.1': - resolution: {integrity: sha512-kr5CgA/PKBgQ1yvXYauLYss20dkzYwgm+o+MKPeJ+bzJaHn6MkRhvXu4DnIurc8bUPKqDs6tUnLESRpUGv7bNQ==} + '@mantine/modals@7.16.2': + resolution: {integrity: sha512-REwAV53Fcz021EE3zLyYdkdFlfG+b24y279Y+eA1jCCH9VMLivXL+gacrox4BcpzREsic9nGVInSNv3VJwPlAQ==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/notifications@7.16.1': - resolution: {integrity: sha512-kCYbuanL+y/VZ0UqgE0fpQcpTznWHwLEOw4waMXHyig6z4AEEB45U3iFpBtuSXpuFjfqH0corMaaWkAVocwj2Q==} + '@mantine/notifications@7.16.2': + resolution: {integrity: sha512-U342XWiiRI1NvOlLsI6PH/pSNe0rxNClJ2w5orvjOMXvaAfDe52mhnzRmtzRxYENp06++3b/G7MjPH+466rF9Q==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/spotlight@7.16.1': - resolution: {integrity: sha512-Lb1bc8Gfhm7fUCU+odebukeUyDsMvLSWrBKJjCg+IXQojUaxUAMXHPhrvmHqhOqDaRTUZw1zusodW+kKnFjoPg==} + '@mantine/spotlight@7.16.2': + resolution: {integrity: sha512-KJwnewO9f150X0eTdOfjaKfbBZ6yoRtqQtcx0TyOVSHMTKaNwRfL/T9/kgvLMo5kSKFjOsNHAqQmNm4Nidnn0A==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 react: ^18.x || ^19.x react-dom: ^18.x || ^19.x - '@mantine/store@7.16.1': - resolution: {integrity: sha512-EZjNzsLPWXB5MgBDa5FUEg5vbN+uo3hctSgplC7kkimjW7K3qfMiszwTt8cQgb7RRn7xH5sfC3U0Cm8X9h4kmA==} + '@mantine/store@7.16.2': + resolution: {integrity: sha512-9dEGLosrYSePlAwhfx3CxTLcWu2M98TtuYnelAiHEdNEkyafirvZxNt4paMoFXLKR1XPm5wdjDK7bdTaE0t7Og==} peerDependencies: react: ^18.x || ^19.x - '@mantine/tiptap@7.16.1': - resolution: {integrity: sha512-sHmmE42OocJtz7kFOCC+nSzRuOLxJNR4OAuAs/Ev3F8vqpiX8+Dt6moNowJ0sqKqEPwxzWQ18qPVrx6IKTRl5A==} + '@mantine/tiptap@7.16.2': + resolution: {integrity: sha512-a5SPQR6rTT/OCs9N4iOS30LZsEX416z06R3tcnVP8wpULfdiXe42g719j2NsRqSRKm4I0zkDsby1FixXqeL+KA==} peerDependencies: - '@mantine/core': 7.16.1 - '@mantine/hooks': 7.16.1 + '@mantine/core': 7.16.2 + '@mantine/hooks': 7.16.2 '@tiptap/extension-link': '>=2.1.12' '@tiptap/react': '>=2.1.12' react: ^18.x || ^19.x @@ -10833,14 +10833,14 @@ snapshots: js-base64: 3.7.7 optional: true - '@mantine/colors-generator@7.16.1(chroma-js@3.1.2)': + '@mantine/colors-generator@7.16.2(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@floating-ui/react': 0.26.28(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) clsx: 2.1.1 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -10851,65 +10851,65 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) clsx: 2.1.1 dayjs: 1.11.13 react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/dropzone@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-dropzone-esm: 15.2.0(react@19.0.0) - '@mantine/form@7.16.1(react@19.0.0)': + '@mantine/form@7.16.2(react@19.0.0)': dependencies: fast-deep-equal: 3.1.3 klona: 2.0.6 react: 19.0.0 - '@mantine/hooks@7.16.1(react@19.0.0)': + '@mantine/hooks@7.16.2(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/modals@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) - '@mantine/store': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) + '@mantine/store': 7.16.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-transition-group: 4.4.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/spotlight@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) - '@mantine/store': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) + '@mantine/store': 7.16.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/store@7.16.1(react@19.0.0)': + '@mantine/store@7.16.2(react@19.0.0)': dependencies: react: 19.0.0 - '@mantine/tiptap@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tiptap/extension-link@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3))(@tiptap/react@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/tiptap@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tiptap/extension-link@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3))(@tiptap/react@2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) '@tiptap/extension-link': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3) '@tiptap/react': 2.11.3(@tiptap/core@2.11.3(@tiptap/pm@2.11.3))(@tiptap/pm@2.11.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: 19.0.0 @@ -15573,11 +15573,11 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.8(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + mantine-react-table@2.0.0-beta.8(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(@tabler/icons-react@3.29.0(react@19.0.0))(clsx@2.1.1)(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - '@mantine/core': 7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.16.1(@mantine/core@7.16.1(@mantine/hooks@7.16.1(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.1(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/hooks': 7.16.1(react@19.0.0) + '@mantine/core': 7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.16.2(@mantine/core@7.16.2(@mantine/hooks@7.16.2(react@19.0.0))(@types/react@19.0.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.16.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.16.2(react@19.0.0) '@tabler/icons-react': 3.29.0(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 '@tanstack/react-table': 8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) From ecbd2d14da0f368564e89061d810e3af686ea798 Mon Sep 17 00:00:00 2001 From: "homarr-renovate[bot]" <158783068+homarr-renovate[bot]@users.noreply.github.com> Date: Sun, 26 Jan 2025 13:08:59 +0000 Subject: [PATCH 08/25] chore(deps): update dependency @types/swagger-ui-react to ^4.19.0 (#2127) Co-authored-by: homarr-renovate[bot] <158783068+homarr-renovate[bot]@users.noreply.github.com> --- apps/nextjs/package.json | 2 +- pnpm-lock.yaml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 41dc826ff..4c53e9293 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -89,7 +89,7 @@ "@types/prismjs": "^1.26.5", "@types/react": "19.0.8", "@types/react-dom": "19.0.3", - "@types/swagger-ui-react": "^4.18.3", + "@types/swagger-ui-react": "^4.19.0", "concurrently": "^9.1.2", "eslint": "^9.19.0", "node-loader": "^2.1.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de78bbb37..0c87614c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -300,8 +300,8 @@ importers: specifier: 19.0.3 version: 19.0.3(@types/react@19.0.8) '@types/swagger-ui-react': - specifier: ^4.18.3 - version: 4.18.3 + specifier: ^4.19.0 + version: 4.19.0 concurrently: specifier: ^9.1.2 version: 9.1.2 @@ -4449,8 +4449,8 @@ packages: '@types/ssh2@1.15.1': resolution: {integrity: sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==} - '@types/swagger-ui-react@4.18.3': - resolution: {integrity: sha512-Mo/R7IjDVwtiFPs84pWvh5pI9iyNGBjmfielxqbOh2Jv+8WVSDVe8Nu25kb5BOuV2xmGS3o33jr6nwDJMBcX+Q==} + '@types/swagger-ui-react@4.19.0': + resolution: {integrity: sha512-uScp1xkLZJej0bt3/lO4U11ywWEBnI5CFCR0tqp+5Rvxl1Mj1v6VkGED0W70jJwqlBvbD+/a6bDiK8rjepCr8g==} '@types/through@0.0.33': resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} @@ -12387,7 +12387,7 @@ snapshots: dependencies: '@types/node': 18.19.50 - '@types/swagger-ui-react@4.18.3': + '@types/swagger-ui-react@4.19.0': dependencies: '@types/react': 19.0.8 From 57b523fa805de56d8795169a535e5e45d7c22ad7 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:24:50 +0100 Subject: [PATCH 09/25] fix: split up proxmox secrets are incorrectly migrated (#2124) --- .../old-import/src/mappers/map-integration.ts | 78 ++++++++++++++++--- .../src/mappers/test/map-integration.spec.ts | 46 +++++++++++ 2 files changed, 114 insertions(+), 10 deletions(-) create mode 100644 packages/old-import/src/mappers/test/map-integration.spec.ts diff --git a/packages/old-import/src/mappers/map-integration.ts b/packages/old-import/src/mappers/map-integration.ts index 43c678302..8c24c2adf 100644 --- a/packages/old-import/src/mappers/map-integration.ts +++ b/packages/old-import/src/mappers/map-integration.ts @@ -44,17 +44,75 @@ export const mapAndDecryptIntegrations = ( return []; } + return preparedIntegrations.map(({ type, name, url, properties }) => { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const kind = mapIntegrationType(type!); + + return { + id: createId(), + name, + url, + kind, + secrets: mapSecrets(properties, encryptionToken, kind), + }; + }); +}; + +const mapSecrets = (properties: PreparedIntegration["properties"], encryptionToken: string, kind: IntegrationKind) => { const key = Buffer.from(encryptionToken, "hex"); - return preparedIntegrations.map(({ type, name, url, properties }) => ({ - id: createId(), - name, - url, - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - kind: mapIntegrationType(type!), - secrets: properties.map((property) => ({ - ...property, - value: property.value ? decryptSecretWithKey(property.value as `${string}.${string}`, key) : null, - })), + const decryptedProperties = properties.map((property) => ({ + ...property, + value: property.value ? decryptSecretWithKey(property.value as `${string}.${string}`, key) : null, })); + + return kind === "proxmox" ? mapProxmoxSecrets(decryptedProperties) : decryptedProperties; +}; + +/** + * Proxmox secrets have bee split up from format `user@realm!tokenId=secret` to separate fields + */ +const mapProxmoxSecrets = (decryptedProperties: PreparedIntegration["properties"]) => { + const apiToken = decryptedProperties.find((property) => property.field === "apiKey"); + + if (!apiToken?.value) return []; + + let splitValues = apiToken.value.split("@"); + + if (splitValues.length <= 1) return []; + + const [user, ...rest] = splitValues; + + splitValues = rest.join("@").split("!"); + + if (splitValues.length <= 1) return []; + + const [realm, ...rest2] = splitValues; + + splitValues = rest2.join("!").split("="); + + if (splitValues.length <= 1) return []; + + const [tokenId, ...rest3] = splitValues; + + const secret = rest3.join("="); + + return [ + { + field: "username" as const, + value: user, + }, + { + field: "realm" as const, + value: realm, + }, + { + field: "tokenId" as const, + value: tokenId, + }, + { + field: "apiKey" as const, + value: secret, + }, + ]; }; diff --git a/packages/old-import/src/mappers/test/map-integration.spec.ts b/packages/old-import/src/mappers/test/map-integration.spec.ts new file mode 100644 index 000000000..976da6126 --- /dev/null +++ b/packages/old-import/src/mappers/test/map-integration.spec.ts @@ -0,0 +1,46 @@ +import { describe, expect, test, vi } from "vitest"; + +import * as commonServer from "@homarr/common/server"; + +import type { PreparedIntegration } from "../../prepare/prepare-integrations"; +import { mapAndDecryptIntegrations } from "../map-integration"; + +describe("Map Integrations", () => { + test("should map proxmox integration", () => { + vi.spyOn(commonServer, "decryptSecretWithKey").mockReturnValue("user@realm!tokenId=secret"); + + const proxmoxIntegration: PreparedIntegration = { + type: "proxmox", + name: "Proxmox", + url: "https://proxmox.com", + properties: [ + { + field: "apiKey", + value: "any-encrypted-value", + type: "private", + }, + ], + }; + + const mappedIntegrations = mapAndDecryptIntegrations([proxmoxIntegration], "encryptionToken"); + + expect(mappedIntegrations[0]?.secrets).toEqual([ + { + field: "username", + value: "user", + }, + { + field: "realm", + value: "realm", + }, + { + field: "tokenId", + value: "tokenId", + }, + { + field: "apiKey", + value: "secret", + }, + ]); + }); +}); From 2bb44e16669f94d3d7500e828b1ab66b98c54bc7 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:25:04 +0100 Subject: [PATCH 10/25] fix: bookmarks show unauthorized when not logged in (#2123) --- packages/api/src/router/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 43cc24031..3d651b6ca 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -102,7 +102,7 @@ export const appRouter = createTRPCRouter({ return app; }), - byIds: protectedProcedure.input(z.array(z.string())).query(async ({ ctx, input }) => { + byIds: publicProcedure.input(z.array(z.string())).query(async ({ ctx, input }) => { return await ctx.db.query.apps.findMany({ where: inArray(apps.id, input), }); From b38de29a882ce26a9326f7f65403ea3916a58cac Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:25:57 +0100 Subject: [PATCH 11/25] fix: app url not required (#2130) --- apps/nextjs/src/app/[locale]/manage/apps/_form.tsx | 10 +++++----- packages/validation/src/app.ts | 14 +++++++++++--- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx index 2cf9bf9b3..9ec5b92d1 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx @@ -25,11 +25,11 @@ export const AppForm = (props: AppFormProps) => { const t = useI18n(); const form = useZodForm(validation.app.manage, { - initialValues: initialValues ?? { - name: "", - description: "", - iconUrl: "", - href: "", + initialValues: { + name: initialValues?.name ?? "", + description: initialValues?.description ?? "", + iconUrl: initialValues?.iconUrl ?? "", + href: initialValues?.href ?? "", }, }); diff --git a/packages/validation/src/app.ts b/packages/validation/src/app.ts index dfe1a749a..b8b73e35a 100644 --- a/packages/validation/src/app.ts +++ b/packages/validation/src/app.ts @@ -1,13 +1,21 @@ import { z } from "zod"; const manageAppSchema = z.object({ - name: z.string().min(1).max(64), - description: z.string().max(512).nullable(), - iconUrl: z.string().min(1), + name: z.string().trim().min(1).max(64), + description: z + .string() + .trim() + .max(512) + .transform((value) => (value.length === 0 ? null : value)) + .nullable(), + iconUrl: z.string().trim().min(1), href: z .string() + .trim() .url() .regex(/^https?:\/\//) // Only allow http and https for security reasons (javascript: is not allowed) + .or(z.literal("")) + .transform((value) => (value.length === 0 ? null : value)) .nullable(), }); From dd2ca1300422a6ad477089efe905901515eebaf6 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:26:08 +0100 Subject: [PATCH 12/25] fix: multi-text-input not saving on blur (#2128) --- .../src/_inputs/widget-multi-text-input.tsx | 25 ++++++++++++------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/widgets/src/_inputs/widget-multi-text-input.tsx b/packages/widgets/src/_inputs/widget-multi-text-input.tsx index 9d1e9113f..864f200b5 100644 --- a/packages/widgets/src/_inputs/widget-multi-text-input.tsx +++ b/packages/widgets/src/_inputs/widget-multi-text-input.tsx @@ -49,6 +49,17 @@ export const WidgetMultiTextInput = ({ property, kind, options }: CommonWidgetIn return null; }, [currentValidationResult, search]); + const handleAddSearch = () => { + if (search.length === 0 || !currentValidationResult.success) { + return; + } + if (values.includes(search)) { + return; + } + onChange([...values, search]); + setSearch(""); + }; + return ( @@ -68,7 +79,10 @@ export const WidgetMultiTextInput = ({ property, kind, options }: CommonWidgetIn combobox.openDropdown()} - onBlur={() => combobox.closeDropdown()} + onBlur={() => { + handleAddSearch(); + combobox.closeDropdown(); + }} value={search} placeholder={tCommon("multiText.placeholder")} onChange={(event) => { @@ -81,14 +95,7 @@ export const WidgetMultiTextInput = ({ property, kind, options }: CommonWidgetIn onChange(values.slice(0, -1)); } else if (event.key === "Enter") { event.preventDefault(); - if (search.length === 0 || !currentValidationResult.success) { - return; - } - if (values.includes(search)) { - return; - } - onChange([...values, search]); - setSearch(""); + handleAddSearch(); } }} /> From af1f8eaf76062a9fde5570097fc6a75742174d97 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:26:21 +0100 Subject: [PATCH 13/25] fix: websocket is not keep alive (#2131) --- apps/websocket/src/main.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/apps/websocket/src/main.ts b/apps/websocket/src/main.ts index ee742c58c..f819c3dff 100644 --- a/apps/websocket/src/main.ts +++ b/apps/websocket/src/main.ts @@ -39,6 +39,14 @@ const handler = applyWSSHandler({ }); } }, + // Enable heartbeat messages to keep connection open (disabled by default) + keepAlive: { + enabled: true, + // server ping message interval in milliseconds + pingMs: 30000, + // connection is terminated if pong message is not received in this many milliseconds + pongWaitMs: 5000, + }, }); wss.on("connection", (websocket, incomingMessage) => { From 1146c59a41ddd4b4cda14f6601437cd9bceb305a Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 21:26:42 +0100 Subject: [PATCH 14/25] feat: add opacity for categories (#2132) --- .../src/components/board/sections/category-section.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/nextjs/src/components/board/sections/category-section.tsx b/apps/nextjs/src/components/board/sections/category-section.tsx index edd863671..31a3ff109 100644 --- a/apps/nextjs/src/components/board/sections/category-section.tsx +++ b/apps/nextjs/src/components/board/sections/category-section.tsx @@ -3,8 +3,10 @@ import { useDisclosure } from "@mantine/hooks"; import { IconChevronDown, IconChevronUp } from "@tabler/icons-react"; import type { CategorySection } from "~/app/[locale]/boards/_types"; +import { useRequiredBoard } from "~/app/[locale]/boards/(content)/_context"; import { CategoryMenu } from "./category/category-menu"; import { GridStack } from "./gridstack/gridstack"; +import classes from "./item.module.css"; interface Props { section: CategorySection; @@ -12,9 +14,10 @@ interface Props { export const BoardCategorySection = ({ section }: Props) => { const [opened, { toggle }] = useDisclosure(false); + const board = useRequiredBoard(); return ( - + From c43a2f04880f7f1423ac5d3b0bb48b349179d570 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 22:16:27 +0100 Subject: [PATCH 15/25] refactor: move zod import from validation package to zod (#2111) * refactor: move zod import from validation package to zod * refactor: move missing zod imports --- apps/nextjs/package.json | 3 ++- .../auth/invite/[id]/_registration-form.tsx | 2 +- .../app/[locale]/auth/login/_login-form.tsx | 3 ++- .../[locale]/init/_steps/group/init-group.tsx | 2 +- .../init/_steps/settings/init-settings.tsx | 2 +- .../init/_steps/user/init-user-form.tsx | 2 +- .../src/app/[locale]/manage/apps/_form.tsx | 2 +- .../manage/apps/edit/[id]/_app-edit-form.tsx | 3 ++- .../manage/apps/new/_app-new-form.tsx | 3 ++- .../src/app/[locale]/manage/apps/page.tsx | 2 +- .../edit/[id]/_integration-edit-form.tsx | 2 +- .../new/_integration-new-form.tsx | 2 +- .../[locale]/manage/integrations/new/page.tsx | 2 +- .../src/app/[locale]/manage/medias/page.tsx | 2 +- .../[locale]/manage/search-engines/_form.tsx | 2 +- .../edit/[id]/_search-engine-edit-form.tsx | 3 ++- .../new/_search-engine-new-form.tsx | 3 ++- .../[locale]/manage/search-engines/page.tsx | 2 +- .../_components/add-certificate.tsx | 3 ++- .../_change-default-search-engine.tsx | 2 +- .../_components/_change-home-board.tsx | 2 +- .../_components/_first-day-of-week.tsx | 2 +- .../_components/_ping-icons-enabled.tsx | 2 +- .../_components/create-user-stepper.tsx | 3 ++- .../app/[locale]/manage/users/groups/page.tsx | 2 +- .../board/items/item-move-modal.tsx | 2 +- .../board/modals/board-rename-modal.tsx | 2 +- .../sections/category/category-edit-modal.tsx | 2 +- packages/api/package.json | 3 ++- packages/api/src/middlewares/integration.ts | 2 +- packages/api/src/middlewares/item.ts | 2 +- packages/api/src/router/app.ts | 3 ++- packages/api/src/router/board.ts | 3 ++- .../api/src/router/docker/docker-router.ts | 2 +- packages/api/src/router/group.ts | 3 ++- .../api/src/router/import/import-router.ts | 3 ++- .../router/integration/integration-router.ts | 3 ++- packages/api/src/router/invite.ts | 2 +- packages/api/src/router/location.ts | 3 ++- .../api/src/router/medias/media-router.ts | 3 ++- .../api/src/router/onboard/onboard-router.ts | 4 +++- .../search-engine/search-engine-router.ts | 3 ++- packages/api/src/router/serverSettings.ts | 4 +++- packages/api/src/router/user.ts | 3 ++- packages/api/src/router/widgets/app.ts | 2 +- packages/api/src/router/widgets/calendar.ts | 3 ++- packages/api/src/router/widgets/downloads.ts | 2 +- .../api/src/router/widgets/media-requests.ts | 2 +- packages/api/src/router/widgets/notebook.ts | 2 +- packages/api/src/router/widgets/rssFeed.ts | 3 ++- packages/api/src/router/widgets/smart-home.ts | 2 +- packages/api/src/schema-merger.ts | 4 ++-- packages/api/src/trpc.ts | 2 +- packages/auth/package.json | 3 ++- .../authorization/basic-authorization.ts | 3 ++- .../authorization/ldap-authorization.ts | 2 +- packages/auth/test/session.spec.ts | 3 +-- packages/form/package.json | 3 ++- packages/form/src/index.ts | 4 ++-- packages/form/src/messages.ts | 5 +++-- packages/integrations/package.json | 3 ++- .../src/adguard-home/adguard-home-types.ts | 2 +- packages/integrations/src/base/integration.ts | 2 +- .../src/base/test-connection-error.ts | 3 ++- .../src/dashdot/dashdot-integration.ts | 2 +- .../download-client/sabnzbd/sabnzbd-schema.ts | 2 +- .../src/homeassistant/homeassistant-types.ts | 2 +- .../downloads/download-client-items.ts | 3 ++- .../lidarr/lidarr-integration.ts | 3 ++- .../radarr/radarr-integration.ts | 3 ++- .../readarr/readarr-integration.ts | 3 ++- .../sonarr/sonarr-integration.ts | 3 ++- .../media-transcoding/tdarr-integration.ts | 3 ++- .../tdarr-validation-schemas.ts | 2 +- .../src/overseerr/overseerr-integration.ts | 3 ++- .../integrations/src/pi-hole/pi-hole-types.ts | 2 +- .../src/prowlarr/prowlarr-types.ts | 2 +- packages/modals-collection/package.json | 3 ++- .../src/boards/import-board-modal.tsx | 2 +- .../src/docker/add-docker-app-to-homarr.tsx | 2 +- packages/validation/index.ts | 1 - packages/widgets/package.json | 3 ++- packages/widgets/src/calendar/index.ts | 2 +- packages/widgets/src/downloads/index.ts | 2 +- .../widgets/src/media-transcoding/index.ts | 3 +-- .../src/minecraft/server-status/index.ts | 3 +-- .../widgets/src/modals/widget-edit-modal.tsx | 2 +- packages/widgets/src/options.ts | 4 ++-- packages/widgets/src/rssFeed/index.ts | 3 +-- packages/widgets/src/weather/index.ts | 3 +-- pnpm-lock.yaml | 21 +++++++++++++++++++ 91 files changed, 153 insertions(+), 99 deletions(-) diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 4c53e9293..21f9616a7 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -78,7 +78,8 @@ "sass": "^1.83.4", "superjson": "2.2.2", "swagger-ui-react": "^5.18.2", - "use-deep-compare-effect": "^1.8.1" + "use-deep-compare-effect": "^1.8.1", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx index 4c86fa61b..3f2689234 100644 --- a/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/invite/[id]/_registration-form.tsx @@ -2,13 +2,13 @@ import { useRouter } from "next/navigation"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput } from "@homarr/ui"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface RegistrationFormProps { diff --git a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx index f4ce00f67..6a013101f 100644 --- a/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx +++ b/apps/nextjs/src/app/[locale]/auth/login/_login-form.tsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { useRouter } from "next/navigation"; import { Anchor, Button, Card, Code, Collapse, Divider, PasswordInput, Stack, Text, TextInput } from "@mantine/core"; import { useDisclosure } from "@mantine/hooks"; +import { z } from "zod"; import { signIn } from "@homarr/auth/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -12,7 +13,7 @@ import type { useForm } from "@homarr/form"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; interface LoginFormProps { providers: string[]; diff --git a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx index 93839a457..849891220 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/group/init-group.tsx @@ -2,12 +2,12 @@ import { Button, Card, Stack, TextInput } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitGroup = () => { diff --git a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx index 90e8c7a8d..3d40a4445 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/settings/init-settings.tsx @@ -3,6 +3,7 @@ import { startTransition } from "react"; import { Button, Card, Group, Stack, Switch, Text } from "@mantine/core"; import { IconArrowRight } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -11,7 +12,6 @@ import type { CheckboxProps } from "@homarr/form/types"; import { defaultServerSettings } from "@homarr/server-settings"; import type { TranslationObject } from "@homarr/translation"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitSettings = () => { diff --git a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx index 2dcfac8f1..e094ce4ce 100644 --- a/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx +++ b/apps/nextjs/src/app/[locale]/init/_steps/user/init-user-form.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, PasswordInput, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -8,7 +9,6 @@ import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput } from "@homarr/ui"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; export const InitUserForm = () => { diff --git a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx index 9ec5b92d1..75d75e472 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/_form.tsx @@ -2,11 +2,11 @@ import Link from "next/link"; import { Button, Group, Stack, Textarea, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { useZodForm } from "@homarr/form"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IconPicker } from "~/components/icons/picker/icon-picker"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx index 9c34c160a..69df2bcb4 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/edit/[id]/_app-edit-form.tsx @@ -2,6 +2,7 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -9,7 +10,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { AppForm } from "../../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx index 42a9ea40f..d78f6bba5 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/new/_app-new-form.tsx @@ -2,13 +2,14 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { AppForm } from "../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx index 5193166f3..c53f5e19f 100644 --- a/apps/nextjs/src/app/[locale]/manage/apps/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/apps/page.tsx @@ -2,6 +2,7 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconBox, IconPencil } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -9,7 +10,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx index 867689b7e..b1b053e23 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/edit/[id]/_integration-edit-form.tsx @@ -3,6 +3,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { Button, Fieldset, Group, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -13,7 +14,6 @@ import { convertIntegrationTestConnectionError } from "@homarr/integrations/clie import { useConfirmModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { SecretCard } from "../../_components/secrets/integration-secret-card"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx index a223e3bfc..5b11392a2 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/_integration-new-form.tsx @@ -5,6 +5,7 @@ import Link from "next/link"; import { useRouter } from "next/navigation"; import { Alert, Button, Checkbox, Fieldset, Group, SegmentedControl, Stack, Text, TextInput } from "@mantine/core"; import { IconInfoCircle } from "@tabler/icons-react"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -15,7 +16,6 @@ import { useZodForm } from "@homarr/form"; import { convertIntegrationTestConnectionError } from "@homarr/integrations/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IntegrationSecretInput } from "../_components/secrets/integration-secret-inputs"; diff --git a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx index 4237c1422..dba8e5c1f 100644 --- a/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/integrations/new/page.tsx @@ -1,5 +1,6 @@ import { notFound } from "next/navigation"; import { Container, Group, Stack, Title } from "@mantine/core"; +import { z } from "zod"; import { auth } from "@homarr/auth/next"; import type { IntegrationKind } from "@homarr/definitions"; @@ -7,7 +8,6 @@ import { getIntegrationName, integrationKinds } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; import { IntegrationAvatar } from "@homarr/ui"; import type { validation } from "@homarr/validation"; -import { z } from "@homarr/validation"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; import { NewIntegrationForm } from "./_integration-new-form"; diff --git a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx index e5c9b98e1..3883fcb24 100644 --- a/apps/nextjs/src/app/[locale]/manage/medias/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/medias/page.tsx @@ -16,6 +16,7 @@ import { Tooltip, } from "@mantine/core"; import { IconExternalLink } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -25,7 +26,6 @@ import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { createLocalImageUrl } from "@homarr/icons/local"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatar } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx index 4db3ba01a..9fa71510b 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/_form.tsx @@ -4,13 +4,13 @@ import Link from "next/link"; import type { SegmentedControlItem } from "@mantine/core"; import { Button, Fieldset, Grid, Group, SegmentedControl, Stack, Textarea, TextInput } from "@mantine/core"; import { WidgetIntegrationSelect } from "node_modules/@homarr/widgets/src/widget-integration-select"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { searchEngineTypes } from "@homarr/definitions"; import { useZodForm } from "@homarr/form"; import type { TranslationFunction } from "@homarr/translation"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { IconPicker } from "~/components/icons/picker/icon-picker"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx index 93782e597..cc4c1eb79 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/edit/[id]/_search-engine-edit-form.tsx @@ -2,6 +2,7 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -9,7 +10,7 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { SearchEngineForm } from "../../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx index 59fe95ccd..b5824d3c1 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/new/_search-engine-new-form.tsx @@ -2,13 +2,14 @@ import { useCallback } from "react"; import { useRouter } from "next/navigation"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import type { TranslationFunction } from "@homarr/translation"; import { useScopedI18n } from "@homarr/translation/client"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; import { SearchEngineForm } from "../_form"; diff --git a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx index 8caeefbe7..0ecfa0cec 100644 --- a/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/search-engines/page.tsx @@ -2,6 +2,7 @@ import Link from "next/link"; import { redirect } from "next/navigation"; import { ActionIcon, ActionIconGroup, Anchor, Avatar, Card, Group, Stack, Text, Title } from "@mantine/core"; import { IconPencil, IconSearch } from "@tabler/icons-react"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -9,7 +10,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n, getScopedI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { MobileAffixButton } from "~/components/manage/mobile-affix-button"; diff --git a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx index 312abdffb..87aaa058f 100644 --- a/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx +++ b/apps/nextjs/src/app/[locale]/manage/tools/certificates/_components/add-certificate.tsx @@ -2,6 +2,7 @@ import { Button, FileInput, Group, Stack } from "@mantine/core"; import { IconCertificate } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -9,7 +10,7 @@ import { useZodForm } from "@homarr/form"; import { createModal, useModalAction } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import { superRefineCertificateFile, z } from "@homarr/validation"; +import { superRefineCertificateFile } from "@homarr/validation"; export const AddCertificateButton = () => { const { openModal } = useModalAction(AddCertificateModal); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx index 367fa4098..952014acb 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Select, Stack } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface ChangeDefaultSearchEngineFormProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx index 7a5b58817..9dc3a6491 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-home-board.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Select, Stack } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface ChangeHomeBoardFormProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx index 43c04c46f..1b5c27dc2 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_first-day-of-week.tsx @@ -4,6 +4,7 @@ import { Button, Group, Radio, Stack } from "@mantine/core"; import type { DayOfWeek } from "@mantine/dates"; import dayjs from "dayjs"; import localeData from "dayjs/plugin/localeData"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -11,7 +12,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; dayjs.extend(localeData); diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx index c2a975daf..ce34378e6 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_ping-icons-enabled.tsx @@ -1,6 +1,7 @@ "use client"; import { Button, Group, Stack, Switch } from "@mantine/core"; +import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -8,7 +9,6 @@ import { revalidatePathActionAsync } from "@homarr/common/client"; import { useZodForm } from "@homarr/form"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface PingIconsEnabledProps { diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx index 1f2960dbb..e848a8182 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/_components/create-user-stepper.tsx @@ -17,6 +17,7 @@ import { } from "@mantine/core"; import { useListState } from "@mantine/hooks"; import { IconPlus, IconUserCheck } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { everyoneGroup, groupPermissions } from "@homarr/definitions"; @@ -26,7 +27,7 @@ import { useModalAction } from "@homarr/modals"; import { showErrorNotification } from "@homarr/notifications"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; import { CustomPasswordInput, UserAvatar } from "@homarr/ui"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createCustomErrorParams } from "@homarr/validation/form"; import { GroupSelectModal } from "~/components/access/group-select-modal"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx index d1113bf4f..7fbbafc54 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/groups/page.tsx @@ -1,6 +1,7 @@ import Link from "next/link"; import { notFound } from "next/navigation"; import { Anchor, Group, Stack, Table, TableTbody, TableTd, TableTh, TableThead, TableTr, Title } from "@mantine/core"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { api } from "@homarr/api/server"; @@ -8,7 +9,6 @@ import { auth } from "@homarr/auth/next"; import type { inferSearchParamsFromSchema } from "@homarr/common/types"; import { getI18n } from "@homarr/translation/server"; import { SearchInput, TablePagination, UserAvatarGroup } from "@homarr/ui"; -import { z } from "@homarr/validation"; import { ManageContainer } from "~/components/manage/manage-container"; import { DynamicBreadcrumb } from "~/components/navigation/dynamic-breadcrumb"; diff --git a/apps/nextjs/src/components/board/items/item-move-modal.tsx b/apps/nextjs/src/components/board/items/item-move-modal.tsx index b04a80195..d93e4b26b 100644 --- a/apps/nextjs/src/components/board/items/item-move-modal.tsx +++ b/apps/nextjs/src/components/board/items/item-move-modal.tsx @@ -1,11 +1,11 @@ import { useCallback, useRef } from "react"; import { Button, Grid, Group, NumberInput, Stack } from "@mantine/core"; +import { z } from "zod"; import { useZodForm } from "@homarr/form"; import type { GridStack } from "@homarr/gridstack"; import { createModal } from "@homarr/modals"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import type { Item } from "~/app/[locale]/boards/_types"; diff --git a/apps/nextjs/src/components/board/modals/board-rename-modal.tsx b/apps/nextjs/src/components/board/modals/board-rename-modal.tsx index c627aab05..fafa334b0 100644 --- a/apps/nextjs/src/components/board/modals/board-rename-modal.tsx +++ b/apps/nextjs/src/components/board/modals/board-rename-modal.tsx @@ -1,12 +1,12 @@ "use client"; import { Button, Group, Stack, TextInput } from "@mantine/core"; +import type { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; interface InnerProps { diff --git a/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx b/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx index 16d25c4ce..56bbb57a1 100644 --- a/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx +++ b/apps/nextjs/src/components/board/sections/category/category-edit-modal.tsx @@ -1,9 +1,9 @@ import { Button, Group, Stack, TextInput } from "@mantine/core"; +import { z } from "zod"; import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; interface Category { id: string; diff --git a/packages/api/package.json b/packages/api/package.json index a49212a74..d025d004e 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -48,7 +48,8 @@ "react": "19.0.0", "react-dom": "19.0.0", "superjson": "2.2.2", - "trpc-to-openapi": "^2.1.2" + "trpc-to-openapi": "^2.1.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 51a90e046..adc0bc20f 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { Session } from "@homarr/auth"; import { hasQueryAccessToIntegrationsAsync } from "@homarr/auth/server"; @@ -9,7 +10,6 @@ import type { Database } from "@homarr/db"; import { and, eq, inArray } from "@homarr/db"; import { integrations } from "@homarr/db/schema"; import type { IntegrationKind } from "@homarr/definitions"; -import { z } from "@homarr/validation"; import { publicProcedure } from "../trpc"; diff --git a/packages/api/src/middlewares/item.ts b/packages/api/src/middlewares/item.ts index 79d93a463..173d6000f 100644 --- a/packages/api/src/middlewares/item.ts +++ b/packages/api/src/middlewares/item.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { and, eq } from "@homarr/db"; import { items } from "@homarr/db/schema"; import type { WidgetKind } from "@homarr/definitions"; -import { z } from "@homarr/validation"; import { publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 3d651b6ca..84f712cd9 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import { selectAppSchema } from "@homarr/db/validationSchemas"; import { getIconForName } from "@homarr/icons"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 72ae2bfd2..0fb254eca 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -1,5 +1,6 @@ import { TRPCError } from "@trpc/server"; import superjson from "superjson"; +import { z } from "zod"; import { constructBoardPermissions } from "@homarr/auth/shared"; import type { DeviceType } from "@homarr/common/server"; @@ -25,7 +26,7 @@ import { importOldmarrAsync } from "@homarr/old-import"; import { importJsonFileSchema } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; import type { BoardItemAdvancedOptions } from "@homarr/validation"; -import { createSectionSchema, sharedItemSchema, validation, z, zodUnionFromArray } from "@homarr/validation"; +import { createSectionSchema, sharedItemSchema, validation, zodUnionFromArray } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../trpc"; import { throwIfActionForbiddenAsync } from "./board/board-access"; diff --git a/packages/api/src/router/docker/docker-router.ts b/packages/api/src/router/docker/docker-router.ts index 299db0090..05841e577 100644 --- a/packages/api/src/router/docker/docker-router.ts +++ b/packages/api/src/router/docker/docker-router.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { db, like, or } from "@homarr/db"; import { icons } from "@homarr/db/schema"; @@ -6,7 +7,6 @@ import { DockerSingleton } from "@homarr/docker"; import type { Container, ContainerInfo, ContainerState, Docker, Port } from "@homarr/docker"; import { logger } from "@homarr/log"; import { createCacheChannel } from "@homarr/redis"; -import { z } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure } from "../../trpc"; diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index a10629802..86d289fd9 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { Database } from "@homarr/db"; import { and, createId, eq, like, not, sql } from "@homarr/db"; import { groupMembers, groupPermissions, groups } from "@homarr/db/schema"; import { everyoneGroup } from "@homarr/definitions"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, protectedProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; diff --git a/packages/api/src/router/import/import-router.ts b/packages/api/src/router/import/import-router.ts index 7bcc453ec..4ffc5ca1a 100644 --- a/packages/api/src/router/import/import-router.ts +++ b/packages/api/src/router/import/import-router.ts @@ -1,10 +1,11 @@ +import { z } from "zod"; + import { analyseOldmarrImportForRouterAsync, analyseOldmarrImportInputSchema } from "@homarr/old-import/analyse"; import { ensureValidTokenOrThrow, importInitialOldmarrAsync, importInitialOldmarrInputSchema, } from "@homarr/old-import/import"; -import { z } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure } from "../../trpc"; import { nextOnboardingStepAsync } from "../onboard/onboard-queries"; diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 4ad169bf8..d6b60912f 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { objectEntries } from "@homarr/common"; import { decryptSecret, encryptSecret } from "@homarr/common/server"; @@ -23,7 +24,7 @@ import { integrationSecretKindObject, } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/invite.ts b/packages/api/src/router/invite.ts index 6cbcc2869..3be975b3d 100644 --- a/packages/api/src/router/invite.ts +++ b/packages/api/src/router/invite.ts @@ -1,10 +1,10 @@ import { randomBytes } from "crypto"; import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq } from "@homarr/db"; import { invites } from "@homarr/db/schema"; import { selectInviteSchema } from "@homarr/db/validationSchemas"; -import { z } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure } from "../trpc"; import { throwIfCredentialsDisabled } from "./invite/checks"; diff --git a/packages/api/src/router/location.ts b/packages/api/src/router/location.ts index c2060314b..7d3f3d980 100644 --- a/packages/api/src/router/location.ts +++ b/packages/api/src/router/location.ts @@ -1,5 +1,6 @@ +import type { z } from "zod"; + import { fetchWithTimeout } from "@homarr/common"; -import type { z } from "@homarr/validation"; import { validation } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../trpc"; diff --git a/packages/api/src/router/medias/media-router.ts b/packages/api/src/router/medias/media-router.ts index 8a1c3a71e..d6ed0223b 100644 --- a/packages/api/src/router/medias/media-router.ts +++ b/packages/api/src/router/medias/media-router.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import type { InferInsertModel } from "@homarr/db"; import { and, createId, desc, eq, like } from "@homarr/db"; import { iconRepositories, icons, medias } from "@homarr/db/schema"; import { createLocalImageUrl, LOCAL_ICON_REPOSITORY_SLUG, mapMediaToIcon } from "@homarr/icons/local"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc"; diff --git a/packages/api/src/router/onboard/onboard-router.ts b/packages/api/src/router/onboard/onboard-router.ts index 89b6fb66f..a9a97d474 100644 --- a/packages/api/src/router/onboard/onboard-router.ts +++ b/packages/api/src/router/onboard/onboard-router.ts @@ -1,6 +1,8 @@ +import { z } from "zod"; + import { onboarding } from "@homarr/db/schema"; import { onboardingSteps } from "@homarr/definitions"; -import { z, zodEnumFromArray } from "@homarr/validation"; +import { zodEnumFromArray } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; import { getOnboardingOrFallbackAsync, nextOnboardingStepAsync } from "./onboard-queries"; diff --git a/packages/api/src/router/search-engine/search-engine-router.ts b/packages/api/src/router/search-engine/search-engine-router.ts index 49aab777c..0191f9319 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -1,10 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { asc, createId, eq, like, sql } from "@homarr/db"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { searchEngines, users } from "@homarr/db/schema"; import { integrationCreator } from "@homarr/integrations"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/serverSettings.ts b/packages/api/src/router/serverSettings.ts index 2fdb000f2..a4bb5eeca 100644 --- a/packages/api/src/router/serverSettings.ts +++ b/packages/api/src/router/serverSettings.ts @@ -1,7 +1,9 @@ +import { z } from "zod"; + import { getServerSettingByKeyAsync, getServerSettingsAsync, updateServerSettingByKeyAsync } from "@homarr/db/queries"; import type { ServerSettings } from "@homarr/server-settings"; import { defaultServerSettingsKeys } from "@homarr/server-settings"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { createTRPCRouter, onboardingProcedure, permissionRequiredProcedure, publicProcedure } from "../trpc"; import { nextOnboardingStepAsync } from "./onboard/onboard-queries"; diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 2b23f7256..14139b40c 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { z } from "zod"; import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import type { Database } from "@homarr/db"; @@ -8,7 +9,7 @@ import { selectUserSchema } from "@homarr/db/validationSchemas"; import { credentialsAdminGroup } from "@homarr/definitions"; import type { SupportedAuthProvider } from "@homarr/definitions"; import { logger } from "@homarr/log"; -import { validation, z } from "@homarr/validation"; +import { validation } from "@homarr/validation"; import { convertIntersectionToZodObject } from "../schema-merger"; import { diff --git a/packages/api/src/router/widgets/app.ts b/packages/api/src/router/widgets/app.ts index bfb6063f0..b3718e9de 100644 --- a/packages/api/src/router/widgets/app.ts +++ b/packages/api/src/router/widgets/app.ts @@ -1,8 +1,8 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { sendPingRequestAsync } from "@homarr/ping"; import { pingChannel, pingUrlChannel } from "@homarr/redis"; -import { z } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/calendar.ts b/packages/api/src/router/widgets/calendar.ts index 6628cf81f..a11c69d40 100644 --- a/packages/api/src/router/widgets/calendar.ts +++ b/packages/api/src/router/widgets/calendar.ts @@ -1,7 +1,8 @@ +import { z } from "zod"; + import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { radarrReleaseTypes } from "@homarr/integrations/types"; import { calendarMonthRequestHandler } from "@homarr/request-handler/calendar"; -import { z } from "@homarr/validation"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/downloads.ts b/packages/api/src/router/widgets/downloads.ts index db5fdd997..c0a72d577 100644 --- a/packages/api/src/router/widgets/downloads.ts +++ b/packages/api/src/router/widgets/downloads.ts @@ -1,4 +1,5 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import type { Modify } from "@homarr/common/types"; import type { Integration } from "@homarr/db/schema"; @@ -7,7 +8,6 @@ import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { DownloadClientJobsAndStatus } from "@homarr/integrations"; import { downloadClientItemSchema, integrationCreator } from "@homarr/integrations"; import { downloadClientRequestHandler } from "@homarr/request-handler/downloads"; -import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; import { createManyIntegrationMiddleware } from "../../middlewares/integration"; diff --git a/packages/api/src/router/widgets/media-requests.ts b/packages/api/src/router/widgets/media-requests.ts index c1a237d03..8469b3b31 100644 --- a/packages/api/src/router/widgets/media-requests.ts +++ b/packages/api/src/router/widgets/media-requests.ts @@ -1,11 +1,11 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator, MediaRequestStatus } from "@homarr/integrations"; import type { MediaRequest } from "@homarr/integrations/types"; import { mediaRequestListRequestHandler } from "@homarr/request-handler/media-request-list"; import { mediaRequestStatsRequestHandler } from "@homarr/request-handler/media-request-stats"; -import { z } from "@homarr/validation"; import { createManyIntegrationMiddleware, createOneIntegrationMiddleware } from "../../middlewares/integration"; import { createTRPCRouter, protectedProcedure, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts index e9c3f5cff..994a15e4c 100644 --- a/packages/api/src/router/widgets/notebook.ts +++ b/packages/api/src/router/widgets/notebook.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; import SuperJSON from "superjson"; +import { z } from "zod"; import { eq } from "@homarr/db"; import { items } from "@homarr/db/schema"; -import { z } from "@homarr/validation"; import { createTRPCRouter, protectedProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/rssFeed.ts b/packages/api/src/router/widgets/rssFeed.ts index 448f1f576..415319318 100644 --- a/packages/api/src/router/widgets/rssFeed.ts +++ b/packages/api/src/router/widgets/rssFeed.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds"; -import { z } from "@homarr/validation"; import { createTRPCRouter, publicProcedure } from "../../trpc"; diff --git a/packages/api/src/router/widgets/smart-home.ts b/packages/api/src/router/widgets/smart-home.ts index d1a1fde85..13979ad28 100644 --- a/packages/api/src/router/widgets/smart-home.ts +++ b/packages/api/src/router/widgets/smart-home.ts @@ -1,9 +1,9 @@ import { observable } from "@trpc/server/observable"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { integrationCreator } from "@homarr/integrations"; import { smartHomeEntityStateRequestHandler } from "@homarr/request-handler/smart-home-entity-state"; -import { z } from "@homarr/validation"; import type { IntegrationAction } from "../../middlewares/integration"; import { createOneIntegrationMiddleware } from "../../middlewares/integration"; diff --git a/packages/api/src/schema-merger.ts b/packages/api/src/schema-merger.ts index 7043e908a..eae12cf89 100644 --- a/packages/api/src/schema-merger.ts +++ b/packages/api/src/schema-merger.ts @@ -1,5 +1,5 @@ -import type { AnyZodObject, ZodIntersection, ZodObject } from "@homarr/validation"; -import { z } from "@homarr/validation"; +import { z } from "zod"; +import type { AnyZodObject, ZodIntersection, ZodObject } from "zod"; export function convertIntersectionToZodObject>( intersection: TIntersection, diff --git a/packages/api/src/trpc.ts b/packages/api/src/trpc.ts index 6f88a8cd2..93c2b57be 100644 --- a/packages/api/src/trpc.ts +++ b/packages/api/src/trpc.ts @@ -9,6 +9,7 @@ import { initTRPC, TRPCError } from "@trpc/server"; import superjson from "superjson"; import type { OpenApiMeta } from "trpc-to-openapi"; +import { ZodError } from "zod"; import type { Session } from "@homarr/auth"; import { FlattenError } from "@homarr/common"; @@ -16,7 +17,6 @@ import { userAgent } from "@homarr/common/server"; import { db } from "@homarr/db"; import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions"; import { logger } from "@homarr/log"; -import { ZodError } from "@homarr/validation"; import { getOnboardingOrFallbackAsync } from "./router/onboard/onboard-queries"; diff --git a/packages/auth/package.json b/packages/auth/package.json index 1afba2a8e..c47755150 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -38,7 +38,8 @@ "next-auth": "5.0.0-beta.25", "pretty-print-error": "^1.1.2", "react": "19.0.0", - "react-dom": "19.0.0" + "react-dom": "19.0.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/auth/providers/credentials/authorization/basic-authorization.ts b/packages/auth/providers/credentials/authorization/basic-authorization.ts index cdce3fe9e..6cbd4d16a 100644 --- a/packages/auth/providers/credentials/authorization/basic-authorization.ts +++ b/packages/auth/providers/credentials/authorization/basic-authorization.ts @@ -1,10 +1,11 @@ import bcrypt from "bcrypt"; +import type { z } from "zod"; import type { Database } from "@homarr/db"; import { and, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { logger } from "@homarr/log"; -import type { validation, z } from "@homarr/validation"; +import type { validation } from "@homarr/validation"; export const authorizeWithBasicCredentialsAsync = async ( db: Database, diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts index 84f59e989..84f7733ac 100644 --- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts +++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts @@ -1,4 +1,5 @@ import { CredentialsSignin } from "@auth/core/errors"; +import { z } from "zod"; import { extractErrorMessage } from "@homarr/common"; import type { Database, InferInsertModel } from "@homarr/db"; @@ -6,7 +7,6 @@ import { and, createId, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { logger } from "@homarr/log"; import type { validation } from "@homarr/validation"; -import { z } from "@homarr/validation"; import { env } from "../../../env"; import { LdapClient } from "../ldap-client"; diff --git a/packages/auth/test/session.spec.ts b/packages/auth/test/session.spec.ts index 4f90f44a0..e15703ea4 100644 --- a/packages/auth/test/session.spec.ts +++ b/packages/auth/test/session.spec.ts @@ -1,6 +1,5 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { expireDateAfter, generateSessionToken } from "../session"; diff --git a/packages/form/package.json b/packages/form/package.json index a41143d70..4d265f4be 100644 --- a/packages/form/package.json +++ b/packages/form/package.json @@ -26,7 +26,8 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "@mantine/form": "^7.16.2" + "@mantine/form": "^7.16.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/form/src/index.ts b/packages/form/src/index.ts index f46a2d1ed..328315b5b 100644 --- a/packages/form/src/index.ts +++ b/packages/form/src/index.ts @@ -1,8 +1,8 @@ import { useForm, zodResolver } from "@mantine/form"; +import { z } from "zod"; +import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "zod"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; -import type { AnyZodObject, ZodDiscriminatedUnion, ZodEffects, ZodIntersection } from "@homarr/validation"; import { zodErrorMap } from "@homarr/validation/form"; export const useZodForm = < diff --git a/packages/form/src/messages.ts b/packages/form/src/messages.ts index 51983fff1..bfbbc4c4f 100644 --- a/packages/form/src/messages.ts +++ b/packages/form/src/messages.ts @@ -1,6 +1,7 @@ +import type { ErrorMapCtx, z, ZodTooBigIssue, ZodTooSmallIssue } from "zod"; +import { ZodIssueCode } from "zod"; + import type { TranslationObject } from "@homarr/translation"; -import type { ErrorMapCtx, z, ZodTooBigIssue, ZodTooSmallIssue } from "@homarr/validation"; -import { ZodIssueCode } from "@homarr/validation"; const handleStringError = (issue: z.ZodInvalidStringIssue) => { if (typeof issue.validation === "object") { diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 15cceb120..13d01a9ae 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -38,7 +38,8 @@ "@jellyfin/sdk": "^0.11.0", "proxmox-api": "1.1.1", "undici": "7.3.0", - "xml2js": "^0.6.2" + "xml2js": "^0.6.2", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/integrations/src/adguard-home/adguard-home-types.ts b/packages/integrations/src/adguard-home/adguard-home-types.ts index adc56b4d9..bcd7abd29 100644 --- a/packages/integrations/src/adguard-home/adguard-home-types.ts +++ b/packages/integrations/src/adguard-home/adguard-home-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const statsResponseSchema = z.object({ time_units: z.enum(["hours", "days"]), diff --git a/packages/integrations/src/base/integration.ts b/packages/integrations/src/base/integration.ts index dbfee6ccc..f11009a89 100644 --- a/packages/integrations/src/base/integration.ts +++ b/packages/integrations/src/base/integration.ts @@ -1,10 +1,10 @@ import type { Response } from "undici"; +import { z } from "zod"; import { extractErrorMessage, removeTrailingSlash } from "@homarr/common"; import type { IntegrationSecretKind } from "@homarr/definitions"; import { logger } from "@homarr/log"; import type { TranslationObject } from "@homarr/translation"; -import { z } from "@homarr/validation"; import { IntegrationTestConnectionError } from "./test-connection-error"; import type { IntegrationSecret } from "./types"; diff --git a/packages/integrations/src/base/test-connection-error.ts b/packages/integrations/src/base/test-connection-error.ts index 8a8067f0e..c0f7d97e0 100644 --- a/packages/integrations/src/base/test-connection-error.ts +++ b/packages/integrations/src/base/test-connection-error.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { FlattenError } from "@homarr/common"; -import { z } from "@homarr/validation"; import type { TestConnectionError } from "./integration"; diff --git a/packages/integrations/src/dashdot/dashdot-integration.ts b/packages/integrations/src/dashdot/dashdot-integration.ts index 315c46177..9df6720a9 100644 --- a/packages/integrations/src/dashdot/dashdot-integration.ts +++ b/packages/integrations/src/dashdot/dashdot-integration.ts @@ -3,9 +3,9 @@ import { humanFileSize } from "@homarr/common"; import "@homarr/redis"; import dayjs from "dayjs"; +import { z } from "zod"; import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import { z } from "@homarr/validation"; import { createChannelEventHistory } from "../../../redis/src/lib/channel"; import { Integration } from "../base/integration"; diff --git a/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts b/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts index 35d5899c1..b1a327d09 100644 --- a/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts +++ b/packages/integrations/src/download-client/sabnzbd/sabnzbd-schema.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const queueSchema = z.object({ queue: z.object({ diff --git a/packages/integrations/src/homeassistant/homeassistant-types.ts b/packages/integrations/src/homeassistant/homeassistant-types.ts index 7015b5e23..e4276159a 100644 --- a/packages/integrations/src/homeassistant/homeassistant-types.ts +++ b/packages/integrations/src/homeassistant/homeassistant-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const entityStateSchema = z.object({ attributes: z.record( diff --git a/packages/integrations/src/interfaces/downloads/download-client-items.ts b/packages/integrations/src/interfaces/downloads/download-client-items.ts index 7137890d8..3d5195b4b 100644 --- a/packages/integrations/src/interfaces/downloads/download-client-items.ts +++ b/packages/integrations/src/interfaces/downloads/download-client-items.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import type { Integration } from "@homarr/db/schema"; -import { z } from "@homarr/validation"; const usenetQueueState = ["downloading", "queued", "paused"] as const; const usenetHistoryState = ["completed", "failed", "processing"] as const; diff --git a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts index f48eda43b..b71af7482 100644 --- a/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts +++ b/packages/integrations/src/media-organizer/lidarr/lidarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts index 0817fe9f6..330de8bc8 100644 --- a/packages/integrations/src/media-organizer/radarr/radarr-integration.ts +++ b/packages/integrations/src/media-organizer/radarr/radarr-integration.ts @@ -1,7 +1,8 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import type { AtLeastOneOf } from "@homarr/common/types"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { radarrReleaseTypes } from "../../calendar-types"; diff --git a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts index 085677c74..e572c60e0 100644 --- a/packages/integrations/src/media-organizer/readarr/readarr-integration.ts +++ b/packages/integrations/src/media-organizer/readarr/readarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts index c9cb9393f..8f823e903 100644 --- a/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts +++ b/packages/integrations/src/media-organizer/sonarr/sonarr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import type { CalendarEvent } from "../../calendar-types"; import { MediaOrganizerIntegration } from "../media-organizer-integration"; diff --git a/packages/integrations/src/media-transcoding/tdarr-integration.ts b/packages/integrations/src/media-transcoding/tdarr-integration.ts index fad62b28d..4c79e0a09 100644 --- a/packages/integrations/src/media-transcoding/tdarr-integration.ts +++ b/packages/integrations/src/media-transcoding/tdarr-integration.ts @@ -1,5 +1,6 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; -import { z } from "@homarr/validation"; import { Integration } from "../base/integration"; import type { TdarrQueue } from "../interfaces/media-transcoding/queue"; diff --git a/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts index aabb61cc7..a457ca627 100644 --- a/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts +++ b/packages/integrations/src/media-transcoding/tdarr-validation-schemas.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const getStatisticsSchema = z.object({ totalFileCount: z.number(), diff --git a/packages/integrations/src/overseerr/overseerr-integration.ts b/packages/integrations/src/overseerr/overseerr-integration.ts index a11b050ea..55e08d084 100644 --- a/packages/integrations/src/overseerr/overseerr-integration.ts +++ b/packages/integrations/src/overseerr/overseerr-integration.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; + import { fetchWithTrustedCertificatesAsync } from "@homarr/certificates/server"; import { logger } from "@homarr/log"; -import { z } from "@homarr/validation"; import { Integration } from "../base/integration"; import type { ISearchableIntegration } from "../base/searchable-integration"; diff --git a/packages/integrations/src/pi-hole/pi-hole-types.ts b/packages/integrations/src/pi-hole/pi-hole-types.ts index 234eb511c..7c9785d1b 100644 --- a/packages/integrations/src/pi-hole/pi-hole-types.ts +++ b/packages/integrations/src/pi-hole/pi-hole-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const summaryResponseSchema = z.object({ status: z.enum(["enabled", "disabled"]), diff --git a/packages/integrations/src/prowlarr/prowlarr-types.ts b/packages/integrations/src/prowlarr/prowlarr-types.ts index 4f3288196..dc10feca8 100644 --- a/packages/integrations/src/prowlarr/prowlarr-types.ts +++ b/packages/integrations/src/prowlarr/prowlarr-types.ts @@ -1,4 +1,4 @@ -import { z } from "@homarr/validation"; +import { z } from "zod"; export const indexerResponseSchema = z.object({ id: z.number(), diff --git a/packages/modals-collection/package.json b/packages/modals-collection/package.json index ce2f55816..b71172130 100644 --- a/packages/modals-collection/package.json +++ b/packages/modals-collection/package.json @@ -37,7 +37,8 @@ "dayjs": "^1.11.13", "next": "15.1.6", "react": "19.0.0", - "react-dom": "19.0.0" + "react-dom": "19.0.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/modals-collection/src/boards/import-board-modal.tsx b/packages/modals-collection/src/boards/import-board-modal.tsx index e507a29f1..71fdbcb26 100644 --- a/packages/modals-collection/src/boards/import-board-modal.tsx +++ b/packages/modals-collection/src/boards/import-board-modal.tsx @@ -1,6 +1,7 @@ import { useState } from "react"; import { Button, FileInput, Group, Radio, Stack, TextInput } from "@mantine/core"; import { IconFileUpload } from "@tabler/icons-react"; +import { z } from "zod"; import { clientApi } from "@homarr/api/client"; import { revalidatePathActionAsync } from "@homarr/common/client"; @@ -12,7 +13,6 @@ import type { OldmarrImportConfiguration } from "@homarr/old-import/shared"; import { oldmarrImportConfigurationSchema, superRefineJsonImportFile } from "@homarr/old-import/shared"; import { oldmarrConfigSchema } from "@homarr/old-schema"; import { useI18n, useScopedI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import { useBoardNameStatus } from "./add-board-modal"; diff --git a/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx index 9a5f2d5fc..6b2d993df 100644 --- a/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx +++ b/packages/modals-collection/src/docker/add-docker-app-to-homarr.tsx @@ -1,4 +1,5 @@ import { Button, Group, Image, List, LoadingOverlay, Stack, Text, TextInput } from "@mantine/core"; +import { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; import { clientApi } from "@homarr/api/client"; @@ -6,7 +7,6 @@ import { useZodForm } from "@homarr/form"; import { createModal } from "@homarr/modals"; import { showErrorNotification, showSuccessNotification } from "@homarr/notifications"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; interface AddDockerAppToHomarrProps { selectedContainers: RouterOutputs["docker"]["getContainers"]["containers"]; diff --git a/packages/validation/index.ts b/packages/validation/index.ts index 8c3fd3ff7..3bd16e178 100644 --- a/packages/validation/index.ts +++ b/packages/validation/index.ts @@ -1,2 +1 @@ export * from "./src"; -export * from "zod"; diff --git a/packages/widgets/package.json b/packages/widgets/package.json index d2f957ad4..74358eaa0 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -64,7 +64,8 @@ "next": "15.1.6", "react": "19.0.0", "react-dom": "19.0.0", - "video.js": "^8.21.0" + "video.js": "^8.21.0", + "zod": "^3.24.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/widgets/src/calendar/index.ts b/packages/widgets/src/calendar/index.ts index 6ce92f0a5..333d47a99 100644 --- a/packages/widgets/src/calendar/index.ts +++ b/packages/widgets/src/calendar/index.ts @@ -1,8 +1,8 @@ import { IconCalendar } from "@tabler/icons-react"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import { radarrReleaseTypes } from "@homarr/integrations/types"; -import { z } from "@homarr/validation"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/downloads/index.ts b/packages/widgets/src/downloads/index.ts index b6ea1ef6a..c5161463e 100644 --- a/packages/widgets/src/downloads/index.ts +++ b/packages/widgets/src/downloads/index.ts @@ -1,8 +1,8 @@ import { IconDownload } from "@tabler/icons-react"; +import { z } from "zod"; import { getIntegrationKindsByCategory } from "@homarr/definitions"; import type { ExtendedDownloadClientItem } from "@homarr/integrations"; -import { z } from "@homarr/validation"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/media-transcoding/index.ts b/packages/widgets/src/media-transcoding/index.ts index c8c6b13fb..53e523645 100644 --- a/packages/widgets/src/media-transcoding/index.ts +++ b/packages/widgets/src/media-transcoding/index.ts @@ -1,6 +1,5 @@ import { IconTransform } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/minecraft/server-status/index.ts b/packages/widgets/src/minecraft/server-status/index.ts index df4c0e2bc..d929f40da 100644 --- a/packages/widgets/src/minecraft/server-status/index.ts +++ b/packages/widgets/src/minecraft/server-status/index.ts @@ -1,6 +1,5 @@ import { IconBrandMinecraft } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../../definition"; import { optionsBuilder } from "../../options"; diff --git a/packages/widgets/src/modals/widget-edit-modal.tsx b/packages/widgets/src/modals/widget-edit-modal.tsx index 3618ab79e..f3d5f6f45 100644 --- a/packages/widgets/src/modals/widget-edit-modal.tsx +++ b/packages/widgets/src/modals/widget-edit-modal.tsx @@ -2,13 +2,13 @@ import { useState } from "react"; import { Button, Group, Stack } from "@mantine/core"; +import { z } from "zod"; import { objectEntries } from "@homarr/common"; import type { WidgetKind } from "@homarr/definitions"; import { zodResolver } from "@homarr/form"; import { createModal, useModalAction } from "@homarr/modals"; import { useI18n } from "@homarr/translation/client"; -import { z } from "@homarr/validation"; import { zodErrorMap } from "@homarr/validation/form"; import { widgetImports } from ".."; diff --git a/packages/widgets/src/options.ts b/packages/widgets/src/options.ts index 3314a121f..20a5330c2 100644 --- a/packages/widgets/src/options.ts +++ b/packages/widgets/src/options.ts @@ -1,10 +1,10 @@ import type React from "react"; import type { DraggableAttributes, UniqueIdentifier } from "@dnd-kit/core"; import type { ActionIconProps } from "@mantine/core"; +import { z } from "zod"; +import type { ZodType } from "zod"; import type { IntegrationKind } from "@homarr/definitions"; -import type { ZodType } from "@homarr/validation"; -import { z } from "@homarr/validation"; import type { inferSelectOptionValue, SelectOption } from "./_inputs/widget-select-input"; diff --git a/packages/widgets/src/rssFeed/index.ts b/packages/widgets/src/rssFeed/index.ts index 655193d12..267547631 100644 --- a/packages/widgets/src/rssFeed/index.ts +++ b/packages/widgets/src/rssFeed/index.ts @@ -1,6 +1,5 @@ import { IconRss } from "@tabler/icons-react"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/packages/widgets/src/weather/index.ts b/packages/widgets/src/weather/index.ts index 137bc9b4d..c20ef1e39 100644 --- a/packages/widgets/src/weather/index.ts +++ b/packages/widgets/src/weather/index.ts @@ -1,7 +1,6 @@ import { IconCloud } from "@tabler/icons-react"; import dayjs from "dayjs"; - -import { z } from "@homarr/validation"; +import { z } from "zod"; import { createWidgetDefinition } from "../definition"; import { optionsBuilder } from "../options"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0c87614c7..c201ab5a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -274,6 +274,9 @@ importers: use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -584,6 +587,9 @@ importers: trpc-to-openapi: specifier: ^2.1.2 version: 2.1.2(@trpc/server@11.0.0-rc.729(typescript@5.7.3))(zod-openapi@2.19.0(zod@3.24.1))(zod@3.24.1) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -654,6 +660,9 @@ importers: react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1067,6 +1076,9 @@ importers: '@mantine/form': specifier: ^7.16.2 version: 7.16.2(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1159,6 +1171,9 @@ importers: xml2js: specifier: ^0.6.2 version: 0.6.2 + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1291,6 +1306,9 @@ importers: react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1918,6 +1936,9 @@ importers: video.js: specifier: ^8.21.0 version: 8.21.0 + zod: + specifier: ^3.24.1 + version: 3.24.1 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 From 92f70f5a03048c7b269604f1ce33313ecf23a64b Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 26 Jan 2025 22:37:48 +0100 Subject: [PATCH 16/25] feat(user): add search in new tab preference (#2125) --- apps/nextjs/package.json | 1 + apps/nextjs/src/app/[locale]/layout.tsx | 19 + ...ine.tsx => _change-search-preferences.tsx} | 31 +- .../manage/users/[userId]/general/page.tsx | 6 +- packages/api/src/router/user.ts | 85 +- .../router/user/change-search-preferences.ts | 50 + .../migrations/mysql/0021_fluffy_jocasta.sql | 1 + .../migrations/mysql/meta/0021_snapshot.json | 1708 +++++++++++++++++ .../db/migrations/mysql/meta/_journal.json | 7 + .../sqlite/0021_famous_bruce_banner.sql | 1 + .../migrations/sqlite/meta/0021_snapshot.json | 1633 ++++++++++++++++ .../db/migrations/sqlite/meta/_journal.json | 7 + packages/db/schema/mysql.ts | 1 + packages/db/schema/sqlite.ts | 1 + packages/settings/eslint.config.js | 9 + packages/settings/index.ts | 1 + packages/settings/package.json | 40 + packages/settings/src/context.tsx | 55 + packages/settings/tsconfig.json | 8 + packages/spotlight/package.json | 1 + .../external/search-engines-search-group.tsx | 13 +- .../modes/home/home-search-engine-group.tsx | 3 + packages/translation/src/lang/en.json | 14 +- packages/validation/src/user.ts | 7 +- packages/widgets/package.json | 1 + packages/widgets/src/app/ping/ping-dot.tsx | 4 +- packages/widgets/src/calendar/component.tsx | 3 +- pnpm-lock.yaml | 49 + 28 files changed, 3673 insertions(+), 86 deletions(-) rename apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/{_change-default-search-engine.tsx => _change-search-preferences.tsx} (54%) create mode 100644 packages/api/src/router/user/change-search-preferences.ts create mode 100644 packages/db/migrations/mysql/0021_fluffy_jocasta.sql create mode 100644 packages/db/migrations/mysql/meta/0021_snapshot.json create mode 100644 packages/db/migrations/sqlite/0021_famous_bruce_banner.sql create mode 100644 packages/db/migrations/sqlite/meta/0021_snapshot.json create mode 100644 packages/settings/eslint.config.js create mode 100644 packages/settings/index.ts create mode 100644 packages/settings/package.json create mode 100644 packages/settings/src/context.tsx create mode 100644 packages/settings/tsconfig.json diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 21f9616a7..6f226d808 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -36,6 +36,7 @@ "@homarr/old-schema": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", + "@homarr/settings": "workspace:^0.1.0", "@homarr/spotlight": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", diff --git a/apps/nextjs/src/app/[locale]/layout.tsx b/apps/nextjs/src/app/[locale]/layout.tsx index 8f145ee3c..1a04d8c7e 100644 --- a/apps/nextjs/src/app/[locale]/layout.tsx +++ b/apps/nextjs/src/app/[locale]/layout.tsx @@ -9,10 +9,14 @@ import "~/styles/scroll-area.scss"; import { notFound } from "next/navigation"; import { NextIntlClientProvider } from "next-intl"; +import { api } from "@homarr/api/server"; import { env } from "@homarr/auth/env"; import { auth } from "@homarr/auth/next"; +import { db } from "@homarr/db"; +import { getServerSettingsAsync } from "@homarr/db/queries"; import { ModalProvider } from "@homarr/modals"; import { Notifications } from "@homarr/notifications"; +import { SettingsProvider } from "@homarr/settings"; import { SpotlightProvider } from "@homarr/spotlight"; import type { SupportedLanguage } from "@homarr/translation"; import { isLocaleRTL, isLocaleSupported } from "@homarr/translation"; @@ -73,6 +77,8 @@ export default async function Layout(props: { } const session = await auth(); + const user = session ? await api.user.getById({ userId: session.user.id }).catch(() => null) : null; + const serverSettings = await getServerSettingsAsync(db); const colorScheme = await getCurrentColorSchemeAsync(); const direction = isLocaleRTL((await props.params).locale) ? "rtl" : "ltr"; const i18nMessages = await getI18nMessages(); @@ -81,6 +87,19 @@ export default async function Layout(props: { (innerProps) => { return ; }, + (innerProps) => ( + + ), (innerProps) => , (innerProps) => , (innerProps) => , diff --git a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-search-preferences.tsx similarity index 54% rename from apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx rename to apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-search-preferences.tsx index 952014acb..5fabe8d4f 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-default-search-engine.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/[userId]/general/_components/_change-search-preferences.tsx @@ -1,6 +1,6 @@ "use client"; -import { Button, Group, Select, Stack } from "@mantine/core"; +import { Button, Group, Select, Stack, Switch } from "@mantine/core"; import type { z } from "zod"; import type { RouterOutputs } from "@homarr/api"; @@ -11,34 +11,36 @@ import { showErrorNotification, showSuccessNotification } from "@homarr/notifica import { useI18n } from "@homarr/translation/client"; import { validation } from "@homarr/validation"; -interface ChangeDefaultSearchEngineFormProps { +interface ChangeSearchPreferencesFormProps { user: RouterOutputs["user"]["getById"]; searchEnginesData: { value: string; label: string }[]; } -export const ChangeDefaultSearchEngineForm = ({ user, searchEnginesData }: ChangeDefaultSearchEngineFormProps) => { +export const ChangeSearchPreferencesForm = ({ user, searchEnginesData }: ChangeSearchPreferencesFormProps) => { const t = useI18n(); - const { mutate, isPending } = clientApi.user.changeDefaultSearchEngine.useMutation({ + const { mutate, isPending } = clientApi.user.changeSearchPreferences.useMutation({ async onSettled() { await revalidatePathActionAsync(`/manage/users/${user.id}`); }, onSuccess(_, variables) { form.setInitialValues({ defaultSearchEngineId: variables.defaultSearchEngineId, + openInNewTab: variables.openInNewTab, }); showSuccessNotification({ - message: t("user.action.changeDefaultSearchEngine.notification.success.message"), + message: t("user.action.changeSearchPreferences.notification.success.message"), }); }, onError() { showErrorNotification({ - message: t("user.action.changeDefaultSearchEngine.notification.error.message"), + message: t("user.action.changeSearchPreferences.notification.error.message"), }); }, }); - const form = useZodForm(validation.user.changeDefaultSearchEngine, { + const form = useZodForm(validation.user.changeSearchPreferences, { initialValues: { - defaultSearchEngineId: user.defaultSearchEngineId ?? "", + defaultSearchEngineId: user.defaultSearchEngineId, + openInNewTab: user.openSearchInNewTab, }, }); @@ -52,7 +54,16 @@ export const ChangeDefaultSearchEngineForm = ({ user, searchEnginesData }: Chang return (
- +