diff --git a/apps/client-web/components.json b/apps/client-web/components.json new file mode 100644 index 0000000..5e8cc89 --- /dev/null +++ b/apps/client-web/components.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "default", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.js", + "css": "src/index.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + } +} diff --git a/apps/client-web/index.html b/apps/client-web/index.html index 1f85e1a..7c5ace0 100644 --- a/apps/client-web/index.html +++ b/apps/client-web/index.html @@ -5,7 +5,7 @@
diff --git a/examples/test-app/src/apis/PODSection.tsx b/examples/test-app/src/apis/PODSection.tsx index 30acd88..7d339fa 100644 --- a/examples/test-app/src/apis/PODSection.tsx +++ b/examples/test-app/src/apis/PODSection.tsx @@ -33,7 +33,7 @@ export function PODSection(): ReactNode { } function QueryPODs({ z }: { z: ParcnetAPI }): ReactNode { - const [pods, setPODs] = useState([]); + const [pods, setPODs] = useState (undefined); return ( @@ -79,7 +79,7 @@ const pods = await z.pod.query(q); }} label="Query PODs" /> - {pods.length > 0 && ( + {pods !== undefined && ({JSONBig.stringify( pods.map((p) => ({ diff --git a/examples/test-app/src/hooks/useParcnetClient.tsx b/examples/test-app/src/hooks/useParcnetClient.tsx index c79cdc0..18b1214 100644 --- a/examples/test-app/src/hooks/useParcnetClient.tsx +++ b/examples/test-app/src/hooks/useParcnetClient.tsx @@ -1,5 +1,6 @@ import type { ParcnetAPI, Zapp } from "@parcnet-js/app-connector"; -import { connect } from "@parcnet-js/app-connector"; +import { connect, connectToHost } from "@parcnet-js/app-connector"; +import { isHosted } from "@parcnet-js/app-connector/src/adapters/hosted"; import type { ReactNode } from "react"; import { createContext, useContext, useEffect, useRef, useState } from "react"; @@ -59,6 +60,7 @@ export function ParcnetIframeProvider({ children: React.ReactNode; }): ReactNode { const ref = useRef(null); + const isMounted = useRef(false); const [value, setValue] = useState ({ state: ClientConnectionState.CONNECTING, @@ -66,8 +68,22 @@ export function ParcnetIframeProvider({ }); useEffect(() => { - if (ref.current) { - void connect(zapp, ref.current, url).then((zupass) => { + if (!isMounted.current) { + isMounted.current = true; + return; + } + if (!isHosted()) { + if (ref.current) { + void connect(zapp, ref.current, url).then((zupass) => { + setValue({ + state: ClientConnectionState.CONNECTED, + z: zupass, + ref + }); + }); + } + } else { + void connectToHost(zapp).then((zupass) => { setValue({ state: ClientConnectionState.CONNECTED, z: zupass, @@ -75,6 +91,11 @@ export function ParcnetIframeProvider({ }); }); } + + return () => { + isMounted.current = false; + }; + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/package.json b/package.json index daefa9f..b1a0122 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "type": "module", "private": true, "scripts": { - "build": "TURBO_UI=0 turbo build", + "build": "turbo build", "dev": "turbo dev", "lint": "biome check --diagnostic-level=error && turbo lint", "test": "turbo test", @@ -17,7 +17,7 @@ "@changesets/cli": "^2.27.8", "husky": "^9.1.6", "knip": "^5.29.2", - "turbo": "^2.0.14", + "turbo": "2.1.1", "typescript": "^5.4.5", "vitest": "^2.0.5" }, @@ -28,6 +28,5 @@ "dependencies": { "mprocs": "^0.7.1" }, - "pnpm": { - } + "pnpm": {} } diff --git a/packages/app-connector/CHANGELOG.md b/packages/app-connector/CHANGELOG.md index 6aa4e95..b249981 100644 --- a/packages/app-connector/CHANGELOG.md +++ b/packages/app-connector/CHANGELOG.md @@ -1,5 +1,11 @@ # @parcnet-js/app-connector +## 0.0.7 + +### Patch Changes + +- Support Zapps embedded inside client + ## 0.0.6 ### Patch Changes diff --git a/packages/app-connector/package.json b/packages/app-connector/package.json index fca3bf4..e794d30 100644 --- a/packages/app-connector/package.json +++ b/packages/app-connector/package.json @@ -1,6 +1,6 @@ { "name": "@parcnet-js/app-connector", - "version": "0.0.6", + "version": "0.0.7", "license": "GPL-3.0-or-later", "type": "module", "main": "dist/index.cjs", diff --git a/packages/app-connector/src/adapters/hosted.ts b/packages/app-connector/src/adapters/hosted.ts new file mode 100644 index 0000000..70a2d00 --- /dev/null +++ b/packages/app-connector/src/adapters/hosted.ts @@ -0,0 +1,58 @@ +import type { Zapp } from "@parcnet-js/client-rpc"; +import { InitializationMessageType } from "@parcnet-js/client-rpc"; +import { ParcnetAPI } from "../api_wrapper.js"; +import { ParcnetRPCConnector } from "../rpc_client.js"; +import type { DialogController } from "./iframe.js"; +import { postWindowMessage } from "./iframe.js"; + +export function isHosted(): boolean { + return window.parent !== window.self; +} + +class HostedDialogController implements DialogController { + show(): void { + // For embedded apps, we don't need to do anything because the hosting + // app will show any dialogs it needs to. + } + close(): void { + // For embedded apps, we don't need to do anything because the hosting + // app will close any dialogs it needs to. + } +} + +export function connectToHost(zapp: Zapp): Promise { + if (!isHosted()) { + throw new Error("Zapp must be hosted inside an iframe"); + } + + return new Promise ((resolve) => { + // Create a new MessageChannel to communicate with the parent window + const chan = new MessageChannel(); + + // Create a new RPC client + const client = new ParcnetRPCConnector( + chan.port2, + new HostedDialogController() + ); + // Tell the RPC client to start. It will call the function we pass in + // when the connection is ready, at which point we can resolve the + // promise and return the API wrapper to the caller. + // See below for how the other port of the message channel is sent to + // the client. + client.start(() => { + resolve(new ParcnetAPI(client)); + }); + + // Send the other port of the message channel to the client + postWindowMessage( + window.parent, + { + type: InitializationMessageType.PARCNET_CLIENT_CONNECT, + zapp: zapp + }, + "*", + // Our RPC client has port2, send port1 to the client + [chan.port1] + ); + }); +} diff --git a/packages/app-connector/src/adapters/iframe.ts b/packages/app-connector/src/adapters/iframe.ts index 4d11291..044bcb5 100644 --- a/packages/app-connector/src/adapters/iframe.ts +++ b/packages/app-connector/src/adapters/iframe.ts @@ -94,7 +94,7 @@ export function connect( const iframe = document.createElement("iframe"); const sandboxAttr = document.createAttribute("sandbox"); sandboxAttr.value = - "allow-same-origin allow-scripts allow-popups allow-modals allow-forms allow-storage-access-by-user-activation"; + "allow-same-origin allow-scripts allow-popups allow-modals allow-forms allow-storage-access-by-user-activation allow-popups-to-escape-sandbox"; iframe.attributes.setNamedItem(sandboxAttr); iframe.style.borderWidth = "0px"; iframe.style.width = "100%"; diff --git a/packages/app-connector/src/index.ts b/packages/app-connector/src/index.ts index cc67756..a45925a 100644 --- a/packages/app-connector/src/index.ts +++ b/packages/app-connector/src/index.ts @@ -1,5 +1,4 @@ -import { connect } from "./adapters/iframe.js"; -export { connect }; +export { connect } from "./adapters/iframe.js"; +export { connectToHost } from "./adapters/hosted.js"; +export type { Zapp } from "@parcnet-js/client-rpc"; export * from "./api_wrapper.js"; -export { Zapp }; -import type { Zapp } from "@parcnet-js/client-rpc"; diff --git a/packages/typescript-config/base.json b/packages/typescript-config/base.json index 8db2ef8..ec1824c 100644 --- a/packages/typescript-config/base.json +++ b/packages/typescript-config/base.json @@ -6,7 +6,7 @@ "declarationMap": true, "esModuleInterop": true, "incremental": false, - "isolatedDeclarations": false, + "isolatedDeclarations": true, "isolatedModules": true, "lib": ["es2020", "DOM", "DOM.Iterable"], "module": "NodeNext", @@ -19,6 +19,7 @@ "resolvePackageJsonExports": true, "skipLibCheck": true, "strict": true, - "target": "ES2020" + "target": "ES2020", + "verbatimModuleSyntax": true } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b074c6a..5b2f670 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,16 +23,16 @@ importers: version: 9.1.6 knip: specifier: ^5.29.2 - version: 5.29.2(@types/node@22.5.4)(typescript@5.5.4) + version: 5.29.2(@types/node@22.5.5)(typescript@5.5.4) turbo: - specifier: ^2.0.14 + specifier: 2.1.1 version: 2.1.1 typescript: specifier: ^5.4.5 version: 5.5.4 vitest: specifier: ^2.0.5 - version: 2.0.5(@types/node@22.5.4) + version: 2.0.5(@types/node@22.5.5) apps/client-web: dependencies: @@ -54,24 +54,45 @@ importers: '@pcd/proto-pod-gpc-artifacts': specifier: ^0.9.0 version: 0.9.0 + '@radix-ui/react-dialog': + specifier: ^1.1.1 + version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@semaphore-protocol/core': specifier: ^4.0.3 version: 4.0.3 '@semaphore-protocol/identity': specifier: 3.15.2 version: 3.15.2 + class-variance-authority: + specifier: ^0.7.0 + version: 0.7.0 + clsx: + specifier: ^2.1.1 + version: 2.1.1 eventemitter3: specifier: ^5.0.1 version: 5.0.1 + lucide-react: + specifier: ^0.445.0 + version: 0.445.0(react@18.3.1) react: specifier: ^18.3.1 version: 18.3.1 react-dom: specifier: ^18.3.1 version: 18.3.1(react@18.3.1) + react-router-dom: + specifier: ^6.26.2 + version: 6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + tailwind-merge: + specifier: ^2.5.2 + version: 2.5.2 + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4))) vite-plugin-node-polyfills: specifier: ^0.22.0 - version: 0.22.0(rollup@4.21.2)(vite@5.4.4(@types/node@22.5.4)) + version: 0.22.0(rollup@4.21.2)(vite@5.4.4(@types/node@22.5.5)) devDependencies: '@parcnet-js/eslint-config': specifier: workspace:* @@ -84,7 +105,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.4.4(@types/node@22.5.4)) + version: 4.3.1(vite@5.4.4(@types/node@22.5.5)) autoprefixer: specifier: ^10.4.20 version: 10.4.20(postcss@8.4.44) @@ -99,13 +120,13 @@ importers: version: 8.4.44 tailwindcss: specifier: ^3.4.10 - version: 3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) + version: 3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4)) typescript: specifier: ^5.5 version: 5.5.4 vite: specifier: ^5.4.4 - version: 5.4.4(@types/node@22.5.4) + version: 5.4.4(@types/node@22.5.5) apps/docs: dependencies: @@ -114,28 +135,28 @@ importers: version: 0.9.3(typescript@5.6.2) '@astrojs/starlight': specifier: ^0.27.1 - version: 0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) + version: 0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) '@astrojs/starlight-tailwind': specifier: ^2.0.3 - version: 2.0.3(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2))) + version: 2.0.3(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2))) '@astrojs/tailwind': specifier: ^5.1.0 - version: 5.1.0(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) + version: 5.1.0(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) astro: specifier: ^4.15.3 - version: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + version: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) sharp: specifier: ^0.32.5 version: 0.32.6 starlight-package-managers: specifier: ^0.7.0 - version: 0.7.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) + version: 0.7.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) starlight-typedoc: specifier: ^0.16.0 - version: 0.16.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(typedoc-plugin-markdown@4.2.7(typedoc@0.26.7(typescript@5.6.2)))(typedoc@0.26.7(typescript@5.6.2)) + version: 0.16.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(typedoc-plugin-markdown@4.2.7(typedoc@0.26.7(typescript@5.6.2)))(typedoc@0.26.7(typescript@5.6.2)) tailwindcss: specifier: ^3.4.4 - version: 3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) + version: 3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) typedoc: specifier: ^0.26.7 version: 0.26.7(typescript@5.6.2) @@ -404,7 +425,7 @@ importers: version: 9.0.1 vitest: specifier: ^2.1.1 - version: 2.1.1(@types/node@22.5.4)(@vitest/ui@2.1.1) + version: 2.1.1(@types/node@22.5.5)(@vitest/ui@2.1.1) packages/ticket-spec: dependencies: @@ -444,7 +465,7 @@ importers: version: 9.0.1 vitest: specifier: ^2.1.1 - version: 2.1.1(@types/node@22.5.4)(@vitest/ui@2.1.1) + version: 2.1.1(@types/node@22.5.5)(@vitest/ui@2.1.1) packages/typescript-config: {} @@ -1342,8 +1363,174 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@polka/url@1.0.0-next.25': - resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@radix-ui/primitive@1.1.0': + resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} + + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-dialog@1.1.1': + resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-focus-guards@1.1.0': + resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-focus-scope@1.1.0': + resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-portal@1.1.1': + resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + + '@remix-run/router@1.19.2': + resolution: {integrity: sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==} + engines: {node: '>=14.0.0'} '@rollup/plugin-inject@5.0.5': resolution: {integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==} @@ -1575,6 +1762,9 @@ packages: '@types/node@22.5.4': resolution: {integrity: sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==} + '@types/node@22.5.5': + resolution: {integrity: sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==} + '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} @@ -1850,6 +2040,10 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-hidden@1.2.4: + resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} + engines: {node: '>=10'} + aria-query@5.3.1: resolution: {integrity: sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==} engines: {node: '>= 0.4'} @@ -2144,6 +2338,9 @@ packages: resolution: {integrity: sha512-xBGsBFF5Uv6AKvbpgExYqpHfmfawH2HKe+LyjfKSRevqEV8u63i9KGHVIILsbJNW+0c5bm/66f0PUYQ7qZSkJA==} hasBin: true + class-variance-authority@0.7.0: + resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} + clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} @@ -2168,6 +2365,10 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -2354,6 +2555,9 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + deterministic-object-hash@2.0.2: resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==} engines: {node: '>=18'} @@ -2836,6 +3040,10 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -3080,6 +3288,9 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -3437,6 +3648,11 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + lucide-react@0.445.0: + resolution: {integrity: sha512-YrLf3aAHvmd4dZ8ot+mMdNFrFpJD7YRwQ2pUcBhgqbmxtrMP4xDzIorcj+8y+6kpuXBF4JB0NOCTUWIYetJjgA==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + lunr@2.3.9: resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} @@ -4187,6 +4403,49 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} + react-remove-scroll-bar@2.3.6: + resolution: {integrity: sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-remove-scroll@2.5.7: + resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + react-router-dom@6.26.2: + resolution: {integrity: sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + react-dom: '>=16.8' + + react-router@6.26.2: + resolution: {integrity: sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: '>=16.8' + + react-style-singleton@2.2.1: + resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -4610,6 +4869,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + tailwind-merge@2.5.2: + resolution: {integrity: sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==} + + tailwindcss-animate@1.0.7: + resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} + peerDependencies: + tailwindcss: '>=3.0.0 || insiders' + tailwindcss@3.4.10: resolution: {integrity: sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==} engines: {node: '>=14.0.0'} @@ -4944,6 +5211,26 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} + use-callback-ref@1.3.2: + resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + + use-sidecar@1.1.2: + resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -5437,12 +5724,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@3.1.6(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))': + '@astrojs/mdx@3.1.6(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))': dependencies: '@astrojs/markdown-remark': 5.2.0 '@mdx-js/mdx': 3.0.1 acorn: 8.12.1 - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) es-module-lexer: 1.5.4 estree-util-visit: 2.0.0 gray-matter: 4.0.3 @@ -5467,21 +5754,21 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.23.8 - '@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))': + '@astrojs/starlight-tailwind@2.0.3(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))': dependencies: - '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) - '@astrojs/tailwind': 5.1.0(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) + '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) + '@astrojs/tailwind': 5.1.0(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) - '@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))': + '@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))': dependencies: - '@astrojs/mdx': 3.1.6(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) + '@astrojs/mdx': 3.1.6(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) '@astrojs/sitemap': 3.1.6 '@pagefind/default-ui': 1.1.1 '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) - astro-expressive-code: 0.35.6(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) + astro-expressive-code: 0.35.6(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.2 hast-util-select: 6.0.2 @@ -5500,13 +5787,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2))': + '@astrojs/tailwind@5.1.0(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)))(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2))': dependencies: - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) autoprefixer: 10.4.20(postcss@8.4.44) postcss: 8.4.44 - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) - tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) transitivePeerDependencies: - ts-node @@ -6366,9 +6653,146 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@polka/url@1.0.0-next.25': + '@polka/url@1.0.0-next.28': optional: true + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-context@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-id': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.5)(react@18.3.1) + aria-hidden: 1.2.4 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-remove-scroll: 2.5.7(@types/react@18.3.5)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/primitive': 1.1.0 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-id@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + '@types/react-dom': 18.3.0 + + '@radix-ui/react-slot@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.5)(react@18.3.1) + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@18.3.5)(react@18.3.1)': + dependencies: + react: 18.3.1 + optionalDependencies: + '@types/react': 18.3.5 + + '@remix-run/router@1.19.2': {} + '@rollup/plugin-inject@5.0.5(rollup@4.21.2)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.21.2) @@ -6608,6 +7032,10 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/node@22.5.5': + dependencies: + undici-types: 6.19.8 + '@types/prop-types@15.7.12': {} '@types/react-dom@18.3.0': @@ -6727,14 +7155,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.3.1(vite@5.4.4(@types/node@22.5.4))': + '@vitejs/plugin-react@4.3.1(vite@5.4.4(@types/node@22.5.5))': dependencies: '@babel/core': 7.25.2 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.4(@types/node@22.5.4) + vite: 5.4.4(@types/node@22.5.5) transitivePeerDependencies: - supports-color @@ -6752,13 +7180,13 @@ snapshots: chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.4(@types/node@22.5.4))': + '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.4(@types/node@22.5.5))': dependencies: '@vitest/spy': 2.1.1 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: - vite: 5.4.4(@types/node@22.5.4) + vite: 5.4.4(@types/node@22.5.5) '@vitest/pretty-format@2.0.5': dependencies: @@ -6807,7 +7235,7 @@ snapshots: sirv: 2.0.4 tinyglobby: 0.2.6 tinyrainbow: 1.2.0 - vitest: 2.1.1(@types/node@22.5.4)(@vitest/ui@2.1.1) + vitest: 2.1.1(@types/node@22.5.5)(@vitest/ui@2.1.1) optional: true '@vitest/utils@2.0.5': @@ -6985,6 +7413,10 @@ snapshots: argparse@2.0.1: {} + aria-hidden@1.2.4: + dependencies: + tslib: 2.7.0 + aria-query@5.3.1: {} array-buffer-byte-length@1.0.1: @@ -7057,12 +7489,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.35.6(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)): + astro-expressive-code@0.35.6(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)): dependencies: - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) rehype-expressive-code: 0.35.6 - astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2): + astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2): dependencies: '@astrojs/compiler': 2.10.3 '@astrojs/internal-helpers': 0.4.1 @@ -7122,8 +7554,8 @@ snapshots: tsconfck: 3.1.3(typescript@5.6.2) unist-util-visit: 5.0.0 vfile: 6.0.3 - vite: 5.4.4(@types/node@22.5.4) - vitefu: 1.0.2(vite@5.4.4(@types/node@22.5.4)) + vite: 5.4.4(@types/node@22.5.5) + vitefu: 1.0.2(vite@5.4.4(@types/node@22.5.5)) which-pm: 3.0.0 xxhash-wasm: 1.0.2 yargs-parser: 21.1.1 @@ -7422,6 +7854,10 @@ snapshots: dependencies: ffjavascript: 0.3.0 + class-variance-authority@0.7.0: + dependencies: + clsx: 2.0.0 + clean-stack@2.2.0: {} cli-boxes@3.0.0: {} @@ -7441,6 +7877,8 @@ snapshots: clone@1.0.4: optional: true + clsx@2.0.0: {} + clsx@2.1.1: {} collapse-white-space@2.1.0: {} @@ -7631,6 +8069,8 @@ snapshots: detect-libc@2.0.3: {} + detect-node-es@1.1.0: {} + deterministic-object-hash@2.0.2: dependencies: base-64: 1.0.0 @@ -8259,6 +8699,8 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-nonce@1.0.1: {} + get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -8607,6 +9049,10 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -8829,11 +9275,11 @@ snapshots: kleur@4.1.5: {} - knip@5.29.2(@types/node@22.5.4)(typescript@5.5.4): + knip@5.29.2(@types/node@22.5.5)(typescript@5.5.4): dependencies: '@nodelib/fs.walk': 1.2.8 '@snyk/github-codeowners': 1.1.0 - '@types/node': 22.5.4 + '@types/node': 22.5.5 easy-table: 1.2.0 enhanced-resolve: 5.17.1 fast-glob: 3.3.2 @@ -8927,6 +9373,10 @@ snapshots: dependencies: yallist: 3.1.1 + lucide-react@0.445.0(react@18.3.1): + dependencies: + react: 18.3.1 + lunr@2.3.9: {} magic-string@0.30.11: @@ -9824,21 +10274,21 @@ snapshots: postcss: 8.4.44 ts-node: 10.9.2(@types/node@20.16.3)(typescript@5.5.4) - postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4)): dependencies: lilconfig: 3.1.2 yaml: 2.5.0 optionalDependencies: postcss: 8.4.44 - ts-node: 10.9.2(@types/node@22.5.4)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@22.5.5)(typescript@5.5.4) - postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)): + postcss-load-config@4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)): dependencies: lilconfig: 3.1.2 yaml: 2.5.0 optionalDependencies: postcss: 8.4.44 - ts-node: 10.9.2(@types/node@22.5.4)(typescript@5.6.2) + ts-node: 10.9.2(@types/node@22.5.5)(typescript@5.6.2) postcss-load-config@6.0.1(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0)(yaml@2.5.1): dependencies: @@ -9986,6 +10436,46 @@ snapshots: react-refresh@0.14.2: {} + react-remove-scroll-bar@2.3.6(@types/react@18.3.5)(react@18.3.1): + dependencies: + react: 18.3.1 + react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.5 + + react-remove-scroll@2.5.7(@types/react@18.3.5)(react@18.3.1): + dependencies: + react: 18.3.1 + react-remove-scroll-bar: 2.3.6(@types/react@18.3.5)(react@18.3.1) + react-style-singleton: 2.2.1(@types/react@18.3.5)(react@18.3.1) + tslib: 2.7.0 + use-callback-ref: 1.3.2(@types/react@18.3.5)(react@18.3.1) + use-sidecar: 1.1.2(@types/react@18.3.5)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.5 + + react-router-dom@6.26.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@remix-run/router': 1.19.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.26.2(react@18.3.1) + + react-router@6.26.2(react@18.3.1): + dependencies: + '@remix-run/router': 1.19.2 + react: 18.3.1 + + react-style-singleton@2.2.1(@types/react@18.3.5)(react@18.3.1): + dependencies: + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.5 + react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -10363,7 +10853,7 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.25 + '@polka/url': 1.0.0-next.28 mrmime: 2.0.0 totalist: 3.0.1 optional: true @@ -10416,15 +10906,15 @@ snapshots: stackback@0.0.2: {} - starlight-package-managers@0.7.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)): + starlight-package-managers@0.7.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)): dependencies: - '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) - starlight-typedoc@0.16.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2))(typedoc-plugin-markdown@4.2.7(typedoc@0.26.7(typescript@5.6.2)))(typedoc@0.26.7(typescript@5.6.2)): + starlight-typedoc@0.16.0(@astrojs/starlight@0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)))(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2))(typedoc-plugin-markdown@4.2.7(typedoc@0.26.7(typescript@5.6.2)))(typedoc@0.26.7(typescript@5.6.2)): dependencies: - '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2)) - astro: 4.15.6(@types/node@22.5.4)(rollup@4.21.2)(typescript@5.6.2) + '@astrojs/starlight': 0.27.1(astro@4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2)) + astro: 4.15.6(@types/node@22.5.5)(rollup@4.21.2)(typescript@5.6.2) github-slugger: 2.0.0 typedoc: 0.26.7(typescript@5.6.2) typedoc-plugin-markdown: 4.2.7(typedoc@0.26.7(typescript@5.6.2)) @@ -10561,6 +11051,12 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + tailwind-merge@2.5.2: {} + + tailwindcss-animate@1.0.7(tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4))): + dependencies: + tailwindcss: 3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4)) + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@20.16.3)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 @@ -10588,7 +11084,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)): + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -10607,7 +11103,7 @@ snapshots: postcss: 8.4.44 postcss-import: 15.1.0(postcss@8.4.44) postcss-js: 4.0.1(postcss@8.4.44) - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4)) postcss-nested: 6.2.0(postcss@8.4.44) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -10615,7 +11111,7 @@ snapshots: transitivePeerDependencies: - ts-node - tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)): + tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)): dependencies: '@alloc/quick-lru': 5.2.0 arg: 5.0.2 @@ -10634,7 +11130,7 @@ snapshots: postcss: 8.4.44 postcss-import: 15.1.0(postcss@8.4.44) postcss-js: 4.0.1(postcss@8.4.44) - postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2)) + postcss-load-config: 4.0.2(postcss@8.4.44)(ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2)) postcss-nested: 6.2.0(postcss@8.4.44) postcss-selector-parser: 6.1.2 resolve: 1.22.8 @@ -10759,14 +11255,14 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@22.5.4)(typescript@5.5.4): + ts-node@10.9.2(@types/node@22.5.5)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.5.4 + '@types/node': 22.5.5 acorn: 8.12.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10778,14 +11274,14 @@ snapshots: yn: 3.1.1 optional: true - ts-node@10.9.2(@types/node@22.5.4)(typescript@5.6.2): + ts-node@10.9.2(@types/node@22.5.5)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.5.4 + '@types/node': 22.5.5 acorn: 8.12.1 acorn-walk: 8.3.4 arg: 4.1.3 @@ -10810,8 +11306,7 @@ snapshots: tslib@2.4.0: {} - tslib@2.7.0: - optional: true + tslib@2.7.0: {} tsup@8.2.4(jiti@1.21.6)(postcss@8.4.44)(tsx@4.19.0)(typescript@5.5.4)(yaml@2.5.1): dependencies: @@ -11072,6 +11567,21 @@ snapshots: punycode: 1.4.1 qs: 6.13.0 + use-callback-ref@1.3.2(@types/react@18.3.5)(react@18.3.1): + dependencies: + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.5 + + use-sidecar@1.1.2(@types/react@18.3.5)(react@18.3.1): + dependencies: + detect-node-es: 1.1.0 + react: 18.3.1 + tslib: 2.7.0 + optionalDependencies: + '@types/react': 18.3.5 + util-deprecate@1.0.2: {} util@0.12.5: @@ -11124,12 +11634,30 @@ snapshots: - supports-color - terser - vite-node@2.1.1(@types/node@22.5.4): + vite-node@2.0.5(@types/node@22.5.5): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.4(@types/node@22.5.4) + tinyrainbow: 1.2.0 + vite: 5.4.4(@types/node@22.5.5) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-node@2.1.1(@types/node@22.5.5): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.4(@types/node@22.5.5) transitivePeerDependencies: - '@types/node' - less @@ -11149,11 +11677,11 @@ snapshots: transitivePeerDependencies: - rollup - vite-plugin-node-polyfills@0.22.0(rollup@4.21.2)(vite@5.4.4(@types/node@22.5.4)): + vite-plugin-node-polyfills@0.22.0(rollup@4.21.2)(vite@5.4.4(@types/node@22.5.5)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.21.2) node-stdlib-browser: 1.2.0 - vite: 5.4.4(@types/node@22.5.4) + vite: 5.4.4(@types/node@22.5.5) transitivePeerDependencies: - rollup @@ -11175,9 +11703,18 @@ snapshots: '@types/node': 22.5.4 fsevents: 2.3.3 - vitefu@1.0.2(vite@5.4.4(@types/node@22.5.4)): + vite@5.4.4(@types/node@22.5.5): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.44 + rollup: 4.21.2 optionalDependencies: - vite: 5.4.4(@types/node@22.5.4) + '@types/node': 22.5.5 + fsevents: 2.3.3 + + vitefu@1.0.2(vite@5.4.4(@types/node@22.5.5)): + optionalDependencies: + vite: 5.4.4(@types/node@22.5.5) vitest@2.0.5(@types/node@22.5.4): dependencies: @@ -11212,10 +11749,43 @@ snapshots: - supports-color - terser - vitest@2.1.1(@types/node@22.5.4)(@vitest/ui@2.1.1): + vitest@2.0.5(@types/node@22.5.5): + dependencies: + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.5 + '@vitest/pretty-format': 2.0.5 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + debug: 4.3.6 + execa: 8.0.1 + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.4(@types/node@22.5.5) + vite-node: 2.0.5(@types/node@22.5.5) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.5.5 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.1(@types/node@22.5.5)(@vitest/ui@2.1.1): dependencies: '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.4(@types/node@22.5.4)) + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.4(@types/node@22.5.5)) '@vitest/pretty-format': 2.1.1 '@vitest/runner': 2.1.1 '@vitest/snapshot': 2.1.1 @@ -11230,11 +11800,11 @@ snapshots: tinyexec: 0.3.0 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.4(@types/node@22.5.4) - vite-node: 2.1.1(@types/node@22.5.4) + vite: 5.4.4(@types/node@22.5.5) + vite-node: 2.1.1(@types/node@22.5.5) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.5.4 + '@types/node': 22.5.5 '@vitest/ui': 2.1.1(vitest@2.1.1) transitivePeerDependencies: - less