From 79a45fa8f8b1f4fe15663bd329509ea6b298e87d Mon Sep 17 00:00:00 2001 From: Apteryx Date: Mon, 13 Oct 2025 18:59:39 +1300 Subject: [PATCH 01/14] Add translations to website --- .gitignore | 3 +- apps/website/next.config.js | 15 +- apps/website/package.json | 11 +- apps/website/sayable.config.ts | 12 + apps/website/sitemap.config.ts | 21 + .../playgrounds/[playground]/loading.tsx | 0 .../playgrounds/[playground]/not-found.tsx | 13 +- .../playgrounds/[playground]/page.tsx | 29 +- .../[playground]/wrapper/desktop.tsx | 0 .../[playground]/wrapper/index.tsx | 0 .../[playground]/wrapper/mobile.tsx | 0 .../[playground]/wrapper/skeleton.tsx | 0 .../(playgrounds)/playgrounds/get-colour.ts | 0 .../(playgrounds)/playgrounds/page.tsx | 19 +- .../playgrounds/playground-card-list.tsx | 34 +- .../playgrounds/playground-card.tsx | 11 +- .../(policies)/policies/layout.tsx | 0 .../policies/privacy-policy/page.tsx | 0 .../policies/terms-of-service/page.tsx | 0 .../browser-extension/image-carousel.tsx | 0 .../products/browser-extension/page.tsx | 23 +- .../(products)/products/discord-bot/page.tsx | 17 +- .../website/src/app/{ => [locale]}/layout.tsx | 27 +- apps/website/src/app/[locale]/metadata.ts | 54 + apps/website/src/app/error.tsx | 13 - apps/website/src/app/manifest.ts | 20 +- apps/website/src/app/metadata.ts | 52 - apps/website/src/app/not-found.tsx | 11 - apps/website/src/app/sitemap.ts | 41 - .../components/editor/execute-bar/index.tsx | 11 +- apps/website/src/components/editor/hooks.ts | 2 +- .../components/editor/opened-files/button.tsx | 13 +- .../src/components/explorer/file/item.tsx | 9 +- .../website/src/components/explorer/index.tsx | 30 +- apps/website/src/components/explorer/name.tsx | 22 +- apps/website/src/components/explorer/use.tsx | 8 +- apps/website/src/components/footer/index.tsx | 10 +- apps/website/src/components/header/index.tsx | 37 +- .../src/components/header/locale-switcher.tsx | 61 + .../src/components/header/theme-switcher.tsx | 5 +- apps/website/src/components/languages.ts | 126 +- .../website/src/components/localised-link.tsx | 13 + apps/website/src/components/providers.tsx | 7 +- .../src/components/terminal/html-preview.tsx | 3 +- .../website/src/components/terminal/index.tsx | 51 +- apps/website/src/i18n.ts | 11 + apps/website/src/locales/en/messages.po | 267 ++ apps/website/src/locales/fr/messages.po | 268 ++ apps/website/src/middleware.ts | 69 + apps/website/src/types.ts | 25 - packages/components/package.json | 1 + packages/components/src/dropdown-menu.tsx | 255 ++ pnpm-lock.yaml | 3385 +++++++++-------- 53 files changed, 3193 insertions(+), 1922 deletions(-) create mode 100644 apps/website/sayable.config.ts create mode 100644 apps/website/sitemap.config.ts rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/loading.tsx (100%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/not-found.tsx (53%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/page.tsx (67%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/wrapper/desktop.tsx (100%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/wrapper/index.tsx (100%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/wrapper/mobile.tsx (100%) rename apps/website/src/app/{ => [locale]}/(editor)/playgrounds/[playground]/wrapper/skeleton.tsx (100%) rename apps/website/src/app/{ => [locale]}/(playgrounds)/playgrounds/get-colour.ts (100%) rename apps/website/src/app/{ => [locale]}/(playgrounds)/playgrounds/page.tsx (54%) rename apps/website/src/app/{ => [locale]}/(playgrounds)/playgrounds/playground-card-list.tsx (82%) rename apps/website/src/app/{ => [locale]}/(playgrounds)/playgrounds/playground-card.tsx (91%) rename apps/website/src/app/{ => [locale]}/(policies)/policies/layout.tsx (100%) rename apps/website/src/app/{ => [locale]}/(policies)/policies/privacy-policy/page.tsx (100%) rename apps/website/src/app/{ => [locale]}/(policies)/policies/terms-of-service/page.tsx (100%) rename apps/website/src/app/{ => [locale]}/(products)/products/browser-extension/image-carousel.tsx (100%) rename apps/website/src/app/{ => [locale]}/(products)/products/browser-extension/page.tsx (91%) rename apps/website/src/app/{ => [locale]}/(products)/products/discord-bot/page.tsx (68%) rename apps/website/src/app/{ => [locale]}/layout.tsx (66%) create mode 100644 apps/website/src/app/[locale]/metadata.ts delete mode 100644 apps/website/src/app/error.tsx delete mode 100644 apps/website/src/app/metadata.ts delete mode 100644 apps/website/src/app/not-found.tsx delete mode 100644 apps/website/src/app/sitemap.ts create mode 100644 apps/website/src/components/header/locale-switcher.tsx create mode 100644 apps/website/src/components/localised-link.tsx create mode 100644 apps/website/src/i18n.ts create mode 100644 apps/website/src/locales/en/messages.po create mode 100644 apps/website/src/locales/fr/messages.po create mode 100644 apps/website/src/middleware.ts create mode 100644 packages/components/src/dropdown-menu.tsx diff --git a/.gitignore b/.gitignore index 5ea76d9d..3201ce1b 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ node_modules/ .ignore/ dist/ .next/ -.plasmo/ .env*.local +messages.json +sitemap.xml \ No newline at end of file diff --git a/apps/website/next.config.js b/apps/website/next.config.js index 4eac91dc..a36c0baf 100644 --- a/apps/website/next.config.js +++ b/apps/website/next.config.js @@ -1,7 +1,5 @@ // TODO: Bug in Next.js 15.4.x, cannot upgrade, see https://github.com/vercel/next.js/issues/81628 -import { fetchAllRuntimes } from '@evaluate/runtimes'; - /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, @@ -15,11 +13,10 @@ const nextConfig = { permanent: false, }, { - source: `/:slug(${(await fetchAllRuntimes()) - .map((r) => r.id.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')) - .join('|')})`, - destination: '/playgrounds/:slug', - permanent: true, + // (?:[a-z]{2,3}(-[A-Z][a-z]+)?(-[A-Z]{2}|\d{3})?) + source: '/:locale((?:[a-zA-Z]{2})(?:-[a-zA-Z]{2})?)', + destination: '/:locale/playgrounds', + permanent: false, }, ]; }, @@ -52,6 +49,10 @@ const nextConfig = { }, ], }, + + experimental: { + swcPlugins: [['@sayable/swc-plugin', {}]], + }, }; const truthy = (v) => ['true', 't', '1'].includes(v); diff --git a/apps/website/package.json b/apps/website/package.json index 11e1ebdc..cdba79c2 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -5,7 +5,8 @@ "type": "module", "scripts": { "check": "tsc --noEmit", - "build": "use-env -p NEXT -P -- next build --no-lint", + "build": "use-env -p NEXT -P -- next build --no-lint && pnpm build:sitemap", + "build:sitemap": "use-env -p NEXT -P -- next-sitemap --config sitemap.config.ts", "start": "use-env -p NEXT -P -- next start", "dev": "use-env -p NEXT -- next dev --turbo" }, @@ -19,6 +20,7 @@ "@evaluate/runtimes": "workspace:^", "@evaluate/style": "workspace:^", "@hookform/resolvers": "^5.1.1", + "@sayable/react": "0.0.0-alpha.6", "@t3-oss/env-nextjs": "^0.13.8", "@tanstack/react-query": "^5.83.0", "@tanstack/react-query-devtools": "^5.83.0", @@ -46,6 +48,8 @@ "react-dom": "^19.1.0", "react-hook-form": "^7.60.0", "react-hotkeys-hook": "^5.1.0", + "sayable": "0.0.0-alpha.6", + "server-only": "^0.0.1", "sharp": "^0.34.3", "tailwind-merge": "^3.3.1", "type-fest": "^4.41.0", @@ -56,10 +60,15 @@ "devDependencies": { "@million/lint": "^1.0.14", "@next/bundle-analyzer": "15.3.5", + "@sayable/config": "0.0.0-alpha.4", + "@sayable/factory": "0.0.0-alpha.6", + "@sayable/format-po": "0.0.0-alpha.4", + "@sayable/swc-plugin": "0.0.0-alpha.5", "@tailwindcss/postcss": "^4.1.11", "@types/file-saver": "^2.0.7", "@types/react": "^19.1.8", "autoprefixer": "^10.4.21", + "next-sitemap": "^4.2.3", "tailwindcss": "^4.1.11" } } diff --git a/apps/website/sayable.config.ts b/apps/website/sayable.config.ts new file mode 100644 index 00000000..699394d2 --- /dev/null +++ b/apps/website/sayable.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from '@sayable/config'; + +export default defineConfig({ + sourceLocale: 'en', + locales: ['en', 'fr'], + catalogues: [ + { + include: ['src/**/*.{ts,tsx}'], + output: 'src/locales/{locale}/messages.{extension}', + }, + ], +}); diff --git a/apps/website/sitemap.config.ts b/apps/website/sitemap.config.ts new file mode 100644 index 00000000..02ef6a0f --- /dev/null +++ b/apps/website/sitemap.config.ts @@ -0,0 +1,21 @@ +import type { IConfig } from 'next-sitemap'; +import sayable from './sayable.config.ts'; + +export default { + siteUrl: process.env.NEXT_PUBLIC_WEBSITE_URL!, + generateIndexSitemap: false, + + transform: (_: unknown, pathname: string) => { + if (!pathname.startsWith('/en/')) return undefined; + return { + loc: pathname.replace('/en/', '/'), + lastmod: new Date().toISOString(), + changefreq: 'weekly', + priority: 0.7, + alternateRefs: sayable.locales.map((locale) => ({ + href: `${process.env.NEXT_PUBLIC_WEBSITE_URL!}/${locale}${pathname.replace('/en/', '/')}`, + hreflang: locale, + })), + }; + }, +} satisfies IConfig; diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/loading.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/loading.tsx similarity index 100% rename from apps/website/src/app/(editor)/playgrounds/[playground]/loading.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/loading.tsx diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/not-found.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx similarity index 53% rename from apps/website/src/app/(editor)/playgrounds/[playground]/not-found.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx index 1d759cb9..84c4b8a1 100644 --- a/apps/website/src/app/(editor)/playgrounds/[playground]/not-found.tsx +++ b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx @@ -1,18 +1,23 @@ import { Button } from '@evaluate/components/button'; -import Link from 'next/link'; +import { Say } from '@sayable/react'; +import { LocalisedLink } from '~/components/localised-link'; export default function PlaygroundNotFound() { return (
404 -

Not Found

+

+ Not Found +

- Hmm, we couldn't find the playground you're looking for. + Hmm, we couldn't find the playground you're looking for.

diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/page.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx similarity index 67% rename from apps/website/src/app/(editor)/playgrounds/[playground]/page.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx index ceebdd49..506e073f 100644 --- a/apps/website/src/app/(editor)/playgrounds/[playground]/page.tsx +++ b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx @@ -1,11 +1,13 @@ import { fetchAllRuntimes, fetchRuntimeById } from '@evaluate/runtimes'; import { notFound } from 'next/navigation'; -import { generateBaseMetadata } from '~/app/metadata'; +import { generateBaseMetadata } from '~/app/[locale]/metadata'; + import { Editor } from '~/components/editor'; import { Explorer } from '~/components/explorer'; import { ExplorerProvider } from '~/components/explorer/use'; import { Terminal } from '~/components/terminal'; import { TerminalProvider } from '~/components/terminal/use'; +import say from '~/i18n'; import type { PageProps } from '~/types'; import { EditorWrapper } from './wrapper'; @@ -14,21 +16,28 @@ export async function generateStaticParams() { return runtimes.map((r) => ({ playground: r.id })); } -export async function generateMetadata(props: PageProps<['[playground]']>) { - const playground = (await props.params).playground; +export async function generateMetadata( + props: PageProps<['[locale]', '[playground]']>, +) { + const { locale, playground } = await props.params; const runtime = await fetchRuntimeById(decodeURIComponent(playground)); if (!runtime) notFound(); - return generateBaseMetadata(`/playground/${playground}`, { - title: `${runtime.name} Playground on Evaluate`, - description: `Run code in ${runtime.name} and other programming languages effortlessly with Evaluate. Input your code, optional arguments, and get instant results. Debug, optimize, and elevate your coding experience with our versatile evaluation tools.`, - keywords: [runtime.name, ...runtime.aliases, ...runtime.tags] // - .map((k) => k.toLowerCase()), - }); + return generateBaseMetadata( + say.activate(locale), + `/playgrounds/${playground}`, + (say) => ({ + title: say`${runtime.name} Online Playground on Evaluate`, + description: say`Run ${runtime.name} and more code snippets online in your browser with Evaluates code playground.`, + keywords: [runtime.name, ...runtime.aliases, ...runtime.tags].map((k) => + k.toLowerCase(), + ), + }), + ); } export default async function EditorPage(props: PageProps<['[playground]']>) { - const playground = (await props.params).playground; + const { playground } = await props.params; const runtime = await fetchRuntimeById(decodeURIComponent(playground)); if (!runtime) notFound(); diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/desktop.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/desktop.tsx similarity index 100% rename from apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/desktop.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/desktop.tsx diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/index.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/index.tsx similarity index 100% rename from apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/index.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/index.tsx diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/mobile.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/mobile.tsx similarity index 100% rename from apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/mobile.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/mobile.tsx diff --git a/apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/skeleton.tsx b/apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/skeleton.tsx similarity index 100% rename from apps/website/src/app/(editor)/playgrounds/[playground]/wrapper/skeleton.tsx rename to apps/website/src/app/[locale]/(editor)/playgrounds/[playground]/wrapper/skeleton.tsx diff --git a/apps/website/src/app/(playgrounds)/playgrounds/get-colour.ts b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/get-colour.ts similarity index 100% rename from apps/website/src/app/(playgrounds)/playgrounds/get-colour.ts rename to apps/website/src/app/[locale]/(playgrounds)/playgrounds/get-colour.ts diff --git a/apps/website/src/app/(playgrounds)/playgrounds/page.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/page.tsx similarity index 54% rename from apps/website/src/app/(playgrounds)/playgrounds/page.tsx rename to apps/website/src/app/[locale]/(playgrounds)/playgrounds/page.tsx index 4310773f..47206c82 100644 --- a/apps/website/src/app/(playgrounds)/playgrounds/page.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/page.tsx @@ -1,9 +1,13 @@ import { fetchAllRuntimes } from '@evaluate/runtimes'; -import { generateBaseMetadata } from '~/app/metadata'; +import { Say } from '@sayable/react'; +import say from '~/i18n'; +import type { PageProps } from '~/types'; +import { generateBaseMetadata } from '../../metadata'; import { PlaygroundCardList } from './playground-card-list'; -export function generateMetadata() { - return generateBaseMetadata('/playgrounds'); +export async function generateMetadata(props: PageProps<['[locale]']>) { + const { locale } = await props.params; + return generateBaseMetadata(say.activate(locale), '/playgrounds'); } export default async function PlaygroundsPage() { @@ -13,13 +17,16 @@ export default async function PlaygroundsPage() {

- Playgrounds + Playgrounds

- Explore and run code in different programming languages and runtimes. + + Explore and run code in different programming languages and + runtimes. +
- Powered by the Piston execution engine. + Powered by the Piston execution engine.

diff --git a/apps/website/src/app/(playgrounds)/playgrounds/playground-card-list.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx similarity index 82% rename from apps/website/src/app/(playgrounds)/playgrounds/playground-card-list.tsx rename to apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx index 402a6bfa..cca43c2f 100644 --- a/apps/website/src/app/(playgrounds)/playgrounds/playground-card-list.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx @@ -13,6 +13,7 @@ import { import { Separator } from '@evaluate/components/separator'; import { toast } from '@evaluate/components/toast'; import type { Runtime } from '@evaluate/runtimes'; +import { Say, useSay } from '@sayable/react'; import { ArrowDownWideNarrowIcon, CircleDotIcon, @@ -20,6 +21,7 @@ import { XIcon, } from 'lucide-react'; import { useDeferredValue, useEffect, useMemo } from 'react'; +import type { Sayable } from 'sayable'; import { useHashFragment } from '~/hooks/hash-fragment'; import { useLocalStorage } from '~/hooks/local-storage'; import { useQueryParameter } from '~/hooks/query-parameter'; @@ -30,6 +32,8 @@ export function PlaygroundCardList({ }: { initialRuntimes: Runtime[]; }) { + const say = useSay() as Sayable; + const [search, setSearch] = useQueryParameter('search'); const deferredSearch = useDeferredValue(search); const searchedRuntimes = useMemo(() => { @@ -73,10 +77,10 @@ export function PlaygroundCardList({ const [hash] = useHashFragment(); useEffect(() => { if (hash) - toast.info('Choose a playground!', { + toast.info(say`Choose a playground!`, { icon: , }); - }, [hash]); + }, [say, hash]); return (
@@ -86,7 +90,7 @@ export function PlaygroundCardList({ setSearch(e.target.value)} /> @@ -97,21 +101,33 @@ export function PlaygroundCardList({ className="absolute top-[27%] right-2 size-4 cursor-pointer opacity-50" onClick={() => setSearch('')} > - Clear Search + + + Clear Search + + )}
diff --git a/apps/website/src/app/(playgrounds)/playgrounds/playground-card.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card.tsx similarity index 91% rename from apps/website/src/app/(playgrounds)/playgrounds/playground-card.tsx rename to apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card.tsx index 957b9b18..69d8af84 100644 --- a/apps/website/src/app/(playgrounds)/playgrounds/playground-card.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card.tsx @@ -8,10 +8,11 @@ import { CardTitle, } from '@evaluate/components/card'; import { getRuntimeIconUrl, type Runtime } from '@evaluate/runtimes'; +import { Say } from '@sayable/react'; import { CodeIcon, PinIcon } from 'lucide-react'; -import Link from 'next/link'; import { useCallback, useMemo, useRef, useState } from 'react'; import { ImageWithFallback } from '~/components/image-fallback'; +import { LocalisedLink } from '~/components/localised-link'; import { useLocalStorage } from '~/hooks/local-storage'; import { getDominantColour, type RGB } from './get-colour'; @@ -72,14 +73,16 @@ export function PlaygroundCard({ v{runtime.version} - - {`Open ${runtime.name} Playground`} - + + Open {runtime.name} Playground + +
@@ -118,7 +125,9 @@ export default function BrowserExtensionPlatformPage() { alt="Firefox" /> - Evaluate for Firefox + + Evaluate for Firefox + diff --git a/apps/website/src/app/(products)/products/discord-bot/page.tsx b/apps/website/src/app/[locale]/(products)/products/discord-bot/page.tsx similarity index 68% rename from apps/website/src/app/(products)/products/discord-bot/page.tsx rename to apps/website/src/app/[locale]/(products)/products/discord-bot/page.tsx index c3a5b32e..06ad9363 100644 --- a/apps/website/src/app/(products)/products/discord-bot/page.tsx +++ b/apps/website/src/app/[locale]/(products)/products/discord-bot/page.tsx @@ -1,4 +1,5 @@ import { Button } from '@evaluate/components/button'; +import { Say } from '@sayable/react'; import Link from 'next/link'; export default function BrowserExtensionPlatformContent() { @@ -6,12 +7,16 @@ export default function BrowserExtensionPlatformContent() {

- The Evaluate Discord Bot + + The Evaluate Discord Bot +

- Run code snippets directly in your Discord server with the Evaluate - bot! Evaluate supports over 70 languages and is perfect for quickly - testing code and sharing results with your friends. + + Run code snippets directly in your Discord server with the Evaluate + bot! Evaluate supports over 70 languages and is perfect for quickly + testing code and sharing results with your friends. +

@@ -29,7 +34,9 @@ export default function BrowserExtensionPlatformContent() { alt="Discord Logo" /> - Evaluate for Discord + + Evaluate for Discord + diff --git a/apps/website/src/app/layout.tsx b/apps/website/src/app/[locale]/layout.tsx similarity index 66% rename from apps/website/src/app/layout.tsx rename to apps/website/src/app/[locale]/layout.tsx index 6513a99c..a4480cb1 100644 --- a/apps/website/src/app/layout.tsx +++ b/apps/website/src/app/[locale]/layout.tsx @@ -1,23 +1,31 @@ -import { Toaster } from '@evaluate/components/toast'; import { Inter } from 'next/font/google'; +import { notFound } from 'next/navigation'; import { twMerge as cn } from 'tailwind-merge'; import { Footer } from '~/components/footer'; import { Header } from '~/components/header'; import { BodyProviders, HtmlProviders } from '~/components/providers'; -import type { LayoutProps } from '../types'; -import { generateBaseMetadata } from './metadata'; -import '../style.css'; +import say from '~/i18n'; +import type { LayoutProps } from '~/types'; +import '../../style.css'; const inter = Inter({ subsets: ['latin'] }); -export function generateMetadata() { - return generateBaseMetadata('/'); +export function generateStaticParams() { + return say.locales.map((l) => ({ locale: l })); } -export default function RootLayout(p: LayoutProps) { +export default async function RootLayout(p: LayoutProps<['[locale]']>) { + const { locale = 'en' } = await p.params; + try { + await say.load(String(locale)); + say.activate(String(locale)); + } catch { + notFound(); + } + return ( - + @@ -36,11 +44,10 @@ export default function RootLayout(p: LayoutProps) { 'flex min-h-screen flex-col overflow-y-scroll', )} > - +
{p.children}
- diff --git a/apps/website/src/app/[locale]/metadata.ts b/apps/website/src/app/[locale]/metadata.ts new file mode 100644 index 00000000..2c55fc28 --- /dev/null +++ b/apps/website/src/app/[locale]/metadata.ts @@ -0,0 +1,54 @@ +import { merge } from 'es-toolkit/object'; +import type { Metadata } from 'next'; +import type { Sayable } from 'sayable'; +import env from '~/env'; + +export async function generateBaseMetadata( + say: Sayable, + pathname: `/${string}`, + overrides?: (say: Sayable) => Metadata, +) { + await say.load(); + const metadata = merge( + { + title: 'Evaluate', + description: say`Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything.`, + keywords: [ + say`online playground`, + say`code playground`, + say`code sandbox`, + say`online compiler`, + say`online interpreter`, + ], + } satisfies Metadata, + overrides?.(say) ?? {}, + ); + + return { + metadataBase: new URL(env.WEBSITE_URL), + ...metadata, + openGraph: { + type: 'website', + title: metadata.title, + description: metadata.description, + locale: say.locale, + alternateLocale: say.locales, + siteName: metadata.title, + url: new URL(`/${say.locale}${pathname}`, env.WEBSITE_URL), + }, + twitter: { + card: 'summary', + title: metadata.title, + description: metadata.description, + site: '@evaluatedotrun', + creator: '@apteryxxyz', + }, + alternates: { + canonical: pathname, + languages: say.locales.reduce>((acc, locale) => { + acc[locale] = `/${locale}${pathname}`; + return acc; + }, {}), + }, + } satisfies Metadata; +} diff --git a/apps/website/src/app/error.tsx b/apps/website/src/app/error.tsx deleted file mode 100644 index 0888bb6c..00000000 --- a/apps/website/src/app/error.tsx +++ /dev/null @@ -1,13 +0,0 @@ -'use client'; - -export default function PlaygroundNotFound() { - return ( -
- 500 -

Internal Error

-

- Woah, something went wrong, please try again later. -

-
- ); -} diff --git a/apps/website/src/app/manifest.ts b/apps/website/src/app/manifest.ts index 47304333..b5f5eecb 100644 --- a/apps/website/src/app/manifest.ts +++ b/apps/website/src/app/manifest.ts @@ -1,18 +1,26 @@ -export default function Manifest() { - return { +import type { MetadataRoute } from 'next'; +import say from '~/i18n'; + +export default async function Manifest(): Promise { + await say.load(); + + const shortcuts = say.map((say, locale) => ({ name: 'Evaluate', short_name: 'Evaluate', + description: say`Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything.`, + url: locale === say.locales[0] ? '/' : `/${locale}`, + })); + + return { + ...shortcuts[0], theme_color: '#2fc186', background_color: '#ffffff', - description: - 'Explore a diverse range of programming languages and tools with our comprehensive online platform. Evaluate is the ultimate code evaluation tool, quickly evaluate code snippets in any programming language, with optional input and command-line arguments. Try it now!', - display: 'standalone', - lang: 'en', scope: '/', start_url: '/', icons: [ { src: '/images/icon/192.png', sizes: '192x192', type: 'image/png' }, { src: '/images/icon/512.png', sizes: '512x512', type: 'image/png' }, ], + shortcuts: shortcuts.slice(1), }; } diff --git a/apps/website/src/app/metadata.ts b/apps/website/src/app/metadata.ts deleted file mode 100644 index 4435611c..00000000 --- a/apps/website/src/app/metadata.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { merge } from 'es-toolkit/object'; -import type { Metadata } from 'next/types'; -import env from '~/env'; - -export function generateBaseMetadata( - pathname: string, - overrides: Metadata = {}, -) { - const metadata = merge( - { - metadataBase: new URL(env.WEBSITE_URL), - title: 'Evaluate', - description: - 'Test code in any programming language with Evaluate! Quickly run snippets with optional input and command-line arguments using our easy online platform. Try it now!', - keywords: [ - 'Evaluate', - 'Code', - 'Programming', - 'Languages', - 'Tools', - 'Playgrounds', - 'Online', - 'Platform', - 'Code Evaluation', - 'Code Snippets', - 'Programming Languages', - 'Input', - 'Command-Line', - ].map((k) => k.toLowerCase()), - } satisfies Metadata, - overrides, - ); - - return { - ...metadata, - openGraph: { - type: 'website', - title: metadata.title, - description: metadata.description, - locale: 'en', - siteName: metadata.title, - url: new URL(pathname, metadata.metadataBase), - }, - twitter: { - card: 'summary', - title: metadata.title, - description: metadata.description, - site: '@evaluatedotrun', - creator: '@apteryxxyz', - }, - } satisfies Metadata; -} diff --git a/apps/website/src/app/not-found.tsx b/apps/website/src/app/not-found.tsx deleted file mode 100644 index b92bcd6a..00000000 --- a/apps/website/src/app/not-found.tsx +++ /dev/null @@ -1,11 +0,0 @@ -export default function PlaygroundNotFound() { - return ( -
- 404 -

Not Found

-

- Hmm, we couldn't find the resource you're looking for. -

-
- ); -} diff --git a/apps/website/src/app/sitemap.ts b/apps/website/src/app/sitemap.ts deleted file mode 100644 index 9fb5a3f7..00000000 --- a/apps/website/src/app/sitemap.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { readFile } from 'node:fs/promises'; -import { join } from 'node:path'; -import { fetchAllRuntimes } from '@evaluate/runtimes'; -import type { MetadataRoute } from 'next/types'; -import env from '~/env'; - -interface RoutesManifest { - staticRoutes: { page: string }[]; - dynamicRoutes: { page: string }[]; -} - -async function loadStaticPaths(url: URL): Promise { - const manifestPath = join(process.cwd(), '.next', 'routes-manifest.json'); - const manifest = await readFile(manifestPath, 'utf8') - .then((c) => JSON.parse(c) as RoutesManifest) - .catch(() => ({ staticRoutes: [], dynamicRoutes: [] })); - - return manifest.staticRoutes - .filter((r) => !r.page.startsWith('/_')) - .map((r) => ({ - url: `${url}${r.page}`, - lastModified: new Date(), - })); -} - -async function loadDynamicPaths(url: URL): Promise { - const runtimes = await fetchAllRuntimes(); - return runtimes.map((r) => ({ - url: `${url}/playgrounds/${r.id}`, - lastModified: new Date(), - })); -} - -export default async function getSitemap() { - const staticPaths = await loadStaticPaths(env.WEBSITE_URL); - const dynamicPaths = await loadDynamicPaths(env.WEBSITE_URL); - return [...staticPaths, ...dynamicPaths].map((r) => ({ - ...r, - url: r.url.replaceAll('//', '/'), - })); -} diff --git a/apps/website/src/components/editor/execute-bar/index.tsx b/apps/website/src/components/editor/execute-bar/index.tsx index 9da653b0..c4472f3f 100644 --- a/apps/website/src/components/editor/execute-bar/index.tsx +++ b/apps/website/src/components/editor/execute-bar/index.tsx @@ -14,6 +14,7 @@ import { executeCode, FilesOptions } from '@evaluate/execute'; import { useEventListener } from '@evaluate/hooks/event-listener'; import type { Runtime } from '@evaluate/runtimes'; import { zodResolver } from '@hookform/resolvers/zod'; +import { Say } from '@sayable/react'; import { useMutation } from '@tanstack/react-query'; import { Loader2Icon, PlayIcon } from 'lucide-react'; import { useCallback, useEffect, useState } from 'react'; @@ -128,7 +129,7 @@ export function ExecuteBar({ runtime }: { runtime: Runtime }) { )} {files.length === 0 && ( - No files found + No files found )} @@ -144,9 +145,11 @@ export function ExecuteBar({ runtime }: { runtime: Runtime }) { ) : ( )} - Execute -  {runtime.name} - Code + + Execute + {runtime.name} + Code + diff --git a/apps/website/src/components/editor/hooks.ts b/apps/website/src/components/editor/hooks.ts index 31242304..8cf9969a 100644 --- a/apps/website/src/components/editor/hooks.ts +++ b/apps/website/src/components/editor/hooks.ts @@ -23,7 +23,7 @@ export function useEditor() { const languageExtension = useMemo(() => { const language = detectLanguage(focused?.name); - return loadLanguage(language)!; + return loadLanguage(language) ?? loadLanguage('textile')!; }, [focused?.name]); const shortcutsExtension = useMemo(() => { diff --git a/apps/website/src/components/editor/opened-files/button.tsx b/apps/website/src/components/editor/opened-files/button.tsx index e3207233..689a49b8 100644 --- a/apps/website/src/components/editor/opened-files/button.tsx +++ b/apps/website/src/components/editor/opened-files/button.tsx @@ -1,8 +1,10 @@ 'use client'; import { Button } from '@evaluate/components/button'; +import { useSay } from '@sayable/react'; import { XIcon } from 'lucide-react'; import { useCallback, useMemo } from 'react'; +import type { Sayable } from 'sayable'; import type { File } from 'virtual-file-explorer-backend'; import { useWatch } from '~/components/explorer/use'; import { MaterialIcon } from '~/components/material-icon'; @@ -16,6 +18,7 @@ export namespace OpenedFileButton { export function OpenedFileButton({ file, others }: OpenedFileButton.Props) { useWatch(file, ['name']); + const say = useSay() as Sayable; const handleClick = useCallback(() => file.select().focus(), [file]); const handleCloseClick = useCallback( @@ -35,10 +38,10 @@ export function OpenedFileButton({ file, others }: OpenedFileButton.Props) { ); const name = useMemo(() => { - if (file.name === '::args::') return 'CLI Arguments'; - if (file.name === '::input::') return 'STD Input'; - return file.name || 'Untitled'; - }, [file.name]); + if (file.name === '::args::') return say`CLI Arguments`; + if (file.name === '::input::') return say`STD Input`; + return file.name || say`Untitled`; + }, [say, file.name]); return ( @@ -74,7 +77,9 @@ export function ExplorerFileItem({ file, meta }: ExplorerFileItem.Props) { >
- Delete File + + Delete File +
diff --git a/apps/website/src/components/explorer/index.tsx b/apps/website/src/components/explorer/index.tsx index d1b5a9e9..56fbcb19 100644 --- a/apps/website/src/components/explorer/index.tsx +++ b/apps/website/src/components/explorer/index.tsx @@ -3,11 +3,13 @@ import { Button } from '@evaluate/components/button'; import { ScrollArea } from '@evaluate/components/scroll-area'; import { Separator } from '@evaluate/components/separator'; +import { Say, useSay } from '@sayable/react'; import { FilePlusIcon, FolderPlusIcon, HardDriveDownloadIcon, } from 'lucide-react'; +import type { Sayable } from 'sayable'; import { twMerge as cn } from 'tailwind-merge'; import type { File } from 'virtual-file-explorer-backend'; import { ExplorerFileItem } from './file/item'; @@ -21,6 +23,8 @@ import { import { useExplorer, useWatch } from './use'; export function Explorer() { + const say = useSay() as Sayable; + const explorer = useExplorer(); useWatch(explorer, ['children']); const args = explorer.children // @@ -36,41 +40,49 @@ export function Explorer() { return (
- Explorer + + Explorer + {/* TODO: Upload button? Would likely need a confirm dialog as this will overwrite the current content */}
@@ -93,7 +105,9 @@ export function Explorer() { {explorer.children.length <= 2 && (
- This is the file explorer. Create a new file to get started. + + This is the file explorer. Create a new file to get started. +
)} diff --git a/apps/website/src/components/explorer/name.tsx b/apps/website/src/components/explorer/name.tsx index 3ad9f43e..13d98754 100644 --- a/apps/website/src/components/explorer/name.tsx +++ b/apps/website/src/components/explorer/name.tsx @@ -6,16 +6,13 @@ import { PopoverAnchor, PopoverContent, } from '@evaluate/components/popover'; +import { useSay } from '@sayable/react'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; +import type { Sayable } from 'sayable'; import { twMerge as cn } from 'tailwind-merge'; import type { File, Folder } from 'virtual-file-explorer-backend'; const InvalidNameRegex = /(^\s|\s$|^\.\.|\.$|[\\/:*?"<>|])/; -const ErrorMessages = { - EmptyName: 'A name must be provided.', - InvalidName: 'This name is invalid.', - NameExists: 'This name already exists.', -}; export namespace ExplorerItemName { export interface Props { @@ -27,6 +24,7 @@ export namespace ExplorerItemName { export function ExplorerItemName(props: ExplorerItemName.Props) { const { item, naming, setNaming } = props; + const say = useSay() as Sayable; const inputRef = useRef(null); const [errorMessage, setErrorMessage] = useState(); @@ -36,13 +34,13 @@ export function ExplorerItemName(props: ExplorerItemName.Props) { const handleChange = useCallback(() => { const name = inputRef.current?.value ?? ''; - if (!name) return setErrorMessage(ErrorMessages.EmptyName); + if (!name) return setErrorMessage(say`A name must be provided.`); if (InvalidNameRegex.test(name) || name.length > 255) - return setErrorMessage(ErrorMessages.InvalidName); + return setErrorMessage(say`This name is invalid.`); if (item.parent?.children.find((c) => c !== item && c.name === name)) - return setErrorMessage(ErrorMessages.NameExists); + return setErrorMessage(say`This name already exists.`); setErrorMessage(undefined); - }, [item]); + }, [say, item]); const handleKeyUp = useCallback( (ev: React.KeyboardEvent) => { @@ -80,10 +78,10 @@ export function ExplorerItemName(props: ExplorerItemName.Props) { ); const name = useMemo(() => { - if (item.name === '::args::') return 'CLI Arguments'; - if (item.name === '::input::') return 'STD Input'; + if (item.name === '::args::') return say`CLI Arguments`; + if (item.name === '::input::') return say`STD Input`; return item.name; - }, [item.name]); + }, [say, item.name]); return ( diff --git a/apps/website/src/components/explorer/use.tsx b/apps/website/src/components/explorer/use.tsx index 6f6ff41a..16ce290e 100644 --- a/apps/website/src/components/explorer/use.tsx +++ b/apps/website/src/components/explorer/use.tsx @@ -9,6 +9,7 @@ import { } from '@evaluate/execute'; import { useEventListener } from '@evaluate/hooks/event-listener'; import { getRuntimeExamples, type Runtime } from '@evaluate/runtimes'; +import { useSay } from '@sayable/react'; import { createContext, useCallback, @@ -19,6 +20,7 @@ import { } from 'react'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; +import type { Sayable } from 'sayable'; import { File, Folder } from 'virtual-file-explorer-backend'; import { useHashFragment } from '~/hooks/hash-fragment'; @@ -34,6 +36,8 @@ export function ExplorerProvider({ }: React.PropsWithChildren<{ runtime: Runtime; }>) { + const say = useSay() as Sayable; + const [hash, setHash] = useHashFragment(); const example = useMemo( () => getRuntimeExamples(runtime.id)?.[0], @@ -61,9 +65,9 @@ export function ExplorerProvider({ e.preventDefault(); setHash(encodeExplorer(root)); navigator.clipboard.writeText(location.href); - toast.info('Saved and copied URL to clipboard'); + toast.info(say`Saved and copied URL to clipboard`); }, - [setHash, root], + [say, setHash, root], ); useEventListener('copy-url' as never, saveAndCopyUrl); diff --git a/apps/website/src/components/footer/index.tsx b/apps/website/src/components/footer/index.tsx index 04c941fd..f7e9b62b 100644 --- a/apps/website/src/components/footer/index.tsx +++ b/apps/website/src/components/footer/index.tsx @@ -1,8 +1,8 @@ 'use client'; -import Link from 'next/link'; import { usePathname } from 'next/navigation'; import { twMerge as cn } from 'tailwind-merge'; +import { LocalisedLink } from '../localised-link'; export function Footer(p: { className?: string }) { const pathname = usePathname(); @@ -18,19 +18,19 @@ export function Footer(p: { className?: string }) { )} >

- Privacy Policy - + - Terms of Service - +

); diff --git a/apps/website/src/components/header/index.tsx b/apps/website/src/components/header/index.tsx index d339c470..c23c21fc 100644 --- a/apps/website/src/components/header/index.tsx +++ b/apps/website/src/components/header/index.tsx @@ -3,14 +3,16 @@ import { Button } from '@evaluate/components/button'; import { Sheet, SheetBody, SheetTrigger } from '@evaluate/components/sheet'; import { useMediaQuery } from '@evaluate/hooks/media-query'; +import { Say } from '@sayable/react'; import { GithubIcon, MenuIcon } from 'lucide-react'; import Image from 'next/image'; -import Link from 'next/link'; -import { usePathname } from 'next/navigation'; +import { useParams } from 'next/navigation'; import type React from 'react'; import { Children, useCallback, useState } from 'react'; import { twMerge as cn } from 'tailwind-merge'; +import { LocalisedLink } from '../localised-link'; import { DiscordIcon } from './discord-icon'; +import { LocaleSwitcher } from './locale-switcher'; import { ThemeSwitcher } from './theme-switcher'; export function Header() { @@ -23,13 +25,15 @@ export function Header() { return true; }, []); - const pathname = usePathname(); - const isFullWidth = pathname.startsWith('/playgrounds/'); + const isFullWidth = 'playground' in useParams(); return (
@@ -124,7 +133,9 @@ function MobileNavigationWrapper( className="ml-auto aspect-square" > - Toggle Mobile Navigation + + Toggle Mobile Navigation + diff --git a/apps/website/src/components/header/locale-switcher.tsx b/apps/website/src/components/header/locale-switcher.tsx new file mode 100644 index 00000000..876fb0d7 --- /dev/null +++ b/apps/website/src/components/header/locale-switcher.tsx @@ -0,0 +1,61 @@ +'use client'; + +import { Button } from '@evaluate/components/button'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@evaluate/components/dropdown-menu'; +import { Say, useSay } from '@sayable/react'; +import { LanguagesIcon } from 'lucide-react'; +import Link from 'next/link'; +import { useMemo } from 'react'; + +export function LocaleSwitcher() { + const say = useSay(); + + return ( + + + + + + + {say.locales.map((locale) => ( + + + + ))} + + + ); +} + +function LocaleSwitcherItem({ locale, ...props }: { locale: string }) { + const localisedHref = useMemo(() => { + if (typeof window === 'undefined') return ''; + const url = new URL(window.location.toString()); + const segments = url.pathname.split('/').filter(Boolean); + if (/^[a-z]{2}(-[A-Z]{2})?$/.test(segments[0]!)) segments[0] = locale; + else segments.unshift(locale); + url.pathname = `/${segments.join('/')}`; + url.searchParams.set('spl', ''); + return url.toString(); + }, [locale]); + + return ( + + {new Intl.DisplayNames([locale], { type: 'language' }).of(locale)} + + ); +} diff --git a/apps/website/src/components/header/theme-switcher.tsx b/apps/website/src/components/header/theme-switcher.tsx index 2d9ea4bb..576d34b2 100644 --- a/apps/website/src/components/header/theme-switcher.tsx +++ b/apps/website/src/components/header/theme-switcher.tsx @@ -1,6 +1,7 @@ 'use client'; import { Button } from '@evaluate/components/button'; +import { Say } from '@sayable/react'; import { MoonIcon, SunIcon } from 'lucide-react'; import { useTheme } from 'next-themes'; import { useCallback } from 'react'; @@ -21,7 +22,9 @@ export function ThemeSwitcher() { > - Toggle Theme + + Toggle Theme + ); } diff --git a/apps/website/src/components/languages.ts b/apps/website/src/components/languages.ts index 55fccd35..9a241bd1 100644 --- a/apps/website/src/components/languages.ts +++ b/apps/website/src/components/languages.ts @@ -48,135 +48,123 @@ export function makeIconUrl(icon: string) { const LANGUAGE_PATTERNS = { apl: /\.(apl)$/, - asciiArmor: /\.(asc|pgp)$/, - asterisk: /\.(asterisk)$/, + asc: /\.(asc|pgp)$/, c: /\.(c|h)$/, - csharp: /\.(cs)$/, + cs: /\.(cs)$/, scala: /\.(scala|sc)$/, solidity: /\.(sol)$/, - kotlin: /\.(kt|kts)$/, - shader: /\.(shader)$/, + kt: /\.(kt|kts)$/, nesC: /\.(nc)$/, - objectiveC: /\.(m|h)$/, - objectiveCpp: /\.(mm|h)$/, - squirrel: /\.(nut)$/, - ceylon: /\.(ceylon)$/, + mm: /\.(mm|h)$/, + nut: /\.(nut)$/, dart: /\.(dart)$/, cmake: /^(CMakeLists\.txt|.*\.cmake)$/, - cobol: /\.(cob|cbl)$/, - commonLisp: /\.(lisp|cl|lsp)$/, - crystal: /\.(cr)$/, + cob: /\.(cob|cbl)$/, + lisp: /\.(lisp|cl|lsp)$/, + cr: /\.(cr)$/, cypher: /\.(cql)$/, d: /\.(d|di)$/, diff: /\.(diff|patch)$/, dtd: /\.(dtd)$/, dylan: /\.(dylan)$/, - ebnf: /\.(ebnf)$/, ecl: /\.(ecl)$/, - eiffel: /\.(e)$/, + e: /\.(e)$/, elm: /\.(elm)$/, factor: /\.(factor)$/, - fcl: /\.(fcl)$/, forth: /\.(fs|fth|4th)$/, - fortran: /\.(f|for|f90|f95)$/, - gas: /\.(s|asm)$/, - gherkin: /\.(feature)$/, + f: /\.(f|for|f90|f95)$/, + s: /\.(s|asm)$/, + feature: /\.(feature)$/, groovy: /\.(groovy|grt|gtpl|gvy)$/, - haskell: /\.(hs)$/, - haxe: /\.(hx)$/, + hs: /\.(hs)$/, + hx: /\.(hx)$/, http: /\.(http)$/, idl: /\.(idl)$/, - jinja2: /\.(j2|jinja2)$/, - mathematica: /\.(m|ma|nb|wl)$/, + j2: /\.(j2|jinja2)$/, + nb: /\.(m|ma|nb|wl)$/, mbox: /\.(mbox)$/, - mirc: /\.(mrc)$/, - modelica: /\.(mo)$/, + mrc: /\.(mrc)$/, + mo: /\.(mo)$/, mscgen: /\.(mscgen)$/, - mumps: /\.(mps)$/, + mps: /\.(mps)$/, nsis: /\.(nsi|nsh)$/, - ntriples: /\.(nt)$/, - octave: /\.(m)$/, + nt: /\.(nt)$/, + m: /\.(m)$/, oz: /\.(oz)$/, pig: /\.(pig)$/, - properties: /\.(properties)$/, - protobuf: /\.(proto)$/, - puppet: /\.(pp)$/, + properties: /\.(properties|ini)$/, + proto: /\.(proto)$/, + pp: /\.(pp)$/, q: /\.(q)$/, sas: /\.(sas)$/, sass: /\.(sass|scss)$/, liquid: /\.(liquid)$/, - mermaid: /\.(mmd)$/, nix: /\.(nix)$/, svelte: /\.(svelte)$/, sieve: /\.(sieve)$/, - smalltalk: /\.(st)$/, + st: /\.(st)$/, solr: /\.(solr)$/, - sparql: /\.(rq|sparql)$/, - spreadsheet: /\.(xls|xlsx|ods)$/, - stex: /\.(tex|sty|cls|ltx)$/, + rq: /\.(rq|sparql)$/, + text: /\.(tex|sty|cls|ltx)$/, textile: /\.(textile)$/, - tiddlyWiki: /\.(tid|tiddlywiki)$/, - tiki: /\.(tiki)$/, - troff: /\.(t|tr|roff|man|me|ms)$/, + 1: /\.([1-9]|t|tr|roff|man|me|ms)$/, ttcn: /\.(ttcn|ttcn3)$/, turtle: /\.(ttl)$/, - velocity: /\.(vm)$/, - verilog: /\.(v|vh|sv|svh)$/, + vtl: /\.(vm)$/, + sv: /\.(v|vh|sv|svh)$/, vhdl: /\.(vhdl|vhd)$/, - webIDL: /\.(webidl)$/, - xQuery: /\.(xq|xql|xqm|xqy)$/, + webidl: /\.(webidl)$/, + xquery: /\.(xq|xql|xqm|xqy)$/, yacas: /\.(ys)$/, z80: /\.(z80)$/, wast: /\.(wast|wat)$/, - javascript: /\.(js|cjs|mjs)$/, + js: /\.(js|cjs|mjs)$/, jsx: /\.(jsx)$/, - typescript: /\.(ts)$/, + ts: /\.(ts)$/, tsx: /\.(tsx)$/, vue: /\.(vue)$/, - angular: /\.(angular)$/, json: /\.(json)$/, html: /\.(html|htm)$/, css: /\.(css)$/, - python: /\.(py)$/, - markdown: /\.(md|markdown)$/, + py: /\.(py)$/, + md: /\.(md|markdown)$/, xml: /\.(xml|xsl|xsd)$/, sql: /\.(sql)$/, - mysql: /\.(mysql)$/, - pgsql: /\.(pgsql)$/, java: /\.(java)$/, - rust: /\.(rs)$/, + rs: /\.(rs)$/, cpp: /\.(cpp|cc|cxx|h|hh|hpp)$/, lezer: /\.(lezer)$/, php: /\.(php)$/, go: /\.(go)$/, - shell: /\.(sh|bash)$/, + sh: /\.(sh|bash)$/, lua: /\.(lua)$/, swift: /\.(swift)$/, tcl: /\.(tcl|tk)$/, yaml: /\.(yaml|yml)$/, vb: /\.(vb)$/, - powershell: /\.(ps1)$/, - brainfuck: /\.(bf)$/, - stylus: /\.(styl)$/, - erlang: /\.(erl|hrl)$/, + ps1: /\.(ps1)$/, + bf: /\.(bf)$/, + styl: /\.(styl)$/, + erl: /\.(erl|hrl)$/, nginx: /\.(nginx|conf)$/, - perl: /\.(pl|pm)$/, - ruby: /\.(rb)$/, - pascal: /\.(pas)$/, - livescript: /\.(ls)$/, + pl: /\.(pl|pm)$/, + rb: /\.(rb)$/, + pas: /\.(pas)$/, + ls: /\.(ls)$/, less: /\.(less)$/, - scheme: /\.(scm|ss)$/, + ss: /\.(scm|ss)$/, toml: /\.(toml)$/, - vbscript: /\.(vbs)$/, - clojure: /\.(clj|cljs|cljc)$/, - coffeescript: /\.(coffee|litcoffee)$/, - julia: /\.(jl)$/, - dockerfile: /^Dockerfile$/, + vbs: /\.(vbs)$/, + clj: /\.(clj|cljs|cljc)$/, + coffee: /\.(coffee|litcoffee)$/, + jl: /\.(jl)$/, r: /\.(r)$/, }; -export function detectLanguage(fileName = '') { - const language = Object.entries(LANGUAGE_PATTERNS) // - .find(([, r]) => r.test(fileName)); - return (language ? language[0] : 'textile') as keyof typeof LANGUAGE_PATTERNS; +export function detectLanguage(filename = '') { + const ext = filename.split('.').reverse()[0]!; + if (ext in LANGUAGE_PATTERNS) return ext; + for (const [id, pattern] of Object.entries(LANGUAGE_PATTERNS)) + if (pattern.test(filename)) return id; + return 'textile'; } diff --git a/apps/website/src/components/localised-link.tsx b/apps/website/src/components/localised-link.tsx new file mode 100644 index 00000000..1aade54e --- /dev/null +++ b/apps/website/src/components/localised-link.tsx @@ -0,0 +1,13 @@ +'use client'; + +import { useSay } from '@sayable/react'; +import Link from 'next/link'; + +export function LocalisedLink({ + href, + ...props +}: React.ComponentProps & { locale?: string }) { + const say = useSay(); + if (say.locale !== say.locales[0]) href = `/${say.locale}${href}`; + return ; +} diff --git a/apps/website/src/components/providers.tsx b/apps/website/src/components/providers.tsx index 6f0e2864..5af329e6 100644 --- a/apps/website/src/components/providers.tsx +++ b/apps/website/src/components/providers.tsx @@ -23,6 +23,7 @@ const HTTP_STATUS_TO_NOT_RETRY = [400, 401, 403, 404]; import { Toaster } from '@evaluate/components/toast'; import { TooltipProvider } from '@evaluate/components/tooltip'; +import { SayProvider } from '@sayable/react'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { SpeedInsights } from '@vercel/speed-insights/next'; @@ -30,7 +31,9 @@ import { useEffect, useState } from 'react'; import { injectPageEventCapturing } from '~/services/posthog'; import { BreakpointIndicator } from './breakpoint-indicator'; -export function BodyProviders(p: React.PropsWithChildren) { +export function BodyProviders( + p: React.PropsWithChildren>, +) { const [queryClient] = useState( () => new QueryClient({ @@ -55,7 +58,7 @@ export function BodyProviders(p: React.PropsWithChildren) { return ( - {p.children} + {p.children} diff --git a/apps/website/src/components/terminal/html-preview.tsx b/apps/website/src/components/terminal/html-preview.tsx index 62f8c821..d3fd6377 100644 --- a/apps/website/src/components/terminal/html-preview.tsx +++ b/apps/website/src/components/terminal/html-preview.tsx @@ -1,5 +1,6 @@ 'use client'; +import { Say } from '@sayable/react'; import DOMPurify from 'dompurify'; import { Children, useEffect, useState } from 'react'; @@ -36,7 +37,7 @@ export function HtmlPreview({ children }: React.PropsWithChildren) { {!sanitisedHtml && (
- Nothing to render here. + Nothing to render here.
)} diff --git a/apps/website/src/components/terminal/index.tsx b/apps/website/src/components/terminal/index.tsx index fd39ba8d..3ad27f9e 100644 --- a/apps/website/src/components/terminal/index.tsx +++ b/apps/website/src/components/terminal/index.tsx @@ -9,6 +9,7 @@ import { TabsTrigger, } from '@evaluate/components/tabs'; import type { Runtime } from '@evaluate/runtimes'; +import { Say } from '@sayable/react'; import { CodeIcon, FullscreenIcon, @@ -28,6 +29,8 @@ export namespace Terminal { export function Terminal({ runtime }: Terminal.Props) { const { result, setResult } = useTerminal(); + console.log(result); + return (
@@ -39,7 +42,9 @@ export function Terminal({ runtime }: Terminal.Props) { className="relative bg-card text-foreground/70 hover:text-foreground data-[state=active]:bg-muted data-[state=active]:text-foreground" > -  Run + +  Run + {result?.run.output && ( )} @@ -52,7 +57,9 @@ export function Terminal({ runtime }: Terminal.Props) { className="relative bg-card text-foreground/70 hover:text-foreground data-[state=active]:bg-muted data-[state=active]:text-foreground" > -  Compile + +  Compile + {result?.compile?.output && ( )} @@ -65,7 +72,9 @@ export function Terminal({ runtime }: Terminal.Props) { className="relative bg-card text-foreground/70 hover:text-foreground data-[state=active]:bg-muted data-[state=active]:text-foreground" > -  Preview + +  Preview + @@ -77,7 +86,9 @@ export function Terminal({ runtime }: Terminal.Props) { disabled={!result} > - Clear + + Clear + @@ -90,21 +101,21 @@ export function Terminal({ runtime }: Terminal.Props) {
{result?.run.expired ? ( - <> + Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance. - - ) : result?.run.output?.trim() === '' ? ( - <> + + ) : result && !result.run.output ? ( + Your code executed successfully; however, it did not generate any output for the console. - + ) : ( - <> - Write your code and press{' '} - to execute it. The - results will be displayed here. - + + Write your code and press + to + execute it. The results will be displayed here. + )}
@@ -120,16 +131,16 @@ export function Terminal({ runtime }: Terminal.Props) {
{result?.compile?.expired ? ( - <> + Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation. - + ) : ( - <> + If this runtime requires compilation, the output will be displayed here. - + )}
@@ -144,7 +155,9 @@ export function Terminal({ runtime }: Terminal.Props) { {!(runtime.id === 'php') && (
- This runtime does not have a way to display any preview. + + This runtime does not have a way to display any preview. +
)} diff --git a/apps/website/src/i18n.ts b/apps/website/src/i18n.ts new file mode 100644 index 00000000..7f6dc175 --- /dev/null +++ b/apps/website/src/i18n.ts @@ -0,0 +1,11 @@ +import 'server-only'; +import { Sayable } from 'sayable'; + +export default new Sayable({ + en: () => + import('./locales/en/messages.json', { with: { type: 'json' } }) // + .then((m) => m.default), + fr: () => + import('./locales/fr/messages.json', { with: { type: 'json' } }) // + .then((m) => m.default), +}); diff --git a/apps/website/src/locales/en/messages.po b/apps/website/src/locales/en/messages.po new file mode 100644 index 00000000..ffc92b14 --- /dev/null +++ b/apps/website/src/locales/en/messages.po @@ -0,0 +1,267 @@ +msgid "" +msgstr "" +"POT-Creation-Date: 2025-10-10 09:16+1300\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: en\n" +"X-Generator: sayable\n" + +#: src/components/terminal/html-preview.tsx:40 +msgid "Nothing to render here." +msgstr "Nothing to render here." + +#: src/components/terminal/index.tsx:46 +msgid "Run" +msgstr "Run" + +#: src/components/terminal/index.tsx:61 +msgid "Compile" +msgstr "Compile" + +#: src/components/terminal/index.tsx:76 +msgid "Preview" +msgstr "Preview" + +#: src/components/terminal/index.tsx:90 +msgid "Clear" +msgstr "Clear" + +#: src/components/terminal/index.tsx:104 +msgid "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." +msgstr "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." + +#: src/components/terminal/index.tsx:109 +msgid "Your code executed successfully; however, it did not generate any output for the console." +msgstr "Your code executed successfully; however, it did not generate any output for the console." + +#: src/components/terminal/index.tsx:114 +msgid "Write your code and press <0/> to execute it. The results will be displayed here." +msgstr "Write your code and press <0/> to execute it. The results will be displayed here." + +#: src/components/terminal/index.tsx:134 +msgid "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." +msgstr "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." + +#: src/components/terminal/index.tsx:140 +msgid "<0>If this runtime requires compilation, the output will be displayed here." +msgstr "<0>If this runtime requires compilation, the output will be displayed here." + +#: src/components/terminal/index.tsx:158 +msgid "This runtime does not have a way to display any preview." +msgstr "This runtime does not have a way to display any preview." + +#: src/components/header/index.tsx:51 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:12 +msgid "Playgrounds" +msgstr "Playgrounds" + +#: src/components/header/index.tsx:62 +msgid "Browser Extension" +msgstr "Browser Extension" + +#: src/components/header/index.tsx:64 +msgid "new" +msgstr "new" + +#: src/components/header/index.tsx:71 +msgid "Discord Bot" +msgstr "Discord Bot" + +#: src/components/header/index.tsx:138 +msgid "Toggle Mobile Navigation" +msgstr "Toggle Mobile Navigation" + +#: src/components/header/locale-switcher.tsx:22 +msgid "Change Language" +msgstr "Change Language" + +#: src/components/header/theme-switcher.tsx:26 +msgid "Toggle Theme" +msgstr "Toggle Theme" + +#: src/components/explorer/index.tsx:44 +msgid "Explorer" +msgstr "Explorer" + +#: src/components/explorer/index.tsx:50 +#: src/components/explorer/index.tsx:58 +msgid "New File" +msgstr "New File" + +#: src/components/explorer/index.tsx:63 +#: src/components/explorer/index.tsx:71 +msgid "New Folder" +msgstr "New Folder" + +#: src/components/explorer/index.tsx:76 +#: src/components/explorer/index.tsx:84 +msgid "Download As Zip" +msgstr "Download As Zip" + +#: src/components/explorer/index.tsx:108 +msgid "This is the file explorer. Create a new file to get started." +msgstr "This is the file explorer. Create a new file to get started." + +#: src/components/explorer/name.tsx:37 +msgid "A name must be provided." +msgstr "A name must be provided." + +#: src/components/explorer/name.tsx:39 +msgid "This name is invalid." +msgstr "This name is invalid." + +#: src/components/explorer/name.tsx:41 +msgid "This name already exists." +msgstr "This name already exists." + +#: src/components/explorer/name.tsx:81 +#: src/components/editor/opened-files/button.tsx:41 +msgid "CLI Arguments" +msgstr "CLI Arguments" + +#: src/components/explorer/name.tsx:82 +#: src/components/editor/opened-files/button.tsx:42 +msgid "STD Input" +msgstr "STD Input" + +#: src/components/explorer/use.tsx:68 +msgid "Saved and copied URL to clipboard" +msgstr "Saved and copied URL to clipboard" + +#: src/components/explorer/file/item.tsx:65 +msgid "Rename File" +msgstr "Rename File" + +#: src/components/explorer/file/item.tsx:81 +msgid "Delete File" +msgstr "Delete File" + +#: src/components/editor/opened-files/button.tsx:43 +#: src/components/editor/opened-files/button.tsx:55 +msgid "Untitled" +msgstr "Untitled" + +#: src/components/editor/execute-bar/index.tsx:132 +msgid "No files found" +msgstr "No files found" + +#: src/components/editor/execute-bar/index.tsx:148 +msgid "<0>Execute <1>{2} <3>Code" +msgstr "<0>Execute <1>{2} <3>Code" + +#: src/app/manifest.ts:10 +#: src/app/[locale]/metadata.ts:14 +msgid "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." +msgstr "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." + +#: src/app/[locale]/metadata.ts:16 +msgid "online playground" +msgstr "online playground" + +#: src/app/[locale]/metadata.ts:17 +msgid "code playground" +msgstr "code playground" + +#: src/app/[locale]/metadata.ts:18 +msgid "code sandbox" +msgstr "code sandbox" + +#: src/app/[locale]/metadata.ts:19 +msgid "online compiler" +msgstr "online compiler" + +#: src/app/[locale]/metadata.ts:20 +msgid "online interpreter" +msgstr "online interpreter" + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:10 +msgid "The <0>Evaluate Discord Bot" +msgstr "The <0>Evaluate Discord Bot" + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:15 +msgid "Run code snippets directly in your Discord server with the Evaluate bot! Evaluate supports over 70 languages and is perfect for quickly testing code and sharing results with your friends." +msgstr "Run code snippets directly in your Discord server with the Evaluate bot! Evaluate supports over 70 languages and is perfect for quickly testing code and sharing results with your friends." + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:37 +msgid "Evaluate for <0>Discord" +msgstr "Evaluate for <0>Discord" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:11 +msgid "The <0>Evaluate Browser Extension" +msgstr "The <0>Evaluate Browser Extension" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:16 +msgid "When you stumble upon code snippets while browsing the web, wouldn't it be great to execute them instantly? Look no further—the Evaluate extension is your solution, with its over 70 supported languages and quick code execution capabilities." +msgstr "When you stumble upon code snippets while browsing the web, wouldn't it be great to execute them instantly? Look no further—the Evaluate extension is your solution, with its over 70 supported languages and quick code execution capabilities." + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:42 +msgid "Evaluate for <0>Chrome" +msgstr "Evaluate for <0>Chrome" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:128 +msgid "Evaluate for <0>Firefox" +msgstr "Evaluate for <0>Firefox" + +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:15 +msgid "Explore and run code in different programming languages and runtimes." +msgstr "Explore and run code in different programming languages and runtimes." + +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:21 +msgid "Powered by the Piston execution engine." +msgstr "Powered by the Piston execution engine." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:80 +msgid "Choose a playground!" +msgstr "Choose a playground!" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:93 +msgid "Search runtime playgrounds..." +msgstr "Search runtime playgrounds..." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:105 +msgid "Clear Search" +msgstr "Clear Search" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:115 +msgid "Sort by..." +msgstr "Sort by..." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:117 +msgid "Toggle Sort By Dropdown" +msgstr "Toggle Sort By Dropdown" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 +msgid "Sort By" +msgstr "Sort By" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 +msgid "Popularity" +msgstr "Popularity" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:129 +msgid "Name" +msgstr "Name" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card.tsx:83 +msgid "Open {0} Playground" +msgstr "Open {0} Playground" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:10 +msgid "Not Found" +msgstr "Not Found" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:13 +msgid "Hmm, we couldn't find the playground you're looking for." +msgstr "Hmm, we couldn't find the playground you're looking for." + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:19 +msgid "Browse Playgrounds" +msgstr "Browse Playgrounds" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:30 +msgid "{0} Online Playground on Evaluate" +msgstr "{0} Online Playground on Evaluate" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:31 +msgid "Run {0} and more code snippets online in your browser with Evaluates code playground." +msgstr "Run {0} and more code snippets online in your browser with Evaluates code playground." diff --git a/apps/website/src/locales/fr/messages.po b/apps/website/src/locales/fr/messages.po new file mode 100644 index 00000000..5f9ef03e --- /dev/null +++ b/apps/website/src/locales/fr/messages.po @@ -0,0 +1,268 @@ +#. TODO: These translations were generated by AI for testing purposes, do not release them to production. +msgid "" +msgstr "" +"POT-Creation-Date: 2025-10-02 22:47+1300\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fr\n" +"X-Generator: sayable\n" + +#: src/components/terminal/html-preview.tsx:40 +msgid "Nothing to render here." +msgstr "Rien à rendre ici." + +#: src/components/terminal/index.tsx:46 +msgid "Run" +msgstr "Exécuter" + +#: src/components/terminal/index.tsx:61 +msgid "Compile" +msgstr "Compiler" + +#: src/components/terminal/index.tsx:76 +msgid "Preview" +msgstr "Aperçu" + +#: src/components/terminal/index.tsx:90 +msgid "Clear" +msgstr "Effacer" + +#: src/components/terminal/index.tsx:104 +msgid "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." +msgstr "L'exécution de votre code a dépassé le temps imparti et a été terminée. Envisagez de l'optimiser pour de meilleures performances." + +#: src/components/terminal/index.tsx:109 +msgid "Your code executed successfully; however, it did not generate any output for the console." +msgstr "Votre code a été exécuté avec succès ; cependant, il n'a généré aucune sortie pour la console." + +#: src/components/terminal/index.tsx:114 +msgid "Write your code and press <0/> to execute it. The results will be displayed here." +msgstr "Écrivez votre code et appuyez sur <0/> pour l'exécuter. Les résultats seront affichés ici." + +#: src/components/terminal/index.tsx:134 +msgid "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." +msgstr "La compilation de votre code a dépassé le temps imparti et a été terminée. Envisagez d'optimiser votre code pour une compilation plus rapide." + +#: src/components/terminal/index.tsx:140 +msgid "<0>If this runtime requires compilation, the output will be displayed here." +msgstr "<0>Si ce runtime nécessite une compilation, la sortie sera affichée ici." + +#: src/components/terminal/index.tsx:158 +msgid "This runtime does not have a way to display any preview." +msgstr "Ce runtime n'a pas de moyen d'afficher un aperçu." + +#: src/components/header/index.tsx:51 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:12 +msgid "Playgrounds" +msgstr "Espaces de jeu" + +#: src/components/header/index.tsx:62 +msgid "Browser Extension" +msgstr "Extension de navigateur" + +#: src/components/header/index.tsx:64 +msgid "new" +msgstr "nouveau" + +#: src/components/header/index.tsx:71 +msgid "Discord Bot" +msgstr "Bot Discord" + +#: src/components/header/index.tsx:138 +msgid "Toggle Mobile Navigation" +msgstr "Basculer la navigation mobile" + +#: src/components/header/locale-switcher.tsx:22 +msgid "Change Language" +msgstr "Changer de langue" + +#: src/components/header/theme-switcher.tsx:26 +msgid "Toggle Theme" +msgstr "Basculer le thème" + +#: src/components/explorer/index.tsx:44 +msgid "Explorer" +msgstr "Explorateur" + +#: src/components/explorer/index.tsx:50 +#: src/components/explorer/index.tsx:58 +msgid "New File" +msgstr "Nouveau fichier" + +#: src/components/explorer/index.tsx:63 +#: src/components/explorer/index.tsx:71 +msgid "New Folder" +msgstr "Nouveau dossier" + +#: src/components/explorer/index.tsx:76 +#: src/components/explorer/index.tsx:84 +msgid "Download As Zip" +msgstr "Télécharger en tant que Zip" + +#: src/components/explorer/index.tsx:108 +msgid "This is the file explorer. Create a new file to get started." +msgstr "Voici l'explorateur de fichiers. Créez un nouveau fichier pour commencer." + +#: src/components/explorer/name.tsx:37 +msgid "A name must be provided." +msgstr "Un nom doit être fourni." + +#: src/components/explorer/name.tsx:39 +msgid "This name is invalid." +msgstr "Ce nom est invalide." + +#: src/components/explorer/name.tsx:41 +msgid "This name already exists." +msgstr "Ce nom existe déjà." + +#: src/components/explorer/name.tsx:81 +#: src/components/editor/opened-files/button.tsx:41 +msgid "CLI Arguments" +msgstr "Arguments CLI" + +#: src/components/explorer/name.tsx:82 +#: src/components/editor/opened-files/button.tsx:42 +msgid "STD Input" +msgstr "Entrée STD" + +#: src/components/explorer/use.tsx:68 +msgid "Saved and copied URL to clipboard" +msgstr "URL sauvegardée et copiée dans le presse-papiers" + +#: src/components/explorer/file/item.tsx:65 +msgid "Rename File" +msgstr "Renommer le fichier" + +#: src/components/explorer/file/item.tsx:81 +msgid "Delete File" +msgstr "Supprimer le fichier" + +#: src/components/editor/opened-files/button.tsx:43 +#: src/components/editor/opened-files/button.tsx:55 +msgid "Untitled" +msgstr "Sans titre" + +#: src/components/editor/execute-bar/index.tsx:132 +msgid "No files found" +msgstr "Aucun fichier trouvé" + +#: src/components/editor/execute-bar/index.tsx:148 +msgid "<0>Execute <1>{2} <3>Code" +msgstr "<0>Exécuter <1>{2} <3>Code" + +#: src/app/manifest.ts:10 +#: src/app/[locale]/metadata.ts:14 +msgid "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." +msgstr "Testez du code dans n'importe quel langage de programmation avec Evaluate ! Exécutez des extraits de code dans votre navigateur, sans installer quoi que ce soit." + +#: src/app/[locale]/metadata.ts:16 +msgid "online playground" +msgstr "espace de jeu en ligne" + +#: src/app/[locale]/metadata.ts:17 +msgid "code playground" +msgstr "espace de jeu de code" + +#: src/app/[locale]/metadata.ts:18 +msgid "code sandbox" +msgstr "bac à sable de code" + +#: src/app/[locale]/metadata.ts:19 +msgid "online compiler" +msgstr "compilateur en ligne" + +#: src/app/[locale]/metadata.ts:20 +msgid "online interpreter" +msgstr "interpréteur en ligne" + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:10 +msgid "The <0>Evaluate Discord Bot" +msgstr "Le bot Discord <0>Evaluate" + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:15 +msgid "Run code snippets directly in your Discord server with the Evaluate bot! Evaluate supports over 70 languages and is perfect for quickly testing code and sharing results with your friends." +msgstr "Exécutez des extraits de code directement sur votre serveur Discord avec le bot Evaluate ! Evaluate prend en charge plus de 70 langages et est parfait pour tester rapidement du code et partager les résultats avec vos amis." + +#: src/app/[locale]/(products)/products/discord-bot/page.tsx:37 +msgid "Evaluate for <0>Discord" +msgstr "Evaluate pour <0>Discord" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:11 +msgid "The <0>Evaluate Browser Extension" +msgstr "L'extension de navigateur <0>Evaluate" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:16 +msgid "When you stumble upon code snippets while browsing the web, wouldn't it be great to execute them instantly? Look no further—the Evaluate extension is your solution, with its over 70 supported languages and quick code execution capabilities." +msgstr "Lorsque vous tombez sur des extraits de code en naviguant sur le web, ne serait-il pas génial de les exécuter instantanément ? Ne cherchez plus—l'extension Evaluate est votre solution, avec plus de 70 langages pris en charge et des capacités d'exécution rapide du code." + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:42 +msgid "Evaluate for <0>Chrome" +msgstr "Evaluate pour <0>Chrome" + +#: src/app/[locale]/(products)/products/browser-extension/page.tsx:128 +msgid "Evaluate for <0>Firefox" +msgstr "Evaluate pour <0>Firefox" + +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:15 +msgid "Explore and run code in different programming languages and runtimes." +msgstr "Explorez et exécutez du code dans différents langages de programmation et environnements d'exécution." + +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:21 +msgid "Powered by the Piston execution engine." +msgstr "Alimenté par le moteur d'exécution Piston." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:80 +msgid "Choose a playground!" +msgstr "Choisissez un espace de jeu !" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:93 +msgid "Search runtime playgrounds..." +msgstr "Chercher des espaces de jeu pour runtimes..." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:105 +msgid "Clear Search" +msgstr "Effacer la recherche" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:115 +msgid "Sort by..." +msgstr "Trier par..." + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:117 +msgid "Toggle Sort By Dropdown" +msgstr "Basculer le menu de tri" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 +msgid "Sort By" +msgstr "Trier par" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 +msgid "Popularity" +msgstr "Popularité" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:129 +msgid "Name" +msgstr "Nom" + +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card.tsx:83 +msgid "Open {0} Playground" +msgstr "Ouvrir l'espace de jeu {0}" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:10 +msgid "Not Found" +msgstr "Non trouvé" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:13 +msgid "Hmm, we couldn't find the playground you're looking for." +msgstr "Hmm, nous n'avons pas trouvé l'espace de jeu que vous cherchez." + +#: src/app/[locale]/(editor)/playgrounds/[playground]/not-found.tsx:19 +msgid "Browse Playgrounds" +msgstr "Explorer les espaces de jeu" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:30 +msgid "{0} Online Playground on Evaluate" +msgstr "{0} Espace de jeu en ligne sur Evaluate" + +#: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:31 +msgid "Run {0} and more code snippets online in your browser with Evaluates code playground." +msgstr "Exécutez {0} et plus d'extraits de code en ligne dans votre navigateur avec l'espace de jeu de code Evaluate." diff --git a/apps/website/src/middleware.ts b/apps/website/src/middleware.ts new file mode 100644 index 00000000..fbece35e --- /dev/null +++ b/apps/website/src/middleware.ts @@ -0,0 +1,69 @@ +import { type NextRequest, NextResponse } from 'next/server'; +import say from './i18n'; + +export function middleware(request: NextRequest) { + let response = NextResponse.next(); + + const defaultLocale = say.locales[0]!; + let pathLocale = fromUrlPathname(request.nextUrl.pathname); + if (pathLocale && !say.locales.includes(pathLocale)) pathLocale = undefined; + let cookieLocale = fromRequestCookies(request.cookies); + if (cookieLocale && !say.locales.includes(cookieLocale)) + cookieLocale = undefined; + + if (pathLocale === defaultLocale) { + // Redirect /{defaultLocale} to / + request.nextUrl.pathname = request.nextUrl.pathname // + .replace(`/${defaultLocale}`, ''); + response = NextResponse.redirect(request.nextUrl); + } + // + else if (!pathLocale && cookieLocale) { + request.nextUrl.pathname = `/${cookieLocale}${request.nextUrl.pathname}`; + + if (cookieLocale === defaultLocale) { + // Rewrite / to /{defaultLocale} + response = NextResponse.rewrite(request.nextUrl); + } else { + // Redirect / to /{requestLocale} + response = NextResponse.redirect(request.nextUrl); + } + } + // + else if (!pathLocale) { + request.nextUrl.pathname = `/${defaultLocale}${request.nextUrl.pathname}`; + response = NextResponse.rewrite(request.nextUrl); + } + + if (!cookieLocale || request.nextUrl.searchParams.has('spl')) + response.cookies.set( + 'preferred-locale', + pathLocale ?? defaultLocale, // + { maxAge: 60 * 60 * 24 * 365, path: '/' }, + ); + + return response; +} + +export const config = { + matcher: [ + '/((?!_next/static|_vercel|_next/image|favicon.ico|policies/*|.*\\.(?:svg|png|jpg|jpeg|gif|webp|webmanifest|xml|txt)$).*)', + ], +}; + +const LOCALE = /^(?:[a-zA-Z]{2})(?:-[a-zA-Z]{2})?$/; + +function fromUrlPathname(pathname: string, partIndex = 0) { + const value = pathname.split('/')[partIndex * 2 + 1]; + if (value?.match(LOCALE)) return value; + return undefined; +} + +function fromRequestCookies( + cookies: NextRequest['cookies'], + key = 'preferred-locale', +) { + const value = cookies.get(key)?.value; + if (value?.match(LOCALE)) return value; + return undefined; +} diff --git a/apps/website/src/types.ts b/apps/website/src/types.ts index 259d5452..3794aae7 100644 --- a/apps/website/src/types.ts +++ b/apps/website/src/types.ts @@ -1,30 +1,5 @@ // =============== Next.js Specific =============== -/* -export type ParamType = TParam extends `${infer TName}[]` - ? { [key in TName]: string[] } - : { [key in TParam]: string }; - -export type Params = TParams extends [ - infer TParam extends string, - ...infer TRest extends string[], -] - ? ParamType & Params - : TParams extends [infer TParam extends string] - ? ParamType - : object; - -export type PageProps = { - params: TParams extends string[] ? Params : object; - searchParams: Record; -}; - -export type LayoutProps = - React.PropsWithChildren<{ - params: TParams extends string[] ? Params : object; - }>; -*/ - import type { Simplify } from 'type-fest'; type Infer = TT extends '[]' diff --git a/packages/components/package.json b/packages/components/package.json index 595711e7..c7db281e 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -18,6 +18,7 @@ "dependencies": { "@radix-ui/react-accordion": "^1.2.11", "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-popover": "^1.1.14", "@radix-ui/react-scroll-area": "^1.2.9", diff --git a/packages/components/src/dropdown-menu.tsx b/packages/components/src/dropdown-menu.tsx new file mode 100644 index 00000000..9e9a0914 --- /dev/null +++ b/packages/components/src/dropdown-menu.tsx @@ -0,0 +1,255 @@ +'use client'; + +import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'; +import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react'; +import { twMerge as cn } from 'tailwind-merge'; + +function DropdownMenu({ + ...props +}: React.ComponentProps) { + return ; +} + +function DropdownMenuPortal({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuTrigger({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuContent({ + className, + sideOffset = 4, + ...props +}: React.ComponentProps) { + return ( + + + + ); +} + +function DropdownMenuGroup({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuItem({ + className, + inset, + variant = 'default', + ...props +}: React.ComponentProps & { + inset?: boolean; + variant?: 'default' | 'destructive'; +}) { + return ( + + ); +} + +function DropdownMenuCheckboxItem({ + className, + children, + checked, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ); +} + +function DropdownMenuRadioGroup({ + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuRadioItem({ + className, + children, + ...props +}: React.ComponentProps) { + return ( + + + + + + + {children} + + ); +} + +function DropdownMenuLabel({ + className, + inset, + ...props +}: React.ComponentProps & { + inset?: boolean; +}) { + return ( + + ); +} + +function DropdownMenuSeparator({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +function DropdownMenuShortcut({ + className, + ...props +}: React.ComponentProps<'span'>) { + return ( + + ); +} + +function DropdownMenuSub({ + ...props +}: React.ComponentProps) { + return ; +} + +function DropdownMenuSubTrigger({ + className, + inset, + children, + ...props +}: React.ComponentProps & { + inset?: boolean; +}) { + return ( + + {children} + + + ); +} + +function DropdownMenuSubContent({ + className, + ...props +}: React.ComponentProps) { + return ( + + ); +} + +export { + DropdownMenu, + DropdownMenuPortal, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuGroup, + DropdownMenuLabel, + DropdownMenuItem, + DropdownMenuCheckboxItem, + DropdownMenuRadioGroup, + DropdownMenuRadioItem, + DropdownMenuSeparator, + DropdownMenuShortcut, + DropdownMenuSub, + DropdownMenuSubTrigger, + DropdownMenuSubContent, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ff6ee47..8d0c8dcb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ importers: version: link:packages/scripts '@types/node': specifier: ^22.16.4 - version: 22.16.4 + version: 22.18.8 husky: specifier: ^9.1.7 version: 9.1.7 @@ -30,13 +30,13 @@ importers: version: 3.3.0 turbo: specifier: ^2.5.5 - version: 2.5.5 + version: 2.5.8 typescript: specifier: ^5.8.3 - version: 5.8.3 + version: 5.9.3 typescript-transform-paths: specifier: ^3.5.5 - version: 3.5.5(typescript@5.8.3) + version: 3.5.5(typescript@5.9.3) apps/browser-extension: dependencies: @@ -57,22 +57,22 @@ importers: version: link:../../packages/style '@t3-oss/env-core': specifier: ^0.13.8 - version: 0.13.8(typescript@5.8.3)(zod@4.0.5) + version: 0.13.8(typescript@5.9.3)(zod@4.0.5) lucide-react: specifier: ^0.525.0 - version: 0.525.0(react@19.1.0) + version: 0.525.0(react@19.2.0) posthog-js: specifier: ^1.257.0 - version: 1.257.0 + version: 1.268.9 react: specifier: ^19.1.0 - version: 19.1.0 + version: 19.2.0 react-dom: specifier: ^19.1.0 - version: 19.1.0(react@19.1.0) + version: 19.2.0(react@19.2.0) sonner: specifier: ^2.0.6 - version: 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 @@ -88,58 +88,58 @@ importers: devDependencies: '@babel/generator': specifier: ^7.28.0 - version: 7.28.0 + version: 7.28.3 '@babel/parser': specifier: ^7.28.0 - version: 7.28.0 + version: 7.28.4 '@babel/traverse': specifier: ^7.28.0 - version: 7.28.0 + version: 7.28.4 '@babel/types': specifier: ^7.28.1 - version: 7.28.1 + version: 7.28.4 '@crxjs/vite-plugin': specifier: 2.0.0-beta.30 version: 2.0.0-beta.30 '@tailwindcss/vite': specifier: ^4.1.11 - version: 4.1.11(patch_hash=c65ceb599655780709308f94a3ec9abe3fdf0669fb30069ad826bb182f83d03f)(vite@3.2.11(@types/node@22.16.4)) + version: 4.1.14(vite@3.2.11(@types/node@22.18.8)) '@types/babel__generator': specifier: ^7.27.0 version: 7.27.0 '@types/babel__traverse': specifier: ^7.20.7 - version: 7.20.7 + version: 7.28.0 '@types/react': specifier: ^19.1.8 - version: 19.1.8 + version: 19.2.0 '@types/react-dom': specifier: ^19.1.6 - version: 19.1.6(@types/react@19.1.8) + version: 19.2.0(@types/react@19.2.0) '@types/webextension-polyfill': specifier: ^0.12.3 - version: 0.12.3 + version: 0.12.4 '@vitejs/plugin-react': specifier: ^4.6.0 - version: 4.7.0(vite@3.2.11(@types/node@22.16.4)) + version: 4.7.0(vite@3.2.11(@types/node@22.18.8)) tailwindcss: specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.14 vite: specifier: 3.2.11 - version: 3.2.11(@types/node@22.16.4) + version: 3.2.11(@types/node@22.18.8) vite-plugin-zip-pack: specifier: ^1.2.4 - version: 1.2.4(vite@3.2.11(@types/node@22.16.4)) + version: 1.2.4(vite@3.2.11(@types/node@22.18.8)) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@3.2.11(@types/node@22.16.4)) + version: 5.1.4(typescript@5.9.3)(vite@3.2.11(@types/node@22.18.8)) apps/discord-bot: dependencies: '@buape/carbon': specifier: ^0.9.0 - version: 0.9.0(hono@4.8.5) + version: 0.9.0(hono@4.9.9) '@evaluate/execute': specifier: workspace:^ version: link:../../packages/execute @@ -151,32 +151,32 @@ importers: version: link:../../packages/runtimes '@t3-oss/env-core': specifier: ^0.13.8 - version: 0.13.8(typescript@5.8.3)(zod@4.0.5) + version: 0.13.8(typescript@5.9.3)(zod@4.0.5) date-fns: specifier: ^4.1.0 version: 4.1.0 es-toolkit: specifier: ^1.39.7 - version: 1.39.7 + version: 1.39.10 posthog-node: specifier: ^5.5.1 - version: 5.5.1 + version: 5.9.2 zod: specifier: ^4.0.5 version: 4.0.5 devDependencies: tsup: specifier: ^8.5.0 - version: 8.5.0(jiti@2.4.2)(postcss@8.5.6)(typescript@5.8.3) + version: 8.5.0(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3) apps/website: dependencies: '@codemirror/commands': specifier: ^6.8.1 - version: 6.8.1 + version: 6.9.0 '@codemirror/view': specifier: ^6.38.1 - version: 6.38.1 + version: 6.38.4 '@evaluate/components': specifier: workspace:^ version: link:../../packages/components @@ -197,28 +197,31 @@ importers: version: link:../../packages/style '@hookform/resolvers': specifier: ^5.1.1 - version: 5.1.1(react-hook-form@7.60.0(react@19.1.0)) + version: 5.2.2(react-hook-form@7.63.0(react@19.2.0)) + '@sayable/react': + specifier: 0.0.0-alpha.6 + version: 0.0.0-alpha.6(@types/react@19.2.0)(react@19.2.0)(sayable@0.0.0-alpha.6) '@t3-oss/env-nextjs': specifier: ^0.13.8 - version: 0.13.8(typescript@5.8.3)(zod@4.0.5) + version: 0.13.8(typescript@5.9.3)(zod@4.0.5) '@tanstack/react-query': specifier: ^5.83.0 - version: 5.83.0(react@19.1.0) + version: 5.90.2(react@19.2.0) '@tanstack/react-query-devtools': specifier: ^5.83.0 - version: 5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0) + version: 5.90.2(@tanstack/react-query@5.90.2(react@19.2.0))(react@19.2.0) '@uiw/codemirror-extensions-langs': specifier: ^4.24.1 - version: 4.24.1(@codemirror/autocomplete@6.18.6)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.2)(@codemirror/legacy-modes@6.5.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.1)(@lezer/lr@1.4.2) + version: 4.25.2(@codemirror/autocomplete@6.19.0)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.11)(@codemirror/lang-javascript@6.2.4)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.4)(@lezer/lr@1.4.2) '@uiw/codemirror-theme-vscode': specifier: ^4.24.1 - version: 4.24.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) + version: 4.25.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) '@uiw/react-codemirror': specifier: ^4.24.1 - version: 4.24.1(@babel/runtime@7.27.6)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@6.0.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.19.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.4)(codemirror@6.0.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@vercel/speed-insights': specifier: ^1.2.0 - version: 1.2.0(next@15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0) + version: 1.2.0(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) date-fns: specifier: ^4.1.0 version: 4.1.0 @@ -227,13 +230,13 @@ importers: version: link:../discord-bot dompurify: specifier: ^3.2.6 - version: 3.2.6 + version: 3.2.7 embla-carousel-autoplay: specifier: ^8.6.0 version: 8.6.0(embla-carousel@8.6.0) es-toolkit: specifier: ^1.39.7 - version: 1.39.7 + version: 1.39.10 file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -248,40 +251,46 @@ importers: version: 3.10.1 lucide-react: specifier: ^0.525.0 - version: 0.525.0(react@19.1.0) + version: 0.525.0(react@19.2.0) material-icon-theme: specifier: ^5.24.0 - version: 5.24.0 + version: 5.27.0 next: specifier: 15.3.5 - version: 15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-themes: specifier: npm:@wits/next-themes@^0.2.16 - version: '@wits/next-themes@0.2.16(next@15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)' + version: '@wits/next-themes@0.2.16(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)' posthog-js: specifier: ^1.257.0 - version: 1.257.0 + version: 1.268.9 react: specifier: ^19.1.0 - version: 19.1.0 + version: 19.2.0 react-dnd: specifier: ^16.0.1 - version: 16.0.1(@types/node@22.16.4)(@types/react@19.1.8)(react@19.1.0) + version: 16.0.1(@types/node@22.18.8)(@types/react@19.2.0)(react@19.2.0) react-dnd-html5-backend: specifier: ^16.0.1 version: 16.0.1 react-dom: specifier: ^19.1.0 - version: 19.1.0(react@19.1.0) + version: 19.2.0(react@19.2.0) react-hook-form: specifier: ^7.60.0 - version: 7.60.0(react@19.1.0) + version: 7.63.0(react@19.2.0) react-hotkeys-hook: specifier: ^5.1.0 - version: 5.1.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 5.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + sayable: + specifier: 0.0.0-alpha.6 + version: 0.0.0-alpha.6 + server-only: + specifier: ^0.0.1 + version: 0.0.1 sharp: specifier: ^0.34.3 - version: 0.34.3 + version: 0.34.4 tailwind-merge: specifier: ^3.3.1 version: 3.3.1 @@ -300,89 +309,107 @@ importers: devDependencies: '@million/lint': specifier: ^1.0.14 - version: 1.0.14(rollup@4.45.1) + version: 1.0.14(rollup@4.52.3) '@next/bundle-analyzer': specifier: 15.3.5 version: 15.3.5 + '@sayable/config': + specifier: 0.0.0-alpha.4 + version: 0.0.0-alpha.4(@sayable/factory@0.0.0-alpha.6)(typescript@5.9.3) + '@sayable/factory': + specifier: 0.0.0-alpha.6 + version: 0.0.0-alpha.6 + '@sayable/format-po': + specifier: 0.0.0-alpha.4 + version: 0.0.0-alpha.4(@sayable/config@0.0.0-alpha.4(@sayable/factory@0.0.0-alpha.6)(typescript@5.9.3)) + '@sayable/swc-plugin': + specifier: 0.0.0-alpha.5 + version: 0.0.0-alpha.5 '@tailwindcss/postcss': specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.14 '@types/file-saver': specifier: ^2.0.7 version: 2.0.7 '@types/react': specifier: ^19.1.8 - version: 19.1.8 + version: 19.2.0 autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.6) + next-sitemap: + specifier: ^4.2.3 + version: 4.2.3(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)) tailwindcss: specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.14 packages/components: dependencies: '@radix-ui/react-accordion': specifier: ^1.2.11 - version: 1.2.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.12(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-dialog': specifier: ^1.1.14 - version: 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.15(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.16 + version: 2.1.16(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-popover': specifier: ^1.1.14 - version: 1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.15(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-scroll-area': specifier: ^1.2.9 - version: 1.2.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.10(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-select': specifier: ^2.2.5 - version: 2.2.5(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.2.6(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-separator': specifier: ^1.1.7 - version: 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.8)(react@19.1.0) + version: 1.2.3(@types/react@19.2.0)(react@19.2.0) '@radix-ui/react-tabs': specifier: ^1.1.12 - version: 1.1.12(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.1.13(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-tooltip': specifier: ^1.2.7 - version: 1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 embla-carousel-react: specifier: ^8.6.0 - version: 8.6.0(react@19.1.0) + version: 8.6.0(react@19.2.0) lucide-react: specifier: ^0.525.0 - version: 0.525.0(react@19.1.0) + version: 0.525.0(react@19.2.0) react: specifier: ^19.1.0 - version: 19.1.0 + version: 19.2.0 react-hook-form: specifier: ^7.60.0 - version: 7.60.0(react@19.1.0) + version: 7.63.0(react@19.2.0) react-resizable-panels: specifier: ^3.0.3 - version: 3.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 3.0.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) sonner: specifier: ^2.0.6 - version: 2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + version: 2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) tailwind-merge: specifier: ^3.3.1 version: 3.3.1 devDependencies: '@types/react': specifier: ^19.1.8 - version: 19.1.8 + version: 19.2.0 tailwindcss: specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.14 packages/execute: dependencies: @@ -394,7 +421,7 @@ importers: version: link:../runtimes es-toolkit: specifier: ^1.39.7 - version: 1.39.7 + version: 1.39.10 lexure: specifier: npm:@apteryxxyz/lexure@^0.17.0 version: '@apteryxxyz/lexure@0.17.0' @@ -407,7 +434,7 @@ importers: devDependencies: '@types/pako': specifier: ^2.0.3 - version: 2.0.3 + version: 2.0.4 packages/fetch: {} @@ -415,11 +442,11 @@ importers: dependencies: react: specifier: ^19 - version: 19.1.0 + version: 19.2.0 devDependencies: '@types/react': specifier: ^19.1.8 - version: 19.1.8 + version: 19.2.0 packages/logger: {} @@ -430,7 +457,7 @@ importers: version: link:../fetch es-toolkit: specifier: ^1.39.7 - version: 1.39.7 + version: 1.39.10 fuse.js: specifier: ^7.1.0 version: 7.1.0 @@ -460,10 +487,10 @@ importers: devDependencies: tailwindcss: specifier: ^4.1.11 - version: 4.1.11 + version: 4.1.14 tw-animate-css: specifier: ^1.3.5 - version: 1.3.5 + version: 1.4.0 packages: @@ -491,20 +518,20 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.0': - resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} + '@babel/compat-data@7.28.4': + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.0': - resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + '@babel/core@7.28.4': + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.0': - resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + '@babel/generator@7.28.3': + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.27.2': @@ -519,8 +546,8 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} - '@babel/helper-module-transforms@7.27.3': - resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} + '@babel/helper-module-transforms@7.28.3': + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -541,12 +568,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.27.6': - resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} + '@babel/helpers@7.28.4': + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.0': - resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + '@babel/parser@7.28.4': + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} engines: {node: '>=6.0.0'} hasBin: true @@ -562,24 +589,24 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.6': - resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.0': - resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + '@babel/traverse@7.28.4': + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} engines: {node: '>=6.9.0'} '@babel/types@7.26.0': resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@babel/types@7.28.1': - resolution: {integrity: sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ==} + '@babel/types@7.28.4': + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} '@biomejs/biome@2.1.1': @@ -652,11 +679,11 @@ packages: '@cloudflare/workers-types@4.20250513.0': resolution: {integrity: sha512-TXaQyWLqhxEmi/DHx+VSaHZ4DHF/uJCPVv/hRyC7M/eWBo/I7mBtAkUEsrhqcKKO9oCeeRUHUHoeRLh5Gd96Gg==} - '@codemirror/autocomplete@6.18.6': - resolution: {integrity: sha512-PHHBXFomUs5DF+9tCOM/UoW6XQ4R44lLNNhRaW9PKPTU0D7lIjRg3ElxaJnTwsl/oHiR93WSXDBrekhoUGCPtg==} + '@codemirror/autocomplete@6.19.0': + resolution: {integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==} - '@codemirror/commands@6.8.1': - resolution: {integrity: sha512-KlGVYufHMQzxbdQONiLyGQDUW0itrLZwq3CcY7xpv9ZLRHqzkBSoteocBHtMCoY7/Ci4xhzSrToIeLg7FxHuaw==} + '@codemirror/commands@6.9.0': + resolution: {integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==} '@codemirror/lang-angular@0.1.4': resolution: {integrity: sha512-oap+gsltb/fzdlTQWD6BFF4bSLKcDnlxDsLdePiJpCVNKWXSTAbiiQeYI3UmES+BLAdkmIC1WjyztC1pi/bX4g==} @@ -670,8 +697,8 @@ packages: '@codemirror/lang-go@6.0.1': resolution: {integrity: sha512-7fNvbyNylvqCphW9HD6WFnRpcDjr+KXX/FgqXy5H5ZS0eC5edDljukm/yNgYkwTsgp2busdod50AOTIy6Jikfg==} - '@codemirror/lang-html@6.4.9': - resolution: {integrity: sha512-aQv37pIMSlueybId/2PVSP6NPnmurFDVmZwzc7jszd2KAF8qd4VBbvNYPXWQq90WIARjsdVkPbw29pszmHws3Q==} + '@codemirror/lang-html@6.4.11': + resolution: {integrity: sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==} '@codemirror/lang-java@6.0.2': resolution: {integrity: sha512-m5Nt1mQ/cznJY7tMfQTJchmrjdjQ71IDs+55d1GAa8DGaB8JXWsVCkVT284C3RTASaY43YknrK2X3hPO/J3MOQ==} @@ -685,14 +712,11 @@ packages: '@codemirror/lang-less@6.0.2': resolution: {integrity: sha512-EYdQTG22V+KUUk8Qq582g7FMnCZeEHsyuOJisHRft/mQ+ZSZ2w51NupvDUHiqtsOy7It5cHLPGfHQLpMh9bqpQ==} - '@codemirror/lang-lezer@6.0.2': - resolution: {integrity: sha512-mcVAf8lw+sCfSlr2ivMqV8JtNmOQjSXdA1vHKRtoW0OZsz1k6qhF+DX0K2TbWlAThqiGgRkRSZyYzIoEtKB2uQ==} + '@codemirror/lang-liquid@6.3.0': + resolution: {integrity: sha512-fY1YsUExcieXRTsCiwX/bQ9+PbCTA/Fumv7C7mTUZHoFkibfESnaXwpr2aKH6zZVwysEunsHHkaIpM/pl3xETQ==} - '@codemirror/lang-liquid@6.2.3': - resolution: {integrity: sha512-yeN+nMSrf/lNii3FJxVVEGQwFG0/2eDyH6gNOj+TGCa0hlNO4bhQnoO5ISnd7JOG+7zTEcI/GOoyraisFVY7jQ==} - - '@codemirror/lang-markdown@6.3.3': - resolution: {integrity: sha512-1fn1hQAPWlSSMCvnF810AkhWpNLkJpl66CRfIy3vVl20Sl4NwChkorCHqpMtNbXr1EuMJsrDnhEpjZxKZ2UX3A==} + '@codemirror/lang-markdown@6.4.0': + resolution: {integrity: sha512-ZeArR54seh4laFbUTVy0ZmQgO+C/cxxlW4jEoQMhL3HALScBpZBeZcLzrQmJsTEx4is9GzOe0bFAke2B1KZqeA==} '@codemirror/lang-php@6.0.2': resolution: {integrity: sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==} @@ -706,8 +730,8 @@ packages: '@codemirror/lang-sass@6.0.2': resolution: {integrity: sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==} - '@codemirror/lang-sql@6.9.0': - resolution: {integrity: sha512-xmtpWqKSgum1B1J3Ro6rf7nuPqf2+kJQg5SjrofCAcyCThOe0ihSktSoXfXuhQBnwx1QbmreBbLJM5Jru6zitg==} + '@codemirror/lang-sql@6.10.0': + resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==} '@codemirror/lang-vue@0.1.3': resolution: {integrity: sha512-QSKdtYTDRhEHCfo5zOShzxCmqKJvgGrZwDQSdbvCRJ5pRLWBS7pD/8e/tH44aVQT6FKm0t6RVNoSUWHOI5vNug==} @@ -724,14 +748,14 @@ packages: '@codemirror/language-data@6.5.1': resolution: {integrity: sha512-0sWxeUSNlBr6OmkqybUTImADFUP0M3P0IiSde4nc24bz/6jIYzqYSgkOSLS+CBIoW1vU8Q9KUWXscBXeoMVC9w==} - '@codemirror/language@6.11.2': - resolution: {integrity: sha512-p44TsNArL4IVXDTbapUmEkAlvWs2CFQbcfc0ymDsis1kH2wh0gcY96AS29c/vp2d0y2Tquk1EDSaawpzilUiAw==} + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} - '@codemirror/legacy-modes@6.5.1': - resolution: {integrity: sha512-DJYQQ00N1/KdESpZV7jg9hafof/iBNp9h7TYo1SLMk86TWl9uDsVdho2dzd81K+v4retmK6mdC7WpuOQDytQqw==} + '@codemirror/legacy-modes@6.5.2': + resolution: {integrity: sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==} - '@codemirror/lint@6.8.5': - resolution: {integrity: sha512-s3n3KisH7dx3vsoeGMxsbRAgKe4O1vbrnKBClm99PU0fWxmxsx5rR2PfqQgIt+2MMJBHbiJ5rfIdLYfB9NNvsA==} + '@codemirror/lint@6.9.0': + resolution: {integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==} '@codemirror/search@6.5.11': resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} @@ -742,8 +766,16 @@ packages: '@codemirror/theme-one-dark@6.1.3': resolution: {integrity: sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==} - '@codemirror/view@6.38.1': - resolution: {integrity: sha512-RmTOkE7hRU3OVREqFVITWHz6ocgBjv08GoePscAakgVQfciA3SGCEk7mb9IzwW61cKKmlTpHXG6DUE5Ubx+MGQ==} + '@codemirror/view@6.38.4': + resolution: {integrity: sha512-hduz0suCcUSC/kM8Fq3A9iLwInJDl8fD1xLpTIk+5xkNm8z/FT7UsIa9sOXrkpChh+XXc18RzswE8QqELsVl+g==} + + '@commander-js/extra-typings@14.0.0': + resolution: {integrity: sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg==} + peerDependencies: + commander: ~14.0.0 + + '@corex/deepmerge@4.0.43': + resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==} '@crxjs/vite-plugin@2.0.0-beta.30': resolution: {integrity: sha512-skRcaJAbDrcfKPRqgBtyeBAk19KrRqtA8lO3ZiwJgnpRPX8EICbv0iR6Jb8E3V+knXCrYTc4O5Im+r+n43f14A==} @@ -753,8 +785,8 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@emnapi/runtime@1.4.5': - resolution: {integrity: sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==} + '@emnapi/runtime@1.5.0': + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} '@esbuild/aix-ppc64@0.20.2': resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} @@ -762,8 +794,8 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.7': - resolution: {integrity: sha512-uD0kKFHh6ETr8TqEtaAcV+dn/2qnYbH/+8wGEdY70Qf7l1l/jmBUbrmQqwiPKAQE6cOQ7dTj6Xr0HzQDGHyceQ==} + '@esbuild/aix-ppc64@0.25.10': + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -774,8 +806,8 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.7': - resolution: {integrity: sha512-p0ohDnwyIbAtztHTNUTzN5EGD/HJLs1bwysrOPgSdlIA6NDnReoVfoCyxG6W1d85jr2X80Uq5KHftyYgaK9LPQ==} + '@esbuild/android-arm64@0.25.10': + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -792,8 +824,8 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.7': - resolution: {integrity: sha512-Jhuet0g1k9rAJHrXGIh7sFknFuT4sfytYZpZpuZl7YKDhnPByVAm5oy2LEBmMbuYf3ejWVYCc2seX81Mk+madA==} + '@esbuild/android-arm@0.25.10': + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -804,8 +836,8 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.7': - resolution: {integrity: sha512-mMxIJFlSgVK23HSsII3ZX9T2xKrBCDGyk0qiZnIW10LLFFtZLkFD6imZHu7gUo2wkNZwS9Yj3mOtZD3ZPcjCcw==} + '@esbuild/android-x64@0.25.10': + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -816,8 +848,8 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.7': - resolution: {integrity: sha512-jyOFLGP2WwRwxM8F1VpP6gcdIJc8jq2CUrURbbTouJoRO7XCkU8GdnTDFIHdcifVBT45cJlOYsZ1kSlfbKjYUQ==} + '@esbuild/darwin-arm64@0.25.10': + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -828,8 +860,8 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.7': - resolution: {integrity: sha512-m9bVWqZCwQ1BthruifvG64hG03zzz9gE2r/vYAhztBna1/+qXiHyP9WgnyZqHgGeXoimJPhAmxfbeU+nMng6ZA==} + '@esbuild/darwin-x64@0.25.10': + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -840,8 +872,8 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.7': - resolution: {integrity: sha512-Bss7P4r6uhr3kDzRjPNEnTm/oIBdTPRNQuwaEFWT/uvt6A1YzK/yn5kcx5ZxZ9swOga7LqeYlu7bDIpDoS01bA==} + '@esbuild/freebsd-arm64@0.25.10': + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -852,8 +884,8 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.7': - resolution: {integrity: sha512-S3BFyjW81LXG7Vqmr37ddbThrm3A84yE7ey/ERBlK9dIiaWgrjRlre3pbG7txh1Uaxz8N7wGGQXmC9zV+LIpBQ==} + '@esbuild/freebsd-x64@0.25.10': + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -864,8 +896,8 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.7': - resolution: {integrity: sha512-HfQZQqrNOfS1Okn7PcsGUqHymL1cWGBslf78dGvtrj8q7cN3FkapFgNA4l/a5lXDwr7BqP2BSO6mz9UremNPbg==} + '@esbuild/linux-arm64@0.25.10': + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -876,8 +908,8 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.7': - resolution: {integrity: sha512-JZMIci/1m5vfQuhKoFXogCKVYVfYQmoZJg8vSIMR4TUXbF+0aNlfXH3DGFEFMElT8hOTUF5hisdZhnrZO/bkDw==} + '@esbuild/linux-arm@0.25.10': + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -888,8 +920,8 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.7': - resolution: {integrity: sha512-9Jex4uVpdeofiDxnwHRgen+j6398JlX4/6SCbbEFEXN7oMO2p0ueLN+e+9DdsdPLUdqns607HmzEFnxwr7+5wQ==} + '@esbuild/linux-ia32@0.25.10': + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -906,8 +938,8 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.7': - resolution: {integrity: sha512-TG1KJqjBlN9IHQjKVUYDB0/mUGgokfhhatlay8aZ/MSORMubEvj/J1CL8YGY4EBcln4z7rKFbsH+HeAv0d471w==} + '@esbuild/linux-loong64@0.25.10': + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -918,8 +950,8 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.7': - resolution: {integrity: sha512-Ty9Hj/lx7ikTnhOfaP7ipEm/ICcBv94i/6/WDg0OZ3BPBHhChsUbQancoWYSO0WNkEiSW5Do4febTTy4x1qYQQ==} + '@esbuild/linux-mips64el@0.25.10': + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -930,8 +962,8 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.7': - resolution: {integrity: sha512-MrOjirGQWGReJl3BNQ58BLhUBPpWABnKrnq8Q/vZWWwAB1wuLXOIxS2JQ1LT3+5T+3jfPh0tyf5CpbyQHqnWIQ==} + '@esbuild/linux-ppc64@0.25.10': + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -942,8 +974,8 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.7': - resolution: {integrity: sha512-9pr23/pqzyqIZEZmQXnFyqp3vpa+KBk5TotfkzGMqpw089PGm0AIowkUppHB9derQzqniGn3wVXgck19+oqiOw==} + '@esbuild/linux-riscv64@0.25.10': + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -954,8 +986,8 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.7': - resolution: {integrity: sha512-4dP11UVGh9O6Y47m8YvW8eoA3r8qL2toVZUbBKyGta8j6zdw1cn9F/Rt59/Mhv0OgY68pHIMjGXWOUaykCnx+w==} + '@esbuild/linux-s390x@0.25.10': + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -966,14 +998,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.7': - resolution: {integrity: sha512-ghJMAJTdw/0uhz7e7YnpdX1xVn7VqA0GrWrAO2qKMuqbvgHT2VZiBv1BQ//VcHsPir4wsL3P2oPggfKPzTKoCA==} + '@esbuild/linux-x64@0.25.10': + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.7': - resolution: {integrity: sha512-bwXGEU4ua45+u5Ci/a55B85KWaDSRS8NPOHtxy2e3etDjbz23wlry37Ffzapz69JAGGc4089TBo+dGzydQmydg==} + '@esbuild/netbsd-arm64@0.25.10': + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -984,14 +1016,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.7': - resolution: {integrity: sha512-tUZRvLtgLE5OyN46sPSYlgmHoBS5bx2URSrgZdW1L1teWPYVmXh+QN/sKDqkzBo/IHGcKcHLKDhBeVVkO7teEA==} + '@esbuild/netbsd-x64@0.25.10': + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.7': - resolution: {integrity: sha512-bTJ50aoC+WDlDGBReWYiObpYvQfMjBNlKztqoNUL0iUkYtwLkBQQeEsTq/I1KyjsKA5tyov6VZaPb8UdD6ci6Q==} + '@esbuild/openbsd-arm64@0.25.10': + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1002,14 +1034,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.7': - resolution: {integrity: sha512-TA9XfJrgzAipFUU895jd9j2SyDh9bbNkK2I0gHcvqb/o84UeQkBpi/XmYX3cO1q/9hZokdcDqQxIi6uLVrikxg==} + '@esbuild/openbsd-x64@0.25.10': + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.7': - resolution: {integrity: sha512-5VTtExUrWwHHEUZ/N+rPlHDwVFQ5aME7vRJES8+iQ0xC/bMYckfJ0l2n3yGIfRoXcK/wq4oXSItZAz5wslTKGw==} + '@esbuild/openharmony-arm64@0.25.10': + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -1020,8 +1052,8 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.7': - resolution: {integrity: sha512-umkbn7KTxsexhv2vuuJmj9kggd4AEtL32KodkJgfhNOHMPtQ55RexsaSrMb+0+jp9XL4I4o2y91PZauVN4cH3A==} + '@esbuild/sunos-x64@0.25.10': + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1032,8 +1064,8 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.7': - resolution: {integrity: sha512-j20JQGP/gz8QDgzl5No5Gr4F6hurAZvtkFxAKhiv2X49yi/ih8ECK4Y35YnjlMogSKJk931iNMcd35BtZ4ghfw==} + '@esbuild/win32-arm64@0.25.10': + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1044,8 +1076,8 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.7': - resolution: {integrity: sha512-4qZ6NUfoiiKZfLAXRsvFkA0hoWVM+1y2bSHXHkpdLAs/+r0LgwqYohmfZCi985c6JWHhiXP30mgZawn/XrqAkQ==} + '@esbuild/win32-ia32@0.25.10': + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1056,20 +1088,20 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.7': - resolution: {integrity: sha512-FaPsAHTwm+1Gfvn37Eg3E5HIpfR3i6x1AIcla/MkqAIupD4BW3MrSeUqfoTzwwJhk3WE2/KqUn4/eenEJC76VA==} + '@esbuild/win32-x64@0.25.10': + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@floating-ui/core@1.7.2': - resolution: {integrity: sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==} + '@floating-ui/core@1.7.3': + resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==} - '@floating-ui/dom@1.7.2': - resolution: {integrity: sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==} + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} - '@floating-ui/react-dom@2.1.4': - resolution: {integrity: sha512-JbbpPhp38UmXDDAu60RJmbeme37Jbgsm7NrHGgzYYFKmblzRUh6Pa641dII6LsjwF4XlScDrde2UAzDo/b9KPw==} + '@floating-ui/react-dom@2.1.6': + resolution: {integrity: sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' @@ -1087,129 +1119,139 @@ packages: peerDependencies: hono: ^4 - '@hookform/resolvers@5.1.1': - resolution: {integrity: sha512-J/NVING3LMAEvexJkyTLjruSm7aOFx7QX21pzkiJfMoNG0wl5aFEjLTl7ay7IQb9EWY6AkrBy7tHL2Alijpdcg==} + '@hono/node-server@1.19.5': + resolution: {integrity: sha512-iBuhh+uaaggeAuf+TftcjZyWh2GEgZcVGXkNtskLVoWaXhnJtC5HLHrU8W1KHDoucqO1MswwglmkWLFyiDn4WQ==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + + '@hookform/resolvers@5.2.2': + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} peerDependencies: react-hook-form: ^7.55.0 - '@img/sharp-darwin-arm64@0.34.3': - resolution: {integrity: sha512-ryFMfvxxpQRsgZJqBd4wsttYQbCxsJksrv9Lw/v798JcQ8+w84mBWuXwl+TT0WJ/WrYOLaYpwQXi3sA9nTIaIg==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.4': + resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.34.3': - resolution: {integrity: sha512-yHpJYynROAj12TA6qil58hmPmAwxKKC7reUqtGLzsOHfP7/rniNGTL8tjWX6L3CTV4+5P4ypcS7Pp+7OB+8ihA==} + '@img/sharp-darwin-x64@0.34.4': + resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.2.0': - resolution: {integrity: sha512-sBZmpwmxqwlqG9ueWFXtockhsxefaV6O84BMOrhtg/YqbTaRdqDE7hxraVE3y6gVM4eExmfzW4a8el9ArLeEiQ==} + '@img/sharp-libvips-darwin-arm64@1.2.3': + resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.2.0': - resolution: {integrity: sha512-M64XVuL94OgiNHa5/m2YvEQI5q2cl9d/wk0qFTDVXcYzi43lxuiFTftMR1tOnFQovVXNZJ5TURSDK2pNe9Yzqg==} + '@img/sharp-libvips-darwin-x64@1.2.3': + resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.2.0': - resolution: {integrity: sha512-RXwd0CgG+uPRX5YYrkzKyalt2OJYRiJQ8ED/fi1tq9WQW2jsQIn0tqrlR5l5dr/rjqq6AHAxURhj2DVjyQWSOA==} + '@img/sharp-libvips-linux-arm64@1.2.3': + resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.2.0': - resolution: {integrity: sha512-mWd2uWvDtL/nvIzThLq3fr2nnGfyr/XMXlq8ZJ9WMR6PXijHlC3ksp0IpuhK6bougvQrchUAfzRLnbsen0Cqvw==} + '@img/sharp-libvips-linux-arm@1.2.3': + resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-ppc64@1.2.0': - resolution: {integrity: sha512-Xod/7KaDDHkYu2phxxfeEPXfVXFKx70EAFZ0qyUdOjCcxbjqyJOEUpDe6RIyaunGxT34Anf9ue/wuWOqBW2WcQ==} + '@img/sharp-libvips-linux-ppc64@1.2.3': + resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==} cpu: [ppc64] os: [linux] - '@img/sharp-libvips-linux-s390x@1.2.0': - resolution: {integrity: sha512-eMKfzDxLGT8mnmPJTNMcjfO33fLiTDsrMlUVcp6b96ETbnJmd4uvZxVJSKPQfS+odwfVaGifhsB07J1LynFehw==} + '@img/sharp-libvips-linux-s390x@1.2.3': + resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.2.0': - resolution: {integrity: sha512-ZW3FPWIc7K1sH9E3nxIGB3y3dZkpJlMnkk7z5tu1nSkBoCgw2nSRTFHI5pB/3CQaJM0pdzMF3paf9ckKMSE9Tg==} + '@img/sharp-libvips-linux-x64@1.2.3': + resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': - resolution: {integrity: sha512-UG+LqQJbf5VJ8NWJ5Z3tdIe/HXjuIdo4JeVNADXBFuG7z9zjoegpzzGIyV5zQKi4zaJjnAd2+g2nna8TZvuW9Q==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': + resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.2.0': - resolution: {integrity: sha512-SRYOLR7CXPgNze8akZwjoGBoN1ThNZoqpOgfnOxmWsklTGVfJiGJoC/Lod7aNMGA1jSsKWM1+HRX43OP6p9+6Q==} + '@img/sharp-libvips-linuxmusl-x64@1.2.3': + resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.34.3': - resolution: {integrity: sha512-QdrKe3EvQrqwkDrtuTIjI0bu6YEJHTgEeqdzI3uWJOH6G1O8Nl1iEeVYRGdj1h5I21CqxSvQp1Yv7xeU3ZewbA==} + '@img/sharp-linux-arm64@0.34.4': + resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.34.3': - resolution: {integrity: sha512-oBK9l+h6KBN0i3dC8rYntLiVfW8D8wH+NPNT3O/WBHeW0OQWCjfWksLUaPidsrDKpJgXp3G3/hkmhptAW0I3+A==} + '@img/sharp-linux-arm@0.34.4': + resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-ppc64@0.34.3': - resolution: {integrity: sha512-GLtbLQMCNC5nxuImPR2+RgrviwKwVql28FWZIW1zWruy6zLgA5/x2ZXk3mxj58X/tszVF69KK0Is83V8YgWhLA==} + '@img/sharp-linux-ppc64@0.34.4': + resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ppc64] os: [linux] - '@img/sharp-linux-s390x@0.34.3': - resolution: {integrity: sha512-3gahT+A6c4cdc2edhsLHmIOXMb17ltffJlxR0aC2VPZfwKoTGZec6u5GrFgdR7ciJSsHT27BD3TIuGcuRT0KmQ==} + '@img/sharp-linux-s390x@0.34.4': + resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.34.3': - resolution: {integrity: sha512-8kYso8d806ypnSq3/Ly0QEw90V5ZoHh10yH0HnrzOCr6DKAPI6QVHvwleqMkVQ0m+fc7EH8ah0BB0QPuWY6zJQ==} + '@img/sharp-linux-x64@0.34.4': + resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.34.3': - resolution: {integrity: sha512-vAjbHDlr4izEiXM1OTggpCcPg9tn4YriK5vAjowJsHwdBIdx0fYRsURkxLG2RLm9gyBq66gwtWI8Gx0/ov+JKQ==} + '@img/sharp-linuxmusl-arm64@0.34.4': + resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.34.3': - resolution: {integrity: sha512-gCWUn9547K5bwvOn9l5XGAEjVTTRji4aPTqLzGXHvIr6bIDZKNTA34seMPgM0WmSf+RYBH411VavCejp3PkOeQ==} + '@img/sharp-linuxmusl-x64@0.34.4': + resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.34.3': - resolution: {integrity: sha512-+CyRcpagHMGteySaWos8IbnXcHgfDn7pO2fiC2slJxvNq9gDipYBN42/RagzctVRKgxATmfqOSulgZv5e1RdMg==} + '@img/sharp-wasm32@0.34.4': + resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-arm64@0.34.3': - resolution: {integrity: sha512-MjnHPnbqMXNC2UgeLJtX4XqoVHHlZNd+nPt1kRPmj63wURegwBhZlApELdtxM2OIZDRv/DFtLcNhVbd1z8GYXQ==} + '@img/sharp-win32-arm64@0.34.4': + resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.34.3': - resolution: {integrity: sha512-xuCdhH44WxuXgOM714hn4amodJMZl3OEvf0GVTm0BEyMeA2to+8HEdRPShH0SLYptJY1uBw+SCFP9WVQi1Q/cw==} + '@img/sharp-win32-ia32@0.34.4': + resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.34.3': - resolution: {integrity: sha512-OWwz05d++TxzLEv4VnsTz5CmZ6mI6S05sfQGEMrNrQcOEERbX46332IvE7pO/EUiw7jUrrS40z/M7kPyjfl04g==} + '@img/sharp-win32-x64@0.34.4': + resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -1222,18 +1264,21 @@ packages: resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} - '@jridgewell/gen-mapping@0.3.12': - resolution: {integrity: sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==} + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - '@jridgewell/trace-mapping@0.3.29': - resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} '@lezer/common@1.2.3': resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} @@ -1250,29 +1295,26 @@ packages: '@lezer/highlight@1.2.1': resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} - '@lezer/html@1.3.10': - resolution: {integrity: sha512-dqpT8nISx/p9Do3AchvYGV3qYc4/rKr3IBZxlHmpIKam56P47RSHkSF5f13Vu9hebS1jM0HmtJIwLbWz1VIY6w==} + '@lezer/html@1.3.12': + resolution: {integrity: sha512-RJ7eRWdaJe3bsiiLLHjCFT1JMk8m1YP9kaUbvu2rMLEoOnke9mcTVDyfOslsln0LtujdWespjJ39w6zo+RsQYw==} '@lezer/java@1.1.3': resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==} - '@lezer/javascript@1.5.1': - resolution: {integrity: sha512-ATOImjeVJuvgm3JQ/bpo2Tmv55HSScE2MTPnKRMRIPx2cLhHGyX2VnqpHhtIV1tVzIjZDbcWQm+NCTF40ggZVw==} + '@lezer/javascript@1.5.4': + resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} '@lezer/json@1.0.3': resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} - '@lezer/lezer@1.1.2': - resolution: {integrity: sha512-O8yw3CxPhzYHB1hvwbdozjnAslhhR8A5BH7vfEMof0xk3p+/DFDfZkA9Tde6J+88WgtwaHy4Sy6ThZSkaI0Evw==} - '@lezer/lr@1.4.2': resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} '@lezer/markdown@1.4.3': resolution: {integrity: sha512-kfw+2uMrQ/wy/+ONfrH83OkdFNM0ye5Xq96cLlaCy7h5UT9FO54DU4oRoIc0CSBh5NWmWuiIJA7NGLMJbQ+Oxg==} - '@lezer/php@1.0.3': - resolution: {integrity: sha512-NDwgktd5qh/EfEn7Dogf2N6eNnC5WPJ5NslB8nKhgXSuH2uSJamCEom1g4VGo+ibfoADK8D69NMCMhuuYbVskg==} + '@lezer/php@1.0.5': + resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==} '@lezer/python@1.1.18': resolution: {integrity: sha512-31FiUrU7z9+d/ElGQLJFXl+dKOdx0jALlP3KEOsGTex8mvj+SoE1FgItcHWK/axkxCHGUSpqIHt6JAWfWu9Rhg==} @@ -1292,6 +1334,18 @@ packages: '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + '@messageformat/date-skeleton@2.0.0-0': + resolution: {integrity: sha512-gkCatAK4MYlhjKYWxkfRM6Ql0M1VmA1DK6A9rszUBprZpQox/XqX987AI2w7YoEz0p5DgkPOpI6PK1mW08yNqQ==} + + '@messageformat/icu-messageformat-1@0.11.0': + resolution: {integrity: sha512-8QP/wY07xxBD1OFRZ+uk74olNQqXlUsphTs2jfTG5if5lcdlCIUJU4Ah4KZajU5LpAC0YTTPWRg+mumKjPgcJw==} + + '@messageformat/number-skeleton@2.0.0-0': + resolution: {integrity: sha512-bDrIrVSKwn0sNrbU+N6tjwljV+Zl9pRCR/D9Xim6Q7lLzZ20nFYtuuKOZ3QKisN+vPxa9sTqu3ufJ+uwKNpHbQ==} + + '@messageformat/parser@5.1.1': + resolution: {integrity: sha512-3p0YRGCcTUCYvBKLIxtDDyrJ0YijGIwrTRu1DT8gIviIDZru8H23+FkY6MJBzM1n9n20CiM4VeDYuBsrrwnLjg==} + '@million/install@1.0.14': resolution: {integrity: sha512-xZvj4AEHc5hyn8RCiLl9dYNqggj2fa0lgNvUkCiJyhRJPNE2hZrUa/Ka0Weu82VpBaO//zujG0YErk7osjNXPA==} hasBin: true @@ -1300,109 +1354,118 @@ packages: resolution: {integrity: sha512-u6/kglVwZRu5+GMmtkNlGLqJVkgTl0TtM+hLa9rBg7pldx+5NG5bk45NvL37uZmAr2Xfa1C6qHb7GrFwfP372g==} hasBin: true - '@napi-rs/nice-android-arm-eabi@1.0.4': - resolution: {integrity: sha512-OZFMYUkih4g6HCKTjqJHhMUlgvPiDuSLZPbPBWHLjKmFTv74COzRlq/gwHtmEVaR39mJQ6ZyttDl2HNMUbLVoA==} + '@napi-rs/nice-android-arm-eabi@1.1.1': + resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==} engines: {node: '>= 10'} cpu: [arm] os: [android] - '@napi-rs/nice-android-arm64@1.0.4': - resolution: {integrity: sha512-k8u7cjeA64vQWXZcRrPbmwjH8K09CBnNaPnI9L1D5N6iMPL3XYQzLcN6WwQonfcqCDv5OCY3IqX89goPTV4KMw==} + '@napi-rs/nice-android-arm64@1.1.1': + resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@napi-rs/nice-darwin-arm64@1.0.4': - resolution: {integrity: sha512-GsLdQvUcuVzoyzmtjsThnpaVEizAqH5yPHgnsBmq3JdVoVZHELFo7PuJEdfOH1DOHi2mPwB9sCJEstAYf3XCJA==} + '@napi-rs/nice-darwin-arm64@1.1.1': + resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@napi-rs/nice-darwin-x64@1.0.4': - resolution: {integrity: sha512-1y3gyT3e5zUY5SxRl3QDtJiWVsbkmhtUHIYwdWWIQ3Ia+byd/IHIEpqAxOGW1nhhnIKfTCuxBadHQb+yZASVoA==} + '@napi-rs/nice-darwin-x64@1.1.1': + resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@napi-rs/nice-freebsd-x64@1.0.4': - resolution: {integrity: sha512-06oXzESPRdXUuzS8n2hGwhM2HACnDfl3bfUaSqLGImM8TA33pzDXgGL0e3If8CcFWT98aHows5Lk7xnqYNGFeA==} + '@napi-rs/nice-freebsd-x64@1.1.1': + resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': - resolution: {integrity: sha512-CgklZ6g8WL4+EgVVkxkEvvsi2DSLf9QIloxWO0fvQyQBp6VguUSX3eHLeRpqwW8cRm2Hv/Q1+PduNk7VK37VZw==} + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': + resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@napi-rs/nice-linux-arm64-gnu@1.0.4': - resolution: {integrity: sha512-wdAJ7lgjhAlsANUCv0zi6msRwq+D4KDgU+GCCHssSxWmAERZa2KZXO0H2xdmoJ/0i03i6YfK/sWaZgUAyuW2oQ==} + '@napi-rs/nice-linux-arm64-gnu@1.1.1': + resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/nice-linux-arm64-musl@1.0.4': - resolution: {integrity: sha512-4b1KYG+sriufhFrpUS9uNOEYYJqSfcbnwGx6uGX7JjrH8tELG90cOpCawz5THNIwlS3DhLgnCOcn0+4p6z26QA==} + '@napi-rs/nice-linux-arm64-musl@1.1.1': + resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@napi-rs/nice-linux-ppc64-gnu@1.0.4': - resolution: {integrity: sha512-iaf3vMRgr23oe1PUaKpxaH3DS0IMN0+N9iEiWVwYPm/U15vZFYdqVegGfN2PzrZLUl5lc8ZxbmEKDfuqslhAMA==} + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': + resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==} engines: {node: '>= 10'} cpu: [ppc64] os: [linux] - '@napi-rs/nice-linux-riscv64-gnu@1.0.4': - resolution: {integrity: sha512-UXoREY6Yw6rHrGuTwQgBxpfjK34t6mTjibE9/cXbefL9AuUCJ9gEgwNKZiONuR5QGswChqo9cnthjdKkYyAdDg==} + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': + resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==} engines: {node: '>= 10'} cpu: [riscv64] os: [linux] - '@napi-rs/nice-linux-s390x-gnu@1.0.4': - resolution: {integrity: sha512-eFbgYCRPmsqbYPAlLYU5hYTNbogmIDUvknilehHsFhCH1+0/kN87lP+XaLT0Yeq4V/rpwChSd9vlz4muzFArtw==} + '@napi-rs/nice-linux-s390x-gnu@1.1.1': + resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==} engines: {node: '>= 10'} cpu: [s390x] os: [linux] - '@napi-rs/nice-linux-x64-gnu@1.0.4': - resolution: {integrity: sha512-4T3E6uTCwWT6IPnwuPcWVz3oHxvEp/qbrCxZhsgzwTUBEwu78EGNXGdHfKJQt3soth89MLqZJw+Zzvnhrsg1mQ==} + '@napi-rs/nice-linux-x64-gnu@1.1.1': + resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/nice-linux-x64-musl@1.0.4': - resolution: {integrity: sha512-NtbBkAeyBPLvCBkWtwkKXkNSn677eaT0cX3tygq+2qVv71TmHgX4gkX6o9BXjlPzdgPGwrUudavCYPT9tzkEqQ==} + '@napi-rs/nice-linux-x64-musl@1.1.1': + resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@napi-rs/nice-win32-arm64-msvc@1.0.4': - resolution: {integrity: sha512-vubOe3i+YtSJGEk/++73y+TIxbuVHi+W8ZzrRm2eETCjCRwNlgbfToQZ85dSA+4iBB/NJRGNp+O4hfdbbttZWA==} + '@napi-rs/nice-openharmony-arm64@1.1.1': + resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [openharmony] + + '@napi-rs/nice-win32-arm64-msvc@1.1.1': + resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@napi-rs/nice-win32-ia32-msvc@1.0.4': - resolution: {integrity: sha512-BMOVrUDZeg1RNRKVlh4eyLv5djAAVLiSddfpuuQ47EFjBcklg0NUeKMFKNrKQR4UnSn4HAiACLD7YK7koskwmg==} + '@napi-rs/nice-win32-ia32-msvc@1.1.1': + resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] - '@napi-rs/nice-win32-x64-msvc@1.0.4': - resolution: {integrity: sha512-kCNk6HcRZquhw/whwh4rHsdPyOSCQCgnVDVik+Y9cuSVTDy3frpiCJTScJqPPS872h4JgZKkr/+CwcwttNEo9Q==} + '@napi-rs/nice-win32-x64-msvc@1.1.1': + resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@napi-rs/nice@1.0.4': - resolution: {integrity: sha512-Sqih1YARrmMoHlXGgI9JrrgkzxcaaEso0AH+Y7j8NHonUs+xe4iDsgC3IBIDNdzEewbNpccNN6hip+b5vmyRLw==} + '@napi-rs/nice@1.1.1': + resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} '@next/bundle-analyzer@15.3.5': resolution: {integrity: sha512-r1tlg7N4IUWpdqdy8/6bf7pvo2yeN9Oc6OHEiMsMfIooJ5k37Odi9HC1qBS4soULNE7FiQ18JP/TdmQKiaIkoA==} + '@next/env@13.5.11': + resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==} + '@next/env@15.3.5': resolution: {integrity: sha512-7g06v8BUVtN2njAX/r8gheoVffhiKFVt4nx74Tt6G4Hqw9HCLYQVx/GkH2qHvPtAHZaUNZ0VXAa0pQP6v1wk7g==} @@ -1454,12 +1517,6 @@ packages: cpu: [x64] os: [win32] - '@nextjournal/lang-clojure@1.0.0': - resolution: {integrity: sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==} - - '@nextjournal/lezer-clojure@1.0.0': - resolution: {integrity: sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==} - '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1491,14 +1548,17 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@posthog/core@1.2.2': + resolution: {integrity: sha512-f16Ozx6LIigRG+HsJdt+7kgSxZTHeX5f1JlCGKI1lXcvlZgfsCR338FuMI2QRYXGl+jg/vYFzGOTQBxl90lnBg==} + '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - '@radix-ui/primitive@1.1.2': - resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + '@radix-ui/primitive@1.1.3': + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - '@radix-ui/react-accordion@1.2.11': - resolution: {integrity: sha512-l3W5D54emV2ues7jjeG1xcyN7S3jnK3zE2zHqgn0CmMsy9lNJwmgcrmaxS+7ipw15FAivzKNzH3d5EcGoFKw0A==} + '@radix-ui/react-accordion@1.2.12': + resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1523,8 +1583,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-collapsible@1.1.11': - resolution: {integrity: sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==} + '@radix-ui/react-collapsible@1.1.12': + resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1567,8 +1627,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dialog@1.1.14': - resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + '@radix-ui/react-dialog@1.1.15': + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1589,8 +1649,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.10': - resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + '@radix-ui/react-dismissable-layer@1.1.11': + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1602,8 +1662,21 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-focus-guards@1.1.2': - resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + '@radix-ui/react-dropdown-menu@2.1.16': + resolution: {integrity: sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==} + 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.3': + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1646,8 +1719,21 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popover@1.1.14': - resolution: {integrity: sha512-ODz16+1iIbGUfFEfKx2HTPKizg2MN39uIOV8MXeHnmdd3i/N9Wt7vU46wbHsqA0xoaQyXVcs0KIlBdOA2Y95bw==} + '@radix-ui/react-menu@2.1.16': + resolution: {integrity: sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==} + 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-popover@1.1.15': + resolution: {integrity: sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1659,8 +1745,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-popper@1.2.7': - resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + '@radix-ui/react-popper@1.2.8': + resolution: {integrity: sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1685,8 +1771,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-presence@1.1.4': - resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + '@radix-ui/react-presence@1.1.5': + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1711,8 +1797,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-roving-focus@1.1.10': - resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} + '@radix-ui/react-roving-focus@1.1.11': + resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1724,8 +1810,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-scroll-area@1.2.9': - resolution: {integrity: sha512-YSjEfBXnhUELsO2VzjdtYYD4CfQjvao+lhhrX5XsHD7/cyUNzljF1FHEbgTPN7LH2MClfwRMIsYlqTYpKTTe2A==} + '@radix-ui/react-scroll-area@1.2.10': + resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1737,8 +1823,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-select@2.2.5': - resolution: {integrity: sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==} + '@radix-ui/react-select@2.2.6': + resolution: {integrity: sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1772,8 +1858,8 @@ packages: '@types/react': optional: true - '@radix-ui/react-tabs@1.1.12': - resolution: {integrity: sha512-GTVAlRVrQrSw3cEARM0nAx73ixrWDPNZAruETn3oHCNP6SbZ/hNxdxp+u7VkIEv3/sFoLq1PfcHrl7Pnp0CDpw==} + '@radix-ui/react-tabs@1.1.13': + resolution: {integrity: sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1785,8 +1871,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-tooltip@1.2.7': - resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + '@radix-ui/react-tooltip@1.2.8': + resolution: {integrity: sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1895,17 +1981,6 @@ packages: '@react-dnd/shallowequal@4.0.2': resolution: {integrity: sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==} - '@replit/codemirror-lang-csharp@6.2.0': - resolution: {integrity: sha512-6utbaWkoymhoAXj051mkRp+VIJlpwUgCX9Toevz3YatiZsz512fw3OVCedXQx+WcR0wb6zVHjChnuxqfCLtFVQ==} - peerDependencies: - '@codemirror/autocomplete': ^6.0.0 - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.0.0 - '@codemirror/view': ^6.0.0 - '@lezer/common': ^1.0.0 - '@lezer/highlight': ^1.0.0 - '@lezer/lr': ^1.0.0 - '@replit/codemirror-lang-nix@6.0.1': resolution: {integrity: sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==} peerDependencies: @@ -1944,8 +2019,8 @@ packages: resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} engines: {node: '>= 8.0.0'} - '@rollup/pluginutils@5.2.0': - resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + '@rollup/pluginutils@5.3.0': + resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1953,109 +2028,143 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.45.1': - resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + '@rollup/rollup-android-arm-eabi@4.52.3': + resolution: {integrity: sha512-h6cqHGZ6VdnwliFG1NXvMPTy/9PS3h8oLh7ImwR+kl+oYnQizgjxsONmmPSb2C66RksfkfIxEVtDSEcJiO0tqw==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.45.1': - resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + '@rollup/rollup-android-arm64@4.52.3': + resolution: {integrity: sha512-wd+u7SLT/u6knklV/ifG7gr5Qy4GUbH2hMWcDauPFJzmCZUAJ8L2bTkVXC2niOIxp8lk3iH/QX8kSrUxVZrOVw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.45.1': - resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} + '@rollup/rollup-darwin-arm64@4.52.3': + resolution: {integrity: sha512-lj9ViATR1SsqycwFkJCtYfQTheBdvlWJqzqxwc9f2qrcVrQaF/gCuBRTiTolkRWS6KvNxSk4KHZWG7tDktLgjg==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.45.1': - resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} + '@rollup/rollup-darwin-x64@4.52.3': + resolution: {integrity: sha512-+Dyo7O1KUmIsbzx1l+4V4tvEVnVQqMOIYtrxK7ncLSknl1xnMHLgn7gddJVrYPNZfEB8CIi3hK8gq8bDhb3h5A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.45.1': - resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + '@rollup/rollup-freebsd-arm64@4.52.3': + resolution: {integrity: sha512-u9Xg2FavYbD30g3DSfNhxgNrxhi6xVG4Y6i9Ur1C7xUuGDW3banRbXj+qgnIrwRN4KeJ396jchwy9bCIzbyBEQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.45.1': - resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + '@rollup/rollup-freebsd-x64@4.52.3': + resolution: {integrity: sha512-5M8kyi/OX96wtD5qJR89a/3x5x8x5inXBZO04JWhkQb2JWavOWfjgkdvUqibGJeNNaz1/Z1PPza5/tAPXICI6A==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': - resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': + resolution: {integrity: sha512-IoerZJ4l1wRMopEHRKOO16e04iXRDyZFZnNZKrWeNquh5d6bucjezgd+OxG03mOMTnS1x7hilzb3uURPkJ0OfA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.45.1': - resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + '@rollup/rollup-linux-arm-musleabihf@4.52.3': + resolution: {integrity: sha512-ZYdtqgHTDfvrJHSh3W22TvjWxwOgc3ThK/XjgcNGP2DIwFIPeAPNsQxrJO5XqleSlgDux2VAoWQ5iJrtaC1TbA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.45.1': - resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} + '@rollup/rollup-linux-arm64-gnu@4.52.3': + resolution: {integrity: sha512-NcViG7A0YtuFDA6xWSgmFb6iPFzHlf5vcqb2p0lGEbT+gjrEEz8nC/EeDHvx6mnGXnGCC1SeVV+8u+smj0CeGQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.45.1': - resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} + '@rollup/rollup-linux-arm64-musl@4.52.3': + resolution: {integrity: sha512-d3pY7LWno6SYNXRm6Ebsq0DJGoiLXTb83AIPCXl9fmtIQs/rXoS8SJxxUNtFbJ5MiOvs+7y34np77+9l4nfFMw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': - resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + '@rollup/rollup-linux-loong64-gnu@4.52.3': + resolution: {integrity: sha512-3y5GA0JkBuirLqmjwAKwB0keDlI6JfGYduMlJD/Rl7fvb4Ni8iKdQs1eiunMZJhwDWdCvrcqXRY++VEBbvk6Eg==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': - resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + '@rollup/rollup-linux-ppc64-gnu@4.52.3': + resolution: {integrity: sha512-AUUH65a0p3Q0Yfm5oD2KVgzTKgwPyp9DSXc3UA7DtxhEb/WSPfbG4wqXeSN62OG5gSo18em4xv6dbfcUGXcagw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.45.1': - resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + '@rollup/rollup-linux-riscv64-gnu@4.52.3': + resolution: {integrity: sha512-1makPhFFVBqZE+XFg3Dkq+IkQ7JvmUrwwqaYBL2CE+ZpxPaqkGaiWFEWVGyvTwZace6WLJHwjVh/+CXbKDGPmg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.45.1': - resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + '@rollup/rollup-linux-riscv64-musl@4.52.3': + resolution: {integrity: sha512-OOFJa28dxfl8kLOPMUOQBCO6z3X2SAfzIE276fwT52uXDWUS178KWq0pL7d6p1kz7pkzA0yQwtqL0dEPoVcRWg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.45.1': - resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + '@rollup/rollup-linux-s390x-gnu@4.52.3': + resolution: {integrity: sha512-jMdsML2VI5l+V7cKfZx3ak+SLlJ8fKvLJ0Eoa4b9/vCUrzXKgoKxvHqvJ/mkWhFiyp88nCkM5S2v6nIwRtPcgg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.45.1': - resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + '@rollup/rollup-linux-x64-gnu@4.52.3': + resolution: {integrity: sha512-tPgGd6bY2M2LJTA1uGq8fkSPK8ZLYjDjY+ZLK9WHncCnfIz29LIXIqUgzCR0hIefzy6Hpbe8Th5WOSwTM8E7LA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.45.1': - resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + '@rollup/rollup-linux-x64-musl@4.52.3': + resolution: {integrity: sha512-BCFkJjgk+WFzP+tcSMXq77ymAPIxsX9lFJWs+2JzuZTLtksJ2o5hvgTdIcZ5+oKzUDMwI0PfWzRBYAydAHF2Mw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.45.1': - resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + '@rollup/rollup-openharmony-arm64@4.52.3': + resolution: {integrity: sha512-KTD/EqjZF3yvRaWUJdD1cW+IQBk4fbQaHYJUmP8N4XoKFZilVL8cobFSTDnjTtxWJQ3JYaMgF4nObY/+nYkumA==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.52.3': + resolution: {integrity: sha512-+zteHZdoUYLkyYKObGHieibUFLbttX2r+58l27XZauq0tcWYYuKUwY2wjeCN9oK1Um2YgH2ibd6cnX/wFD7DuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.45.1': - resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + '@rollup/rollup-win32-ia32-msvc@4.52.3': + resolution: {integrity: sha512-of1iHkTQSo3kr6dTIRX6t81uj/c/b15HXVsPcEElN5sS859qHrOepM5p9G41Hah+CTqSh2r8Bm56dL2z9UQQ7g==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.45.1': - resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + '@rollup/rollup-win32-x64-gnu@4.52.3': + resolution: {integrity: sha512-s0hybmlHb56mWVZQj8ra9048/WZTPLILKxcvcq+8awSZmyiSUZjjem1AhU3Tf4ZKpYhK4mg36HtHDOe8QJS5PQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.52.3': + resolution: {integrity: sha512-zGIbEVVXVtauFgl3MRwGWEN36P5ZGenHRMgNw88X5wEhEBpq0XrMEZwOn07+ICrwM17XO5xfMZqh0OldCH5VTA==} cpu: [x64] os: [win32] '@rrweb/types@2.0.0-alpha.16': resolution: {integrity: sha512-E6cACNVsm+NUhn7dzocQoKyXI7BHrHRRm5Ab23yrAzEQ2caWocCEYJhqDlc4KRVJBkQfXZfyWm8+2d0uggFuZg==} + '@sayable/config@0.0.0-alpha.4': + resolution: {integrity: sha512-zWSDvoUG/JpARKWtHKx2wTiha5m4sEDEMUjhGk3SRPkMqssa8zGf7pEaSUxtNNOoO/P3vkH+SJXBT5VvUoS+DQ==} + hasBin: true + peerDependencies: + '@sayable/factory': '*' + typescript: '*' + + '@sayable/factory@0.0.0-alpha.6': + resolution: {integrity: sha512-5cC3+Tm8gjQECYUky5h4VnRGBAiifXKkNYM+6C5TwtV9ir17wWQ7fg2erDefI6YfZM7YUn3bR4pynCr9r7BgSQ==} + + '@sayable/format-po@0.0.0-alpha.4': + resolution: {integrity: sha512-iUKyBZ/sfa+ORvdwJgOsUPbzFgJKLUUeM/MJconlya1bO99sa/h0YLNiyDf6UpkfiWMqDQh1EeOMYLWVR/c3UQ==} + peerDependencies: + '@sayable/config': '*' + + '@sayable/react@0.0.0-alpha.6': + resolution: {integrity: sha512-7Skm7hElXFUC3pJY+I1keGjJgXrROYDqFIKqYPdkrq2bnVgHzoY0asqfzDxH5vaxZu4mweALbTYAQfbPmhZu3w==} + peerDependencies: + react: '*' + sayable: '*' + + '@sayable/swc-plugin@0.0.0-alpha.5': + resolution: {integrity: sha512-3yff7DkWjyxnBhks7IU5Z+If7jVpjZzHqQhkyFMG+3Z1rCKDovjodQHjMFjRqwaq29lkC4sVe0zVKsWu6fHwQw==} + '@socket.io/component-emitter@3.1.2': resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==} @@ -2105,65 +2214,65 @@ packages: zod: optional: true - '@tailwindcss/node@4.1.11': - resolution: {integrity: sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q==} + '@tailwindcss/node@4.1.14': + resolution: {integrity: sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==} - '@tailwindcss/oxide-android-arm64@4.1.11': - resolution: {integrity: sha512-3IfFuATVRUMZZprEIx9OGDjG3Ou3jG4xQzNTvjDoKmU9JdmoCohQJ83MYd0GPnQIu89YoJqvMM0G3uqLRFtetg==} + '@tailwindcss/oxide-android-arm64@4.1.14': + resolution: {integrity: sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==} engines: {node: '>= 10'} cpu: [arm64] os: [android] - '@tailwindcss/oxide-darwin-arm64@4.1.11': - resolution: {integrity: sha512-ESgStEOEsyg8J5YcMb1xl8WFOXfeBmrhAwGsFxxB2CxY9evy63+AtpbDLAyRkJnxLy2WsD1qF13E97uQyP1lfQ==} + '@tailwindcss/oxide-darwin-arm64@4.1.14': + resolution: {integrity: sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@tailwindcss/oxide-darwin-x64@4.1.11': - resolution: {integrity: sha512-EgnK8kRchgmgzG6jE10UQNaH9Mwi2n+yw1jWmof9Vyg2lpKNX2ioe7CJdf9M5f8V9uaQxInenZkOxnTVL3fhAw==} + '@tailwindcss/oxide-darwin-x64@4.1.14': + resolution: {integrity: sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@tailwindcss/oxide-freebsd-x64@4.1.11': - resolution: {integrity: sha512-xdqKtbpHs7pQhIKmqVpxStnY1skuNh4CtbcyOHeX1YBE0hArj2romsFGb6yUmzkq/6M24nkxDqU8GYrKrz+UcA==} + '@tailwindcss/oxide-freebsd-x64@4.1.14': + resolution: {integrity: sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==} engines: {node: '>= 10'} cpu: [x64] os: [freebsd] - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': - resolution: {integrity: sha512-ryHQK2eyDYYMwB5wZL46uoxz2zzDZsFBwfjssgB7pzytAeCCa6glsiJGjhTEddq/4OsIjsLNMAiMlHNYnkEEeg==} + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': + resolution: {integrity: sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==} engines: {node: '>= 10'} cpu: [arm] os: [linux] - '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': - resolution: {integrity: sha512-mYwqheq4BXF83j/w75ewkPJmPZIqqP1nhoghS9D57CLjsh3Nfq0m4ftTotRYtGnZd3eCztgbSPJ9QhfC91gDZQ==} + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': + resolution: {integrity: sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-arm64-musl@4.1.11': - resolution: {integrity: sha512-m/NVRFNGlEHJrNVk3O6I9ggVuNjXHIPoD6bqay/pubtYC9QIdAMpS+cswZQPBLvVvEF6GtSNONbDkZrjWZXYNQ==} + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': + resolution: {integrity: sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@tailwindcss/oxide-linux-x64-gnu@4.1.11': - resolution: {integrity: sha512-YW6sblI7xukSD2TdbbaeQVDysIm/UPJtObHJHKxDEcW2exAtY47j52f8jZXkqE1krdnkhCMGqP3dbniu1Te2Fg==} + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': + resolution: {integrity: sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-linux-x64-musl@4.1.11': - resolution: {integrity: sha512-e3C/RRhGunWYNC3aSF7exsQkdXzQ/M+aYuZHKnw4U7KQwTJotnWsGOIVih0s2qQzmEzOFIJ3+xt7iq67K/p56Q==} + '@tailwindcss/oxide-linux-x64-musl@4.1.14': + resolution: {integrity: sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@tailwindcss/oxide-wasm32-wasi@4.1.11': - resolution: {integrity: sha512-Xo1+/GU0JEN/C/dvcammKHzeM6NqKovG+6921MR6oadee5XPBaKOumrJCXvopJ/Qb5TH7LX/UAywbqrP4lax0g==} + '@tailwindcss/oxide-wasm32-wasi@4.1.14': + resolution: {integrity: sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] bundledDependencies: @@ -2174,44 +2283,44 @@ packages: - '@emnapi/wasi-threads' - tslib - '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': - resolution: {integrity: sha512-UgKYx5PwEKrac3GPNPf6HVMNhUIGuUh4wlDFR2jYYdkX6pL/rn73zTq/4pzUm8fOjAn5L8zDeHp9iXmUGOXZ+w==} + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': + resolution: {integrity: sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@tailwindcss/oxide-win32-x64-msvc@4.1.11': - resolution: {integrity: sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg==} + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': + resolution: {integrity: sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] - '@tailwindcss/oxide@4.1.11': - resolution: {integrity: sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg==} + '@tailwindcss/oxide@4.1.14': + resolution: {integrity: sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==} engines: {node: '>= 10'} - '@tailwindcss/postcss@4.1.11': - resolution: {integrity: sha512-q/EAIIpF6WpLhKEuQSEVMZNMIY8KhWoAemZ9eylNAih9jxMGAYPPWBn3I9QL/2jZ+e7OEz/tZkX5HwbBR4HohA==} + '@tailwindcss/postcss@4.1.14': + resolution: {integrity: sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==} - '@tailwindcss/vite@4.1.11': - resolution: {integrity: sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw==} + '@tailwindcss/vite@4.1.14': + resolution: {integrity: sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==} peerDependencies: vite: ^5.2.0 || ^6 || ^7 - '@tanstack/query-core@5.83.0': - resolution: {integrity: sha512-0M8dA+amXUkyz5cVUm/B+zSk3xkQAcuXuz5/Q/LveT4ots2rBpPTZOzd7yJa2Utsf8D2Upl5KyjhHRY+9lB/XA==} + '@tanstack/query-core@5.90.2': + resolution: {integrity: sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ==} - '@tanstack/query-devtools@5.81.2': - resolution: {integrity: sha512-jCeJcDCwKfoyyBXjXe9+Lo8aTkavygHHsUHAlxQKKaDeyT0qyQNLKl7+UyqYH2dDF6UN/14873IPBHchcsU+Zg==} + '@tanstack/query-devtools@5.90.1': + resolution: {integrity: sha512-GtINOPjPUH0OegJExZ70UahT9ykmAhmtNVcmtdnOZbxLwT7R5OmRztR5Ahe3/Cu7LArEmR6/588tAycuaWb1xQ==} - '@tanstack/react-query-devtools@5.83.0': - resolution: {integrity: sha512-yfp8Uqd3I1jgx8gl0lxbSSESu5y4MO2ThOPBnGNTYs0P+ZFu+E9g5IdOngyUGuo6Uz6Qa7p9TLdZEX3ntik2fQ==} + '@tanstack/react-query-devtools@5.90.2': + resolution: {integrity: sha512-vAXJzZuBXtCQtrY3F/yUNJCV4obT/A/n81kb3+YqLbro5Z2+phdAbceO+deU3ywPw8B42oyJlp4FhO0SoivDFQ==} peerDependencies: - '@tanstack/react-query': ^5.83.0 + '@tanstack/react-query': ^5.90.2 react: ^18 || ^19 - '@tanstack/react-query@5.83.0': - resolution: {integrity: sha512-/XGYhZ3foc5H0VM2jLSD/NyBRIOK4q9kfeml4+0x2DlL6xVuAcVEW+hTlTapAmejObg0i3eNqhkr2dT+eciwoQ==} + '@tanstack/react-query@5.90.2': + resolution: {integrity: sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw==} peerDependencies: react: ^18 || ^19 @@ -2227,8 +2336,8 @@ packages: '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.7': - resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} + '@types/babel__traverse@7.28.0': + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} '@types/bun@1.2.13': resolution: {integrity: sha512-u6vXep/i9VBxoJl3GjZsl/BFIsvML8DfVDO0RYLEwtSZSp981kEO1V5NwRcO1CPJ7AmvpbnDCiMKo3JvbDEjAg==} @@ -2248,25 +2357,25 @@ packages: '@types/jasmine@3.10.18': resolution: {integrity: sha512-jOk52a1Kz+1oU5fNWwAcNe64/GsE7r/Q6ronwDox0D3ETo/cr4ICMQyeXrj7G6FPW1n8YjRoAZA2F0XBr6GicQ==} - '@types/node@22.16.4': - resolution: {integrity: sha512-PYRhNtZdm2wH/NT2k/oAJ6/f2VD2N2Dag0lGlx2vWgMSJXGNmlce5MiTQzoWAiIJtso30mjnfQCOKVH+kAQC/g==} + '@types/node@22.18.8': + resolution: {integrity: sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==} - '@types/pako@2.0.3': - resolution: {integrity: sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q==} + '@types/pako@2.0.4': + resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} - '@types/react-dom@19.1.6': - resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} + '@types/react-dom@19.2.0': + resolution: {integrity: sha512-brtBs0MnE9SMx7px208g39lRmC5uHZs96caOJfTjFcYSLHNamvaSMfJNagChVNkup2SdtOxKX1FDBkRSJe1ZAg==} peerDependencies: - '@types/react': ^19.0.0 + '@types/react': ^19.2.0 - '@types/react@19.1.8': - resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} + '@types/react@19.2.0': + resolution: {integrity: sha512-1LOH8xovvsKsCBq1wnT4ntDUdCJKmnEakhsuoUSy6ExlHCkGP2hqnatagYTgFk6oeL0VU31u7SNjunPN+GchtA==} '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} - '@types/webextension-polyfill@0.12.3': - resolution: {integrity: sha512-F58aDVSeN/MjUGazXo/cPsmR76EvqQhQ1v4x23hFjUX0cfAJYE+JBWwiOGW36/VJGGxoH74sVlRIF3z7SJCKyg==} + '@types/webextension-polyfill@0.12.4': + resolution: {integrity: sha512-wK8YdSI0pDiaehSLDIvtvonYmLwUUivg4Z6JCJO8rkyssMAG82cFJgwPK/V7NO61mJBLg/tXeoXQL8AFzpXZmQ==} '@types/webextension-polyfill@0.8.3': resolution: {integrity: sha512-GN+Hjzy9mXjWoXKmaicTegv3FJ0WFZ3aYz77Wk8TMp1IY3vEzvzj1vnsa0ggV7vMI1i+PUxe4qqnIJKCzf9aTg==} @@ -2274,8 +2383,8 @@ packages: '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@uiw/codemirror-extensions-basic-setup@4.24.1': - resolution: {integrity: sha512-o1m1a8eUS3fWERMbDFvN8t8sZUFPgDKNemmlQ5Ot2vKm+Ax84lKP1dhEFgkiOaZ1bDHk4T5h6SjHuTghrJHKww==} + '@uiw/codemirror-extensions-basic-setup@4.25.2': + resolution: {integrity: sha512-s2fbpdXrSMWEc86moll/d007ZFhu6jzwNu5cWv/2o7egymvLeZO52LWkewgbr+BUCGWGPsoJVWeaejbsb/hLcw==} peerDependencies: '@codemirror/autocomplete': '>=6.0.0' '@codemirror/commands': '>=6.0.0' @@ -2285,32 +2394,32 @@ packages: '@codemirror/state': '>=6.0.0' '@codemirror/view': '>=6.0.0' - '@uiw/codemirror-extensions-langs@4.24.1': - resolution: {integrity: sha512-8Q33k/UhNni2u5VvAHD+2mxe4hNIqZTNySSUcnJ7urV2lXXau+0fimsQlI+GQLF7gy5F1BUzIi+yvOMrEPK9Ig==} + '@uiw/codemirror-extensions-langs@4.25.2': + resolution: {integrity: sha512-fWS9fP52QJAFgXbsUl6vKMBqQ2PIT8z5TvX8BKBqPz/I+ayh6Fk+HzoeUtslUGPTu+UTPgB5m0qt3rTIDXWvng==} peerDependencies: + '@codemirror/language': '>=6.0.0' '@codemirror/language-data': '>=6.0.0' - '@codemirror/legacy-modes': '>=6.0.0' - '@uiw/codemirror-theme-vscode@4.24.1': - resolution: {integrity: sha512-w2/eaPcYsHi03aWoKzVxIWv5dBDKW4YPnjwyYLgFY3uNdZmSfoNkFhqW7GJgNNF77ATixPq2wm9XqYeOTtvuww==} + '@uiw/codemirror-theme-vscode@4.25.2': + resolution: {integrity: sha512-0vZAAtC65v64sYKtUMvgg9xPw1QlcnFTzGv8vZ5fD4SmSXFZWXTapjezwhGmvR7/UdAPFyh/4korgBnQo9ix3A==} - '@uiw/codemirror-themes@4.24.1': - resolution: {integrity: sha512-hduBbFNiWNW6nYa2/giKQ9YpzhWNw87BGpCjC+cXYMZ7bCD6q5DC6Hw+7z7ZwSzEaOQvV91lmirOjJ8hn9+pkg==} + '@uiw/codemirror-themes@4.25.2': + resolution: {integrity: sha512-WFYxW3OlCkMomXQBlQdGj1JZ011UNCa7xYdmgYqywVc4E8f5VgIzRwCZSBNVjpWGGDBOjc+Z6F65l7gttP16pg==} peerDependencies: '@codemirror/language': '>=6.0.0' '@codemirror/state': '>=6.0.0' '@codemirror/view': '>=6.0.0' - '@uiw/react-codemirror@4.24.1': - resolution: {integrity: sha512-BivF4NLqbuBQK5gPVhSkOARi9nPXw8X5r25EnInPeY+I9l1dfEX8O9V6+0xHTlGHyUo0cNfGEF9t1KHEicUfJw==} + '@uiw/react-codemirror@4.25.2': + resolution: {integrity: sha512-XP3R1xyE0CP6Q0iR0xf3ed+cJzJnfmbLelgJR6osVVtMStGGZP3pGQjjwDRYptmjGHfEELUyyBLdY25h0BQg7w==} peerDependencies: '@babel/runtime': '>=7.11.0' '@codemirror/state': '>=6.0.0' '@codemirror/theme-one-dark': '>=6.0.0' '@codemirror/view': '>=6.0.0' codemirror: '>=6.0.0' - react: '>=16.8.0' - react-dom: '>=16.8.0' + react: '>=17.0.0' + react-dom: '>=17.0.0' '@vercel/speed-insights@1.2.0': resolution: {integrity: sha512-y9GVzrUJ2xmgtQlzFP2KhVRoCglwfRQgjyfY607aU0hh0Un6d0OUyrJkjuAlsV18qR4zfoFPs/BiIj9YDS6Wzw==} @@ -2378,16 +2487,16 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - ansi-regex@6.1.0: - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} any-promise@1.3.0: @@ -2423,8 +2532,13 @@ packages: peerDependencies: postcss: ^8.1.0 - b4a@1.6.7: - resolution: {integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==} + b4a@1.7.3: + resolution: {integrity: sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true babel-plugin-syntax-hermes-parser@0.21.1: resolution: {integrity: sha512-tUCEa+EykZx3oJXc+PolKz2iwDscCJ2hCONMvEqjAb4jIQH5ZapDd5Brs2Nk4TQpSJ/1Ykz53ksQbevXbF0wxg==} @@ -2432,8 +2546,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - bare-events@2.6.0: - resolution: {integrity: sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==} + bare-events@2.7.0: + resolution: {integrity: sha512-b3N5eTW1g7vXkw+0CXh/HazGTcO5KYuu/RCNaJbDMPI6LHDi+7qe8EmxKUVe1sUbY2KZOVZFyj62x0OEz9qyAA==} base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} @@ -2446,6 +2560,10 @@ packages: resolution: {integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==} engines: {node: ^4.5.0 || >= 5.9} + baseline-browser-mapping@2.8.10: + resolution: {integrity: sha512-uLfgBi+7IBNay8ECBO2mVMGZAc1VgZWEChxm4lv+TobGdG82LnXMjuNGo/BSSZZL4UmkWhxEHP2f5ziLNwGWMA==} + hasBin: true + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -2460,8 +2578,8 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.26.3: + resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2493,8 +2611,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001727: - resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + caniuse-lite@1.0.30001746: + resolution: {integrity: sha512-eA7Ys/DGw+pnkWWSE/id29f2IcPHVoE8wxtvE5JdvD2V28VTDPy1yEeo11Guz0sJ4ZeGRcm3uaTcAqK1LXaphA==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -2503,9 +2621,9 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.1.0: - resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} - engines: {node: '>=18.17'} + cheerio@1.1.2: + resolution: {integrity: sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==} + engines: {node: '>=20.18.1'} chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} @@ -2560,17 +2678,14 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - commander@13.1.0: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} + commander@14.0.1: + resolution: {integrity: sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==} + engines: {node: '>=20'} + commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -2607,8 +2722,8 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - core-js@3.44.0: - resolution: {integrity: sha512-aFCtd4l6GvAXwVEh3XbbVqJGHDJt0OZRa+5ePGx3LLwi12WfexqQxcsohb2wgsa/92xtl19Hd66G/L+TaAxDMw==} + core-js@3.45.1: + resolution: {integrity: sha512-L4NPsJlCfZsPeXukyzHFlg/i7IIVwHSItR0wg0FLNqYClJ4MQYTYLbC7EkjKYRLZF2iof2MUgN0EGy7MdQFChg==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2662,8 +2777,8 @@ packages: supports-color: optional: true - debug@4.4.1: - resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2679,8 +2794,8 @@ packages: resolution: {integrity: sha512-RHd9ABw4Fvk+gYDWqwOftG849x0bYOySl/RgX0tLI9i27ZIeSO91mLZJEp7oPHOMFqHvpgu21YptmDt0FYD/0A==} engines: {node: '>=0.10.0'} - detect-libc@2.0.4: - resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} + detect-libc@2.1.1: + resolution: {integrity: sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==} engines: {node: '>=8'} detect-node-es@1.1.0: @@ -2706,8 +2821,8 @@ packages: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} - dompurify@3.2.6: - resolution: {integrity: sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==} + dompurify@3.2.7: + resolution: {integrity: sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==} domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -2722,11 +2837,11 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - effect@3.16.16: - resolution: {integrity: sha512-q8jsuAJykQJJ9jDkR9VaAR1JeHnEDn49g6+LkveIcfW3nIPUJw6BrC9ZPaVCJWmU23vKoVj9XqJmC/EW8kiI8g==} + effect@3.18.1: + resolution: {integrity: sha512-5aJ7yRlvvkBplMSnhPyol7WYvPenvau12asO3HJhG/126SySWV9D8bscGTbV52XxtC5bwO/VUd5ffjE6uep/1A==} - electron-to-chromium@1.5.187: - resolution: {integrity: sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA==} + electron-to-chromium@1.5.228: + resolution: {integrity: sha512-nxkiyuqAn4MJ1QbobwqJILiDtu/jk14hEAWaMiJmNPh1Z+jqoFlBFZjdXwLWGeVSeu9hGLg6+2G9yJaW8rBIFA==} embla-carousel-autoplay@8.6.0: resolution: {integrity: sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==} @@ -2766,8 +2881,8 @@ packages: resolution: {integrity: sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==} engines: {node: '>=10.2.0'} - enhanced-resolve@5.18.2: - resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + enhanced-resolve@5.18.3: + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} engines: {node: '>=10.13.0'} entities@4.5.0: @@ -2781,8 +2896,8 @@ packages: es-module-lexer@0.10.5: resolution: {integrity: sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw==} - es-toolkit@1.39.7: - resolution: {integrity: sha512-ek/wWryKouBrZIjkwW2BFf91CWOIMvoy2AE5YYgUrfWsJQM2Su1LoLtrw8uusEpN9RfqLlV/0FVNjT0WMv8Bxw==} + es-toolkit@1.39.10: + resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==} esbuild-android-64@0.15.18: resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} @@ -2914,8 +3029,8 @@ packages: engines: {node: '>=12'} hasBin: true - esbuild@0.25.7: - resolution: {integrity: sha512-daJB0q2dmTzo90L9NjRaohhRWrCzYxWNFTjEi72/h+p5DcY3yn4MacWfDakHmaBaDzDiuLJsCh0+6LK/iX+c+Q==} + esbuild@0.25.10: + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} engines: {node: '>=18'} hasBin: true @@ -2949,6 +3064,9 @@ packages: eventemitter3@2.0.3: resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -2976,8 +3094,9 @@ packages: fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fdir@6.4.6: - resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -3090,8 +3209,8 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hono@4.8.5: - resolution: {integrity: sha512-Up2cQbtNz1s111qpnnECdTGqSIUIhZJMLikdKkshebQSEBcoUKq6XJayLGqSZWidiH0zfHRCJqFu062Mz5UuRA==} + hono@4.9.9: + resolution: {integrity: sha512-Hxw4wT6zjJGZJdkJzAx9PyBdf7ZpxaTSA0NfxqjLghwMrLBX8p33hJBzoETRakF3UJu6OdNQBZAlNSkGqKFukw==} engines: {node: '>=16.9.0'} html-escaper@2.0.2: @@ -3137,9 +3256,6 @@ packages: resolution: {integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - is-arrayish@0.3.2: - resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} - is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -3216,8 +3332,8 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jiti@2.4.2: - resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true joycon@3.1.1: @@ -3237,8 +3353,8 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonfile@6.2.0: + resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} jszip@3.10.1: resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} @@ -3337,6 +3453,9 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + lodash.noop@3.0.1: + resolution: {integrity: sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg==} + lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -3354,21 +3473,24 @@ packages: peerDependencies: react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - magic-string@0.30.17: - resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + magic-string@0.30.19: + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} - material-icon-theme@5.24.0: - resolution: {integrity: sha512-fKCtRSOZwSMipgfsisDtlERXndg7hu4Ykhw8Vr+92NFVhYAi3izRHyKg6YooTw6yIB8fMF6Gq8IeNhbRxRY2SQ==} + material-icon-theme@5.27.0: + resolution: {integrity: sha512-zB3LtPY2n6z4Kp5fSc7OT8KwAZIJRvcOq6PZR4jmAkvmW1Ot+y6lNJmNqERK9rYAT42tZD1YmkhHaMcA2KEObA==} engines: {vscode: ^1.55.0} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + messageformat@4.0.0-13: + resolution: {integrity: sha512-MpP95/VX/5pvsLOLcrDFSS3z5kmhOGL92npbM+D9N3O/qWnfl1yu0i2QbbnXzU91U0i2CruhNRdU6rgx5+bKVw==} + micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -3396,20 +3518,18 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.0.2: - resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} mitt@3.0.1: resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - mkdirp@3.0.1: - resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} - engines: {node: '>=10'} - hasBin: true + mlly@1.8.0: + resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==} - mlly@1.7.4: - resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==} + moo@0.5.2: + resolution: {integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==} mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} @@ -3434,8 +3554,8 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.5: - resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + nanoid@5.1.6: + resolution: {integrity: sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==} engines: {node: ^18 || >=20} hasBin: true @@ -3443,6 +3563,17 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} + neverthrow@8.2.0: + resolution: {integrity: sha512-kOCT/1MCPAxY5iUV3wytNFUMUolzuwd/VF/1KCx7kf6CutrOsTie+84zTGTpgQycjvfLdBBdvBvFLqFD2c0wkQ==} + engines: {node: '>=18'} + + next-sitemap@4.2.3: + resolution: {integrity: sha512-vjdCxeDuWDzldhCnyFCQipw5bfpl4HmZA7uoo3GAaYGjGgfL4Cxb1CiztPuWGmS+auYs7/8OekRS8C2cjdAsjQ==} + engines: {node: '>=14.18'} + hasBin: true + peerDependencies: + next: '*' + next@15.3.5: resolution: {integrity: sha512-RkazLBMMDJSJ4XZQ81kolSpwiCt907l0xcgcpF4xC2Vml6QVcPNXW0NQRwQ80FFtSn7UM52XN0anaw8TEJXaiw==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -3473,8 +3604,8 @@ packages: encoding: optional: true - node-releases@2.0.19: - resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + node-releases@2.0.21: + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} @@ -3558,16 +3689,19 @@ packages: pkg-types@1.3.1: resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} - playwright-core@1.54.1: - resolution: {integrity: sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==} + playwright-core@1.55.1: + resolution: {integrity: sha512-Z6Mh9mkwX+zxSlHqdr5AOcJnfp+xUWLCt9uKV18fhzA8eyxUd8NUWzAjxUh55RZKSYwDGX0cfaySdhZJGMoJ+w==} engines: {node: '>=18'} hasBin: true - playwright@1.54.1: - resolution: {integrity: sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==} + playwright@1.55.1: + resolution: {integrity: sha512-cJW4Xd/G3v5ovXtJJ52MAOclqeac9S/aGGgRzLabuF8TnIb6xHvMzKIa6JmrRzUkeXJgfL1MhukP0NK6l39h3A==} engines: {node: '>=18'} hasBin: true + pofile@1.1.4: + resolution: {integrity: sha512-r6Q21sKsY1AjTVVjOuU02VYKVNQGJNQHjTIvs4dEbeuuYfxgYk/DGD2mqqq4RDaVkwdSq0VEtmQUOPe/wH8X3g==} + postcss-load-config@6.0.1: resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} engines: {node: '>= 18'} @@ -3597,8 +3731,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.257.0: - resolution: {integrity: sha512-Ujg9RGtWVCu+4tmlRpALSy2ZOZI6JtieSYXIDDdgMWm167KYKvTtbMPHdoBaPWcNu0Km+1hAIBnQFygyn30KhA==} + posthog-js@1.268.9: + resolution: {integrity: sha512-ejK5/i0TUQ8I1SzaIn7xWNf5TzOjWquawpgjKit8DyucD3Z1yf7LTMtgCYZN8oRx9VjiPcP34fSk8YsWQmmkTQ==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 rrweb-snapshot: 2.0.0-alpha.17 @@ -3608,12 +3742,12 @@ packages: rrweb-snapshot: optional: true - posthog-node@5.5.1: - resolution: {integrity: sha512-y2TBl6H27vEbXk7sqG8QISmYaUN/UcPOYYDAK0wtnXRG3ySb93mG//vri1zS2hZvYHbBv0Tz8sLpZRCq4/v99A==} + posthog-node@5.9.2: + resolution: {integrity: sha512-oU7FbFcH5cn40nhP04cBeT67zE76EiGWjKKzDvm6IOm5P83sqM0Ij0wMJQSHp+QI6ZN7MLzb+4xfMPUEZ4q6CA==} engines: {node: '>=20'} - preact@10.26.9: - resolution: {integrity: sha512-SSjF9vcnF27mJK1XyFMNJzFd5u3pQiATFqoaDy03XuN00u4ziveVVEGt5RKJrDR8MHE/wJo9Nnad56RLzS2RMA==} + preact@10.27.2: + resolution: {integrity: sha512-5SYSgFKSyhCbk6SrXyMpqjb5+MQBgfvEKE/OC+PujcY34sOpqtr+0AZQtPYx5IA6VxynQ7rUPCtKzyovpj9Bpg==} pretty-ms@8.0.0: resolution: {integrity: sha512-ASJqOugUF1bbzI35STMBUpZqdfYKlJugy6JBziGi2EE+AL5JPJGSzvpeVXojxrr0ViUYoToUjb5kjSEGf7Y83Q==} @@ -3665,13 +3799,13 @@ packages: '@types/react': optional: true - react-dom@19.1.0: - resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: - react: ^19.1.0 + react: ^19.2.0 - react-hook-form@7.60.0: - resolution: {integrity: sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==} + react-hook-form@7.63.0: + resolution: {integrity: sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA==} engines: {node: '>=18.0.0'} peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 @@ -3682,6 +3816,16 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' + react-html-string-parser@1.4.1: + resolution: {integrity: sha512-rbgLQbXdzq9n2KjDzTsbP0dxbugRYbcmGklPD4Zq9hbWwj8+fyNwj8Cv6iKUbnsenv+VsOQ2mdc6gyb6il1C9Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '>=16.8.0' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -3713,8 +3857,8 @@ packages: '@types/react': optional: true - react-resizable-panels@3.0.3: - resolution: {integrity: sha512-7HA8THVBHTzhDK4ON0tvlGXyMAJN1zBeRpuyyremSikgYh2ku6ltD7tsGQOcXx4NKPrZtYCm/5CBr+dkruTGQw==} + react-resizable-panels@3.0.6: + resolution: {integrity: sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==} peerDependencies: react: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc @@ -3733,8 +3877,8 @@ packages: '@types/react': optional: true - react@19.1.0: - resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -3792,8 +3936,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - rollup@4.45.1: - resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} + rollup@4.52.3: + resolution: {integrity: sha512-RIDh866U8agLgiIcdpB+COKnlCreHJLfIhWC3LVflku5YHfpnsIKigRZeFfMfCc4dVcqNVfQQ5gO/afOck064A==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3827,8 +3971,11 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + sayable@0.0.0-alpha.6: + resolution: {integrity: sha512-POg2RF913Fb/SjoJa1MLP6hIEqAlnTZXZNjLkcf+URQ9lCgix2yu+xwIk64xCFGk1h7LGJtWgARo9/+75OkSfA==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} semver-diff@3.1.1: resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} @@ -3847,11 +3994,14 @@ packages: resolution: {integrity: sha512-6uZQLGyUkNA4N+Zii9fYukmNu9PEA1F5rqcwXzN/3LtBjwl2dFBbVZ1Zyn08/CGkB4H440PIemdOQBt1Wvjbrg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + server-only@0.0.1: + resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - sharp@0.34.3: - resolution: {integrity: sha512-eX2IQ6nFohW4DbvHIOLRB3MHFpYqaqvXd3Tp5e/T/dSH83fxaNJQRvDMhASmkNTsNTVF2/OOopzRCt7xokgPfg==} + sharp@0.34.4: + resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} shebang-command@2.0.0: @@ -3869,9 +4019,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - simple-swizzle@0.2.2: - resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} - sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -3894,8 +4041,8 @@ packages: resolution: {integrity: sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==} engines: {node: '>=10.2.0'} - sonner@2.0.6: - resolution: {integrity: sha512-yHFhk8T/DK3YxjFQXIrcHT1rGEeTLliVzWbO0xN8GberVun2RiBnxAjXAYpZrqwEVHBG9asI/Li8TAAhN9m59Q==} + sonner@2.0.7: + resolution: {integrity: sha512-W6ZN4p58k8aDKA4XPcx2hpIQXBRAgyiWVkYhT7CvK6D3iAu7xjvVyhQHg2/iaKJZ1XVJ4r7XuwGL+WGEK37i9w==} peerDependencies: react: ^18.0.0 || ^19.0.0 || ^19.0.0-rc react-dom: ^18.0.0 || ^19.0.0 || ^19.0.0-rc @@ -3911,13 +4058,14 @@ packages: source-map@0.8.0-beta.0: resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} engines: {node: '>= 8'} + deprecated: The work that was done in this beta branch won't be included in future versions streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} - streamx@2.22.1: - resolution: {integrity: sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==} + streamx@2.23.0: + resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3937,8 +4085,8 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + strip-ansi@7.1.2: + resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} strip-json-comments@2.0.1: @@ -3983,18 +4131,18 @@ packages: tailwind-merge@3.3.1: resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} - tailwindcss@4.1.11: - resolution: {integrity: sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA==} + tailwindcss@4.1.14: + resolution: {integrity: sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==} - tapable@2.2.2: - resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} + tapable@2.2.3: + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} engines: {node: '>=6'} tar-stream@3.1.7: resolution: {integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==} - tar@7.4.3: - resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} + tar@7.5.1: + resolution: {integrity: sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==} engines: {node: '>=18'} text-decoder@1.2.3: @@ -4016,12 +4164,12 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.14: - resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + tinyglobby@0.2.15: + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tmp@0.2.3: - resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + tmp@0.2.5: + resolution: {integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==} engines: {node: '>=14.14'} to-regex-range@5.0.1: @@ -4081,42 +4229,42 @@ packages: typescript: optional: true - turbo-darwin-64@2.5.5: - resolution: {integrity: sha512-RYnTz49u4F5tDD2SUwwtlynABNBAfbyT2uU/brJcyh5k6lDLyNfYKdKmqd3K2ls4AaiALWrFKVSBsiVwhdFNzQ==} + turbo-darwin-64@2.5.8: + resolution: {integrity: sha512-Dh5bCACiHO8rUXZLpKw+m3FiHtAp2CkanSyJre+SInEvEr5kIxjGvCK/8MFX8SFRjQuhjtvpIvYYZJB4AGCxNQ==} cpu: [x64] os: [darwin] - turbo-darwin-arm64@2.5.5: - resolution: {integrity: sha512-Tk+ZeSNdBobZiMw9aFypQt0DlLsWSFWu1ymqsAdJLuPoAH05qCfYtRxE1pJuYHcJB5pqI+/HOxtJoQ40726Btw==} + turbo-darwin-arm64@2.5.8: + resolution: {integrity: sha512-f1H/tQC9px7+hmXn6Kx/w8Jd/FneIUnvLlcI/7RGHunxfOkKJKvsoiNzySkoHQ8uq1pJnhJ0xNGTlYM48ZaJOQ==} cpu: [arm64] os: [darwin] - turbo-linux-64@2.5.5: - resolution: {integrity: sha512-2/XvMGykD7VgsvWesZZYIIVXMlgBcQy+ZAryjugoTcvJv8TZzSU/B1nShcA7IAjZ0q7OsZ45uP2cOb8EgKT30w==} + turbo-linux-64@2.5.8: + resolution: {integrity: sha512-hMyvc7w7yadBlZBGl/bnR6O+dJTx3XkTeyTTH4zEjERO6ChEs0SrN8jTFj1lueNXKIHh1SnALmy6VctKMGnWfw==} cpu: [x64] os: [linux] - turbo-linux-arm64@2.5.5: - resolution: {integrity: sha512-DW+8CjCjybu0d7TFm9dovTTVg1VRnlkZ1rceO4zqsaLrit3DgHnN4to4uwyuf9s2V/BwS3IYcRy+HG9BL596Iw==} + turbo-linux-arm64@2.5.8: + resolution: {integrity: sha512-LQELGa7bAqV2f+3rTMRPnj5G/OHAe2U+0N9BwsZvfMvHSUbsQ3bBMWdSQaYNicok7wOZcHjz2TkESn1hYK6xIQ==} cpu: [arm64] os: [linux] - turbo-windows-64@2.5.5: - resolution: {integrity: sha512-q5p1BOy8ChtSZfULuF1BhFMYIx6bevXu4fJ+TE/hyNfyHJIfjl90Z6jWdqAlyaFLmn99X/uw+7d6T/Y/dr5JwQ==} + turbo-windows-64@2.5.8: + resolution: {integrity: sha512-3YdcaW34TrN1AWwqgYL9gUqmZsMT4T7g8Y5Azz+uwwEJW+4sgcJkIi9pYFyU4ZBSjBvkfuPZkGgfStir5BBDJQ==} cpu: [x64] os: [win32] - turbo-windows-arm64@2.5.5: - resolution: {integrity: sha512-AXbF1KmpHUq3PKQwddMGoKMYhHsy5t1YBQO8HZ04HLMR0rWv9adYlQ8kaeQJTko1Ay1anOBFTqaxfVOOsu7+1Q==} + turbo-windows-arm64@2.5.8: + resolution: {integrity: sha512-eFC5XzLmgXJfnAK3UMTmVECCwuBcORrWdewoiXBnUm934DY6QN8YowC/srhNnROMpaKaqNeRpoB5FxCww3eteQ==} cpu: [arm64] os: [win32] - turbo@2.5.5: - resolution: {integrity: sha512-eZ7wI6KjtT1eBqCnh2JPXWNUAxtoxxfi6VdBdZFvil0ychCOTxbm7YLRBi1JSt7U3c+u3CLxpoPxLdvr/Npr3A==} + turbo@2.5.8: + resolution: {integrity: sha512-5c9Fdsr9qfpT3hA0EyYSFRZj1dVVsb6KIWubA9JBYZ/9ZEAijgUEae0BBR/Xl/wekt4w65/lYLTFaP3JmwSO8w==} hasBin: true - tw-animate-css@1.3.5: - resolution: {integrity: sha512-t3u+0YNoloIhj1mMXs779P6MO9q3p3mvGn4k1n3nJPqJw/glZcuijG2qTSN4z4mgNRfW5ZC3aXJFLwDtiipZXA==} + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} @@ -4138,8 +4286,8 @@ packages: peerDependencies: typescript: '>=3.6.5' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -4149,8 +4297,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@7.12.0: - resolution: {integrity: sha512-GrKEsc3ughskmGA9jevVlIOPMiiAHJ4OFUtaAH+NhfTUSiZ1wMPIQqQvAJUrJspFXJt3EBWgpAeoHEDVT1IBug==} + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} engines: {node: '>=20.18.1'} unique-string@2.0.0: @@ -4400,14 +4548,17 @@ packages: zod@4.0.5: resolution: {integrity: sha512-/5UuuRPStvHXu7RS+gmvRf4NXrNxpSllGwDnCBcJZtQsKrviYXm54yDGV2KYNLT5kq0lHGcl7lqWJLgSaG+tgA==} + zod@4.1.12: + resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==} + snapshots: '@alloc/quick-lru@5.2.0': {} '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@antfu/ni@0.21.12': {} @@ -4424,61 +4575,61 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.28.4': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.0) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.28.0 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.0) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/core@7.28.0': + '@babel/core@7.28.4': dependencies: - '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helpers': 7.27.6 - '@babel/parser': 7.28.0 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.1 + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.28.0': + '@babel/generator@7.28.3': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.0 + '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.26.3 lru-cache: 5.1.1 semver: 6.3.1 @@ -4486,26 +4637,26 @@ snapshots: '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.1 + '@babel/traverse': 7.28.4 + '@babel/types': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.26.0)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.28.0 + '@babel/traverse': 7.28.4 transitivePeerDependencies: - supports-color @@ -4517,42 +4668,42 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.27.6': + '@babel/helpers@7.28.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 - '@babel/parser@7.28.0': + '@babel/parser@7.28.4': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.0)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.27.6': {} + '@babel/runtime@7.28.4': {} '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@babel/traverse@7.28.0': + '@babel/traverse@7.28.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.0 + '@babel/generator': 7.28.3 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/template': 7.27.2 - '@babel/types': 7.28.1 - debug: 4.4.1 + '@babel/types': 7.28.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -4561,7 +4712,7 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.1': + '@babel/types@7.28.4': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 @@ -4601,13 +4752,13 @@ snapshots: '@biomejs/cli-win32-x64@2.1.1': optional: true - '@buape/carbon@0.9.0(hono@4.8.5)': + '@buape/carbon@0.9.0(hono@4.9.9)': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.18.8 discord-api-types: 0.38.5 optionalDependencies: '@cloudflare/workers-types': 4.20250513.0 - '@hono/node-server': 1.14.1(hono@4.8.5) + '@hono/node-server': 1.14.1(hono@4.9.9) '@types/bun': 1.2.13 '@types/ws': 8.18.1 ws: 8.18.2 @@ -4636,151 +4787,144 @@ snapshots: '@cloudflare/workers-types@4.20250513.0': optional: true - '@codemirror/autocomplete@6.18.6': + '@codemirror/autocomplete@6.19.0': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 - '@codemirror/commands@6.8.1': + '@codemirror/commands@6.9.0': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@codemirror/lang-angular@0.1.4': dependencies: - '@codemirror/lang-html': 6.4.9 + '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 '@codemirror/lang-cpp@6.0.3': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/cpp': 1.1.3 '@codemirror/lang-css@6.3.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/css': 1.3.0 '@codemirror/lang-go@6.0.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/go': 1.0.1 - '@codemirror/lang-html@6.4.9': + '@codemirror/lang-html@6.4.11': dependencies: - '@codemirror/autocomplete': 6.18.6 + '@codemirror/autocomplete': 6.19.0 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/css': 1.3.0 - '@lezer/html': 1.3.10 + '@lezer/html': 1.3.12 '@codemirror/lang-java@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/java': 1.1.3 '@codemirror/lang-javascript@6.2.4': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 - '@codemirror/lint': 6.8.5 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 - '@lezer/javascript': 1.5.1 + '@lezer/javascript': 1.5.4 '@codemirror/lang-json@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/json': 1.0.3 '@codemirror/lang-less@6.0.2': dependencies: '@codemirror/lang-css': 6.3.1 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@codemirror/lang-lezer@6.0.2': - dependencies: - '@codemirror/language': 6.11.2 - '@codemirror/state': 6.5.2 - '@lezer/common': 1.2.3 - '@lezer/lezer': 1.1.2 - - '@codemirror/lang-liquid@6.2.3': + '@codemirror/lang-liquid@6.3.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@codemirror/lang-markdown@6.3.3': + '@codemirror/lang-markdown@6.4.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 '@codemirror/lang-php@6.0.2': dependencies: - '@codemirror/lang-html': 6.4.9 - '@codemirror/language': 6.11.2 + '@codemirror/lang-html': 6.4.11 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 - '@lezer/php': 1.0.3 + '@lezer/php': 1.0.5 '@codemirror/lang-python@6.2.1': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/python': 1.1.18 '@codemirror/lang-rust@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/rust': 1.0.2 '@codemirror/lang-sass@6.0.2': dependencies: '@codemirror/lang-css': 6.3.1 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/sass': 1.1.0 - '@codemirror/lang-sql@6.9.0': + '@codemirror/lang-sql@6.10.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -4788,33 +4932,33 @@ snapshots: '@codemirror/lang-vue@0.1.3': dependencies: - '@codemirror/lang-html': 6.4.9 + '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 '@codemirror/lang-wast@6.0.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 '@codemirror/lang-xml@6.1.0': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.6 '@codemirror/lang-yaml@6.1.2': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -4827,48 +4971,48 @@ snapshots: '@codemirror/lang-cpp': 6.0.3 '@codemirror/lang-css': 6.3.1 '@codemirror/lang-go': 6.0.1 - '@codemirror/lang-html': 6.4.9 + '@codemirror/lang-html': 6.4.11 '@codemirror/lang-java': 6.0.2 '@codemirror/lang-javascript': 6.2.4 '@codemirror/lang-json': 6.0.2 '@codemirror/lang-less': 6.0.2 - '@codemirror/lang-liquid': 6.2.3 - '@codemirror/lang-markdown': 6.3.3 + '@codemirror/lang-liquid': 6.3.0 + '@codemirror/lang-markdown': 6.4.0 '@codemirror/lang-php': 6.0.2 '@codemirror/lang-python': 6.2.1 '@codemirror/lang-rust': 6.0.2 '@codemirror/lang-sass': 6.0.2 - '@codemirror/lang-sql': 6.9.0 + '@codemirror/lang-sql': 6.10.0 '@codemirror/lang-vue': 0.1.3 '@codemirror/lang-wast': 6.0.2 '@codemirror/lang-xml': 6.1.0 '@codemirror/lang-yaml': 6.1.2 - '@codemirror/language': 6.11.2 - '@codemirror/legacy-modes': 6.5.1 + '@codemirror/language': 6.11.3 + '@codemirror/legacy-modes': 6.5.2 - '@codemirror/language@6.11.2': + '@codemirror/language@6.11.3': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 style-mod: 4.1.2 - '@codemirror/legacy-modes@6.5.1': + '@codemirror/legacy-modes@6.5.2': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 - '@codemirror/lint@6.8.5': + '@codemirror/lint@6.9.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 crelt: 1.0.6 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -4877,31 +5021,37 @@ snapshots: '@codemirror/theme-one-dark@6.1.3': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/highlight': 1.2.1 - '@codemirror/view@6.38.1': + '@codemirror/view@6.38.4': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 style-mod: 4.1.2 w3c-keyname: 2.2.8 + '@commander-js/extra-typings@14.0.0(commander@14.0.1)': + dependencies: + commander: 14.0.1 + + '@corex/deepmerge@4.0.43': {} + '@crxjs/vite-plugin@2.0.0-beta.30': dependencies: '@rollup/pluginutils': 4.2.1 '@webcomponents/custom-elements': 1.6.0 acorn-walk: 8.3.4 - cheerio: 1.1.0 + cheerio: 1.1.2 convert-source-map: 1.9.0 - debug: 4.4.1 + debug: 4.4.3 es-module-lexer: 0.10.5 fast-glob: 3.3.3 fs-extra: 10.1.0 jsesc: 3.1.0 - magic-string: 0.30.17 + magic-string: 0.30.19 picocolors: 1.1.1 react-refresh: 0.13.0 rollup: 2.79.2 @@ -4911,7 +5061,7 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@emnapi/runtime@1.4.5': + '@emnapi/runtime@1.5.0': dependencies: tslib: 2.8.1 optional: true @@ -4919,13 +5069,13 @@ snapshots: '@esbuild/aix-ppc64@0.20.2': optional: true - '@esbuild/aix-ppc64@0.25.7': + '@esbuild/aix-ppc64@0.25.10': optional: true '@esbuild/android-arm64@0.20.2': optional: true - '@esbuild/android-arm64@0.25.7': + '@esbuild/android-arm64@0.25.10': optional: true '@esbuild/android-arm@0.15.18': @@ -4934,55 +5084,55 @@ snapshots: '@esbuild/android-arm@0.20.2': optional: true - '@esbuild/android-arm@0.25.7': + '@esbuild/android-arm@0.25.10': optional: true '@esbuild/android-x64@0.20.2': optional: true - '@esbuild/android-x64@0.25.7': + '@esbuild/android-x64@0.25.10': optional: true '@esbuild/darwin-arm64@0.20.2': optional: true - '@esbuild/darwin-arm64@0.25.7': + '@esbuild/darwin-arm64@0.25.10': optional: true '@esbuild/darwin-x64@0.20.2': optional: true - '@esbuild/darwin-x64@0.25.7': + '@esbuild/darwin-x64@0.25.10': optional: true '@esbuild/freebsd-arm64@0.20.2': optional: true - '@esbuild/freebsd-arm64@0.25.7': + '@esbuild/freebsd-arm64@0.25.10': optional: true '@esbuild/freebsd-x64@0.20.2': optional: true - '@esbuild/freebsd-x64@0.25.7': + '@esbuild/freebsd-x64@0.25.10': optional: true '@esbuild/linux-arm64@0.20.2': optional: true - '@esbuild/linux-arm64@0.25.7': + '@esbuild/linux-arm64@0.25.10': optional: true '@esbuild/linux-arm@0.20.2': optional: true - '@esbuild/linux-arm@0.25.7': + '@esbuild/linux-arm@0.25.10': optional: true '@esbuild/linux-ia32@0.20.2': optional: true - '@esbuild/linux-ia32@0.25.7': + '@esbuild/linux-ia32@0.25.10': optional: true '@esbuild/linux-loong64@0.15.18': @@ -4991,203 +5141,210 @@ snapshots: '@esbuild/linux-loong64@0.20.2': optional: true - '@esbuild/linux-loong64@0.25.7': + '@esbuild/linux-loong64@0.25.10': optional: true '@esbuild/linux-mips64el@0.20.2': optional: true - '@esbuild/linux-mips64el@0.25.7': + '@esbuild/linux-mips64el@0.25.10': optional: true '@esbuild/linux-ppc64@0.20.2': optional: true - '@esbuild/linux-ppc64@0.25.7': + '@esbuild/linux-ppc64@0.25.10': optional: true '@esbuild/linux-riscv64@0.20.2': optional: true - '@esbuild/linux-riscv64@0.25.7': + '@esbuild/linux-riscv64@0.25.10': optional: true '@esbuild/linux-s390x@0.20.2': optional: true - '@esbuild/linux-s390x@0.25.7': + '@esbuild/linux-s390x@0.25.10': optional: true '@esbuild/linux-x64@0.20.2': optional: true - '@esbuild/linux-x64@0.25.7': + '@esbuild/linux-x64@0.25.10': optional: true - '@esbuild/netbsd-arm64@0.25.7': + '@esbuild/netbsd-arm64@0.25.10': optional: true '@esbuild/netbsd-x64@0.20.2': optional: true - '@esbuild/netbsd-x64@0.25.7': + '@esbuild/netbsd-x64@0.25.10': optional: true - '@esbuild/openbsd-arm64@0.25.7': + '@esbuild/openbsd-arm64@0.25.10': optional: true '@esbuild/openbsd-x64@0.20.2': optional: true - '@esbuild/openbsd-x64@0.25.7': + '@esbuild/openbsd-x64@0.25.10': optional: true - '@esbuild/openharmony-arm64@0.25.7': + '@esbuild/openharmony-arm64@0.25.10': optional: true '@esbuild/sunos-x64@0.20.2': optional: true - '@esbuild/sunos-x64@0.25.7': + '@esbuild/sunos-x64@0.25.10': optional: true '@esbuild/win32-arm64@0.20.2': optional: true - '@esbuild/win32-arm64@0.25.7': + '@esbuild/win32-arm64@0.25.10': optional: true '@esbuild/win32-ia32@0.20.2': optional: true - '@esbuild/win32-ia32@0.25.7': + '@esbuild/win32-ia32@0.25.10': optional: true '@esbuild/win32-x64@0.20.2': optional: true - '@esbuild/win32-x64@0.25.7': + '@esbuild/win32-x64@0.25.10': optional: true - '@floating-ui/core@1.7.2': + '@floating-ui/core@1.7.3': dependencies: '@floating-ui/utils': 0.2.10 - '@floating-ui/dom@1.7.2': + '@floating-ui/dom@1.7.4': dependencies: - '@floating-ui/core': 1.7.2 + '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@floating-ui/react-dom@2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@floating-ui/dom': 1.7.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@floating-ui/dom': 1.7.4 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@floating-ui/utils@0.2.10': {} '@gerhobbelt/gitignore-parser@0.2.0-9': {} - '@hono/node-server@1.14.1(hono@4.8.5)': + '@hono/node-server@1.14.1(hono@4.9.9)': dependencies: - hono: 4.8.5 + hono: 4.9.9 + optional: true - '@hookform/resolvers@5.1.1(react-hook-form@7.60.0(react@19.1.0))': + '@hono/node-server@1.19.5(hono@4.9.9)': + dependencies: + hono: 4.9.9 + + '@hookform/resolvers@5.2.2(react-hook-form@7.63.0(react@19.2.0))': dependencies: '@standard-schema/utils': 0.3.0 - react-hook-form: 7.60.0(react@19.1.0) + react-hook-form: 7.63.0(react@19.2.0) + + '@img/colour@1.0.0': {} - '@img/sharp-darwin-arm64@0.34.3': + '@img/sharp-darwin-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.2.0 + '@img/sharp-libvips-darwin-arm64': 1.2.3 optional: true - '@img/sharp-darwin-x64@0.34.3': + '@img/sharp-darwin-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.2.0 + '@img/sharp-libvips-darwin-x64': 1.2.3 optional: true - '@img/sharp-libvips-darwin-arm64@1.2.0': + '@img/sharp-libvips-darwin-arm64@1.2.3': optional: true - '@img/sharp-libvips-darwin-x64@1.2.0': + '@img/sharp-libvips-darwin-x64@1.2.3': optional: true - '@img/sharp-libvips-linux-arm64@1.2.0': + '@img/sharp-libvips-linux-arm64@1.2.3': optional: true - '@img/sharp-libvips-linux-arm@1.2.0': + '@img/sharp-libvips-linux-arm@1.2.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.2.0': + '@img/sharp-libvips-linux-ppc64@1.2.3': optional: true - '@img/sharp-libvips-linux-s390x@1.2.0': + '@img/sharp-libvips-linux-s390x@1.2.3': optional: true - '@img/sharp-libvips-linux-x64@1.2.0': + '@img/sharp-libvips-linux-x64@1.2.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.2.0': + '@img/sharp-libvips-linuxmusl-arm64@1.2.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.2.0': + '@img/sharp-libvips-linuxmusl-x64@1.2.3': optional: true - '@img/sharp-linux-arm64@0.34.3': + '@img/sharp-linux-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.2.0 + '@img/sharp-libvips-linux-arm64': 1.2.3 optional: true - '@img/sharp-linux-arm@0.34.3': + '@img/sharp-linux-arm@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.2.0 + '@img/sharp-libvips-linux-arm': 1.2.3 optional: true - '@img/sharp-linux-ppc64@0.34.3': + '@img/sharp-linux-ppc64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.2.0 + '@img/sharp-libvips-linux-ppc64': 1.2.3 optional: true - '@img/sharp-linux-s390x@0.34.3': + '@img/sharp-linux-s390x@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.2.0 + '@img/sharp-libvips-linux-s390x': 1.2.3 optional: true - '@img/sharp-linux-x64@0.34.3': + '@img/sharp-linux-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.2.0 + '@img/sharp-libvips-linux-x64': 1.2.3 optional: true - '@img/sharp-linuxmusl-arm64@0.34.3': + '@img/sharp-linuxmusl-arm64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 optional: true - '@img/sharp-linuxmusl-x64@0.34.3': + '@img/sharp-linuxmusl-x64@0.34.4': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 optional: true - '@img/sharp-wasm32@0.34.3': + '@img/sharp-wasm32@0.34.4': dependencies: - '@emnapi/runtime': 1.4.5 + '@emnapi/runtime': 1.5.0 optional: true - '@img/sharp-win32-arm64@0.34.3': + '@img/sharp-win32-arm64@0.34.4': optional: true - '@img/sharp-win32-ia32@0.34.3': + '@img/sharp-win32-ia32@0.34.4': optional: true - '@img/sharp-win32-x64@0.34.3': + '@img/sharp-win32-x64@0.34.4': optional: true '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -5196,19 +5353,24 @@ snapshots: dependencies: minipass: 7.1.2 - '@jridgewell/gen-mapping@0.3.12': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.4': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/trace-mapping@0.3.29': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@lezer/common@1.2.3': {} @@ -5234,7 +5396,7 @@ snapshots: dependencies: '@lezer/common': 1.2.3 - '@lezer/html@1.3.10': + '@lezer/html@1.3.12': dependencies: '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -5246,7 +5408,7 @@ snapshots: '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@lezer/javascript@1.5.1': + '@lezer/javascript@1.5.4': dependencies: '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -5258,11 +5420,6 @@ snapshots: '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@lezer/lezer@1.1.2': - dependencies: - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 - '@lezer/lr@1.4.2': dependencies: '@lezer/common': 1.2.3 @@ -5272,7 +5429,7 @@ snapshots: '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 - '@lezer/php@1.0.3': + '@lezer/php@1.0.5': dependencies: '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 @@ -5310,37 +5467,52 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} + '@messageformat/date-skeleton@2.0.0-0': {} + + '@messageformat/icu-messageformat-1@0.11.0': + dependencies: + '@messageformat/date-skeleton': 2.0.0-0 + '@messageformat/number-skeleton': 2.0.0-0 + '@messageformat/parser': 5.1.1 + messageformat: 4.0.0-13 + + '@messageformat/number-skeleton@2.0.0-0': {} + + '@messageformat/parser@5.1.1': + dependencies: + moo: 0.5.2 + '@million/install@1.0.14': dependencies: '@antfu/ni': 0.21.12 '@axiomhq/js': 1.0.0-rc.3 - '@babel/parser': 7.28.0 + '@babel/parser': 7.28.4 '@babel/types': 7.26.0 '@clack/prompts': 0.7.0 ast-types: 0.14.2 cli-high: 0.4.3 diff: 5.2.0 - effect: 3.16.16 - nanoid: 5.1.5 + effect: 3.18.1 + nanoid: 5.1.6 recast: 0.23.11 xycolors: 0.1.2 - '@million/lint@1.0.14(rollup@4.45.1)': + '@million/lint@1.0.14(rollup@4.52.3)': dependencies: '@axiomhq/js': 1.0.0-rc.3 '@babel/core': 7.26.0 '@babel/types': 7.26.0 - '@hono/node-server': 1.14.1(hono@4.8.5) + '@hono/node-server': 1.19.5(hono@4.9.9) '@million/install': 1.0.14 - '@rollup/pluginutils': 5.2.0(rollup@4.45.1) + '@rollup/pluginutils': 5.3.0(rollup@4.52.3) '@rrweb/types': 2.0.0-alpha.16 babel-plugin-syntax-hermes-parser: 0.21.1 ci-info: 4.3.0 esbuild: 0.20.2 faster-babel-types: 0.1.0(@babel/types@7.26.0) - hono: 4.8.5 + hono: 4.9.9 isomorphic-fetch: 3.0.0 - nanoid: 5.1.5 + nanoid: 5.1.6 ohash: 1.1.6 pako: 2.1.0 pathe: 1.1.2 @@ -5352,7 +5524,7 @@ snapshots: semver: 7.7.2 socket.io: 4.8.1 socket.io-client: 4.8.1 - tmp: 0.2.3 + tmp: 0.2.5 unplugin: 1.16.1 update-notifier-cjs: 5.1.7 transitivePeerDependencies: @@ -5362,72 +5534,76 @@ snapshots: - supports-color - utf-8-validate - '@napi-rs/nice-android-arm-eabi@1.0.4': + '@napi-rs/nice-android-arm-eabi@1.1.1': + optional: true + + '@napi-rs/nice-android-arm64@1.1.1': optional: true - '@napi-rs/nice-android-arm64@1.0.4': + '@napi-rs/nice-darwin-arm64@1.1.1': optional: true - '@napi-rs/nice-darwin-arm64@1.0.4': + '@napi-rs/nice-darwin-x64@1.1.1': optional: true - '@napi-rs/nice-darwin-x64@1.0.4': + '@napi-rs/nice-freebsd-x64@1.1.1': optional: true - '@napi-rs/nice-freebsd-x64@1.0.4': + '@napi-rs/nice-linux-arm-gnueabihf@1.1.1': optional: true - '@napi-rs/nice-linux-arm-gnueabihf@1.0.4': + '@napi-rs/nice-linux-arm64-gnu@1.1.1': optional: true - '@napi-rs/nice-linux-arm64-gnu@1.0.4': + '@napi-rs/nice-linux-arm64-musl@1.1.1': optional: true - '@napi-rs/nice-linux-arm64-musl@1.0.4': + '@napi-rs/nice-linux-ppc64-gnu@1.1.1': optional: true - '@napi-rs/nice-linux-ppc64-gnu@1.0.4': + '@napi-rs/nice-linux-riscv64-gnu@1.1.1': optional: true - '@napi-rs/nice-linux-riscv64-gnu@1.0.4': + '@napi-rs/nice-linux-s390x-gnu@1.1.1': optional: true - '@napi-rs/nice-linux-s390x-gnu@1.0.4': + '@napi-rs/nice-linux-x64-gnu@1.1.1': optional: true - '@napi-rs/nice-linux-x64-gnu@1.0.4': + '@napi-rs/nice-linux-x64-musl@1.1.1': optional: true - '@napi-rs/nice-linux-x64-musl@1.0.4': + '@napi-rs/nice-openharmony-arm64@1.1.1': optional: true - '@napi-rs/nice-win32-arm64-msvc@1.0.4': + '@napi-rs/nice-win32-arm64-msvc@1.1.1': optional: true - '@napi-rs/nice-win32-ia32-msvc@1.0.4': + '@napi-rs/nice-win32-ia32-msvc@1.1.1': optional: true - '@napi-rs/nice-win32-x64-msvc@1.0.4': + '@napi-rs/nice-win32-x64-msvc@1.1.1': optional: true - '@napi-rs/nice@1.0.4': + '@napi-rs/nice@1.1.1': optionalDependencies: - '@napi-rs/nice-android-arm-eabi': 1.0.4 - '@napi-rs/nice-android-arm64': 1.0.4 - '@napi-rs/nice-darwin-arm64': 1.0.4 - '@napi-rs/nice-darwin-x64': 1.0.4 - '@napi-rs/nice-freebsd-x64': 1.0.4 - '@napi-rs/nice-linux-arm-gnueabihf': 1.0.4 - '@napi-rs/nice-linux-arm64-gnu': 1.0.4 - '@napi-rs/nice-linux-arm64-musl': 1.0.4 - '@napi-rs/nice-linux-ppc64-gnu': 1.0.4 - '@napi-rs/nice-linux-riscv64-gnu': 1.0.4 - '@napi-rs/nice-linux-s390x-gnu': 1.0.4 - '@napi-rs/nice-linux-x64-gnu': 1.0.4 - '@napi-rs/nice-linux-x64-musl': 1.0.4 - '@napi-rs/nice-win32-arm64-msvc': 1.0.4 - '@napi-rs/nice-win32-ia32-msvc': 1.0.4 - '@napi-rs/nice-win32-x64-msvc': 1.0.4 + '@napi-rs/nice-android-arm-eabi': 1.1.1 + '@napi-rs/nice-android-arm64': 1.1.1 + '@napi-rs/nice-darwin-arm64': 1.1.1 + '@napi-rs/nice-darwin-x64': 1.1.1 + '@napi-rs/nice-freebsd-x64': 1.1.1 + '@napi-rs/nice-linux-arm-gnueabihf': 1.1.1 + '@napi-rs/nice-linux-arm64-gnu': 1.1.1 + '@napi-rs/nice-linux-arm64-musl': 1.1.1 + '@napi-rs/nice-linux-ppc64-gnu': 1.1.1 + '@napi-rs/nice-linux-riscv64-gnu': 1.1.1 + '@napi-rs/nice-linux-s390x-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-gnu': 1.1.1 + '@napi-rs/nice-linux-x64-musl': 1.1.1 + '@napi-rs/nice-openharmony-arm64': 1.1.1 + '@napi-rs/nice-win32-arm64-msvc': 1.1.1 + '@napi-rs/nice-win32-ia32-msvc': 1.1.1 + '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true '@next/bundle-analyzer@15.3.5': @@ -5437,6 +5613,8 @@ snapshots: - bufferutil - utf-8-validate + '@next/env@13.5.11': {} + '@next/env@15.3.5': {} '@next/swc-darwin-arm64@15.3.5': @@ -5463,15 +5641,6 @@ snapshots: '@next/swc-win32-x64-msvc@15.3.5': optional: true - '@nextjournal/lang-clojure@1.0.0': - dependencies: - '@codemirror/language': 6.11.2 - '@nextjournal/lezer-clojure': 1.0.0 - - '@nextjournal/lezer-clojure@1.0.0': - dependencies: - '@lezer/lr': 1.4.2 - '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -5501,397 +5670,440 @@ snapshots: '@polka/url@1.0.0-next.29': {} + '@posthog/core@1.2.2': {} + '@radix-ui/number@1.1.1': {} - '@radix-ui/primitive@1.1.2': {} - - '@radix-ui/react-accordion@1.2.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collapsible': 1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/primitive@1.1.3': {} + + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) - - '@radix-ui/react-collapsible@1.1.11(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-context@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 - - '@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.2.0 + + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.0)(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-direction@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-id@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + optionalDependencies: + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + aria-hidden: 1.2.6 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.0)(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) - - '@radix-ui/react-popover@1.1.14(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.0)(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) - - '@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@floating-ui/react-dom': 2.1.4(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.0)(react@19.2.0) '@radix-ui/rect': 1.1.1 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) - - '@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-scroll-area@1.2.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-select@2.2.5(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) aria-hidden: 1.2.6 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + react-remove-scroll: 2.7.1(@types/react@19.2.0)(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-slot@1.2.3(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 - - '@radix-ui/react-tabs@1.1.12(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@types/react': 19.2.0 + + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) - - '@radix-ui/react-tooltip@1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': - dependencies: - '@radix-ui/primitive': 1.1.2 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) + + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + dependencies: + '@radix-ui/primitive': 1.1.3 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.8)(react@19.1.0) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.0)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.8)(react@19.1.0)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.0)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) - react: 19.1.0 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.0)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6(@types/react@19.1.8))(@types/react@19.1.8)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.0(@types/react@19.2.0))(@types/react@19.2.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 - '@types/react-dom': 19.1.6(@types/react@19.1.8) + '@types/react': 19.2.0 + '@types/react-dom': 19.2.0(@types/react@19.2.0) '@radix-ui/rect@1.1.1': {} @@ -5901,43 +6113,33 @@ snapshots: '@react-dnd/shallowequal@4.0.2': {} - '@replit/codemirror-lang-csharp@6.2.0(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': - dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 - '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 - '@lezer/common': 1.2.3 - '@lezer/highlight': 1.2.1 - '@lezer/lr': 1.4.2 - - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.19.0)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/language': 6.11.2 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@replit/codemirror-lang-solidity@6.0.2(@codemirror/language@6.11.2)': + '@replit/codemirror-lang-solidity@6.0.2(@codemirror/language@6.11.3)': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/highlight': 1.2.1 - '@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.18.6)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.4)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-svelte@6.0.0(@codemirror/autocomplete@6.19.0)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.11)(@codemirror/lang-javascript@6.2.4)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.4)(@lezer/lr@1.4.2)': dependencies: - '@codemirror/autocomplete': 6.18.6 + '@codemirror/autocomplete': 6.19.0 '@codemirror/lang-css': 6.3.1 - '@codemirror/lang-html': 6.4.9 + '@codemirror/lang-html': 6.4.11 '@codemirror/lang-javascript': 6.2.4 - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 - '@lezer/javascript': 1.5.1 + '@lezer/javascript': 1.5.4 '@lezer/lr': 1.4.2 '@rolldown/pluginutils@1.0.0-beta.27': {} @@ -5947,78 +6149,112 @@ snapshots: estree-walker: 2.0.2 picomatch: 2.3.1 - '@rollup/pluginutils@5.2.0(rollup@4.45.1)': + '@rollup/pluginutils@5.3.0(rollup@4.52.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.45.1 + rollup: 4.52.3 + + '@rollup/rollup-android-arm-eabi@4.52.3': + optional: true - '@rollup/rollup-android-arm-eabi@4.45.1': + '@rollup/rollup-android-arm64@4.52.3': optional: true - '@rollup/rollup-android-arm64@4.45.1': + '@rollup/rollup-darwin-arm64@4.52.3': optional: true - '@rollup/rollup-darwin-arm64@4.45.1': + '@rollup/rollup-darwin-x64@4.52.3': optional: true - '@rollup/rollup-darwin-x64@4.45.1': + '@rollup/rollup-freebsd-arm64@4.52.3': optional: true - '@rollup/rollup-freebsd-arm64@4.45.1': + '@rollup/rollup-freebsd-x64@4.52.3': optional: true - '@rollup/rollup-freebsd-x64@4.45.1': + '@rollup/rollup-linux-arm-gnueabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + '@rollup/rollup-linux-arm-musleabihf@4.52.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.45.1': + '@rollup/rollup-linux-arm64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.45.1': + '@rollup/rollup-linux-arm64-musl@4.52.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.45.1': + '@rollup/rollup-linux-loong64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + '@rollup/rollup-linux-ppc64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + '@rollup/rollup-linux-riscv64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.45.1': + '@rollup/rollup-linux-riscv64-musl@4.52.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.45.1': + '@rollup/rollup-linux-s390x-gnu@4.52.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.45.1': + '@rollup/rollup-linux-x64-gnu@4.52.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.45.1': + '@rollup/rollup-linux-x64-musl@4.52.3': optional: true - '@rollup/rollup-linux-x64-musl@4.45.1': + '@rollup/rollup-openharmony-arm64@4.52.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.45.1': + '@rollup/rollup-win32-arm64-msvc@4.52.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.45.1': + '@rollup/rollup-win32-ia32-msvc@4.52.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.45.1': + '@rollup/rollup-win32-x64-gnu@4.52.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.52.3': optional: true '@rrweb/types@2.0.0-alpha.16': dependencies: rrweb-snapshot: 2.0.0-alpha.18 + '@sayable/config@0.0.0-alpha.4(@sayable/factory@0.0.0-alpha.6)(typescript@5.9.3)': + dependencies: + '@commander-js/extra-typings': 14.0.0(commander@14.0.1) + '@sayable/factory': 0.0.0-alpha.6 + commander: 14.0.1 + neverthrow: 8.2.0 + picomatch: 4.0.3 + typescript: 5.9.3 + zod: 4.1.12 + + '@sayable/factory@0.0.0-alpha.6': {} + + '@sayable/format-po@0.0.0-alpha.4(@sayable/config@0.0.0-alpha.4(@sayable/factory@0.0.0-alpha.6)(typescript@5.9.3))': + dependencies: + '@sayable/config': 0.0.0-alpha.4(@sayable/factory@0.0.0-alpha.6)(typescript@5.9.3) + date-fns: 4.1.0 + pofile: 1.1.4 + + '@sayable/react@0.0.0-alpha.6(@types/react@19.2.0)(react@19.2.0)(sayable@0.0.0-alpha.6)': + dependencies: + react: 19.2.0 + react-html-string-parser: 1.4.1(@types/react@19.2.0)(react@19.2.0) + sayable: 0.0.0-alpha.6 + transitivePeerDependencies: + - '@types/react' + + '@sayable/swc-plugin@0.0.0-alpha.5': {} + '@socket.io/component-emitter@3.1.2': {} '@standard-schema/spec@1.0.0': {} @@ -6031,134 +6267,134 @@ snapshots: dependencies: tslib: 2.8.1 - '@t3-oss/env-core@0.13.8(typescript@5.8.3)(zod@4.0.5)': + '@t3-oss/env-core@0.13.8(typescript@5.9.3)(zod@4.0.5)': optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 zod: 4.0.5 - '@t3-oss/env-nextjs@0.13.8(typescript@5.8.3)(zod@4.0.5)': + '@t3-oss/env-nextjs@0.13.8(typescript@5.9.3)(zod@4.0.5)': dependencies: - '@t3-oss/env-core': 0.13.8(typescript@5.8.3)(zod@4.0.5) + '@t3-oss/env-core': 0.13.8(typescript@5.9.3)(zod@4.0.5) optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 zod: 4.0.5 - '@tailwindcss/node@4.1.11': + '@tailwindcss/node@4.1.14': dependencies: - '@ampproject/remapping': 2.3.0 - enhanced-resolve: 5.18.2 - jiti: 2.4.2 + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.18.3 + jiti: 2.6.1 lightningcss: 1.30.1 - magic-string: 0.30.17 + magic-string: 0.30.19 source-map-js: 1.2.1 - tailwindcss: 4.1.11 + tailwindcss: 4.1.14 - '@tailwindcss/oxide-android-arm64@4.1.11': + '@tailwindcss/oxide-android-arm64@4.1.14': optional: true - '@tailwindcss/oxide-darwin-arm64@4.1.11': + '@tailwindcss/oxide-darwin-arm64@4.1.14': optional: true - '@tailwindcss/oxide-darwin-x64@4.1.11': + '@tailwindcss/oxide-darwin-x64@4.1.14': optional: true - '@tailwindcss/oxide-freebsd-x64@4.1.11': + '@tailwindcss/oxide-freebsd-x64@4.1.14': optional: true - '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.11': + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14': optional: true - '@tailwindcss/oxide-linux-arm64-gnu@4.1.11': + '@tailwindcss/oxide-linux-arm64-gnu@4.1.14': optional: true - '@tailwindcss/oxide-linux-arm64-musl@4.1.11': + '@tailwindcss/oxide-linux-arm64-musl@4.1.14': optional: true - '@tailwindcss/oxide-linux-x64-gnu@4.1.11': + '@tailwindcss/oxide-linux-x64-gnu@4.1.14': optional: true - '@tailwindcss/oxide-linux-x64-musl@4.1.11': + '@tailwindcss/oxide-linux-x64-musl@4.1.14': optional: true - '@tailwindcss/oxide-wasm32-wasi@4.1.11': + '@tailwindcss/oxide-wasm32-wasi@4.1.14': optional: true - '@tailwindcss/oxide-win32-arm64-msvc@4.1.11': + '@tailwindcss/oxide-win32-arm64-msvc@4.1.14': optional: true - '@tailwindcss/oxide-win32-x64-msvc@4.1.11': + '@tailwindcss/oxide-win32-x64-msvc@4.1.14': optional: true - '@tailwindcss/oxide@4.1.11': + '@tailwindcss/oxide@4.1.14': dependencies: - detect-libc: 2.0.4 - tar: 7.4.3 + detect-libc: 2.1.1 + tar: 7.5.1 optionalDependencies: - '@tailwindcss/oxide-android-arm64': 4.1.11 - '@tailwindcss/oxide-darwin-arm64': 4.1.11 - '@tailwindcss/oxide-darwin-x64': 4.1.11 - '@tailwindcss/oxide-freebsd-x64': 4.1.11 - '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.11 - '@tailwindcss/oxide-linux-arm64-gnu': 4.1.11 - '@tailwindcss/oxide-linux-arm64-musl': 4.1.11 - '@tailwindcss/oxide-linux-x64-gnu': 4.1.11 - '@tailwindcss/oxide-linux-x64-musl': 4.1.11 - '@tailwindcss/oxide-wasm32-wasi': 4.1.11 - '@tailwindcss/oxide-win32-arm64-msvc': 4.1.11 - '@tailwindcss/oxide-win32-x64-msvc': 4.1.11 - - '@tailwindcss/postcss@4.1.11': + '@tailwindcss/oxide-android-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-arm64': 4.1.14 + '@tailwindcss/oxide-darwin-x64': 4.1.14 + '@tailwindcss/oxide-freebsd-x64': 4.1.14 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.14 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.14 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.14 + '@tailwindcss/oxide-linux-x64-musl': 4.1.14 + '@tailwindcss/oxide-wasm32-wasi': 4.1.14 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.14 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.14 + + '@tailwindcss/postcss@4.1.14': dependencies: '@alloc/quick-lru': 5.2.0 - '@tailwindcss/node': 4.1.11 - '@tailwindcss/oxide': 4.1.11 + '@tailwindcss/node': 4.1.14 + '@tailwindcss/oxide': 4.1.14 postcss: 8.5.6 - tailwindcss: 4.1.11 + tailwindcss: 4.1.14 - '@tailwindcss/vite@4.1.11(patch_hash=c65ceb599655780709308f94a3ec9abe3fdf0669fb30069ad826bb182f83d03f)(vite@3.2.11(@types/node@22.16.4))': + '@tailwindcss/vite@4.1.14(vite@3.2.11(@types/node@22.18.8))': dependencies: - '@tailwindcss/node': 4.1.11 - '@tailwindcss/oxide': 4.1.11 - tailwindcss: 4.1.11 - vite: 3.2.11(@types/node@22.16.4) + '@tailwindcss/node': 4.1.14 + '@tailwindcss/oxide': 4.1.14 + tailwindcss: 4.1.14 + vite: 3.2.11(@types/node@22.18.8) - '@tanstack/query-core@5.83.0': {} + '@tanstack/query-core@5.90.2': {} - '@tanstack/query-devtools@5.81.2': {} + '@tanstack/query-devtools@5.90.1': {} - '@tanstack/react-query-devtools@5.83.0(@tanstack/react-query@5.83.0(react@19.1.0))(react@19.1.0)': + '@tanstack/react-query-devtools@5.90.2(@tanstack/react-query@5.90.2(react@19.2.0))(react@19.2.0)': dependencies: - '@tanstack/query-devtools': 5.81.2 - '@tanstack/react-query': 5.83.0(react@19.1.0) - react: 19.1.0 + '@tanstack/query-devtools': 5.90.1 + '@tanstack/react-query': 5.90.2(react@19.2.0) + react: 19.2.0 - '@tanstack/react-query@5.83.0(react@19.1.0)': + '@tanstack/react-query@5.90.2(react@19.2.0)': dependencies: - '@tanstack/query-core': 5.83.0 - react: 19.1.0 + '@tanstack/query-core': 5.90.2 + react: 19.2.0 '@tsconfig/svelte@1.0.13': {} '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.7 + '@types/babel__traverse': 7.28.0 '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.28.0 - '@babel/types': 7.28.1 + '@babel/parser': 7.28.4 + '@babel/types': 7.28.4 - '@types/babel__traverse@7.20.7': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.28.1 + '@babel/types': 7.28.4 '@types/bun@1.2.13': dependencies: @@ -6167,7 +6403,7 @@ snapshots: '@types/cors@2.8.19': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.18.8 '@types/css-font-loading-module@0.0.7': {} @@ -6177,74 +6413,55 @@ snapshots: '@types/jasmine@3.10.18': {} - '@types/node@22.16.4': + '@types/node@22.18.8': dependencies: undici-types: 6.21.0 - '@types/pako@2.0.3': {} + '@types/pako@2.0.4': {} - '@types/react-dom@19.1.6(@types/react@19.1.8)': + '@types/react-dom@19.2.0(@types/react@19.2.0)': dependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - '@types/react@19.1.8': + '@types/react@19.2.0': dependencies: csstype: 3.1.3 '@types/trusted-types@2.0.7': optional: true - '@types/webextension-polyfill@0.12.3': {} + '@types/webextension-polyfill@0.12.4': {} '@types/webextension-polyfill@0.8.3': {} '@types/ws@8.18.1': dependencies: - '@types/node': 22.16.4 + '@types/node': 22.18.8 optional: true - '@uiw/codemirror-extensions-basic-setup@4.24.1(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': + '@uiw/codemirror-extensions-basic-setup@4.25.2(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.2 - '@codemirror/lint': 6.8.5 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/commands': 6.9.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 - '@uiw/codemirror-extensions-langs@4.24.1(@codemirror/autocomplete@6.18.6)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.2)(@codemirror/legacy-modes@6.5.1)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.1)(@lezer/lr@1.4.2)': + '@uiw/codemirror-extensions-langs@4.25.2(@codemirror/autocomplete@6.19.0)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.11)(@codemirror/lang-javascript@6.2.4)(@codemirror/language-data@6.5.1)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.4)(@lezer/lr@1.4.2)': dependencies: - '@codemirror/lang-angular': 0.1.4 - '@codemirror/lang-cpp': 6.0.3 - '@codemirror/lang-css': 6.3.1 - '@codemirror/lang-html': 6.4.9 - '@codemirror/lang-java': 6.0.2 - '@codemirror/lang-javascript': 6.2.4 - '@codemirror/lang-json': 6.0.2 - '@codemirror/lang-less': 6.0.2 - '@codemirror/lang-lezer': 6.0.2 - '@codemirror/lang-liquid': 6.2.3 - '@codemirror/lang-markdown': 6.3.3 - '@codemirror/lang-php': 6.0.2 - '@codemirror/lang-python': 6.2.1 - '@codemirror/lang-rust': 6.0.2 - '@codemirror/lang-sass': 6.0.2 - '@codemirror/lang-sql': 6.9.0 - '@codemirror/lang-vue': 0.1.3 - '@codemirror/lang-wast': 6.0.2 - '@codemirror/lang-xml': 6.1.0 + '@codemirror/language': 6.11.3 '@codemirror/language-data': 6.5.1 - '@codemirror/legacy-modes': 6.5.1 - '@nextjournal/lang-clojure': 1.0.0 - '@replit/codemirror-lang-csharp': 6.2.0(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) - '@replit/codemirror-lang-nix': 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) - '@replit/codemirror-lang-solidity': 6.0.2(@codemirror/language@6.11.2) - '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.18.6)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.9)(@codemirror/lang-javascript@6.2.4)(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.1)(@lezer/lr@1.4.2) + '@replit/codemirror-lang-nix': 6.0.1(@codemirror/autocomplete@6.19.0)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + '@replit/codemirror-lang-solidity': 6.0.2(@codemirror/language@6.11.3) + '@replit/codemirror-lang-svelte': 6.0.0(@codemirror/autocomplete@6.19.0)(@codemirror/lang-css@6.3.1)(@codemirror/lang-html@6.4.11)(@codemirror/lang-javascript@6.2.4)(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/javascript@1.5.4)(@lezer/lr@1.4.2) codemirror-lang-mermaid: 0.5.0 transitivePeerDependencies: - '@codemirror/autocomplete' - - '@codemirror/language' + - '@codemirror/lang-css' + - '@codemirror/lang-html' + - '@codemirror/lang-javascript' - '@codemirror/state' - '@codemirror/view' - '@lezer/common' @@ -6252,61 +6469,61 @@ snapshots: - '@lezer/javascript' - '@lezer/lr' - '@uiw/codemirror-theme-vscode@4.24.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': + '@uiw/codemirror-theme-vscode@4.25.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': dependencies: - '@uiw/codemirror-themes': 4.24.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) + '@uiw/codemirror-themes': 4.25.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) transitivePeerDependencies: - '@codemirror/language' - '@codemirror/state' - '@codemirror/view' - '@uiw/codemirror-themes@4.24.1(@codemirror/language@6.11.2)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1)': + '@uiw/codemirror-themes@4.25.2(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4)': dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 - '@uiw/react-codemirror@4.24.1(@babel/runtime@7.27.6)(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.1)(codemirror@6.0.2)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@uiw/react-codemirror@4.25.2(@babel/runtime@7.28.4)(@codemirror/autocomplete@6.19.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.38.4)(codemirror@6.0.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@babel/runtime': 7.27.6 - '@codemirror/commands': 6.8.1 + '@babel/runtime': 7.28.4 + '@codemirror/commands': 6.9.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.3 - '@codemirror/view': 6.38.1 - '@uiw/codemirror-extensions-basic-setup': 4.24.1(@codemirror/autocomplete@6.18.6)(@codemirror/commands@6.8.1)(@codemirror/language@6.11.2)(@codemirror/lint@6.8.5)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.1) + '@codemirror/view': 6.38.4 + '@uiw/codemirror-extensions-basic-setup': 4.25.2(@codemirror/autocomplete@6.19.0)(@codemirror/commands@6.9.0)(@codemirror/language@6.11.3)(@codemirror/lint@6.9.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.38.4) codemirror: 6.0.2 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: - '@codemirror/autocomplete' - '@codemirror/language' - '@codemirror/lint' - '@codemirror/search' - '@vercel/speed-insights@1.2.0(next@15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react@19.1.0)': + '@vercel/speed-insights@1.2.0(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)': optionalDependencies: - next: 15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 + next: 15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 - '@vitejs/plugin-react@4.7.0(vite@3.2.11(@types/node@22.16.4))': + '@vitejs/plugin-react@4.7.0(vite@3.2.11(@types/node@22.18.8))': dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.0) + '@babel/core': 7.28.4 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 3.2.11(@types/node@22.16.4) + vite: 3.2.11(@types/node@22.18.8) transitivePeerDependencies: - supports-color '@webcomponents/custom-elements@1.6.0': {} - '@wits/next-themes@0.2.16(next@15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(react-dom@19.1.0(react@19.1.0))(react@19.1.0)': + '@wits/next-themes@0.2.16(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - next: 15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + next: 15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) '@xstate/fsm@1.6.5': {} @@ -6331,13 +6548,13 @@ snapshots: ansi-regex@5.0.1: {} - ansi-regex@6.1.0: {} + ansi-regex@6.2.2: {} ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -6360,6 +6577,8 @@ snapshots: readdir-glob: 1.1.3 tar-stream: 3.1.7 zip-stream: 6.0.1 + transitivePeerDependencies: + - react-native-b4a aria-hidden@1.2.6: dependencies: @@ -6377,15 +6596,15 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.25.1 - caniuse-lite: 1.0.30001727 + browserslist: 4.26.3 + caniuse-lite: 1.0.30001746 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 postcss: 8.5.6 postcss-value-parser: 4.2.0 - b4a@1.6.7: {} + b4a@1.7.3: {} babel-plugin-syntax-hermes-parser@0.21.1: dependencies: @@ -6393,8 +6612,7 @@ snapshots: balanced-match@1.0.2: {} - bare-events@2.6.0: - optional: true + bare-events@2.7.0: {} base64-arraybuffer@1.0.2: {} @@ -6402,6 +6620,8 @@ snapshots: base64id@2.0.0: {} + baseline-browser-mapping@2.8.10: {} + boolbase@1.0.0: {} boxen@5.1.2: @@ -6423,12 +6643,13 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.25.1: + browserslist@4.26.3: dependencies: - caniuse-lite: 1.0.30001727 - electron-to-chromium: 1.5.187 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + baseline-browser-mapping: 2.8.10 + caniuse-lite: 1.0.30001746 + electron-to-chromium: 1.5.228 + node-releases: 2.0.21 + update-browserslist-db: 1.1.3(browserslist@4.26.3) buffer-crc32@1.0.0: {} @@ -6439,12 +6660,12 @@ snapshots: bun-types@1.2.13: dependencies: - '@types/node': 22.16.4 + '@types/node': 22.18.8 optional: true - bundle-require@5.1.0(esbuild@0.25.7): + bundle-require@5.1.0(esbuild@0.25.10): dependencies: - esbuild: 0.25.7 + esbuild: 0.25.10 load-tsconfig: 0.2.5 busboy@1.6.0: @@ -6455,7 +6676,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001727: {} + caniuse-lite@1.0.30001746: {} chalk@4.1.2: dependencies: @@ -6471,7 +6692,7 @@ snapshots: domhandler: 5.0.3 domutils: 3.2.2 - cheerio@1.1.0: + cheerio@1.1.2: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 @@ -6482,7 +6703,7 @@ snapshots: parse5: 7.3.0 parse5-htmlparser2-tree-adapter: 7.1.0 parse5-parser-stream: 7.1.2 - undici: 7.12.0 + undici: 7.16.0 whatwg-mimetype: 4.0.0 chokidar@4.0.3: @@ -6522,19 +6743,19 @@ snapshots: codemirror-lang-mermaid@0.5.0: dependencies: - '@codemirror/language': 6.11.2 + '@codemirror/language': 6.11.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 codemirror@6.0.2: dependencies: - '@codemirror/autocomplete': 6.18.6 - '@codemirror/commands': 6.8.1 - '@codemirror/language': 6.11.2 - '@codemirror/lint': 6.8.5 + '@codemirror/autocomplete': 6.19.0 + '@codemirror/commands': 6.9.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.38.1 + '@codemirror/view': 6.38.4 color-convert@2.0.1: dependencies: @@ -6542,18 +6763,10 @@ snapshots: color-name@1.1.4: {} - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.2 - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - commander@13.1.0: {} + commander@14.0.1: {} + commander@4.1.1: {} commander@7.2.0: {} @@ -6590,7 +6803,7 @@ snapshots: cookie@0.7.2: {} - core-js@3.44.0: {} + core-js@3.45.1: {} core-util-is@1.0.3: {} @@ -6636,7 +6849,7 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.1: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -6647,7 +6860,7 @@ snapshots: kind-of: 3.2.2 rename-keys: 1.2.0 - detect-libc@2.0.4: {} + detect-libc@2.1.1: {} detect-node-es@1.1.0: {} @@ -6673,7 +6886,7 @@ snapshots: dependencies: domelementtype: 2.3.0 - dompurify@3.2.6: + dompurify@3.2.7: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -6691,22 +6904,22 @@ snapshots: eastasianwidth@0.2.0: {} - effect@3.16.16: + effect@3.18.1: dependencies: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 - electron-to-chromium@1.5.187: {} + electron-to-chromium@1.5.228: {} embla-carousel-autoplay@8.6.0(embla-carousel@8.6.0): dependencies: embla-carousel: 8.6.0 - embla-carousel-react@8.6.0(react@19.1.0): + embla-carousel-react@8.6.0(react@19.2.0): dependencies: embla-carousel: 8.6.0 embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) - react: 19.1.0 + react: 19.2.0 embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): dependencies: @@ -6740,7 +6953,7 @@ snapshots: engine.io@6.6.4: dependencies: '@types/cors': 2.8.19 - '@types/node': 22.16.4 + '@types/node': 22.18.8 accepts: 1.3.8 base64id: 2.0.0 cookie: 0.7.2 @@ -6753,10 +6966,10 @@ snapshots: - supports-color - utf-8-validate - enhanced-resolve@5.18.2: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.2 + tapable: 2.2.3 entities@4.5.0: {} @@ -6764,7 +6977,7 @@ snapshots: es-module-lexer@0.10.5: {} - es-toolkit@1.39.7: {} + es-toolkit@1.39.10: {} esbuild-android-64@0.15.18: optional: true @@ -6877,34 +7090,34 @@ snapshots: '@esbuild/win32-ia32': 0.20.2 '@esbuild/win32-x64': 0.20.2 - esbuild@0.25.7: + esbuild@0.25.10: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.7 - '@esbuild/android-arm': 0.25.7 - '@esbuild/android-arm64': 0.25.7 - '@esbuild/android-x64': 0.25.7 - '@esbuild/darwin-arm64': 0.25.7 - '@esbuild/darwin-x64': 0.25.7 - '@esbuild/freebsd-arm64': 0.25.7 - '@esbuild/freebsd-x64': 0.25.7 - '@esbuild/linux-arm': 0.25.7 - '@esbuild/linux-arm64': 0.25.7 - '@esbuild/linux-ia32': 0.25.7 - '@esbuild/linux-loong64': 0.25.7 - '@esbuild/linux-mips64el': 0.25.7 - '@esbuild/linux-ppc64': 0.25.7 - '@esbuild/linux-riscv64': 0.25.7 - '@esbuild/linux-s390x': 0.25.7 - '@esbuild/linux-x64': 0.25.7 - '@esbuild/netbsd-arm64': 0.25.7 - '@esbuild/netbsd-x64': 0.25.7 - '@esbuild/openbsd-arm64': 0.25.7 - '@esbuild/openbsd-x64': 0.25.7 - '@esbuild/openharmony-arm64': 0.25.7 - '@esbuild/sunos-x64': 0.25.7 - '@esbuild/win32-arm64': 0.25.7 - '@esbuild/win32-ia32': 0.25.7 - '@esbuild/win32-x64': 0.25.7 + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 escalade@3.2.0: {} @@ -6922,6 +7135,10 @@ snapshots: eventemitter3@2.0.3: {} + events-universal@1.0.1: + dependencies: + bare-events: 2.7.0 + events@3.3.0: {} fast-check@3.23.2: @@ -6948,7 +7165,7 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.6(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -6964,9 +7181,9 @@ snapshots: fix-dts-default-cjs-exports@1.0.1: dependencies: - magic-string: 0.30.17 - mlly: 1.7.4 - rollup: 4.45.1 + magic-string: 0.30.19 + mlly: 1.8.0 + rollup: 4.52.3 foreground-child@3.3.1: dependencies: @@ -6978,7 +7195,7 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 fsevents@2.3.2: @@ -7048,7 +7265,7 @@ snapshots: dependencies: react-is: 16.13.1 - hono@4.8.5: {} + hono@4.9.9: {} html-escaper@2.0.2: {} @@ -7081,8 +7298,6 @@ snapshots: ini@4.1.3: {} - is-arrayish@0.3.2: {} - is-buffer@1.1.6: {} is-ci@2.0.0: @@ -7143,7 +7358,7 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jiti@2.4.2: {} + jiti@2.6.1: {} joycon@3.1.1: {} @@ -7153,7 +7368,7 @@ snapshots: json5@2.2.3: {} - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -7214,7 +7429,7 @@ snapshots: lightningcss@1.30.1: dependencies: - detect-libc: 2.0.4 + detect-libc: 2.1.1 optionalDependencies: lightningcss-darwin-arm64: 1.30.1 lightningcss-darwin-x64: 1.30.1 @@ -7233,6 +7448,8 @@ snapshots: load-tsconfig@0.2.5: {} + lodash.noop@3.0.1: {} + lodash.sortby@4.7.0: {} lodash@4.17.21: {} @@ -7243,19 +7460,19 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.525.0(react@19.1.0): + lucide-react@0.525.0(react@19.2.0): dependencies: - react: 19.1.0 + react: 19.2.0 - magic-string@0.30.17: + magic-string@0.30.19: dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 make-dir@3.1.0: dependencies: semver: 6.3.1 - material-icon-theme@5.24.0: + material-icon-theme@5.27.0: dependencies: chroma-js: 3.1.2 events: 3.3.0 @@ -7264,6 +7481,8 @@ snapshots: merge2@1.4.1: {} + messageformat@4.0.0-13: {} + micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -7287,21 +7506,21 @@ snapshots: minipass@7.1.2: {} - minizlib@3.0.2: + minizlib@3.1.0: dependencies: minipass: 7.1.2 mitt@3.0.1: {} - mkdirp@3.0.1: {} - - mlly@1.7.4: + mlly@1.8.0: dependencies: acorn: 8.15.0 pathe: 2.0.3 pkg-types: 1.3.1 ufo: 1.6.1 + moo@0.5.2: {} + mri@1.2.0: {} mrmime@2.0.1: {} @@ -7318,21 +7537,33 @@ snapshots: nanoid@3.3.11: {} - nanoid@5.1.5: {} + nanoid@5.1.6: {} negotiator@0.6.3: {} - next@15.3.5(@babel/core@7.26.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + neverthrow@8.2.0: + optionalDependencies: + '@rollup/rollup-linux-x64-gnu': 4.52.3 + + next-sitemap@4.2.3(next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)): + dependencies: + '@corex/deepmerge': 4.0.43 + '@next/env': 13.5.11 + fast-glob: 3.3.3 + minimist: 1.2.8 + next: 15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + + next@15.3.5(@babel/core@7.26.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: '@next/env': 15.3.5 '@swc/counter': 0.1.3 '@swc/helpers': 0.5.15 busboy: 1.6.0 - caniuse-lite: 1.0.30001727 + caniuse-lite: 1.0.30001746 postcss: 8.4.31 - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(@babel/core@7.26.0)(react@19.2.0) optionalDependencies: '@next/swc-darwin-arm64': 15.3.5 '@next/swc-darwin-x64': 15.3.5 @@ -7342,7 +7573,7 @@ snapshots: '@next/swc-linux-x64-musl': 15.3.5 '@next/swc-win32-arm64-msvc': 15.3.5 '@next/swc-win32-x64-msvc': 15.3.5 - sharp: 0.34.3 + sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' - babel-plugin-macros @@ -7351,7 +7582,7 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-releases@2.0.19: {} + node-releases@2.0.21: {} normalize-path@3.0.0: {} @@ -7411,27 +7642,29 @@ snapshots: piscina@4.9.2: optionalDependencies: - '@napi-rs/nice': 1.0.4 + '@napi-rs/nice': 1.1.1 pkg-types@1.3.1: dependencies: confbox: 0.1.8 - mlly: 1.7.4 + mlly: 1.8.0 pathe: 2.0.3 - playwright-core@1.54.1: {} + playwright-core@1.55.1: {} - playwright@1.54.1: + playwright@1.55.1: dependencies: - playwright-core: 1.54.1 + playwright-core: 1.55.1 optionalDependencies: fsevents: 2.3.2 - postcss-load-config@6.0.1(jiti@2.4.2)(postcss@8.5.6): + pofile@1.1.4: {} + + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6): dependencies: lilconfig: 3.1.3 optionalDependencies: - jiti: 2.4.2 + jiti: 2.6.1 postcss: 8.5.6 postcss-value-parser@4.2.0: {} @@ -7448,16 +7681,19 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.257.0: + posthog-js@1.268.9: dependencies: - core-js: 3.44.0 + '@posthog/core': 1.2.2 + core-js: 3.45.1 fflate: 0.4.8 - preact: 10.26.9 + preact: 10.27.2 web-vitals: 4.2.4 - posthog-node@5.5.1: {} + posthog-node@5.9.2: + dependencies: + '@posthog/core': 1.2.2 - preact@10.26.9: {} + preact@10.27.2: {} pretty-ms@8.0.0: dependencies: @@ -7490,31 +7726,38 @@ snapshots: dependencies: dnd-core: 16.0.1 - react-dnd@16.0.1(@types/node@22.16.4)(@types/react@19.1.8)(react@19.1.0): + react-dnd@16.0.1(@types/node@22.18.8)(@types/react@19.2.0)(react@19.2.0): dependencies: '@react-dnd/invariant': 4.0.2 '@react-dnd/shallowequal': 4.0.2 dnd-core: 16.0.1 fast-deep-equal: 3.1.3 hoist-non-react-statics: 3.3.2 - react: 19.1.0 + react: 19.2.0 optionalDependencies: - '@types/node': 22.16.4 - '@types/react': 19.1.8 + '@types/node': 22.18.8 + '@types/react': 19.2.0 + + react-dom@19.2.0(react@19.2.0): + dependencies: + react: 19.2.0 + scheduler: 0.27.0 - react-dom@19.1.0(react@19.1.0): + react-hook-form@7.63.0(react@19.2.0): dependencies: - react: 19.1.0 - scheduler: 0.26.0 + react: 19.2.0 - react-hook-form@7.60.0(react@19.1.0): + react-hotkeys-hook@5.1.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.1.0 + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - react-hotkeys-hook@5.1.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-html-string-parser@1.4.1(@types/react@19.2.0)(react@19.2.0): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + lodash.noop: 3.0.1 + react: 19.2.0 + optionalDependencies: + '@types/react': 19.2.0 react-is@16.13.1: {} @@ -7522,29 +7765,29 @@ snapshots: react-refresh@0.17.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.1.8)(react@19.1.0): + react-remove-scroll-bar@2.3.8(@types/react@19.2.0)(react@19.2.0): dependencies: - react: 19.1.0 - react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + react: 19.2.0 + react-style-singleton: 2.2.3(@types/react@19.2.0)(react@19.2.0) tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - react-remove-scroll@2.7.1(@types/react@19.1.8)(react@19.1.0): + react-remove-scroll@2.7.1(@types/react@19.2.0)(react@19.2.0): dependencies: - react: 19.1.0 - react-remove-scroll-bar: 2.3.8(@types/react@19.1.8)(react@19.1.0) - react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + react: 19.2.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.0)(react@19.2.0) + react-style-singleton: 2.2.3(@types/react@19.2.0)(react@19.2.0) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.1.8)(react@19.1.0) - use-sidecar: 1.1.3(@types/react@19.1.8)(react@19.1.0) + use-callback-ref: 1.3.3(@types/react@19.2.0)(react@19.2.0) + use-sidecar: 1.1.3(@types/react@19.2.0)(react@19.2.0) optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - react-resizable-panels@3.0.3(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-resizable-panels@3.0.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react-scan@0.0.31: dependencies: @@ -7552,17 +7795,17 @@ snapshots: '@clack/prompts': 0.8.2 kleur: 4.1.5 mri: 1.2.0 - playwright: 1.54.1 + playwright: 1.55.1 - react-style-singleton@2.2.3(@types/react@19.1.8)(react@19.1.0): + react-style-singleton@2.2.3(@types/react@19.2.0)(react@19.2.0): dependencies: get-nonce: 1.0.1 - react: 19.1.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - react@19.1.0: {} + react@19.2.0: {} readable-stream@2.3.8: dependencies: @@ -7598,7 +7841,7 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.27.6 + '@babel/runtime': 7.28.4 registry-auth-token@5.1.0: dependencies: @@ -7626,30 +7869,32 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - rollup@4.45.1: + rollup@4.52.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.45.1 - '@rollup/rollup-android-arm64': 4.45.1 - '@rollup/rollup-darwin-arm64': 4.45.1 - '@rollup/rollup-darwin-x64': 4.45.1 - '@rollup/rollup-freebsd-arm64': 4.45.1 - '@rollup/rollup-freebsd-x64': 4.45.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 - '@rollup/rollup-linux-arm-musleabihf': 4.45.1 - '@rollup/rollup-linux-arm64-gnu': 4.45.1 - '@rollup/rollup-linux-arm64-musl': 4.45.1 - '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 - '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-gnu': 4.45.1 - '@rollup/rollup-linux-riscv64-musl': 4.45.1 - '@rollup/rollup-linux-s390x-gnu': 4.45.1 - '@rollup/rollup-linux-x64-gnu': 4.45.1 - '@rollup/rollup-linux-x64-musl': 4.45.1 - '@rollup/rollup-win32-arm64-msvc': 4.45.1 - '@rollup/rollup-win32-ia32-msvc': 4.45.1 - '@rollup/rollup-win32-x64-msvc': 4.45.1 + '@rollup/rollup-android-arm-eabi': 4.52.3 + '@rollup/rollup-android-arm64': 4.52.3 + '@rollup/rollup-darwin-arm64': 4.52.3 + '@rollup/rollup-darwin-x64': 4.52.3 + '@rollup/rollup-freebsd-arm64': 4.52.3 + '@rollup/rollup-freebsd-x64': 4.52.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.52.3 + '@rollup/rollup-linux-arm-musleabihf': 4.52.3 + '@rollup/rollup-linux-arm64-gnu': 4.52.3 + '@rollup/rollup-linux-arm64-musl': 4.52.3 + '@rollup/rollup-linux-loong64-gnu': 4.52.3 + '@rollup/rollup-linux-ppc64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-gnu': 4.52.3 + '@rollup/rollup-linux-riscv64-musl': 4.52.3 + '@rollup/rollup-linux-s390x-gnu': 4.52.3 + '@rollup/rollup-linux-x64-gnu': 4.52.3 + '@rollup/rollup-linux-x64-musl': 4.52.3 + '@rollup/rollup-openharmony-arm64': 4.52.3 + '@rollup/rollup-win32-arm64-msvc': 4.52.3 + '@rollup/rollup-win32-ia32-msvc': 4.52.3 + '@rollup/rollup-win32-x64-gnu': 4.52.3 + '@rollup/rollup-win32-x64-msvc': 4.52.3 fsevents: 2.3.3 rrdom@0.1.7: @@ -7692,7 +7937,11 @@ snapshots: safer-buffer@2.1.2: {} - scheduler@0.26.0: {} + sayable@0.0.0-alpha.6: + dependencies: + '@messageformat/icu-messageformat-1': 0.11.0 + + scheduler@0.27.0: {} semver-diff@3.1.1: dependencies: @@ -7706,36 +7955,38 @@ snapshots: dependencies: type-fest: 2.19.0 + server-only@0.0.1: {} + setimmediate@1.0.5: {} - sharp@0.34.3: + sharp@0.34.4: dependencies: - color: 4.2.3 - detect-libc: 2.0.4 + '@img/colour': 1.0.0 + detect-libc: 2.1.1 semver: 7.7.2 optionalDependencies: - '@img/sharp-darwin-arm64': 0.34.3 - '@img/sharp-darwin-x64': 0.34.3 - '@img/sharp-libvips-darwin-arm64': 1.2.0 - '@img/sharp-libvips-darwin-x64': 1.2.0 - '@img/sharp-libvips-linux-arm': 1.2.0 - '@img/sharp-libvips-linux-arm64': 1.2.0 - '@img/sharp-libvips-linux-ppc64': 1.2.0 - '@img/sharp-libvips-linux-s390x': 1.2.0 - '@img/sharp-libvips-linux-x64': 1.2.0 - '@img/sharp-libvips-linuxmusl-arm64': 1.2.0 - '@img/sharp-libvips-linuxmusl-x64': 1.2.0 - '@img/sharp-linux-arm': 0.34.3 - '@img/sharp-linux-arm64': 0.34.3 - '@img/sharp-linux-ppc64': 0.34.3 - '@img/sharp-linux-s390x': 0.34.3 - '@img/sharp-linux-x64': 0.34.3 - '@img/sharp-linuxmusl-arm64': 0.34.3 - '@img/sharp-linuxmusl-x64': 0.34.3 - '@img/sharp-wasm32': 0.34.3 - '@img/sharp-win32-arm64': 0.34.3 - '@img/sharp-win32-ia32': 0.34.3 - '@img/sharp-win32-x64': 0.34.3 + '@img/sharp-darwin-arm64': 0.34.4 + '@img/sharp-darwin-x64': 0.34.4 + '@img/sharp-libvips-darwin-arm64': 1.2.3 + '@img/sharp-libvips-darwin-x64': 1.2.3 + '@img/sharp-libvips-linux-arm': 1.2.3 + '@img/sharp-libvips-linux-arm64': 1.2.3 + '@img/sharp-libvips-linux-ppc64': 1.2.3 + '@img/sharp-libvips-linux-s390x': 1.2.3 + '@img/sharp-libvips-linux-x64': 1.2.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.3 + '@img/sharp-libvips-linuxmusl-x64': 1.2.3 + '@img/sharp-linux-arm': 0.34.4 + '@img/sharp-linux-arm64': 0.34.4 + '@img/sharp-linux-ppc64': 0.34.4 + '@img/sharp-linux-s390x': 0.34.4 + '@img/sharp-linux-x64': 0.34.4 + '@img/sharp-linuxmusl-arm64': 0.34.4 + '@img/sharp-linuxmusl-x64': 0.34.4 + '@img/sharp-wasm32': 0.34.4 + '@img/sharp-win32-arm64': 0.34.4 + '@img/sharp-win32-ia32': 0.34.4 + '@img/sharp-win32-x64': 0.34.4 shebang-command@2.0.0: dependencies: @@ -7747,10 +7998,6 @@ snapshots: signal-exit@4.1.0: {} - simple-swizzle@0.2.2: - dependencies: - is-arrayish: 0.3.2 - sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.29 @@ -7800,10 +8047,10 @@ snapshots: - supports-color - utf-8-validate - sonner@2.0.6(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + sonner@2.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) source-map-js@1.2.1: {} @@ -7815,12 +8062,13 @@ snapshots: streamsearch@1.1.0: {} - streamx@2.22.1: + streamx@2.23.0: dependencies: + events-universal: 1.0.1 fast-fifo: 1.3.2 text-decoder: 1.2.3 - optionalDependencies: - bare-events: 2.6.0 + transitivePeerDependencies: + - react-native-b4a string-width@4.2.3: dependencies: @@ -7832,7 +8080,7 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 string_decoder@1.1.1: dependencies: @@ -7846,24 +8094,24 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.1.0 + ansi-regex: 6.2.2 strip-json-comments@2.0.1: {} style-mod@4.1.2: {} - styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.1.0): + styled-jsx@5.1.6(@babel/core@7.26.0)(react@19.2.0): dependencies: client-only: 0.0.1 - react: 19.1.0 + react: 19.2.0 optionalDependencies: '@babel/core': 7.26.0 sucrase@3.35.0: dependencies: - '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/gen-mapping': 0.3.13 commander: 4.1.1 glob: 10.4.5 lines-and-columns: 1.2.4 @@ -7886,28 +8134,31 @@ snapshots: tailwind-merge@3.3.1: {} - tailwindcss@4.1.11: {} + tailwindcss@4.1.14: {} - tapable@2.2.2: {} + tapable@2.2.3: {} tar-stream@3.1.7: dependencies: - b4a: 1.6.7 + b4a: 1.7.3 fast-fifo: 1.3.2 - streamx: 2.22.1 + streamx: 2.23.0 + transitivePeerDependencies: + - react-native-b4a - tar@7.4.3: + tar@7.5.1: dependencies: '@isaacs/fs-minipass': 4.0.1 chownr: 3.0.0 minipass: 7.1.2 - minizlib: 3.0.2 - mkdirp: 3.0.1 + minizlib: 3.1.0 yallist: 5.0.0 text-decoder@1.2.3: dependencies: - b4a: 1.6.7 + b4a: 1.7.3 + transitivePeerDependencies: + - react-native-b4a thenify-all@1.6.0: dependencies: @@ -7923,12 +8174,12 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.14: + tinyglobby@0.2.15: dependencies: - fdir: 6.4.6(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 - tmp@0.2.3: {} + tmp@0.2.5: {} to-regex-range@5.0.1: dependencies: @@ -7955,68 +8206,68 @@ snapshots: semver: 7.7.2 strip-ansi: 6.0.1 - tsconfck@3.1.6(typescript@5.8.3): + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: - typescript: 5.8.3 + typescript: 5.9.3 tslib@2.8.1: {} - tsup@8.5.0(jiti@2.4.2)(postcss@8.5.6)(typescript@5.8.3): + tsup@8.5.0(jiti@2.6.1)(postcss@8.5.6)(typescript@5.9.3): dependencies: - bundle-require: 5.1.0(esbuild@0.25.7) + bundle-require: 5.1.0(esbuild@0.25.10) cac: 6.7.14 chokidar: 4.0.3 consola: 3.4.2 - debug: 4.4.1 - esbuild: 0.25.7 + debug: 4.4.3 + esbuild: 0.25.10 fix-dts-default-cjs-exports: 1.0.1 joycon: 3.1.1 picocolors: 1.1.1 - postcss-load-config: 6.0.1(jiti@2.4.2)(postcss@8.5.6) + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6) resolve-from: 5.0.0 - rollup: 4.45.1 + rollup: 4.52.3 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.2 - tinyglobby: 0.2.14 + tinyglobby: 0.2.15 tree-kill: 1.2.2 optionalDependencies: postcss: 8.5.6 - typescript: 5.8.3 + typescript: 5.9.3 transitivePeerDependencies: - jiti - supports-color - tsx - yaml - turbo-darwin-64@2.5.5: + turbo-darwin-64@2.5.8: optional: true - turbo-darwin-arm64@2.5.5: + turbo-darwin-arm64@2.5.8: optional: true - turbo-linux-64@2.5.5: + turbo-linux-64@2.5.8: optional: true - turbo-linux-arm64@2.5.5: + turbo-linux-arm64@2.5.8: optional: true - turbo-windows-64@2.5.5: + turbo-windows-64@2.5.8: optional: true - turbo-windows-arm64@2.5.5: + turbo-windows-arm64@2.5.8: optional: true - turbo@2.5.5: + turbo@2.5.8: optionalDependencies: - turbo-darwin-64: 2.5.5 - turbo-darwin-arm64: 2.5.5 - turbo-linux-64: 2.5.5 - turbo-linux-arm64: 2.5.5 - turbo-windows-64: 2.5.5 - turbo-windows-arm64: 2.5.5 + turbo-darwin-64: 2.5.8 + turbo-darwin-arm64: 2.5.8 + turbo-linux-64: 2.5.8 + turbo-linux-arm64: 2.5.8 + turbo-windows-64: 2.5.8 + turbo-windows-arm64: 2.5.8 - tw-animate-css@1.3.5: {} + tw-animate-css@1.4.0: {} type-fest@0.20.2: {} @@ -8028,18 +8279,18 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript-transform-paths@3.5.5(typescript@5.8.3): + typescript-transform-paths@3.5.5(typescript@5.9.3): dependencies: minimatch: 9.0.5 - typescript: 5.8.3 + typescript: 5.9.3 - typescript@5.8.3: {} + typescript@5.9.3: {} ufo@1.6.1: {} undici-types@6.21.0: {} - undici@7.12.0: {} + undici@7.16.0: {} unique-string@2.0.0: dependencies: @@ -8052,9 +8303,9 @@ snapshots: acorn: 8.15.0 webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.3(browserslist@4.26.3): dependencies: - browserslist: 4.25.1 + browserslist: 4.26.3 escalade: 3.2.0 picocolors: 1.1.1 @@ -8079,20 +8330,20 @@ snapshots: transitivePeerDependencies: - encoding - use-callback-ref@1.3.3(@types/react@19.1.8)(react@19.1.0): + use-callback-ref@1.3.3(@types/react@19.2.0)(react@19.2.0): dependencies: - react: 19.1.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 - use-sidecar@1.1.3(@types/react@19.1.8)(react@19.1.0): + use-sidecar@1.1.3(@types/react@19.2.0)(react@19.2.0): dependencies: detect-node-es: 1.1.0 - react: 19.1.0 + react: 19.2.0 tslib: 2.8.1 optionalDependencies: - '@types/react': 19.1.8 + '@types/react': 19.2.0 util-deprecate@1.0.2: {} @@ -8104,30 +8355,30 @@ snapshots: dependencies: eventemitter2: 6.4.9 - vite-plugin-zip-pack@1.2.4(vite@3.2.11(@types/node@22.16.4)): + vite-plugin-zip-pack@1.2.4(vite@3.2.11(@types/node@22.18.8)): dependencies: jszip: 3.10.1 - vite: 3.2.11(@types/node@22.16.4) + vite: 3.2.11(@types/node@22.18.8) - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@3.2.11(@types/node@22.16.4)): + vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@3.2.11(@types/node@22.18.8)): dependencies: - debug: 4.4.1 + debug: 4.4.3 globrex: 0.1.2 - tsconfck: 3.1.6(typescript@5.8.3) + tsconfck: 3.1.6(typescript@5.9.3) optionalDependencies: - vite: 3.2.11(@types/node@22.16.4) + vite: 3.2.11(@types/node@22.18.8) transitivePeerDependencies: - supports-color - typescript - vite@3.2.11(@types/node@22.16.4): + vite@3.2.11(@types/node@22.18.8): dependencies: esbuild: 0.15.18 postcss: 8.5.6 resolve: 1.22.10 rollup: 2.79.2 optionalDependencies: - '@types/node': 22.16.4 + '@types/node': 22.18.8 fsevents: 2.3.3 vscode-icons-js@11.6.1: @@ -8214,9 +8465,9 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 write-file-atomic@3.0.3: dependencies: @@ -8272,3 +8523,5 @@ snapshots: readable-stream: 4.7.0 zod@4.0.5: {} + + zod@4.1.12: {} From b567c70b84a8cdc9aebe0c414f45fd921935e6b4 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Mon, 13 Oct 2025 19:05:48 +1300 Subject: [PATCH 02/14] Compile translations before building --- apps/website/package.json | 5 +++-- apps/website/src/locales/en/messages.po | 30 ++++++++++++------------- apps/website/src/locales/fr/messages.po | 30 ++++++++++++------------- apps/website/src/middleware.ts | 2 +- 4 files changed, 34 insertions(+), 33 deletions(-) diff --git a/apps/website/package.json b/apps/website/package.json index cdba79c2..0319d901 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -5,8 +5,9 @@ "type": "module", "scripts": { "check": "tsc --noEmit", - "build": "use-env -p NEXT -P -- next build --no-lint && pnpm build:sitemap", - "build:sitemap": "use-env -p NEXT -P -- next-sitemap --config sitemap.config.ts", + "prebuild": "sayable compile", + "build": "use-env -p NEXT -P -- next build --no-lint", + "postbuild": "use-env -p NEXT -P -- next-sitemap --config sitemap.config.ts", "start": "use-env -p NEXT -P -- next start", "dev": "use-env -p NEXT -- next dev --turbo" }, diff --git a/apps/website/src/locales/en/messages.po b/apps/website/src/locales/en/messages.po index ffc92b14..7e2b34cd 100644 --- a/apps/website/src/locales/en/messages.po +++ b/apps/website/src/locales/en/messages.po @@ -50,28 +50,28 @@ msgstr "<0>If this runtime requires compilation, the output will be displaye msgid "This runtime does not have a way to display any preview." msgstr "This runtime does not have a way to display any preview." -#: src/components/header/index.tsx:51 -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:12 +#: src/components/header/index.tsx:50 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:20 msgid "Playgrounds" msgstr "Playgrounds" -#: src/components/header/index.tsx:62 +#: src/components/header/index.tsx:61 msgid "Browser Extension" msgstr "Browser Extension" -#: src/components/header/index.tsx:64 +#: src/components/header/index.tsx:63 msgid "new" msgstr "new" -#: src/components/header/index.tsx:71 +#: src/components/header/index.tsx:70 msgid "Discord Bot" msgstr "Discord Bot" -#: src/components/header/index.tsx:138 +#: src/components/header/index.tsx:137 msgid "Toggle Mobile Navigation" msgstr "Toggle Mobile Navigation" -#: src/components/header/locale-switcher.tsx:22 +#: src/components/header/locale-switcher.tsx:24 msgid "Change Language" msgstr "Change Language" @@ -150,27 +150,27 @@ msgid "<0>Execute <1>{2} <3>Code" msgstr "<0>Execute <1>{2} <3>Code" #: src/app/manifest.ts:10 -#: src/app/[locale]/metadata.ts:14 +#: src/app/[locale]/metadata.ts:15 msgid "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." msgstr "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." -#: src/app/[locale]/metadata.ts:16 +#: src/app/[locale]/metadata.ts:17 msgid "online playground" msgstr "online playground" -#: src/app/[locale]/metadata.ts:17 +#: src/app/[locale]/metadata.ts:18 msgid "code playground" msgstr "code playground" -#: src/app/[locale]/metadata.ts:18 +#: src/app/[locale]/metadata.ts:19 msgid "code sandbox" msgstr "code sandbox" -#: src/app/[locale]/metadata.ts:19 +#: src/app/[locale]/metadata.ts:20 msgid "online compiler" msgstr "online compiler" -#: src/app/[locale]/metadata.ts:20 +#: src/app/[locale]/metadata.ts:21 msgid "online interpreter" msgstr "online interpreter" @@ -202,11 +202,11 @@ msgstr "Evaluate for <0>Chrome" msgid "Evaluate for <0>Firefox" msgstr "Evaluate for <0>Firefox" -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:15 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:23 msgid "Explore and run code in different programming languages and runtimes." msgstr "Explore and run code in different programming languages and runtimes." -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:21 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:29 msgid "Powered by the Piston execution engine." msgstr "Powered by the Piston execution engine." diff --git a/apps/website/src/locales/fr/messages.po b/apps/website/src/locales/fr/messages.po index 5f9ef03e..69b5daf2 100644 --- a/apps/website/src/locales/fr/messages.po +++ b/apps/website/src/locales/fr/messages.po @@ -51,28 +51,28 @@ msgstr "<0>Si ce runtime nécessite une compilation, la sortie sera affiché msgid "This runtime does not have a way to display any preview." msgstr "Ce runtime n'a pas de moyen d'afficher un aperçu." -#: src/components/header/index.tsx:51 -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:12 +#: src/components/header/index.tsx:50 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:20 msgid "Playgrounds" msgstr "Espaces de jeu" -#: src/components/header/index.tsx:62 +#: src/components/header/index.tsx:61 msgid "Browser Extension" msgstr "Extension de navigateur" -#: src/components/header/index.tsx:64 +#: src/components/header/index.tsx:63 msgid "new" msgstr "nouveau" -#: src/components/header/index.tsx:71 +#: src/components/header/index.tsx:70 msgid "Discord Bot" msgstr "Bot Discord" -#: src/components/header/index.tsx:138 +#: src/components/header/index.tsx:137 msgid "Toggle Mobile Navigation" msgstr "Basculer la navigation mobile" -#: src/components/header/locale-switcher.tsx:22 +#: src/components/header/locale-switcher.tsx:24 msgid "Change Language" msgstr "Changer de langue" @@ -151,27 +151,27 @@ msgid "<0>Execute <1>{2} <3>Code" msgstr "<0>Exécuter <1>{2} <3>Code" #: src/app/manifest.ts:10 -#: src/app/[locale]/metadata.ts:14 +#: src/app/[locale]/metadata.ts:15 msgid "Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything." msgstr "Testez du code dans n'importe quel langage de programmation avec Evaluate ! Exécutez des extraits de code dans votre navigateur, sans installer quoi que ce soit." -#: src/app/[locale]/metadata.ts:16 +#: src/app/[locale]/metadata.ts:17 msgid "online playground" msgstr "espace de jeu en ligne" -#: src/app/[locale]/metadata.ts:17 +#: src/app/[locale]/metadata.ts:18 msgid "code playground" msgstr "espace de jeu de code" -#: src/app/[locale]/metadata.ts:18 +#: src/app/[locale]/metadata.ts:19 msgid "code sandbox" msgstr "bac à sable de code" -#: src/app/[locale]/metadata.ts:19 +#: src/app/[locale]/metadata.ts:20 msgid "online compiler" msgstr "compilateur en ligne" -#: src/app/[locale]/metadata.ts:20 +#: src/app/[locale]/metadata.ts:21 msgid "online interpreter" msgstr "interpréteur en ligne" @@ -203,11 +203,11 @@ msgstr "Evaluate pour <0>Chrome" msgid "Evaluate for <0>Firefox" msgstr "Evaluate pour <0>Firefox" -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:15 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:23 msgid "Explore and run code in different programming languages and runtimes." msgstr "Explorez et exécutez du code dans différents langages de programmation et environnements d'exécution." -#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:21 +#: src/app/[locale]/(playgrounds)/playgrounds/page.tsx:29 msgid "Powered by the Piston execution engine." msgstr "Alimenté par le moteur d'exécution Piston." diff --git a/apps/website/src/middleware.ts b/apps/website/src/middleware.ts index fbece35e..3378f936 100644 --- a/apps/website/src/middleware.ts +++ b/apps/website/src/middleware.ts @@ -47,7 +47,7 @@ export function middleware(request: NextRequest) { export const config = { matcher: [ - '/((?!_next/static|_vercel|_next/image|favicon.ico|policies/*|.*\\.(?:svg|png|jpg|jpeg|gif|webp|webmanifest|xml|txt)$).*)', + '/((?!_next/static|_vercel|_next/image|favicon.ico|sitemap.xml|manifest.webmanifest|robots.txt|.*\\.(?:svg|png|jpg|jpeg|gif|webp)$).*)', ], }; From e87d4044d1b5d3cbe1116cc5c57518d7fe626b24 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Mon, 13 Oct 2025 23:30:19 +1300 Subject: [PATCH 03/14] Also extract messages before build --- apps/website/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/package.json b/apps/website/package.json index 0319d901..59371717 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "check": "tsc --noEmit", - "prebuild": "sayable compile", + "prebuild": "sayable extract && sayable compile", "build": "use-env -p NEXT -P -- next build --no-lint", "postbuild": "use-env -p NEXT -P -- next-sitemap --config sitemap.config.ts", "start": "use-env -p NEXT -P -- next start", From 75b7f232b66e37fc2a960deaa355496c44c20c4f Mon Sep 17 00:00:00 2001 From: Apteryx Date: Tue, 14 Oct 2025 07:24:19 +1300 Subject: [PATCH 04/14] Bump `@sayable/react` version --- apps/website/package.json | 2 +- pnpm-lock.yaml | 35 +++++------------------------------ 2 files changed, 6 insertions(+), 31 deletions(-) diff --git a/apps/website/package.json b/apps/website/package.json index 59371717..c568e51f 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -21,7 +21,7 @@ "@evaluate/runtimes": "workspace:^", "@evaluate/style": "workspace:^", "@hookform/resolvers": "^5.1.1", - "@sayable/react": "0.0.0-alpha.6", + "@sayable/react": "0.0.0-alpha.8", "@t3-oss/env-nextjs": "^0.13.8", "@tanstack/react-query": "^5.83.0", "@tanstack/react-query-devtools": "^5.83.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d0c8dcb..8207554b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -199,8 +199,8 @@ importers: specifier: ^5.1.1 version: 5.2.2(react-hook-form@7.63.0(react@19.2.0)) '@sayable/react': - specifier: 0.0.0-alpha.6 - version: 0.0.0-alpha.6(@types/react@19.2.0)(react@19.2.0)(sayable@0.0.0-alpha.6) + specifier: 0.0.0-alpha.8 + version: 0.0.0-alpha.8(react@19.2.0)(sayable@0.0.0-alpha.6) '@t3-oss/env-nextjs': specifier: ^0.13.8 version: 0.13.8(typescript@5.9.3)(zod@4.0.5) @@ -2156,8 +2156,8 @@ packages: peerDependencies: '@sayable/config': '*' - '@sayable/react@0.0.0-alpha.6': - resolution: {integrity: sha512-7Skm7hElXFUC3pJY+I1keGjJgXrROYDqFIKqYPdkrq2bnVgHzoY0asqfzDxH5vaxZu4mweALbTYAQfbPmhZu3w==} + '@sayable/react@0.0.0-alpha.8': + resolution: {integrity: sha512-UtOSYw/tRni8C8y1mVcJkuZ54ZpgQd756GMLR1Ih75Sh87Mjy6qyb722CNjMXI54gPVC4wB85/Ude4nzbt3Tpg==} peerDependencies: react: '*' sayable: '*' @@ -3453,9 +3453,6 @@ packages: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash.noop@3.0.1: - resolution: {integrity: sha512-TmYdmu/pebrdTIBDK/FDx9Bmfzs9x0sZG6QIJuMDTqEPfeciLcN13ij+cOd0i9vwJfBtbG9UQ+C7MkXgYxrIJg==} - lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} @@ -3816,16 +3813,6 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - react-html-string-parser@1.4.1: - resolution: {integrity: sha512-rbgLQbXdzq9n2KjDzTsbP0dxbugRYbcmGklPD4Zq9hbWwj8+fyNwj8Cv6iKUbnsenv+VsOQ2mdc6gyb6il1C9Q==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '>=16.8.0' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -6245,13 +6232,10 @@ snapshots: date-fns: 4.1.0 pofile: 1.1.4 - '@sayable/react@0.0.0-alpha.6(@types/react@19.2.0)(react@19.2.0)(sayable@0.0.0-alpha.6)': + '@sayable/react@0.0.0-alpha.8(react@19.2.0)(sayable@0.0.0-alpha.6)': dependencies: react: 19.2.0 - react-html-string-parser: 1.4.1(@types/react@19.2.0)(react@19.2.0) sayable: 0.0.0-alpha.6 - transitivePeerDependencies: - - '@types/react' '@sayable/swc-plugin@0.0.0-alpha.5': {} @@ -7448,8 +7432,6 @@ snapshots: load-tsconfig@0.2.5: {} - lodash.noop@3.0.1: {} - lodash.sortby@4.7.0: {} lodash@4.17.21: {} @@ -7752,13 +7734,6 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - react-html-string-parser@1.4.1(@types/react@19.2.0)(react@19.2.0): - dependencies: - lodash.noop: 3.0.1 - react: 19.2.0 - optionalDependencies: - '@types/react': 19.2.0 - react-is@16.13.1: {} react-refresh@0.13.0: {} From 1a31fa9acf98e00088f3d7c626f4ad0f56e7a7e9 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:26:38 +1300 Subject: [PATCH 05/14] Replace method of passing search param to middleware with setting cookie from client --- .../src/components/header/locale-switcher.tsx | 30 ++++++++++++++----- apps/website/src/middleware.ts | 2 +- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/apps/website/src/components/header/locale-switcher.tsx b/apps/website/src/components/header/locale-switcher.tsx index 876fb0d7..b3ebcbfd 100644 --- a/apps/website/src/components/header/locale-switcher.tsx +++ b/apps/website/src/components/header/locale-switcher.tsx @@ -10,7 +10,8 @@ import { import { Say, useSay } from '@sayable/react'; import { LanguagesIcon } from 'lucide-react'; import Link from 'next/link'; -import { useMemo } from 'react'; +import { usePathname, useRouter, useSearchParams } from 'next/navigation'; +import { useCallback, useMemo } from 'react'; export function LocaleSwitcher() { const say = useSay(); @@ -42,19 +43,32 @@ export function LocaleSwitcher() { } function LocaleSwitcherItem({ locale, ...props }: { locale: string }) { + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); + const localisedHref = useMemo(() => { - if (typeof window === 'undefined') return ''; - const url = new URL(window.location.toString()); - const segments = url.pathname.split('/').filter(Boolean); + const segments = pathname.split('/').filter(Boolean); if (/^[a-z]{2}(-[A-Z]{2})?$/.test(segments[0]!)) segments[0] = locale; else segments.unshift(locale); - url.pathname = `/${segments.join('/')}`; - url.searchParams.set('spl', ''); - return url.toString(); + return `${segments.join('/')}?${searchParams}`; + }, [locale, pathname, searchParams]); + + const updatePreferredLocale = useCallback(() => { + // biome-ignore lint/suspicious/noDocumentCookie: update the locale cookie + document.cookie = `preferred-locale=${locale}; max-age=31536000; path=/`; }, [locale]); return ( - + { + updatePreferredLocale(); + router.push(localisedHref); + return false; + }} + > {new Intl.DisplayNames([locale], { type: 'language' }).of(locale)} ); diff --git a/apps/website/src/middleware.ts b/apps/website/src/middleware.ts index 3378f936..dfbcaabd 100644 --- a/apps/website/src/middleware.ts +++ b/apps/website/src/middleware.ts @@ -35,7 +35,7 @@ export function middleware(request: NextRequest) { response = NextResponse.rewrite(request.nextUrl); } - if (!cookieLocale || request.nextUrl.searchParams.has('spl')) + if (!cookieLocale) response.cookies.set( 'preferred-locale', pathLocale ?? defaultLocale, // From 98e29a5a184aac2a97f5df66c39c1988ba058948 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:33:20 +1300 Subject: [PATCH 06/14] Remove no longer needed type assertions --- .../(playgrounds)/playgrounds/playground-card-list.tsx | 3 +-- apps/website/src/components/editor/opened-files/button.tsx | 3 +-- apps/website/src/components/explorer/index.tsx | 6 +++--- apps/website/src/components/explorer/name.tsx | 3 +-- apps/website/src/components/explorer/use.tsx | 3 +-- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx index cca43c2f..1da405e5 100644 --- a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx @@ -21,7 +21,6 @@ import { XIcon, } from 'lucide-react'; import { useDeferredValue, useEffect, useMemo } from 'react'; -import type { Sayable } from 'sayable'; import { useHashFragment } from '~/hooks/hash-fragment'; import { useLocalStorage } from '~/hooks/local-storage'; import { useQueryParameter } from '~/hooks/query-parameter'; @@ -32,7 +31,7 @@ export function PlaygroundCardList({ }: { initialRuntimes: Runtime[]; }) { - const say = useSay() as Sayable; + const say = useSay(); const [search, setSearch] = useQueryParameter('search'); const deferredSearch = useDeferredValue(search); diff --git a/apps/website/src/components/editor/opened-files/button.tsx b/apps/website/src/components/editor/opened-files/button.tsx index 689a49b8..44072bcb 100644 --- a/apps/website/src/components/editor/opened-files/button.tsx +++ b/apps/website/src/components/editor/opened-files/button.tsx @@ -4,7 +4,6 @@ import { Button } from '@evaluate/components/button'; import { useSay } from '@sayable/react'; import { XIcon } from 'lucide-react'; import { useCallback, useMemo } from 'react'; -import type { Sayable } from 'sayable'; import type { File } from 'virtual-file-explorer-backend'; import { useWatch } from '~/components/explorer/use'; import { MaterialIcon } from '~/components/material-icon'; @@ -18,7 +17,7 @@ export namespace OpenedFileButton { export function OpenedFileButton({ file, others }: OpenedFileButton.Props) { useWatch(file, ['name']); - const say = useSay() as Sayable; + const say = useSay(); const handleClick = useCallback(() => file.select().focus(), [file]); const handleCloseClick = useCallback( diff --git a/apps/website/src/components/explorer/index.tsx b/apps/website/src/components/explorer/index.tsx index 56fbcb19..944417bb 100644 --- a/apps/website/src/components/explorer/index.tsx +++ b/apps/website/src/components/explorer/index.tsx @@ -9,7 +9,6 @@ import { FolderPlusIcon, HardDriveDownloadIcon, } from 'lucide-react'; -import type { Sayable } from 'sayable'; import { twMerge as cn } from 'tailwind-merge'; import type { File } from 'virtual-file-explorer-backend'; import { ExplorerFileItem } from './file/item'; @@ -23,7 +22,7 @@ import { import { useExplorer, useWatch } from './use'; export function Explorer() { - const say = useSay() as Sayable; + const say = useSay(); const explorer = useExplorer(); useWatch(explorer, ['children']); @@ -92,7 +91,8 @@ export function Explorer() { (null); const [errorMessage, setErrorMessage] = useState(); diff --git a/apps/website/src/components/explorer/use.tsx b/apps/website/src/components/explorer/use.tsx index 16ce290e..7be4903b 100644 --- a/apps/website/src/components/explorer/use.tsx +++ b/apps/website/src/components/explorer/use.tsx @@ -20,7 +20,6 @@ import { } from 'react'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; -import type { Sayable } from 'sayable'; import { File, Folder } from 'virtual-file-explorer-backend'; import { useHashFragment } from '~/hooks/hash-fragment'; @@ -36,7 +35,7 @@ export function ExplorerProvider({ }: React.PropsWithChildren<{ runtime: Runtime; }>) { - const say = useSay() as Sayable; + const say = useSay(); const [hash, setHash] = useHashFragment(); const example = useMemo( From 4b0ade9726607974054eb53da4e9040699263996 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:33:55 +1300 Subject: [PATCH 07/14] Remove redundant say usages --- .../(playgrounds)/playgrounds/playground-card-list.tsx | 4 +--- apps/website/src/components/editor/opened-files/button.tsx | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx index 1da405e5..34284010 100644 --- a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx @@ -101,9 +101,7 @@ export function PlaygroundCardList({ onClick={() => setSearch('')} > - - Clear Search - + Clear Search )} diff --git a/apps/website/src/components/editor/opened-files/button.tsx b/apps/website/src/components/editor/opened-files/button.tsx index 44072bcb..350b24c6 100644 --- a/apps/website/src/components/editor/opened-files/button.tsx +++ b/apps/website/src/components/editor/opened-files/button.tsx @@ -51,7 +51,7 @@ export function OpenedFileButton({ file, others }: OpenedFileButton.Props) { onClick={handleClick} > -  {name ?? say`Untitled`} +  {name}
diff --git a/apps/website/src/components/explorer/name.tsx b/apps/website/src/components/explorer/name.tsx index c8c27f0f..ee464fe7 100644 --- a/apps/website/src/components/explorer/name.tsx +++ b/apps/website/src/components/explorer/name.tsx @@ -78,7 +78,7 @@ export function ExplorerItemName(props: ExplorerItemName.Props) { const name = useMemo(() => { if (item.name === '::args::') return say`CLI Arguments`; - if (item.name === '::input::') return say`STD Input`; + if (item.name === '::input::') return say`STDIN`; return item.name; }, [say, item.name]); From 51d6850fcc1c5965bfc97141d54c83fac4a13c6d Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:41:24 +1300 Subject: [PATCH 10/14] Ensure webmanifest is spec-compliant --- apps/website/src/app/manifest.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/website/src/app/manifest.ts b/apps/website/src/app/manifest.ts index b5f5eecb..b5c776c1 100644 --- a/apps/website/src/app/manifest.ts +++ b/apps/website/src/app/manifest.ts @@ -4,7 +4,7 @@ import say from '~/i18n'; export default async function Manifest(): Promise { await say.load(); - const shortcuts = say.map((say, locale) => ({ + const [manifest, ...shortcuts] = say.map((say, locale) => ({ name: 'Evaluate', short_name: 'Evaluate', description: say`Test code in any programming language with Evaluate! Run code snippets in your browser, without installing anything.`, @@ -12,7 +12,9 @@ export default async function Manifest(): Promise { })); return { - ...shortcuts[0], + name: manifest!.name, + short_name: manifest!.short_name, + description: manifest!.description, theme_color: '#2fc186', background_color: '#ffffff', scope: '/', @@ -21,6 +23,6 @@ export default async function Manifest(): Promise { { src: '/images/icon/192.png', sizes: '192x192', type: 'image/png' }, { src: '/images/icon/512.png', sizes: '512x512', type: 'image/png' }, ], - shortcuts: shortcuts.slice(1), + shortcuts, }; } From 5f077e4317056a7b9024df6fd3c73737a9106236 Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:44:22 +1300 Subject: [PATCH 11/14] Update extracted translation strings --- apps/website/src/locales/en/messages.po | 83 ++++++++++++------------- apps/website/src/locales/fr/messages.po | 83 ++++++++++++------------- 2 files changed, 82 insertions(+), 84 deletions(-) diff --git a/apps/website/src/locales/en/messages.po b/apps/website/src/locales/en/messages.po index 7e2b34cd..288448c3 100644 --- a/apps/website/src/locales/en/messages.po +++ b/apps/website/src/locales/en/messages.po @@ -10,43 +10,43 @@ msgstr "" msgid "Nothing to render here." msgstr "Nothing to render here." -#: src/components/terminal/index.tsx:46 +#: src/components/terminal/index.tsx:44 msgid "Run" msgstr "Run" -#: src/components/terminal/index.tsx:61 +#: src/components/terminal/index.tsx:59 msgid "Compile" msgstr "Compile" -#: src/components/terminal/index.tsx:76 +#: src/components/terminal/index.tsx:74 msgid "Preview" msgstr "Preview" -#: src/components/terminal/index.tsx:90 +#: src/components/terminal/index.tsx:88 msgid "Clear" msgstr "Clear" -#: src/components/terminal/index.tsx:104 +#: src/components/terminal/index.tsx:102 msgid "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." msgstr "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." -#: src/components/terminal/index.tsx:109 +#: src/components/terminal/index.tsx:107 msgid "Your code executed successfully; however, it did not generate any output for the console." msgstr "Your code executed successfully; however, it did not generate any output for the console." -#: src/components/terminal/index.tsx:114 +#: src/components/terminal/index.tsx:112 msgid "Write your code and press <0/> to execute it. The results will be displayed here." msgstr "Write your code and press <0/> to execute it. The results will be displayed here." -#: src/components/terminal/index.tsx:134 +#: src/components/terminal/index.tsx:132 msgid "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." msgstr "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." -#: src/components/terminal/index.tsx:140 +#: src/components/terminal/index.tsx:138 msgid "<0>If this runtime requires compilation, the output will be displayed here." msgstr "<0>If this runtime requires compilation, the output will be displayed here." -#: src/components/terminal/index.tsx:158 +#: src/components/terminal/index.tsx:156 msgid "This runtime does not have a way to display any preview." msgstr "This runtime does not have a way to display any preview." @@ -71,7 +71,7 @@ msgstr "Discord Bot" msgid "Toggle Mobile Navigation" msgstr "Toggle Mobile Navigation" -#: src/components/header/locale-switcher.tsx:24 +#: src/components/header/locale-switcher.tsx:25 msgid "Change Language" msgstr "Change Language" @@ -79,52 +79,52 @@ msgstr "Change Language" msgid "Toggle Theme" msgstr "Toggle Theme" -#: src/components/explorer/index.tsx:44 +#: src/components/explorer/index.tsx:43 msgid "Explorer" msgstr "Explorer" -#: src/components/explorer/index.tsx:50 -#: src/components/explorer/index.tsx:58 +#: src/components/explorer/index.tsx:49 +#: src/components/explorer/index.tsx:57 msgid "New File" msgstr "New File" -#: src/components/explorer/index.tsx:63 -#: src/components/explorer/index.tsx:71 +#: src/components/explorer/index.tsx:62 +#: src/components/explorer/index.tsx:70 msgid "New Folder" msgstr "New Folder" -#: src/components/explorer/index.tsx:76 -#: src/components/explorer/index.tsx:84 -msgid "Download As Zip" -msgstr "Download As Zip" +#: src/components/explorer/index.tsx:75 +#: src/components/explorer/index.tsx:83 +msgid "Download as Zip" +msgstr "Download as Zip" #: src/components/explorer/index.tsx:108 msgid "This is the file explorer. Create a new file to get started." msgstr "This is the file explorer. Create a new file to get started." -#: src/components/explorer/name.tsx:37 +#: src/components/explorer/name.tsx:36 msgid "A name must be provided." msgstr "A name must be provided." -#: src/components/explorer/name.tsx:39 +#: src/components/explorer/name.tsx:38 msgid "This name is invalid." msgstr "This name is invalid." -#: src/components/explorer/name.tsx:41 +#: src/components/explorer/name.tsx:40 msgid "This name already exists." msgstr "This name already exists." -#: src/components/explorer/name.tsx:81 -#: src/components/editor/opened-files/button.tsx:41 +#: src/components/explorer/name.tsx:80 +#: src/components/editor/opened-files/button.tsx:40 msgid "CLI Arguments" msgstr "CLI Arguments" -#: src/components/explorer/name.tsx:82 -#: src/components/editor/opened-files/button.tsx:42 -msgid "STD Input" -msgstr "STD Input" +#: src/components/explorer/name.tsx:81 +#: src/components/editor/opened-files/button.tsx:41 +msgid "STDIN" +msgstr "STDIN" -#: src/components/explorer/use.tsx:68 +#: src/components/explorer/use.tsx:67 msgid "Saved and copied URL to clipboard" msgstr "Saved and copied URL to clipboard" @@ -136,8 +136,7 @@ msgstr "Rename File" msgid "Delete File" msgstr "Delete File" -#: src/components/editor/opened-files/button.tsx:43 -#: src/components/editor/opened-files/button.tsx:55 +#: src/components/editor/opened-files/button.tsx:42 msgid "Untitled" msgstr "Untitled" @@ -210,35 +209,35 @@ msgstr "Explore and run code in different programming languages and runtimes." msgid "Powered by the Piston execution engine." msgstr "Powered by the Piston execution engine." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:80 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:79 msgid "Choose a playground!" msgstr "Choose a playground!" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:93 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:92 msgid "Search runtime playgrounds..." msgstr "Search runtime playgrounds..." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:105 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:104 msgid "Clear Search" msgstr "Clear Search" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:115 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:112 msgid "Sort by..." msgstr "Sort by..." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:117 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:114 msgid "Toggle Sort By Dropdown" msgstr "Toggle Sort By Dropdown" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:120 msgid "Sort By" msgstr "Sort By" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 msgid "Popularity" msgstr "Popularity" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:129 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 msgid "Name" msgstr "Name" @@ -263,5 +262,5 @@ msgid "{0} Online Playground on Evaluate" msgstr "{0} Online Playground on Evaluate" #: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:31 -msgid "Run {0} and more code snippets online in your browser with Evaluates code playground." -msgstr "Run {0} and more code snippets online in your browser with Evaluates code playground." +msgid "Run {0} and more code snippets online in your browser with Evaluate's code playground." +msgstr "Run {0} and more code snippets online in your browser with Evaluate's code playground." diff --git a/apps/website/src/locales/fr/messages.po b/apps/website/src/locales/fr/messages.po index 69b5daf2..5adf2375 100644 --- a/apps/website/src/locales/fr/messages.po +++ b/apps/website/src/locales/fr/messages.po @@ -11,43 +11,43 @@ msgstr "" msgid "Nothing to render here." msgstr "Rien à rendre ici." -#: src/components/terminal/index.tsx:46 +#: src/components/terminal/index.tsx:44 msgid "Run" msgstr "Exécuter" -#: src/components/terminal/index.tsx:61 +#: src/components/terminal/index.tsx:59 msgid "Compile" msgstr "Compiler" -#: src/components/terminal/index.tsx:76 +#: src/components/terminal/index.tsx:74 msgid "Preview" msgstr "Aperçu" -#: src/components/terminal/index.tsx:90 +#: src/components/terminal/index.tsx:88 msgid "Clear" msgstr "Effacer" -#: src/components/terminal/index.tsx:104 +#: src/components/terminal/index.tsx:102 msgid "Your code execution exceeded the allotted time and was terminated. Consider optimising it for better performance." msgstr "L'exécution de votre code a dépassé le temps imparti et a été terminée. Envisagez de l'optimiser pour de meilleures performances." -#: src/components/terminal/index.tsx:109 +#: src/components/terminal/index.tsx:107 msgid "Your code executed successfully; however, it did not generate any output for the console." msgstr "Votre code a été exécuté avec succès ; cependant, il n'a généré aucune sortie pour la console." -#: src/components/terminal/index.tsx:114 +#: src/components/terminal/index.tsx:112 msgid "Write your code and press <0/> to execute it. The results will be displayed here." msgstr "Écrivez votre code et appuyez sur <0/> pour l'exécuter. Les résultats seront affichés ici." -#: src/components/terminal/index.tsx:134 +#: src/components/terminal/index.tsx:132 msgid "Your code compilation exceeded the allotted time and was terminated. Consider optimising your code for faster compilation." msgstr "La compilation de votre code a dépassé le temps imparti et a été terminée. Envisagez d'optimiser votre code pour une compilation plus rapide." -#: src/components/terminal/index.tsx:140 +#: src/components/terminal/index.tsx:138 msgid "<0>If this runtime requires compilation, the output will be displayed here." msgstr "<0>Si ce runtime nécessite une compilation, la sortie sera affichée ici." -#: src/components/terminal/index.tsx:158 +#: src/components/terminal/index.tsx:156 msgid "This runtime does not have a way to display any preview." msgstr "Ce runtime n'a pas de moyen d'afficher un aperçu." @@ -72,7 +72,7 @@ msgstr "Bot Discord" msgid "Toggle Mobile Navigation" msgstr "Basculer la navigation mobile" -#: src/components/header/locale-switcher.tsx:24 +#: src/components/header/locale-switcher.tsx:25 msgid "Change Language" msgstr "Changer de langue" @@ -80,52 +80,52 @@ msgstr "Changer de langue" msgid "Toggle Theme" msgstr "Basculer le thème" -#: src/components/explorer/index.tsx:44 +#: src/components/explorer/index.tsx:43 msgid "Explorer" msgstr "Explorateur" -#: src/components/explorer/index.tsx:50 -#: src/components/explorer/index.tsx:58 +#: src/components/explorer/index.tsx:49 +#: src/components/explorer/index.tsx:57 msgid "New File" msgstr "Nouveau fichier" -#: src/components/explorer/index.tsx:63 -#: src/components/explorer/index.tsx:71 +#: src/components/explorer/index.tsx:62 +#: src/components/explorer/index.tsx:70 msgid "New Folder" msgstr "Nouveau dossier" -#: src/components/explorer/index.tsx:76 -#: src/components/explorer/index.tsx:84 -msgid "Download As Zip" -msgstr "Télécharger en tant que Zip" +#: src/components/explorer/index.tsx:75 +#: src/components/explorer/index.tsx:83 +msgid "Download as Zip" +msgstr "Télécharger au format ZIP" #: src/components/explorer/index.tsx:108 msgid "This is the file explorer. Create a new file to get started." msgstr "Voici l'explorateur de fichiers. Créez un nouveau fichier pour commencer." -#: src/components/explorer/name.tsx:37 +#: src/components/explorer/name.tsx:36 msgid "A name must be provided." msgstr "Un nom doit être fourni." -#: src/components/explorer/name.tsx:39 +#: src/components/explorer/name.tsx:38 msgid "This name is invalid." msgstr "Ce nom est invalide." -#: src/components/explorer/name.tsx:41 +#: src/components/explorer/name.tsx:40 msgid "This name already exists." msgstr "Ce nom existe déjà." -#: src/components/explorer/name.tsx:81 -#: src/components/editor/opened-files/button.tsx:41 +#: src/components/explorer/name.tsx:80 +#: src/components/editor/opened-files/button.tsx:40 msgid "CLI Arguments" msgstr "Arguments CLI" -#: src/components/explorer/name.tsx:82 -#: src/components/editor/opened-files/button.tsx:42 -msgid "STD Input" -msgstr "Entrée STD" +#: src/components/explorer/name.tsx:81 +#: src/components/editor/opened-files/button.tsx:41 +msgid "STDIN" +msgstr "STDIN" -#: src/components/explorer/use.tsx:68 +#: src/components/explorer/use.tsx:67 msgid "Saved and copied URL to clipboard" msgstr "URL sauvegardée et copiée dans le presse-papiers" @@ -137,8 +137,7 @@ msgstr "Renommer le fichier" msgid "Delete File" msgstr "Supprimer le fichier" -#: src/components/editor/opened-files/button.tsx:43 -#: src/components/editor/opened-files/button.tsx:55 +#: src/components/editor/opened-files/button.tsx:42 msgid "Untitled" msgstr "Sans titre" @@ -211,35 +210,35 @@ msgstr "Explorez et exécutez du code dans différents langages de programmation msgid "Powered by the Piston execution engine." msgstr "Alimenté par le moteur d'exécution Piston." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:80 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:79 msgid "Choose a playground!" msgstr "Choisissez un espace de jeu !" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:93 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:92 msgid "Search runtime playgrounds..." msgstr "Chercher des espaces de jeu pour runtimes..." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:105 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:104 msgid "Clear Search" msgstr "Effacer la recherche" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:115 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:112 msgid "Sort by..." msgstr "Trier par..." -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:117 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:114 msgid "Toggle Sort By Dropdown" msgstr "Basculer le menu de tri" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:120 msgid "Sort By" msgstr "Trier par" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:123 msgid "Popularity" msgstr "Popularité" -#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:129 +#: src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx:126 msgid "Name" msgstr "Nom" @@ -264,5 +263,5 @@ msgid "{0} Online Playground on Evaluate" msgstr "{0} Espace de jeu en ligne sur Evaluate" #: src/app/[locale]/(editor)/playgrounds/[playground]/page.tsx:31 -msgid "Run {0} and more code snippets online in your browser with Evaluates code playground." -msgstr "Exécutez {0} et plus d'extraits de code en ligne dans votre navigateur avec l'espace de jeu de code Evaluate." +msgid "Run {0} and more code snippets online in your browser with Evaluate's code playground." +msgstr "Exécutez {0} et d'autres extraits de code en ligne dans votre navigateur avec l'aire de jeux de code d'Evaluate." From 87cdce5c61f60dc2bd99c93841367777f6b7008b Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 05:50:36 +1300 Subject: [PATCH 12/14] "I am stupid" Make href absolute instead of relative --- apps/website/src/components/header/locale-switcher.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/website/src/components/header/locale-switcher.tsx b/apps/website/src/components/header/locale-switcher.tsx index b3ebcbfd..a96cdeff 100644 --- a/apps/website/src/components/header/locale-switcher.tsx +++ b/apps/website/src/components/header/locale-switcher.tsx @@ -51,7 +51,7 @@ function LocaleSwitcherItem({ locale, ...props }: { locale: string }) { const segments = pathname.split('/').filter(Boolean); if (/^[a-z]{2}(-[A-Z]{2})?$/.test(segments[0]!)) segments[0] = locale; else segments.unshift(locale); - return `${segments.join('/')}?${searchParams}`; + return `/${segments.join('/')}${searchParams.size ? '?' : ''}${searchParams}`; }, [locale, pathname, searchParams]); const updatePreferredLocale = useCallback(() => { From 3d223fa25bf7e641490ef8fb7bd3754c375398ff Mon Sep 17 00:00:00 2001 From: Apteryx Date: Sat, 18 Oct 2025 06:19:14 +1300 Subject: [PATCH 13/14] Translate missed strings --- .../playgrounds/playground-card-list.tsx | 19 +++++++++-------- apps/website/src/app/[locale]/layout.tsx | 9 +++++++- .../components/editor/execute-bar/index.tsx | 5 +++-- apps/website/src/locales/en/messages.po | 21 ++++++++++++------- apps/website/src/locales/fr/messages.po | 21 ++++++++++++------- 5 files changed, 47 insertions(+), 28 deletions(-) diff --git a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx index 34284010..39460ca8 100644 --- a/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx +++ b/apps/website/src/app/[locale]/(playgrounds)/playgrounds/playground-card-list.tsx @@ -60,7 +60,7 @@ export function PlaygroundCardList({ type SortBy = 'popularity' | 'name'; const [sortBy, setSortBy] = useQueryParameter('sort', 'popularity'); const sortedRuntimes = useMemo(() => { - return searchedRuntimes.sort((a, b) => { + return [...searchedRuntimes].sort((a, b) => { if (sortBy === 'name') return a.name.localeCompare(b.name); return b.popularity - a.popularity; }); @@ -69,27 +69,28 @@ export function PlaygroundCardList({ const [pinnedRuntimeIds] = useLocalStorage('evaluate.pinned', []); const pinnedRuntimes = useMemo(() => { return pinnedRuntimeIds - .map((id) => initialRuntimes.find((r) => r.id === id)!) - .filter(Boolean); + .map((id) => initialRuntimes.find((r) => r.id === id)) + .filter((r): r is Runtime => Boolean(r)); }, [pinnedRuntimeIds, initialRuntimes]); const [hash] = useHashFragment(); useEffect(() => { - if (hash) - toast.info(say`Choose a playground!`, { - icon: , - }); + if (!hash) return; + toast.info(say`Choose a playground!`, { + icon: , + }); }, [say, hash]); return (
- +
setSearch(e.target.value)} /> @@ -128,7 +129,7 @@ export function PlaygroundCardList({ - +
{pinnedRuntimes.length > 0 && ( <> diff --git a/apps/website/src/app/[locale]/layout.tsx b/apps/website/src/app/[locale]/layout.tsx index a4480cb1..d17e85f0 100644 --- a/apps/website/src/app/[locale]/layout.tsx +++ b/apps/website/src/app/[locale]/layout.tsx @@ -25,7 +25,14 @@ export default async function RootLayout(p: LayoutProps<['[locale]']>) { return ( - + diff --git a/apps/website/src/components/editor/execute-bar/index.tsx b/apps/website/src/components/editor/execute-bar/index.tsx index c4472f3f..bc51c624 100644 --- a/apps/website/src/components/editor/execute-bar/index.tsx +++ b/apps/website/src/components/editor/execute-bar/index.tsx @@ -14,7 +14,7 @@ import { executeCode, FilesOptions } from '@evaluate/execute'; import { useEventListener } from '@evaluate/hooks/event-listener'; import type { Runtime } from '@evaluate/runtimes'; import { zodResolver } from '@hookform/resolvers/zod'; -import { Say } from '@sayable/react'; +import { Say, useSay } from '@sayable/react'; import { useMutation } from '@tanstack/react-query'; import { Loader2Icon, PlayIcon } from 'lucide-react'; import { useCallback, useEffect, useState } from 'react'; @@ -25,6 +25,7 @@ import { useTerminal } from '~/components/terminal/use'; import posthog from '~/services/posthog'; export function ExecuteBar({ runtime }: { runtime: Runtime }) { + const say = useSay(); const explorer = useExplorer(); const files = explorer.descendants // .filter((f): f is File => f.type === 'file'); @@ -114,7 +115,7 @@ export function ExecuteBar({ runtime }: { runtime: Runtime }) {