diff --git a/.gitignore b/.gitignore index 023a0bd12..27c2b6a62 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,3 @@ release-artifacts *.tgz .claude -apps/appkit-minter/src/pages/example.tsx diff --git a/apps/appkit-minter/src/core/configs/app-kit.ts b/apps/appkit-minter/src/core/configs/app-kit.ts index 05acc9613..b9b08a2ed 100644 --- a/apps/appkit-minter/src/core/configs/app-kit.ts +++ b/apps/appkit-minter/src/core/configs/app-kit.ts @@ -6,9 +6,8 @@ * */ -import { AppKit, Network } from '@ton/appkit'; +import { AppKit, Network, tonConnect } from '@ton/appkit'; import { OmnistonSwapProvider } from '@ton/appkit/swap/omniston'; -import { TonConnectConnector } from '@ton/appkit'; import { ENV_TON_API_KEY_MAINNET, ENV_TON_API_KEY_TESTNET } from '@/core/configs/env'; @@ -28,7 +27,7 @@ export const appKit = new AppKit({ }, }, connectors: [ - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://tonconnect-sdk-demo-dapp.vercel.app/tonconnect-manifest.json', }, diff --git a/apps/appkit-next/.gitignore b/apps/appkit-next/.gitignore new file mode 100644 index 000000000..5ef6a5207 --- /dev/null +++ b/apps/appkit-next/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/appkit-next/README.md b/apps/appkit-next/README.md new file mode 100644 index 000000000..66bb426ff --- /dev/null +++ b/apps/appkit-next/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.js`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/appkit-next/next.config.js b/apps/appkit-next/next.config.js new file mode 100644 index 000000000..4678774e6 --- /dev/null +++ b/apps/appkit-next/next.config.js @@ -0,0 +1,4 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = {}; + +export default nextConfig; diff --git a/apps/appkit-next/package.json b/apps/appkit-next/package.json new file mode 100644 index 000000000..eef3709cc --- /dev/null +++ b/apps/appkit-next/package.json @@ -0,0 +1,32 @@ +{ + "name": "appkit-next", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "clean": "rm -rf .next node_modules" + }, + "dependencies": { + "@tanstack/react-query": "catalog:", + "@ton/appkit": "workspace:*", + "@ton/appkit-react": "workspace:*", + "@ton/core": "catalog:", + "@ton/crypto": "catalog:", + "@ton/walletkit": "workspace:*", + "@tonconnect/sdk": "catalog:", + "@tonconnect/ui": "catalog:", + "next": "16.1.6", + "react": "catalog:", + "react-dom": "catalog:" + }, + "devDependencies": { + "@tailwindcss/postcss": "^4", + "@types/node": "^25.2.3", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "tailwindcss": "^4", + "typescript": "^5.9.3" + } +} diff --git a/apps/appkit-next/postcss.config.mjs b/apps/appkit-next/postcss.config.mjs new file mode 100644 index 000000000..f3926c273 --- /dev/null +++ b/apps/appkit-next/postcss.config.mjs @@ -0,0 +1,7 @@ +const config = { + plugins: { + '@tailwindcss/postcss': {}, + }, +}; + +export default config; diff --git a/apps/appkit-next/public/file.svg b/apps/appkit-next/public/file.svg new file mode 100644 index 000000000..004145cdd --- /dev/null +++ b/apps/appkit-next/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/appkit-next/public/globe.svg b/apps/appkit-next/public/globe.svg new file mode 100644 index 000000000..567f17b0d --- /dev/null +++ b/apps/appkit-next/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/appkit-next/public/next.svg b/apps/appkit-next/public/next.svg new file mode 100644 index 000000000..5174b28c5 --- /dev/null +++ b/apps/appkit-next/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/appkit-next/public/vercel.svg b/apps/appkit-next/public/vercel.svg new file mode 100644 index 000000000..770539603 --- /dev/null +++ b/apps/appkit-next/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/appkit-next/public/window.svg b/apps/appkit-next/public/window.svg new file mode 100644 index 000000000..b2b2a44f6 --- /dev/null +++ b/apps/appkit-next/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/appkit-next/src/app/favicon.ico b/apps/appkit-next/src/app/favicon.ico new file mode 100644 index 000000000..718d6fea4 Binary files /dev/null and b/apps/appkit-next/src/app/favicon.ico differ diff --git a/apps/appkit-next/src/app/globals.css b/apps/appkit-next/src/app/globals.css new file mode 100644 index 000000000..a2dc41ece --- /dev/null +++ b/apps/appkit-next/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/apps/appkit-next/src/app/layout.tsx b/apps/appkit-next/src/app/layout.tsx new file mode 100644 index 000000000..ce77d248c --- /dev/null +++ b/apps/appkit-next/src/app/layout.tsx @@ -0,0 +1,28 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import type { Metadata } from 'next'; +import type { ReactNode } from 'react'; + +import AppKitContext from '../context'; +import './globals.css'; + +export const metadata: Metadata = { + title: 'Create Next App', + description: 'Generated by create next app', +}; + +export default function RootLayout({ children }: { children: ReactNode }) { + return ( + + + {children} + + + ); +} diff --git a/apps/appkit-next/src/app/page.tsx b/apps/appkit-next/src/app/page.tsx new file mode 100644 index 000000000..a78ad232d --- /dev/null +++ b/apps/appkit-next/src/app/page.tsx @@ -0,0 +1,19 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +import { Balance } from '../components/balance'; +import { Header } from '../components/header'; + +export default function Home() { + return ( +
+
+ +
+ ); +} diff --git a/apps/appkit-next/src/components/balance.tsx b/apps/appkit-next/src/components/balance.tsx new file mode 100644 index 000000000..263255690 --- /dev/null +++ b/apps/appkit-next/src/components/balance.tsx @@ -0,0 +1,27 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +'use client'; + +import { useBalance } from '@ton/appkit-react'; +import type { FC } from 'react'; + +export const Balance: FC = () => { + const { data: balance } = useBalance({ + query: { + refetchInterval: 20000, + }, + }); + + return ( +
+

Balance:

+

{balance ? `${balance} TON` : 'Loading...'}

+
+ ); +}; diff --git a/apps/appkit-next/src/components/header.tsx b/apps/appkit-next/src/components/header.tsx new file mode 100644 index 000000000..7e43d44a1 --- /dev/null +++ b/apps/appkit-next/src/components/header.tsx @@ -0,0 +1,20 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +'use client'; + +import { TonConnectButton } from '@ton/appkit-react'; +import type { FC } from 'react'; + +export const Header: FC = () => { + return ( +
+ +
+ ); +}; diff --git a/apps/appkit-next/src/config/env.ts b/apps/appkit-next/src/config/env.ts new file mode 100644 index 000000000..7e58e3ad2 --- /dev/null +++ b/apps/appkit-next/src/config/env.ts @@ -0,0 +1,12 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +export const ENV_TON_API_KEY_MAINNET = + process.env.NEXT_PUBLIC_TON_API_KEY ?? '25a9b2326a34b39a5fa4b264fb78fb4709e1bd576fc5e6b176639f5b71e94b0d'; +export const ENV_TON_API_KEY_TESTNET = + process.env.NEXT_PUBLIC_TON_API_TESTNET_KEY ?? 'd852b54d062f631565761042cccea87fa6337c41eb19b075e6c7fb88898a3992'; diff --git a/apps/appkit-next/src/context.tsx b/apps/appkit-next/src/context.tsx new file mode 100644 index 000000000..1fcacc631 --- /dev/null +++ b/apps/appkit-next/src/context.tsx @@ -0,0 +1,54 @@ +/** + * Copyright (c) TonTech. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +'use client'; + +import { AppKit, Network, AppKitProvider, tonConnect } from '@ton/appkit-react'; +import { QueryClientProvider, QueryClient } from '@tanstack/react-query'; +// import { useState, useEffect } from 'react'; +import type { ReactNode } from 'react'; + +import { ENV_TON_API_KEY_MAINNET, ENV_TON_API_KEY_TESTNET } from './config/env'; + +// Import styles +import '@ton/appkit-react/styles.css'; + +const appKit = new AppKit({ + ssr: true, + networks: { + [Network.mainnet().chainId]: { + apiClient: { + url: 'https://toncenter.com', + key: ENV_TON_API_KEY_MAINNET, + }, + }, + [Network.testnet().chainId]: { + apiClient: { + url: 'https://testnet.toncenter.com', + key: ENV_TON_API_KEY_TESTNET, + }, + }, + }, + connectors: [ + tonConnect({ + tonConnectOptions: { + manifestUrl: 'https://tonconnect-sdk-demo-dapp.vercel.app/tonconnect-manifest.json', + }, + }), + ], +}); + +const queryClient = new QueryClient(); + +export default function AppKitContext({ children }: { children: ReactNode }) { + return ( + + {children} + + ); +} diff --git a/apps/appkit-next/tsconfig.json b/apps/appkit-next/tsconfig.json new file mode 100644 index 000000000..877b650fc --- /dev/null +++ b/apps/appkit-next/tsconfig.json @@ -0,0 +1,41 @@ +{ + "compilerOptions": { + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "react-jsx", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": [ + "./src/*" + ] + }, + "target": "ES2017" + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + ".next/dev/types/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/demo/examples/src/appkit/actions/connectors/add-connector.ts b/demo/examples/src/appkit/actions/connectors/add-connector.ts index c6e031ce1..2ba50c1ee 100644 --- a/demo/examples/src/appkit/actions/connectors/add-connector.ts +++ b/demo/examples/src/appkit/actions/connectors/add-connector.ts @@ -8,13 +8,13 @@ import type { AppKit } from '@ton/appkit'; import { addConnector } from '@ton/appkit'; -import { TonConnectConnector } from '@ton/appkit'; +import { tonConnect } from '@ton/appkit'; export const addConnectorExample = (appKit: AppKit) => { // SAMPLE_START: ADD_CONNECTOR const stopWatching = addConnector( appKit, - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://tonconnect-sdk-demo-dapp.vercel.app/tonconnect-manifest.json', }, diff --git a/demo/examples/src/appkit/actions/connectors/connectors.test.ts b/demo/examples/src/appkit/actions/connectors/connectors.test.ts index a0c415c53..223439185 100644 --- a/demo/examples/src/appkit/actions/connectors/connectors.test.ts +++ b/demo/examples/src/appkit/actions/connectors/connectors.test.ts @@ -50,7 +50,7 @@ describe('Connector Actions Examples (Integration)', () => { } as unknown as Connector; // Add connector to AppKit - appKit.addConnector(mockConnector); + appKit.addConnector(() => mockConnector); }); afterEach(() => { diff --git a/demo/examples/src/appkit/components/providers/app-kit-provider.tsx b/demo/examples/src/appkit/components/providers/app-kit-provider.tsx index 0190d7db8..fcb47adb4 100644 --- a/demo/examples/src/appkit/components/providers/app-kit-provider.tsx +++ b/demo/examples/src/appkit/components/providers/app-kit-provider.tsx @@ -8,7 +8,7 @@ import { AppKit, Network } from '@ton/appkit'; import { AppKitProvider } from '@ton/appkit-react'; -import { TonConnectConnector } from '@ton/appkit'; +import { tonConnect } from '@ton/appkit'; import type { FC } from 'react'; // Initialize AppKit (outside component) @@ -19,7 +19,7 @@ const appKit = new AppKit({ }, }, connectors: [ - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://your-app.com/tonconnect-manifest.json' }, }), ], diff --git a/demo/examples/src/appkit/connectors/tonconnect/connector.ts b/demo/examples/src/appkit/connectors/tonconnect/connector.ts index b3d4aedd2..b0de7f12b 100644 --- a/demo/examples/src/appkit/connectors/tonconnect/connector.ts +++ b/demo/examples/src/appkit/connectors/tonconnect/connector.ts @@ -7,7 +7,7 @@ */ import { AppKit, Network } from '@ton/appkit'; -import { TonConnectConnector } from '@ton/appkit'; +import { tonConnect } from '@ton/appkit'; import { TonConnectUI } from '@tonconnect/ui'; export const tonConnectConnectorExample = async () => { @@ -27,7 +27,7 @@ export const tonConnectConnectorExample = async () => { }, }, }, - connectors: [new TonConnectConnector({ tonConnectUI })], + connectors: [tonConnect({ tonConnectUI })], }); // SAMPLE_END: TON_CONNECT_CONNECTOR @@ -46,7 +46,7 @@ export const tonConnectOptionsExample = async () => { }, }, connectors: [ - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://my-app.com/tonconnect-manifest.json', }, @@ -72,8 +72,8 @@ export const addConnectorExample = async () => { }, }); - // 2. Initialize TonConnect connector - const connector = new TonConnectConnector({ + // 2. Initialize TonConnect connector function + const connector = tonConnect({ tonConnectOptions: { manifestUrl: 'https://my-app.com/tonconnect-manifest.json', }, diff --git a/demo/examples/src/appkit/setup-react.tsx b/demo/examples/src/appkit/setup-react.tsx index bb33d4b98..c72dcb2d7 100644 --- a/demo/examples/src/appkit/setup-react.tsx +++ b/demo/examples/src/appkit/setup-react.tsx @@ -10,7 +10,7 @@ // SAMPLE_START: APPKIT_REACT_INIT import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { AppKit, Network, TonConnectConnector } from '@ton/appkit'; +import { AppKit, Network, tonConnect } from '@ton/appkit'; import { AppKitProvider } from '@ton/appkit-react'; import type { FC } from 'react'; @@ -44,7 +44,7 @@ const appKit = new AppKit({ // }, }, connectors: [ - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://tonconnect-sdk-demo-dapp.vercel.app/tonconnect-manifest.json', }, diff --git a/demo/examples/src/appkit/setup.ts b/demo/examples/src/appkit/setup.ts index 83a09f1d8..7c9591e9f 100644 --- a/demo/examples/src/appkit/setup.ts +++ b/demo/examples/src/appkit/setup.ts @@ -6,8 +6,7 @@ * */ -import { AppKit, Network } from '@ton/appkit'; -import { TonConnectConnector } from '@ton/appkit'; +import { AppKit, Network, tonConnect } from '@ton/appkit'; export const setupAppKitExample = () => { // SAMPLE_START: APPKIT_INIT @@ -29,7 +28,7 @@ export const setupAppKitExample = () => { // }, }, connectors: [ - new TonConnectConnector({ + tonConnect({ tonConnectOptions: { manifestUrl: 'https://tonconnect-sdk-demo-dapp.vercel.app/tonconnect-manifest.json', }, diff --git a/eslint.config.js b/eslint.config.js index f7c969dda..82d28e4e9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -27,12 +27,17 @@ module.exports = [ '**/dist/*', '**/*stryker*/*', '**/*coverage*/*', + '**/.turbo/*', + '**/.next/*', + '**/.cursor/*', + '**/.changeset/*', '**/dist-extension/*', '**/dist-extension-chrome/*', '**/dist-extension-firefox/*', '**/Packages/TONWalletKit/*', '**/TONWalletApp/TONWalletApp/*', '**/androidkit/**', + '**/next-env.d.ts', ], }, { diff --git a/packages/appkit-react/.gitignore b/packages/appkit-react/.gitignore index 37fffde8f..ae13eccde 100644 --- a/packages/appkit-react/.gitignore +++ b/packages/appkit-react/.gitignore @@ -28,4 +28,5 @@ dist-ssr styled-system styled-system-studio +# Typescript tsconfig.tsbuildinfo diff --git a/packages/appkit-react/src/features/network/hooks/use-networks.ts b/packages/appkit-react/src/features/network/hooks/use-networks.ts index 47d3084d2..b91d5e796 100644 --- a/packages/appkit-react/src/features/network/hooks/use-networks.ts +++ b/packages/appkit-react/src/features/network/hooks/use-networks.ts @@ -31,5 +31,5 @@ export const useNetworks = (): UseNetworksReturnType => { return getNetworks(appKit); }, [appKit]); - return useSyncExternalStore(subscribe, getSnapshot, () => []); + return useSyncExternalStore(subscribe, getSnapshot, getSnapshot); }; diff --git a/packages/appkit-react/src/features/wallets/hooks/use-connected-wallets.ts b/packages/appkit-react/src/features/wallets/hooks/use-connected-wallets.ts index 6f9db71b7..d0edf039e 100644 --- a/packages/appkit-react/src/features/wallets/hooks/use-connected-wallets.ts +++ b/packages/appkit-react/src/features/wallets/hooks/use-connected-wallets.ts @@ -28,5 +28,5 @@ export const useConnectedWallets = (): UseConnectedWalletsReturnType => { return getConnectedWallets(appKit); }, [appKit]); - return useSyncExternalStore(subscribe, getSnapshot, () => []); + return useSyncExternalStore(subscribe, getSnapshot, getSnapshot); }; diff --git a/packages/appkit-react/src/features/wallets/hooks/use-connector-by-id.ts b/packages/appkit-react/src/features/wallets/hooks/use-connector-by-id.ts index 52fafef06..143208573 100644 --- a/packages/appkit-react/src/features/wallets/hooks/use-connector-by-id.ts +++ b/packages/appkit-react/src/features/wallets/hooks/use-connector-by-id.ts @@ -26,5 +26,5 @@ export const useConnectorById = (id: string): Connector | undefined => { return getConnectorById(appKit, { id }); }, [appKit, id]); - return useSyncExternalStore(subscribe, getSnapshot, () => undefined); + return useSyncExternalStore(subscribe, getSnapshot, getSnapshot); }; diff --git a/packages/appkit-react/src/features/wallets/hooks/use-connectors.ts b/packages/appkit-react/src/features/wallets/hooks/use-connectors.ts index 1d6af5eb7..f6553b56c 100644 --- a/packages/appkit-react/src/features/wallets/hooks/use-connectors.ts +++ b/packages/appkit-react/src/features/wallets/hooks/use-connectors.ts @@ -28,5 +28,5 @@ export const useConnectors = (): UseConnectorsReturnType => { return getConnectors(appKit); }, [appKit]); - return useSyncExternalStore(subscribe, getSnapshot, () => []); + return useSyncExternalStore(subscribe, getSnapshot, getSnapshot); }; diff --git a/packages/appkit-react/src/features/wallets/hooks/use-selected-wallet.ts b/packages/appkit-react/src/features/wallets/hooks/use-selected-wallet.ts index f87f89d2d..5963eb4bd 100644 --- a/packages/appkit-react/src/features/wallets/hooks/use-selected-wallet.ts +++ b/packages/appkit-react/src/features/wallets/hooks/use-selected-wallet.ts @@ -31,7 +31,7 @@ export const useSelectedWallet = (): UseSelectedWalletReturnType => { return getSelectedWallet(appKit); }, [appKit]); - const wallet = useSyncExternalStore(subscribe, getSnapshot, () => null); + const wallet = useSyncExternalStore(subscribe, getSnapshot, getSnapshot); const setWalletId = useCallback( (walletId: string | null) => { diff --git a/packages/appkit-react/src/tonconnect/tonconnect-bridge.tsx b/packages/appkit-react/src/tonconnect/tonconnect-bridge.tsx index b38f11b9d..a9f6e6e51 100644 --- a/packages/appkit-react/src/tonconnect/tonconnect-bridge.tsx +++ b/packages/appkit-react/src/tonconnect/tonconnect-bridge.tsx @@ -28,11 +28,14 @@ export const TonConnectBridge: FC = ({ children, connectorId = TONCONNECT_DEFAULT_CONNECTOR_ID, }) => { - const connector = useConnectorById(connectorId) as TonConnectConnector | undefined; - const tonConnectUI = useMemo(() => connector?.tonConnectUI, [connector]); + const connector = useConnectorById(connectorId); + const tonConnectUI = useMemo( + () => (connector && connector.type === 'tonconnect' ? (connector as TonConnectConnector).tonConnectUI : null), + [connector], + ); if (!tonConnectUI) { - return <>{children}; + return children; } return {children}; diff --git a/packages/appkit/src/actions/connectors/add-connector.ts b/packages/appkit/src/actions/connectors/add-connector.ts index 1558282ad..280a250f1 100644 --- a/packages/appkit/src/actions/connectors/add-connector.ts +++ b/packages/appkit/src/actions/connectors/add-connector.ts @@ -7,15 +7,15 @@ */ import type { AppKit } from '../../core/app-kit'; -import type { Connector } from '../../types/connector'; +import type { CreateConnectorFn } from '../../types/connector'; -export type AddConnectorParameters = Connector; +export type AddConnectorParameters = CreateConnectorFn; export type AddConnectorReturnType = () => void; /** * Add a wallet connector */ -export const addConnector = (appKit: AppKit, connector: AddConnectorParameters): AddConnectorReturnType => { - return appKit.addConnector(connector); +export const addConnector = (appKit: AppKit, connectorFn: AddConnectorParameters): AddConnectorReturnType => { + return appKit.addConnector(connectorFn); }; diff --git a/packages/appkit/src/connectors/tonconnect/connectors/ton-connect-connector.ts b/packages/appkit/src/connectors/tonconnect/connectors/ton-connect-connector.ts index bc209101e..8141ddd00 100644 --- a/packages/appkit/src/connectors/tonconnect/connectors/ton-connect-connector.ts +++ b/packages/appkit/src/connectors/tonconnect/connectors/ton-connect-connector.ts @@ -15,6 +15,7 @@ import type { Connector, ConnectorMetadata } from '../../../types/connector'; import type { WalletInterface } from '../../../types/wallet'; import type { AppKitEmitter } from '../../../core/app-kit'; import { TONCONNECT_DEFAULT_CONNECTOR_ID } from '../constants/id'; +import { createConnector } from '../../../types/connector'; export interface TonConnectConnectorConfig { id?: string; @@ -23,77 +24,113 @@ export interface TonConnectConnectorConfig { tonConnectUI?: TonConnectUI; } -export class TonConnectConnector implements Connector { - readonly id: string; - readonly type = 'tonconnect'; - readonly metadata: ConnectorMetadata; - readonly tonConnectUI: TonConnectUI; - - private emitter: AppKitEmitter | null = null; - private unsubscribeTonConnect: (() => void) | null = null; - - constructor(config: TonConnectConnectorConfig) { - if (config.tonConnectOptions && config.tonConnectUI) { - // eslint-disable-next-line no-console - console.warn( - 'TonConnectConnector: both tonConnectOptions and tonConnectUI are provided, using tonConnectUI', - ); - } +export type TonConnectConnector = Connector & { + type: 'tonconnect'; + tonConnectUI: TonConnectUI | null; +}; - this.id = config.id ?? TONCONNECT_DEFAULT_CONNECTOR_ID; - this.tonConnectUI = config?.tonConnectUI ?? new TonConnectUI(config.tonConnectOptions); - this.metadata = { - name: 'TonConnect', - iconUrl: 'https://avatars.githubusercontent.com/u/113980577', - ...config.metadata, - }; - } +export const tonConnect = (config: TonConnectConnectorConfig) => { + return createConnector(({ emitter, ssr }: { emitter: AppKitEmitter; ssr?: boolean }): TonConnectConnector => { + let originalTonConnectUI: TonConnectUI | null = null; + let unsubscribeTonConnect: (() => void) | null = null; + + const id = config.id ?? TONCONNECT_DEFAULT_CONNECTOR_ID; - async initialize(emitter: AppKitEmitter): Promise { - this.emitter = emitter; + function getTonConnectUI() { + if (originalTonConnectUI) { + return originalTonConnectUI; + } - // Subscribe to TonConnect status changes - this.unsubscribeTonConnect = this.tonConnectUI.onStatusChange((wallet) => { - const wallets = this.getConnectedWallets(); + if (ssr && typeof window === 'undefined') { + return null; + } - if (wallet) { - this.emitter?.emit(CONNECTOR_EVENTS.CONNECTED, { wallets, connectorId: this.id }, this.id); + // check if we have pre-defined UI + if (config.tonConnectUI) { + originalTonConnectUI = config.tonConnectUI; } else { - this.emitter?.emit(CONNECTOR_EVENTS.DISCONNECTED, { connectorId: this.id }, this.id); + originalTonConnectUI = new TonConnectUI(config.tonConnectOptions); } - }); - - // Restore existing connection - await this.tonConnectUI.connector.restoreConnection(); - } - - destroy(): void { - this.unsubscribeTonConnect?.(); - this.unsubscribeTonConnect = null; - this.emitter = null; - } - - async connectWallet(): Promise { - await this.tonConnectUI.openModal(); - } - - async disconnectWallet(): Promise { - await this.tonConnectUI.disconnect(); - } - - getConnectedWallets(): WalletInterface[] { - if (this.tonConnectUI.connected && this.tonConnectUI.wallet) { - const wallet = this.tonConnectUI.wallet; - - const walletAdapter = new TonConnectWalletAdapter({ - connectorId: this.id, - tonConnectWallet: wallet, - tonConnectUI: this.tonConnectUI, - }); - return [walletAdapter]; + setupListeners(); + + // restore connection + if (originalTonConnectUI) { + originalTonConnectUI.connector.restoreConnection(); + } + + return originalTonConnectUI; } - return []; - } -} + function getConnectedWallets(): WalletInterface[] { + const ui = getTonConnectUI(); + + if (ui && ui.connected && ui.wallet) { + const wallet = ui.wallet; + + return [ + new TonConnectWalletAdapter({ + connectorId: id, + tonConnectWallet: wallet, + tonConnectUI: ui, + }), + ]; + } + + return []; + } + + function setupListeners() { + if (!originalTonConnectUI || unsubscribeTonConnect) { + return; + } + + unsubscribeTonConnect = originalTonConnectUI.onStatusChange((wallet) => { + const wallets = getConnectedWallets(); + + if (wallet) { + emitter.emit(CONNECTOR_EVENTS.CONNECTED, { wallets, connectorId: id }, id); + } else { + emitter.emit(CONNECTOR_EVENTS.DISCONNECTED, { connectorId: id }, id); + } + }); + } + + return { + id, + type: 'tonconnect', + metadata: { + name: 'TonConnect', + iconUrl: 'https://avatars.githubusercontent.com/u/113980577', + ...config.metadata, + }, + + get tonConnectUI() { + return getTonConnectUI(); + }, + + getConnectedWallets, + + async connectWallet(): Promise { + const ui = getTonConnectUI(); + + if (ui) { + await ui.openModal(); + } + }, + + async disconnectWallet(): Promise { + const ui = getTonConnectUI(); + + if (ui) { + await ui.disconnect(); + } + }, + + destroy() { + unsubscribeTonConnect?.(); + originalTonConnectUI = null; + }, + }; + }); +}; diff --git a/packages/appkit/src/connectors/tonconnect/index.ts b/packages/appkit/src/connectors/tonconnect/index.ts index 37e0d0991..81524eeb8 100644 --- a/packages/appkit/src/connectors/tonconnect/index.ts +++ b/packages/appkit/src/connectors/tonconnect/index.ts @@ -26,6 +26,9 @@ export { TonConnectWalletAdapter } from './adapters/ton-connect-wallet-adapter'; export type { TonConnectWalletAdapterConfig } from './adapters/ton-connect-wallet-adapter'; // Connector exports -export { TonConnectConnector } from './connectors/ton-connect-connector'; +export { + tonConnect, + type TonConnectConnectorConfig, + type TonConnectConnector, +} from './connectors/ton-connect-connector'; export { TONCONNECT_DEFAULT_CONNECTOR_ID } from './constants/id'; -export type { TonConnectConnectorConfig } from './connectors/ton-connect-connector'; diff --git a/packages/appkit/src/core/app-kit/services/app-kit.ts b/packages/appkit/src/core/app-kit/services/app-kit.ts index 93ec8a986..38901fff9 100644 --- a/packages/appkit/src/core/app-kit/services/app-kit.ts +++ b/packages/appkit/src/core/app-kit/services/app-kit.ts @@ -11,7 +11,7 @@ import { Network, SwapManager } from '@ton/walletkit'; import type { Provider } from 'src/types/provider'; import type { AppKitConfig } from '../types/config'; -import type { Connector } from '../../../types/connector'; +import type { Connector, CreateConnectorFn } from '../../../types/connector'; import { Emitter } from '../../emitter'; import { CONNECTOR_EVENTS, WALLETS_EVENTS } from '../constants/events'; import type { AppKitEmitter, AppKitEvents } from '../types/events'; @@ -64,7 +64,11 @@ export class AppKit { /** * Add a wallet connector */ - addConnector(connector: Connector): () => void { + /** + * Add a wallet connector + */ + addConnector(createConnectorFn: CreateConnectorFn): () => void { + const connector = createConnectorFn({ emitter: this.emitter, ssr: this.config.ssr }); const id = connector.id; const oldConnector = this.connectors.find((c) => c.id === id); @@ -73,7 +77,6 @@ export class AppKit { } this.connectors.push(connector); - connector.initialize(this.emitter, this.networkManager); return () => { this.removeConnector(connector); diff --git a/packages/appkit/src/core/app-kit/types/config.ts b/packages/appkit/src/core/app-kit/types/config.ts index 75b69617e..2f8e64984 100644 --- a/packages/appkit/src/core/app-kit/types/config.ts +++ b/packages/appkit/src/core/app-kit/types/config.ts @@ -8,7 +8,7 @@ import type { NetworkAdapters } from '@ton/walletkit'; -import type { Connector } from '../../../types/connector'; +import type { CreateConnectorFn } from '../../../types/connector'; import type { Provider } from '../../../types/provider'; /** @@ -23,6 +23,19 @@ export interface AppKitConfig { * Values contain apiClient configuration (url and optional API key) */ networks?: NetworkAdapters; - connectors?: Connector[]; + + /** + * Wallet connectors + */ + connectors?: CreateConnectorFn[]; + + /** + * Wallet providers + */ providers?: Provider[]; + + /** + * Enable server-side rendering support + */ + ssr?: boolean; } diff --git a/packages/appkit/src/types/connector.ts b/packages/appkit/src/types/connector.ts index c5c52921b..87750a223 100644 --- a/packages/appkit/src/types/connector.ts +++ b/packages/appkit/src/types/connector.ts @@ -6,8 +6,6 @@ * */ -import type { NetworkManager } from '@ton/walletkit'; - import type { WalletInterface } from './wallet'; import type { AppKitEmitter } from '../core/app-kit'; @@ -18,14 +16,11 @@ export interface Connector { /** Provider unique identifier */ readonly id: string; - /** Protocol type (e.g. 'tonconnect', 'ledger', 'mnemonic') */ + /** Protocol type (e.g. 'tonconnect') */ readonly type: string; readonly metadata: ConnectorMetadata; - /** Initialize connector (restore connections, setup event listeners) */ - initialize(emitter: AppKitEmitter, networkManager: NetworkManager): Promise; - /** Cleanup connector resources */ destroy(): void; @@ -43,3 +38,9 @@ export interface ConnectorMetadata { name: string; iconUrl?: string; } + +export type CreateConnectorFn = (config: { emitter: AppKitEmitter; ssr?: boolean }) => Connector; + +export function createConnector(createConnectorFn: CreateConnectorFn): CreateConnectorFn { + return createConnectorFn; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c03e44df7..60ad59979 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -59,10 +59,10 @@ importers: devDependencies: '@changesets/cli': specifier: ^2.29.8 - version: 2.29.8(@types/node@24.10.13) + version: 2.29.8(@types/node@25.2.3) '@ton/toolchain': specifier: github:the-ton-tech/toolchain#v1.5.0 - version: https://codeload.github.com/the-ton-tech/toolchain/tar.gz/31376da778155bd0984d68abf2a46dce417bacb8(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(jiti@2.6.1)(typescript@5.9.3) + version: https://codeload.github.com/the-ton-tech/toolchain/tar.gz/31376da778155bd0984d68abf2a46dce417bacb8(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(jiti@2.6.1)(typescript@5.9.3) eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) @@ -89,7 +89,7 @@ importers: version: 0.7.8 '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@ton/appkit': specifier: workspace:* version: link:../../packages/appkit @@ -159,7 +159,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) eslint: specifier: ^9.39.2 version: 9.39.2(jiti@2.6.1) @@ -180,11 +180,66 @@ importers: version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) vite-bundle-analyzer: specifier: ^1.3.2 version: 1.3.2 + apps/appkit-next: + dependencies: + '@tanstack/react-query': + specifier: 'catalog:' + version: 5.90.20(react@19.2.3) + '@ton/appkit': + specifier: workspace:* + version: link:../../packages/appkit + '@ton/appkit-react': + specifier: workspace:* + version: link:../../packages/appkit-react + '@ton/core': + specifier: 'catalog:' + version: 0.63.0(@ton/crypto@3.3.0) + '@ton/crypto': + specifier: 'catalog:' + version: 3.3.0 + '@ton/walletkit': + specifier: workspace:* + version: link:../../packages/walletkit + '@tonconnect/sdk': + specifier: 'catalog:' + version: 3.4.1 + '@tonconnect/ui': + specifier: 'catalog:' + version: 2.4.1 + next: + specifier: 16.1.6 + version: 16.1.6(@babel/core@7.29.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + react: + specifier: 'catalog:' + version: 19.2.3 + react-dom: + specifier: 'catalog:' + version: 19.2.3(react@19.2.3) + devDependencies: + '@tailwindcss/postcss': + specifier: ^4 + version: 4.1.18 + '@types/node': + specifier: ^25.2.3 + version: 25.2.3 + '@types/react': + specifier: 'catalog:' + version: 19.2.8 + '@types/react-dom': + specifier: 'catalog:' + version: 19.2.3(@types/react@19.2.8) + tailwindcss: + specifier: ^4 + version: 4.1.18 + typescript: + specifier: ^5.9.3 + version: 5.9.3 + apps/demo-wallet: dependencies: '@demo/v4ledger-adapter': @@ -201,7 +256,7 @@ importers: version: 6.30.0 '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@ton/core': specifier: 'catalog:' version: 0.63.0(@ton/crypto@3.3.0) @@ -213,7 +268,7 @@ importers: version: link:../../packages/walletkit '@truecarry/vite-plugin-web-extension': specifier: ^4.5.1 - version: 4.5.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0) + version: 4.5.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0) '@truecarry/webext-bridge': specifier: ^6.0.2 version: 6.0.2 @@ -286,7 +341,7 @@ importers: version: 0.12.4 '@vitejs/plugin-react': specifier: ^5.1.2 - version: 5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) allure-js-commons: specifier: ^3.4.5 version: 3.4.5(allure-playwright@3.4.5(@playwright/test@1.58.2)) @@ -319,7 +374,7 @@ importers: version: 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) vite-bundle-analyzer: specifier: ^1.3.2 version: 1.3.2 @@ -586,7 +641,7 @@ importers: version: 20.6.1 vitest: specifier: ^4.0.17 - version: 4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) demo/v4ledger-adapter: dependencies: @@ -676,7 +731,7 @@ importers: version: 5.8.3 vitest: specifier: ^4.0.17 - version: 4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) packages/appkit-react: dependencies: @@ -698,13 +753,13 @@ importers: devDependencies: '@storybook/addon-docs': specifier: 10.2.8 - version: 10.2.8(@types/react@19.2.8)(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 10.2.8(@types/react@19.2.8)(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@storybook/react': specifier: 10.2.8 version: 10.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3) '@storybook/react-vite': specifier: 10.2.8 - version: 10.2.8(esbuild@0.27.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 10.2.8(esbuild@0.27.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@storybook/test': specifier: ^8.6.15 version: 8.6.15(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)) @@ -737,10 +792,10 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) vite-plugin-node-polyfills: specifier: ^0.25.0 - version: 0.25.0(rollup@4.57.1)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 0.25.0(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) packages/mcp: dependencies: @@ -802,7 +857,7 @@ importers: version: 30.2.0 '@stryker-mutator/core': specifier: ^9.4.0 - version: 9.5.1(@types/node@24.10.13) + version: 9.5.1(@types/node@25.2.3) '@ton/core': specifier: 'catalog:' version: 0.63.0(@ton/crypto@3.3.0) @@ -835,7 +890,7 @@ importers: version: 9.39.2(jiti@2.6.1) jest: specifier: ^30.2.0 - version: 30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + version: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) node-hid: specifier: ^3.2.0 version: 3.2.0 @@ -847,13 +902,13 @@ importers: version: 13.2.16(magicast@0.5.1) ts-jest: specifier: ^29.4.6 - version: 29.4.6(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.3)(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.4.6(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.3)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3) ts-json-schema-generator: specifier: ^2.4.0 version: 2.4.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@types/node@24.10.13)(typescript@5.9.3) + version: 10.9.2(@types/node@25.2.3)(typescript@5.9.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -862,13 +917,13 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) vite-bundle-analyzer: specifier: ^1.3.2 version: 1.3.2 vitest: specifier: ^4.0.17 - version: 4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: '@ston-fi/omniston-sdk': specifier: ^0.7.8 @@ -897,7 +952,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) packages/walletkit-ios-bridge: dependencies: @@ -928,7 +983,7 @@ importers: version: 5.9.3 vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + version: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) packages: @@ -946,6 +1001,10 @@ packages: '@adobe/css-tools@4.4.4': resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + '@anthropic-ai/sdk@0.52.0': resolution: {integrity: sha512-d4c+fg+xy9e46c8+YnrrgIQR45CZlAi7PwdzIfDXDM6ACxEZli1/fxhURsq30ZpMZy6LvSkr41jGq5aF5TD7rQ==} hasBin: true @@ -2023,6 +2082,143 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [darwin] + + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} + cpu: [arm64] + os: [darwin] + + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} + cpu: [x64] + os: [darwin] + + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} + cpu: [arm] + os: [linux] + + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} + cpu: [s390x] + os: [linux] + + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} + cpu: [x64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} + cpu: [arm64] + os: [linux] + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} + cpu: [x64] + os: [linux] + + '@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] + + '@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] + + '@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] + + '@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] + + '@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] + + '@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] + + '@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] + + '@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] + + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [wasm32] + + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ia32] + os: [win32] + + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [x64] + os: [win32] + '@inquirer/ansi@2.0.3': resolution: {integrity: sha512-g44zhR3NIKVs0zUesa4iMzExmZpLUdTLRMCStqX3GE5NT6VkPcxQGJ+uC8tDgBUC/vB1rUhUd55cOf++4NZcmw==} engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} @@ -2398,6 +2594,57 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@next/env@16.1.6': + resolution: {integrity: sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==} + + '@next/swc-darwin-arm64@16.1.6': + resolution: {integrity: sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@next/swc-darwin-x64@16.1.6': + resolution: {integrity: sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@next/swc-linux-arm64-gnu@16.1.6': + resolution: {integrity: sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-arm64-musl@16.1.6': + resolution: {integrity: sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@next/swc-linux-x64-gnu@16.1.6': + resolution: {integrity: sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-linux-x64-musl@16.1.6': + resolution: {integrity: sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@next/swc-win32-arm64-msvc@16.1.6': + resolution: {integrity: sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@next/swc-win32-x64-msvc@16.1.6': + resolution: {integrity: sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + '@noble/curves@1.9.7': resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} engines: {node: ^14.21.3 || >=16} @@ -3616,6 +3863,9 @@ packages: '@stryker-mutator/util@9.5.1': resolution: {integrity: sha512-KXmbEeXF3Z20P+9W8i/f1j+U5nWSm9oeb1VNV6j5/RfzhnMKWZCrvojJqRfnxdkCiMIFWMAHSlM9K0mfFZLNXQ==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} + '@tailwindcss/node@4.1.18': resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} @@ -3701,6 +3951,9 @@ packages: resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} engines: {node: '>= 10'} + '@tailwindcss/postcss@4.1.18': + resolution: {integrity: sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==} + '@tailwindcss/vite@4.1.18': resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} peerDependencies: @@ -3914,8 +4167,8 @@ packages: '@types/node@22.19.11': resolution: {integrity: sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==} - '@types/node@24.10.13': - resolution: {integrity: sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg==} + '@types/node@25.2.3': + resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} @@ -7452,6 +7705,27 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + next@16.1.6: + resolution: {integrity: sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==} + engines: {node: '>=20.9.0'} + hasBin: true + peerDependencies: + '@opentelemetry/api': ^1.1.0 + '@playwright/test': ^1.51.1 + babel-plugin-react-compiler: '*' + react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0 + sass: ^1.3.0 + peerDependenciesMeta: + '@opentelemetry/api': + optional: true + '@playwright/test': + optional: true + babel-plugin-react-compiler: + optional: true + sass: + optional: true + node-abi@3.77.0: resolution: {integrity: sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==} engines: {node: '>=10'} @@ -7871,6 +8145,10 @@ packages: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.4.49: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} @@ -8606,6 +8884,10 @@ packages: shallowequal@1.1.0: resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -8895,6 +9177,19 @@ packages: stubborn-utils@1.0.2: resolution: {integrity: sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==} + styled-jsx@5.1.6: + resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + sucrase@3.35.1: resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} engines: {node: '>=16 || 14 >=14.17'} @@ -9954,6 +10249,8 @@ snapshots: '@adobe/css-tools@4.4.4': {} + '@alloc/quick-lru@5.2.0': {} + '@anthropic-ai/sdk@0.52.0': {} '@asamuzakjp/css-color@4.1.2': @@ -10761,7 +11058,7 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/cli@2.29.8(@types/node@24.10.13)': + '@changesets/cli@2.29.8(@types/node@25.2.3)': dependencies: '@changesets/apply-release-plan': 7.0.14 '@changesets/assemble-release-plan': 6.0.9 @@ -10777,7 +11074,7 @@ snapshots: '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 - '@inquirer/external-editor': 1.0.3(@types/node@24.10.13) + '@inquirer/external-editor': 1.0.3(@types/node@25.2.3) '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 ci-info: 3.9.0 @@ -11437,131 +11734,228 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} + '@img/colour@1.0.0': + optional: true + + '@img/sharp-darwin-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.2.4 + optional: true + + '@img/sharp-darwin-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.2.4 + optional: true + + '@img/sharp-libvips-darwin-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-darwin-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-arm@1.2.4': + optional: true + + '@img/sharp-libvips-linux-ppc64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-riscv64@1.2.4': + optional: true + + '@img/sharp-libvips-linux-s390x@1.2.4': + optional: true + + '@img/sharp-libvips-linux-x64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.2.4 + optional: true + + '@img/sharp-linux-arm@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.2.4 + optional: true + + '@img/sharp-linux-ppc64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.2.4 + optional: true + + '@img/sharp-linux-riscv64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.2.4 + optional: true + + '@img/sharp-linux-s390x@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.2.4 + optional: true + + '@img/sharp-linux-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': + dependencies: + '@emnapi/runtime': 1.8.1 + optional: true + + '@img/sharp-win32-arm64@0.34.5': + optional: true + + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': + optional: true + '@inquirer/ansi@2.0.3': {} - '@inquirer/checkbox@5.0.4(@types/node@24.10.13)': + '@inquirer/checkbox@5.0.4(@types/node@25.2.3)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/confirm@6.0.4(@types/node@24.10.13)': + '@inquirer/confirm@6.0.4(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/core@11.1.1(@types/node@24.10.13)': + '@inquirer/core@11.1.1(@types/node@25.2.3)': dependencies: '@inquirer/ansi': 2.0.3 '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/type': 4.0.3(@types/node@25.2.3) cli-width: 4.1.0 mute-stream: 3.0.0 signal-exit: 4.1.0 wrap-ansi: 9.0.2 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/editor@5.0.4(@types/node@24.10.13)': + '@inquirer/editor@5.0.4(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/external-editor': 2.0.3(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/external-editor': 2.0.3(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/expand@5.0.4(@types/node@24.10.13)': + '@inquirer/expand@5.0.4(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/external-editor@1.0.3(@types/node@24.10.13)': + '@inquirer/external-editor@1.0.3(@types/node@25.2.3)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/external-editor@2.0.3(@types/node@24.10.13)': + '@inquirer/external-editor@2.0.3(@types/node@25.2.3)': dependencies: chardet: 2.1.1 iconv-lite: 0.7.2 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 '@inquirer/figures@2.0.3': {} - '@inquirer/input@5.0.4(@types/node@24.10.13)': + '@inquirer/input@5.0.4(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/number@4.0.4(@types/node@24.10.13)': + '@inquirer/number@4.0.4(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/password@5.0.4(@types/node@24.10.13)': + '@inquirer/password@5.0.4(@types/node@25.2.3)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 - - '@inquirer/prompts@8.2.0(@types/node@24.10.13)': - dependencies: - '@inquirer/checkbox': 5.0.4(@types/node@24.10.13) - '@inquirer/confirm': 6.0.4(@types/node@24.10.13) - '@inquirer/editor': 5.0.4(@types/node@24.10.13) - '@inquirer/expand': 5.0.4(@types/node@24.10.13) - '@inquirer/input': 5.0.4(@types/node@24.10.13) - '@inquirer/number': 4.0.4(@types/node@24.10.13) - '@inquirer/password': 5.0.4(@types/node@24.10.13) - '@inquirer/rawlist': 5.2.0(@types/node@24.10.13) - '@inquirer/search': 4.1.0(@types/node@24.10.13) - '@inquirer/select': 5.0.4(@types/node@24.10.13) + '@types/node': 25.2.3 + + '@inquirer/prompts@8.2.0(@types/node@25.2.3)': + dependencies: + '@inquirer/checkbox': 5.0.4(@types/node@25.2.3) + '@inquirer/confirm': 6.0.4(@types/node@25.2.3) + '@inquirer/editor': 5.0.4(@types/node@25.2.3) + '@inquirer/expand': 5.0.4(@types/node@25.2.3) + '@inquirer/input': 5.0.4(@types/node@25.2.3) + '@inquirer/number': 4.0.4(@types/node@25.2.3) + '@inquirer/password': 5.0.4(@types/node@25.2.3) + '@inquirer/rawlist': 5.2.0(@types/node@25.2.3) + '@inquirer/search': 4.1.0(@types/node@25.2.3) + '@inquirer/select': 5.0.4(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/rawlist@5.2.0(@types/node@24.10.13)': + '@inquirer/rawlist@5.2.0(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/search@4.1.0(@types/node@24.10.13)': + '@inquirer/search@4.1.0(@types/node@25.2.3)': dependencies: - '@inquirer/core': 11.1.1(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/select@5.0.4(@types/node@24.10.13)': + '@inquirer/select@5.0.4(@types/node@25.2.3)': dependencies: '@inquirer/ansi': 2.0.3 - '@inquirer/core': 11.1.1(@types/node@24.10.13) + '@inquirer/core': 11.1.1(@types/node@25.2.3) '@inquirer/figures': 2.0.3 - '@inquirer/type': 4.0.3(@types/node@24.10.13) + '@inquirer/type': 4.0.3(@types/node@25.2.3) optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 - '@inquirer/type@4.0.3(@types/node@24.10.13)': + '@inquirer/type@4.0.3(@types/node@25.2.3)': optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 '@isaacs/balanced-match@4.0.1': {} @@ -11597,13 +11991,13 @@ snapshots: '@jest/console@30.2.0': dependencies: '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 jest-message-util: 30.2.0 jest-util: 30.2.0 slash: 3.0.0 - '@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3))': + '@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3))': dependencies: '@jest/console': 30.2.0 '@jest/pattern': 30.0.1 @@ -11611,14 +12005,14 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 4.3.1 exit-x: 0.2.2 graceful-fs: 4.2.11 jest-changed-files: 30.2.0 - jest-config: 30.2.0(@types/node@22.19.11)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) jest-haste-map: 30.2.0 jest-message-util: 30.2.0 jest-regex-util: 30.0.1 @@ -11651,14 +12045,14 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-mock: 29.7.0 '@jest/environment@30.2.0': dependencies: '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-mock: 30.2.0 '@jest/expect-utils@30.2.0': @@ -11676,7 +12070,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -11685,7 +12079,7 @@ snapshots: dependencies: '@jest/types': 30.2.0 '@sinonjs/fake-timers': 13.0.5 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-message-util: 30.2.0 jest-mock: 30.2.0 jest-util: 30.2.0 @@ -11703,7 +12097,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-regex-util: 30.0.1 '@jest/reporters@30.2.0(node-notifier@10.0.1)': @@ -11714,7 +12108,7 @@ snapshots: '@jest/transform': 30.2.0 '@jest/types': 30.2.0 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit-x: 0.2.2 @@ -11816,7 +12210,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@types/yargs': 17.0.34 chalk: 4.1.2 @@ -11826,15 +12220,15 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@types/yargs': 17.0.34 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: glob: 13.0.2 react-docgen-typescript: 2.4.0(typescript@5.9.3) - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) optionalDependencies: typescript: 5.9.3 @@ -12009,6 +12403,32 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@next/env@16.1.6': {} + + '@next/swc-darwin-arm64@16.1.6': + optional: true + + '@next/swc-darwin-x64@16.1.6': + optional: true + + '@next/swc-linux-arm64-gnu@16.1.6': + optional: true + + '@next/swc-linux-arm64-musl@16.1.6': + optional: true + + '@next/swc-linux-x64-gnu@16.1.6': + optional: true + + '@next/swc-linux-x64-musl@16.1.6': + optional: true + + '@next/swc-win32-arm64-msvc@16.1.6': + optional: true + + '@next/swc-win32-x64-msvc@16.1.6': + optional: true + '@noble/curves@1.9.7': dependencies: '@noble/hashes': 1.8.0 @@ -13365,10 +13785,10 @@ snapshots: - bufferutil - utf-8-validate - '@storybook/addon-docs@10.2.8(@types/react@19.2.8)(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@storybook/addon-docs@10.2.8(@types/react@19.2.8)(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.8)(react@19.2.3) - '@storybook/csf-plugin': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + '@storybook/csf-plugin': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@storybook/icons': 2.0.1(react-dom@19.2.4(react@19.2.3))(react@19.2.3) '@storybook/react-dom-shim': 10.2.8(react-dom@19.2.4(react@19.2.3))(react@19.2.3)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)) react: 19.2.3 @@ -13382,25 +13802,25 @@ snapshots: - vite - webpack - '@storybook/builder-vite@10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@storybook/builder-vite@10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@storybook/csf-plugin': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + '@storybook/csf-plugin': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) storybook: 10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - esbuild - rollup - webpack - '@storybook/csf-plugin@10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@storybook/csf-plugin@10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: storybook: 10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) unplugin: 2.3.11 optionalDependencies: esbuild: 0.27.3 rollup: 4.57.1 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) '@storybook/global@5.0.0': {} @@ -13432,11 +13852,11 @@ snapshots: react-dom: 19.2.4(react@19.2.3) storybook: 10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@storybook/react-vite@10.2.8(esbuild@0.27.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@storybook/react-vite@10.2.8(esbuild@0.27.3)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.4(typescript@5.9.3)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@rollup/pluginutils': 5.3.0(rollup@4.57.1) - '@storybook/builder-vite': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + '@storybook/builder-vite': 10.2.8(esbuild@0.27.3)(rollup@4.57.1)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@storybook/react': 10.2.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(storybook@10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(typescript@5.9.3) empathic: 2.0.0 magic-string: 0.30.21 @@ -13446,7 +13866,7 @@ snapshots: resolve: 1.22.11 storybook: 10.2.8(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) tsconfig-paths: 4.2.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - esbuild - rollup @@ -13485,9 +13905,9 @@ snapshots: tslib: 2.8.1 typed-inject: 5.0.0 - '@stryker-mutator/core@9.5.1(@types/node@24.10.13)': + '@stryker-mutator/core@9.5.1(@types/node@25.2.3)': dependencies: - '@inquirer/prompts': 8.2.0(@types/node@24.10.13) + '@inquirer/prompts': 8.2.0(@types/node@25.2.3) '@stryker-mutator/api': 9.5.1 '@stryker-mutator/instrumenter': 9.5.1 '@stryker-mutator/util': 9.5.1 @@ -13536,6 +13956,10 @@ snapshots: '@stryker-mutator/util@9.5.1': {} + '@swc/helpers@0.5.15': + dependencies: + tslib: 2.8.1 + '@tailwindcss/node@4.1.18': dependencies: '@jridgewell/remapping': 2.3.5 @@ -13597,12 +14021,20 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@tailwindcss/postcss@4.1.18': + dependencies: + '@alloc/quick-lru': 5.2.0 + '@tailwindcss/node': 4.1.18 + '@tailwindcss/oxide': 4.1.18 + postcss: 8.5.6 + tailwindcss: 4.1.18 + + '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) '@tanstack/query-core@5.90.20': {} @@ -13703,14 +14135,14 @@ snapshots: transitivePeerDependencies: - debug - '@ton/toolchain@https://codeload.github.com/the-ton-tech/toolchain/tar.gz/31376da778155bd0984d68abf2a46dce417bacb8(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(jiti@2.6.1)(typescript@5.9.3)': + '@ton/toolchain@https://codeload.github.com/the-ton-tech/toolchain/tar.gz/31376da778155bd0984d68abf2a46dce417bacb8(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(jiti@2.6.1)(typescript@5.9.3)': dependencies: '@eslint/js': 9.39.2 '@typescript-eslint/eslint-plugin': 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': 8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-jest: 28.14.0(@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(typescript@5.9.3) + eslint-plugin-jest: 28.14.0(@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(typescript@5.9.3) eslint-plugin-prettier: 5.5.4(eslint@9.39.2(jiti@2.6.1))(prettier@3.6.2) globals: 16.5.0 prettier: 3.6.2 @@ -13783,7 +14215,7 @@ snapshots: transitivePeerDependencies: - encoding - '@truecarry/vite-plugin-web-extension@4.5.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)': + '@truecarry/vite-plugin-web-extension@4.5.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)': dependencies: ajv: 8.17.1 async-lock: 1.4.1 @@ -13793,7 +14225,7 @@ snapshots: lodash.uniq: 4.5.0 lodash.uniqby: 4.7.0 md5: 2.3.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) web-ext-option-types: 8.3.1 web-ext-run: 0.2.4 webextension-polyfill: 0.10.0 @@ -13883,7 +14315,7 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@types/hammerjs@2.0.46': {} @@ -13920,7 +14352,7 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@24.10.13': + '@types/node@25.2.3': dependencies: undici-types: 7.16.0 @@ -13963,7 +14395,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@types/yargs-parser@21.0.3': {} @@ -14228,7 +14660,7 @@ snapshots: '@urql/core': 5.2.0 wonka: 6.3.5 - '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitejs/plugin-react@5.1.4(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -14236,7 +14668,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -14252,7 +14684,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/expect@2.0.5': dependencies: @@ -14286,13 +14718,13 @@ snapshots: optionalDependencies: vite: 7.3.1(@types/node@22.19.11)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) - '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': + '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@vitest/spy': 4.0.18 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/pretty-format@2.0.5': dependencies: @@ -14344,7 +14776,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vitest: 4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) '@vitest/utils@2.0.5': dependencies: @@ -15048,7 +15480,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -15057,7 +15489,7 @@ snapshots: chrome-launcher@1.2.0: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 2.0.2 @@ -15066,7 +15498,7 @@ snapshots: chromium-edge-launcher@0.2.0: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -15794,13 +16226,13 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(typescript@5.9.3): + eslint-plugin-jest@28.14.0(@typescript-eslint/eslint-plugin@8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1))(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.40.0(@typescript-eslint/parser@8.40.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - jest: 30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + jest: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) transitivePeerDependencies: - supports-color - typescript @@ -16580,7 +17012,7 @@ snapshots: happy-dom@20.6.1: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@types/whatwg-mimetype': 3.0.2 '@types/ws': 8.18.1 entities: 6.0.1 @@ -17043,7 +17475,7 @@ snapshots: '@jest/expect': 30.2.0 '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 co: 4.6.0 dedent: 1.7.0 @@ -17063,15 +17495,15 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): + jest-cli@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 chalk: 4.1.2 exit-x: 0.2.2 import-local: 3.2.0 - jest-config: 30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + jest-config: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) jest-util: 30.2.0 jest-validate: 30.2.0 yargs: 17.7.2 @@ -17084,7 +17516,7 @@ snapshots: - supports-color - ts-node - jest-config@30.2.0(@types/node@22.19.11)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): + jest-config@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)): dependencies: '@babel/core': 7.29.0 '@jest/get-type': 30.1.0 @@ -17111,43 +17543,9 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 esbuild-register: 3.6.0(esbuild@0.27.3) - ts-node: 10.9.2(@types/node@24.10.13)(typescript@5.9.3) - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-config@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): - dependencies: - '@babel/core': 7.29.0 - '@jest/get-type': 30.1.0 - '@jest/pattern': 30.0.1 - '@jest/test-sequencer': 30.2.0 - '@jest/types': 30.2.0 - babel-jest: 30.2.0(@babel/core@7.29.0) - chalk: 4.1.2 - ci-info: 4.3.1 - deepmerge: 4.3.1 - glob: 10.5.0 - graceful-fs: 4.2.11 - jest-circus: 30.2.0 - jest-docblock: 30.2.0 - jest-environment-node: 30.2.0 - jest-regex-util: 30.0.1 - jest-resolve: 30.2.0 - jest-runner: 30.2.0 - jest-util: 30.2.0 - jest-validate: 30.2.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 30.2.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 24.10.13 - esbuild-register: 3.6.0(esbuild@0.27.3) - ts-node: 10.9.2(@types/node@24.10.13)(typescript@5.9.3) + ts-node: 10.9.2(@types/node@25.2.3)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -17176,7 +17574,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -17185,7 +17583,7 @@ snapshots: '@jest/environment': 30.2.0 '@jest/fake-timers': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-mock: 30.2.0 jest-util: 30.2.0 jest-validate: 30.2.0 @@ -17196,7 +17594,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.19.11 + '@types/node': 25.2.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -17211,7 +17609,7 @@ snapshots: jest-haste-map@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -17262,13 +17660,13 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-util: 29.7.0 jest-mock@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-util: 30.2.0 jest-pnp-resolver@1.2.3(jest-resolve@30.2.0): @@ -17304,7 +17702,7 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 emittery: 0.13.1 exit-x: 0.2.2 @@ -17333,7 +17731,7 @@ snapshots: '@jest/test-result': 30.2.0 '@jest/transform': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 cjs-module-lexer: 2.1.1 collect-v8-coverage: 1.0.3 @@ -17380,7 +17778,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -17389,7 +17787,7 @@ snapshots: jest-util@30.2.0: dependencies: '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 chalk: 4.1.2 ci-info: 4.3.1 graceful-fs: 4.2.11 @@ -17417,7 +17815,7 @@ snapshots: dependencies: '@jest/test-result': 30.2.0 '@jest/types': 30.2.0 - '@types/node': 22.19.11 + '@types/node': 25.2.3 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -17426,25 +17824,25 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@30.2.0: dependencies: - '@types/node': 22.19.11 + '@types/node': 25.2.3 '@ungap/structured-clone': 1.3.0 jest-util: 30.2.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)): + jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)): dependencies: - '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + '@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) '@jest/types': 30.2.0 import-local: 3.2.0 - jest-cli: 30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + jest-cli: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) optionalDependencies: node-notifier: 10.0.1 transitivePeerDependencies: @@ -18104,6 +18502,32 @@ snapshots: react: 19.2.3 react-dom: 19.2.3(react@19.2.3) + next@16.1.6(@babel/core@7.29.0)(@playwright/test@1.58.2)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + '@next/env': 16.1.6 + '@swc/helpers': 0.5.15 + baseline-browser-mapping: 2.9.19 + caniuse-lite: 1.0.30001767 + postcss: 8.4.31 + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.3) + optionalDependencies: + '@next/swc-darwin-arm64': 16.1.6 + '@next/swc-darwin-x64': 16.1.6 + '@next/swc-linux-arm64-gnu': 16.1.6 + '@next/swc-linux-arm64-musl': 16.1.6 + '@next/swc-linux-x64-gnu': 16.1.6 + '@next/swc-linux-x64-musl': 16.1.6 + '@next/swc-win32-arm64-msvc': 16.1.6 + '@next/swc-win32-x64-msvc': 16.1.6 + '@playwright/test': 1.58.2 + babel-plugin-react-compiler: 1.0.0 + sharp: 0.34.5 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + node-abi@3.77.0: dependencies: semver: 7.7.3 @@ -18569,6 +18993,12 @@ snapshots: possible-typed-array-names@1.1.0: {} + postcss@8.4.31: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + postcss@8.4.49: dependencies: nanoid: 3.3.11 @@ -19544,6 +19974,38 @@ snapshots: shallowequal@1.1.0: {} + sharp@0.34.5: + dependencies: + '@img/colour': 1.0.0 + detect-libc: 2.1.2 + semver: 7.7.3 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 + optional: true + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -19853,6 +20315,13 @@ snapshots: stubborn-utils@1.0.2: {} + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.3): + dependencies: + client-only: 0.0.1 + react: 19.2.3 + optionalDependencies: + '@babel/core': 7.29.0 + sucrase@3.35.1: dependencies: '@jridgewell/gen-mapping': 0.3.13 @@ -20101,12 +20570,12 @@ snapshots: ts-interface-checker@0.1.13: {} - ts-jest@29.4.6(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.3)(jest-util@30.2.0)(jest@30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.6(@babel/core@7.29.0)(@jest/transform@30.2.0)(@jest/types@30.2.0)(babel-jest@30.2.0(@babel/core@7.29.0))(esbuild@0.27.3)(jest-util@30.2.0)(jest@30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 30.2.0(@types/node@24.10.13)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3)) + jest: 30.2.0(@types/node@25.2.3)(esbuild-register@3.6.0(esbuild@0.27.3))(node-notifier@10.0.1)(ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -20133,14 +20602,14 @@ snapshots: tslib: 2.8.1 typescript: 5.9.3 - ts-node@10.9.2(@types/node@24.10.13)(typescript@5.9.3): + ts-node@10.9.2(@types/node@25.2.3)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 24.10.13 + '@types/node': 25.2.3 acorn: 8.15.0 acorn-walk: 8.3.4 arg: 4.1.3 @@ -20502,11 +20971,11 @@ snapshots: vite-bundle-analyzer@1.3.2: {} - vite-plugin-node-polyfills@0.25.0(rollup@4.57.1)(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)): + vite-plugin-node-polyfills@0.25.0(rollup@4.57.1)(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.57.1) node-stdlib-browser: 1.3.1 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - rollup @@ -20527,7 +20996,7 @@ snapshots: tsx: 4.21.0 yaml: 2.8.1 - vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1): + vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.3) @@ -20536,7 +21005,7 @@ snapshots: rollup: 4.57.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.31.1 @@ -20584,10 +21053,10 @@ snapshots: - tsx - yaml - vitest@4.0.18(@types/node@24.10.13)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1): + vitest@4.0.18(@types/node@25.2.3)(@vitest/ui@4.0.18)(happy-dom@20.6.1)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1): dependencies: '@vitest/expect': 4.0.18 - '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) + '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1)) '@vitest/pretty-format': 4.0.18 '@vitest/runner': 4.0.18 '@vitest/snapshot': 4.0.18 @@ -20604,10 +21073,10 @@ snapshots: tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@24.10.13)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) + vite: 7.3.1(@types/node@25.2.3)(jiti@2.6.1)(lightningcss@1.31.1)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 24.10.13 + '@types/node': 25.2.3 '@vitest/ui': 4.0.18(vitest@4.0.18) happy-dom: 20.6.1 jsdom: 28.0.0(@noble/hashes@2.0.1)