diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 14be5a9d8..6336813b0 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.11.0 - 1.10.0 - 1.9.0 - 1.8.0 diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index dff2b6f74..1fa69c38f 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -56,13 +56,13 @@ "@mantine/tiptap": "^7.17.2", "@million/lint": "1.0.14", "@tabler/icons-react": "^3.31.0", - "@tanstack/react-query": "^5.68.0", - "@tanstack/react-query-devtools": "^5.68.0", - "@tanstack/react-query-next-experimental": "^5.68.0", - "@trpc/client": "next", - "@trpc/next": "next", - "@trpc/react-query": "next", - "@trpc/server": "next", + "@tanstack/react-query": "^5.69.0", + "@tanstack/react-query-devtools": "^5.69.0", + "@tanstack/react-query-next-experimental": "^5.69.0", + "@trpc/client": "^11.0.0", + "@trpc/next": "^11.0.0", + "@trpc/react-query": "^11.0.0", + "@trpc/server": "^11.0.0", "@xterm/addon-canvas": "^0.7.0", "@xterm/addon-fit": "0.10.0", "@xterm/xterm": "^5.5.0", @@ -81,7 +81,7 @@ "react-dom": "19.0.0", "react-error-boundary": "^5.0.0", "react-simple-code-editor": "^0.14.1", - "sass": "^1.85.1", + "sass": "^1.86.0", "superjson": "2.2.2", "swagger-ui-react": "^5.20.1", "use-deep-compare-effect": "^1.8.1", @@ -92,9 +92,9 @@ "@homarr/prettier-config": "workspace:^0.1.0", "@homarr/tsconfig": "workspace:^0.1.0", "@types/chroma-js": "3.1.1", - "@types/node": "^22.13.10", + "@types/node": "^22.13.11", "@types/prismjs": "^1.26.5", - "@types/react": "19.0.10", + "@types/react": "19.0.12", "@types/react-dom": "19.0.4", "@types/swagger-ui-react": "^5.18.0", "concurrently": "^9.1.2", diff --git a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx index a46595b23..0e36cb4a1 100644 --- a/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx +++ b/apps/nextjs/src/app/[locale]/_client-providers/trpc.tsx @@ -7,11 +7,11 @@ import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; import { ReactQueryStreamedHydration } from "@tanstack/react-query-next-experimental"; import { createWSClient, + httpBatchStreamLink, httpLink, isNonJsonSerializable, loggerLink, splitLink, - unstable_httpBatchStreamLink, wsLink, } from "@trpc/client"; import superjson from "superjson"; @@ -90,7 +90,7 @@ export function TRPCReactProvider(props: PropsWithChildren) { url: getTrpcUrl(), headers: createHeadersCallbackForSource("nextjs-react (form-data)"), }), - false: unstable_httpBatchStreamLink({ + false: httpBatchStreamLink({ transformer: superjson, url: getTrpcUrl(), maxURLLength: 2083, // Suggested by tRPC: https://trpc.io/docs/client/links/httpBatchLink#setting-a-maximum-url-length diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 2fd2390e0..f13b14f31 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/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", - "@types/node": "^22.13.10", + "@types/node": "^22.13.11", "dotenv-cli": "^8.0.0", "eslint": "^9.22.0", "prettier": "^3.5.3", diff --git a/package.json b/package.json index 2bc815069..61dcc7714 100644 --- a/package.json +++ b/package.json @@ -40,20 +40,20 @@ "@semantic-release/release-notes-generator": "^14.0.3", "@turbo/gen": "^2.4.4", "@vitejs/plugin-react": "^4.3.4", - "@vitest/coverage-v8": "^3.0.8", - "@vitest/ui": "^3.0.8", + "@vitest/coverage-v8": "^3.0.9", + "@vitest/ui": "^3.0.9", "conventional-changelog-conventionalcommits": "^8.0.0", "cross-env": "^7.0.3", "jsdom": "^26.0.0", "prettier": "^3.5.3", "semantic-release": "^24.2.3", - "testcontainers": "^10.20.0", + "testcontainers": "^10.21.0", "turbo": "^2.4.4", "typescript": "^5.8.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.8" + "vitest": "^3.0.9" }, - "packageManager": "pnpm@10.6.3", + "packageManager": "pnpm@10.6.5", "engines": { "node": ">=22.14.0" }, diff --git a/packages/api/package.json b/packages/api/package.json index 66b56ddf6..9e524a3b6 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -41,9 +41,9 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", "@kubernetes/client-node": "^1.1.0", - "@trpc/client": "next", - "@trpc/react-query": "next", - "@trpc/server": "next", + "@trpc/client": "^11.0.0", + "@trpc/react-query": "^11.0.0", + "@trpc/server": "^11.0.0", "lodash.clonedeep": "^4.5.0", "next": "15.1.7", "pretty-print-error": "^1.1.2", diff --git a/packages/api/src/router/widgets/index.ts b/packages/api/src/router/widgets/index.ts index c2a8efc60..f3716459c 100644 --- a/packages/api/src/router/widgets/index.ts +++ b/packages/api/src/router/widgets/index.ts @@ -13,6 +13,7 @@ import { notebookRouter } from "./notebook"; import { optionsRouter } from "./options"; import { rssFeedRouter } from "./rssFeed"; import { smartHomeRouter } from "./smart-home"; +import { stockPriceRouter } from "./stocks"; import { weatherRouter } from "./weather"; export const widgetRouter = createTRPCRouter({ @@ -21,6 +22,7 @@ export const widgetRouter = createTRPCRouter({ app: appRouter, dnsHole: dnsHoleRouter, smartHome: smartHomeRouter, + stockPrice: stockPriceRouter, mediaServer: mediaServerRouter, calendar: calendarRouter, downloads: downloadsRouter, diff --git a/packages/api/src/router/widgets/stocks.ts b/packages/api/src/router/widgets/stocks.ts new file mode 100644 index 000000000..f9b583570 --- /dev/null +++ b/packages/api/src/router/widgets/stocks.ts @@ -0,0 +1,23 @@ +import { z } from "zod"; + +import { fetchStockPriceHandler } from "@homarr/request-handler/stock-price"; + +import { stockPriceTimeFrames } from "../../../../widgets/src/stocks"; +import { createTRPCRouter, publicProcedure } from "../../trpc"; + +const stockPriceInputSchema = z.object({ + stock: z.string().nonempty(), + timeRange: z.enum(stockPriceTimeFrames.range), + timeInterval: z.enum(stockPriceTimeFrames.interval), +}); + +export const stockPriceRouter = createTRPCRouter({ + getPriceHistory: publicProcedure.input(stockPriceInputSchema).query(async ({ input }) => { + const innerHandler = fetchStockPriceHandler.handler({ + stock: input.stock, + timeRange: input.timeRange, + timeInterval: input.timeInterval, + }); + return await innerHandler.getCachedOrUpdatedDataAsync({ forceUpdate: false }); + }), +}); diff --git a/packages/auth/permissions/board-permissions.ts b/packages/auth/permissions/board-permissions.ts index c59d56a3e..6d5591cf2 100644 --- a/packages/auth/permissions/board-permissions.ts +++ b/packages/auth/permissions/board-permissions.ts @@ -25,11 +25,15 @@ export const constructBoardPermissions = (board: BoardPermissionsProps, session: const creatorId = "creator" in board ? board.creator?.id : board.creatorId; return { - hasFullAccess: session?.user.id === creatorId || (session?.user.permissions.includes("board-full-all") ?? false), + hasFullAccess: + session?.user.id === creatorId || + board.userPermissions.some(({ permission }) => permission === "full") || + board.groupPermissions.some(({ permission }) => permission === "full") || + (session?.user.permissions.includes("board-full-all") ?? false), hasChangeAccess: session?.user.id === creatorId || - board.userPermissions.some(({ permission }) => permission === "modify") || - board.groupPermissions.some(({ permission }) => permission === "modify") || + board.userPermissions.some(({ permission }) => permission === "modify" || permission === "full") || + board.groupPermissions.some(({ permission }) => permission === "modify" || permission === "full") || (session?.user.permissions.includes("board-modify-all") ?? false) || (session?.user.permissions.includes("board-full-all") ?? false), hasViewAccess: diff --git a/packages/cli/src/commands/fix-usernames.ts b/packages/cli/src/commands/fix-usernames.ts index f2b3b774c..0f242c44d 100644 --- a/packages/cli/src/commands/fix-usernames.ts +++ b/packages/cli/src/commands/fix-usernames.ts @@ -19,7 +19,7 @@ export const fixUsernames = command({ for (const user of credentialUsers) { if (!user.name) continue; - if (user.name !== user.name.toLowerCase()) continue; + if (user.name === user.name.toLowerCase()) continue; await db .update(users) diff --git a/packages/db/package.json b/packages/db/package.json index 465cf1e71..1539f407e 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -46,13 +46,13 @@ "@homarr/server-settings": "workspace:^0.1.0", "@mantine/core": "^7.17.2", "@paralleldrive/cuid2": "^2.2.2", - "@testcontainers/mysql": "^10.20.0", - "better-sqlite3": "^11.9.0", + "@testcontainers/mysql": "^10.21.0", + "better-sqlite3": "^11.9.1", "dotenv": "^16.4.7", "drizzle-kit": "^0.30.5", - "drizzle-orm": "^0.40.0", + "drizzle-orm": "^0.41.0", "drizzle-zod": "^0.7.0", - "mysql2": "3.13.0" + "mysql2": "3.14.0" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/definitions/src/docs/homarr-docs-sitemap.ts b/packages/definitions/src/docs/homarr-docs-sitemap.ts index 4d3228324..ad106780b 100644 --- a/packages/definitions/src/docs/homarr-docs-sitemap.ts +++ b/packages/definitions/src/docs/homarr-docs-sitemap.ts @@ -37,6 +37,176 @@ export type HomarrDocumentationPath = | "/blog/tags/version" | "/blog/translations" | "/search" + | "/docs/1.10.0/tags" + | "/docs/1.10.0/tags/active-directory" + | "/docs/1.10.0/tags/ad-guard" + | "/docs/1.10.0/tags/ad-guard-home" + | "/docs/1.10.0/tags/administration" + | "/docs/1.10.0/tags/advanced" + | "/docs/1.10.0/tags/analytics" + | "/docs/1.10.0/tags/api" + | "/docs/1.10.0/tags/apps" + | "/docs/1.10.0/tags/banner" + | "/docs/1.10.0/tags/blocking" + | "/docs/1.10.0/tags/boards" + | "/docs/1.10.0/tags/bookmark" + | "/docs/1.10.0/tags/bookmarks" + | "/docs/1.10.0/tags/caddy" + | "/docs/1.10.0/tags/certificates" + | "/docs/1.10.0/tags/checklist" + | "/docs/1.10.0/tags/code" + | "/docs/1.10.0/tags/community" + | "/docs/1.10.0/tags/configuration" + | "/docs/1.10.0/tags/connections" + | "/docs/1.10.0/tags/customization" + | "/docs/1.10.0/tags/data-sources" + | "/docs/1.10.0/tags/database" + | "/docs/1.10.0/tags/developer" + | "/docs/1.10.0/tags/development" + | "/docs/1.10.0/tags/dns" + | "/docs/1.10.0/tags/docker" + | "/docs/1.10.0/tags/donation" + | "/docs/1.10.0/tags/edit-mode" + | "/docs/1.10.0/tags/env" + | "/docs/1.10.0/tags/environment-variables" + | "/docs/1.10.0/tags/feeds" + | "/docs/1.10.0/tags/getting-started" + | "/docs/1.10.0/tags/google" + | "/docs/1.10.0/tags/grafana" + | "/docs/1.10.0/tags/groups" + | "/docs/1.10.0/tags/hardware" + | "/docs/1.10.0/tags/health" + | "/docs/1.10.0/tags/help" + | "/docs/1.10.0/tags/icon-picker" + | "/docs/1.10.0/tags/icon-repositories" + | "/docs/1.10.0/tags/icons" + | "/docs/1.10.0/tags/iframe" + | "/docs/1.10.0/tags/images" + | "/docs/1.10.0/tags/installation" + | "/docs/1.10.0/tags/integrade" + | "/docs/1.10.0/tags/integration" + | "/docs/1.10.0/tags/integrations" + | "/docs/1.10.0/tags/interface" + | "/docs/1.10.0/tags/jellyserr" + | "/docs/1.10.0/tags/layout" + | "/docs/1.10.0/tags/ldap" + | "/docs/1.10.0/tags/links" + | "/docs/1.10.0/tags/lists" + | "/docs/1.10.0/tags/management" + | "/docs/1.10.0/tags/media" + | "/docs/1.10.0/tags/minecraft" + | "/docs/1.10.0/tags/monitoring" + | "/docs/1.10.0/tags/news" + | "/docs/1.10.0/tags/notebook" + | "/docs/1.10.0/tags/notes" + | "/docs/1.10.0/tags/oidc" + | "/docs/1.10.0/tags/open-collective" + | "/docs/1.10.0/tags/open-media-vault" + | "/docs/1.10.0/tags/overseerr" + | "/docs/1.10.0/tags/permissions" + | "/docs/1.10.0/tags/pgid" + | "/docs/1.10.0/tags/pi-hole" + | "/docs/1.10.0/tags/ping" + | "/docs/1.10.0/tags/programming" + | "/docs/1.10.0/tags/proxmox" + | "/docs/1.10.0/tags/proxy" + | "/docs/1.10.0/tags/puid" + | "/docs/1.10.0/tags/responsive" + | "/docs/1.10.0/tags/roles" + | "/docs/1.10.0/tags/rss" + | "/docs/1.10.0/tags/search" + | "/docs/1.10.0/tags/search-engines" + | "/docs/1.10.0/tags/security" + | "/docs/1.10.0/tags/self-signed" + | "/docs/1.10.0/tags/seo" + | "/docs/1.10.0/tags/server" + | "/docs/1.10.0/tags/settings" + | "/docs/1.10.0/tags/sinkhole" + | "/docs/1.10.0/tags/sso" + | "/docs/1.10.0/tags/system" + | "/docs/1.10.0/tags/table" + | "/docs/1.10.0/tags/technical-documentation" + | "/docs/1.10.0/tags/text" + | "/docs/1.10.0/tags/torrent" + | "/docs/1.10.0/tags/traefik" + | "/docs/1.10.0/tags/translations" + | "/docs/1.10.0/tags/unraid" + | "/docs/1.10.0/tags/uploads" + | "/docs/1.10.0/tags/usenet" + | "/docs/1.10.0/tags/users" + | "/docs/1.10.0/tags/variables" + | "/docs/1.10.0/tags/widgets" + | "/docs/1.10.0/advanced/command-line" + | "/docs/1.10.0/advanced/command-line/fix-usernames" + | "/docs/1.10.0/advanced/command-line/password-recovery" + | "/docs/1.10.0/advanced/development/getting-started" + | "/docs/1.10.0/advanced/environment-variables" + | "/docs/1.10.0/advanced/icons" + | "/docs/1.10.0/advanced/keyboard-shortcuts" + | "/docs/1.10.0/advanced/proxy" + | "/docs/1.10.0/advanced/running-as-different-user" + | "/docs/1.10.0/advanced/single-sign-on" + | "/docs/1.10.0/category/advanced" + | "/docs/1.10.0/category/community" + | "/docs/1.10.0/category/developer-guides" + | "/docs/1.10.0/category/getting-started" + | "/docs/1.10.0/category/installation" + | "/docs/1.10.0/category/installation-1" + | "/docs/1.10.0/category/integrations" + | "/docs/1.10.0/category/management" + | "/docs/1.10.0/category/widgets" + | "/docs/1.10.0/community/donate" + | "/docs/1.10.0/community/faq" + | "/docs/1.10.0/community/get-in-touch" + | "/docs/1.10.0/community/license" + | "/docs/1.10.0/community/translations" + | "/docs/1.10.0/getting-started" + | "/docs/1.10.0/getting-started/after-the-installation" + | "/docs/1.10.0/getting-started/glossary" + | "/docs/1.10.0/getting-started/installation/docker" + | "/docs/1.10.0/getting-started/installation/easy-panel" + | "/docs/1.10.0/getting-started/installation/helm" + | "/docs/1.10.0/getting-started/installation/home-assistant" + | "/docs/1.10.0/getting-started/installation/portainer" + | "/docs/1.10.0/getting-started/installation/qnap" + | "/docs/1.10.0/getting-started/installation/railway" + | "/docs/1.10.0/getting-started/installation/saltbox" + | "/docs/1.10.0/getting-started/installation/source" + | "/docs/1.10.0/getting-started/installation/synology" + | "/docs/1.10.0/getting-started/installation/unraid" + | "/docs/1.10.0/integrations/containers" + | "/docs/1.10.0/integrations/dns" + | "/docs/1.10.0/integrations/hardware" + | "/docs/1.10.0/integrations/media-requester" + | "/docs/1.10.0/integrations/media-server" + | "/docs/1.10.0/integrations/servarr" + | "/docs/1.10.0/integrations/torrent" + | "/docs/1.10.0/integrations/usenet" + | "/docs/1.10.0/management/api" + | "/docs/1.10.0/management/apps" + | "/docs/1.10.0/management/boards" + | "/docs/1.10.0/management/certificates" + | "/docs/1.10.0/management/integrations" + | "/docs/1.10.0/management/media" + | "/docs/1.10.0/management/search-engines" + | "/docs/1.10.0/management/settings" + | "/docs/1.10.0/management/users" + | "/docs/1.10.0/widgets/bookmarks" + | "/docs/1.10.0/widgets/calendar" + | "/docs/1.10.0/widgets/clock" + | "/docs/1.10.0/widgets/dns-hole" + | "/docs/1.10.0/widgets/downloads" + | "/docs/1.10.0/widgets/health-monitoring" + | "/docs/1.10.0/widgets/home-assistant" + | "/docs/1.10.0/widgets/iframe" + | "/docs/1.10.0/widgets/indexer-manager" + | "/docs/1.10.0/widgets/media-requests" + | "/docs/1.10.0/widgets/media-server" + | "/docs/1.10.0/widgets/minecraft-server-status" + | "/docs/1.10.0/widgets/notebook" + | "/docs/1.10.0/widgets/rss" + | "/docs/1.10.0/widgets/video" + | "/docs/1.10.0/widgets/weather" | "/docs/next/tags" | "/docs/next/tags/active-directory" | "/docs/next/tags/ad-guard" @@ -169,6 +339,7 @@ export type HomarrDocumentationPath = | "/docs/next/getting-started/installation/helm" | "/docs/next/getting-started/installation/home-assistant" | "/docs/next/getting-started/installation/portainer" + | "/docs/next/getting-started/installation/proxmox" | "/docs/next/getting-started/installation/qnap" | "/docs/next/getting-started/installation/railway" | "/docs/next/getting-started/installation/saltbox" @@ -312,6 +483,7 @@ export type HomarrDocumentationPath = | "/docs/advanced/command-line/fix-usernames" | "/docs/advanced/command-line/password-recovery" | "/docs/advanced/development/getting-started" + | "/docs/advanced/development/kubernetes" | "/docs/advanced/environment-variables" | "/docs/advanced/icons" | "/docs/advanced/keyboard-shortcuts" @@ -349,6 +521,7 @@ export type HomarrDocumentationPath = | "/docs/integrations/containers" | "/docs/integrations/dns" | "/docs/integrations/hardware" + | "/docs/integrations/kubernetes" | "/docs/integrations/media-requester" | "/docs/integrations/media-server" | "/docs/integrations/servarr" diff --git a/packages/definitions/src/widget.ts b/packages/definitions/src/widget.ts index a829b9ae8..7f586358c 100644 --- a/packages/definitions/src/widget.ts +++ b/packages/definitions/src/widget.ts @@ -9,6 +9,7 @@ export const widgetKinds = [ "dnsHoleControls", "smartHome-entityState", "smartHome-executeAutomation", + "stockPrice", "mediaServer", "calendar", "downloads", diff --git a/packages/request-handler/src/stock-price.ts b/packages/request-handler/src/stock-price.ts new file mode 100644 index 000000000..8219881d9 --- /dev/null +++ b/packages/request-handler/src/stock-price.ts @@ -0,0 +1,58 @@ +import dayjs from "dayjs"; +import { z } from "zod"; + +import { fetchWithTimeout } from "@homarr/common"; + +import { createCachedWidgetRequestHandler } from "./lib/cached-widget-request-handler"; + +export const fetchStockPriceHandler = createCachedWidgetRequestHandler({ + queryKey: "fetchStockPriceResult", + widgetKind: "stockPrice", + async requestAsync(input: { stock: string; timeRange: string; timeInterval: string }) { + const response = await fetchWithTimeout( + `https://query1.finance.yahoo.com/v8/finance/chart/${input.stock}?range=${input.timeRange}&interval=${input.timeInterval}`, + ); + const data = dataSchema.parse(await response.json()); + + if ("error" in data) { + throw new Error(data.error.description); + } + if (data.chart.result.length !== 1) { + throw new Error("Received multiple results"); + } + if (!data.chart.result[0]) { + throw new Error("Received invalid data"); + } + + return data.chart.result[0]; + }, + cacheDuration: dayjs.duration(5, "minutes"), +}); + +const dataSchema = z + .object({ + error: z.object({ + description: z.string(), + }), + }) + .or( + z.object({ + chart: z.object({ + result: z.array( + z.object({ + indicators: z.object({ + quote: z.array( + z.object({ + close: z.array(z.number()), + }), + ), + }), + meta: z.object({ + symbol: z.string(), + shortName: z.string(), + }), + }), + ), + }), + }), + ); diff --git a/packages/translation/src/lang/ca.json b/packages/translation/src/lang/ca.json index 93a445cc5..ce74c4b2b 100644 --- a/packages/translation/src/lang/ca.json +++ b/packages/translation/src/lang/ca.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "", "description": "", diff --git a/packages/translation/src/lang/cn.json b/packages/translation/src/lang/cn.json index 07a92c3a9..5db899dfa 100644 --- a/packages/translation/src/lang/cn.json +++ b/packages/translation/src/lang/cn.json @@ -1424,6 +1424,82 @@ "run": "运行 {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "日历", "description": "在日历视图中显示某个相对时间段内的集成事件", diff --git a/packages/translation/src/lang/cs.json b/packages/translation/src/lang/cs.json index 4a7bbd2d2..5e8ed22cf 100644 --- a/packages/translation/src/lang/cs.json +++ b/packages/translation/src/lang/cs.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendář", "description": "", diff --git a/packages/translation/src/lang/da.json b/packages/translation/src/lang/da.json index 997be0956..86c5a634d 100644 --- a/packages/translation/src/lang/da.json +++ b/packages/translation/src/lang/da.json @@ -677,11 +677,11 @@ "description": "Integration \"{kind}\" kan bruges med søgemaskinerne. Markér dette for automatisk at konfigurere søgemaskinen." }, "createApp": { - "label": "", - "description": "" + "label": "Opret app", + "description": "Opret en app med samme navn og ikon som integrationen. Lad input-feltet være tomt for at oprette app'en med integrations-URL'en." }, "appHref": { - "placeholder": "" + "placeholder": "Brugerdefineret app URL" } }, "action": { @@ -1079,7 +1079,7 @@ "label": "Brugerdefinerede CSS-klasser" }, "borderColor": { - "label": "" + "label": "Kantfarve" } } }, @@ -1136,12 +1136,12 @@ "label": "Gitter" }, "gridHorizontal": { - "label": "" + "label": "Vandret gitter" } } }, "hideTitle": { - "label": "" + "label": "Skjul titel" }, "hideIcon": { "label": "Skjul ikoner" @@ -1424,6 +1424,82 @@ "run": "Kør {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalender", "description": "Vis begivenheder fra dine integrationer i en kalendervisning inden for en vis relativ tidsperiode", @@ -1443,7 +1519,7 @@ "label": "Slut kl" }, "showUnmonitored": { - "label": "" + "label": "Vis uovervåget" } } }, @@ -1675,7 +1751,7 @@ "description": "Vis de aktuelle streams på dine medieservere", "option": {}, "items": { - "currentlyPlaying": "", + "currentlyPlaying": "Afspiller lige nu", "user": "Bruger", "name": "Navn", "id": "Id" @@ -1900,10 +1976,10 @@ "statistics": { "empty": "Tom", "transcodes": "Transkoder", - "transcodesCount": "Transkodninger: {value}", - "healthChecksCount": "Sundhedstjek: {value}", - "filesCount": "Filer: {value}", - "savedSpace": "Gemt plads: {value}", + "transcodesCount": "Transkodninger", + "healthChecksCount": "Sundhedstjek", + "filesCount": "Filer", + "savedSpace": "Gemt plads", "healthChecks": "Sundhedstjek", "videoCodecs": "Kodeks", "videoContainers": "Containere", @@ -2332,7 +2408,7 @@ "label": "Værktøjer", "items": { "docker": "Docker", - "kubernetes": "", + "kubernetes": "Kubernetes", "logs": "Logfiler", "api": "API", "certificates": "Certifikater", @@ -2881,242 +2957,242 @@ }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "Cluster Kontrolpanel", + "label": "Cluster", + "providers": "Udbydere", + "version": "Version", + "architecture": "Arkitektur", "capacity": { - "title": "", + "title": "Kapacitet", "resource": { - "reserved": "", - "used": "" + "reserved": "Reserveret", + "used": "Brugt" } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", - "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "title": "Ressourcer", + "nodes": "Noder", + "namespaces": "Navnerum", + "ingresses": "Ingresses", + "services": "Tjenester", + "pods": "Pods", + "configmaps": "ConfigMaps", + "secrets": "Hemmeligheder", + "volumes": "Volumer" } }, "nodes": { - "label": "", + "label": "Noder", "field": { "name": { - "label": "" + "label": "Navn" }, "state": { - "label": "", + "label": "Tilstand", "option": { - "ready": "", - "NotReady": "" + "ready": "Klar", + "NotReady": "Ikke Klar" } }, "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "RAM" }, "pods": { - "label": "" + "label": "Pods" }, "operatingSystem": { - "label": "" + "label": "OS" }, "architecture": { - "label": "" + "label": "Arkitektur" }, "kubernetesVersion": { - "label": "" + "label": "Kubernetes version" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} noder" } }, "namespaces": { - "label": "", + "label": "Navnerum", "field": { "name": { - "label": "" + "label": "Navn" }, "state": { - "label": "", + "label": "Tilstand", "option": { - "active": "", - "terminating": "" + "active": "Aktiv", + "terminating": "Afslutter" } }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} navneområder" } }, "ingresses": { - "label": "", + "label": "Ingresses", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "Navnerum" }, "className": { - "label": "" + "label": "Klassens navn" }, "rulesAndPaths": { - "label": "" + "label": "Regler & stier" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} ingresses" } }, "services": { - "label": "", + "label": "Tjenester", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "Navnerum" }, "type": { - "label": "" + "label": "Type" }, "ports": { - "label": "" + "label": "Porte" }, "targetPorts": { - "label": "" + "label": "Målporte" }, "clusterIP": { - "label": "" + "label": "Cluster IP" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} tjenester" } }, "pods": { - "label": "", + "label": "Pods", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "Navnerum" }, "image": { - "label": "" + "label": "Billede" }, "applicationType": { - "label": "" + "label": "Applikationstype" }, "status": { - "label": "" + "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} pods" } }, "secrets": { - "label": "", + "label": "Hemmeligheder", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "navnerum" }, "type": { - "label": "" + "label": "type" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} hemmeligheder" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "navnerum" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} configMaps" } }, "volumes": { - "label": "", + "label": "Volumer", "field": { "name": { - "label": "" + "label": "Navn" }, "namespace": { - "label": "" + "label": "Navnerum" }, "accessModes": { - "label": "" + "label": "Adgangstilstande" }, "storage": { - "label": "" + "label": "Lager" }, "storageClassName": { - "label": "" + "label": "Lagerklasse Navn" }, "volumeMode": { - "label": "" + "label": "Volume Mode" }, "volumeName": { - "label": "" + "label": "Volumens Navn" }, "status": { - "label": "" + "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Oprettet" } }, "table": { - "search": "" + "search": "Søg i {count} volumes" } }, "error": { - "internalServerError": "" + "internalServerError": "Kunne ikke hente Kubernetes-data" } }, "permission": { @@ -3205,30 +3281,30 @@ "label": "Docker" }, "kubernetes": { - "label": "", + "label": "Kubernetes", "nodes": { - "label": "" + "label": "Noder" }, "namespaces": { - "label": "" + "label": "Navnerum" }, "ingresses": { - "label": "" + "label": "Ingresses" }, "services": { - "label": "" + "label": "Tjenester" }, "pods": { - "label": "" + "label": "pods" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "Hemmeligheder" }, "volumes": { - "label": "" + "label": "Volumer" } }, "logs": { diff --git a/packages/translation/src/lang/de.json b/packages/translation/src/lang/de.json index d2b344fdd..17f11a112 100644 --- a/packages/translation/src/lang/de.json +++ b/packages/translation/src/lang/de.json @@ -307,12 +307,12 @@ "name": "Name", "members": "Mitglieder", "homeBoard": { - "label": "", - "description": "" + "label": "Home Board", + "description": "Nur Boards welche für die Gruppe zugänglich sind, können ausgewählt werden" }, "mobileBoard": { - "label": "", - "description": "" + "label": "Mobiles Board", + "description": "Nur Boards welche für die Gruppe zugänglich sind, können ausgewählt werden" } }, "permission": { @@ -514,12 +514,12 @@ "board": { "notification": { "success": { - "title": "", - "message": "" + "title": "Einstellungen gespeichert", + "message": "Board Einstellungen erfolgreich gespeichert" }, "error": { - "title": "", - "message": "" + "title": "Einstellungen konnten nicht gespeichert werden", + "message": "Board Einstellungen konnten nicht gespeichert werden" } } } @@ -527,17 +527,17 @@ "changePosition": { "notification": { "success": { - "message": "" + "message": "Position erfolgreich geändert" }, "error": { - "message": "" + "message": "Position konnte nicht geändert werden" } } } }, "defaultGroup": { - "name": "", - "description": "" + "name": "Standardgruppe", + "description": "{name} - Alle angemeldeten Benutzer" } }, "app": { @@ -603,8 +603,8 @@ }, "useDifferentUrlForPing": { "checkbox": { - "label": "", - "description": "" + "label": "Eine andere URL für Ping verwenden", + "description": "Nützlich, wenn Homarr direkt auf einen internen Hostnamen oder Netzwerk zugreifen kann, um die Bandbreitennutzung des ISP zu minimieren" } } }, @@ -677,11 +677,11 @@ "description": "Integration \"{kind}\" kann mit den Suchmaschinen verwendet werden. Wählen Sie dies, um die Suchmaschine automatisch zu konfigurieren." }, "createApp": { - "label": "", - "description": "" + "label": "Anwendung erstellen", + "description": "Erstelle eine App mit dem gleichen Namen und Symbol wie die Integration. Lassen Sie das Eingabefeld unter leer, um die App mit der Integrations URL zu erstellen." }, "appHref": { - "placeholder": "" + "placeholder": "Benutzerdefinierte App URL" } }, "action": { @@ -937,7 +937,7 @@ }, "dangerZone": "Gefahrenbereich", "noResults": "Die Suche ergab keine Treffer", - "unsavedChanges": "", + "unsavedChanges": "Sie haben ungespeicherte Änderungen!", "preview": { "show": "Vorschau ansehen", "hide": "Vorschau ausblenden" @@ -981,7 +981,7 @@ }, "option": { "borderColor": { - "label": "" + "label": "Rahmenfarbe" } }, "remove": { @@ -1079,7 +1079,7 @@ "label": "Benutzerdefinierte CSS Klassen" }, "borderColor": { - "label": "" + "label": "Rahmenfarbe" } } }, @@ -1136,12 +1136,12 @@ "label": "Raster" }, "gridHorizontal": { - "label": "" + "label": "Gitter horizontal" } } }, "hideTitle": { - "label": "" + "label": "Titel ausblenden" }, "hideIcon": { "label": "Symbole verbergen" @@ -1424,6 +1424,82 @@ "run": "{name} ausführen" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalender", "description": "Zeigt Ereignisse aus Ihren Integrationen in einer Kalenderansicht innerhalb eines bestimmten Zeitraums an", @@ -1443,7 +1519,7 @@ "label": "Endet am" }, "showUnmonitored": { - "label": "" + "label": "Nicht überwachte anzeigen" } } }, @@ -1639,7 +1715,7 @@ "app": { "noData": "Keine App gefunden", "description": "Klicken Sie um eine neue App zu erstellen", - "quickCreate": "" + "quickCreate": "Jetzt eine App erstellen" }, "error": { "noIntegration": "Keine Integration ausgewählt", @@ -1675,7 +1751,7 @@ "description": "Zeige die aktuellen Streams auf deinen Medienservern an", "option": {}, "items": { - "currentlyPlaying": "", + "currentlyPlaying": "Aktuelle Wiedergabe", "user": "Benutzer", "name": "Name", "id": "Id" @@ -1842,10 +1918,10 @@ "available": "Verfügbar" }, "status": { - "pending": "", - "approved": "", - "declined": "", - "failed": "" + "pending": "Ausstehend", + "approved": "Bestätigt", + "declined": "Abgelehnt", + "failed": "Fehlgeschlagen" }, "toBeDetermined": "Noch Festzulegen" }, @@ -1900,10 +1976,10 @@ "statistics": { "empty": "Leer", "transcodes": "Transkodieren", - "transcodesCount": "Transkodierung: {value}", - "healthChecksCount": "Gesundheitscheck: {value}", - "filesCount": "Dateien: {value}", - "savedSpace": "Gespeicherter Speicherplatz: {value}", + "transcodesCount": "Transkodierungen", + "healthChecksCount": "Health Check", + "filesCount": "Dateien", + "savedSpace": "Belegter Speicherplatz", "healthChecks": "Gesundheitscheck", "videoCodecs": "Codecs", "videoContainers": "Container", @@ -2048,8 +2124,8 @@ }, "quickCreateApp": { "modal": { - "title": "", - "createAndUse": "" + "title": "Jetzt eine App erstellen", + "createAndUse": "Erstellen und verwenden" } } }, @@ -2126,7 +2202,7 @@ "label": "Transparenz" }, "iconColor": { - "label": "" + "label": "Symbolfarbe" }, "customCss": { "label": "Benutzerdefinierte css für dieses Board", @@ -2144,14 +2220,14 @@ "label": "Anzahl der Spalten" }, "itemRadius": { - "label": "", - "description": "", + "label": "Elementradius", + "description": "Ändert den Grad der Rundung ihrer Kacheln auf dem Board", "option": { - "xs": "", - "sm": "", - "md": "", - "lg": "", - "xl": "" + "xs": "Sehr klein", + "sm": "Klein", + "md": "Mittel", + "lg": "Groß", + "xl": "Sehr groß" } }, "name": { @@ -2175,9 +2251,9 @@ "layout": { "title": "Ansicht", "responsive": { - "title": "", + "title": "Reaktive Layouts", "action": { - "add": "" + "add": "Layout hinzufügen" } } }, @@ -2185,7 +2261,7 @@ "title": "Hintergrund" }, "appearance": { - "title": "" + "title": "Aussehen" }, "customCss": { "title": "Benutzerdefiniertes CSS" @@ -2290,14 +2366,14 @@ "layout": { "field": { "name": { - "label": "" + "label": "Name" }, "columnCount": { - "label": "" + "label": "Anzahl der Spalten" }, "breakpoint": { - "label": "", - "description": "" + "label": "Breakpoint", + "description": "Das Layout wird auf allen Bildschirmen, die größer als dieser breakpoint sind, bis zum nächsten größeren breakpoint verwendet." } } }, @@ -2332,7 +2408,7 @@ "label": "Werkzeuge", "items": { "docker": "Docker", - "kubernetes": "", + "kubernetes": "Kubernetes", "logs": "Logs", "api": "API", "certificates": "Zertifikate", @@ -2531,10 +2607,10 @@ "ownerOfGroupDeleted": "Der Eigentümer dieser Gruppe wurde gelöscht. Derzeit hat sie keinen Besitzer." }, "setting": { - "title": "", - "alert": "", + "title": "Einstellungen", + "alert": "Gruppeneinstellungen werden nach der Reihenfolge der Gruppen in der Liste priorisiert. Die oberen Einstellungen überschreiben die unteren Einstellungen.", "board": { - "title": "" + "title": "Boards" } }, "members": { @@ -2766,7 +2842,7 @@ "title": "Container", "table": { "updated": "Aktualisiert {when}", - "search": "Seach {count} Container", + "search": "{count} Container durchsuchen", "selected": "{selectCount} von {totalCount} ausgewählten Containern" }, "field": { @@ -2881,242 +2957,242 @@ }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "Cluster Dashboard", + "label": "Cluster", + "providers": "Anbieter", + "version": "Version", + "architecture": "Architektur", "capacity": { - "title": "", + "title": "Kapazität", "resource": { - "reserved": "", - "used": "" + "reserved": "Reserviert", + "used": "Benutzt" } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", - "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "title": "Ressourcen", + "nodes": "Nodes", + "namespaces": "Namensräume", + "ingresses": "Ingresse", + "services": "Dienste", + "pods": "Pods", + "configmaps": "ConfigMaps", + "secrets": "Secrets", + "volumes": "Laufwerke" } }, "nodes": { - "label": "", + "label": "Nodes", "field": { "name": { - "label": "" + "label": "Name" }, "state": { - "label": "", + "label": "Zustand", "option": { - "ready": "", - "NotReady": "" + "ready": "Bereit", + "NotReady": "Nicht Bereit" } }, "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "RAM" }, "pods": { - "label": "" + "label": "Pods" }, "operatingSystem": { - "label": "" + "label": "OS" }, "architecture": { - "label": "" + "label": "Architektur" }, "kubernetesVersion": { - "label": "" + "label": "Kubernetes Version" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Nodes durchsuchen" } }, "namespaces": { - "label": "", + "label": "Namensräume", "field": { "name": { - "label": "" + "label": "Name" }, "state": { - "label": "", + "label": "Zustand", "option": { - "active": "", - "terminating": "" + "active": "Aktiv", + "terminating": "Beendet" } }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Namensräume durchsuchen" } }, "ingresses": { - "label": "", + "label": "Ingresse", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "Namensraum" }, "className": { - "label": "" + "label": "Klassenname" }, "rulesAndPaths": { - "label": "" + "label": "Regeln & Pfade" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Ingresse durchsuchen" } }, "services": { - "label": "", + "label": "Dienste", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "Namensraum" }, "type": { - "label": "" + "label": "Typ" }, "ports": { - "label": "" + "label": "Ports" }, "targetPorts": { - "label": "" + "label": "Zielports" }, "clusterIP": { - "label": "" + "label": "Cluster IP" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Services durchsuchen" } }, "pods": { - "label": "", + "label": "Pods", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "Namensraum" }, "image": { - "label": "" + "label": "Image" }, "applicationType": { - "label": "" + "label": "Typ der Anwendung" }, "status": { - "label": "" + "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Pods durchsuchen" } }, "secrets": { - "label": "", + "label": "Secrets", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "namensraum" }, "type": { - "label": "" + "label": "typ" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Secrets durchsuchen" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "namensraum" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} configMaps durchsuchen" } }, "volumes": { - "label": "", + "label": "Laufwerke", "field": { "name": { - "label": "" + "label": "Name" }, "namespace": { - "label": "" + "label": "Namensraum" }, "accessModes": { - "label": "" + "label": "Zugriffsmodi" }, "storage": { - "label": "" + "label": "Speicher" }, "storageClassName": { - "label": "" + "label": "Name der Speicherklasse" }, "volumeMode": { - "label": "" + "label": "Laufwerksmodus" }, "volumeName": { - "label": "" + "label": "Laufwerkname" }, "status": { - "label": "" + "label": "Status" }, "creationTimestamp": { - "label": "" + "label": "Erstellt" } }, "table": { - "search": "" + "search": "{count} Laufwerke durchsuchen" } }, "error": { - "internalServerError": "" + "internalServerError": "Fehler beim Abrufen der Kubernetes Daten" } }, "permission": { @@ -3205,30 +3281,30 @@ "label": "Docker" }, "kubernetes": { - "label": "", + "label": "Kubernetes", "nodes": { - "label": "" + "label": "Nodes" }, "namespaces": { - "label": "" + "label": "Namensräume" }, "ingresses": { - "label": "" + "label": "Ingresse" }, "services": { - "label": "" + "label": "Dienste" }, "pods": { - "label": "" + "label": "pods" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "Secrets" }, "volumes": { - "label": "" + "label": "Laufwerke" } }, "logs": { @@ -3601,7 +3677,7 @@ }, "delete": { "title": "Suchmaschine löschen", - "message": "Sind Sie sicher, dass Sie die Suchmaschine '{name} ' löschen möchten?", + "message": "Sind Sie sicher, dass Sie die Suchmaschine {name} löschen möchten?", "notification": { "success": { "title": "Suchmaschine gelöscht", diff --git a/packages/translation/src/lang/el.json b/packages/translation/src/lang/el.json index 148002ba6..c7b67ab5f 100644 --- a/packages/translation/src/lang/el.json +++ b/packages/translation/src/lang/el.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Ημερολόγιο", "description": "", diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index d11c8d7fe..54307c005 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -1424,6 +1424,82 @@ "run": "Run {name}" } }, + "stockPrice": { + "name": "Stock Price", + "description": "Displays the current stock price of a company", + "option": { + "stock": { + "label": "Stock symbol" + }, + "timeRange": { + "label": "Time Range", + "option": { + "1d": { + "label": "1 Day" + }, + "5d": { + "label": "5 Day" + }, + "1mo": { + "label": "1 Month" + }, + "3mo": { + "label": "3 Months" + }, + "6mo": { + "label": "6 Months" + }, + "ytd": { + "label": "Year to Date" + }, + "1y": { + "label": "1 Year" + }, + "2y": { + "label": "2 Years" + }, + "5y": { + "label": "5 Years" + }, + "10y": { + "label": "10 Years" + }, + "max": { + "label": "Max" + } + } + }, + "timeInterval": { + "label": "Time Interval", + "option": { + "5m": { + "label": "5 Minutes" + }, + "15m": { + "label": "15 Minutes" + }, + "30m": { + "label": "30 Minutes" + }, + "1h": { + "label": "1 Hour" + }, + "1d": { + "label": "1 Day" + }, + "5d": { + "label": "5 Days" + }, + "1wk": { + "label": "1 Week" + }, + "1mo": { + "label": "1 Month" + } + } + } + } + }, "calendar": { "name": "Calendar", "description": "Display events from your integrations in a calendar view within a certain relative time period", diff --git a/packages/translation/src/lang/es.json b/packages/translation/src/lang/es.json index 0756a8cd0..2015228bd 100644 --- a/packages/translation/src/lang/es.json +++ b/packages/translation/src/lang/es.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Calendario", "description": "", diff --git a/packages/translation/src/lang/et.json b/packages/translation/src/lang/et.json index 7eba2123a..aac0fb4d8 100644 --- a/packages/translation/src/lang/et.json +++ b/packages/translation/src/lang/et.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "", "description": "", diff --git a/packages/translation/src/lang/fr.json b/packages/translation/src/lang/fr.json index 3b32de930..ad55d9fb9 100644 --- a/packages/translation/src/lang/fr.json +++ b/packages/translation/src/lang/fr.json @@ -677,11 +677,11 @@ "description": "L'intégration \"{kind}\" peut être utilisée avec les moteurs de recherche. Cochez ceci pour configurer automatiquement le moteur de recherche." }, "createApp": { - "label": "", - "description": "" + "label": "Créer une application", + "description": "Créer une application avec le même nom et l'icône que l'intégration. Laissez le champ de saisie ci-dessous vide pour créer l'application avec l'URL d'intégration." }, "appHref": { - "placeholder": "" + "placeholder": "URL personnalisée de l'application" } }, "action": { @@ -1424,6 +1424,82 @@ "run": "Exécuter {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Calendrier", "description": "Afficher les événements de vos intégrations dans une vue calendrier pendant une certaine période de temps relative", @@ -1683,107 +1759,107 @@ }, "downloads": { "name": "Client de téléchargement", - "description": "", + "description": "Vous permet de visualiser et de gérer vos téléchargements à partir de clients Torrent et Usenet.", "option": { "columns": { - "label": "" + "label": "Colonnes à afficher" }, "enableRowSorting": { - "label": "" + "label": "Activer le tri des éléments" }, "defaultSort": { - "label": "" + "label": "Colonne utilisée pour le tri par défaut" }, "descendingDefaultSort": { - "label": "" + "label": "Inverser le Tri" }, "showCompletedUsenet": { - "label": "" + "label": "Afficher les entrées de Usenet marquées comme terminées" }, "showCompletedTorrent": { - "label": "" + "label": "Afficher les entrées Torrent marquées comme terminées" }, "activeTorrentThreshold": { - "label": "" + "label": "Masquer les Torrents terminés sous ce seuil (en kiB/s)" }, "categoryFilter": { - "label": "" + "label": "Catégories/étiquettes à filtrer" }, "filterIsWhitelist": { - "label": "" + "label": "Filtrer en tant que liste blanche" }, "applyFilterToRatio": { - "label": "" + "label": "Utiliser le filtre pour calculer le ratio" } }, "errors": { - "noColumns": "", - "noCommunications": "" + "noColumns": "Sélectionner les colonnes dans les éléments", + "noCommunications": "Impossible de charger les données à partir de l'intégration" }, "items": { "actions": { - "columnTitle": "" + "columnTitle": "Contrôles" }, "added": { - "columnTitle": "", + "columnTitle": "Ajouté", "detailsTitle": "Date d’ajout" }, "category": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Extras", + "detailsTitle": "Catégories (Ou informations supplémentaires)" }, "downSpeed": { "columnTitle": "Descendant", "detailsTitle": "Vitesse de téléchargement" }, "index": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "#", + "detailsTitle": "Index actuel au sein du client" }, "id": { - "columnTitle": "" + "columnTitle": "Id" }, "integration": { "columnTitle": "Intégration" }, "name": { - "columnTitle": "" + "columnTitle": "Nom de la tâche" }, "progress": { "columnTitle": "Progrès", - "detailsTitle": "" + "detailsTitle": "Progression du téléchargement" }, "ratio": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Ratio", + "detailsTitle": "Ratio de Torrent (reçu/envoyé)" }, "received": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Total reçu", + "detailsTitle": "Total reçu" }, "sent": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Total envoyé", + "detailsTitle": "Total envoyé" }, "size": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Taille du fichier", + "detailsTitle": "Taille totale de la sélection/des fichiers" }, "state": { "columnTitle": "État", - "detailsTitle": "" + "detailsTitle": "État de la tâche" }, "time": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Heure de finition", + "detailsTitle": "Temps écoulé depuis/à l'achèvement" }, "type": { - "columnTitle": "", - "detailsTitle": "" + "columnTitle": "Type", + "detailsTitle": "Type de client de téléchargement" }, "upSpeed": { "columnTitle": "Montant", - "detailsTitle": "" + "detailsTitle": "Vitesse d'envoi" } }, "states": { @@ -1791,8 +1867,8 @@ "queued": "En file d’attente", "paused": "En pause", "completed": "Complété", - "failed": "", - "processing": "", + "failed": "Échec", + "processing": "Traitement en cours", "leeching": "", "stalled": "", "unknown": "Inconnu", @@ -1800,29 +1876,29 @@ }, "actions": { "clients": { - "modalTitle": "", - "pause": "", - "resume": "" + "modalTitle": "Liste des clients de téléchargement", + "pause": "Mettre en pause tous les clients/éléments", + "resume": "Reprendre tous les clients/éléments" }, "client": { - "pause": "", - "resume": "" + "pause": "Mettre en pause le client", + "resume": "Reprendre le client" }, "item": { - "pause": "", - "resume": "", + "pause": "Mettre en pause l'élément", + "resume": "Reprendre l'élément", "delete": { - "title": "", - "modalTitle": "", - "entry": "", - "entryAndFiles": "" + "title": "Supprimer l'élement", + "modalTitle": "Êtes-vous sûr de vouloir supprimer cette tâche ?", + "entry": "Supprimer l'entrée", + "entryAndFiles": "Supprimer l'entrée et le(s) fichier(s)" } } }, - "globalRatio": "" + "globalRatio": "Ratio global" }, "mediaRequests-requestList": { - "name": "", + "name": "Liste des demandes de médias", "description": "Voir la liste de toutes les demandes de médias de votre instance Overseerr ou Jellyseerr", "option": { "linksTargetNewTab": { @@ -1830,27 +1906,27 @@ } }, "pending": { - "approve": "", - "approving": "", - "decline": "" + "approve": "Approuver la demande", + "approving": "Approbation de la demande...", + "decline": "Refuser la demande" }, "availability": { "unknown": "Inconnu", - "pending": "", - "processing": "", + "pending": "En attente", + "processing": "Traitement en cours", "partiallyAvailable": "Partiel", "available": "Disponible" }, "status": { - "pending": "", - "approved": "", - "declined": "", - "failed": "" + "pending": "En attente", + "approved": "Approuvé", + "declined": "Refusé", + "failed": "Échec" }, - "toBeDetermined": "" + "toBeDetermined": "À déterminer" }, "mediaRequests-requestStats": { - "name": "", + "name": "Statistiques des demandes de médias", "description": "Statistiques sur vos demandes de médias", "option": {}, "titles": { @@ -1858,28 +1934,28 @@ "main": "Statistiques des médias", "approved": "Déjà approuvé", "pending": "En attente de validation", - "processing": "", - "declined": "", - "available": "", + "processing": "En cours de traitement", + "declined": "Déjà refusé", + "available": "Déjà disponible", "tv": "Demandes de séries TV", "movie": "Demandes de films", - "total": "" + "total": "Total" }, "users": { "main": "Principaux utilisateurs", - "requests": "" + "requests": "Demandes" } } }, "mediaTranscoding": { - "name": "", - "description": "", + "name": "Transcodage des médias", + "description": "Statistiques, file d’attente actuelle et statut du travailleur de votre transcodage média", "option": { "defaultView": { "label": "Affichage par défaut" }, "queuePageSize": { - "label": "" + "label": "Taille de la page de file d'attente" } }, "tab": { @@ -1887,9 +1963,9 @@ "queue": "File d'attente", "statistics": "Statistiques" }, - "currentIndex": "", + "currentIndex": "{start} - {end} sur {total}", "healthCheck": { - "title": "", + "title": "Bilan de santé", "queued": "En file d’attente", "status": { "healthy": "Sain", @@ -1900,12 +1976,12 @@ "statistics": { "empty": "Vide", "transcodes": "Transcodeur", - "transcodesCount": "", - "healthChecksCount": "", - "filesCount": "", - "savedSpace": "", - "healthChecks": "", - "videoCodecs": "", + "transcodesCount": "Transcodeur", + "healthChecksCount": "Bilans de santé", + "filesCount": "Fichiers", + "savedSpace": "Espace libéré", + "healthChecks": "Bilans de santé", + "videoCodecs": "Codecs", "videoContainers": "Conteneurs", "videoResolutions": "Résolutions" }, @@ -1913,10 +1989,10 @@ "empty": "Vide", "table": { "file": "Fichier", - "eta": "", + "eta": "Temps Restant", "progress": "Progrès", "transcode": "Transcodeur", - "healthCheck": "" + "healthCheck": "Bilan de santé" } }, "queue": { @@ -1925,105 +2001,105 @@ "file": "Fichier", "size": "Taille", "transcode": "Transcodeur", - "healthCheck": "" + "healthCheck": "Bilan de santé" } } } }, "rssFeed": { - "name": "", - "description": "", + "name": "Flux RSS", + "description": "Surveiller et afficher un ou plusieurs flux RSS, ATOM ou JSON génériques", "option": { "feedUrls": { - "label": "" + "label": "URLs du flux" }, "enableRtl": { - "label": "" + "label": "Activer le RTL" }, "textLinesClamp": { - "label": "" + "label": "Raccourci de ligne de description" }, "maximumAmountPosts": { - "label": "" + "label": "Nombre maximum de publications" } } } }, "widgetPreview": { "toggle": { - "enabled": "", - "disabled": "" + "enabled": "Mode édition activé", + "disabled": "Mode édition désactivé" }, "dimensions": { - "title": "" + "title": "Modifier les dimensions" } }, "board": { "action": { "duplicate": { - "title": "", - "message": "", + "title": "Dupliquer le tableau", + "message": "Cela va dupliquer le tableau {name} avec tout son contenu. Si les widgets référencent des intégrations, que vous n'êtes pas autorisé à utiliser, ils seront supprimés.", "notification": { "success": { - "title": "", - "message": "" + "title": "Tableau dupliqué", + "message": "Le tableau a été dupliqué avec succès" }, "error": { - "title": "", - "message": "" + "title": "Impossible de dupliquer le tableau", + "message": "Le tableau n'a pas pu être dupliqué" } } }, "edit": { "notification": { "success": { - "title": "", - "message": "" + "title": "Modifications appliquées avec succès", + "message": "Le tableau a été enregistré avec succès" }, "error": { - "title": "", - "message": "" + "title": "Impossible d'appliquer les modifications", + "message": "Le tableau n'a pas pu être enregistré" } }, "confirmLeave": { - "title": "", - "message": "" + "title": "Modifications non enregistrées", + "message": "Vous avez des modifications non enregistrées, êtes-vous sûr(e) de vouloir quitter ?" } }, "oldImport": { - "label": "", + "label": "Importer depuis homarr avant la version 1.0.0", "notification": { "success": { - "title": "", - "message": "" + "title": "Importation réussie", + "message": "Le tableau a été importé avec succès" }, "error": { - "title": "", - "message": "" + "title": "Échec de l'importation", + "message": "Le tableau n'a pas pu être importé, vérifiez les logs pour plus de détails" } }, "form": { "file": { - "label": "", - "invalidError": "" + "label": "Sélectionnez un fichier JSON", + "invalidError": "Fichier de configuration invalide" }, "apps": { "label": "Applications", "avoidDuplicates": { - "label": "", - "description": "" + "label": "Éviter les doublons", + "description": "Ignore les applications où une application avec le même href existe déjà" }, "onlyImportApps": { - "label": "", - "description": "" + "label": "Importer uniquement les applications", + "description": "Ajoute uniquement les applications, le tableau doit être recréé manuellement" } }, "name": { - "label": "" + "label": "Nom du tableau" }, "screenSize": { - "label": "", - "description": "", + "label": "Taille de l'écran", + "description": "Dans les versions antérieures à 1,0 il existait trois modes différents, de sorte que vous pouviez choisir le nombre de colonnes pour chaque taille d'écran.", "option": { "sm": "Petite", "md": "Moyenne", @@ -2031,16 +2107,16 @@ } }, "sidebarBehavior": { - "label": "", - "description": "", + "label": "Comportement de la barre latérale", + "description": "Les barres latérales ont été enlevées en 1.0, vous pouvez sélectionner ce qui doit se passer avec les éléments à l'intérieur.", "option": { "lastSection": { - "label": "", - "description": "" + "label": "Dernière section", + "description": "La barre latérale sera affichée sous la dernière section" }, "removeItems": { - "label": "", - "description": "" + "label": "Retirer des éléments", + "description": "Les éléments contenus dans la barre latérale seront supprimés" } } } @@ -2048,58 +2124,58 @@ }, "quickCreateApp": { "modal": { - "title": "", - "createAndUse": "" + "title": "Créer une application à la volée", + "createAndUse": "Créer et utiliser" } } }, "field": { "pageTitle": { - "label": "" + "label": "Titre de la page" }, "metaTitle": { - "label": "" + "label": "Titre META" }, "logoImageUrl": { - "label": "" + "label": "URL du logo" }, "faviconImageUrl": { - "label": "" + "label": "URL du Favicon" }, "backgroundImageUrl": { - "label": "" + "label": "URL de l'arrière-plan" }, "backgroundImageAttachment": { "label": "Pièce jointe de l'image d'arrière-plan", "option": { "fixed": { - "label": "", - "description": "" + "label": "Fixe", + "description": "L'arrière-plan reste dans la même position." }, "scroll": { - "label": "", - "description": "" + "label": "Défilement", + "description": "Défilement de l'arrière-plan avec votre souris." } } }, "backgroundImageRepeat": { - "label": "", + "label": "Répétition de l'image d'arrière-plan", "option": { "repeat": { - "label": "", - "description": "" + "label": "Répéter", + "description": "L'image est répétée autant que nécessaire pour couvrir toute la surface de l'image de fond." }, "no-repeat": { - "label": "", - "description": "" + "label": "Pas de répétition", + "description": "L'image n'est pas répétée et peut ne pas remplir l'espace entier." }, "repeat-x": { - "label": "", - "description": "" + "label": "Répéter X", + "description": "Identique à 'Répéter' mais uniquement sur l'axe horizontal." }, "repeat-y": { - "label": "", - "description": "" + "label": "Répéter Y", + "description": "Identique à 'Répéter' mais uniquement sur l'axe vertical." } } }, @@ -2107,12 +2183,12 @@ "label": "Taille de l'image d'arrière-plan", "option": { "cover": { - "label": "", - "description": "" + "label": "Couvrir", + "description": "Mise à l'échelle de l'image aussi petite que possible pour couvrir toute la fenêtre en recadrant l'espace excessif." }, "contain": { - "label": "", - "description": "" + "label": "Contenu", + "description": "Mise à l'échelle de l'image aussi grande que possible dans son conteneur sans recadrer ou étirer l'image." } } }, @@ -2123,61 +2199,61 @@ "label": "Couleur secondaire" }, "opacity": { - "label": "" + "label": "Transparence" }, "iconColor": { - "label": "" + "label": "Couleur de l'icône" }, "customCss": { - "label": "", + "label": "CSS personnalisé pour ce tableau", "description": "En outre, vous pouvez personnaliser votre tableau de bord à l'aide de CSS. Réservé aux utilisateurs expérimentés.", "customClassesAlert": { - "title": "", - "description": "" + "title": "Classes personnalisées", + "description": "Vous pouvez ajouter des classes personnalisées aux éléments de votre tableau dans les options avancées de chaque élément et les utiliser dans le CSS personnalisé ci-dessus." } }, "disableStatus": { - "label": "", - "description": "" + "label": "Désactiver le statut de l'application", + "description": "Désactive la vérification du statut de toutes les applications de ce tableau" }, "columnCount": { - "label": "" + "label": "Nombre de colonnes" }, "itemRadius": { - "label": "", - "description": "", + "label": "Rayon de l'élément", + "description": "Modifier l'arrondi des tuiles sur votre tableau", "option": { - "xs": "", - "sm": "", - "md": "", - "lg": "", - "xl": "" + "xs": "Très petit", + "sm": "Petit", + "md": "Moyen", + "lg": "Grand", + "xl": "Très grand" } }, "name": { "label": "Nom" }, "isPublic": { - "label": "", - "description": "" + "label": "Public", + "description": "Les tableaux publics sont accessibles à tous, même sans compte." } }, "content": { - "metaTitle": "" + "metaTitle": "Tableau {boardName}" }, "setting": { - "title": "", + "title": "Paramètres du tableau {boardName}", "section": { "general": { "title": "Général", - "unrecognizedLink": "" + "unrecognizedLink": "Le lien fourni n'est pas reconnu et ne sera pas prévisualisé, il pourrait encore fonctionner." }, "layout": { "title": "Mise en page", "responsive": { - "title": "", + "title": "Mises en page adaptatives", "action": { - "add": "" + "add": "Ajouter une mise en page" } } }, @@ -2185,26 +2261,26 @@ "title": "Fond" }, "appearance": { - "title": "" + "title": "Apparence" }, "customCss": { - "title": "" + "title": "CSS personnalisé" }, "behavior": { - "title": "" + "title": "Comportement" }, "access": { - "title": "", + "title": "Contrôle d'accès", "permission": { "item": { "view": { "label": "Voir le tableau de bord" }, "modify": { - "label": "" + "label": "Modifier le tableau" }, "full": { - "label": "" + "label": "Accès complet" } } } @@ -2213,41 +2289,41 @@ "title": "Zone de danger", "action": { "rename": { - "label": "", - "description": "", - "button": "", + "label": "Renommer le tableau", + "description": "Modifier le nom cassera tous les liens vers ce tableau.", + "button": "Modifier le nom", "modal": { - "title": "" + "title": "Renommer le tableau" } }, "visibility": { - "label": "", + "label": "Modifier la visibilité du tableau", "description": { - "public": "", - "private": "" + "public": "Ce tableau est actuellement public.", + "private": "Ce tableau est actuellement privé." }, "button": { - "public": "", - "private": "" + "public": "Rendre privé", + "private": "Rendre public" }, "confirm": { "public": { - "title": "", - "description": "" + "title": "Rendre le tableau privé", + "description": "Êtes-vous sûr de vouloir rendre ce tableau privé ? Cela masquera le tableau du public. Les liens pour les utilisateurs invités seront cassés." }, "private": { - "title": "", - "description": "" + "title": "Rendre le tableau public", + "description": "Êtes-vous sûr de vouloir rendre ce tableau public ? Cela rendra le tableau accessible à tout le monde." } } }, "delete": { - "label": "", - "description": "", - "button": "", + "label": "Supprimer ce tableau", + "description": "Une fois que vous supprimez un tableau, il n'y a pas de retour en arrière. Soyez certain de votre choix.", + "button": "Supprimer ce tableau", "confirm": { "title": "Supprimer le tableau de bord", - "description": "" + "description": "Êtes-vous sûr de vouloir supprimer ce tableau ? Cela supprimera définitivement le tableau et tout son contenu." } } } @@ -2256,33 +2332,33 @@ }, "error": { "noBoard": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "Bienvenue sur Homarr", + "description": "Un tableau de bord moderne et élégant qui met toutes vos applications et services à portée de main.", + "link": "Créez votre premier tableau", + "notice": "Pour que cette page disparaisse, créez un tableau et définissez-le en tant que tableau d'accueil" }, "notFound": { - "title": "", - "description": "", - "link": "", - "notice": "" + "title": "Tableau introuvable", + "description": "Le tableau spécifié est soit introuvable, soit vous n'avez pas accès à celui-ci.", + "link": "Voir tous les tableaux", + "notice": "Vérifiez le lien ou contactez un administrateur si vous pensez qu'il devrait être accessible" }, "homeBoard": { - "title": "", + "title": "Pas de tableau d'accueil", "admin": { - "description": "", - "link": "", - "notice": "" + "description": "Vous n'avez pas encore défini de tableau d'accueil pour le serveur.", + "link": "Configurer le tableau d'accueil à l'échelle du serveur", + "notice": "Pour faire disparaître cette page pour tous les utilisateurs, définissez un tableau d'accueil pour le serveur" }, "user": { - "description": "", - "link": "", - "notice": "" + "description": "Vous n'avez pas encore défini de tableau d'accueil.", + "link": "Configurez votre tableau d'accueil", + "notice": "Pour que cette page disparaisse, spécifiez le tableau d'accueil dans vos préférences" }, "anonymous": { - "description": "", - "link": "", - "notice": "" + "description": "L'administrateur du serveur n'a pas encore défini de tableau d'accueil.", + "link": "Voir les tableaux publics", + "notice": "Pour faire disparaître cette page, demandez à l'administrateur du serveur de définir un tableau d'accueil pour le serveur" } } } @@ -2290,63 +2366,63 @@ "layout": { "field": { "name": { - "label": "" + "label": "Nom" }, "columnCount": { - "label": "" + "label": "Nombre de colonnes" }, "breakpoint": { - "label": "", - "description": "" + "label": "Point de rupture", + "description": "La mise en page sera utilisée sur tous les écrans plus grands que ce point de rupture jusqu'au point de rupture suivant." } } }, "management": { - "metaTitle": "", + "metaTitle": "Administration", "title": { - "morning": "", - "afternoon": "", - "evening": "" + "morning": "Bonjour {username}", + "afternoon": "Bonjour {username}", + "evening": "Bonsoir {username}" }, "notFound": { - "title": "", - "text": "" + "title": "Non trouvé", + "text": "Impossible de trouver la ressource demandée" }, "navbar": { "items": { "home": "Accueil", "boards": "Tableaux de bord", "apps": "Applications", - "integrations": "", - "searchEngies": "", - "medias": "", + "integrations": "Intégrations", + "searchEngies": "Moteurs de recherche", + "medias": "Médias", "users": { "label": "Utilisateurs", "items": { "manage": "Gérer", "invites": "Invitations", - "groups": "" + "groups": "Groupes" } }, "tools": { "label": "Outils", "items": { - "docker": "", - "kubernetes": "", - "logs": "", - "api": "", - "certificates": "", - "tasks": "" + "docker": "Docker", + "kubernetes": "Kubernetes", + "logs": "Journaux", + "api": "API", + "certificates": "Certificats", + "tasks": "Tâches" } }, "settings": "Paramètres", "help": { "label": "Aide", "items": { - "documentation": "", - "submitIssue": "", + "documentation": "Documentation", + "submitIssue": "Signaler un problème", "discord": "Communauté Discord", - "sourceCode": "" + "sourceCode": "Code source" } }, "about": "À propos" @@ -2358,57 +2434,57 @@ "board": "Tableaux de bord", "user": "Utilisateurs", "invite": "Invitations", - "integration": "", + "integration": "Intégrations", "app": "Applications", - "group": "" + "group": "Groupes" }, "statisticLabel": { "boards": "Tableaux de bord", - "resources": "", - "authentication": "", - "authorization": "" + "resources": "Ressources", + "authentication": "Authentification", + "authorization": "Autorisation" } }, "board": { "title": "Vos tableaux de bord", "action": { "new": { - "label": "" + "label": "Nouveau tableau" }, "open": { - "label": "" + "label": "Ouvrir le tableau" }, "settings": { "label": "Paramètres" }, "setHomeBoard": { - "label": "", + "label": "Définir comme votre tableau d'accueil", "badge": { "label": "Accueil", - "tooltip": "" + "tooltip": "Ce tableau s'affichera comme votre tableau d'accueil" } }, "setMobileHomeBoard": { - "label": "", + "label": "Définir comme votre tableau mobile", "badge": { - "label": "", - "tooltip": "" + "label": "Mobile", + "tooltip": "Ce tableau s'affichera comme votre tableau mobile" } }, "duplicate": { - "label": "" + "label": "Dupliquer le tableau" }, "delete": { "label": "Supprimer définitivement", "confirm": { "title": "Supprimer le tableau de bord", - "description": "" + "description": "Êtes-vous sûr de vouloir supprimer le tableau {name}?" } } }, "visibility": { - "public": "", - "private": "" + "public": "Ce tableau est public", + "private": "Ce tableau est privé" }, "modal": { "createBoard": { @@ -2421,24 +2497,24 @@ } }, "media": { - "includeFromAllUsers": "" + "includeFromAllUsers": "Inclure les médias de tous les utilisateurs" }, "user": { - "back": "", - "fieldsDisabledExternalProvider": "", + "back": "Retourner à la liste des utilisateurs", + "fieldsDisabledExternalProvider": "Certains champs sont désactivés car ils sont gérés par un fournisseur d'authentification externe.", "setting": { "general": { "title": "Général", "item": { - "language": "", + "language": "Langue et région", "board": { - "title": "", + "title": "Tableau d'accueil", "type": { - "general": "", - "mobile": "" + "general": "Général", + "mobile": "Mobile" } }, - "search": "", + "search": "Rechercher", "firstDayOfWeek": "Premier jour de la semaine", "accessibility": "Accessibilité" } @@ -2455,50 +2531,50 @@ "title": "Utilisateurs" }, "edit": { - "metaTitle": "" + "metaTitle": "Modifier l'utilisateur {username}" }, "create": { "metaTitle": "Créer un utilisateur", - "title": "", + "title": "Créer un nouvel utilisateur", "step": { "personalInformation": { - "label": "" + "label": "Informations personnelles" }, "security": { "label": "Sécurité" }, "groups": { - "label": "", - "title": "", - "description": "" + "label": "Groupes", + "title": "Sélectionnez tous les groupes dont l'utilisateur doit être membre", + "description": "Le groupe {everyoneGroup} est assigné à tous les utilisateurs et ne peut pas être supprimé." }, "review": { - "label": "" + "label": "Aperçu" }, "completed": { - "title": "" + "title": "Utilisateur créé" }, "error": { - "title": "" + "title": "La création de l'utilisateur a échoué" } }, "action": { - "createAnother": "", - "back": "" + "createAnother": "Créer un autre utilisateur", + "back": "Retourner à la liste des utilisateurs" } }, "invite": { "title": "Gérer les invitations des utilisateurs", "action": { "new": { - "title": "", + "title": "Nouvelle invitation", "description": "Après expiration, une invitation ne sera plus valide et le destinataire de cette invitation ne pourra pas créer un compte." }, "copy": { - "title": "", - "description": "", + "title": "Copier l'invitation", + "description": "Votre invitation a été générée. Après avoir fermé cette fenêtre, vous ne pourrez plus copier ce lien. Si vous ne souhaitez plus inviter cette personne, vous pouvez supprimer l'invitation à tout moment.", "link": "Lien d'invitation", - "button": "" + "button": "Copier et fermer" }, "delete": { "title": "Supprimer une invitation", @@ -2507,7 +2583,7 @@ }, "field": { "id": { - "label": "" + "label": "ID" }, "creator": { "label": "Créateur" @@ -2522,30 +2598,30 @@ } }, "group": { - "back": "", + "back": "Retourner à la liste des groupes", "setting": { "general": { "title": "Général", "owner": "Propriétaire", - "ownerOfGroup": "", - "ownerOfGroupDeleted": "" + "ownerOfGroup": "Propriétaire de ce groupe", + "ownerOfGroupDeleted": "Le propriétaire de ce groupe a été supprimé. Il n'a actuellement aucun propriétaire." }, "setting": { - "title": "", - "alert": "", + "title": "Paramètres", + "alert": "Les paramètres du groupe sont priorisés par l'ordre des groupes dans la liste. Les paramètres du haut remplacent les paramètres du bas.", "board": { - "title": "" + "title": "Tableaux de bord" } }, "members": { - "title": "", - "search": "", - "notFound": "" + "title": "Membres", + "search": "Trouver un membre", + "notFound": "Aucun membre n'a été trouvé" }, "permissions": { - "title": "", + "title": "Permissions", "form": { - "unsavedChanges": "" + "unsavedChanges": "Vous avez des modifications non enregistrées !" } } } @@ -2554,188 +2630,188 @@ "title": "Paramètres", "notification": { "success": { - "message": "" + "message": "Paramètres enregistrés avec succès" }, "error": { - "message": "" + "message": "Échec de l'enregistrement des paramètres" } }, "section": { "analytics": { - "title": "", + "title": "Statistiques", "general": { - "title": "", - "text": "" + "title": "Envoyer des statistiques anonymes", + "text": "Homarr enverra des statistiques anonymes en utilisant le logiciel open source Umami. Il ne recueille jamais aucune information personnelle et est donc entièrement conforme au RGPD & CCPA. Nous vous encourageons à activer les statistiques parce qu'elles aident notre équipe open source à identifier les problèmes et à prioriser notre backlog." }, "widgetData": { - "title": "", - "text": "" + "title": "Données du widget", + "text": "Envoie quels widgets (et leur quantité) vous avez configurés. N'inclut pas les URLs, les noms ou toute autre donnée." }, "integrationData": { - "title": "", - "text": "" + "title": "Données d'intégration", + "text": "Envoie quelles intégrations (et leur quantité) vous avez configurées. N'inclut pas les URLs, les noms ou toute autre donnée." }, "usersData": { - "title": "", - "text": "" + "title": "Données utilisateur", + "text": "Envoie le nombre d'utilisateurs et si vous avez activé le SSO" } }, "crawlingAndIndexing": { - "title": "", - "warning": "", + "title": "Collecte et indexation", + "warning": "Activer ou désactiver n'importe quel paramètre ici aura un impact considérable sur la façon dont les moteurs de recherche indexeront et exploreront votre page. N'importe quel paramètre est une requête et il appartient au collecteur d'appliquer ces paramètres. Toute modification peut prendre jusqu'à plusieurs jours ou semaines pour être appliquée. Certains paramètres peuvent être spécifiques au moteur de recherche.", "noIndex": { - "title": "", - "text": "" + "title": "Ne pas indexer", + "text": "Ne pas indexer le site sur les moteurs de recherche et ne l'afficher dans aucun résultat de recherche" }, "noFollow": { - "title": "", - "text": "" + "title": "Ne pas suivre", + "text": "Ne suivre aucun lien lors de l'indexation. La désactivation de cette option conduira les collecteurs à suivre tous les liens sur Homarr." }, "noTranslate": { - "title": "", - "text": "" + "title": "Pas de traduction", + "text": "Quand la langue du site est susceptible de ne pas être celle que l'utilisateur est susceptible de vouloir lire, Google affichera un lien de traduction dans les résultats de la recherche" }, "noSiteLinksSearchBox": { - "title": "", - "text": "" + "title": "Pas de zone de recherche de liens du site", + "text": "Google va construire une boîte de recherche avec les liens explorés avec d'autres liens directs. Activer cette option demandera à Google de désactiver cette boite." } }, "board": { "title": "Tableaux de bord", "homeBoard": { - "label": "", - "mobileLabel": "", - "description": "" + "label": "Tableau de bord global", + "mobileLabel": "Tableau de bord mobile global", + "description": "Seuls les tableaux publics sont disponibles pour la sélection" }, "status": { - "title": "", + "title": "État de l'application", "enableStatusByDefault": { - "label": "", - "description": "" + "label": "Activer l'état par défaut", + "description": "Lors de l'ajout d'un élément application, le statut sera activé par défaut" }, "forceDisableStatus": { - "label": "", - "description": "" + "label": "Forcer la désactivation de l'état", + "description": "Le statut des applications sera désactivé pour tous les utilisateurs et ne peut pas être activé" } } }, "search": { - "title": "", + "title": "Rechercher", "defaultSearchEngine": { - "label": "", - "description": "" + "label": "Moteur de recherche global par défaut", + "description": "Les moteurs de recherche d'intégration ne peuvent pas être sélectionnés ici" } }, "appearance": { "title": "Apparence", "defaultColorScheme": { - "label": "", + "label": "Schéma de couleurs par défaut", "options": { - "light": "", - "dark": "" + "light": "Clair", + "dark": "Sombre" } } }, "culture": { - "title": "", + "title": "Culture", "defaultLocale": { - "label": "" + "label": "Langue par défaut" } } } }, "tool": { "tasks": { - "title": "", + "title": "Tâches", "status": { - "idle": "", - "running": "", + "idle": "Inactif", + "running": "En cours", "error": "Erreur" }, "job": { "minecraftServerStatus": { - "label": "" + "label": "État du serveur Minecraft" }, "iconsUpdater": { - "label": "" + "label": "Mise à jour des icônes" }, "analytics": { - "label": "" + "label": "Statistiques" }, "smartHomeEntityState": { - "label": "" + "label": "État de l'entité Maison Connectée" }, "ping": { - "label": "" + "label": "Pings" }, "mediaServer": { "label": "Serveur multimédia" }, "mediaOrganizer": { - "label": "" + "label": "Organisateurs de Médias" }, "downloads": { - "label": "" + "label": "Téléchargements" }, "mediaRequestStats": { - "label": "" + "label": "Statistiques des demandes de médias" }, "mediaRequestList": { - "label": "" + "label": "Liste des demandes de médias" }, "rssFeeds": { - "label": "" + "label": "Flux RSS" }, "indexerManager": { - "label": "" + "label": "Gestionnaire d’indexeur" }, "healthMonitoring": { - "label": "" + "label": "Moniteur de santé" }, "dnsHole": { - "label": "" + "label": "Données du puit DNS" }, "sessionCleanup": { - "label": "" + "label": "Nettoyage de session" }, "updateChecker": { - "label": "" + "label": "Vérificateur de mise à jour" }, "mediaTranscoding": { - "label": "" + "label": "Transcodage des médias" } } }, "api": { - "title": "", + "title": "API", "modal": { "createApiToken": { - "title": "", - "description": "", - "button": "" + "title": "Jeton API créé", + "description": "Le jeton API a été créé. Attention, ce jeton est chiffré dans la base de données et ne sera plus jamais transféré à vous. Si vous perdez ce jeton, vous ne pourrez plus récupérer ce jeton spécifique.", + "button": "Copier et fermer" } }, "tab": { "documentation": { - "label": "" + "label": "Documentation" }, "apiKey": { - "label": "", - "title": "", + "label": "Authentification", + "title": "Clés API", "button": { - "createApiToken": "" + "createApiToken": "Créer un jeton API" }, "modal": { "delete": { - "title": "", - "text": "" + "title": "Supprimer le jeton API", + "text": "Ceci supprimera définitivement le jeton API. Les clients API utilisant ce jeton ne peuvent plus s'authentifier et effectuer des requêtes API. Cette action ne peut pas être annulée." } }, "table": { "header": { - "id": "", - "createdBy": "", - "actions": "" + "id": "ID", + "createdBy": "Créé par", + "actions": "Actions" } } } @@ -2743,20 +2819,20 @@ } }, "about": { - "version": "", - "text": "", + "version": "Version {version}", + "text": "Homarr est un projet open source axé sur la communauté qui est maintenu par des volontaires. Grâce à ces personnes, Homarr est un projet en pleine expansion depuis 2021. Notre équipe travaille à distance depuis plusieurs pays différents sur Homarr, dans leur temps libre et sans aucune compensation.", "accordion": { "contributors": { - "title": "", - "subtitle": "" + "title": "Contributeur/trices", + "subtitle": "{count} mainteneurs de code & de Homarr" }, "translators": { - "title": "", - "subtitle": "" + "title": "Traducteurs", + "subtitle": "{count} ont contribué à des traductions dans de nombreuses langues" }, "libraries": { - "title": "", - "subtitle": "" + "title": "Bibliothèques", + "subtitle": "{count} utilisés dans le Code d'Homarr" } } } @@ -2765,9 +2841,9 @@ "docker": { "title": "Conteneurs", "table": { - "updated": "", - "search": "", - "selected": "" + "updated": "Mis à jour {when}", + "search": "Rechercher dans {count} conteneurs", + "selected": "{selectCount} sur {totalCount} conteneurs sélectionnés" }, "field": { "name": { @@ -2777,19 +2853,19 @@ "label": "État", "option": { "created": "Créé", - "running": "", + "running": "Exécution", "paused": "En pause", "restarting": "Redémarrage en cours", - "exited": "", + "exited": "Quitté", "removing": "Suppression en cours", - "dead": "" + "dead": "Mort" } }, "containerImage": { - "label": "" + "label": "Image" }, "ports": { - "label": "" + "label": "Ports" } }, "action": { @@ -2797,25 +2873,25 @@ "label": "Début", "notification": { "success": { - "title": "", - "message": "" + "title": "Conteneurs démarrés", + "message": "Les conteneurs ont été démarrés avec succès" }, "error": { - "title": "", - "message": "" + "title": "Conteneurs non démarrés", + "message": "Les conteneurs n'ont pas pu être démarrés" } } }, "stop": { - "label": "", + "label": "Stop", "notification": { "success": { - "title": "", - "message": "" + "title": "Conteneurs arrêtés", + "message": "Les conteneurs ont été arrêtés avec succès" }, "error": { - "title": "", - "message": "" + "title": "Conteneurs non arrêtés", + "message": "Les conteneurs n'ont pas pu être arrêtés" } } }, @@ -2823,12 +2899,12 @@ "label": "Redémarrer", "notification": { "success": { - "title": "", - "message": "" + "title": "Conteneurs redémarrés", + "message": "Les conteneurs ont été redémarrés avec succès" }, "error": { - "title": "", - "message": "" + "title": "Conteneurs non redémarrés", + "message": "Les conteneurs n'ont pas pu être redémarrés" } } }, @@ -2836,316 +2912,316 @@ "label": "Supprimer", "notification": { "success": { - "title": "", - "message": "" + "title": "Conteneurs supprimés", + "message": "Les conteneurs ont été supprimés avec succès" }, "error": { - "title": "", - "message": "" + "title": "Conteneurs non supprimés", + "message": "Les conteneurs n'ont pas pu être supprimés" } } }, "refresh": { - "label": "", + "label": "Actualiser", "notification": { "success": { - "title": "", - "message": "" + "title": "Conteneurs actualisés", + "message": "Vous visualisez maintenant les données les plus récentes" }, "error": { - "title": "", - "message": "" + "title": "Conteneurs non actualisés", + "message": "Une erreur s'est produite lors de l'actualisation des conteneurs" } } }, "addToHomarr": { - "label": "", + "label": "Ajouter à Homarr", "notification": { "success": { - "title": "", - "message": "" + "title": "Ajouté à Homarr", + "message": "Les applications sélectionnées ont été ajoutées à Homarr" }, "error": { - "title": "", - "message": "" + "title": "Impossible d'ajouter à Homarr", + "message": "Les applications sélectionnées n'ont pas pu être ajoutées à Homarr" } }, "modal": { - "title": "" + "title": "Ajouter des conteneurs Docker à Homarr" } } }, "error": { - "internalServerError": "" + "internalServerError": "Impossible de récupérer les conteneurs Docker" } }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "Tableau de bord du cluster", + "label": "Cluster", + "providers": "Fournisseurs", + "version": "Version", + "architecture": "Architecture", "capacity": { - "title": "", + "title": "Capacité", "resource": { - "reserved": "", - "used": "" + "reserved": "Réservé", + "used": "Utilisé " } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", + "title": "Ressources", + "nodes": "Nœuds", + "namespaces": "Espaces de noms", "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "services": "Services", + "pods": "Pods", + "configmaps": "ConfigMaps", + "secrets": "Secrets", + "volumes": "Volumes" } }, "nodes": { - "label": "", + "label": "Nœuds", "field": { "name": { - "label": "" + "label": "Nom" }, "state": { - "label": "", + "label": "État", "option": { - "ready": "", - "NotReady": "" + "ready": "Prêt", + "NotReady": "Pas Prêt" } }, "cpu": { - "label": "" + "label": "CPU" }, "memory": { - "label": "" + "label": "RAM" }, "pods": { - "label": "" + "label": "Pods" }, "operatingSystem": { - "label": "" + "label": "OS" }, "architecture": { - "label": "" + "label": "Architecture" }, "kubernetesVersion": { - "label": "" + "label": "Version de Kubernetes" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} nœuds" } }, "namespaces": { - "label": "", + "label": "Espaces de noms", "field": { "name": { - "label": "" + "label": "Nom" }, "state": { - "label": "", + "label": "État", "option": { - "active": "", - "terminating": "" + "active": "Actif", + "terminating": "Arrêt en cours" } }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} espaces de noms" } }, "ingresses": { "label": "", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de noms" }, "className": { - "label": "" + "label": "Nom de la classe" }, "rulesAndPaths": { - "label": "" + "label": "Règles & chemins" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} ingresses" } }, "services": { - "label": "", + "label": "Services", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de noms" }, "type": { - "label": "" + "label": "Type" }, "ports": { - "label": "" + "label": "Ports" }, "targetPorts": { - "label": "" + "label": "Ports cibles" }, "clusterIP": { - "label": "" + "label": "IP du cluster" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} services" } }, "pods": { - "label": "", + "label": "Pods", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de noms" }, "image": { - "label": "" + "label": "Image" }, "applicationType": { - "label": "" + "label": "Type d'Application" }, "status": { - "label": "" + "label": "État" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} pods" } }, "secrets": { - "label": "", + "label": "Secrets", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de nom" }, "type": { - "label": "" + "label": "Type" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} secrets" } }, "configmaps": { - "label": "", + "label": "ConfigMaps", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de noms" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} configMaps" } }, "volumes": { - "label": "", + "label": "Volumes", "field": { "name": { - "label": "" + "label": "Nom" }, "namespace": { - "label": "" + "label": "Espace de noms" }, "accessModes": { - "label": "" + "label": "Modes d'accès" }, "storage": { - "label": "" + "label": "Stockage" }, "storageClassName": { - "label": "" + "label": "Nom de la classe de stockage" }, "volumeMode": { - "label": "" + "label": "Mode du volume" }, "volumeName": { - "label": "" + "label": "Nom du volume" }, "status": { - "label": "" + "label": "État" }, "creationTimestamp": { - "label": "" + "label": "Créé le" } }, "table": { - "search": "" + "search": "Rechercher dans {count} volumes" } }, "error": { - "internalServerError": "" + "internalServerError": "Impossible de récupérer les données de Kubernetes" } }, "permission": { - "title": "", + "title": "Permissions", "userSelect": { - "title": "" + "title": "Ajouter une permission utilisateur" }, "groupSelect": { - "title": "" + "title": "Ajouter une permission de groupe" }, "tab": { "user": "Utilisateurs", - "group": "", - "inherited": "" + "group": "Groupes", + "inherited": "Groupes hérités" }, "field": { "user": { "label": "Utilisateur" }, "group": { - "label": "" + "label": "Groupe" }, "permission": { - "label": "" + "label": "Permission" } }, "action": { - "saveUser": "", - "saveGroup": "" + "saveUser": "Enregistrer la permission utilisateur", + "saveGroup": "Enregistrer la permission du groupe" } }, "navigationStructure": { @@ -3155,30 +3231,30 @@ "label": "Tableaux de bord" }, "integrations": { - "label": "", + "label": "Intégrations", "edit": { "label": "Modifier" }, "new": { - "label": "" + "label": "Nouveau" } }, "search-engines": { - "label": "", + "label": "Moteurs de recherche", "new": { - "label": "" + "label": "Nouveau" }, "edit": { "label": "Modifier" } }, "medias": { - "label": "" + "label": "Médias" }, "apps": { "label": "Applications", "new": { - "label": "" + "label": "Nouveau" }, "edit": { "label": "Modifier" @@ -3193,7 +3269,7 @@ "security": "Sécurité", "board": "Tableaux de bord", "groups": { - "label": "" + "label": "Groupes" }, "invites": { "label": "Invitations" @@ -3202,40 +3278,40 @@ "tools": { "label": "Outils", "docker": { - "label": "" + "label": "Docker" }, "kubernetes": { - "label": "", + "label": "Kubernetes", "nodes": { - "label": "" + "label": "Nœuds" }, "namespaces": { - "label": "" + "label": "Espaces de noms" }, "ingresses": { "label": "" }, "services": { - "label": "" + "label": "Services" }, "pods": { - "label": "" + "label": "Pods" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "Secrets" }, "volumes": { - "label": "" + "label": "Volumes" } }, "logs": { - "label": "" + "label": "Journaux" }, "certificates": { - "label": "" + "label": "Certificats" } }, "settings": { @@ -3247,28 +3323,28 @@ } }, "search": { - "placeholder": "", - "nothingFound": "", + "placeholder": "Rechercher quelque chose", + "nothingFound": "Aucun résultat", "error": { - "fetch": "" + "fetch": "Une erreur s'est produite lors de la récupération des données." }, "mode": { "appIntegrationBoard": { - "help": "", + "help": "Rechercher des applications, des intégrations ou des tableaux", "group": { "app": { "title": "Applications", "children": { "action": { "open": { - "label": "" + "label": "Ouvrir l'url de l'application" }, "edit": { - "label": "" + "label": "Modifier l'application" } }, "detail": { - "title": "" + "title": "Sélectionnez une action pour l'application" } } }, @@ -3277,122 +3353,122 @@ "children": { "action": { "open": { - "label": "" + "label": "Ouvrir le tableau" }, "homeBoard": { - "label": "" + "label": "Définir comme votre tableau d'accueil" }, "mobileBoard": { - "label": "" + "label": "Définir comme votre tableau mobile" }, "settings": { - "label": "" + "label": "Ouvrir les paramètres" } }, "detail": { - "title": "" + "title": "Sélectionnez une action pour le tableau" } } }, "integration": { - "title": "" + "title": "Intégrations" } } }, "command": { - "help": "", + "help": "Activer le mode commande", "group": { "localCommand": { - "title": "" + "title": "Commandes locales" }, "globalCommand": { - "title": "", + "title": "Commandes globales", "option": { "colorScheme": { "light": "Activer le mode clair", "dark": "Activer le mode sombre" }, "language": { - "label": "", + "label": "Changer la langue", "children": { "detail": { - "title": "" + "title": "Sélectionnez votre langue de préférence" } } }, "newBoard": { - "label": "" + "label": "Créer un nouveau tableau" }, "importBoard": { - "label": "" + "label": "Importer un tableau" }, "newApp": { - "label": "" + "label": "Créer une nouvelle application" }, "newIntegration": { - "label": "", + "label": "Créer une nouvelle intégration", "children": { "detail": { - "title": "" + "title": "Sélectionnez le type d'intégration que vous souhaitez créer" } } }, "newUser": { - "label": "" + "label": "Créer un nouvel utilisateur" }, "newInvite": { - "label": "" + "label": "Créer une nouvelle invitation" }, "newGroup": { - "label": "" + "label": "Créer un nouveau groupe" } } } } }, "media": { - "requestMovie": "", - "requestSeries": "", - "openIn": "" + "requestMovie": "Demander un film", + "requestSeries": "Demander une série", + "openIn": "Ouvrir dans {kind}" }, "external": { - "help": "", + "help": "Utiliser un moteur de recherche externe", "group": { "searchEngine": { - "title": "", + "title": "Moteurs de recherche", "children": { "action": { "search": { - "label": "" + "label": "Rechercher avec {name}" } }, "detail": { - "title": "" + "title": "Sélectionnez une action pour le moteur de recherche" }, "searchResults": { - "title": "" + "title": "Sélectionnez un résultat de recherche pour les actions" } }, "option": { "google": { - "name": "", - "description": "" + "name": "Google", + "description": "Rechercher sur le Web avec Google" }, "bing": { - "name": "", - "description": "" + "name": "Bing", + "description": "Rechercher sur le web avec Bing" }, "duckduckgo": { - "name": "", - "description": "" + "name": "DuckDuckGo", + "description": "Rechercher sur le web avec DuckDuckGo" }, "torrent": { - "name": "", - "description": "" + "name": "Torrents", + "description": "Rechercher des torrents sur torrentdownloads.pro" }, "youTube": { - "name": "", - "description": "" + "name": "YouTube", + "description": "Cherchez une vidéo sur YouTube" } } } @@ -3401,16 +3477,16 @@ "help": { "group": { "mode": { - "title": "" + "title": "Modes" }, "help": { "title": "Aide", "option": { "documentation": { - "label": "" + "label": "Documentation" }, "submitIssue": { - "label": "" + "label": "Signaler un problème" }, "discord": { "label": "Communauté Discord" @@ -3422,81 +3498,81 @@ "home": { "group": { "search": { - "title": "", + "title": "Rechercher", "option": { "other": { - "label": "" + "label": "Rechercher avec un autre moteur de recherche" }, "no-default": { - "label": "", - "description": "" + "label": "Aucun moteur de recherche par défaut", + "description": "Définir un moteur de recherche par défaut dans les préférences" }, "search": { - "label": "" + "label": "Rechercher «{query}» avec {name}" }, "from-integration": { - "description": "" + "description": "Commence à taper pour chercher" } } }, "local": { - "title": "" + "title": "Résultats locaux" } } }, "page": { - "help": "", + "help": "Rechercher des pages", "group": { "page": { - "title": "", + "title": "Pages", "option": { "manageHome": { - "label": "" + "label": "Gérer la page d'accueil" }, "manageBoard": { - "label": "" + "label": "Gérer les tableaux" }, "manageApp": { - "label": "" + "label": "Gérer les applications" }, "manageIntegration": { - "label": "" + "label": "Gérer les intégrations" }, "manageSearchEngine": { - "label": "" + "label": "Gérer les moteurs de recherche" }, "manageMedia": { - "label": "" + "label": "Gérer les médias" }, "manageUser": { "label": "Gérer les utilisateurs" }, "manageInvite": { - "label": "" + "label": "Gérer les invitations" }, "manageGroup": { - "label": "" + "label": "Gérer les groupes" }, "manageDocker": { - "label": "" + "label": "Gérer Docker" }, "manageApi": { - "label": "" + "label": "Gérer l'API" }, "manageLog": { - "label": "" + "label": "Voir les journaux" }, "manageTask": { - "label": "" + "label": "Gérer les Tâches" }, "manageSettings": { - "label": "" + "label": "Paramètres généraux" }, "about": { "label": "À propos" }, "homeBoard": { - "label": "" + "label": "Tableau de bord" }, "preferences": { "label": "Vos préférences" @@ -3506,37 +3582,37 @@ } }, "userGroup": { - "help": "", + "help": "Rechercher des utilisateurs ou des groupes", "group": { "user": { "title": "Utilisateurs", "children": { "action": { "detail": { - "label": "" + "label": "Afficher les détails de l’utilisateur" } }, "detail": { - "title": "" + "title": "Sélectionnez une action pour l'utilisateur" } } }, "group": { - "title": "", + "title": "Groupes", "children": { "action": { "detail": { - "label": "" + "label": "Afficher les détails du groupe" }, "manageMember": { - "label": "" + "label": "Gérer les membres" }, "managePermission": { - "label": "" + "label": "Gérer les permissions" } }, "detail": { - "title": "" + "title": "Sélectionnez une action pour le groupe" } } } @@ -3544,72 +3620,72 @@ } }, "engine": { - "search": "", + "search": "Trouver un moteur de recherche", "field": { "name": { "label": "Nom" }, "short": { - "label": "" + "label": "Court" }, "urlTemplate": { - "label": "" + "label": "Modèle de recherche d'URL" }, "description": { - "label": "" + "label": "Description" } }, "page": { "list": { - "title": "", + "title": "Moteurs de recherche", "noResults": { - "title": "", - "action": "" + "title": "Il n'y a pas encore de moteur de recherche", + "action": "Créez votre premier moteur de recherche" }, - "interactive": "" + "interactive": "Interactif, utilise une intégration" }, "create": { - "title": "", + "title": "Nouveau moteur de recherche", "notification": { "success": { - "title": "", - "message": "" + "title": "Moteur de recherche créé", + "message": "Le moteur de recherche a été créé avec succès" }, "error": { - "title": "", - "message": "" + "title": "Moteur de recherche non créé", + "message": "Le moteur de recherche n'a pas pu être créé" } } }, "edit": { - "title": "", + "title": "Modifier un moteur de recherche", "notification": { "success": { - "title": "", - "message": "" + "title": "Modifications appliquées avec succès", + "message": "Le moteur de recherche a été enregistré avec succès" }, "error": { - "title": "", - "message": "" + "title": "Impossible d'appliquer les modifications", + "message": "Le moteur de recherche n'a pas pu être enregistré" } }, - "configControl": "", + "configControl": "Configuration", "searchEngineType": { - "generic": "", - "fromIntegration": "" + "generic": "Générique", + "fromIntegration": "À partir de l'intégration" } }, "delete": { - "title": "", - "message": "", + "title": "Supprimer le moteur de recherche", + "message": "Êtes-vous sûr(e) de vouloir supprimer le moteur de recherche {name}?", "notification": { "success": { - "title": "", - "message": "" + "title": "Moteur de recherche supprimé", + "message": "Le moteur de recherche a été supprimé avec succès" }, "error": { - "title": "", - "message": "" + "title": "Moteur de recherche non supprimé", + "message": "Le moteur de recherche n'a pas pu être supprimé" } } } @@ -3617,15 +3693,15 @@ "media": { "request": { "modal": { - "title": "", + "title": "Demander \"{name}\"", "table": { "header": { - "season": "", - "episodes": "" + "season": "Saison", + "episodes": "Épisodes" } }, "button": { - "send": "" + "send": "Envoyer la demande" } } } @@ -3635,39 +3711,39 @@ "certificate": { "page": { "list": { - "title": "", - "description": "", + "title": "Certificats de confiance", + "description": "Utilisé par Homarr pour demander les données des intégrations.", "noResults": { - "title": "" + "title": "Il n'y a pas encore de certificats" }, - "expires": "" + "expires": "Expire le {when}" } }, "action": { "create": { - "label": "", + "label": "Ajouter un certificat", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificat ajouté", + "message": "Le certificat a été ajouté avec succès" }, "error": { - "title": "", - "message": "" + "title": "Impossible d'ajouter le certificat", + "message": "Le certificat n'a pas pu être ajouté" } } }, "remove": { - "label": "", - "confirm": "", + "label": "Supprimer le certificat", + "confirm": "Êtes-vous sûr de vouloir supprimer le certificat ?", "notification": { "success": { - "title": "", - "message": "" + "title": "Certificat supprimé", + "message": "Le certificat a été supprimé avec succès" }, "error": { - "title": "", - "message": "" + "title": "Certificat non supprimé", + "message": "Le certificat n'a pas pu être supprimé" } } } diff --git a/packages/translation/src/lang/he.json b/packages/translation/src/lang/he.json index 5275afe5d..31381665f 100644 --- a/packages/translation/src/lang/he.json +++ b/packages/translation/src/lang/he.json @@ -677,11 +677,11 @@ "description": "אינטגרציה {kind} יכולה לשמש עם מנועי חיפוש. סמן עבור הגדרה אוטומטית של מנוע חיפוש." }, "createApp": { - "label": "", - "description": "" + "label": "יצירת אפליקציה", + "description": "יצירת אפליקציה עם אותו שם וסמל כמו האינטגרציה. יש להשאיר את שדה הקלט למטה ריק כדי ליצור את האפליקציה עם כתובת האתר לאינטגרציה." }, "appHref": { - "placeholder": "" + "placeholder": "כתובת אתר מותאמת אישית של אפליקציה" } }, "action": { @@ -1079,7 +1079,7 @@ "label": "מחלקות עיצוב מותאמות אישית" }, "borderColor": { - "label": "" + "label": "צבע מסגרת" } } }, @@ -1136,12 +1136,12 @@ "label": "רשת" }, "gridHorizontal": { - "label": "" + "label": "רשת אופקית" } } }, "hideTitle": { - "label": "" + "label": "הסתר כותרת" }, "hideIcon": { "label": "הסתרת אייקונים" @@ -1424,6 +1424,82 @@ "run": "הפעל {name}" } }, + "stockPrice": { + "name": "מחיר המניה", + "description": "מציג את מחיר המניה הנוכחי של חברה", + "option": { + "stock": { + "label": "סמל מניה" + }, + "timeRange": { + "label": "טווח זמן", + "option": { + "1d": { + "label": "יום אחד" + }, + "5d": { + "label": "חמישה ימים" + }, + "1mo": { + "label": "חודש אחד" + }, + "3mo": { + "label": "שלושה חודשים" + }, + "6mo": { + "label": "שישה חודשים" + }, + "ytd": { + "label": "שנה עד היום" + }, + "1y": { + "label": "שנה אחת" + }, + "2y": { + "label": "שנתיים" + }, + "5y": { + "label": "חמש שנים" + }, + "10y": { + "label": "עשר שנים" + }, + "max": { + "label": "מקסימום" + } + } + }, + "timeInterval": { + "label": "מרווח זמן", + "option": { + "5m": { + "label": "5 דקות" + }, + "15m": { + "label": "15 דקות" + }, + "30m": { + "label": "30 דקות" + }, + "1h": { + "label": "שעה אחת" + }, + "1d": { + "label": "יום אחד" + }, + "5d": { + "label": "חמישה ימים" + }, + "1wk": { + "label": "שבוע אחד" + }, + "1mo": { + "label": "חודש אחד" + } + } + } + } + }, "calendar": { "name": "לוח שנה", "description": "הצג אירועים מהאינטגרציות שלך בתצוגת לוח שנה בתוך פרק זמן יחסי מסוים", @@ -1443,7 +1519,7 @@ "label": "סיים ב" }, "showUnmonitored": { - "label": "" + "label": "הצג ללא פיקוח" } } }, @@ -1675,7 +1751,7 @@ "description": "הצג את הזרמים הנוכחיים בשרתי המדיה שלך", "option": {}, "items": { - "currentlyPlaying": "", + "currentlyPlaying": "מתנגן כרגע", "user": "משתמש", "name": "שם", "id": "מזהה" @@ -1900,10 +1976,10 @@ "statistics": { "empty": "ריק", "transcodes": "קידודים", - "transcodesCount": "קידודים: {value}", - "healthChecksCount": "בדיקות בריאות: {value}", - "filesCount": "קבצים: {value}", - "savedSpace": "שטח שמור: {value}", + "transcodesCount": "קידודים", + "healthChecksCount": "בדיקות בריאות", + "filesCount": "קבצים", + "savedSpace": "שטח שמור", "healthChecks": "בדיקות בריאות", "videoCodecs": "קודקים", "videoContainers": "מיכלים", @@ -2332,7 +2408,7 @@ "label": "כלים", "items": { "docker": "דוקר", - "kubernetes": "", + "kubernetes": "Kubernetes", "logs": "קובצי לוג", "api": "ממשק API", "certificates": "אישורי אבטחה", @@ -2881,242 +2957,242 @@ }, "kubernetes": { "cluster": { - "title": "", - "label": "", - "providers": "", - "version": "", - "architecture": "", + "title": "לוח המחוונים של אשכול", + "label": "אשכול", + "providers": "ספקים", + "version": "גרסה", + "architecture": "ארכיטקטורה", "capacity": { - "title": "", + "title": "קיבולת", "resource": { - "reserved": "", - "used": "" + "reserved": "שמור", + "used": "בשימוש" } }, "resources": { - "title": "", - "nodes": "", - "namespaces": "", - "ingresses": "", - "services": "", - "pods": "", - "configmaps": "", - "secrets": "", - "volumes": "" + "title": "מקורות", + "nodes": "קונטיינרים", + "namespaces": "מרחב שמות", + "ingresses": "כרטיסים", + "services": "שירותים", + "pods": "תרמילים", + "configmaps": "ConfigMaps", + "secrets": "נתוני גישה", + "volumes": "כוננים" } }, "nodes": { - "label": "", + "label": "קונטיינרים", "field": { "name": { - "label": "" + "label": "שם" }, "state": { - "label": "", + "label": "מצב", "option": { - "ready": "", - "NotReady": "" + "ready": "מוכן", + "NotReady": "לא מוכן" } }, "cpu": { - "label": "" + "label": "מעבד" }, "memory": { - "label": "" + "label": "זכרון פנימי" }, "pods": { - "label": "" + "label": "תרמילים" }, "operatingSystem": { - "label": "" + "label": "מערכת הפעלה" }, "architecture": { - "label": "" + "label": "ארכיטקטורה" }, "kubernetesVersion": { - "label": "" + "label": "גרסת Kubernetes" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} קונטיינרים" } }, "namespaces": { - "label": "", + "label": "מרחב שמות", "field": { "name": { - "label": "" + "label": "שם" }, "state": { - "label": "", + "label": "מצב", "option": { - "active": "", - "terminating": "" + "active": "פעיל", + "terminating": "מסתיים" } }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש ב-{count} מרחבי שמות" } }, "ingresses": { - "label": "", + "label": "כרטיסים", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "className": { - "label": "" + "label": "שם קלאס" }, "rulesAndPaths": { - "label": "" + "label": "כללים ונתיבים" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} כניסות" } }, "services": { - "label": "", + "label": "שירותים", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "type": { - "label": "" + "label": "סוג" }, "ports": { - "label": "" + "label": "יציאות" }, "targetPorts": { - "label": "" + "label": "יציאות יעד" }, "clusterIP": { - "label": "" + "label": "כתובת אשכול" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} שירותים" } }, "pods": { - "label": "", + "label": "תרמילים", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "image": { - "label": "" + "label": "תמונה" }, "applicationType": { - "label": "" + "label": "סוג יישום" }, "status": { - "label": "" + "label": "מצב" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} תרמילים" } }, "secrets": { - "label": "", + "label": "נתוני גישה", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "type": { - "label": "" + "label": "סוג" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} נתוני גישה" } }, "configmaps": { - "label": "", + "label": "configMaps", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} configMaps" } }, "volumes": { - "label": "", + "label": "כרכים", "field": { "name": { - "label": "" + "label": "שם" }, "namespace": { - "label": "" + "label": "מרחב שמות" }, "accessModes": { - "label": "" + "label": "מצבי גישה" }, "storage": { - "label": "" + "label": "אחסון" }, "storageClassName": { - "label": "" + "label": "שם מחלקת אחסון" }, "volumeMode": { - "label": "" + "label": "מצב כרך" }, "volumeName": { - "label": "" + "label": "שם כרך" }, "status": { - "label": "" + "label": "מצב" }, "creationTimestamp": { - "label": "" + "label": "נוצר" } }, "table": { - "search": "" + "search": "חפש {count} כרכים" } }, "error": { - "internalServerError": "" + "internalServerError": "אחזור נתוני Kubernetes נכשל" } }, "permission": { @@ -3205,30 +3281,30 @@ "label": "דוקר" }, "kubernetes": { - "label": "", + "label": "Kubernetes", "nodes": { - "label": "" + "label": "צמתים" }, "namespaces": { - "label": "" + "label": "מרחב שמות" }, "ingresses": { - "label": "" + "label": "כרטיסים" }, "services": { - "label": "" + "label": "שירותים" }, "pods": { - "label": "" + "label": "תרמילים" }, "configmaps": { - "label": "" + "label": "ConfigMaps" }, "secrets": { - "label": "" + "label": "נתוני גישה" }, "volumes": { - "label": "" + "label": "כוננים" } }, "logs": { diff --git a/packages/translation/src/lang/hr.json b/packages/translation/src/lang/hr.json index e989a4367..efc83ef79 100644 --- a/packages/translation/src/lang/hr.json +++ b/packages/translation/src/lang/hr.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendar", "description": "", diff --git a/packages/translation/src/lang/hu.json b/packages/translation/src/lang/hu.json index 0bf7eb6cd..f34e578c6 100644 --- a/packages/translation/src/lang/hu.json +++ b/packages/translation/src/lang/hu.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Naptár", "description": "", diff --git a/packages/translation/src/lang/it.json b/packages/translation/src/lang/it.json index f95123f56..53e680a95 100644 --- a/packages/translation/src/lang/it.json +++ b/packages/translation/src/lang/it.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Calendario", "description": "", diff --git a/packages/translation/src/lang/ja.json b/packages/translation/src/lang/ja.json index 86934c833..80f5e570d 100644 --- a/packages/translation/src/lang/ja.json +++ b/packages/translation/src/lang/ja.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "カレンダー", "description": "", diff --git a/packages/translation/src/lang/ko.json b/packages/translation/src/lang/ko.json index e5cc53664..4106cee8e 100644 --- a/packages/translation/src/lang/ko.json +++ b/packages/translation/src/lang/ko.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "캘린더", "description": "", diff --git a/packages/translation/src/lang/lt.json b/packages/translation/src/lang/lt.json index 9cae892fd..8bd9fdb64 100644 --- a/packages/translation/src/lang/lt.json +++ b/packages/translation/src/lang/lt.json @@ -19,7 +19,7 @@ }, "fileInfo": { "action": { - "change": "" + "change": "Pakeisti failą" } }, "importSettings": { @@ -113,7 +113,7 @@ "subtitle": "" }, "invite": { - "title": "", + "title": "Prisijungti prie Homarr", "subtitle": "", "description": "" }, @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendorius", "description": "", diff --git a/packages/translation/src/lang/lv.json b/packages/translation/src/lang/lv.json index 135b2cb0b..76e5a7c1c 100644 --- a/packages/translation/src/lang/lv.json +++ b/packages/translation/src/lang/lv.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendārs", "description": "", diff --git a/packages/translation/src/lang/nl.json b/packages/translation/src/lang/nl.json index 4dced0322..36034cae6 100644 --- a/packages/translation/src/lang/nl.json +++ b/packages/translation/src/lang/nl.json @@ -1424,6 +1424,82 @@ "run": "{name} uitvoeren" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalender", "description": "Gebeurtenissen van je integraties weergeven in een kalenderweergave binnen een bepaalde relatieve tijdsperiode", diff --git a/packages/translation/src/lang/no.json b/packages/translation/src/lang/no.json index fdc539e1d..96e06cc6a 100644 --- a/packages/translation/src/lang/no.json +++ b/packages/translation/src/lang/no.json @@ -1424,6 +1424,82 @@ "run": "Kjør {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalender", "description": "Vis hendelser fra integrasjonene dine i en kalendervisning innenfor en bestemt relativ tidsperiode", diff --git a/packages/translation/src/lang/pl.json b/packages/translation/src/lang/pl.json index 0ac3b565e..6b9c9374d 100644 --- a/packages/translation/src/lang/pl.json +++ b/packages/translation/src/lang/pl.json @@ -1424,6 +1424,82 @@ "run": "Uruchom {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendarz", "description": "Wyświetlaj zdarzenia z integracji w widoku kalendarza w określonym okresie czasowym", diff --git a/packages/translation/src/lang/pt.json b/packages/translation/src/lang/pt.json index a9ebd2b6f..7ea59e6fd 100644 --- a/packages/translation/src/lang/pt.json +++ b/packages/translation/src/lang/pt.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Calendário", "description": "", diff --git a/packages/translation/src/lang/ro.json b/packages/translation/src/lang/ro.json index 3bd1f071b..5096589c8 100644 --- a/packages/translation/src/lang/ro.json +++ b/packages/translation/src/lang/ro.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "", "description": "", diff --git a/packages/translation/src/lang/ru.json b/packages/translation/src/lang/ru.json index 3eabb8bc7..07b91ff7a 100644 --- a/packages/translation/src/lang/ru.json +++ b/packages/translation/src/lang/ru.json @@ -1424,6 +1424,82 @@ "run": "Запустить {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Календарь", "description": "Отображает события из ваших интеграций в календаре в определённом временном периоде", diff --git a/packages/translation/src/lang/sk.json b/packages/translation/src/lang/sk.json index 2a91a380e..20475cbb5 100644 --- a/packages/translation/src/lang/sk.json +++ b/packages/translation/src/lang/sk.json @@ -1424,6 +1424,82 @@ "run": "Spustite {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalendár", "description": "Zobrazte udalosti z vašich integrácií v zobrazení kalendára za určité relatívne časové obdobie", diff --git a/packages/translation/src/lang/sl.json b/packages/translation/src/lang/sl.json index f7ee20a69..6d03d058f 100644 --- a/packages/translation/src/lang/sl.json +++ b/packages/translation/src/lang/sl.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Koledar", "description": "", diff --git a/packages/translation/src/lang/sv.json b/packages/translation/src/lang/sv.json index e6ce76cbc..af1cb19ac 100644 --- a/packages/translation/src/lang/sv.json +++ b/packages/translation/src/lang/sv.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Kalender", "description": "", diff --git a/packages/translation/src/lang/tr.json b/packages/translation/src/lang/tr.json index b32c6e921..2235d7c14 100644 --- a/packages/translation/src/lang/tr.json +++ b/packages/translation/src/lang/tr.json @@ -677,11 +677,11 @@ "description": "\"{kind}\" entegrasyonu arama motorlarıyla kullanılabilir. Arama motorunu otomatik olarak yapılandırmak için bunu işaretleyin." }, "createApp": { - "label": "", - "description": "" + "label": "Uygulama oluştur", + "description": "Entegrasyon ile aynı adı ve simgeyi taşıyan bir uygulama oluşturun. Uygulamayı entegrasyon URL'si ile oluşturmak için aşağıdaki alanını boş bırakın." }, "appHref": { - "placeholder": "" + "placeholder": "Özel Uygulama URL'si" } }, "action": { @@ -1424,6 +1424,82 @@ "run": "Çalıştır {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Takvim", "description": "Entegrasyonlarınızdaki etkinlikleri belirli bir göreli zaman dilimi içinde bir takvim görünümünde görüntüleyin", diff --git a/packages/translation/src/lang/uk.json b/packages/translation/src/lang/uk.json index ea622c72b..9549359d1 100644 --- a/packages/translation/src/lang/uk.json +++ b/packages/translation/src/lang/uk.json @@ -1424,6 +1424,82 @@ "run": "Запустити {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Календар", "description": "", diff --git a/packages/translation/src/lang/vi.json b/packages/translation/src/lang/vi.json index fde141108..2afa3a73e 100644 --- a/packages/translation/src/lang/vi.json +++ b/packages/translation/src/lang/vi.json @@ -1424,6 +1424,82 @@ "run": "" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "Lịch", "description": "", diff --git a/packages/translation/src/lang/zh.json b/packages/translation/src/lang/zh.json index d01c82b63..9007ecaf5 100644 --- a/packages/translation/src/lang/zh.json +++ b/packages/translation/src/lang/zh.json @@ -677,11 +677,11 @@ "description": "集成 {kind} 可以與搜尋引擎共同使用,勾選此選項可自動設定搜尋引擎" }, "createApp": { - "label": "", - "description": "" + "label": "創建應用程式", + "description": "建立一個與集成相同名稱和圖示的應用程式,將下方輸入欄位留空,以使用集成網址創建應用程式" }, "appHref": { - "placeholder": "" + "placeholder": "自訂應用程式網址" } }, "action": { @@ -1424,6 +1424,82 @@ "run": "執行 {name}" } }, + "stockPrice": { + "name": "", + "description": "", + "option": { + "stock": { + "label": "" + }, + "timeRange": { + "label": "", + "option": { + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1mo": { + "label": "" + }, + "3mo": { + "label": "" + }, + "6mo": { + "label": "" + }, + "ytd": { + "label": "" + }, + "1y": { + "label": "" + }, + "2y": { + "label": "" + }, + "5y": { + "label": "" + }, + "10y": { + "label": "" + }, + "max": { + "label": "" + } + } + }, + "timeInterval": { + "label": "", + "option": { + "5m": { + "label": "" + }, + "15m": { + "label": "" + }, + "30m": { + "label": "" + }, + "1h": { + "label": "" + }, + "1d": { + "label": "" + }, + "5d": { + "label": "" + }, + "1wk": { + "label": "" + }, + "1mo": { + "label": "" + } + } + } + } + }, "calendar": { "name": "日曆", "description": "在特定的相對時間範圍內,將來自您的集成事件以日曆視圖顯示", diff --git a/packages/validation/src/board.ts b/packages/validation/src/board.ts index 973c582f3..093d2042a 100644 --- a/packages/validation/src/board.ts +++ b/packages/validation/src/board.ts @@ -22,7 +22,7 @@ const boardNameSchema = z .string() .min(1) .max(255) - .regex(/^[A-Za-z0-9-\\._]*$/); + .regex(/^[A-Za-z0-9-\\_]*$/); const byNameSchema = z.object({ name: boardNameSchema, diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 5896ebc69..7e9b57a8f 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -44,6 +44,7 @@ "@homarr/translation": "workspace:^0.1.0", "@homarr/ui": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", + "@mantine/charts": "^7.17.2", "@mantine/core": "^7.17.2", "@mantine/hooks": "^7.17.2", "@tabler/icons-react": "^3.31.0", @@ -68,6 +69,7 @@ "next": "15.1.7", "react": "19.0.0", "react-dom": "19.0.0", + "recharts": "^2.15.1", "video.js": "^8.22.0", "zod": "^3.24.2" }, diff --git a/packages/widgets/src/index.tsx b/packages/widgets/src/index.tsx index e5ca8edf0..dab575965 100644 --- a/packages/widgets/src/index.tsx +++ b/packages/widgets/src/index.tsx @@ -29,6 +29,7 @@ import type { WidgetOptionDefinition } from "./options"; import * as rssFeed from "./rssFeed"; import * as smartHomeEntityState from "./smart-home/entity-state"; import * as smartHomeExecuteAutomation from "./smart-home/execute-automation"; +import * as stockPrice from "./stocks"; import * as video from "./video"; import * as weather from "./weather"; @@ -46,6 +47,7 @@ export const widgetImports = { dnsHoleControls, "smartHome-entityState": smartHomeEntityState, "smartHome-executeAutomation": smartHomeExecuteAutomation, + stockPrice, mediaServer, calendar, downloads, diff --git a/packages/widgets/src/stocks/component.tsx b/packages/widgets/src/stocks/component.tsx new file mode 100644 index 000000000..326301d54 --- /dev/null +++ b/packages/widgets/src/stocks/component.tsx @@ -0,0 +1,102 @@ +"use client"; + +import { Sparkline } from "@mantine/charts"; +import { Flex, Stack, Text, Title, useMantineTheme } from "@mantine/core"; +import { IconTrendingDown, IconTrendingUp } from "@tabler/icons-react"; + +import { clientApi } from "@homarr/api/client"; +import { useScopedI18n } from "@homarr/translation/client"; + +import type { WidgetComponentProps } from "../definition"; + +function round(value: number) { + return Math.round(value * 100) / 100; +} + +function calculateChange(valueA: number, valueB: number) { + return valueA - valueB; +} + +function calculateChangePercentage(valueA: number, valueB: number) { + return 100 * ((valueA - valueB) / valueA); +} + +export default function StockPriceWidget({ options, width, height }: WidgetComponentProps<"stockPrice">) { + const t = useScopedI18n("widget.stockPrice"); + const theme = useMantineTheme(); + const [{ data }] = clientApi.widget.stockPrice.getPriceHistory.useSuspenseQuery(options); + + const stockValues = data.indicators.quote[0]?.close ?? []; + + const stockValuesChange = round(calculateChange(stockValues[stockValues.length - 1] ?? 0, stockValues[0] ?? 0)); + const stockValuesChangePercentage = round( + calculateChangePercentage(stockValues[stockValues.length - 1] ?? 0, stockValues[0] ?? 0), + ); + + const stockValuesMin = Math.min(...stockValues); + const stockGraphValues = stockValues.map((value) => value - stockValuesMin + 50); + + return ( + + 280 ? "75%" : "50%"} + data={stockGraphValues} + curveType="linear" + trendColors={{ positive: "green.7", negative: "red.7", neutral: "gray.6" }} + fillOpacity={0.6} + strokeWidth={2.5} + /> + + + + {stockValuesChange > 0 ? ( + + ) : ( + + )} + {data.meta.symbol} + + {width > 280 && height > 280 && ( + + {data.meta.shortName} + + )} + + + 280 ? 1 : 2} fw={700}> + {round(stockValues[stockValues.length - 1] ?? 0)} + + + {width > 280 && ( + + {Math.abs(stockValuesChange)} ({Math.abs(stockValuesChangePercentage)}%) + + )} + + {width > 280 && ( + + {t(`option.timeRange.option.${options.timeRange}.label`)} + + )} + + + + {stockValuesChange > 0 ? ( + + ) : ( + + )} + {data.meta.symbol} + + {width > 280 && height > 280 && ( + + {data.meta.shortName} + + )} + + + ); +} diff --git a/packages/widgets/src/stocks/index.ts b/packages/widgets/src/stocks/index.ts new file mode 100644 index 000000000..fa64bf3a4 --- /dev/null +++ b/packages/widgets/src/stocks/index.ts @@ -0,0 +1,37 @@ +import { IconBuildingBank } from "@tabler/icons-react"; + +import { createWidgetDefinition } from "../definition"; +import { optionsBuilder } from "../options"; + +export const stockPriceTimeFrames = { + range: ["1d", "5d", "1mo", "3mo", "6mo", "ytd", "1y", "2y", "5y", "10y", "max"] as const, + interval: ["5m", "15m", "30m", "1h", "1d", "5d", "1wk", "1mo"] as const, +}; + +const timeRangeOptions = stockPriceTimeFrames.range; +const timeIntervalOptions = stockPriceTimeFrames.interval; + +export const { definition, componentLoader } = createWidgetDefinition("stockPrice", { + icon: IconBuildingBank, + createOptions() { + return optionsBuilder.from((factory) => ({ + stock: factory.text({ + defaultValue: "AAPL", + }), + timeRange: factory.select({ + defaultValue: "1mo", + options: timeRangeOptions.map((value) => ({ + value, + label: (t) => t(`widget.stockPrice.option.timeRange.option.${value}.label`), + })), + }), + timeInterval: factory.select({ + defaultValue: "1d", + options: timeIntervalOptions.map((value) => ({ + value, + label: (t) => t(`widget.stockPrice.option.timeInterval.option.${value}.label`), + })), + }), + })); + }, +}).withDynamicImport(() => import("./component")); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 14a8b64ae..c6f2ee873 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,16 +39,16 @@ importers: version: 14.0.3(semantic-release@24.2.3(typescript@5.8.2)) '@turbo/gen': specifier: ^2.4.4 - version: 2.4.4(@types/node@22.13.10)(typescript@5.8.2) + version: 2.4.4(@types/node@22.13.11)(typescript@5.8.2) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.3.4(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 4.3.4(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) '@vitest/coverage-v8': - specifier: ^3.0.8 - version: 3.0.8(vitest@3.0.8) + specifier: ^3.0.9 + version: 3.0.9(vitest@3.0.9) '@vitest/ui': - specifier: ^3.0.8 - version: 3.0.8(vitest@3.0.8) + specifier: ^3.0.9 + version: 3.0.9(vitest@3.0.9) conventional-changelog-conventionalcommits: specifier: ^8.0.0 version: 8.0.0 @@ -65,8 +65,8 @@ importers: specifier: ^24.2.3 version: 24.2.3(typescript@5.8.2) testcontainers: - specifier: ^10.20.0 - version: 10.20.0 + specifier: ^10.21.0 + version: 10.21.0 turbo: specifier: ^2.4.4 version: 2.4.4 @@ -75,10 +75,10 @@ importers: version: 5.8.2 vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.2)(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + version: 5.1.4(typescript@5.8.2)(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) vitest: - specifier: ^3.0.8 - version: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + specifier: ^3.0.9 + version: 3.0.9(@types/node@22.13.11)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) apps/nextjs: dependencies: @@ -186,19 +186,19 @@ importers: version: 7.17.2(chroma-js@3.1.2) '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dropzone': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.17.2 version: 7.17.2(react@19.0.0) '@mantine/modals': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/tiptap': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(@tiptap/extension-link@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5))(@tiptap/react@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5)(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) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(@tiptap/extension-link@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5))(@tiptap/react@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5)(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) @@ -206,26 +206,26 @@ importers: specifier: ^3.31.0 version: 3.31.0(react@19.0.0) '@tanstack/react-query': - specifier: ^5.68.0 - version: 5.68.0(react@19.0.0) + specifier: ^5.69.0 + version: 5.69.0(react@19.0.0) '@tanstack/react-query-devtools': - specifier: ^5.68.0 - version: 5.68.0(@tanstack/react-query@5.68.0(react@19.0.0))(react@19.0.0) + specifier: ^5.69.0 + version: 5.69.0(@tanstack/react-query@5.69.0(react@19.0.0))(react@19.0.0) '@tanstack/react-query-next-experimental': - specifier: ^5.68.0 - version: 5.68.0(@tanstack/react-query@5.68.0(react@19.0.0))(next@15.1.7(@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.85.1))(react@19.0.0) + specifier: ^5.69.0 + version: 5.69.0(@tanstack/react-query@5.69.0(react@19.0.0))(next@15.1.7(@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.86.0))(react@19.0.0) '@trpc/client': - specifier: next - version: 11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2) '@trpc/next': - specifier: next - version: 11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/react-query@11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(next@15.1.7(@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.85.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/react-query@11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(next@15.1.7(@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.86.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) '@trpc/react-query': - specifier: next - version: 11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) '@trpc/server': - specifier: next - version: 11.0.0-rc.828(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(typescript@5.8.2) '@xterm/addon-canvas': specifier: ^0.7.0 version: 0.7.0(@xterm/xterm@5.5.0) @@ -255,13 +255,13 @@ importers: version: 11.0.1 jotai: specifier: ^2.12.2 - version: 2.12.2(@types/react@19.0.10)(react@19.0.0) + version: 2.12.2(@types/react@19.0.12)(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) postcss-preset-mantine: specifier: ^1.17.0 version: 1.17.0(postcss@8.4.47) @@ -281,14 +281,14 @@ importers: specifier: ^0.14.1 version: 0.14.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) sass: - specifier: ^1.85.1 - version: 1.85.1 + specifier: ^1.86.0 + version: 1.86.0 superjson: specifier: 2.2.2 version: 2.2.2 swagger-ui-react: specifier: ^5.20.1 - version: 5.20.1(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 5.20.1(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) use-deep-compare-effect: specifier: ^1.8.1 version: 1.8.1(react@19.0.0) @@ -309,17 +309,17 @@ importers: specifier: 3.1.1 version: 3.1.1 '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.11 + version: 22.13.11 '@types/prismjs': specifier: ^1.26.5 version: 1.26.5 '@types/react': - specifier: 19.0.10 - version: 19.0.10 + specifier: 19.0.12 + version: 19.0.12 '@types/react-dom': specifier: 19.0.4 - version: 19.0.4(@types/react@19.0.10) + version: 19.0.4(@types/react@19.0.12) '@types/swagger-ui-react': specifier: ^5.18.0 version: 5.18.0 @@ -409,8 +409,8 @@ importers: specifier: workspace:^0.1.0 version: link:../../tooling/typescript '@types/node': - specifier: ^22.13.10 - version: 22.13.10 + specifier: ^22.13.11 + version: 22.13.11 dotenv-cli: specifier: ^8.0.0 version: 8.0.0 @@ -582,20 +582,20 @@ importers: specifier: ^1.1.0 version: 1.1.0 '@trpc/client': - specifier: next - version: 11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2) '@trpc/react-query': - specifier: next - version: 11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) '@trpc/server': - specifier: next - version: 11.0.0-rc.828(typescript@5.8.2) + specifier: ^11.0.0 + version: 11.0.0(typescript@5.8.2) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -610,7 +610,7 @@ importers: version: 2.2.2 trpc-to-openapi: specifier: ^2.1.3 - version: 2.1.3(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(zod-openapi@2.19.0(zod@3.24.2))(zod@3.24.2) + version: 2.1.3(@trpc/server@11.0.0(typescript@5.8.2))(zod-openapi@2.19.0(zod@3.24.2))(zod@3.24.2) zod: specifier: ^3.24.2 version: 3.24.2 @@ -674,10 +674,10 @@ importers: version: 7.3.1 next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) next-auth: specifier: 5.0.0-beta.25 - version: 5.0.0-beta.25(next@15.1.7(@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.85.1))(react@19.0.0) + version: 5.0.0-beta.25(next@15.1.7(@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.86.0))(react@19.0.0) pretty-print-error: specifier: ^1.1.2 version: 1.1.2(patch_hash=d1432e02330bdaf8359eb0e54528a74ed6b7e5cce6bb65c13310c82e34fd1e4d) @@ -816,7 +816,7 @@ importers: version: 1.11.13 next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1016,16 +1016,16 @@ importers: version: link:../server-settings '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@paralleldrive/cuid2': specifier: ^2.2.2 version: 2.2.2 '@testcontainers/mysql': - specifier: ^10.20.0 - version: 10.20.0 + specifier: ^10.21.0 + version: 10.21.0 better-sqlite3: - specifier: ^11.9.0 - version: 11.9.0 + specifier: ^11.9.1 + version: 11.9.1 dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -1033,14 +1033,14 @@ importers: specifier: ^0.30.5 version: 0.30.5 drizzle-orm: - specifier: ^0.40.0 - version: 0.40.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.0)(gel@2.0.0)(mysql2@3.13.0) + specifier: ^0.41.0 + version: 0.41.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) drizzle-zod: specifier: ^0.7.0 - version: 0.7.0(drizzle-orm@0.40.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.0)(gel@2.0.0)(mysql2@3.13.0))(zod@3.24.2) + version: 0.7.0(drizzle-orm@0.41.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.2) mysql2: - specifier: 3.13.0 - version: 3.13.0 + specifier: 3.14.0 + version: 3.14.0 devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1207,7 +1207,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1379,7 +1379,7 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.17.2 version: 7.17.2(react@19.0.0) @@ -1440,7 +1440,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.0.0) @@ -1449,7 +1449,7 @@ importers: version: 1.11.13 next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1483,7 +1483,7 @@ importers: version: link:../ui '@mantine/notifications': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.0.0) @@ -1541,7 +1541,7 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.17.2 version: 7.17.2(react@19.0.0) @@ -1550,7 +1550,7 @@ importers: version: 0.5.16 next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1769,10 +1769,10 @@ importers: version: link:../server-settings '@mantine/dates': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1830,22 +1830,22 @@ importers: version: link:../ui '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.17.2 version: 7.17.2(react@19.0.0) '@mantine/spotlight': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tabler/icons-react': specifier: ^3.31.0 version: 3.31.0(react@19.0.0) jotai: specifier: ^2.12.2 - version: 2.12.2(@types/react@19.0.10)(react@19.0.0) + version: 2.12.2(@types/react@19.0.12)(react@19.0.0) next: specifier: 15.1.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -1888,13 +1888,13 @@ importers: version: 4.3.1 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) next-intl: specifier: 4.0.2 - version: 4.0.2(next@15.1.7(@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.85.1))(react@19.0.0)(typescript@5.8.2) + version: 4.0.2(next@15.1.7(@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.86.0))(react@19.0.0)(typescript@5.8.2) react: specifier: 19.0.0 version: 19.0.0 @@ -1937,10 +1937,10 @@ importers: version: link:../validation '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/dates': specifier: ^7.17.2 - version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2 version: 7.17.2(react@19.0.0) @@ -1949,10 +1949,10 @@ importers: version: 3.31.0(react@19.0.0) mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 @@ -2072,9 +2072,12 @@ importers: '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation + '@mantine/charts': + specifier: ^7.17.2 + version: 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(recharts@2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)) '@mantine/core': specifier: ^7.17.2 - version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + version: 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': specifier: ^7.17.2 version: 7.17.2(react@19.0.0) @@ -2134,16 +2137,19 @@ importers: version: 1.11.13 mantine-react-table: specifier: 2.0.0-beta.9 - version: 2.0.0-beta.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.7 - version: 15.1.7(@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.85.1) + version: 15.1.7(@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.86.0) react: specifier: 19.0.0 version: 19.0.0 react-dom: specifier: 19.0.0 version: 19.0.0(react@19.0.0) + recharts: + specifier: ^2.15.1 + version: 2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) video.js: specifier: ^8.22.0 version: 8.22.0 @@ -2183,7 +2189,7 @@ importers: version: 2.4.4(eslint@9.22.0)(turbo@2.4.4) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0) + version: 2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0) eslint-plugin-jsx-a11y: specifier: ^6.10.2 version: 6.10.2(eslint@9.22.0) @@ -2194,8 +2200,8 @@ importers: specifier: ^5.2.0 version: 5.2.0(eslint@9.22.0) typescript-eslint: - specifier: ^8.26.1 - version: 8.26.1(eslint@9.22.0)(typescript@5.8.2) + specifier: ^8.27.0 + version: 8.27.0(eslint@9.22.0)(typescript@5.8.2) devDependencies: '@homarr/prettier-config': specifier: workspace:^0.1.0 @@ -3514,6 +3520,15 @@ packages: '@libsql/core@0.14.0': resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} + '@mantine/charts@7.17.2': + resolution: {integrity: sha512-ckB23pIqRjzysUz2EiWZD9AVyf7t0r7o7zfJbl01nzOezFgYq5RGeRoxvpcsfBC+YoSbB/43rjNcXtYhtA7QzA==} + peerDependencies: + '@mantine/core': 7.17.2 + '@mantine/hooks': 7.17.2 + react: ^18.x || ^19.x + react-dom: ^18.x || ^19.x + recharts: ^2.13.3 + '@mantine/colors-generator@7.17.2': resolution: {integrity: sha512-wn4qmefWyQO9424nenN3k/zYcN4kPut1LVdv1ZyQ0Bz1giKc3PKTb96OOMzWlPCW08WjK/nwa2/VczC7YVKcQQ==} peerDependencies: @@ -4289,27 +4304,27 @@ packages: resolution: {integrity: sha512-Wo1iKt2b9OT7d+YGhvEPD3DXvPv2etTusIMhMUoG7fbhmxcXCtIjJDEygy91Y2JFlwGyjqiBPRozme7UD8hoqg==} engines: {node: '>=12'} - '@tanstack/query-core@5.68.0': - resolution: {integrity: sha512-r8rFYYo8/sY/LNaOqX84h12w7EQev4abFXDWy4UoDVUJzJ5d9Fbmb8ayTi7ScG+V0ap44SF3vNs/45mkzDGyGw==} + '@tanstack/query-core@5.69.0': + resolution: {integrity: sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ==} '@tanstack/query-devtools@5.67.2': resolution: {integrity: sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg==} - '@tanstack/react-query-devtools@5.68.0': - resolution: {integrity: sha512-h9ArHkfa7SD5eGnJ9h+9M5uYWBdeVeY+WalrtGLCAtJJvHx6/RrtbbzxeoEQbPyx3f0kPcwJ58DGQ+7CBXelpg==} + '@tanstack/react-query-devtools@5.69.0': + resolution: {integrity: sha512-sYklnou3IKAemqB5wJeBwjmG5bUGDKAL5/I4pVA+aqSnsNibVLt8/pAU976uuJ5K71w71bHtI/AMxiIs3gtkEA==} peerDependencies: - '@tanstack/react-query': ^5.68.0 + '@tanstack/react-query': ^5.69.0 react: ^18 || ^19 - '@tanstack/react-query-next-experimental@5.68.0': - resolution: {integrity: sha512-nkmxjo7CbURBjDMX9MwNEj5Us8iG6ClK2fHtLUlnZJlkrIjDPPfCjp6Eh4otZjNXLPSXb92AWJWmPZSavCbM5A==} + '@tanstack/react-query-next-experimental@5.69.0': + resolution: {integrity: sha512-V4HgEUFndacuy/aLVbmb+jWIUY/x9l5rTMuVfyxc0NMF60KXw6OOmkf8EuZgnI6F6UTl3Z+tG7em0/cDZcYe7g==} peerDependencies: - '@tanstack/react-query': ^5.68.0 + '@tanstack/react-query': ^5.69.0 next: ^13 || ^14 || ^15 react: ^18 || ^19 - '@tanstack/react-query@5.68.0': - resolution: {integrity: sha512-mMOdGDKlwTP/WV72QqSNf4PAMeoBp/DqBHQ222wBfb51Looi8QUqnCnb9O98ZgvNISmy6fzxRGBJdZ+9IBvX2Q==} + '@tanstack/react-query@5.69.0': + resolution: {integrity: sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA==} peerDependencies: react: ^18 || ^19 @@ -4333,8 +4348,8 @@ packages: '@tanstack/virtual-core@3.11.2': resolution: {integrity: sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==} - '@testcontainers/mysql@10.20.0': - resolution: {integrity: sha512-HJaLAimgOOh1FBeDjNnif0nbais0jjXv6Px9nC6i196rtzNfQPS7Fhs/N54L0BIS3/JYvt1aYGfAXFG2XHHhIQ==} + '@testcontainers/mysql@10.21.0': + resolution: {integrity: sha512-vmT5lTXI2TpWx0gDfr0JDEeLBT8R+sZnJAceWZSRvMlscJaoR52uAushGD7RhDsBqpwWKZBi8fnGjltIs+io9Q==} '@tiptap/core@2.11.5': resolution: {integrity: sha512-jb0KTdUJaJY53JaN7ooY3XAxHQNoMYti/H6ANo707PsLXVeEqJ9o8+eBup1JU5CuwzrgnDc2dECt2WIGX9f8Jw==} @@ -4542,20 +4557,20 @@ packages: tree-sitter: optional: true - '@trpc/client@11.0.0-rc.828': - resolution: {integrity: sha512-pV2bELnPqH7S2R1wBH6OB7lOi61ELt8CEcvHuxVM2YhL4hP408tzKT0YvNBo4GVqc8So/1ncpXJyRJQG0o6rsQ==} + '@trpc/client@11.0.0': + resolution: {integrity: sha512-U2THlxsdr4ykAX5lpTU8k5WRADPQ+68Ex2gfUht3MlCxGK7njBmNSSzjpQSWNt7tMI/xsYrddFiRlmEPrh+Cbg==} peerDependencies: - '@trpc/server': 11.0.0-rc.828+322552736 + '@trpc/server': 11.0.0 typescript: '>=5.7.2' - '@trpc/next@11.0.0-rc.828': - resolution: {integrity: sha512-Pyzyh0YM2DgYJHGI09oAinLF8ViRtUhAdcWVMr55sxGn1LPce0QD70K1WjvPRP2jvlRMaNRvD4nrqQ+c1hnBbA==} + '@trpc/next@11.0.0': + resolution: {integrity: sha512-HpowgsF0jfXG30jEBVK8v90ltbEZiQZq/x0rsjScfZuedkAfapqZvrsrkzv6Pkemz7sxaxJcZB3HEqXxWfkGoA==} peerDependencies: '@tanstack/react-query': ^5.59.15 - '@trpc/client': 11.0.0-rc.828+322552736 - '@trpc/react-query': 11.0.0-rc.828+322552736 - '@trpc/server': 11.0.0-rc.828+322552736 - next: 15.2.1 + '@trpc/client': 11.0.0 + '@trpc/react-query': 11.0.0 + '@trpc/server': 11.0.0 + next: '>=15.2.2' react: '>=16.8.0' react-dom: '>=16.8.0' typescript: '>=5.7.2' @@ -4565,18 +4580,18 @@ packages: '@trpc/react-query': optional: true - '@trpc/react-query@11.0.0-rc.828': - resolution: {integrity: sha512-oir4OikvCEqbheswHZhKrXSz1hKvFcDFlc/NZ9zShMlosJtO585az0XRrGuwFvjVShP5YCRvzFb4shiJjw5PXA==} + '@trpc/react-query@11.0.0': + resolution: {integrity: sha512-HeE9bBLA6nqC2xk5wlNZIPQ5vmyli3tgNNab8fTE489+ksNMKxaIx66pZKsMJIorDcP1wS0rWNV+GroU0iR98g==} peerDependencies: '@tanstack/react-query': ^5.67.1 - '@trpc/client': 11.0.0-rc.828+322552736 - '@trpc/server': 11.0.0-rc.828+322552736 + '@trpc/client': 11.0.0 + '@trpc/server': 11.0.0 react: '>=18.2.0' react-dom: '>=18.2.0' typescript: '>=5.7.2' - '@trpc/server@11.0.0-rc.828': - resolution: {integrity: sha512-+dvcIcE5QPy52cz4rqwfUqk+WQDYAH3Xri+u2t0NdzIoo78fnL14if8oSZXAPU1bCmWGyR1k/0m5rSQ7AZaKlQ==} + '@trpc/server@11.0.0': + resolution: {integrity: sha512-xY9q/b/wR/tWGYTm5xmRjivkYD2EZZXmOKmHuNJRYZuLbieeNUsdfQRjJC409WB1pjKWInomhHwuA8bahZJ4lQ==} peerDependencies: typescript: '>=5.7.2' @@ -4657,6 +4672,33 @@ packages: '@types/css-modules@1.0.5': resolution: {integrity: sha512-oeKafs/df9lwOvtfiXVliZsocFVOexK9PZtLQWuPeuVCFR7jwiqlg60lu80JTe5NFNtH3tnV6Fs/ySR8BUPHAw==} + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-color@3.1.3': + resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-interpolate@3.0.4': + resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==} + + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} @@ -4723,8 +4765,8 @@ packages: '@types/node@18.19.50': resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} - '@types/node@22.13.10': - resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + '@types/node@22.13.11': + resolution: {integrity: sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -4746,8 +4788,8 @@ packages: peerDependencies: '@types/react': ^19.0.0 - '@types/react@19.0.10': - resolution: {integrity: sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==} + '@types/react@19.0.12': + resolution: {integrity: sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==} '@types/semver@7.5.8': resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} @@ -4803,51 +4845,51 @@ packages: '@types/xml2js@0.4.14': resolution: {integrity: sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==} - '@typescript-eslint/eslint-plugin@8.26.1': - resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==} + '@typescript-eslint/eslint-plugin@8.27.0': + resolution: {integrity: sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.26.1': - resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==} + '@typescript-eslint/parser@8.27.0': + resolution: {integrity: sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.26.1': - resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} + '@typescript-eslint/scope-manager@8.27.0': + resolution: {integrity: sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.26.1': - resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==} + '@typescript-eslint/type-utils@8.27.0': + resolution: {integrity: sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.26.1': - resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} + '@typescript-eslint/types@8.27.0': + resolution: {integrity: sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.26.1': - resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} + '@typescript-eslint/typescript-estree@8.27.0': + resolution: {integrity: sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.26.1': - resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} + '@typescript-eslint/utils@8.27.0': + resolution: {integrity: sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.26.1': - resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} + '@typescript-eslint/visitor-keys@8.27.0': + resolution: {integrity: sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@umami/node@0.4.0': @@ -4876,20 +4918,20 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 - '@vitest/coverage-v8@3.0.8': - resolution: {integrity: sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==} + '@vitest/coverage-v8@3.0.9': + resolution: {integrity: sha512-15OACZcBtQ34keIEn19JYTVuMFTlFrClclwWjHo/IRPg/8ELpkgNTl0o7WLP9WO9XGH6+tip9CPYtEOrIDJvBA==} peerDependencies: - '@vitest/browser': 3.0.8 - vitest: 3.0.8 + '@vitest/browser': 3.0.9 + vitest: 3.0.9 peerDependenciesMeta: '@vitest/browser': optional: true - '@vitest/expect@3.0.8': - resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==} + '@vitest/expect@3.0.9': + resolution: {integrity: sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==} - '@vitest/mocker@3.0.8': - resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==} + '@vitest/mocker@3.0.9': + resolution: {integrity: sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==} peerDependencies: msw: ^2.4.9 vite: ^5.0.0 || ^6.0.0 @@ -4899,25 +4941,25 @@ packages: vite: optional: true - '@vitest/pretty-format@3.0.8': - resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==} + '@vitest/pretty-format@3.0.9': + resolution: {integrity: sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==} - '@vitest/runner@3.0.8': - resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==} + '@vitest/runner@3.0.9': + resolution: {integrity: sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==} - '@vitest/snapshot@3.0.8': - resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==} + '@vitest/snapshot@3.0.9': + resolution: {integrity: sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==} - '@vitest/spy@3.0.8': - resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==} + '@vitest/spy@3.0.9': + resolution: {integrity: sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==} - '@vitest/ui@3.0.8': - resolution: {integrity: sha512-MfTjaLU+Gw/lYorgwFZ06Cym+Mj9hPfZh/Q91d4JxyAHiicAakPTvS7zYCSHF+5cErwu2PVBe1alSjuh6L/UiA==} + '@vitest/ui@3.0.9': + resolution: {integrity: sha512-FpZD4aIv/qNpwkV3XbLV6xldWFHMgoNWAJEgg5GmpObmAOLAErpYjew9dDwXdYdKOS3iZRKdwI+P3JOJcYeUBg==} peerDependencies: - vitest: 3.0.8 + vitest: 3.0.9 - '@vitest/utils@3.0.8': - resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==} + '@vitest/utils@3.0.9': + resolution: {integrity: sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==} '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -5305,8 +5347,8 @@ packages: resolution: {integrity: sha512-Wjss+Bc674ZABPr+SCKWTqA4V1pyYFhzDTjNBJy4jdmgOv0oGIGXeKBRJyINwP5tIy+iIZD9SfgZpztduzQ5QA==} engines: {node: '>= 18.4'} - better-sqlite3@11.9.0: - resolution: {integrity: sha512-4b9xYnoaskj8eIkke9ZCB42p5bOPabptSku8Rl4Yww70Jf+aHeLvrIjXDJrKQxUEjdppsFb+fdJSjoH4TklROA==} + better-sqlite3@11.9.1: + resolution: {integrity: sha512-Ba0KR+Fzxh2jDRhdg6TSH0SJGzb8C0aBY4hR8w8madIdIzzC6Y1+kx5qR6eS1Z+Gy20h6ZU28aeyg0z1VIrShQ==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -5766,6 +5808,50 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -5830,6 +5916,9 @@ packages: supports-color: optional: true + decimal.js-light@2.5.1: + resolution: {integrity: sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==} + decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} @@ -5992,8 +6081,8 @@ packages: resolution: {integrity: sha512-l6dMSE100u7sDaTbLczibrQZjA35jLsHNqIV+jmhNVO3O8jzM6kywMOmV9uOz9ZVSCMPQhAZEFjL/qDPVrqpUA==} hasBin: true - drizzle-orm@0.40.0: - resolution: {integrity: sha512-7ptk/HQiMSrEZHnAsSlBESXWj52VwgMmyTEfoNmpNN2ZXpcz13LwHfXTIghsAEud7Z5UJhDOp8U07ujcqme7wg==} + drizzle-orm@0.41.0: + resolution: {integrity: sha512-7A4ZxhHk9gdlXmTdPj/lREtP+3u8KvZ4yEN6MYVxBzZGex5Wtdc+CWSbu7btgF6TB0N+MNPrvW7RKBbxJchs/Q==} peerDependencies: '@aws-sdk/client-rds-data': '>=3' '@cloudflare/workers-types': '>=4' @@ -6399,6 +6488,9 @@ packages: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -6437,6 +6529,10 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-equals@5.2.2: + resolution: {integrity: sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==} + engines: {node: '>=6.0.0'} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} @@ -6999,6 +7095,10 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + intl-messageformat@10.7.1: resolution: {integrity: sha512-xQuJW2WcyzNJZWUu5xTVPOmNSA1Sowuu/NKFdUid5Fxx/Yl6/s4DefTU/y7zy+irZLDmFGmTLtnM8FqpN05wlA==} @@ -7784,8 +7884,8 @@ packages: engines: {node: '>=8', npm: '>=5'} hasBin: true - mysql2@3.13.0: - resolution: {integrity: sha512-M6DIQjTqKeqXH5HLbLMxwcK5XfXHw30u5ap6EZmu7QVmcF/gnh2wS/EOiQ4MTbXz/vQeoXrmycPlVRM00WSslg==} + mysql2@3.14.0: + resolution: {integrity: sha512-8eMhmG6gt/hRkU1G+8KlGOdQi2w+CgtNoD1ksXZq9gQfkfDsX4LHaBwTe1SY0Imx//t2iZA03DFnyYKPinxSRw==} engines: {node: '>= 8.0'} mz@2.7.0: @@ -8711,6 +8811,9 @@ packages: react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + react-number-format@5.4.3: resolution: {integrity: sha512-VCY5hFg/soBighAoGcdE+GagkJq0230qN6jcS5sp8wQX1qy1fYN/RX7/BXkrs0oyzzwqR8/+eSUrqXbGeywdUQ==} peerDependencies: @@ -8763,6 +8866,12 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + react-smooth@4.0.4: + resolution: {integrity: sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-style-singleton@2.2.3: resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} engines: {node: '>=10'} @@ -8824,6 +8933,16 @@ packages: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} engines: {node: '>= 4'} + recharts-scale@0.4.5: + resolution: {integrity: sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==} + + recharts@2.15.1: + resolution: {integrity: sha512-v8PUTUlyiDe56qUj82w/EDVuzEFXwEHp9/xOowGAZwfLjB9uAy3GllQVIYMWF6nU+qibx85WF75zD7AjqoT54Q==} + engines: {node: '>=14'} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} engines: {node: '>=4'} @@ -9018,8 +9137,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.85.1: - resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==} + sass@1.86.0: + resolution: {integrity: sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA==} engines: {node: '>=14.0.0'} hasBin: true @@ -9517,8 +9636,8 @@ packages: resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} engines: {node: '>=18'} - testcontainers@10.20.0: - resolution: {integrity: sha512-pOPm/OUIT41aMijAZ9RsYg5xOq9ciy93+pCf2D9qDI0oV8rwk91XpPoUlizll4qwxmmHsLmfZFHJTpeB+BIfmw==} + testcontainers@10.21.0: + resolution: {integrity: sha512-avzqNfP0HyHaOPTztHbGnHycZWzWaeUwSPnJGCYin2LB+n/tlGjAzExVrkIaCSBwIjFkMlufEYuKWzGc8mupDQ==} text-decoder@1.2.0: resolution: {integrity: sha512-n1yg1mOj9DNpk3NeZOx7T6jchTbyJS3i3cucbNN6FcdPriMZx7NsgrGpWWdWZZGxD7ES1XB+3uoqHMgOKaN+fg==} @@ -9829,8 +9948,8 @@ packages: types-ramda@0.30.1: resolution: {integrity: sha512-1HTsf5/QVRmLzcGfldPFvkVsAdi1db1BBKzi7iW3KBUlOICg/nKnFS+jGqDJS3YD8VsWbAh7JiHeBvbsw8RPxA==} - typescript-eslint@8.26.1: - resolution: {integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==} + typescript-eslint@8.27.0: + resolution: {integrity: sha512-ZZ/8+Y0rRUMuW1gJaPtLWe4ryHbsPLzzibk5Sq+IFa2aOH1Vo0gPr1fbA6pOnzBke7zC2Da4w8AyCgxKXo3lqA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -10060,6 +10179,9 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} + victory-vendor@36.9.2: + resolution: {integrity: sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==} + video.js@8.22.0: resolution: {integrity: sha512-xge2kpjsvC0zgFJ1cqt+wTqsi21+huFswlonPFh7qiplypsb4FN/D2Rz6bWdG/S9eQaPHfWHsarmJL/7D3DHoA==} @@ -10075,8 +10197,8 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - vite-node@3.0.8: - resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==} + vite-node@3.0.9: + resolution: {integrity: sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -10119,16 +10241,16 @@ packages: terser: optional: true - vitest@3.0.8: - resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==} + vitest@3.0.9: + resolution: {integrity: sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/debug': ^4.1.12 '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 - '@vitest/browser': 3.0.8 - '@vitest/ui': 3.0.8 + '@vitest/browser': 3.0.9 + '@vitest/ui': 3.0.9 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -10424,7 +10546,7 @@ snapshots: '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 '@antfu/ni@0.21.12': {} @@ -11385,7 +11507,7 @@ snapshots: '@kubernetes/client-node@1.1.0': dependencies: '@types/js-yaml': 4.0.9 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/node-fetch': 2.6.12 '@types/stream-buffers': 3.0.7 '@types/tar': 6.1.13 @@ -11420,11 +11542,19 @@ snapshots: js-base64: 3.7.7 optional: true + '@mantine/charts@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(recharts@2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))': + dependencies: + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/hooks': 7.17.2(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + recharts: 2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/colors-generator@7.17.2(chroma-js@3.1.2)': dependencies: chroma-js: 3.1.2 - '@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(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.17.2(react@19.0.0) @@ -11432,24 +11562,24 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) react-number-format: 5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - react-remove-scroll: 2.6.2(@types/react@19.0.10)(react@19.0.0) - react-textarea-autosize: 8.5.6(@types/react@19.0.10)(react@19.0.0) + react-remove-scroll: 2.6.2(@types/react@19.0.12)(react@19.0.0) + react-textarea-autosize: 8.5.6(@types/react@19.0.12)(react@19.0.0) type-fest: 4.34.1 transitivePeerDependencies: - '@types/react' - '@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.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.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/dropzone@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -11465,25 +11595,25 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/modals@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/modals@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.2(react@19.0.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - '@mantine/notifications@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/notifications@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.2(react@19.0.0) '@mantine/store': 7.17.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.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + '@mantine/spotlight@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.2(react@19.0.0) '@mantine/store': 7.17.2(react@19.0.0) react: 19.0.0 @@ -11493,9 +11623,9 @@ snapshots: dependencies: react: 19.0.0 - '@mantine/tiptap@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(@tiptap/extension-link@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5))(@tiptap/react@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5)(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.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(@tiptap/extension-link@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5))(@tiptap/react@2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5)(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.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@mantine/hooks': 7.17.2(react@19.0.0) '@tiptap/extension-link': 2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5) '@tiptap/react': 2.11.5(@tiptap/core@2.11.5(@tiptap/pm@2.11.5))(@tiptap/pm@2.11.5)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -12503,25 +12633,25 @@ snapshots: dependencies: remove-accents: 0.5.0 - '@tanstack/query-core@5.68.0': {} + '@tanstack/query-core@5.69.0': {} '@tanstack/query-devtools@5.67.2': {} - '@tanstack/react-query-devtools@5.68.0(@tanstack/react-query@5.68.0(react@19.0.0))(react@19.0.0)': + '@tanstack/react-query-devtools@5.69.0(@tanstack/react-query@5.69.0(react@19.0.0))(react@19.0.0)': dependencies: '@tanstack/query-devtools': 5.67.2 - '@tanstack/react-query': 5.68.0(react@19.0.0) + '@tanstack/react-query': 5.69.0(react@19.0.0) react: 19.0.0 - '@tanstack/react-query-next-experimental@5.68.0(@tanstack/react-query@5.68.0(react@19.0.0))(next@15.1.7(@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.85.1))(react@19.0.0)': + '@tanstack/react-query-next-experimental@5.69.0(@tanstack/react-query@5.69.0(react@19.0.0))(next@15.1.7(@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.86.0))(react@19.0.0)': dependencies: - '@tanstack/react-query': 5.68.0(react@19.0.0) - next: 15.1.7(@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.85.1) + '@tanstack/react-query': 5.69.0(react@19.0.0) + next: 15.1.7(@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.86.0) react: 19.0.0 - '@tanstack/react-query@5.68.0(react@19.0.0)': + '@tanstack/react-query@5.69.0(react@19.0.0)': dependencies: - '@tanstack/query-core': 5.68.0 + '@tanstack/query-core': 5.69.0 react: 19.0.0 '@tanstack/react-table@8.20.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': @@ -12540,9 +12670,9 @@ snapshots: '@tanstack/virtual-core@3.11.2': {} - '@testcontainers/mysql@10.20.0': + '@testcontainers/mysql@10.21.0': dependencies: - testcontainers: 10.20.0 + testcontainers: 10.21.0 transitivePeerDependencies: - supports-color @@ -12763,33 +12893,33 @@ snapshots: tree-sitter: 0.22.1 optional: true - '@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2)': + '@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2)': dependencies: - '@trpc/server': 11.0.0-rc.828(typescript@5.8.2) + '@trpc/server': 11.0.0(typescript@5.8.2) typescript: 5.8.2 - '@trpc/next@11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/react-query@11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(next@15.1.7(@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.85.1))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2)': + '@trpc/next@11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/react-query@11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(next@15.1.7(@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.86.0))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2)': dependencies: - '@trpc/client': 11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2) - '@trpc/server': 11.0.0-rc.828(typescript@5.8.2) - next: 15.1.7(@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.85.1) + '@trpc/client': 11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2) + '@trpc/server': 11.0.0(typescript@5.8.2) + next: 15.1.7(@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.86.0) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.8.2 optionalDependencies: - '@tanstack/react-query': 5.68.0(react@19.0.0) - '@trpc/react-query': 11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) + '@tanstack/react-query': 5.69.0(react@19.0.0) + '@trpc/react-query': 11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2) - '@trpc/react-query@11.0.0-rc.828(@tanstack/react-query@5.68.0(react@19.0.0))(@trpc/client@11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2)': + '@trpc/react-query@11.0.0(@tanstack/react-query@5.69.0(react@19.0.0))(@trpc/client@11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2))(@trpc/server@11.0.0(typescript@5.8.2))(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.8.2)': dependencies: - '@tanstack/react-query': 5.68.0(react@19.0.0) - '@trpc/client': 11.0.0-rc.828(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(typescript@5.8.2) - '@trpc/server': 11.0.0-rc.828(typescript@5.8.2) + '@tanstack/react-query': 5.69.0(react@19.0.0) + '@trpc/client': 11.0.0(@trpc/server@11.0.0(typescript@5.8.2))(typescript@5.8.2) + '@trpc/server': 11.0.0(typescript@5.8.2) react: 19.0.0 react-dom: 19.0.0(react@19.0.0) typescript: 5.8.2 - '@trpc/server@11.0.0-rc.828(typescript@5.8.2)': + '@trpc/server@11.0.0(typescript@5.8.2)': dependencies: typescript: 5.8.2 @@ -12803,7 +12933,7 @@ snapshots: '@tsconfig/svelte@1.0.13': {} - '@turbo/gen@2.4.4(@types/node@22.13.10)(typescript@5.8.2)': + '@turbo/gen@2.4.4(@types/node@22.13.11)(typescript@5.8.2)': dependencies: '@turbo/workspaces': 2.4.4 commander: 10.0.1 @@ -12813,7 +12943,7 @@ snapshots: node-plop: 0.26.3 picocolors: 1.0.1 proxy-agent: 6.4.0 - ts-node: 10.9.2(@types/node@22.13.10)(typescript@5.8.2) + ts-node: 10.9.2(@types/node@22.13.11)(typescript@5.8.2) update-check: 1.5.4 validate-npm-package-name: 5.0.1 transitivePeerDependencies: @@ -12839,11 +12969,11 @@ snapshots: '@types/adm-zip@0.5.7': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/asn1@0.2.4': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/aws-lambda@8.10.146': {} @@ -12870,22 +13000,22 @@ snapshots: '@types/bcrypt@5.0.2': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/better-sqlite3@7.6.12': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/chroma-js@3.1.1': {} '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/cookie@0.4.1': {} @@ -12896,25 +13026,49 @@ snapshots: '@types/connect': 3.4.38 '@types/express': 4.17.21 '@types/keygrip': 1.0.6 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/cors@2.8.17': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/css-font-loading-module@0.0.7': {} '@types/css-modules@1.0.5': {} + '@types/d3-array@3.2.1': {} + + '@types/d3-color@3.1.3': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-interpolate@3.0.4': + dependencies: + '@types/d3-color': 3.1.3 + + '@types/d3-path@3.1.1': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + '@types/docker-modem@3.0.6': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/ssh2': 1.15.1 '@types/dockerode@3.3.35': dependencies: '@types/docker-modem': 3.0.6 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/ssh2': 1.15.1 '@types/estree@1.0.5': {} @@ -12923,7 +13077,7 @@ snapshots: '@types/express-serve-static-core@4.19.5': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -12938,7 +13092,7 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/hast@2.3.10': dependencies: @@ -12976,14 +13130,14 @@ snapshots: '@types/node-fetch@2.6.12': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 form-data: 4.0.1 '@types/node@18.19.50': dependencies: undici-types: 5.26.5 - '@types/node@22.13.10': + '@types/node@22.13.11': dependencies: undici-types: 6.20.0 @@ -12999,11 +13153,11 @@ snapshots: '@types/range-parser@1.2.7': {} - '@types/react-dom@19.0.4(@types/react@19.0.10)': + '@types/react-dom@19.0.4(@types/react@19.0.12)': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 - '@types/react@19.0.10': + '@types/react@19.0.12': dependencies: csstype: 3.1.3 @@ -13012,21 +13166,21 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/send': 0.17.4 '@types/ssh2-streams@0.1.12': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/ssh2@0.5.52': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/ssh2-streams': 0.1.12 '@types/ssh2@1.15.1': @@ -13035,20 +13189,20 @@ snapshots: '@types/stream-buffers@3.0.7': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/swagger-ui-react@5.18.0': dependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 '@types/tar@6.1.13': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 minipass: 4.2.8 '@types/through@0.0.33': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/tinycolor2@1.4.6': {} @@ -13065,20 +13219,20 @@ snapshots: '@types/ws@8.18.0': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 '@types/xml2js@0.4.14': dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 - '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)': + '@typescript-eslint/eslint-plugin@8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/type-utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.27.0 eslint: 9.22.0 graphemer: 1.4.0 ignore: 5.3.2 @@ -13088,27 +13242,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2)': + '@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.27.0 debug: 4.4.0 eslint: 9.22.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.26.1': + '@typescript-eslint/scope-manager@8.27.0': dependencies: - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/visitor-keys': 8.27.0 - '@typescript-eslint/type-utils@8.26.1(eslint@9.22.0)(typescript@5.8.2)': + '@typescript-eslint/type-utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) debug: 4.4.0 eslint: 9.22.0 ts-api-utils: 2.0.1(typescript@5.8.2) @@ -13116,12 +13270,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.26.1': {} + '@typescript-eslint/types@8.27.0': {} - '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': + '@typescript-eslint/typescript-estree@8.27.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/visitor-keys': 8.26.1 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/visitor-keys': 8.27.0 debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 @@ -13132,20 +13286,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.26.1(eslint@9.22.0)(typescript@5.8.2)': + '@typescript-eslint/utils@8.27.0(eslint@9.22.0)(typescript@5.8.2)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@9.22.0) - '@typescript-eslint/scope-manager': 8.26.1 - '@typescript-eslint/types': 8.26.1 - '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.27.0 + '@typescript-eslint/types': 8.27.0 + '@typescript-eslint/typescript-estree': 8.27.0(typescript@5.8.2) eslint: 9.22.0 typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.26.1': + '@typescript-eslint/visitor-keys@8.27.0': dependencies: - '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/types': 8.27.0 eslint-visitor-keys: 4.2.0 '@umami/node@0.4.0': {} @@ -13178,18 +13332,18 @@ snapshots: global: 4.4.0 is-function: 1.0.2 - '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitejs/plugin-react@4.3.4(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.0.8(vitest@3.0.8)': + '@vitest/coverage-v8@3.0.9(vitest@3.0.9)': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -13203,58 +13357,58 @@ snapshots: std-env: 3.8.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.0.9(@types/node@22.13.11)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - '@vitest/expect@3.0.8': + '@vitest/expect@3.0.9': dependencies: - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.0.8(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': + '@vitest/mocker@3.0.9(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0))': dependencies: - '@vitest/spy': 3.0.8 + '@vitest/spy': 3.0.9 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - '@vitest/pretty-format@3.0.8': + '@vitest/pretty-format@3.0.9': dependencies: tinyrainbow: 2.0.0 - '@vitest/runner@3.0.8': + '@vitest/runner@3.0.9': dependencies: - '@vitest/utils': 3.0.8 + '@vitest/utils': 3.0.9 pathe: 2.0.3 - '@vitest/snapshot@3.0.8': + '@vitest/snapshot@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.8 + '@vitest/pretty-format': 3.0.9 magic-string: 0.30.17 pathe: 2.0.3 - '@vitest/spy@3.0.8': + '@vitest/spy@3.0.9': dependencies: tinyspy: 3.0.2 - '@vitest/ui@3.0.8(vitest@3.0.8)': + '@vitest/ui@3.0.9(vitest@3.0.9)': dependencies: - '@vitest/utils': 3.0.8 + '@vitest/utils': 3.0.9 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.1 tinyglobby: 0.2.12 tinyrainbow: 2.0.0 - vitest: 3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vitest: 3.0.9(@types/node@22.13.11)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - '@vitest/utils@3.0.8': + '@vitest/utils@3.0.9': dependencies: - '@vitest/pretty-format': 3.0.8 + '@vitest/pretty-format': 3.0.9 loupe: 3.1.3 tinyrainbow: 2.0.0 @@ -13705,7 +13859,7 @@ snapshots: bellajs@11.2.0: {} - better-sqlite3@11.9.0: + better-sqlite3@11.9.1: dependencies: bindings: 1.5.0 prebuild-install: 7.1.2 @@ -14198,6 +14352,44 @@ snapshots: csstype@3.1.3: {} + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-color@3.1.0: {} + + d3-ease@3.0.1: {} + + d3-format@3.1.0: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + damerau-levenshtein@1.0.8: {} data-uri-to-buffer@6.0.2: {} @@ -14257,6 +14449,8 @@ snapshots: dependencies: ms: 2.1.3 + decimal.js-light@2.5.1: {} + decimal.js@10.4.3: {} decompress-response@6.0.0: @@ -14427,17 +14621,17 @@ snapshots: transitivePeerDependencies: - supports-color - drizzle-orm@0.40.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.0)(gel@2.0.0)(mysql2@3.13.0): + drizzle-orm@0.41.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0): optionalDependencies: '@libsql/client-wasm': 0.14.0 '@types/better-sqlite3': 7.6.12 - better-sqlite3: 11.9.0 + better-sqlite3: 11.9.1 gel: 2.0.0 - mysql2: 3.13.0 + mysql2: 3.14.0 - drizzle-zod@0.7.0(drizzle-orm@0.40.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.0)(gel@2.0.0)(mysql2@3.13.0))(zod@3.24.2): + drizzle-zod@0.7.0(drizzle-orm@0.41.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0))(zod@3.24.2): dependencies: - drizzle-orm: 0.40.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.0)(gel@2.0.0)(mysql2@3.13.0) + drizzle-orm: 0.41.0(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.12)(better-sqlite3@11.9.1)(gel@2.0.0)(mysql2@3.14.0) zod: 3.24.2 dunder-proto@1.0.1: @@ -14493,7 +14687,7 @@ snapshots: dependencies: '@types/cookie': 0.4.1 '@types/cors': 2.8.17 - '@types/node': 22.13.10 + '@types/node': 22.13.11 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -14856,17 +15050,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2) eslint: 9.22.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0): + eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -14877,7 +15071,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.22.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@9.22.0) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -14889,7 +15083,7 @@ snapshots: string.prototype.trimend: 1.0.8 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -15030,6 +15224,8 @@ snapshots: event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} + events@3.3.0: {} execa@5.1.1: @@ -15089,6 +15285,8 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-equals@5.2.2: {} + fast-fifo@1.3.2: {} fast-glob@3.3.1: @@ -15707,6 +15905,8 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + internmap@2.0.3: {} + intl-messageformat@10.7.1: dependencies: '@formatjs/ecma402-abstract': 2.2.0 @@ -16038,7 +16238,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -16046,9 +16246,9 @@ snapshots: jose@6.0.8: {} - jotai@2.12.2(@types/react@19.0.10)(react@19.0.0): + jotai@2.12.2(@types/react@19.0.12)(react@19.0.0): optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 react: 19.0.0 js-base64@3.7.7: @@ -16294,8 +16494,8 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/parser': 7.26.9 + '@babel/types': 7.26.9 source-map-js: 1.2.1 make-dir@3.1.0: @@ -16308,10 +16508,10 @@ snapshots: make-error@1.3.6: {} - mantine-react-table@2.0.0-beta.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.9(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/dates@7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0))(@tabler/icons-react@3.31.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.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - '@mantine/dates': 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.2(react@19.0.0))(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/core': 7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@mantine/dates': 7.17.2(@mantine/core@7.17.2(@mantine/hooks@7.17.2(react@19.0.0))(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(@mantine/hooks@7.17.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.17.2(react@19.0.0) '@tabler/icons-react': 3.31.0(react@19.0.0) '@tanstack/match-sorter-utils': 8.19.4 @@ -16465,7 +16665,7 @@ snapshots: '@babel/runtime': 7.25.6 global: 4.4.0 - mysql2@3.13.0: + mysql2@3.14.0: dependencies: aws-ssl-profiles: 1.1.2 denque: 2.1.0 @@ -16512,23 +16712,23 @@ snapshots: netmask@2.0.2: {} - next-auth@5.0.0-beta.25(next@15.1.7(@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.85.1))(react@19.0.0): + next-auth@5.0.0-beta.25(next@15.1.7(@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.86.0))(react@19.0.0): dependencies: '@auth/core': 0.37.2 - next: 15.1.7(@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.85.1) + next: 15.1.7(@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.86.0) react: 19.0.0 - next-intl@4.0.2(next@15.1.7(@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.85.1))(react@19.0.0)(typescript@5.8.2): + next-intl@4.0.2(next@15.1.7(@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.86.0))(react@19.0.0)(typescript@5.8.2): dependencies: '@formatjs/intl-localematcher': 0.5.5 negotiator: 1.0.0 - next: 15.1.7(@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.85.1) + next: 15.1.7(@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.86.0) react: 19.0.0 use-intl: 4.0.2(react@19.0.0) optionalDependencies: typescript: 5.8.2 - next@15.1.7(@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.85.1): + next@15.1.7(@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.86.0): dependencies: '@next/env': 15.1.7 '@swc/counter': 0.1.3 @@ -16549,7 +16749,7 @@ snapshots: '@next/swc-win32-arm64-msvc': 15.1.7 '@next/swc-win32-x64-msvc': 15.1.7 '@playwright/test': 1.49.1 - sass: 1.85.1 + sass: 1.86.0 sharp: 0.33.5 transitivePeerDependencies: - '@babel/core' @@ -17071,7 +17271,7 @@ snapshots: postcss@8.4.47: dependencies: nanoid: 3.3.9 - picocolors: 1.1.0 + picocolors: 1.1.1 source-map-js: 1.2.1 preact-render-to-string@5.2.3(preact@10.11.3): @@ -17282,7 +17482,7 @@ snapshots: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 22.13.10 + '@types/node': 22.13.11 long: 5.2.3 proxmox-api@1.1.1: @@ -17404,40 +17604,42 @@ snapshots: react-is@16.13.1: {} + react-is@18.3.1: {} + react-number-format@5.4.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-redux@9.2.0(@types/react@19.0.10)(react@19.0.0)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.0.12)(react@19.0.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 react: 19.0.0 use-sync-external-store: 1.4.0(react@19.0.0) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 redux: 5.0.1 react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.8(@types/react@19.0.10)(react@19.0.0): + react-remove-scroll-bar@2.3.8(@types/react@19.0.12)(react@19.0.0): dependencies: react: 19.0.0 - react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.12)(react@19.0.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 - react-remove-scroll@2.6.2(@types/react@19.0.10)(react@19.0.0): + react-remove-scroll@2.6.2(@types/react@19.0.12)(react@19.0.0): dependencies: react: 19.0.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.10)(react@19.0.0) - react-style-singleton: 2.2.3(@types/react@19.0.10)(react@19.0.0) + react-remove-scroll-bar: 2.3.8(@types/react@19.0.12)(react@19.0.0) + react-style-singleton: 2.2.3(@types/react@19.0.12)(react@19.0.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.0.10)(react@19.0.0) - use-sidecar: 1.1.2(@types/react@19.0.10)(react@19.0.0) + use-callback-ref: 1.3.3(@types/react@19.0.12)(react@19.0.0) + use-sidecar: 1.1.2(@types/react@19.0.12)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 react-scan@0.0.31: dependencies: @@ -17452,13 +17654,21 @@ snapshots: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - react-style-singleton@2.2.3(@types/react@19.0.10)(react@19.0.0): + react-smooth@4.0.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + fast-equals: 5.2.2 + prop-types: 15.8.1 + 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) + + react-style-singleton@2.2.3(@types/react@19.0.12)(react@19.0.0): dependencies: get-nonce: 1.0.1 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 react-syntax-highlighter@15.6.1(react@19.0.0): dependencies: @@ -17470,12 +17680,12 @@ snapshots: react: 19.0.0 refractor: 3.6.0 - react-textarea-autosize@8.5.6(@types/react@19.0.10)(react@19.0.0): + react-textarea-autosize@8.5.6(@types/react@19.0.12)(react@19.0.0): dependencies: '@babel/runtime': 7.25.6 react: 19.0.0 use-composed-ref: 1.3.0(react@19.0.0) - use-latest: 1.2.1(@types/react@19.0.10)(react@19.0.0) + use-latest: 1.2.1(@types/react@19.0.12)(react@19.0.0) transitivePeerDependencies: - '@types/react' @@ -17542,6 +17752,23 @@ snapshots: tiny-invariant: 1.3.3 tslib: 2.8.1 + recharts-scale@0.4.5: + dependencies: + decimal.js-light: 2.5.1 + + recharts@2.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + clsx: 2.1.1 + eventemitter3: 4.0.7 + lodash: 4.17.21 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-is: 18.3.1 + react-smooth: 4.0.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + recharts-scale: 0.4.5 + tiny-invariant: 1.3.3 + victory-vendor: 36.9.2 + redis-errors@1.2.0: {} redis-parser@3.0.0: @@ -17765,7 +17992,7 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.85.1: + sass@1.86.0: dependencies: chokidar: 4.0.0 immutable: 5.0.2 @@ -18315,7 +18542,7 @@ snapshots: transitivePeerDependencies: - debug - swagger-ui-react@5.20.1(@types/react@19.0.10)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + swagger-ui-react@5.20.1(@types/react@19.0.12)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime-corejs3': 7.26.9 '@scarf/scarf': 1.4.0 @@ -18339,7 +18566,7 @@ snapshots: react-immutable-proptypes: 2.2.0(immutable@3.8.2) react-immutable-pure-component: 2.2.2(immutable@3.8.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-inspector: 6.0.2(react@19.0.0) - react-redux: 9.2.0(@types/react@19.0.10)(react@19.0.0)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.0.12)(react@19.0.0)(redux@5.0.1) react-syntax-highlighter: 15.6.1(react@19.0.0) redux: 5.0.1 redux-immutable: 4.0.0(immutable@3.8.2) @@ -18457,7 +18684,7 @@ snapshots: glob: 10.4.5 minimatch: 9.0.5 - testcontainers@10.20.0: + testcontainers@10.21.0: dependencies: '@balena/dockerignore': 1.0.2 '@types/dockerode': 3.3.35 @@ -18593,9 +18820,9 @@ snapshots: triple-beam@1.4.1: {} - trpc-to-openapi@2.1.3(@trpc/server@11.0.0-rc.828(typescript@5.8.2))(zod-openapi@2.19.0(zod@3.24.2))(zod@3.24.2): + trpc-to-openapi@2.1.3(@trpc/server@11.0.0(typescript@5.8.2))(zod-openapi@2.19.0(zod@3.24.2))(zod@3.24.2): dependencies: - '@trpc/server': 11.0.0-rc.828(typescript@5.8.2) + '@trpc/server': 11.0.0(typescript@5.8.2) co-body: 6.2.0 h3: 1.13.0 openapi3-ts: 4.4.0 @@ -18610,14 +18837,14 @@ snapshots: ts-mixer@6.0.4: {} - ts-node@10.9.2(@types/node@22.13.10)(typescript@5.8.2): + ts-node@10.9.2(@types/node@22.13.11)(typescript@5.8.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.10 + '@types/node': 22.13.11 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -18793,11 +19020,11 @@ snapshots: dependencies: ts-toolbelt: 9.6.0 - typescript-eslint@8.26.1(eslint@9.22.0)(typescript@5.8.2): + typescript-eslint@8.27.0(eslint@9.22.0)(typescript@5.8.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2) - '@typescript-eslint/parser': 8.26.1(eslint@9.22.0)(typescript@5.8.2) - '@typescript-eslint/utils': 8.26.1(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/eslint-plugin': 8.27.0(@typescript-eslint/parser@8.27.0(eslint@9.22.0)(typescript@5.8.2))(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/parser': 8.27.0(eslint@9.22.0)(typescript@5.8.2) + '@typescript-eslint/utils': 8.27.0(eslint@9.22.0)(typescript@5.8.2) eslint: 9.22.0 typescript: 5.8.2 transitivePeerDependencies: @@ -18936,12 +19163,12 @@ snapshots: url-toolkit@2.2.5: {} - use-callback-ref@1.3.3(@types/react@19.0.10)(react@19.0.0): + use-callback-ref@1.3.3(@types/react@19.0.12)(react@19.0.0): dependencies: react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 use-composed-ref@1.3.0(react@19.0.0): dependencies: @@ -18960,26 +19187,26 @@ snapshots: intl-messageformat: 10.7.1 react: 19.0.0 - use-isomorphic-layout-effect@1.1.2(@types/react@19.0.10)(react@19.0.0): + use-isomorphic-layout-effect@1.1.2(@types/react@19.0.12)(react@19.0.0): dependencies: react: 19.0.0 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 - use-latest@1.2.1(@types/react@19.0.10)(react@19.0.0): + use-latest@1.2.1(@types/react@19.0.12)(react@19.0.0): dependencies: react: 19.0.0 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.10)(react@19.0.0) + use-isomorphic-layout-effect: 1.1.2(@types/react@19.0.12)(react@19.0.0) optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 - use-sidecar@1.1.2(@types/react@19.0.10)(react@19.0.0): + use-sidecar@1.1.2(@types/react@19.0.12)(react@19.0.0): dependencies: detect-node-es: 1.1.0 react: 19.0.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.0.10 + '@types/react': 19.0.12 use-sync-external-store@1.2.2(react@19.0.0): dependencies: @@ -19008,6 +19235,23 @@ snapshots: vary@1.1.2: {} + victory-vendor@36.9.2: + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-ease': 3.0.2 + '@types/d3-interpolate': 3.0.4 + '@types/d3-scale': 4.0.9 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-timer': 3.0.2 + d3-array: 3.2.4 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-timer: 3.0.1 + video.js@8.22.0: dependencies: '@babel/runtime': 7.25.6 @@ -19034,13 +19278,13 @@ snapshots: dependencies: global: 4.4.0 - vite-node@3.0.8(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite-node@3.0.9(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - '@types/node' - less @@ -19052,38 +19296,38 @@ snapshots: - supports-color - terser - vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): + vite-tsconfig-paths@5.1.4(typescript@5.8.2)(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)): dependencies: debug: 4.3.7 globrex: 0.1.2 tsconfck: 3.1.3(typescript@5.8.2) optionalDependencies: - vite: 5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) transitivePeerDependencies: - supports-color - typescript - vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 rollup: 4.21.3 optionalDependencies: - '@types/node': 22.13.10 + '@types/node': 22.13.11 fsevents: 2.3.3 - sass: 1.85.1 + sass: 1.86.0 sugarss: 4.0.1(postcss@8.4.47) terser: 5.39.0 - vitest@3.0.8(@types/node@22.13.10)(@vitest/ui@3.0.8)(jsdom@26.0.0)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): + vitest@3.0.9(@types/node@22.13.11)(@vitest/ui@3.0.9)(jsdom@26.0.0)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0): dependencies: - '@vitest/expect': 3.0.8 - '@vitest/mocker': 3.0.8(vite@5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) - '@vitest/pretty-format': 3.0.8 - '@vitest/runner': 3.0.8 - '@vitest/snapshot': 3.0.8 - '@vitest/spy': 3.0.8 - '@vitest/utils': 3.0.8 + '@vitest/expect': 3.0.9 + '@vitest/mocker': 3.0.9(vite@5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0)) + '@vitest/pretty-format': 3.0.9 + '@vitest/runner': 3.0.9 + '@vitest/snapshot': 3.0.9 + '@vitest/spy': 3.0.9 + '@vitest/utils': 3.0.9 chai: 5.2.0 debug: 4.4.0 expect-type: 1.1.0 @@ -19094,12 +19338,12 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 5.4.5(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) - vite-node: 3.0.8(@types/node@22.13.10)(sass@1.85.1)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite: 5.4.5(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) + vite-node: 3.0.9(@types/node@22.13.11)(sass@1.86.0)(sugarss@4.0.1(postcss@8.4.47))(terser@5.39.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.13.10 - '@vitest/ui': 3.0.8(vitest@3.0.8) + '@types/node': 22.13.11 + '@vitest/ui': 3.0.9(vitest@3.0.9) jsdom: 26.0.0 transitivePeerDependencies: - less diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json index 1c63029f1..625c40cf5 100644 --- a/tooling/eslint/package.json +++ b/tooling/eslint/package.json @@ -24,7 +24,7 @@ "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.4", "eslint-plugin-react-hooks": "^5.2.0", - "typescript-eslint": "^8.26.1" + "typescript-eslint": "^8.27.0" }, "devDependencies": { "@homarr/prettier-config": "workspace:^0.1.0",