From 03e6d06e347ed4402a8f07544d10839fcb93404e Mon Sep 17 00:00:00 2001 From: Fuad ALPHATIC Date: Sat, 30 May 2026 19:57:07 +0100 Subject: [PATCH] feat: admin-dashboard ui enhancements and locale integration Summary: - Add the signer balance ring chart to the admin signers page. - Add the Horizon latency grid to the admin chains page. - Add a reusable React error boundary screen for the app and admin routes. - Replace the dashboard i18n wrapper with a next-intl-based locale provider and language switcher. Validation: - pnpm exec vitest run components/signers/SignerBalanceRingChart.test.tsx - node --test --experimental-test-isolation=none --experimental-strip-types lib/horizon-monitor.test.ts - Browser screenshots captured for /admin/signers and /admin/chains. Closes #746 Closes #753 Closes #754 Closes #755 --- admin-dashboard/app/admin/chains/page.tsx | 8 +- admin-dashboard/app/admin/error.tsx | 13 + admin-dashboard/app/error.tsx | 13 + admin-dashboard/components/Navbar.tsx | 44 +- .../dashboard/HorizonLatencyGrid.tsx | 80 ++ .../feedback/ErrorBoundaryScreen.tsx | 70 ++ admin-dashboard/components/providers.tsx | 28 +- .../signers/SignerBalanceRingChart.test.tsx | 83 ++ .../signers/SignerBalanceRingChart.tsx | 213 +++++ .../components/signers/SignerPoolManager.tsx | 3 + .../docs/ui-dashboard-enhancements.md | 20 + admin-dashboard/i18n/I18nProvider.tsx | 1 + admin-dashboard/i18n/LanguageSwitcher.tsx | 1 + admin-dashboard/i18n/config.ts | 1 + admin-dashboard/i18n/index.ts | 1 + admin-dashboard/i18n/provider.tsx | 1 + admin-dashboard/lib/horizon-monitor.test.ts | 37 + admin-dashboard/lib/horizon-monitor.ts | 87 +++ admin-dashboard/package.json | 3 +- admin-dashboard/src/i18n/I18nProvider.tsx | 37 +- admin-dashboard/src/i18n/LanguageSwitcher.tsx | 62 +- .../src/i18n/__tests__/i18n.test.ts | 14 +- admin-dashboard/src/i18n/config.ts | 87 +-- admin-dashboard/src/i18n/index.ts | 51 +- admin-dashboard/src/i18n/provider.tsx | 100 ++- admin-dashboard/src/locales/en.json | 4 + admin-dashboard/src/locales/es.json | 4 + admin-dashboard/src/locales/fr.json | 16 + admin-dashboard/src/locales/ja.json | 16 + admin-dashboard/src/locales/pt.json | 4 + admin-dashboard/src/locales/zh.json | 4 + admin-dashboard/verification-report.md | 26 + pnpm-lock.yaml | 736 +++++++++++++----- 33 files changed, 1410 insertions(+), 458 deletions(-) create mode 100644 admin-dashboard/app/admin/error.tsx create mode 100644 admin-dashboard/app/error.tsx create mode 100644 admin-dashboard/components/dashboard/HorizonLatencyGrid.tsx create mode 100644 admin-dashboard/components/feedback/ErrorBoundaryScreen.tsx create mode 100644 admin-dashboard/components/signers/SignerBalanceRingChart.test.tsx create mode 100644 admin-dashboard/components/signers/SignerBalanceRingChart.tsx create mode 100644 admin-dashboard/docs/ui-dashboard-enhancements.md create mode 100644 admin-dashboard/i18n/I18nProvider.tsx create mode 100644 admin-dashboard/i18n/LanguageSwitcher.tsx create mode 100644 admin-dashboard/i18n/config.ts create mode 100644 admin-dashboard/i18n/index.ts create mode 100644 admin-dashboard/i18n/provider.tsx create mode 100644 admin-dashboard/lib/horizon-monitor.test.ts create mode 100644 admin-dashboard/lib/horizon-monitor.ts create mode 100644 admin-dashboard/src/locales/fr.json create mode 100644 admin-dashboard/src/locales/ja.json diff --git a/admin-dashboard/app/admin/chains/page.tsx b/admin-dashboard/app/admin/chains/page.tsx index 84a2718b..b6608bb6 100644 --- a/admin-dashboard/app/admin/chains/page.tsx +++ b/admin-dashboard/app/admin/chains/page.tsx @@ -2,6 +2,8 @@ import Link from "next/link"; import { auth } from "@/auth"; import { ChainRegistryManager } from "@/components/chains/ChainRegistryManager"; import type { ChainRecord } from "@/components/chains/ChainRegistryManager"; +import { HorizonLatencyGrid } from "@/components/dashboard/HorizonLatencyGrid"; +import { getHorizonLatencyGridData } from "@/lib/horizon-monitor"; async function fetchChains(): Promise { const serverUrl = process.env.FLUID_SERVER_URL?.trim().replace(/\/$/, ""); @@ -27,7 +29,10 @@ async function fetchChains(): Promise { export default async function AdminChainsPage() { const session = await auth(); - const chains = await fetchChains(); + const [chains, horizonHealth] = await Promise.all([ + fetchChains(), + getHorizonLatencyGridData(), + ]); return (
@@ -68,6 +73,7 @@ export default async function AdminChainsPage() { {/* ── Content ── */}
+
diff --git a/admin-dashboard/app/admin/error.tsx b/admin-dashboard/app/admin/error.tsx new file mode 100644 index 00000000..29f2d212 --- /dev/null +++ b/admin-dashboard/app/admin/error.tsx @@ -0,0 +1,13 @@ +"use client"; + +import { ErrorBoundaryScreen } from "@/components/feedback/ErrorBoundaryScreen"; + +export default function AdminError({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + return ; +} \ No newline at end of file diff --git a/admin-dashboard/app/error.tsx b/admin-dashboard/app/error.tsx new file mode 100644 index 00000000..03e30b9e --- /dev/null +++ b/admin-dashboard/app/error.tsx @@ -0,0 +1,13 @@ +"use client"; + +import { ErrorBoundaryScreen } from "@/components/feedback/ErrorBoundaryScreen"; + +export default function RootError({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + return ; +} \ No newline at end of file diff --git a/admin-dashboard/components/Navbar.tsx b/admin-dashboard/components/Navbar.tsx index 0d21ae2c..ac840165 100644 --- a/admin-dashboard/components/Navbar.tsx +++ b/admin-dashboard/components/Navbar.tsx @@ -1,14 +1,17 @@ "use client"; -import Link from "next/link"; -import { usePathname } from "next/navigation"; -import Image from "next/image"; -import { NotificationBell } from "./dashboard/NotificationBell"; -import { HelpCenter } from "./HelpCenter"; -import { ThemeSwitcher } from "./theme/ThemeSwitcher"; +import Link from "next/link"; +import { usePathname } from "next/navigation"; +import Image from "next/image"; +import { useTranslations } from "next-intl"; +import { NotificationBell } from "./dashboard/NotificationBell"; +import { HelpCenter } from "./HelpCenter"; +import { ThemeSwitcher } from "./theme/ThemeSwitcher"; +import { LanguageSwitcher } from "@/i18n/LanguageSwitcher"; export function Navbar() { const pathname = usePathname(); + const t = useTranslations("navigation"); const isAdmin = Boolean(pathname?.startsWith("/admin")); const badge = pathname === "/" ? "Developer portal" : isAdmin ? "Admin" : null; @@ -35,25 +38,26 @@ export function Navbar() { href="/plugins" className="hidden text-sm font-medium text-muted-foreground transition-colors hover:text-foreground sm:inline-block" > - Plugins + {t("plugins")} - SDKs + {t("sdk")} - - Changelog - - - - {isAdmin && } - - - + + Changelog + + + + + {isAdmin && } + + + ); } diff --git a/admin-dashboard/components/dashboard/HorizonLatencyGrid.tsx b/admin-dashboard/components/dashboard/HorizonLatencyGrid.tsx new file mode 100644 index 00000000..c4ce08f3 --- /dev/null +++ b/admin-dashboard/components/dashboard/HorizonLatencyGrid.tsx @@ -0,0 +1,80 @@ +import type { HorizonEndpointHealth } from "@/lib/horizon-monitor"; + +function statusTone(status: HorizonEndpointHealth["syncStatus"]) { + switch (status) { + case "synced": + return "border-emerald-200 bg-emerald-50 text-emerald-700"; + case "degraded": + return "border-amber-200 bg-amber-50 text-amber-700"; + default: + return "border-slate-200 bg-slate-100 text-slate-600"; + } +} + +function statusLabel(status: HorizonEndpointHealth["syncStatus"]) { + switch (status) { + case "synced": + return "Synced"; + case "degraded": + return "Lagging"; + default: + return "Offline"; + } +} + +function formatLatency(latencyMs: number | null) { + return latencyMs === null ? "—" : `${latencyMs} ms`; +} + +export function HorizonLatencyGrid({ endpoints }: { endpoints: HorizonEndpointHealth[] }) { + return ( +
+
+

+ Horizon Health +

+

Horizon Node Live Latency Grid

+

+ Active Horizon URLs with ping latency and current synchronization status. +

+
+ + {endpoints.length > 0 ? ( +
+ {endpoints.map((endpoint) => ( +
+
+
+

{endpoint.label}

+

{endpoint.url}

+
+ + {statusLabel(endpoint.syncStatus)} + +
+ +
+
+
Latency
+
{formatLatency(endpoint.latencyMs)}
+
+
+
Ping
+
{endpoint.online ? "Reachable" : "Unreachable"}
+
+
+ +

+ Last checked {new Date(endpoint.lastCheckedAt).toLocaleTimeString()} +

+
+ ))} +
+ ) : ( +
+ No Horizon endpoints are available. +
+ )} +
+ ); +} \ No newline at end of file diff --git a/admin-dashboard/components/feedback/ErrorBoundaryScreen.tsx b/admin-dashboard/components/feedback/ErrorBoundaryScreen.tsx new file mode 100644 index 00000000..ee267a28 --- /dev/null +++ b/admin-dashboard/components/feedback/ErrorBoundaryScreen.tsx @@ -0,0 +1,70 @@ +"use client"; + +import { useState } from "react"; +import { AlertTriangle, RotateCcw } from "lucide-react"; + +interface ErrorBoundaryScreenProps { + error: Error & { digest?: string }; + reset: () => void; + scope?: string; +} + +export function ErrorBoundaryScreen({ error, reset, scope = "the page" }: ErrorBoundaryScreenProps) { + const [showDetails, setShowDetails] = useState(false); + + return ( +
+
+
+
+
+ +
+

+ Application error +

+

+ Something went wrong in {scope}. +

+

+ The dashboard hit an unexpected React error. Retry the route after the issue is cleared, + or review the details below for debugging. +

+
+
+ +
+ + +
+ + {showDetails ? ( +
+

Error details

+

{error.message}

+ {error.digest ?

Digest: {error.digest}

: null} + {error.stack ? ( +
+                {error.stack}
+              
+ ) : null} +
+ ) : null} +
+
+ ); +} \ No newline at end of file diff --git a/admin-dashboard/components/providers.tsx b/admin-dashboard/components/providers.tsx index a8c9876b..611ad2a6 100644 --- a/admin-dashboard/components/providers.tsx +++ b/admin-dashboard/components/providers.tsx @@ -5,23 +5,25 @@ import { SessionTimeoutWarning } from "@/components/dashboard/SessionTimeoutWarn import { RESOLVED_THEMES, THEME_STORAGE_KEY } from "@/lib/theme"; import { SessionProvider } from "next-auth/react"; import { ThemeProvider } from "next-themes"; -import { I18nProvider } from "@/i18n/provider"; +import { DashboardIntlProvider } from "@/i18n/provider"; export function Providers({ children }: { children: React.ReactNode }) { return ( - - {children} - - - + + + {children} + + + + ); } diff --git a/admin-dashboard/components/signers/SignerBalanceRingChart.test.tsx b/admin-dashboard/components/signers/SignerBalanceRingChart.test.tsx new file mode 100644 index 00000000..79920b43 --- /dev/null +++ b/admin-dashboard/components/signers/SignerBalanceRingChart.test.tsx @@ -0,0 +1,83 @@ +import React from "react"; +import { render, screen, within } from "@testing-library/react"; +import { describe, expect, it, vi } from "vitest"; +import { SignerBalanceRingChart } from "./SignerBalanceRingChart"; + +vi.mock("recharts", async () => { + const actual = await vi.importActual("recharts"); + + return { + ...actual, + ResponsiveContainer: ({ children }: { children: React.ReactNode }) => ( +
{children}
+ ), + }; +}); + +describe("SignerBalanceRingChart", () => { + it("renders active signer allocation and summary metrics", () => { + render( + , + ); + + expect(screen.getByText("Signer Pool Ring Chart")).toBeInTheDocument(); + expect(screen.getByText("2 active signers")).toBeInTheDocument(); + expect(screen.getByText("150 XLM total active balance")).toBeInTheDocument(); + expect(within(screen.getByText("Inactive signers").closest("div") as HTMLElement).getByText("1")).toBeInTheDocument(); + expect(screen.getByTestId("responsive-container")).toBeInTheDocument(); + }); + + it("shows a fallback when no active balances exist", () => { + render( + , + ); + + expect(screen.getByText("No active signer balances are available yet.")).toBeInTheDocument(); + }); +}); \ No newline at end of file diff --git a/admin-dashboard/components/signers/SignerBalanceRingChart.tsx b/admin-dashboard/components/signers/SignerBalanceRingChart.tsx new file mode 100644 index 00000000..9f89e59c --- /dev/null +++ b/admin-dashboard/components/signers/SignerBalanceRingChart.tsx @@ -0,0 +1,213 @@ +"use client"; + +import React from "react"; +import { + Cell, + Legend, + Pie, + PieChart, + ResponsiveContainer, + Tooltip, +} from "recharts"; +import type { ManagedSigner } from "@/lib/signer-management"; + +interface SignerBalanceRingChartProps { + signers: ManagedSigner[]; +} + +interface ChartSlice { + name: string; + value: number; + balance: number; + publicKey: string; + color: string; +} + +const COLORS = ["#0f172a", "#0ea5e9", "#14b8a6", "#f97316", "#8b5cf6", "#ef4444"]; + +function parseBalance(value: string): number { + const match = value.replace(/,/g, "").match(/-?\d+(?:\.\d+)?/); + return match ? Number.parseFloat(match[0]) : 0; +} + +function formatBalance(value: number): string { + return `${value.toLocaleString(undefined, { maximumFractionDigits: 2 })} XLM`; +} + +function shortKey(publicKey: string): string { + if (publicKey.length <= 16) { + return publicKey; + } + + return `${publicKey.slice(0, 6)}…${publicKey.slice(-6)}`; +} + +function buildChartSlices(signers: ManagedSigner[]): ChartSlice[] { + const activeSigners = signers.filter((signer) => signer.status === "Active"); + const slices = activeSigners + .map((signer) => ({ + name: shortKey(signer.publicKey), + value: Math.max(parseBalance(signer.balance), 0), + balance: Math.max(parseBalance(signer.balance), 0), + publicKey: signer.publicKey, + color: COLORS[0], + })) + .filter((slice) => slice.value > 0); + + const totalBalance = slices.reduce((sum, slice) => sum + slice.balance, 0); + + return slices.map((slice, index) => ({ + ...slice, + value: totalBalance > 0 ? slice.balance : 0, + color: COLORS[index % COLORS.length], + })); +} + +function BalanceTooltip({ + active, + payload, + totalBalance, +}: { + active?: boolean; + payload?: Array<{ payload: ChartSlice }>; + totalBalance: number; +}) { + if (!active || !payload?.length) { + return null; + } + + const slice = payload[0].payload; + const share = totalBalance > 0 ? (slice.balance / totalBalance) * 100 : 0; + + return ( +
+

{slice.name}

+

{formatBalance(slice.balance)}

+

{share.toFixed(1)}% of active pool

+
+ ); +} + +function BalanceLegend({ + payload, + totalBalance, +}: { + payload?: Array<{ + value?: string; + color?: string; + payload?: ChartSlice; + }>; + totalBalance: number; +}) { + if (!payload?.length) { + return null; + } + + return ( +
+ {payload.map((entry) => { + const slice = entry.payload; + if (!slice) { + return null; + } + + const share = totalBalance > 0 ? (slice.balance / totalBalance) * 100 : 0; + + return ( +
+ +
+

{slice.name}

+

+ {formatBalance(slice.balance)} · {share.toFixed(1)}% +

+
+
+ ); + })} +
+ ); +} + +export function SignerBalanceRingChart({ signers }: SignerBalanceRingChartProps) { + const chartSlices = buildChartSlices(signers); + const totalBalance = chartSlices.reduce((sum, slice) => sum + slice.balance, 0); + const activeSigners = signers.filter((signer) => signer.status === "Active"); + + return ( +
+
+
+

+ Balance Allocation +

+

Signer Pool Ring Chart

+

+ Active signer balances are normalized to show how funds are distributed across the pool. +

+
+
+
{activeSigners.length} active signer{activeSigners.length === 1 ? "" : "s"}
+
{formatBalance(totalBalance)} total active balance
+
+
+ + {chartSlices.length > 0 ? ( +
+
+ + + + {chartSlices.map((slice) => ( + + ))} + + } /> + } /> + + +
+ +
+

Pool summary

+
+
+
Active signers
+
{activeSigners.length}
+
+
+
Total balance
+
{formatBalance(totalBalance)}
+
+
+
Average balance
+
+ {activeSigners.length > 0 ? formatBalance(totalBalance / activeSigners.length) : "0 XLM"} +
+
+
+
Inactive signers
+
+ {signers.length - activeSigners.length} +
+
+
+
+
+ ) : ( +
+ No active signer balances are available yet. +
+ )} +
+ ); +} diff --git a/admin-dashboard/components/signers/SignerPoolManager.tsx b/admin-dashboard/components/signers/SignerPoolManager.tsx index e5888866..479ba973 100644 --- a/admin-dashboard/components/signers/SignerPoolManager.tsx +++ b/admin-dashboard/components/signers/SignerPoolManager.tsx @@ -4,6 +4,7 @@ import { useState, useTransition } from "react"; import { useRouter } from "next/navigation"; import { CopyButton } from "@/components/dashboard/CopyButton"; import type { ManagedSigner } from "@/lib/signer-management"; +import { SignerBalanceRingChart } from "@/components/signers/SignerBalanceRingChart"; function formatHash(value: string) { if (value.length <= 18) { @@ -196,6 +197,8 @@ export function SignerPoolManager({ + +
diff --git a/admin-dashboard/docs/ui-dashboard-enhancements.md b/admin-dashboard/docs/ui-dashboard-enhancements.md new file mode 100644 index 00000000..99c2165a --- /dev/null +++ b/admin-dashboard/docs/ui-dashboard-enhancements.md @@ -0,0 +1,20 @@ +# UI Dashboard Enhancements + +This release bundles the admin-dashboard work for issues #746, #753, #754, and #755 into a single, reusable set of UI updates. + +## What Changed + +- Added a signer balance ring chart that summarizes active signer funds as a share of the active pool. +- Added a Horizon latency grid that probes active Horizon endpoints and surfaces ping latency plus sync state. +- Added a reusable React error boundary screen with a retry action and expandable error details. +- Replaced the old i18n wrapper with a `next-intl` provider, locale persistence, and a language switcher in the navbar. + +## Validation + +- `pnpm exec vitest run components/signers/SignerBalanceRingChart.test.tsx` +- `node --test --experimental-test-isolation=none --experimental-strip-types lib/horizon-monitor.test.ts` + +## Visual Checks + +- Signer management page screenshot captured with the ring chart visible. +- Chains page screenshot captured with the Horizon latency grid visible. diff --git a/admin-dashboard/i18n/I18nProvider.tsx b/admin-dashboard/i18n/I18nProvider.tsx new file mode 100644 index 00000000..432d906e --- /dev/null +++ b/admin-dashboard/i18n/I18nProvider.tsx @@ -0,0 +1 @@ +export * from "../src/i18n/I18nProvider"; diff --git a/admin-dashboard/i18n/LanguageSwitcher.tsx b/admin-dashboard/i18n/LanguageSwitcher.tsx new file mode 100644 index 00000000..60911776 --- /dev/null +++ b/admin-dashboard/i18n/LanguageSwitcher.tsx @@ -0,0 +1 @@ +export * from "../src/i18n/LanguageSwitcher"; diff --git a/admin-dashboard/i18n/config.ts b/admin-dashboard/i18n/config.ts new file mode 100644 index 00000000..286e9766 --- /dev/null +++ b/admin-dashboard/i18n/config.ts @@ -0,0 +1 @@ +export * from "../src/i18n/config"; diff --git a/admin-dashboard/i18n/index.ts b/admin-dashboard/i18n/index.ts new file mode 100644 index 00000000..9e973851 --- /dev/null +++ b/admin-dashboard/i18n/index.ts @@ -0,0 +1 @@ +export * from "../src/i18n/index"; diff --git a/admin-dashboard/i18n/provider.tsx b/admin-dashboard/i18n/provider.tsx new file mode 100644 index 00000000..900fbbd9 --- /dev/null +++ b/admin-dashboard/i18n/provider.tsx @@ -0,0 +1 @@ +export * from "../src/i18n/provider"; diff --git a/admin-dashboard/lib/horizon-monitor.test.ts b/admin-dashboard/lib/horizon-monitor.test.ts new file mode 100644 index 00000000..e0f687cb --- /dev/null +++ b/admin-dashboard/lib/horizon-monitor.test.ts @@ -0,0 +1,37 @@ +import test from "node:test"; +import assert from "node:assert/strict"; + +const originalFetch = globalThis.fetch; + +test.beforeEach(() => { + globalThis.fetch = originalFetch; +}); + +test("marks a responsive endpoint as synced", async () => { + globalThis.fetch = (async () => ({ ok: true } as Response)) as typeof fetch; + + const { getHorizonLatencyGridData } = await import("./horizon-monitor.ts"); + const [status] = await getHorizonLatencyGridData([ + { label: "Public Horizon", url: "https://horizon.stellar.org" }, + ]); + + assert.equal(status.label, "Public Horizon"); + assert.equal(status.online, true); + assert.notEqual(status.latencyMs, null); + assert.equal(status.syncStatus, "synced"); +}); + +test("marks a failed endpoint as offline", async () => { + globalThis.fetch = (async () => { + throw new Error("network down"); + }) as typeof fetch; + + const { getHorizonLatencyGridData } = await import("./horizon-monitor.ts"); + const [status] = await getHorizonLatencyGridData([ + { label: "Sandbox Horizon", url: "http://localhost:8000" }, + ]); + + assert.equal(status.online, false); + assert.equal(status.latencyMs, null); + assert.equal(status.syncStatus, "offline"); +}); \ No newline at end of file diff --git a/admin-dashboard/lib/horizon-monitor.ts b/admin-dashboard/lib/horizon-monitor.ts new file mode 100644 index 00000000..efbb33bd --- /dev/null +++ b/admin-dashboard/lib/horizon-monitor.ts @@ -0,0 +1,87 @@ +export type HorizonSyncStatus = "synced" | "degraded" | "offline"; + +export interface HorizonEndpoint { + label: string; + url: string; +} + +export interface HorizonEndpointHealth extends HorizonEndpoint { + online: boolean; + latencyMs: number | null; + syncStatus: HorizonSyncStatus; + lastCheckedAt: string; +} + +const DEFAULT_TIMEOUT_MS = 5000; + +export const DEFAULT_HORIZON_ENDPOINTS: HorizonEndpoint[] = [ + { + label: "Public Horizon", + url: "https://horizon.stellar.org", + }, + { + label: "Testnet Horizon", + url: "https://horizon-testnet.stellar.org", + }, + { + label: "Sandbox Horizon", + url: process.env.NEXT_PUBLIC_SANDBOX_HORIZON_URL?.trim() || "http://localhost:8000", + }, +]; + +function normalizeUrl(value: string): string { + return value.trim().replace(/\/$/, ""); +} + +function resolveSyncStatus(online: boolean, latencyMs: number | null): HorizonSyncStatus { + if (!online) { + return "offline"; + } + + if (latencyMs === null || latencyMs > 350) { + return "degraded"; + } + + return "synced"; +} + +async function probeEndpoint(endpoint: HorizonEndpoint): Promise { + const startedAt = Date.now(); + const controller = new AbortController(); + const timer = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS); + + try { + const response = await fetch(`${normalizeUrl(endpoint.url)}/health`, { + signal: controller.signal, + cache: "no-store", + }); + clearTimeout(timer); + + const latencyMs = Date.now() - startedAt; + const online = response.ok; + + return { + ...endpoint, + online, + latencyMs: online ? latencyMs : null, + syncStatus: resolveSyncStatus(online, online ? latencyMs : null), + lastCheckedAt: new Date().toISOString(), + }; + } catch { + clearTimeout(timer); + + return { + ...endpoint, + online: false, + latencyMs: null, + syncStatus: "offline", + lastCheckedAt: new Date().toISOString(), + }; + } +} + +export async function getHorizonLatencyGridData( + endpoints: HorizonEndpoint[] = DEFAULT_HORIZON_ENDPOINTS, +): Promise { + return Promise.all(endpoints.map((endpoint) => probeEndpoint(endpoint))); +} \ No newline at end of file diff --git a/admin-dashboard/package.json b/admin-dashboard/package.json index 3b3f1b6b..65fd07e6 100644 --- a/admin-dashboard/package.json +++ b/admin-dashboard/package.json @@ -34,18 +34,17 @@ "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "framer-motion": "^12.38.0", - "i18next": "^4.4.0", "leaflet": "^1.9.4", "jspdf": "^4.2.1", "jspdf-autotable": "^5.0.7", "lucide-react": "^1.7.0", "next": "15.5.14", + "next-intl": "^4.13.0", "next-auth": "5.0.0-beta.20", "next-themes": "^0.4.6", "react": "19.2.4", "react-dom": "19.2.4", "react-hook-form": "^7.74.0", - "react-i18next": "^15.4.0", "react-markdown": "^10.1.0", "recharts": "^3.8.1", "rss": "^1.2.2", diff --git a/admin-dashboard/src/i18n/I18nProvider.tsx b/admin-dashboard/src/i18n/I18nProvider.tsx index c3b66749..1d037ca5 100644 --- a/admin-dashboard/src/i18n/I18nProvider.tsx +++ b/admin-dashboard/src/i18n/I18nProvider.tsx @@ -1,36 +1 @@ -'use client'; - -import * as React from 'react'; -import { useTranslation, i18n as reactI18next } from 'react-i18next'; -import i18n from './i18n'; - -type I18nProviderProps = { - children: React.ReactNode; -}; - -export const I18nProvider: React.FC = ({ children }) => { - const { t, i18n } = useTranslation(); - - const changeLanguage = (language: string) => { - i18n.changeLanguage(language); - // Persist language selection - localStorage.setItem('language', language); - }; - - // Initialize language from localStorage on first mount - React.useEffect(() => { - const storedLanguage = localStorage.getItem('language'); - if (storedLanguage) { - i18n.changeLanguage(storedLanguage); - } - }, [i18n]); - - return ( - - {children} - - ); -}; - -// We need to import the context from react-i18next -import { i18next } from 'react-i18next'; \ No newline at end of file +export { DashboardIntlProvider as I18nProvider, useDashboardLocale as useI18n } from "./provider"; diff --git a/admin-dashboard/src/i18n/LanguageSwitcher.tsx b/admin-dashboard/src/i18n/LanguageSwitcher.tsx index ed5cee66..ac0c0084 100644 --- a/admin-dashboard/src/i18n/LanguageSwitcher.tsx +++ b/admin-dashboard/src/i18n/LanguageSwitcher.tsx @@ -1,10 +1,11 @@ "use client"; +import { useEffect, useRef, useState } from "react"; import { ChevronDown } from "lucide-react"; -import { useState, useRef, useEffect } from "react"; -import { useTranslation } from "react-i18next"; +import { useTranslations } from "next-intl"; import { cn } from "@/lib/utils"; -import type { LocaleCode, SUPPORTED_LOCALES } from "../i18n/config"; +import { type LocaleCode } from "./config"; +import { useDashboardLocale } from "./provider"; interface Language { code: LocaleCode; @@ -15,25 +16,22 @@ interface Language { const LANGUAGES: Language[] = [ { code: "en", label: "English", flag: "🇺🇸" }, { code: "es", label: "Español", flag: "🇪🇸" }, + { code: "fr", label: "Français", flag: "🇫🇷" }, + { code: "ja", label: "日本語", flag: "🇯🇵" }, { code: "pt", label: "Português", flag: "🇧🇷" }, { code: "zh", label: "中文", flag: "🇨🇳" }, ]; -/** - * Language switcher component with dropdown selector. - * Persists selection to localStorage and provides ARIA accessibility. - */ export function LanguageSwitcher() { - const { i18n } = useTranslation(); + const t = useTranslations("languageSwitcher"); + const { locale, setLocale } = useDashboardLocale(); const [open, setOpen] = useState(false); const [currentLang, setCurrentLang] = useState(LANGUAGES[0]); const dropdownRef = useRef(null); useEffect(() => { - const currentCode = (i18n.language || "en") as LocaleCode; - const lang = LANGUAGES.find((l) => l.code === currentCode) || LANGUAGES[0]; - setCurrentLang(lang); - }, [i18n.language]); + setCurrentLang(LANGUAGES.find((entry) => entry.code === locale) || LANGUAGES[0]); + }, [locale]); useEffect(() => { function handleClickOutside(event: MouseEvent) { @@ -41,15 +39,15 @@ export function LanguageSwitcher() { setOpen(false); } } + document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); function handleLanguageChange(lang: Language) { - i18n.changeLanguage(lang.code); + setLocale(lang.code); setCurrentLang(lang); setOpen(false); - localStorage.setItem("fluid-admin-language", lang.code); } return ( @@ -58,28 +56,25 @@ export function LanguageSwitcher() { type="button" onClick={() => setOpen(!open)} className={cn( - "flex items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium", - "bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-700", - "hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors", - "focus:outline-none focus:ring-2 focus:ring-blue-500" + "flex items-center gap-2 rounded-lg border border-slate-300 bg-white px-3 py-2 text-sm font-medium", + "transition-colors hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-sky-500", )} - aria-label="Select language" + aria-label={t("select")} aria-haspopup="listbox" aria-expanded={open} > - + {currentLang.label} -
); -} \ No newline at end of file +} diff --git a/admin-dashboard/src/i18n/__tests__/i18n.test.ts b/admin-dashboard/src/i18n/__tests__/i18n.test.ts index 16fe9f8d..67bc70b6 100644 --- a/admin-dashboard/src/i18n/__tests__/i18n.test.ts +++ b/admin-dashboard/src/i18n/__tests__/i18n.test.ts @@ -1,21 +1,27 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { SUPPORTED_LOCALES, DEFAULT_LOCALE, LANGUAGE_STORAGE_KEY } from "../config.ts"; +import { SUPPORTED_LOCALES, DEFAULT_LOCALE, LANGUAGE_STORAGE_KEY, normalizeLocale } from "../config.ts"; import en from "../../locales/en.json" assert { type: "json" }; import es from "../../locales/es.json" assert { type: "json" }; +import fr from "../../locales/fr.json" assert { type: "json" }; +import ja from "../../locales/ja.json" assert { type: "json" }; import pt from "../../locales/pt.json" assert { type: "json" }; import zh from "../../locales/zh.json" assert { type: "json" }; test("i18n config has all supported locales", () => { - assert.deepEqual(SUPPORTED_LOCALES, ["en", "es", "pt", "zh"]); + assert.deepEqual(SUPPORTED_LOCALES, ["en", "es", "fr", "ja", "pt", "zh"]); assert.equal(DEFAULT_LOCALE, "en"); + assert.equal(normalizeLocale("es-MX"), "es"); + assert.equal(normalizeLocale("unknown"), "en"); }); test("translation files contain required keys", () => { // Check navigation keys exist assert.ok(en.navigation.dashboard); assert.ok(es.navigation.dashboard); + assert.ok(fr.languageSwitcher.select); + assert.ok(ja.languageSwitcher.select); assert.ok(pt.navigation.dashboard); assert.ok(zh.navigation.dashboard); @@ -31,8 +37,10 @@ test("fee estimation test key exists in all locales", () => { assert.equal(es.fee.estimatedFee, "Tarifa Estimada"); assert.equal(pt.fee.estimatedFee, "Taxa Estimada"); assert.ok(zh.fee.estimatedFee); + assert.ok(fr.languageSwitcher.options); + assert.ok(ja.languageSwitcher.options); }); test("LanguageSwitcher storage key is defined", () => { - assert.equal(LANGUAGE_STORAGE_KEY, "fluid-admin-language"); + assert.equal(LANGUAGE_STORAGE_KEY, "fluid-admin-locale"); }); \ No newline at end of file diff --git a/admin-dashboard/src/i18n/config.ts b/admin-dashboard/src/i18n/config.ts index d73d4fd2..a179cf54 100644 --- a/admin-dashboard/src/i18n/config.ts +++ b/admin-dashboard/src/i18n/config.ts @@ -1,75 +1,30 @@ -import i18n from "i18next"; -import { initReactI18next } from "react-i18next"; import en from "../locales/en.json"; import es from "../locales/es.json"; +import fr from "../locales/fr.json"; +import ja from "../locales/ja.json"; import pt from "../locales/pt.json"; import zh from "../locales/zh.json"; -export type LocaleCode = "en" | "es" | "pt" | "zh"; +export type LocaleCode = "en" | "es" | "fr" | "ja" | "pt" | "zh"; -export const SUPPORTED_LOCALES: LocaleCode[] = ["en", "es", "pt", "zh"]; +export const SUPPORTED_LOCALES: LocaleCode[] = ["en", "es", "fr", "ja", "pt", "zh"]; export const DEFAULT_LOCALE: LocaleCode = "en"; -export const LANGUAGE_STORAGE_KEY = "fluid-admin-language"; - -/** - * Initializes i18next with configured translations. - * Should be called once on app startup. - */ -export function initI18n(): void { - const storedLocale = typeof window !== "undefined" - ? (localStorage.getItem(LANGUAGE_STORAGE_KEY) as LocaleCode | null) - : null; - - const initialLocale = storedLocale && SUPPORTED_LOCALES.includes(storedLocale) - ? storedLocale - : DEFAULT_LOCALE; - - i18n.use(initReactI18next).init({ - resources: { - en: { translation: en }, - es: { translation: es }, - pt: { translation: pt }, - zh: { translation: zh }, - }, - lng: initialLocale, - fallbackLng: DEFAULT_LOCALE, - interpolation: { - escapeValue: false, - }, - }); -} - -/** - * Gets the current locale from i18next. - * @returns The current locale code - */ -export function getCurrentLocale(): LocaleCode { - return (i18n.language || DEFAULT_LOCALE) as LocaleCode; -} - -/** - * Changes the current language and persists to localStorage. - * @param locale - The locale code to switch to - */ -export function changeLanguage(locale: LocaleCode): void { - if (!SUPPORTED_LOCALES.includes(locale)) { - locale = DEFAULT_LOCALE; - } - i18n.changeLanguage(locale); - if (typeof window !== "undefined") { - localStorage.setItem(LANGUAGE_STORAGE_KEY, locale); +export const LANGUAGE_STORAGE_KEY = "fluid-admin-locale"; + +export const LOCALE_MESSAGES = { + en, + es, + fr, + ja, + pt, + zh, +} as const; + +export function normalizeLocale(locale: string | null | undefined): LocaleCode { + if (!locale) { + return DEFAULT_LOCALE; } -} - -/** - * Gets a translation value by key with optional fallback. - * @param key - Translation key path (dot notation) - * @param fallback - Fallback text if key not found - * @returns Translated string or fallback - */ -export function t(key: string, fallback?: string): string { - const value = i18n.t(key); - return value === key && fallback ? fallback : value; -} -export default i18n; \ No newline at end of file + const shortLocale = locale.toLowerCase().split("-")[0] as LocaleCode; + return SUPPORTED_LOCALES.includes(shortLocale) ? shortLocale : DEFAULT_LOCALE; +} \ No newline at end of file diff --git a/admin-dashboard/src/i18n/index.ts b/admin-dashboard/src/i18n/index.ts index a8887f3b..bba77c15 100644 --- a/admin-dashboard/src/i18n/index.ts +++ b/admin-dashboard/src/i18n/index.ts @@ -1,42 +1,9 @@ -"use client"; - -import { useEffect } from "react"; -import { useTranslation } from "react-i18next"; -import type { LocaleCode, SUPPORTED_LOCALES } from "./config"; -import { initI18n, changeLanguage, getCurrentLocale } from "./config"; - -/** - * Component that initializes i18n on mount. - * Must be placed inside the component tree to access localStorage. - */ -export function I18nProvider({ children }: { children: React.ReactNode }) { - useEffect(() => { - initI18n(); - }, []); - - return <>{children}; -} - -/** - * Gets the current locale for use in server components. - * @returns The current locale code - */ -export function useCurrentLocale(): LocaleCode { - return getCurrentLocale(); -} - -/** - * Hook for accessing translation function with proper typing. - * @returns Translation function and i18n instance - */ -export function useTypedTranslation() { - const { t: translation, i18n } = useTranslation(); - - return { - t: (key: string, fallback?: string) => { - const value = translation(key); - return value === key && fallback ? fallback : value; - }, - i18n, - }; -} \ No newline at end of file +export { + DEFAULT_LOCALE, + LANGUAGE_STORAGE_KEY, + LOCALE_MESSAGES, + SUPPORTED_LOCALES, + normalizeLocale, +} from "./config"; +export type { LocaleCode } from "./config"; +export { DashboardIntlProvider, useDashboardLocale } from "./provider"; diff --git a/admin-dashboard/src/i18n/provider.tsx b/admin-dashboard/src/i18n/provider.tsx index e1d766de..fd7dc50c 100644 --- a/admin-dashboard/src/i18n/provider.tsx +++ b/admin-dashboard/src/i18n/provider.tsx @@ -1,61 +1,57 @@ -'use client'; - -import * as React from 'react'; -import { I18nextProvider, useTranslation } from 'react-i18next'; -import i18n from './i18n'; - -type I18nContextType = { - t: ReturnType['t']; - i18n: typeof i18n; - changeLanguage: (language: string) => void; -}; - -const I18nContext = React.createContext(undefined); - -type I18nProviderProps = { - children: React.ReactNode; -}; - -export const I18nProvider: React.FC = ({ children }) => { - const { t } = useTranslation(); - - const changeLanguage = React.useCallback((language: string) => { - i18n.changeLanguage(language); - // Persist language selection - if (typeof window !== 'undefined') { - localStorage.setItem('language', language); - } - }, [i18n]); - - // Initialize language from localStorage on first mount - React.useEffect(() => { - if (typeof window !== 'undefined') { - const storedLanguage = localStorage.getItem('language'); - if (storedLanguage) { - i18n.changeLanguage(storedLanguage); - } +"use client"; + +import { createContext, useContext, useEffect, useMemo, useState, type ReactNode } from "react"; +import { NextIntlClientProvider } from "next-intl"; +import { + DEFAULT_LOCALE, + LANGUAGE_STORAGE_KEY, + LOCALE_MESSAGES, + normalizeLocale, + type LocaleCode, +} from "./config"; + +interface DashboardLocaleContextValue { + locale: LocaleCode; + setLocale: (locale: LocaleCode) => void; +} + +const DashboardLocaleContext = createContext(null); + +export function DashboardIntlProvider({ children }: { children: ReactNode }) { + const [locale, setLocale] = useState(DEFAULT_LOCALE); + const [hydrated, setHydrated] = useState(false); + + useEffect(() => { + setLocale(normalizeLocale(localStorage.getItem(LANGUAGE_STORAGE_KEY))); + setHydrated(true); + }, []); + + useEffect(() => { + if (!hydrated) { + return; } - }, [i18n]); - const value = React.useMemo(() => ({ - t, - i18n, - changeLanguage - }), [t, i18n, changeLanguage]); + localStorage.setItem(LANGUAGE_STORAGE_KEY, locale); + document.documentElement.lang = locale; + }, [hydrated, locale]); + + const value = useMemo(() => ({ locale, setLocale }), [locale]); return ( - - + + {children} - - + + ); -}; +} -export const useI18n = () => { - const context = React.useContext(I18nContext); - if (context === undefined) { - throw new Error('useI18n must be used within an I18nProvider'); +export function useDashboardLocale() { + const context = useContext(DashboardLocaleContext); + + if (!context) { + throw new Error("useDashboardLocale must be used within DashboardIntlProvider"); } + return context; -}; \ No newline at end of file +} diff --git a/admin-dashboard/src/locales/en.json b/admin-dashboard/src/locales/en.json index 4d490bec..1ca02eb1 100644 --- a/admin-dashboard/src/locales/en.json +++ b/admin-dashboard/src/locales/en.json @@ -86,5 +86,9 @@ "last7Days": "Last 7 Days", "last30Days": "Last 30 Days", "allTime": "All Time" + }, + "languageSwitcher": { + "select": "Select language", + "options": "Language options" } } \ No newline at end of file diff --git a/admin-dashboard/src/locales/es.json b/admin-dashboard/src/locales/es.json index 52a8650e..bfd7575b 100644 --- a/admin-dashboard/src/locales/es.json +++ b/admin-dashboard/src/locales/es.json @@ -86,5 +86,9 @@ "last7Days": "Últimos 7 Días", "last30Days": "Últimos 30 Días", "allTime": "Todo el Tiempo" + }, + "languageSwitcher": { + "select": "Seleccionar idioma", + "options": "Opciones de idioma" } } \ No newline at end of file diff --git a/admin-dashboard/src/locales/fr.json b/admin-dashboard/src/locales/fr.json new file mode 100644 index 00000000..9dd1b818 --- /dev/null +++ b/admin-dashboard/src/locales/fr.json @@ -0,0 +1,16 @@ +{ + "navigation": { + "dashboard": "Tableau de bord", + "transactions": "Transactions", + "signers": "Signataires", + "apiKeys": "Clés API", + "settings": "Paramètres", + "referrals": "Parrainages", + "plugins": "Extensions", + "sdk": "SDK" + }, + "languageSwitcher": { + "select": "Sélectionner la langue", + "options": "Options de langue" + } +} diff --git a/admin-dashboard/src/locales/ja.json b/admin-dashboard/src/locales/ja.json new file mode 100644 index 00000000..6d4324e6 --- /dev/null +++ b/admin-dashboard/src/locales/ja.json @@ -0,0 +1,16 @@ +{ + "navigation": { + "dashboard": "ダッシュボード", + "transactions": "取引", + "signers": "署名者", + "apiKeys": "APIキー", + "settings": "設定", + "referrals": "紹介", + "plugins": "プラグイン", + "sdk": "SDK" + }, + "languageSwitcher": { + "select": "言語を選択", + "options": "言語オプション" + } +} diff --git a/admin-dashboard/src/locales/pt.json b/admin-dashboard/src/locales/pt.json index 1c27e620..0f2519e6 100644 --- a/admin-dashboard/src/locales/pt.json +++ b/admin-dashboard/src/locales/pt.json @@ -71,6 +71,10 @@ "dark": "Escuro", "highContrast": "Alto Contraste" }, + "languageSwitcher": { + "select": "Selecionar idioma", + "options": "Opções de idioma" + }, "table": { "timestamp": "Data/Hora", "actor": "Ator", diff --git a/admin-dashboard/src/locales/zh.json b/admin-dashboard/src/locales/zh.json index 8455e06e..d064e0b1 100644 --- a/admin-dashboard/src/locales/zh.json +++ b/admin-dashboard/src/locales/zh.json @@ -71,6 +71,10 @@ "dark": "暗色", "highContrast": "高对比度" }, + "languageSwitcher": { + "select": "选择语言", + "options": "语言选项" + }, "table": { "timestamp": "时间戳", "actor": "操作者", diff --git a/admin-dashboard/verification-report.md b/admin-dashboard/verification-report.md index badbf186..d3fb5b48 100644 --- a/admin-dashboard/verification-report.md +++ b/admin-dashboard/verification-report.md @@ -1,5 +1,31 @@ # Verification Report +## Current UI Enhancements + +### Signer Balance Ring Chart + +Validated with: + +```bash +pnpm exec vitest run components/signers/SignerBalanceRingChart.test.tsx +``` + +Screenshot captured from `/admin/signers` showing the new ring chart and pool summary. + +### Horizon Latency Grid + +Validated with: + +```bash +node --test --experimental-test-isolation=none --experimental-strip-types lib/horizon-monitor.test.ts +``` + +Screenshot captured from `/admin/chains` showing active Horizon endpoints, ping latency, and sync status. + +### Locale Switching and Error Boundary + +Verified through compiler checks on the touched files and browser inspection of the updated navbar language switcher plus the new route-level error boundary files. + ## Test Results ### Unit Tests (27 passed) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 744bfd63..8e48d169 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,22 +38,22 @@ importers: version: 19.8.1 '@nx/docker': specifier: 22.6.3 - version: 22.6.3(nx@22.6.3) + version: 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@nx/eslint': specifier: 22.6.3 - version: 22.6.3(@babel/traverse@7.29.0)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3) + version: 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@nx/next': specifier: 22.6.3 - version: 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(lightningcss@1.32.0)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0) + version: 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(lightningcss@1.32.0)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@nx/playwright': specifier: 22.6.3 - version: 22.6.3(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3) + version: 22.6.3(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@nx/vite': specifier: 22.6.3 - version: 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) + version: 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) '@nx/vitest': specifier: 22.6.3 - version: 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) + version: 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) '@semantic-release/changelog': specifier: ^6.0.3 version: 6.0.3(semantic-release@24.2.9(typescript@6.0.2)) @@ -77,7 +77,7 @@ importers: version: 9.1.7 nx: specifier: 22.6.3 - version: 22.6.3 + version: 22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)) semantic-release: specifier: ^24.2.3 version: 24.2.9(typescript@6.0.2) @@ -150,6 +150,9 @@ importers: next-auth: specifier: 5.0.0-beta.20 version: 5.0.0-beta.20(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(nodemailer@8.0.5)(react@19.2.4) + next-intl: + specifier: ^4.13.0 + version: 4.13.0(@swc/helpers@0.5.21)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react@19.2.4)(typescript@6.0.2) next-themes: specifier: ^0.4.6 version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -192,7 +195,7 @@ importers: version: 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)) '@storybook/nextjs': specifier: ^8.6.12 - version: 8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(esbuild@0.25.12)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(type-fest@4.41.0)(typescript@6.0.2)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(esbuild@0.25.12)) + version: 8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(type-fest@4.41.0)(typescript@6.0.2)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) '@tailwindcss/postcss': specifier: ^4 version: 4.2.2 @@ -298,10 +301,10 @@ importers: version: '@stellar/stellar-sdk@11.3.0(bare-url@2.4.0)' ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.19.39)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.15.40(@swc/helpers@0.5.21))(@types/node@20.19.39)(typescript@5.9.3) tsup: specifier: ^8.5.1 - version: 8.5.1(jiti@2.6.1)(postcss@8.5.9)(typescript@5.9.3)(yaml@2.8.3) + version: 8.5.1(@swc/core@1.15.40(@swc/helpers@0.5.21))(jiti@2.6.1)(postcss@8.5.9)(typescript@5.9.3)(yaml@2.8.3) typedoc: specifier: ^0.28.18 version: 0.28.18(typescript@5.9.3) @@ -513,7 +516,7 @@ importers: version: 7.2.2 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@20.19.39)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.15.40(@swc/helpers@0.5.21))(@types/node@20.19.39)(typescript@5.9.3) typedoc: specifier: ^0.28.18 version: 0.28.18(typescript@5.9.3) @@ -2113,6 +2116,18 @@ packages: '@floating-ui/utils@0.2.11': resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + '@formatjs/fast-memoize@3.1.5': + resolution: {integrity: sha512-KLi3fan6WnCHmigd9pmEEN8Hid0v4wiFBW576M/d07KMWYecf1CvyMI3n34vCmHT4AoVqG2n702kiHbXjzZX2A==} + + '@formatjs/icu-messageformat-parser@3.5.10': + resolution: {integrity: sha512-XeJihYLy1lCe19xfK1KWKG/betBOK2rB0luL8lSkjfvJj0zP+LTJvkC+RKd0jsFI8mWxN71LrarHSrEXE8xxOQ==} + + '@formatjs/icu-skeleton-parser@2.1.9': + resolution: {integrity: sha512-rsxswgHMfU1zUgB2byc08fesf83wLGjFnzLCEtuf00mx2doiqc6pYrf67raI37XqdRcGUviQepk2UKGqpng74Q==} + + '@formatjs/intl-localematcher@0.8.9': + resolution: {integrity: sha512-GmB0F/gYh4Hdl4rLWjgDsgT+x4pB54fkJeRh8kAZ4XFzKeCK8dGs+SBJWXO42QZtOUni+IDWKNuCw6wiL4lTvw==} + '@gerrit0/mini-shiki@3.23.0': resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} @@ -2254,155 +2269,183 @@ packages: resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm64@1.2.4': resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-arm@1.2.4': resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-ppc64@1.2.4': resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-riscv64@1.2.4': resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} cpu: [riscv64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.0.4': resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-s390x@1.2.4': resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.0.4': resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linux-x64@1.2.4': resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-arm64@1.2.4': resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.0.4': resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-libvips-linuxmusl-x64@1.2.4': resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linux-arm64@0.33.5': resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm64@0.34.5': resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.33.5': resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-arm@0.34.5': resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] + libc: [glibc] '@img/sharp-linux-ppc64@0.34.5': resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] + libc: [glibc] '@img/sharp-linux-riscv64@0.34.5': resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [riscv64] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.33.5': resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-s390x@0.34.5': resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.33.5': resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linux-x64@0.34.5': resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [glibc] '@img/sharp-linuxmusl-arm64@0.33.5': resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-arm64@0.34.5': resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.33.5': resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-linuxmusl-x64@0.34.5': resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] + libc: [musl] '@img/sharp-wasm32@0.33.5': resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} @@ -3161,42 +3204,49 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-arm64-musl@1.4.5': resolution: {integrity: sha512-yWjcPDgJ2nIL3KNvi4536dlT/CcCWO0DUyEOlBs/SacG7BeD6IjGh6yYzd3/X1Y3JItCbZoDoLUH8iB1lTXo3w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/lzma-linux-ppc64-gnu@1.4.5': resolution: {integrity: sha512-0XRhKuIU/9ZjT4WDIG/qnX7Xz7mSQHYZo9Gb3MP2gcvBgr6BA4zywQ9k3gmQaPn9ECE+CZg2V7DV7kT+x2pUMQ==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-riscv64-gnu@1.4.5': resolution: {integrity: sha512-QrqDIPEUUB23GCpyQj/QFyMlr8SGxxyExeZz9OWFnHfb70kXdTLWrHS/hEI1Ru+lSbQ/6xRqeoGyQ4Aqdg+/RA==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-s390x-gnu@1.4.5': resolution: {integrity: sha512-k8RVM5aMhW86E9H0QXdquwojew4H3SwPxbRVbl49/COJQWCUjGi79X6mYruMnMPEznZinUiT1jgKbFo2A00NdA==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-x64-gnu@1.4.5': resolution: {integrity: sha512-6rMtBgnIq2Wcl1rQdZsnM+rtCcVCbws1nF8S2NzaUsVaZv8bjrPiAa0lwg4Eqnn1d9lgwqT+cZgm5m+//K08Kw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/lzma-linux-x64-musl@1.4.5': resolution: {integrity: sha512-eiadGBKi7Vd0bCArBUOO/qqRYPHt/VQVvGyYvDFt6C2ZSIjlD+HuOl+2oS1sjf4CFjK4eDIog6EdXnL0NE6iyQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/lzma-wasm32-wasi@1.4.5': resolution: {integrity: sha512-+VyHHlr68dvey6fXc2hehw9gHVFIW3TtGF1XkcbAu65qVXsA9D/T+uuoRVqhE+JCyFHFrO0ixRbZDRK1XJt1sA==} @@ -3266,36 +3316,42 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-arm64-musl@1.1.0': resolution: {integrity: sha512-L/y1/26q9L/uBqiW/JdOb/Dc94egFvNALUZV2WCGKQXc6UByPBMgdiEyW2dtoYxYYYYc+AKD+jr+wQPcvX2vrQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/tar-linux-ppc64-gnu@1.1.0': resolution: {integrity: sha512-EPE1K/80RQvPbLRJDJs1QmCIcH+7WRi0F73+oTe1582y9RtfGRuzAkzeBuAGRXAQEjRQw/RjtNqr6UTJ+8UuWQ==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-s390x-gnu@1.1.0': resolution: {integrity: sha512-B2jhWiB1ffw1nQBqLUP1h4+J1ovAxBOoe5N2IqDMOc63fsPZKNqF1PvO/dIem8z7LL4U4bsfmhy3gBfu547oNQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-x64-gnu@1.1.0': resolution: {integrity: sha512-tbZDHnb9617lTnsDMGo/eAMZxnsQFnaRe+MszRqHguKfMwkisc9CCJnks/r1o84u5fECI+J/HOrKXgczq/3Oww==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/tar-linux-x64-musl@1.1.0': resolution: {integrity: sha512-dV6cODlzbO8u6Anmv2N/ilQHq/AWz0xyltuXoLU3yUyXbZcnWYZuB2rL8OBGPmqNcD+x9NdScBNXh7vWN0naSQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/tar-wasm32-wasi@1.1.0': resolution: {integrity: sha512-jIa9nb2HzOrfH0F8QQ9g3WE4aMH5vSI5/1NYVNm9ysCmNjCCtMXCAhlI3WKCdm/DwHf0zLqdrrtDFXODcNaqMw==} @@ -3374,24 +3430,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@napi-rs/wasm-tools-linux-arm64-musl@1.0.1': resolution: {integrity: sha512-jAasbIvjZXCgX0TCuEFQr+4D6Lla/3AAVx2LmDuMjgG4xoIXzjKWl7c4chuaD+TI+prWT0X6LJcdzFT+ROKGHQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@napi-rs/wasm-tools-linux-x64-gnu@1.0.1': resolution: {integrity: sha512-Plgk5rPqqK2nocBGajkMVbGm010Z7dnUgq0wtnYRZbzWWxwWcXfZMPa8EYxrK4eE8SzpI7VlZP1tdVsdjgGwMw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@napi-rs/wasm-tools-linux-x64-musl@1.0.1': resolution: {integrity: sha512-GW7AzGuWxtQkyHknHWYFdR0CHmW6is8rG2Rf4V6GNmMpmwtXt/ItWYWtBe4zqJWycMNazpfZKSw/BpT7/MVCXQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@napi-rs/wasm-tools-wasm32-wasi@1.0.1': resolution: {integrity: sha512-/nQVSTrqSsn7YdAc2R7Ips/tnw5SPUcl3D7QrXCNGPqjbatIspnaexvaOYNyKMU6xPu+pc0BTnKVmqhlJJCPLA==} @@ -3446,24 +3506,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@next/swc-linux-arm64-musl@15.5.14': resolution: {integrity: sha512-8B8cngBaLadl5lbDRdxGCP1Lef8ipD6KlxS3v0ElDAGil6lafrAM3B258p1KJOglInCVFUjk751IXMr2ixeQOQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@next/swc-linux-x64-gnu@15.5.14': resolution: {integrity: sha512-bAS6tIAg8u4Gn3Nz7fCPpSoKAexEt2d5vn1mzokcqdqyov6ZJ6gu6GdF9l8ORFrBuRHgv3go/RfzYz5BkZ6YSQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@next/swc-linux-x64-musl@15.5.14': resolution: {integrity: sha512-mMxv/FcrT7Gfaq4tsR22l17oKWXZmH/lVqcvjX0kfp5I0lKodHYLICKPoX1KRnnE+ci6oIUdriUhuA3rBCDiSw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@next/swc-win32-arm64-msvc@15.5.14': resolution: {integrity: sha512-OTmiBlYThppnvnsqx0rBqjDRemlmIeZ8/o4zI7veaXoeO1PVHoyj2lfTfXTiiGjCyRDhA10y4h6ZvZvBiynr2g==} @@ -3587,21 +3651,25 @@ packages: resolution: {integrity: sha512-ZRP5qf4lsk0HFuvhhSJc+t3a0NKc+WXElKPXTEK9DGOluY327lUogeZrSSJfxGf+dBTtpuRIO8rOIrnZOf5Xww==} cpu: [arm64] os: [linux] + libc: [glibc] '@nx/nx-linux-arm64-musl@22.6.3': resolution: {integrity: sha512-AcOf/5UJD7Fyc2ujHYajxLw+ajJ8C1IhHoCQyLwBpd/15lu3pii9Z9G4cNBm0ejKnnzofzRmhv2xka9qqCtpXQ==} cpu: [arm64] os: [linux] + libc: [musl] '@nx/nx-linux-x64-gnu@22.6.3': resolution: {integrity: sha512-KxSdUCGOt2GGXzgggp9sSLJacWj7AAI410UPOEGw5F6GS5148e+kiy3piULF/0NE5/q40IK7gyS43HY99qgAqQ==} cpu: [x64] os: [linux] + libc: [glibc] '@nx/nx-linux-x64-musl@22.6.3': resolution: {integrity: sha512-Tvlw6XvTj+5IQRkprV3AdCKnlQFYh2OJYn0wgHrvQWeV1Eks/RaCoRChfHXdAyE4S64YrBA6NAOxfXANh3yLTg==} cpu: [x64] os: [linux] + libc: [musl] '@nx/nx-win32-arm64-msvc@22.6.3': resolution: {integrity: sha512-9yRRuoVeQdV52GJtHo+vH6+es2PNF8skWlUa74jyWRsoZM9Ew8JmRZruRfhkUmhjJTrguqJLj9koa/NXgS0yeg==} @@ -3777,36 +3845,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.6': resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.6': resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.6': resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.6': resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.6': resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.6': resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==} @@ -4446,66 +4520,79 @@ packages: resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.60.1': resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.60.1': resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.60.1': resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.60.1': resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.60.1': resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.60.1': resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.60.1': resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.60.1': resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.60.1': resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.60.1': resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.60.1': resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.60.1': resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.60.1': resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} @@ -4551,21 +4638,25 @@ packages: resolution: {integrity: sha512-fvZX6xZPvBT8qipSpvkKMX5M7yd2BSpZNCZXcefw6gA3uC7LI3gu+er0LrDXY1PtPzVuHTyDx+abwWpagV3PiQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@rspack/binding-linux-arm64-musl@1.6.8': resolution: {integrity: sha512-++XMKcMNrt59HcFBLnRaJcn70k3X0GwkAegZBVpel8xYIAgvoXT5+L8P1ExId/yTFxqedaz8DbcxQnNmMozviw==} cpu: [arm64] os: [linux] + libc: [musl] '@rspack/binding-linux-x64-gnu@1.6.8': resolution: {integrity: sha512-tv3BWkTE1TndfX+DsE1rSTg8fBevCxujNZ3MlfZ22Wfy9x1FMXTJlWG8VIOXmaaJ1wUHzv8S7cE2YUUJ2LuiCg==} cpu: [x64] os: [linux] + libc: [glibc] '@rspack/binding-linux-x64-musl@1.6.8': resolution: {integrity: sha512-DCGgZ5/in1O3FjHWqXnDsncRy+48cMhfuUAAUyl0yDj1NpsZu9pP+xfGLvGcQTiYrVl7IH9Aojf1eShP/77WGA==} cpu: [x64] os: [linux] + libc: [musl] '@rspack/binding-wasm32-wasi@1.6.8': resolution: {integrity: sha512-VUwdhl/lI4m6o1OGCZ9JwtMjTV/yLY5VZTQdEPKb40JMTlmZ5MBlr5xk7ByaXXYHr6I+qnqEm73iMKQvg6iknw==} @@ -4610,6 +4701,9 @@ packages: '@scarf/scarf@1.4.0': resolution: {integrity: sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==} + '@schummar/icu-type-parser@1.21.5': + resolution: {integrity: sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw==} + '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} @@ -4965,12 +5059,105 @@ packages: resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} engines: {node: '>=14'} + '@swc/core-darwin-arm64@1.15.40': + resolution: {integrity: sha512-PaYyclfmQ++77D8ityYvmmVzHv9aG8ROwt2GfG6/ccloy4Hgf80qtOnzb9VYvPsUT7Ty1uhuDRhv3XYpf62qhQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.15.40': + resolution: {integrity: sha512-HbbPzvfLBUXjIB1Ezks+//lNUjmLjfyd63XSwprJgrZaXYdm70kohXPJUWdqKZozolFxbPaO+xtBaiUp6BoueA==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.15.40': + resolution: {integrity: sha512-SlRZsCjOCPR2LvFs0Ri/Xrx/5o5TCt8vl4gW6mX1hEZOG0a625RxzRHpHdAQNGykmAN/7IeaFAJG+QnNmxlHcA==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.15.40': + resolution: {integrity: sha512-Q8byxJt2fh8CR3EUX6snBpy47AoBVm+In/+Z3rjDHMjC38ZvR9/gtUUNCT0tfrn4EdVsO8/QPi59nxrxvqxvBQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-arm64-musl@1.15.40': + resolution: {integrity: sha512-4z0MgHU+7M0pZDqBN1El7mFXDI1SBwinfcUkAyA4v8QrhOIUOZltySt2aStQLZGrdXVXM4Y4ylfiTC04ED+MoQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@swc/core-linux-ppc64-gnu@1.15.40': + resolution: {integrity: sha512-fLI4iUgeSZu0eRWUXwe6YzPFx9gHbFiPkl8Rp3mJfP8OpNR3nTQCGPvHdDh9xniW7mVvgMY4ni7A4VzqI1KrpA==} + engines: {node: '>=10'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-s390x-gnu@1.15.40': + resolution: {integrity: sha512-YqeKMAb7d4nQSGMJQ454IlaCENpzcDqhvBE9+CPfdnYpnUXxd+BSrB6Xk0YjW8UyoEhUj4p6quATCxbsp6J3jg==} + engines: {node: '>=10'} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-gnu@1.15.40': + resolution: {integrity: sha512-7HOuS1iGcme/j/TuL1TfmmLGiMQrjv/GmjyZeydl00FKPtpGXEldwqfI56xgd1YzrzoB2svWjxbGGyQ0TEASxg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@swc/core-linux-x64-musl@1.15.40': + resolution: {integrity: sha512-h4kZYHc7dpc9P9u4brRJaS8Pl7tPVHAeiLSzw7T5RfIJgAoSdaCMKzI/2Uay9gFhaw8uyCDl0L5q37r0EpAfIA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + libc: [musl] + + '@swc/core-win32-arm64-msvc@1.15.40': + resolution: {integrity: sha512-+mQgKZXSj6mV38Zh05QaxSjUDmGP/R2JWlXZTDLSPkDzHU6p3GxN9eeSf5dfyDVU86946fmCvSzyl/ucImx8+A==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.15.40': + resolution: {integrity: sha512-yvwdPLGd25mcj/mNatjNQ0lZujtQD6psH3v9PNmMb+fSzjbNG8KIDxjFWrcV+fsFVLOkyOmdJsFmX7NAFjVyPw==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.15.40': + resolution: {integrity: sha512-OXtKsLU1bVtInzzDEAY2sYiF/rl4tvAnLLLpuMp3HzAOQZ5A+i69AKDhA1YLQTaMAqO3vzyYNVAYVRMPtSYD4w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.15.40': + resolution: {integrity: sha512-2kwzJikRvgtNAG7MwVZY2vEzZjTxKIq5jXOihuSV/8U+Hej8Va22t65aKnJZs3P+NwojZvR8Mf8kyM7O+V8sQg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '>=0.5.17' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.15': resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@swc/helpers@0.5.21': resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} + '@swc/types@0.1.26': + resolution: {integrity: sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==} + '@szmarczak/http-timer@4.0.6': resolution: {integrity: sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==} engines: {node: '>=10'} @@ -5013,24 +5200,28 @@ packages: engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-arm64-musl@4.2.2': resolution: {integrity: sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==} engines: {node: '>= 20'} cpu: [arm64] os: [linux] + libc: [musl] '@tailwindcss/oxide-linux-x64-gnu@4.2.2': resolution: {integrity: sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [glibc] '@tailwindcss/oxide-linux-x64-musl@4.2.2': resolution: {integrity: sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==} engines: {node: '>= 20'} cpu: [x64] os: [linux] + libc: [musl] '@tailwindcss/oxide-wasm32-wasi@4.2.2': resolution: {integrity: sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==} @@ -5573,41 +5764,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -8860,6 +9059,9 @@ packages: peerDependencies: postcss: ^8.1.0 + icu-minify@4.13.0: + resolution: {integrity: sha512-SIFMeUHZJjzS5RvIGvybKvWoHjDm9cGVEs2EpJ8PmywOdJLWyblPm7TdPLLoUtkJtwQD7iGhl2WMptZ+N0on+w==} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -8942,6 +9144,9 @@ packages: resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} engines: {node: '>=12'} + intl-messageformat@11.2.7: + resolution: {integrity: sha512-+q6Ktg119nULZEpZ8YTuGOst9MyEzFtjD63FTGBlN1mLz0Z/MOUYDIvnpVKwq17eezIEh+cfJIebfJoCetpiNw==} + into-stream@7.0.0: resolution: {integrity: sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==} engines: {node: '>=12'} @@ -9554,24 +9759,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.32.0: resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.32.0: resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.32.0: resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.32.0: resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} @@ -10234,6 +10443,19 @@ packages: nodemailer: optional: true + next-intl-swc-plugin-extractor@4.13.0: + resolution: {integrity: sha512-6S/fJI0KXvLCL8nhBo9P8eGaJPzmwJBTCzX0NaUIj0VyU8U89d//T+vjMLdNIXl5MlLaYH7B9MbAjb8Mvu+tqQ==} + + next-intl@4.13.0: + resolution: {integrity: sha512-OvNq2v5XLx4EkQOsAhVE9g+6zdb83XHusADCXXtIW4LILYnjEVaeINdr1lkVWKSjzwNUiMSlH5N4K0OQTRiv6A==} + peerDependencies: + next: ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + next-themes@0.4.6: resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: @@ -10900,6 +11122,9 @@ packages: resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} engines: {node: '>=6'} + po-parser@2.1.1: + resolution: {integrity: sha512-ECF4zHLbUItpUgE3OTtLKlPjeBN+fKEczj2zYjDfCGOzicNs0GK3Vg2IoAYwx7LH/XYw43fZQP6xnZ4TkNxSLQ==} + portfinder@1.0.38: resolution: {integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==} engines: {node: '>= 10.12'} @@ -11829,48 +12054,56 @@ packages: engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + libc: glibc sass-embedded-linux-arm@1.99.0: resolution: {integrity: sha512-d4IjJZrX2+AwB2YCy1JySwdptJECNP/WfAQLUl8txI3ka8/d3TUI155GtelnoZUkio211PwIeFvvAeZ9RXPQnw==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + libc: glibc sass-embedded-linux-musl-arm64@1.99.0: resolution: {integrity: sha512-Hi2bt/IrM5P4FBKz6EcHAlniwfpoz9mnTdvSd58y+avA3SANM76upIkAdSayA8ZGwyL3gZokru1AKDPF9lJDNw==} engines: {node: '>=14.0.0'} cpu: [arm64] os: [linux] + libc: musl sass-embedded-linux-musl-arm@1.99.0: resolution: {integrity: sha512-2gvHOupgIw3ytatXT4nFUow71LFbuOZPEwG+HUzcNQDH8ue4Ez8cr03vsv5MDv3lIjOKcXwDvWD980t18MwkoQ==} engines: {node: '>=14.0.0'} cpu: [arm] os: [linux] + libc: musl sass-embedded-linux-musl-riscv64@1.99.0: resolution: {integrity: sha512-mKqGvVaJ9rHMqyZsF0kikQe4NO0f4osb67+X6nLhBiVDKvyazQHJ3zJQreNefIE36yL2sjHIclSB//MprzaQDg==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] + libc: musl sass-embedded-linux-musl-x64@1.99.0: resolution: {integrity: sha512-huhgOMmOc30r7CH7qbRbT9LerSEGSnWuS4CYNOskr9BvNeQp4dIneFufNRGZ7hkOAxUM8DglxIZJN/cyAT95Ew==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + libc: musl sass-embedded-linux-riscv64@1.99.0: resolution: {integrity: sha512-mevFPIFAVhrH90THifxLfOntFmHtcEKOcdWnep2gJ0X4DVva4AiVIRlQe/7w9JFx5+gnDRE1oaJJkzuFUuYZsA==} engines: {node: '>=14.0.0'} cpu: [riscv64] os: [linux] + libc: glibc sass-embedded-linux-x64@1.99.0: resolution: {integrity: sha512-9k7IkULqIZdCIVt4Mboryt6vN8Mjmm3EhI1P3mClU5y5i3wLK5ExC3cbVWk047KsID/fvB1RLslqghXJx5BoxA==} engines: {node: '>=14.0.0'} cpu: [x64] os: [linux] + libc: glibc sass-embedded-unknown-all@1.99.0: resolution: {integrity: sha512-P7MxiUtL/XzGo3PX0CaB8lNNEFLQWKikPA8pbKytx9ZCLZSDkt2NJcdAbblB/sqMs4AV3EK2NadV8rI/diq3xg==} @@ -13087,6 +13320,11 @@ packages: '@types/react': optional: true + use-intl@4.13.0: + resolution: {integrity: sha512-fAFDrWaASxlhXOipcOyb5VDD+YONqj6+8O8EcG/J7RBoOUF3A8YahRWLN+mBxYMrlMQB8N6Voqk5X+YC+HSL0A==} + peerDependencies: + react: ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0 + use-sidecar@1.1.3: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} @@ -15588,6 +15826,18 @@ snapshots: '@floating-ui/utils@0.2.11': {} + '@formatjs/fast-memoize@3.1.5': {} + + '@formatjs/icu-messageformat-parser@3.5.10': + dependencies: + '@formatjs/icu-skeleton-parser': 2.1.9 + + '@formatjs/icu-skeleton-parser@2.1.9': {} + + '@formatjs/intl-localematcher@0.8.9': + dependencies: + '@formatjs/fast-memoize': 3.1.5 + '@gerrit0/mini-shiki@3.23.0': dependencies: '@shikijs/engine-oniguruma': 3.23.0 @@ -16489,7 +16739,7 @@ snapshots: - node-fetch - utf-8-validate - '@module-federation/enhanced@2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0)': + '@module-federation/enhanced@2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: '@module-federation/bridge-react-webpack-plugin': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) '@module-federation/cli': 2.3.1(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2)) @@ -16509,7 +16759,7 @@ snapshots: optionalDependencies: typescript: 6.0.2 vue-tsc: 1.8.27(typescript@6.0.2) - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -16550,16 +16800,16 @@ snapshots: - utf-8-validate - vue-tsc - '@module-federation/node@2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0)': + '@module-federation/node@2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: - '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0) + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@module-federation/runtime': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) encoding: 0.1.13 node-fetch: 2.7.0(encoding@0.1.13) tapable: 2.3.0 optionalDependencies: - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@rspack/core' - bufferutil @@ -17070,29 +17320,29 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nx/devkit@22.6.3(nx@22.6.3)': + '@nx/devkit@22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: '@zkochan/js-yaml': 0.0.7 ejs: 3.1.10 enquirer: 2.3.6 minimatch: 10.2.4 - nx: 22.6.3 + nx: 22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)) semver: 7.7.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/docker@22.6.3(nx@22.6.3)': + '@nx/docker@22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) enquirer: 2.3.6 tslib: 2.8.1 transitivePeerDependencies: - nx - '@nx/eslint@22.6.3(@babel/traverse@7.29.0)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3)': + '@nx/eslint@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) eslint: 9.39.4(jiti@2.6.1) semver: 7.7.4 tslib: 2.8.1 @@ -17108,7 +17358,7 @@ snapshots: - supports-color - verdaccio - '@nx/js@22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)': + '@nx/js@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -17117,8 +17367,8 @@ snapshots: '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/workspace': 22.6.3 + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/workspace': 22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)) '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) babel-plugin-macros: 3.1.0 @@ -17144,20 +17394,20 @@ snapshots: - nx - supports-color - '@nx/module-federation@22.6.3(@babel/traverse@7.29.0)(@swc/helpers@0.5.21)(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))': + '@nx/module-federation@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))': dependencies: - '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0) - '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0) + '@module-federation/enhanced': 2.3.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@module-federation/node': 2.7.39(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@module-federation/sdk': 2.3.1(node-fetch@2.7.0(encoding@0.1.13)) - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) - '@nx/web': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/web': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@rspack/core': 1.6.8(@swc/helpers@0.5.21) express: 4.22.1 http-proxy-middleware: 3.0.5 picocolors: 1.1.1 tslib: 2.8.1 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@babel/traverse' - '@swc-node/register' @@ -17178,18 +17428,18 @@ snapshots: - vue-tsc - webpack-cli - '@nx/next@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(lightningcss@1.32.0)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0)': + '@nx/next@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(lightningcss@1.32.0)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) - '@nx/react': 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2)) - '@nx/web': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) - '@nx/webpack': 22.6.3(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(lightningcss@1.32.0)(nx@22.6.3)(typescript@6.0.2)(utf-8-validate@6.0.6) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/react': 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2)) + '@nx/web': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/webpack': 22.6.3(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(bufferutil@4.1.0)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(lightningcss@1.32.0)(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(utf-8-validate@6.0.6) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) '@svgr/webpack': 8.1.0(typescript@6.0.2) - copy-webpack-plugin: 14.0.0(webpack@5.106.0) + copy-webpack-plugin: 14.0.0(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) ignore: 5.3.2 next: 15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) semver: 7.7.4 @@ -17260,11 +17510,11 @@ snapshots: '@nx/nx-win32-x64-msvc@22.6.3': optional: true - '@nx/playwright@22.6.3(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3)': + '@nx/playwright@22.6.3(@babel/traverse@7.29.0)(@playwright/test@1.59.1)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) minimatch: 10.2.4 tslib: 2.8.1 optionalDependencies: @@ -17280,14 +17530,14 @@ snapshots: - supports-color - verdaccio - '@nx/react@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))': + '@nx/react@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(@types/babel__core@7.20.5)(@zkochan/js-yaml@0.0.7)(bufferutil@4.1.0)(eslint@9.39.4(jiti@2.6.1))(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)(vue-tsc@1.8.27(typescript@6.0.2))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) - '@nx/module-federation': 22.6.3(@babel/traverse@7.29.0)(@swc/helpers@0.5.21)(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2)) - '@nx/rollup': 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@types/babel__core@7.20.5)(nx@22.6.3)(typescript@6.0.2) - '@nx/web': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/eslint': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@zkochan/js-yaml@0.0.7)(eslint@9.39.4(jiti@2.6.1))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/module-federation': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@swc/helpers@0.5.21)(bufferutil@4.1.0)(node-fetch@2.7.0(encoding@0.1.13))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@6.0.2)(utf-8-validate@6.0.6)(vue-tsc@1.8.27(typescript@6.0.2)) + '@nx/rollup': 22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2) + '@nx/web': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) '@svgr/webpack': 8.1.0(typescript@6.0.2) express: 4.22.1 @@ -17297,7 +17547,7 @@ snapshots: semver: 7.7.4 tslib: 2.8.1 optionalDependencies: - '@nx/vite': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) + '@nx/vite': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) transitivePeerDependencies: - '@babel/core' - '@babel/traverse' @@ -17324,10 +17574,10 @@ snapshots: - vue-tsc - webpack-cli - '@nx/rollup@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@types/babel__core@7.20.5)(nx@22.6.3)(typescript@6.0.2)': + '@nx/rollup@22.6.3(@babel/core@7.29.0)(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@rollup/plugin-babel': 6.1.0(@babel/core@7.29.0)(@types/babel__core@7.20.5)(rollup@4.60.1) '@rollup/plugin-commonjs': 25.0.8(rollup@4.60.1) '@rollup/plugin-image': 3.0.3(rollup@4.60.1) @@ -17355,11 +17605,11 @@ snapshots: - typescript - verdaccio - '@nx/vite@22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)': + '@nx/vite@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) - '@nx/vitest': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/vitest': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) ajv: 8.18.0 enquirer: 2.3.6 @@ -17379,10 +17629,10 @@ snapshots: - typescript - verdaccio - '@nx/vitest@22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)': + '@nx/vitest@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3))(vitest@4.1.4)': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) semver: 7.7.4 tslib: 2.8.1 @@ -17399,10 +17649,10 @@ snapshots: - typescript - verdaccio - '@nx/web@22.6.3(@babel/traverse@7.29.0)(nx@22.6.3)': + '@nx/web@22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) detect-port: 1.6.1 http-server: 14.1.1 picocolors: 1.1.1 @@ -17416,44 +17666,44 @@ snapshots: - supports-color - verdaccio - '@nx/webpack@22.6.3(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(bufferutil@4.1.0)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(lightningcss@1.32.0)(nx@22.6.3)(typescript@6.0.2)(utf-8-validate@6.0.6)': + '@nx/webpack@22.6.3(@babel/traverse@7.29.0)(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(bufferutil@4.1.0)(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(lightningcss@1.32.0)(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)))(typescript@6.0.2)(utf-8-validate@6.0.6)': dependencies: '@babel/core': 7.29.0 - '@nx/devkit': 22.6.3(nx@22.6.3) - '@nx/js': 22.6.3(@babel/traverse@7.29.0)(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) + '@nx/js': 22.6.3(@babel/traverse@7.29.0)(@swc/core@1.15.40(@swc/helpers@0.5.21))(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@phenomnomnominal/tsquery': 6.1.4(typescript@6.0.2) ajv: 8.18.0 autoprefixer: 10.4.27(postcss@8.5.9) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.106.0) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) browserslist: 4.28.2 - copy-webpack-plugin: 14.0.0(webpack@5.106.0) - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0) - css-minimizer-webpack-plugin: 8.0.0(lightningcss@1.32.0)(webpack@5.106.0) - fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.106.0) + copy-webpack-plugin: 14.0.0(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + css-minimizer-webpack-plugin: 8.0.0(lightningcss@1.32.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + fork-ts-checker-webpack-plugin: 9.1.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) less: 4.5.1 - less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.106.0) - license-webpack-plugin: 4.0.2(webpack@5.106.0) + less-loader: 12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + license-webpack-plugin: 4.0.2(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) loader-utils: 2.0.4 - mini-css-extract-plugin: 2.4.7(webpack@5.106.0) + mini-css-extract-plugin: 2.4.7(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) parse5: 4.0.0 picocolors: 1.1.1 postcss: 8.5.9 postcss-import: 14.1.0(postcss@8.5.9) - postcss-loader: 6.2.1(postcss@8.5.9)(webpack@5.106.0) + postcss-loader: 6.2.1(postcss@8.5.9)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) rxjs: 7.8.2 sass: 1.99.0 sass-embedded: 1.99.0 - sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0) - source-map-loader: 5.0.0(webpack@5.106.0) - style-loader: 3.3.4(webpack@5.106.0) - terser-webpack-plugin: 5.4.0(webpack@5.106.0) - ts-loader: 9.5.7(typescript@6.0.2)(webpack@5.106.0) + sass-loader: 16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + source-map-loader: 5.0.0(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + style-loader: 3.3.4(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) + ts-loader: 9.5.7(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) tsconfig-paths-webpack-plugin: 4.2.0 tslib: 2.8.1 - webpack: 5.106.0 - webpack-dev-server: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) + webpack-dev-server: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) webpack-node-externals: 3.0.0 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(webpack@5.106.0) + webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) transitivePeerDependencies: - '@babel/traverse' - '@parcel/css' @@ -17477,13 +17727,13 @@ snapshots: - verdaccio - webpack-cli - '@nx/workspace@22.6.3': + '@nx/workspace@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))': dependencies: - '@nx/devkit': 22.6.3(nx@22.6.3) + '@nx/devkit': 22.6.3(nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21))) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.6.3 + nx: 22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)) picomatch: 4.0.2 semver: 7.7.4 tslib: 2.8.1 @@ -17657,7 +17907,6 @@ snapshots: '@parcel/watcher-win32-arm64': 2.5.6 '@parcel/watcher-win32-ia32': 2.5.6 '@parcel/watcher-win32-x64': 2.5.6 - optional: true '@peculiar/asn1-cms@2.6.1': dependencies: @@ -17761,7 +18010,7 @@ snapshots: dependencies: playwright: 1.59.1 - '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(esbuild@0.25.12))': + '@pmmmwh/react-refresh-webpack-plugin@0.5.17(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12))': dependencies: ansi-html: 0.0.9 core-js-pure: 3.49.0 @@ -17771,10 +18020,10 @@ snapshots: react-refresh: 0.14.2 schema-utils: 4.3.3 source-map: 0.7.6 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) optionalDependencies: type-fest: 4.41.0 - webpack-dev-server: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)) + webpack-dev-server: 5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) webpack-hot-middleware: 2.26.1 '@pnpm/config.env-replace@1.1.0': {} @@ -18424,6 +18673,8 @@ snapshots: '@scarf/scarf@1.4.0': {} + '@schummar/icu-type-parser@1.21.5': {} + '@scure/base@1.2.6': {} '@scure/base@2.0.0': {} @@ -18717,7 +18968,7 @@ snapshots: storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) ts-dedent: 2.2.0 - '@storybook/builder-webpack5@8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(esbuild@0.25.12)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2)': + '@storybook/builder-webpack5@8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2)': dependencies: '@storybook/core-webpack': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)) '@types/semver': 7.7.1 @@ -18725,23 +18976,23 @@ snapshots: case-sensitive-paths-webpack-plugin: 2.4.0 cjs-module-lexer: 1.4.3 constants-browserify: 1.0.0 - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(esbuild@0.25.12)) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) es-module-lexer: 1.7.0 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12)) - html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(esbuild@0.25.12)) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.4 storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) - style-loader: 3.3.4(webpack@5.106.0(esbuild@0.25.12)) - terser-webpack-plugin: 5.4.0(esbuild@0.25.12)(webpack@5.106.0(esbuild@0.25.12)) + style-loader: 3.3.4(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.106.0(esbuild@0.25.12) - webpack-dev-middleware: 6.1.3(webpack@5.106.0(esbuild@0.25.12)) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) + webpack-dev-middleware: 6.1.3(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) webpack-hot-middleware: 2.26.1 webpack-virtual-modules: 0.6.2 optionalDependencies: @@ -18795,7 +19046,7 @@ snapshots: dependencies: storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) - '@storybook/nextjs@8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(esbuild@0.25.12)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(type-fest@4.41.0)(typescript@6.0.2)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(esbuild@0.25.12))': + '@storybook/nextjs@8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass-embedded@1.99.0)(sass@1.99.0)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(type-fest@4.41.0)(typescript@6.0.2)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.29.0) @@ -18810,30 +19061,30 @@ snapshots: '@babel/preset-react': 7.28.5(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(esbuild@0.25.12)) - '@storybook/builder-webpack5': 8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(esbuild@0.25.12)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) - '@storybook/preset-react-webpack': 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(esbuild@0.25.12)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.17(react-refresh@0.14.2)(type-fest@4.41.0)(webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)))(webpack-hot-middleware@2.26.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) + '@storybook/builder-webpack5': 8.6.18(@rspack/core@1.6.8(@swc/helpers@0.5.21))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) + '@storybook/preset-react-webpack': 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) '@storybook/react': 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) '@storybook/test': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)) '@types/semver': 7.7.1 - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.106.0(esbuild@0.25.12)) - css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(esbuild@0.25.12)) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) + css-loader: 6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) find-up: 5.0.0 image-size: 1.2.1 loader-utils: 3.3.1 next: 15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) - node-polyfill-webpack-plugin: 2.0.1(webpack@5.106.0(esbuild@0.25.12)) + node-polyfill-webpack-plugin: 2.0.1(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) pnp-webpack-plugin: 1.7.0(typescript@6.0.2) postcss: 8.5.9 - postcss-loader: 8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.9)(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12)) + postcss-loader: 8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.9)(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) react-refresh: 0.14.2 resolve-url-loader: 5.0.0 - sass-loader: 14.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(esbuild@0.25.12)) + sass-loader: 14.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) semver: 7.7.4 storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) - style-loader: 3.3.4(webpack@5.106.0(esbuild@0.25.12)) + style-loader: 3.3.4(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) styled-jsx: 5.1.7(@babel/core@7.29.0)(react@19.2.4) ts-dedent: 2.2.0 tsconfig-paths: 4.2.0 @@ -18841,7 +19092,7 @@ snapshots: optionalDependencies: sharp: 0.33.5 typescript: 6.0.2 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) transitivePeerDependencies: - '@rspack/core' - '@swc/core' @@ -18860,11 +19111,11 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@storybook/preset-react-webpack@8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(esbuild@0.25.12)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2)': + '@storybook/preset-react-webpack@8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2)': dependencies: '@storybook/core-webpack': 8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)) '@storybook/react': 8.6.18(@storybook/test@8.6.18(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6)))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(storybook@8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6))(typescript@6.0.2) - '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12)) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) '@types/semver': 7.7.1 find-up: 5.0.0 magic-string: 0.30.21 @@ -18875,7 +19126,7 @@ snapshots: semver: 7.7.4 storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) tsconfig-paths: 4.2.0 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) optionalDependencies: typescript: 6.0.2 transitivePeerDependencies: @@ -18890,7 +19141,7 @@ snapshots: dependencies: storybook: 8.6.18(bufferutil@4.1.0)(prettier@2.8.8)(utf-8-validate@6.0.6) - '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12))': + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12))': dependencies: debug: 4.4.3 endent: 2.1.0 @@ -18900,7 +19151,7 @@ snapshots: react-docgen-typescript: 2.4.0(typescript@6.0.2) tslib: 2.8.1 typescript: 6.0.2 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) transitivePeerDependencies: - supports-color @@ -19033,6 +19284,63 @@ snapshots: - supports-color - typescript + '@swc/core-darwin-arm64@1.15.40': + optional: true + + '@swc/core-darwin-x64@1.15.40': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.15.40': + optional: true + + '@swc/core-linux-arm64-gnu@1.15.40': + optional: true + + '@swc/core-linux-arm64-musl@1.15.40': + optional: true + + '@swc/core-linux-ppc64-gnu@1.15.40': + optional: true + + '@swc/core-linux-s390x-gnu@1.15.40': + optional: true + + '@swc/core-linux-x64-gnu@1.15.40': + optional: true + + '@swc/core-linux-x64-musl@1.15.40': + optional: true + + '@swc/core-win32-arm64-msvc@1.15.40': + optional: true + + '@swc/core-win32-ia32-msvc@1.15.40': + optional: true + + '@swc/core-win32-x64-msvc@1.15.40': + optional: true + + '@swc/core@1.15.40(@swc/helpers@0.5.21)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.26 + optionalDependencies: + '@swc/core-darwin-arm64': 1.15.40 + '@swc/core-darwin-x64': 1.15.40 + '@swc/core-linux-arm-gnueabihf': 1.15.40 + '@swc/core-linux-arm64-gnu': 1.15.40 + '@swc/core-linux-arm64-musl': 1.15.40 + '@swc/core-linux-ppc64-gnu': 1.15.40 + '@swc/core-linux-s390x-gnu': 1.15.40 + '@swc/core-linux-x64-gnu': 1.15.40 + '@swc/core-linux-x64-musl': 1.15.40 + '@swc/core-win32-arm64-msvc': 1.15.40 + '@swc/core-win32-ia32-msvc': 1.15.40 + '@swc/core-win32-x64-msvc': 1.15.40 + '@swc/helpers': 0.5.21 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -19041,6 +19349,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@swc/types@0.1.26': + dependencies: + '@swc/counter': 0.1.3 + '@szmarczak/http-timer@4.0.6': dependencies: defer-to-connect: 2.0.1 @@ -19740,7 +20052,7 @@ snapshots: obug: 2.1.1 std-env: 4.0.0 tinyrainbow: 3.1.0 - vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@20.19.39)(@vitest/coverage-v8@4.1.4)(jsdom@27.4.0(@noble/hashes@1.8.0)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(msw@2.13.2(@types/node@20.19.39)(typescript@6.0.2))(vite@6.4.2(@types/node@20.19.39)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) + vitest: 4.1.4(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/coverage-v8@4.1.4)(jsdom@29.1.1(@noble/hashes@1.8.0))(msw@2.13.2(@types/node@25.6.0)(typescript@6.0.2))(vite@6.4.2(@types/node@25.6.0)(jiti@2.6.1)(less@4.5.1)(lightningcss@1.32.0)(sass-embedded@1.99.0)(sass@1.99.0)(terser@5.46.1)(yaml@2.8.3)) '@vitest/expect@2.0.5': dependencies: @@ -20778,19 +21090,19 @@ snapshots: b4a@1.8.0: {} - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.0(esbuild@0.25.12)): + babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: '@babel/core': 7.29.0 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.0): + babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@babel/core': 7.29.0 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) babel-plugin-const-enum@1.2.0(@babel/core@7.29.0): dependencies: @@ -21597,14 +21909,14 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@14.0.0(webpack@5.106.0): + copy-webpack-plugin@14.0.0(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: glob-parent: 6.0.2 normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 7.0.5 tinyglobby: 0.2.16 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) core-js-compat@3.49.0: dependencies: @@ -21750,7 +22062,7 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(esbuild@0.25.12)): + css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: icss-utils: 5.1.0(postcss@8.5.9) postcss: 8.5.9 @@ -21762,9 +22074,9 @@ snapshots: semver: 7.7.4 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0): + css-loader@6.11.0(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: icss-utils: 5.1.0(postcss@8.5.9) postcss: 8.5.9 @@ -21776,9 +22088,9 @@ snapshots: semver: 7.7.4 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) - css-minimizer-webpack-plugin@8.0.0(lightningcss@1.32.0)(webpack@5.106.0): + css-minimizer-webpack-plugin@8.0.0(lightningcss@1.32.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 7.1.4(postcss@8.5.9) @@ -21786,7 +22098,7 @@ snapshots: postcss: 8.5.9 schema-utils: 4.3.3 serialize-javascript: 7.0.5 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) optionalDependencies: lightningcss: 1.32.0 @@ -23183,7 +23495,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12)): + fork-ts-checker-webpack-plugin@8.0.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: '@babel/code-frame': 7.29.0 chalk: 4.1.2 @@ -23198,9 +23510,9 @@ snapshots: semver: 7.7.4 tapable: 2.3.2 typescript: 6.0.2 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - fork-ts-checker-webpack-plugin@9.1.0(typescript@6.0.2)(webpack@5.106.0): + fork-ts-checker-webpack-plugin@9.1.0(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@babel/code-frame': 7.29.0 chalk: 4.1.2 @@ -23215,7 +23527,7 @@ snapshots: semver: 7.7.4 tapable: 2.3.2 typescript: 6.0.2 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) form-data@2.5.5: dependencies: @@ -23781,7 +24093,7 @@ snapshots: html-url-attributes@3.0.1: {} - html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(esbuild@0.25.12)): + html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -23790,9 +24102,9 @@ snapshots: tapable: 2.3.2 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0): + html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -23801,7 +24113,7 @@ snapshots: tapable: 2.3.2 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) optional: true html2canvas@1.4.1: @@ -23960,6 +24272,10 @@ snapshots: dependencies: postcss: 8.5.9 + icu-minify@4.13.0: + dependencies: + '@formatjs/icu-messageformat-parser': 3.5.10 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -24022,6 +24338,11 @@ snapshots: internmap@2.0.3: {} + intl-messageformat@11.2.7: + dependencies: + '@formatjs/fast-memoize': 3.1.5 + '@formatjs/icu-messageformat-parser': 3.5.10 + into-stream@7.0.0: dependencies: from2: 2.3.0 @@ -24588,12 +24909,12 @@ snapshots: leaflet@1.9.4: {} - less-loader@12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.106.0): + less-loader@12.3.2(@rspack/core@1.6.8(@swc/helpers@0.5.21))(less@4.5.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: less: 4.5.1 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) less@4.5.1: dependencies: @@ -24635,11 +24956,11 @@ snapshots: '@libsql/linux-x64-musl': 0.5.29 '@libsql/win32-x64-msvc': 0.5.29 - license-webpack-plugin@4.0.2(webpack@5.106.0): + license-webpack-plugin@4.0.2(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: webpack-sources: 3.3.4 optionalDependencies: - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) lightningcss-android-arm64@1.32.0: optional: true @@ -25232,10 +25553,10 @@ snapshots: min-indent@1.0.1: {} - mini-css-extract-plugin@2.4.7(webpack@5.106.0): + mini-css-extract-plugin@2.4.7(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: schema-utils: 4.3.3 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) mini-svg-data-uri@1.4.4: {} @@ -25448,6 +25769,25 @@ snapshots: optionalDependencies: nodemailer: 8.0.5 + next-intl-swc-plugin-extractor@4.13.0: {} + + next-intl@4.13.0(@swc/helpers@0.5.21)(next@15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0))(react@19.2.4)(typescript@6.0.2): + dependencies: + '@formatjs/intl-localematcher': 0.8.9 + '@parcel/watcher': 2.5.6 + '@swc/core': 1.15.40(@swc/helpers@0.5.21) + icu-minify: 4.13.0 + negotiator: 1.0.0 + next: 15.5.14(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.59.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.99.0) + next-intl-swc-plugin-extractor: 4.13.0 + po-parser: 2.1.1 + react: 19.2.4 + use-intl: 4.13.0(react@19.2.4) + optionalDependencies: + typescript: 6.0.2 + transitivePeerDependencies: + - '@swc/helpers' + next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): dependencies: react: 19.2.4 @@ -25490,8 +25830,7 @@ snapshots: node-abort-controller@3.1.1: {} - node-addon-api@7.1.1: - optional: true + node-addon-api@7.1.1: {} node-cron@4.2.1: {} @@ -25535,7 +25874,7 @@ snapshots: node-gyp-build@4.8.4: optional: true - node-polyfill-webpack-plugin@2.0.1(webpack@5.106.0(esbuild@0.25.12)): + node-polyfill-webpack-plugin@2.0.1(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: assert: 2.1.0 browserify-zlib: 0.2.0 @@ -25562,7 +25901,7 @@ snapshots: url: 0.11.4 util: 0.12.5 vm-browserify: 1.1.2 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) node-releases@2.0.37: {} @@ -25605,7 +25944,7 @@ snapshots: dependencies: boolbase: 1.0.0 - nx@22.6.3: + nx@22.6.3(@swc/core@1.15.40(@swc/helpers@0.5.21)): dependencies: '@ltd/j-toml': 1.38.0 '@napi-rs/wasm-runtime': 0.2.4 @@ -25654,6 +25993,7 @@ snapshots: '@nx/nx-linux-x64-musl': 22.6.3 '@nx/nx-win32-arm64-msvc': 22.6.3 '@nx/nx-win32-x64-msvc': 22.6.3 + '@swc/core': 1.15.40(@swc/helpers@0.5.21) transitivePeerDependencies: - debug @@ -26135,6 +26475,8 @@ snapshots: transitivePeerDependencies: - typescript + po-parser@2.1.1: {} + portfinder@1.0.38: dependencies: async: 3.2.6 @@ -26198,15 +26540,15 @@ snapshots: postcss: 8.5.9 yaml: 2.8.3 - postcss-loader@6.2.1(postcss@8.5.9)(webpack@5.106.0): + postcss-loader@6.2.1(postcss@8.5.9)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 postcss: 8.5.9 semver: 7.7.4 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) - postcss-loader@8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.9)(typescript@6.0.2)(webpack@5.106.0(esbuild@0.25.12)): + postcss-loader@8.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(postcss@8.5.9)(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: cosmiconfig: 9.0.1(typescript@6.0.2) jiti: 2.6.1 @@ -26214,7 +26556,7 @@ snapshots: semver: 7.7.4 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) transitivePeerDependencies: - typescript @@ -27327,23 +27669,23 @@ snapshots: sass-embedded-win32-arm64: 1.99.0 sass-embedded-win32-x64: 1.99.0 - sass-loader@14.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(esbuild@0.25.12)): + sass-loader@14.2.1(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: neo-async: 2.6.2 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) sass: 1.99.0 sass-embedded: 1.99.0 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0): + sass-loader@16.0.7(@rspack/core@1.6.8(@swc/helpers@0.5.21))(sass-embedded@1.99.0)(sass@1.99.0)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: neo-async: 2.6.2 optionalDependencies: '@rspack/core': 1.6.8(@swc/helpers@0.5.21) sass: 1.99.0 sass-embedded: 1.99.0 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) sass@1.99.0: dependencies: @@ -27728,11 +28070,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.106.0): + source-map-loader@5.0.0(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) source-map-support@0.5.19: dependencies: @@ -28028,13 +28370,13 @@ snapshots: stubs@3.0.0: optional: true - style-loader@3.3.4(webpack@5.106.0(esbuild@0.25.12)): + style-loader@3.3.4(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - style-loader@3.3.4(webpack@5.106.0): + style-loader@3.3.4(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) style-to-js@1.1.21: dependencies: @@ -28264,23 +28606,26 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.4.0(esbuild@0.25.12)(webpack@5.106.0(esbuild@0.25.12)): + terser-webpack-plugin@5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) optionalDependencies: + '@swc/core': 1.15.40(@swc/helpers@0.5.21) esbuild: 0.25.12 - terser-webpack-plugin@5.4.0(webpack@5.106.0): + terser-webpack-plugin@5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) + optionalDependencies: + '@swc/core': 1.15.40(@swc/helpers@0.5.21) terser@5.46.1: dependencies: @@ -28410,7 +28755,7 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-loader@9.5.7(typescript@6.0.2)(webpack@5.106.0): + ts-loader@9.5.7(typescript@6.0.2)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: chalk: 4.1.2 enhanced-resolve: 5.20.1 @@ -28418,9 +28763,9 @@ snapshots: semver: 7.7.4 source-map: 0.7.6 typescript: 6.0.2 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) - ts-node@10.9.2(@types/node@20.19.39)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.15.40(@swc/helpers@0.5.21))(@types/node@20.19.39)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.12 @@ -28437,6 +28782,8 @@ snapshots: typescript: 5.9.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.15.40(@swc/helpers@0.5.21) ts-pnp@1.2.0(typescript@6.0.2): optionalDependencies: @@ -28468,7 +28815,7 @@ snapshots: tslib@2.8.1: {} - tsup@8.5.1(jiti@2.6.1)(postcss@8.5.9)(typescript@5.9.3)(yaml@2.8.3): + tsup@8.5.1(@swc/core@1.15.40(@swc/helpers@0.5.21))(jiti@2.6.1)(postcss@8.5.9)(typescript@5.9.3)(yaml@2.8.3): dependencies: bundle-require: 5.1.0(esbuild@0.27.7) cac: 6.7.14 @@ -28488,6 +28835,7 @@ snapshots: tinyglobby: 0.2.16 tree-kill: 1.2.2 optionalDependencies: + '@swc/core': 1.15.40(@swc/helpers@0.5.21) postcss: 8.5.9 typescript: 5.9.3 transitivePeerDependencies: @@ -28759,6 +29107,14 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 + use-intl@4.13.0(react@19.2.4): + dependencies: + '@formatjs/fast-memoize': 3.1.5 + '@schummar/icu-type-parser': 1.21.5 + icu-minify: 4.13.0 + intl-messageformat: 11.2.7 + react: 19.2.4 + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): dependencies: detect-node-es: 1.1.0 @@ -29077,7 +29433,7 @@ snapshots: webidl-conversions@8.0.1: {} - webpack-dev-middleware@6.1.3(webpack@5.106.0(esbuild@0.25.12)): + webpack-dev-middleware@6.1.3(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 3.5.3 @@ -29085,9 +29441,9 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.0(esbuild@0.25.12)): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: colorette: 2.0.20 memfs: 4.57.1(tslib@2.8.1) @@ -29096,12 +29452,12 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) transitivePeerDependencies: - tslib optional: true - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.0): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: colorette: 2.0.20 memfs: 4.57.1(tslib@2.8.1) @@ -29110,11 +29466,11 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) transitivePeerDependencies: - tslib - webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(esbuild@0.25.12)): + webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -29142,10 +29498,10 @@ snapshots: serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.0(esbuild@0.25.12)) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - webpack: 5.106.0(esbuild@0.25.12) + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12) transitivePeerDependencies: - bufferutil - debug @@ -29154,7 +29510,7 @@ snapshots: - utf-8-validate optional: true - webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0): + webpack-dev-server@5.2.3(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -29182,10 +29538,10 @@ snapshots: serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.0) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) ws: 8.20.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) transitivePeerDependencies: - bufferutil - debug @@ -29209,16 +29565,16 @@ snapshots: webpack-sources@3.3.4: {} - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0))(webpack@5.106.0): + webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))): dependencies: typed-assert: 1.0.9 - webpack: 5.106.0 + webpack: 5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)) optionalDependencies: - html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0) + html-webpack-plugin: 5.6.6(@rspack/core@1.6.8(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) webpack-virtual-modules@0.6.2: {} - webpack@5.106.0: + webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21)): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -29242,7 +29598,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(webpack@5.106.0) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: @@ -29250,7 +29606,7 @@ snapshots: - esbuild - uglify-js - webpack@5.106.0(esbuild@0.25.12): + webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -29274,7 +29630,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(esbuild@0.25.12)(webpack@5.106.0(esbuild@0.25.12)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)(webpack@5.106.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.25.12)) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: