diff --git a/demo/react-router-app/README.md b/demo/react-router-app/README.md deleted file mode 100644 index 4e32fc378..000000000 --- a/demo/react-router-app/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Compiler demo: React Router / Remix - -A modern, production-ready template for building full-stack React applications using [React Router](https://reactrouter.com/) and and [Lingo.dev Compiler](https://lingo.dev/compiler) implementation. - -Documentation: https://lingo.dev/compiler/frameworks/react-router diff --git a/demo/react-router-app/app/lingo/dictionary.js b/demo/react-router-app/app/lingo/dictionary.js deleted file mode 100644 index c1eff4536..000000000 --- a/demo/react-router-app/app/lingo/dictionary.js +++ /dev/null @@ -1,233 +0,0 @@ -export default { - version: 0.1, - files: { - "root.tsx": { - entries: { - "9/declaration/body/1/argument/1/1/3-content": { - content: { - de: "width=device-width, initial-scale=1", - en: "width=device-width, initial-scale=1", - es: "width=device-width, initial-scale=1", - fr: "width=device-width, initial-scale=1", - }, - hash: "d94b318cb327f61f1aea44a6cb1fdcad", - }, - }, - }, - "routes/test.tsx": { - entries: { - "3/declaration/body/0/argument/1/1": { - content: { - de: "Zurück nach Hause", - en: "Go back home", - es: "Volver a inicio", - fr: "Retourner à l'accueil", - }, - hash: "a0ac69aec348674378faaf92ce476f64", - }, - "3/declaration/body/0/argument/1/3": { - content: { - de: "Dies ist eine Testseite", - en: "This is a test page", - es: "Esta es una página de prueba", - fr: "Ceci est une page de test", - }, - hash: "51eb13586d30537dfa934742439cc7ee", - }, - "3/declaration/body/0/argument/1/5": { - content: { - de: "Willkommen auf der nicht-interaktiven Testseite.", - en: "Welcome to non-interactive testing page.", - es: "Bienvenido a la página de prueba no interactiva.", - fr: "Bienvenue sur la page de test non interactive.", - }, - hash: "792a8d0c1ca71a88ab7d887075e69b1d", - }, - "3/declaration/body/0/argument/1/7": { - content: { - de: "Bitte versuchen Sie nicht, mit dieser Seite zu interagieren, um Ihre eigene Sicherheit zu gewährleisten.", - en: "Please do not try to interact with this page for your own safety.", - es: "Por favor, no intentes interactuar con esta página por tu propia seguridad.", - fr: "Veuillez ne pas essayer d'interagir avec cette page pour votre propre sécurité.", - }, - hash: "31ab29a98c0bb54378cb5a2390d07e57", - }, - }, - }, - "welcome/welcome.tsx": { - entries: { - "3/declaration/body/0/argument/1/1/1/1-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "3/declaration/body/0/argument/1/1/1/3-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "3/declaration/body/0/argument/1/1/3/1-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "3/declaration/body/0/argument/1/1/3/3-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "3/declaration/body/0/argument/1/3": { - content: { - de: "Test", - en: "Test", - es: "Prueba", - fr: "Test", - }, - hash: "4938894bf1608cee94696ec86f5d059a", - }, - "3/declaration/body/0/argument/1/5/1/1": { - content: { - de: "Was kommt als nächstes?", - en: "What's next?", - es: "¿Qué sigue?", - fr: "Qu'en est-il ensuite ?", - }, - hash: "e0d9d29b9e761346e506557eb7b7e798", - }, - "4/declaration/body/0/argument/1/1": { - content: { - de: " 💚", - en: " 💚", - es: " 💚", - fr: " 💚", - }, - hash: "201cf15cf0830aaaf478e49a9665d096", - }, - "4/declaration/body/0/argument/1/1/3": { - content: { - de: "💚", - en: "💚", - es: "💚", - fr: "💚", - }, - hash: "0ecc986bbbb51a93878f2d11bb45c04a", - }, - "4/declaration/body/0/argument/1/1/3/1-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/3/3-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/5/1-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/5/1/1-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/5/1/3-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/5/3-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/1/5/5-alt": { - content: { - de: "React Router", - en: "React Router", - es: "Enrutador de React", - fr: "React Router", - }, - hash: "68ae50c1603f87d51e788a96b419f2ee", - }, - "4/declaration/body/0/argument/1/3": { - content: { - de: "Testseite öffnen", - en: "Open test page", - es: "Abrir página de prueba", - fr: "Ouvrir la page de test", - }, - hash: "4e5098c50297642cf07ce303398bad59", - }, - "4/declaration/body/0/argument/1/5": { - content: { - de: "Willkommen zu Ihrer neuen React Router Anwendung! Dieses Starter-Template enthält alles, was Sie benötigen, um mit React Router und Lingo.dev für die Internationalisierung zu beginnen.", - en: "Welcome to your new React Router application! This starter template includes everything you need to get started with React Router and Lingo.dev for internationalization.", - es: "¡Bienvenido a tu nueva aplicación de React Router! Esta plantilla inicial incluye todo lo que necesitas para empezar con React Router y Lingo.dev para la internacionalización.", - fr: "Bienvenue dans votre nouvelle application React Router ! Ce modèle de départ inclut tout ce dont vous avez besoin pour commencer avec React Router et Lingo.dev pour l'internationalisation.", - }, - hash: "a90f2300128bce36346e0debd0b6092b", - }, - "4/declaration/body/0/argument/1/5/1/1": { - content: { - de: "Was kommt als nächstes?", - en: "What's next?", - es: "¿Qué sigue?", - fr: "Qu'en est-il ensuite ?", - }, - hash: "e0d9d29b9e761346e506557eb7b7e798", - }, - "4/declaration/body/0/argument/1/7/1/1": { - content: { - de: "Was kommt als nächstes?", - en: "What's next?", - es: "¿Qué sigue?", - fr: "Qu'en est-il ensuite ?", - }, - hash: "e0d9d29b9e761346e506557eb7b7e798", - }, - }, - }, - }, -}; diff --git a/demo/react-router-app/app/lingo/meta.json b/demo/react-router-app/app/lingo/meta.json deleted file mode 100644 index 520842676..000000000 --- a/demo/react-router-app/app/lingo/meta.json +++ /dev/null @@ -1,209 +0,0 @@ -{ - "version": 0.1, - "files": { - "root.tsx": { - "scopes": { - "9/declaration/body/1/argument/1/1/3-content": { - "type": "attribute", - "hash": "d94b318cb327f61f1aea44a6cb1fdcad", - "context": "", - "skip": false, - "overrides": {}, - "content": "width=device-width, initial-scale=1" - } - } - }, - "routes/test.tsx": { - "scopes": { - "3/declaration/body/0/argument/1/1": { - "type": "element", - "hash": "a0ac69aec348674378faaf92ce476f64", - "context": "", - "skip": false, - "overrides": {}, - "content": "Go back home" - }, - "3/declaration/body/0/argument/1/3": { - "type": "element", - "hash": "51eb13586d30537dfa934742439cc7ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "This is a test page" - }, - "3/declaration/body/0/argument/1/5": { - "type": "element", - "hash": "792a8d0c1ca71a88ab7d887075e69b1d", - "context": "", - "skip": false, - "overrides": {}, - "content": "Welcome to non-interactive testing page." - }, - "3/declaration/body/0/argument/1/7": { - "type": "element", - "hash": "31ab29a98c0bb54378cb5a2390d07e57", - "context": "", - "skip": false, - "overrides": {}, - "content": "Please do not try to interact with this page for your own safety." - } - } - }, - "welcome/welcome.tsx": { - "scopes": { - "3/declaration/body/0/argument/1/1/1/1-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "3/declaration/body/0/argument/1/1/1/3-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "3/declaration/body/0/argument/1/1/3/1-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "3/declaration/body/0/argument/1/1/3/3-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "3/declaration/body/0/argument/1/3": { - "type": "element", - "hash": "4938894bf1608cee94696ec86f5d059a", - "context": "", - "skip": false, - "overrides": {}, - "content": "Test" - }, - "3/declaration/body/0/argument/1/5/1/1": { - "type": "element", - "hash": "e0d9d29b9e761346e506557eb7b7e798", - "context": "", - "skip": false, - "overrides": {}, - "content": "What's next?" - }, - "4/declaration/body/0/argument/1/1": { - "type": "element", - "hash": "201cf15cf0830aaaf478e49a9665d096", - "context": "", - "skip": false, - "overrides": {}, - "content": " 💚" - }, - "4/declaration/body/0/argument/1/1/3": { - "type": "element", - "hash": "0ecc986bbbb51a93878f2d11bb45c04a", - "context": "", - "skip": false, - "overrides": {}, - "content": "💚" - }, - "4/declaration/body/0/argument/1/1/3/1-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/3/3-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/5/1-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/5/1/1-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/5/1/3-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/5/3-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/1/5/5-alt": { - "type": "attribute", - "hash": "68ae50c1603f87d51e788a96b419f2ee", - "context": "", - "skip": false, - "overrides": {}, - "content": "React Router" - }, - "4/declaration/body/0/argument/1/3": { - "type": "element", - "hash": "4e5098c50297642cf07ce303398bad59", - "context": "", - "skip": false, - "overrides": {}, - "content": "Open test page" - }, - "4/declaration/body/0/argument/1/5": { - "type": "element", - "hash": "a90f2300128bce36346e0debd0b6092b", - "context": "", - "skip": false, - "overrides": {}, - "content": "Welcome to your new React Router application! This starter template includes everything you need to get started with React Router and Lingo.dev for internationalization." - }, - "4/declaration/body/0/argument/1/5/1/1": { - "type": "element", - "hash": "e0d9d29b9e761346e506557eb7b7e798", - "context": "", - "skip": false, - "overrides": {}, - "content": "What's next?" - }, - "4/declaration/body/0/argument/1/7/1/1": { - "type": "element", - "hash": "e0d9d29b9e761346e506557eb7b7e798", - "context": "", - "skip": false, - "overrides": {}, - "content": "What's next?" - } - } - } - } -} diff --git a/demo/react-router-app/app/routes.ts b/demo/react-router-app/app/routes.ts deleted file mode 100644 index 3db02ceec..000000000 --- a/demo/react-router-app/app/routes.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { type RouteConfig, index, route } from "@react-router/dev/routes"; - -export default [ - index("routes/home.tsx"), - route("test", "./routes/test.tsx"), -] satisfies RouteConfig; diff --git a/demo/react-router-app/app/routes/test.tsx b/demo/react-router-app/app/routes/test.tsx deleted file mode 100644 index e6cf42ee7..000000000 --- a/demo/react-router-app/app/routes/test.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import type { Route } from "./+types/home"; -import { Link } from "react-router"; - -export function meta({}: Route.MetaArgs) { - return [ - { title: "New React Router App" }, - { name: "description", content: "Welcome to React Router!" }, - ]; -} - -export default function Test() { - return ( -
-
- - Go back home - -

This is a test page

-

Welcome to non-interactive testing page.

-

Please do not try to interact with this page for your own safety.

-
-
- ); -} diff --git a/demo/react-router-app/app/welcome/lingo-dot-dev.tsx b/demo/react-router-app/app/welcome/lingo-dot-dev.tsx deleted file mode 100644 index 8180e3737..000000000 --- a/demo/react-router-app/app/welcome/lingo-dot-dev.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import type { SVGProps } from "react"; - -export function LingoDotDev(props: SVGProps) { - return ( - - - - - - - - - - - - - - ); -} diff --git a/demo/react-router-app/app/welcome/welcome.tsx b/demo/react-router-app/app/welcome/welcome.tsx deleted file mode 100644 index 6aca3e78d..000000000 --- a/demo/react-router-app/app/welcome/welcome.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import { Link } from "react-router"; -import logoDark from "./logo-dark.svg"; -import logoLight from "./logo-light.svg"; -import { LingoDotDev } from "./lingo-dot-dev"; - -export function Welcome() { - return ( -
-
-
- - - - 💚 -
- - React Router - React Router - -
-
- - Open test page - -

- Welcome to your new React Router application! This starter template - includes everything you need to get started with React Router and - Lingo.dev for internationalization. -

-
- -
-
-
- ); -} - -const resources = [ - { - href: "https://reactrouter.com/docs", - text: "React Router Docs", - icon: ( - - - - ), - }, - { - href: "https://rmx.as/discord", - text: "Join Discord", - icon: ( - - - - ), - }, -]; diff --git a/demo/react-router-app/vite.config.ts b/demo/react-router-app/vite.config.ts deleted file mode 100644 index c06d358d0..000000000 --- a/demo/react-router-app/vite.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { reactRouter } from "@react-router/dev/vite"; -import tailwindcss from "@tailwindcss/vite"; -import { defineConfig } from "vite"; -import tsconfigPaths from "vite-tsconfig-paths"; - -// Compiler: import -import lingoCompiler from "lingo.dev/compiler"; - -export default defineConfig(({ isSsrBuild }) => - lingoCompiler.vite({ - sourceRoot: "app", - targetLocales: ["es", "fr", "de"], - useDirective: false, - models: { - "*:*": "groq:mistral-saba-24b", - }, - })({ - plugins: [tailwindcss(), reactRouter(), tsconfigPaths()], - }), -); diff --git a/demo/react-router-app/.dockerignore b/demo/react-router/.dockerignore similarity index 100% rename from demo/react-router-app/.dockerignore rename to demo/react-router/.dockerignore diff --git a/demo/react-router-app/.gitignore b/demo/react-router/.gitignore similarity index 100% rename from demo/react-router-app/.gitignore rename to demo/react-router/.gitignore diff --git a/demo/react-router-app/Dockerfile b/demo/react-router/Dockerfile similarity index 79% rename from demo/react-router-app/Dockerfile rename to demo/react-router/Dockerfile index 00f83045c..207bf937e 100644 --- a/demo/react-router-app/Dockerfile +++ b/demo/react-router/Dockerfile @@ -19,10 +19,4 @@ COPY ./package.json package-lock.json /app/ COPY --from=production-dependencies-env /app/node_modules /app/node_modules COPY --from=build-env /app/build /app/build WORKDIR /app - -# Create non-root user, set ownership, switch to user before running the app -RUN adduser -D nodeuser && \ - chown -R nodeuser:nodeuser /app -USER nodeuser - CMD ["npm", "run", "start"] \ No newline at end of file diff --git a/demo/react-router/README.md b/demo/react-router/README.md new file mode 100644 index 000000000..a38023fd6 --- /dev/null +++ b/demo/react-router/README.md @@ -0,0 +1,47 @@ +# Lingo.dev Compiler with React Router + +## Introduction + +This example demonstrates how to set up [Lingo.dev Compiler](https://lingo.dev/en/compiler/) with [React Router](https://reactrouter.com/). + +## Running this example + +To run this example: + +1. Set the `LINGODOTDEV_API_KEY` environment variable: + + ```bash + export LINGODOTDEV_API_KEY="" + ``` + + To get an API key, sign up for a free account at [lingo.dev](https://lingo.dev). + +2. Navigate into this example's directory: + + ```bash + cd demo/react-router + ``` + +3. Install the dependencies: + + ```bash + pnpm install + ``` + +4. Run the development server: + + ```bash + pnpm run dev + ``` + +5. Navigate to . + +## Changed files + +These are the files that were changed to get **Lingo.dev Compiler** up and running: + +- [app/root.tsx](./app/root.tsx) +- [app/welcome/welcome.tsx](./app/welcome/welcome.tsx) +- [vite.config.ts](./vite.config.ts) + +You can use these files as a reference when setting up the compiler in your own project. diff --git a/demo/react-router-app/app/app.css b/demo/react-router/app/app.css similarity index 100% rename from demo/react-router-app/app/app.css rename to demo/react-router/app/app.css diff --git a/demo/react-router/app/lingo/dictionary.js b/demo/react-router/app/lingo/dictionary.js new file mode 100644 index 000000000..dce2db1af --- /dev/null +++ b/demo/react-router/app/lingo/dictionary.js @@ -0,0 +1,69 @@ +export default { + version: 0.1, + files: { + "root.tsx": { + entries: { + "6/declaration/body/0/argument/1/1/3-content": { + content: { + en: "width=device-width, initial-scale=1", + es: "width=device-width, initial-scale=1", + }, + hash: "d94b318cb327f61f1aea44a6cb1fdcad", + }, + "8/declaration/body/1/argument/1/1/3-content": { + content: { + en: "width=device-width, initial-scale=1", + es: "width=device-width, initial-scale=1", + }, + hash: "d94b318cb327f61f1aea44a6cb1fdcad", + }, + }, + }, + "welcome/welcome.tsx": { + entries: { + "1/declaration/body/0/argument/1/1": { + content: { + en: "Hello, world!", + es: "¡Hola, mundo!", + }, + hash: "0468579ef2fbc83c9d520c2f2f1c5059", + }, + "1/declaration/body/0/argument/1/3": { + content: { + en: "This is an example app that demonstrates how Lingo.dev Compiler can be used to localize apps built with React Router .", + es: "Esta es una aplicación de ejemplo que demuestra cómo el Compilador de Lingo.dev puede utilizarse para localizar aplicaciones construidas con React Router.", + }, + hash: "de4fc4c1eb45786c32d3cd1b6917f1ec", + }, + "1/declaration/body/0/argument/1/5": { + content: { + en: "To switch between locales, use the following dropdown:", + es: "Para cambiar entre idiomas, utiliza el siguiente menú desplegable:", + }, + hash: "1b1e20634dca3d8822e07be1d7bfc144", + }, + "2/declaration/body/0/argument/1/1/1/1-alt": { + content: { + en: "React Router", + es: "React Router", + }, + hash: "68ae50c1603f87d51e788a96b419f2ee", + }, + "2/declaration/body/0/argument/1/1/1/3-alt": { + content: { + en: "React Router", + es: "React Router", + }, + hash: "68ae50c1603f87d51e788a96b419f2ee", + }, + "2/declaration/body/0/argument/1/3/1/1": { + content: { + en: "What's next?", + es: "¿Qué sigue?", + }, + hash: "e0d9d29b9e761346e506557eb7b7e798", + }, + }, + }, + }, +}; diff --git a/demo/react-router/app/lingo/meta.json b/demo/react-router/app/lingo/meta.json new file mode 100644 index 000000000..f77166f06 --- /dev/null +++ b/demo/react-router/app/lingo/meta.json @@ -0,0 +1,77 @@ +{ + "version": 0.1, + "files": { + "root.tsx": { + "scopes": { + "6/declaration/body/0/argument/1/1/3-content": { + "type": "attribute", + "hash": "d94b318cb327f61f1aea44a6cb1fdcad", + "context": "", + "skip": false, + "overrides": {}, + "content": "width=device-width, initial-scale=1" + }, + "8/declaration/body/1/argument/1/1/3-content": { + "type": "attribute", + "hash": "d94b318cb327f61f1aea44a6cb1fdcad", + "context": "", + "skip": false, + "overrides": {}, + "content": "width=device-width, initial-scale=1" + } + } + }, + "welcome/welcome.tsx": { + "scopes": { + "1/declaration/body/0/argument/1/1": { + "type": "element", + "hash": "0468579ef2fbc83c9d520c2f2f1c5059", + "context": "", + "skip": false, + "overrides": {}, + "content": "Hello, world!" + }, + "1/declaration/body/0/argument/1/3": { + "type": "element", + "hash": "de4fc4c1eb45786c32d3cd1b6917f1ec", + "context": "", + "skip": false, + "overrides": {}, + "content": "This is an example app that demonstrates how Lingo.dev Compiler can be used to localize apps built with React Router ." + }, + "1/declaration/body/0/argument/1/5": { + "type": "element", + "hash": "1b1e20634dca3d8822e07be1d7bfc144", + "context": "", + "skip": false, + "overrides": {}, + "content": "To switch between locales, use the following dropdown:" + }, + "2/declaration/body/0/argument/1/1/1/1-alt": { + "type": "attribute", + "hash": "68ae50c1603f87d51e788a96b419f2ee", + "context": "", + "skip": false, + "overrides": {}, + "content": "React Router" + }, + "2/declaration/body/0/argument/1/1/1/3-alt": { + "type": "attribute", + "hash": "68ae50c1603f87d51e788a96b419f2ee", + "context": "", + "skip": false, + "overrides": {}, + "content": "React Router" + }, + "2/declaration/body/0/argument/1/3/1/1": { + "type": "element", + "hash": "e0d9d29b9e761346e506557eb7b7e798", + "context": "", + "skip": false, + "overrides": {}, + "content": "What's next?" + } + } + } + } +} diff --git a/demo/react-router-app/app/root.tsx b/demo/react-router/app/root.tsx similarity index 75% rename from demo/react-router-app/app/root.tsx rename to demo/react-router/app/root.tsx index 1ddb3236a..faea19f74 100644 --- a/demo/react-router-app/app/root.tsx +++ b/demo/react-router/app/root.tsx @@ -6,15 +6,12 @@ import { Scripts, ScrollRestoration, } from "react-router"; -import type { LoaderFunctionArgs } from "react-router"; -import { useLoaderData } from "react-router"; +import { LingoProvider } from "lingo.dev/react/client"; +import { loadDictionary } from "lingo.dev/react/react-router"; import type { Route } from "./+types/root"; import "./app.css"; - -// Compiler: imports -import { LingoProvider, LocaleSwitcher } from "lingo.dev/react/client"; -import { loadDictionary } from "lingo.dev/react/react-router"; +import { useLoaderData } from "react-router"; export const links: Route.LinksFunction = () => [ { rel: "preconnect", href: "https://fonts.googleapis.com" }, @@ -29,14 +26,19 @@ export const links: Route.LinksFunction = () => [ }, ]; -export async function loader(args: LoaderFunctionArgs) { - return { lingoDictionary: await loadDictionary(args.request) }; +export async function loader({ request }: Route.LoaderArgs) { + const lingoDictionary = await loadDictionary(request); + + return { + lingoDictionary, + }; } -export function Layout(props: { children: React.ReactNode }) { - const loaderData = useLoaderData(); +export function Layout({ children }: { children: React.ReactNode }) { + const data = useLoaderData(); + return ( - + @@ -45,12 +47,9 @@ export function Layout(props: { children: React.ReactNode }) { - {props.children} + {children} -
- -
diff --git a/demo/react-router/app/routes.ts b/demo/react-router/app/routes.ts new file mode 100644 index 000000000..102b40258 --- /dev/null +++ b/demo/react-router/app/routes.ts @@ -0,0 +1,3 @@ +import { type RouteConfig, index } from "@react-router/dev/routes"; + +export default [index("routes/home.tsx")] satisfies RouteConfig; diff --git a/demo/react-router-app/app/routes/home.tsx b/demo/react-router/app/routes/home.tsx similarity index 100% rename from demo/react-router-app/app/routes/home.tsx rename to demo/react-router/app/routes/home.tsx diff --git a/demo/react-router-app/app/welcome/logo-dark.svg b/demo/react-router/app/welcome/logo-dark.svg similarity index 100% rename from demo/react-router-app/app/welcome/logo-dark.svg rename to demo/react-router/app/welcome/logo-dark.svg diff --git a/demo/react-router-app/app/welcome/logo-light.svg b/demo/react-router/app/welcome/logo-light.svg similarity index 100% rename from demo/react-router-app/app/welcome/logo-light.svg rename to demo/react-router/app/welcome/logo-light.svg diff --git a/demo/react-router/app/welcome/welcome.tsx b/demo/react-router/app/welcome/welcome.tsx new file mode 100644 index 000000000..3d5fffef1 --- /dev/null +++ b/demo/react-router/app/welcome/welcome.tsx @@ -0,0 +1,29 @@ +import { LocaleSwitcher } from "lingo.dev/react-client"; + +export function Welcome() { + return ( +
+
+

Hello, world!

+

+ This is an example app that demonstrates how{" "} + Lingo.dev Compiler can be{" "} + used to localize apps built with{" "} + + React Router + + . +

+

+ To switch between locales, use the following dropdown: +

+
+ +
+
+
+ ); +} diff --git a/demo/react-router-app/package.json b/demo/react-router/package.json similarity index 75% rename from demo/react-router-app/package.json rename to demo/react-router/package.json index c2ec0ce17..0e546849c 100644 --- a/demo/react-router-app/package.json +++ b/demo/react-router/package.json @@ -1,5 +1,5 @@ { - "name": "react-router-app", + "name": "react-router", "private": true, "type": "module", "scripts": { @@ -9,16 +9,16 @@ "typecheck": "react-router typegen && tsc" }, "dependencies": { - "lingo.dev": "workspace:*", - "@react-router/node": "^7.5.3", - "@react-router/serve": "^7.5.3", + "@react-router/node": "^7.7.0", + "@react-router/serve": "^7.7.0", "isbot": "^5.1.27", + "lingo.dev": "^0.108.0", "react": "^19.1.0", "react-dom": "^19.1.0", - "react-router": "^7.5.3" + "react-router": "^7.7.0" }, "devDependencies": { - "@react-router/dev": "^7.5.3", + "@react-router/dev": "^7.7.0", "@tailwindcss/vite": "^4.1.4", "@types/node": "^20", "@types/react": "^19.1.2", diff --git a/demo/react-router-app/public/favicon.ico b/demo/react-router/public/favicon.ico similarity index 100% rename from demo/react-router-app/public/favicon.ico rename to demo/react-router/public/favicon.ico diff --git a/demo/react-router-app/react-router.config.ts b/demo/react-router/react-router.config.ts similarity index 100% rename from demo/react-router-app/react-router.config.ts rename to demo/react-router/react-router.config.ts diff --git a/demo/react-router-app/tsconfig.json b/demo/react-router/tsconfig.json similarity index 100% rename from demo/react-router-app/tsconfig.json rename to demo/react-router/tsconfig.json diff --git a/demo/react-router/vite.config.ts b/demo/react-router/vite.config.ts new file mode 100644 index 000000000..6ac2a3fda --- /dev/null +++ b/demo/react-router/vite.config.ts @@ -0,0 +1,22 @@ +import { reactRouter } from "@react-router/dev/vite"; +import tailwindcss from "@tailwindcss/vite"; +import lingoCompiler from "lingo.dev/compiler"; +import { type UserConfig } from "vite"; +import tsconfigPaths from "vite-tsconfig-paths"; + +const viteConfig: UserConfig = { + plugins: [tailwindcss(), reactRouter(), tsconfigPaths()], +}; + +const withLingo = lingoCompiler.vite({ + sourceRoot: "app", + lingoDir: "lingo", + sourceLocale: "en", + targetLocales: ["es"], + rsc: false, + useDirective: false, + debug: false, + models: "lingo.dev", +}); + +export default withLingo(viteConfig); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 06791dc97..37fad7ae9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -98,20 +98,20 @@ importers: specifier: ^5 version: 5.8.3 - demo/react-router-app: + demo/react-router: dependencies: '@react-router/node': - specifier: ^7.5.3 - version: 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + specifier: ^7.7.0 + version: 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) '@react-router/serve': - specifier: ^7.5.3 - version: 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + specifier: ^7.7.0 + version: 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) isbot: specifier: ^5.1.27 version: 5.1.28 lingo.dev: - specifier: workspace:* - version: link:../../packages/cli + specifier: ^0.108.0 + version: 0.108.0(@types/node@20.17.57)(@types/react@19.1.6)(encoding@0.1.13)(lightningcss@1.30.1)(next@15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0) react: specifier: ^19.1.0 version: 19.1.0 @@ -119,12 +119,12 @@ importers: specifier: ^19.1.0 version: 19.1.0(react@19.1.0) react-router: - specifier: ^7.5.3 - version: 7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + specifier: ^7.7.0 + version: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) devDependencies: '@react-router/dev': - specifier: ^7.5.3 - version: 7.6.1(@react-router/serve@7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0)(tsx@4.20.3)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0))(yaml@2.7.0) + specifier: ^7.7.0 + version: 7.7.1(@react-router/serve@7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0)(tsx@4.20.3)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0))(yaml@2.7.0) '@tailwindcss/vite': specifier: ^4.1.4 version: 4.1.8(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0)) @@ -881,6 +881,10 @@ packages: resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} engines: {node: '>=6.9.0'} + '@babel/core@7.28.0': + resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.27.1': resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} @@ -889,6 +893,10 @@ packages: resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} engines: {node: '>=6.9.0'} + '@babel/generator@7.28.0': + resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} + engines: {node: '>=6.9.0'} + '@babel/helper-annotate-as-pure@7.27.3': resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} engines: {node: '>=6.9.0'} @@ -903,6 +911,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + '@babel/helper-member-expression-to-functions@7.27.1': resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} engines: {node: '>=6.9.0'} @@ -951,6 +963,10 @@ packages: resolution: {integrity: sha512-Y+bO6U+I7ZKaM5G5rDUZiYfUvQPUibYmAFe7EnKdnKBbVXDZxvp+MWOH5gYciY0EPk4EScsuFMQBbEfpdRKSCQ==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.28.2': + resolution: {integrity: sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.27.1': resolution: {integrity: sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==} engines: {node: '>=6.0.0'} @@ -961,11 +977,10 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-syntax-decorators@7.27.1': - resolution: {integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 + '@babel/parser@7.28.0': + resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} + engines: {node: '>=6.0.0'} + hasBin: true '@babel/plugin-syntax-jsx@7.27.1': resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} @@ -1021,6 +1036,10 @@ packages: resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.0': + resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} + engines: {node: '>=6.9.0'} + '@babel/types@7.27.1': resolution: {integrity: sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==} engines: {node: '>=6.9.0'} @@ -1029,6 +1048,10 @@ packages: resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} + '@babel/types@7.28.2': + resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==} + engines: {node: '>=6.9.0'} + '@changesets/apply-release-plan@7.0.7': resolution: {integrity: sha512-qnPOcmmmnD0MfMg9DjU1/onORFyRpDXkMMl2IJg9mECY6RnxL3wN0TCCc92b2sXt1jt8DgjAUUsZYGUGTdYIXA==} @@ -2264,6 +2287,24 @@ packages: '@types/node': optional: true + '@inquirer/checkbox@4.2.0': + resolution: {integrity: sha512-fdSw07FLJEU5vbpOPzXo5c6xmMGDzbZE2+niuDHX5N6mc6V0Ebso/q3xiHra4D73+PMsC8MJmcaZKuAAoaQsSA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.14': + resolution: {integrity: sha512-5yR4IBfe0kXe59r1YCTG8WXkUbl7Z35HK87Sw+WUyGD8wNUx7JvY7laahzeytyE1oLn74bQnL7hstctQxisQ8Q==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/confirm@5.1.9': resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} engines: {node: '>=18'} @@ -2282,6 +2323,15 @@ packages: '@types/node': optional: true + '@inquirer/core@10.1.15': + resolution: {integrity: sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/core@10.1.2': resolution: {integrity: sha512-bHd96F3ezHg1mf/J0Rb4CV8ndCN0v28kUlrHqP7+ECm1C/A+paB7Xh2lbMk6x+kweQC+rZOxM/YeKikzxco8bQ==} engines: {node: '>=18'} @@ -2295,6 +2345,15 @@ packages: '@types/node': optional: true + '@inquirer/editor@4.2.15': + resolution: {integrity: sha512-wst31XT8DnGOSS4nNJDIklGKnf+8shuauVrWzgKegWUe28zfCftcWZ2vktGdzJgcylWSS2SrDnYUb6alZcwnCQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/expand@4.0.12': resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} engines: {node: '>=18'} @@ -2304,10 +2363,23 @@ packages: '@types/node': optional: true + '@inquirer/expand@4.0.17': + resolution: {integrity: sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/figures@1.0.11': resolution: {integrity: sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==} engines: {node: '>=18'} + '@inquirer/figures@1.0.13': + resolution: {integrity: sha512-lGPVU3yO9ZNqA7vTYz26jny41lE7yoQansmqdMLBEfqaGsmdg7V3W9mK9Pvb5IL4EVZ9GnSDGMO/cJXud5dMaw==} + engines: {node: '>=18'} + '@inquirer/figures@1.0.9': resolution: {integrity: sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==} engines: {node: '>=18'} @@ -2321,6 +2393,15 @@ packages: '@types/node': optional: true + '@inquirer/input@4.2.1': + resolution: {integrity: sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/number@3.0.12': resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} engines: {node: '>=18'} @@ -2330,6 +2411,15 @@ packages: '@types/node': optional: true + '@inquirer/number@3.0.17': + resolution: {integrity: sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/password@4.0.12': resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} engines: {node: '>=18'} @@ -2339,6 +2429,15 @@ packages: '@types/node': optional: true + '@inquirer/password@4.0.17': + resolution: {integrity: sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/prompts@7.2.3': resolution: {integrity: sha512-hzfnm3uOoDySDXfDNOm9usOuYIaQvTgKp/13l1uJoe6UNY+Zpcn2RYt0jXz3yA+yemGHvDOxVzqWl3S5sQq53Q==} engines: {node: '>=18'} @@ -2363,6 +2462,15 @@ packages: '@types/node': optional: true + '@inquirer/prompts@7.7.1': + resolution: {integrity: sha512-XDxPrEWeWUBy8scAXzXuFY45r/q49R0g72bUzgQXZ1DY/xEFX+ESDMkTQolcb5jRBzaNJX2W8XQl6krMNDTjaA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/rawlist@4.0.12': resolution: {integrity: sha512-wNPJZy8Oc7RyGISPxp9/MpTOqX8lr0r+lCCWm7hQra+MDtYRgINv1hxw7R+vKP71Bu/3LszabxOodfV/uTfsaA==} engines: {node: '>=18'} @@ -2381,6 +2489,15 @@ packages: '@types/node': optional: true + '@inquirer/rawlist@4.1.5': + resolution: {integrity: sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/search@3.0.12': resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} engines: {node: '>=18'} @@ -2390,6 +2507,15 @@ packages: '@types/node': optional: true + '@inquirer/search@3.0.17': + resolution: {integrity: sha512-CuBU4BAGFqRYors4TNCYzy9X3DpKtgIW4Boi0WNkm4Ei1hvY9acxKdBdyqzqBCEe4YxSdaQQsasJlFlUJNgojw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/select@4.1.1': resolution: {integrity: sha512-IUXzzTKVdiVNMA+2yUvPxWsSgOG4kfX93jOM4Zb5FgujeInotv5SPIJVeXQ+fO4xu7tW8VowFhdG5JRmmCyQ1Q==} engines: {node: '>=18'} @@ -2408,6 +2534,15 @@ packages: '@types/node': optional: true + '@inquirer/select@4.3.1': + resolution: {integrity: sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@inquirer/type@3.0.2': resolution: {integrity: sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==} engines: {node: '>=18'} @@ -2423,6 +2558,15 @@ packages: '@types/node': optional: true + '@inquirer/type@3.0.8': + resolution: {integrity: sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -2439,6 +2583,9 @@ 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.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -2460,6 +2607,23 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.29': + resolution: {integrity: sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==} + + '@lingo.dev/_compiler@0.7.2': + resolution: {integrity: sha512-SyqCzNGPYhmyjPhyLsxFRafLLqmRYRyLMEBmRJ/OnrbkqUN3wRDeqpK5lFJL6E/fBdCKbI9SFYBc+46lbp2ROw==} + + '@lingo.dev/_react@0.4.2': + resolution: {integrity: sha512-Ezg+wDT6NJWghk9GH9KDllMj21irugPm0kkj+GGUKjfwV33HpuraczRunU2WQSZ1mWK3pOPSsGD2S3j3ivTAJg==} + peerDependencies: + next: 15.2.4 + + '@lingo.dev/_sdk@0.11.0': + resolution: {integrity: sha512-u3ecbAm2zAXbrPRCmqkfdxGaAmiZ/dq7sTL9FQelr4+Uxl0E1f5dFvZKx1PCmSQ3rJZuHBP/8vG6r+3gEXt2XQ==} + + '@lingo.dev/_spec@0.39.3': + resolution: {integrity: sha512-X4/dsIgysG4UXrXgWtPza0FDBo9J05UI2kjl9CpeNvSbx1FXs9aUQ3Ub71F6D0dsYspYCmzJIn1U3TfrhcN/3A==} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -2789,15 +2953,15 @@ packages: peerDependencies: prettier: '*' - '@react-router/dev@7.6.1': - resolution: {integrity: sha512-E4pzxViSQ1Z4EPUz1p47ldm+qIbzfFbJtbXvxi+KSidpftf/ttjr+DtLEiTEdIqZTYv8trBASRtV6C5hn9GZQQ==} + '@react-router/dev@7.7.1': + resolution: {integrity: sha512-ByfgHmAyfx/JQYN/QwUx1sFJlBA5Z3HQAZ638wHSb+m6khWtHqSaKCvPqQh1P00wdEAeV3tX5L1aUM/ceCF6+w==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@react-router/serve': ^7.6.1 - react-router: ^7.6.1 + '@react-router/serve': ^7.7.1 + react-router: ^7.7.1 typescript: ^5.1.0 - vite: ^5.1.0 || ^6.0.0 + vite: ^5.1.0 || ^6.0.0 || ^7.0.0 wrangler: ^3.28.2 || ^4.0.0 peerDependenciesMeta: '@react-router/serve': @@ -2807,33 +2971,33 @@ packages: wrangler: optional: true - '@react-router/express@7.6.1': - resolution: {integrity: sha512-cdmz6MhmzzMSXWP3xyVYVgpPdGcsKGREyNW99yEun2kOMzcY4R/64lgTECPmtODKhPSbuFRmQvUp80xPL7NT2Q==} + '@react-router/express@7.7.1': + resolution: {integrity: sha512-OEZwIM7i/KPSDjwVRg3LqeNIwG41U+SeFOwMjhZRFfyrnwghHfvWsDajf73r4ccMh+RRHcP1GIN6VSU3XZk7MA==} engines: {node: '>=20.0.0'} peerDependencies: express: ^4.17.1 || ^5 - react-router: 7.6.1 + react-router: 7.7.1 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/node@7.6.1': - resolution: {integrity: sha512-RZ9IatEarjF1GSHV+OUHNaRKtfp27UXP2J8dVdax6K/UXHc45k3t9Zp6splqT88wob4CUt4loDQw/7srNvsQhQ==} + '@react-router/node@7.7.1': + resolution: {integrity: sha512-EHd6PEcw2nmcJmcYTPA0MmRWSqOaJ/meycfCp0ADA9T/6b7+fUHfr9XcNyf7UeZtYwu4zGyuYfPmLU5ic6Ugyg==} engines: {node: '>=20.0.0'} peerDependencies: - react-router: 7.6.1 + react-router: 7.7.1 typescript: ^5.1.0 peerDependenciesMeta: typescript: optional: true - '@react-router/serve@7.6.1': - resolution: {integrity: sha512-Pk0gV7URA9cuLxDpoQ/Qt27gptdaHepMZYdHRgUzFYZjBfoSeSlm9iU6BV71QOTUtOkQW94U4V4RjD57DQu7gg==} + '@react-router/serve@7.7.1': + resolution: {integrity: sha512-LyAiX+oI+6O6j2xWPUoKW+cgayUf3USBosSMv73Jtwi99XUhSDu2MUhM+BB+AbrYRubauZ83QpZTROiXoaf8jA==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - react-router: 7.6.1 + react-router: 7.7.1 '@replexica/sdk@0.7.7': resolution: {integrity: sha512-kE8AILyPLQz8Mhho6BRjD4YDDA+WSYCl6jD8C9qdIVne+Oppo84rlTBJynIWrfM9mgCyIzRwLJqstYkLJ3v/wg==} @@ -4252,10 +4416,6 @@ packages: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} - chokidar@4.0.1: - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} - engines: {node: '>= 14.16.0'} - chokidar@4.0.3: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} @@ -4675,6 +4835,15 @@ packages: supports-color: optional: true + debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -4932,6 +5101,9 @@ packages: es-module-lexer@1.6.0: resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -5253,6 +5425,11 @@ packages: engines: {node: '>= 0.4.0'} hasBin: true + figlet@1.8.2: + resolution: {integrity: sha512-iPCpE9B/rOcjewIzDnagP9F2eySzGeHReX8WlrZQJkqFBk2wvq8gY0c6U6Hd2y9HnX1LQcYSeP7aEHoPt6sVKQ==} + engines: {node: '>= 0.4.0'} + hasBin: true + figures@6.1.0: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} @@ -6177,6 +6354,11 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + lingo.dev@0.108.0: + resolution: {integrity: sha512-uNo4G+2qXjx9n+TlTO1mPnaPEXiJWmzAF+t7G/YfbFUcloEKR3XMnOtUSivhqSWy8tlmjamloZ99z0x/IspD5A==} + engines: {node: '>=18'} + hasBin: true + lingo.dev@0.70.3: resolution: {integrity: sha512-D7sEiJu3gjGgdx1G53bA5xBXp8EyNS1lVcvMafQTxVwyTS6/nliqTplMZ0yCavEMhUy/G3qH/ZjOmQFB7G7JCQ==} engines: {node: '>=18'} @@ -7503,6 +7685,10 @@ packages: resolution: {integrity: sha512-e3P9nutxKoSYslYzDHuf2qahKlufHlgk3MmgoCOWyEFf/T8pBk77ro+3IQdofInrpB6cHHkhdnlIUwiXlZw2AQ==} engines: {node: '>=15.0.0'} + posthog-node@5.6.0: + resolution: {integrity: sha512-MVXxKmqAYp2cPBrN1YMhnhYsJYIu6yc6wumbHz1dbo67wZBf2WtMm67Uh+4VCrp07049qierWlxQqz1W5zGDeg==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -7517,6 +7703,11 @@ packages: engines: {node: '>=14'} hasBin: true + prettier@3.6.2: + resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + engines: {node: '>=14'} + hasBin: true + pretty-bytes@6.1.1: resolution: {integrity: sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==} engines: {node: ^14.13.1 || >=16.0.0} @@ -7635,8 +7826,8 @@ packages: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} engines: {node: '>=0.10.0'} - react-router@7.6.1: - resolution: {integrity: sha512-hPJXXxHJZEsPFNVbtATH7+MMX43UDeOauz+EAU4cgqTn7ojdI9qQORqS8Z0qmDlL1TclO/6jLRYUEtbWidtdHQ==} + react-router@7.7.1: + resolution: {integrity: sha512-jVKHXoWRIsD/qS6lvGveckwb862EekvapdHJN/cGmzw40KnJH5gg53ujOJ4qX6EKIK9LSBfFed/xiQ5yeXNrUA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -8084,9 +8275,6 @@ packages: resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} engines: {node: '>= 0.4'} - stream-slice@0.1.2: - resolution: {integrity: sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==} - streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -8293,6 +8481,10 @@ packages: resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.14: + resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} + engines: {node: '>=12.0.0'} + tinygradient@1.1.5: resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==} @@ -8538,10 +8730,6 @@ packages: undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} - undici@6.21.3: - resolution: {integrity: sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw==} - engines: {node: '>=18.17'} - unhead@1.11.14: resolution: {integrity: sha512-XmXW0aZyX9kGk9ejCKCSvv/J4T3Rt4hoAe2EofM+nhG+zwZ7AArUMK/0F/fj6FTkfgY0u0/JryE00qUDULgygA==} @@ -8669,13 +8857,13 @@ packages: engines: {node: ^18.0.0 || >=20.0.0} hasBin: true - vite-node@3.0.0-beta.2: - resolution: {integrity: sha512-ofTf6cfRdL30Wbl9n/BX81EyIR5s4PReLmSurrxQ+koLaWUNOEo8E0lCM53OJkb8vpa2URM2nSrxZsIFyvY1rg==} + vite-node@3.1.2: + resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-node@3.1.2: - resolution: {integrity: sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==} + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true @@ -9145,16 +9333,6 @@ snapshots: optionalDependencies: zod: 3.25.76 - '@ai-sdk/react@1.2.12(react@19.1.0)(zod@3.25.76)': - dependencies: - '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) - react: 19.1.0 - swr: 2.3.3(react@19.1.0) - throttleit: 2.1.0 - optionalDependencies: - zod: 3.25.76 - '@ai-sdk/ui-utils@1.2.11(zod@3.25.76)': dependencies: '@ai-sdk/provider': 1.1.3 @@ -9202,6 +9380,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.28.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) + '@babel/helpers': 7.28.2 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + convert-source-map: 2.0.0 + debug: 4.4.0 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.27.1': dependencies: '@babel/parser': 7.27.1 @@ -9218,9 +9416,17 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 + '@babel/generator@7.28.0': + dependencies: + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 + jsesc: 3.1.0 + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.28.2 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -9230,30 +9436,32 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.4)': + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 semver: 6.3.1 transitivePeerDependencies: - supports-color + '@babel/helper-globals@7.28.0': {} + '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -9266,25 +9474,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@babel/traverse': 7.27.4 + transitivePeerDependencies: + - supports-color + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.28.2 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.4)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.28.0 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -9297,7 +9514,12 @@ snapshots: '@babel/helpers@7.27.4': dependencies: '@babel/template': 7.27.2 - '@babel/types': 7.27.3 + '@babel/types': 7.28.2 + + '@babel/helpers@7.28.2': + dependencies: + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 '@babel/parser@7.27.1': dependencies: @@ -9307,25 +9529,24 @@ snapshots: dependencies: '@babel/types': 7.27.3 - '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.27.4)': + '@babel/parser@7.28.0': dependencies: - '@babel/core': 7.27.4 - '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.2 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.4) + '@babel/core': 7.28.0 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color @@ -9340,25 +9561,25 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': + '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.27.4 + '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color @@ -9384,6 +9605,18 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.28.0': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.0 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/template': 7.27.2 + '@babel/types': 7.28.2 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + '@babel/types@7.27.1': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -9394,6 +9627,11 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.28.2': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@changesets/apply-release-plan@7.0.7': dependencies: '@changesets/config': 3.0.5 @@ -10457,6 +10695,24 @@ snapshots: figures: 6.1.0 ink: 4.4.1(@types/react@18.3.20)(react@18.3.1) + '@inkjs/ui@2.0.0(ink@4.4.1(@types/react@19.1.6)(react@19.1.0))': + dependencies: + chalk: 5.4.1 + cli-spinners: 3.2.0 + deepmerge: 4.3.1 + figures: 6.1.0 + ink: 4.4.1(@types/react@19.1.6)(react@18.3.1) + + '@inquirer/checkbox@4.1.5(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/checkbox@4.1.5(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10477,6 +10733,30 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/checkbox@4.2.0(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.17.57) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/confirm@5.1.14(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/confirm@5.1.9(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/confirm@5.1.9(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10491,6 +10771,19 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/core@10.1.10(@types/node@20.17.57)': + dependencies: + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/core@10.1.10(@types/node@22.10.2)': dependencies: '@inquirer/figures': 1.0.11 @@ -10517,20 +10810,41 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 - '@inquirer/core@10.1.2(@types/node@24.0.12)': + '@inquirer/core@10.1.15(@types/node@20.17.57)': dependencies: - '@inquirer/figures': 1.0.9 - '@inquirer/type': 3.0.6(@types/node@24.0.12) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.17.57) ansi-escapes: 4.3.2 cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 - strip-ansi: 6.0.1 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.2 - transitivePeerDependencies: + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/core@10.1.2(@types/node@24.0.12)': + dependencies: + '@inquirer/figures': 1.0.9 + '@inquirer/type': 3.0.6(@types/node@24.0.12) + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + transitivePeerDependencies: - '@types/node' + '@inquirer/editor@4.2.10(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + external-editor: 3.1.0 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/editor@4.2.10(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10547,6 +10861,22 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/editor@4.2.15(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + external-editor: 3.1.0 + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/expand@4.0.12(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/expand@4.0.12(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10563,10 +10893,27 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/expand@4.0.17(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/figures@1.0.11': {} + '@inquirer/figures@1.0.13': {} + '@inquirer/figures@1.0.9': {} + '@inquirer/input@4.1.9(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/input@4.1.9(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10581,6 +10928,20 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/input@4.2.1(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/number@3.0.12(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/number@3.0.12(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10595,6 +10956,21 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/number@3.0.17(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/password@4.0.12(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/password@4.0.12(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10611,6 +10987,14 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/password@4.0.17(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + ansi-escapes: 4.3.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/prompts@7.2.3(@types/node@24.0.12)': dependencies: '@inquirer/checkbox': 4.1.5(@types/node@24.0.12) @@ -10625,6 +11009,21 @@ snapshots: '@inquirer/select': 4.1.1(@types/node@24.0.12) '@types/node': 24.0.12 + '@inquirer/prompts@7.4.1(@types/node@20.17.57)': + dependencies: + '@inquirer/checkbox': 4.1.5(@types/node@20.17.57) + '@inquirer/confirm': 5.1.9(@types/node@20.17.57) + '@inquirer/editor': 4.2.10(@types/node@20.17.57) + '@inquirer/expand': 4.0.12(@types/node@20.17.57) + '@inquirer/input': 4.1.9(@types/node@20.17.57) + '@inquirer/number': 3.0.12(@types/node@20.17.57) + '@inquirer/password': 4.0.12(@types/node@20.17.57) + '@inquirer/rawlist': 4.0.12(@types/node@20.17.57) + '@inquirer/search': 3.0.12(@types/node@20.17.57) + '@inquirer/select': 4.1.1(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/prompts@7.4.1(@types/node@22.10.2)': dependencies: '@inquirer/checkbox': 4.1.5(@types/node@22.10.2) @@ -10655,6 +11054,21 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/prompts@7.5.0(@types/node@20.17.57)': + dependencies: + '@inquirer/checkbox': 4.1.5(@types/node@20.17.57) + '@inquirer/confirm': 5.1.9(@types/node@20.17.57) + '@inquirer/editor': 4.2.10(@types/node@20.17.57) + '@inquirer/expand': 4.0.12(@types/node@20.17.57) + '@inquirer/input': 4.1.9(@types/node@20.17.57) + '@inquirer/number': 3.0.12(@types/node@20.17.57) + '@inquirer/password': 4.0.12(@types/node@20.17.57) + '@inquirer/rawlist': 4.1.0(@types/node@20.17.57) + '@inquirer/search': 3.0.12(@types/node@20.17.57) + '@inquirer/select': 4.2.0(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/prompts@7.5.0(@types/node@22.10.2)': dependencies: '@inquirer/checkbox': 4.1.5(@types/node@22.10.2) @@ -10670,6 +11084,29 @@ snapshots: optionalDependencies: '@types/node': 22.10.2 + '@inquirer/prompts@7.7.1(@types/node@20.17.57)': + dependencies: + '@inquirer/checkbox': 4.2.0(@types/node@20.17.57) + '@inquirer/confirm': 5.1.14(@types/node@20.17.57) + '@inquirer/editor': 4.2.15(@types/node@20.17.57) + '@inquirer/expand': 4.0.17(@types/node@20.17.57) + '@inquirer/input': 4.2.1(@types/node@20.17.57) + '@inquirer/number': 3.0.17(@types/node@20.17.57) + '@inquirer/password': 4.0.17(@types/node@20.17.57) + '@inquirer/rawlist': 4.1.5(@types/node@20.17.57) + '@inquirer/search': 3.0.17(@types/node@20.17.57) + '@inquirer/select': 4.3.1(@types/node@20.17.57) + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/rawlist@4.0.12(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/rawlist@4.0.12(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10686,6 +11123,14 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/rawlist@4.1.0(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/rawlist@4.1.0(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10694,6 +11139,23 @@ snapshots: optionalDependencies: '@types/node': 22.10.2 + '@inquirer/rawlist@4.1.5(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/type': 3.0.8(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/search@3.0.12(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/search@3.0.12(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10712,6 +11174,25 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/search@3.0.17(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.17.57) + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + + '@inquirer/select@4.1.1(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/select@4.1.1(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10732,6 +11213,16 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/select@4.2.0(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/figures': 1.0.11 + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/select@4.2.0(@types/node@22.10.2)': dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -10742,10 +11233,24 @@ snapshots: optionalDependencies: '@types/node': 22.10.2 + '@inquirer/select@4.3.1(@types/node@20.17.57)': + dependencies: + '@inquirer/core': 10.1.15(@types/node@20.17.57) + '@inquirer/figures': 1.0.13 + '@inquirer/type': 3.0.8(@types/node@20.17.57) + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.2 + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/type@3.0.2(@types/node@24.0.12)': dependencies: '@types/node': 24.0.12 + '@inquirer/type@3.0.6(@types/node@20.17.57)': + optionalDependencies: + '@types/node': 20.17.57 + '@inquirer/type@3.0.6(@types/node@22.10.2)': optionalDependencies: '@types/node': 22.10.2 @@ -10754,6 +11259,10 @@ snapshots: optionalDependencies: '@types/node': 24.0.12 + '@inquirer/type@3.0.8(@types/node@20.17.57)': + optionalDependencies: + '@types/node': 20.17.57 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.0': @@ -10773,6 +11282,11 @@ snapshots: dependencies: minipass: 7.1.2 + '@jridgewell/gen-mapping@0.3.12': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -10785,8 +11299,8 @@ snapshots: '@jridgewell/source-map@0.3.6': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.12 + '@jridgewell/trace-mapping': 0.3.29 '@jridgewell/sourcemap-codec@1.5.0': {} @@ -10795,6 +11309,83 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.29': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@lingo.dev/_compiler@0.7.2(@types/node@20.17.57)(jsdom@25.0.1)(lightningcss@1.30.1)(react@18.3.1)(terser@5.36.0)': + dependencies: + '@ai-sdk/google': 1.2.19(zod@3.25.76) + '@ai-sdk/groq': 1.2.9(zod@3.25.76) + '@ai-sdk/mistral': 1.2.8(zod@3.25.76) + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + '@lingo.dev/_sdk': 0.11.0 + '@lingo.dev/_spec': 0.39.3 + '@openrouter/ai-sdk-provider': 0.7.1(ai@4.3.15(react@18.3.1)(zod@3.25.76))(zod@3.25.76) + '@prettier/sync': 0.6.1(prettier@3.6.2) + ai: 4.3.15(react@18.3.1)(zod@3.25.76) + dedent: 1.6.0 + dotenv: 16.4.7 + fast-xml-parser: 5.2.3 + ini: 5.0.0 + lodash: 4.17.21 + node-machine-id: 1.1.12 + object-hash: 3.0.0 + ollama-ai-provider: 1.2.0(zod@3.25.76) + posthog-node: 5.6.0 + prettier: 3.6.2 + unplugin: 2.3.5 + vitest: 2.1.9(@types/node@20.17.57)(jsdom@25.0.1)(lightningcss@1.30.1)(terser@5.36.0) + zod: 3.25.76 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@types/node' + - '@vitest/browser' + - '@vitest/ui' + - babel-plugin-macros + - bufferutil + - canvas + - happy-dom + - jsdom + - less + - lightningcss + - msw + - react + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - utf-8-validate + + '@lingo.dev/_react@0.4.2(next@15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))': + dependencies: + js-cookie: 3.0.5 + lodash: 4.17.21 + next: 15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + + '@lingo.dev/_sdk@0.11.0': + dependencies: + '@lingo.dev/_spec': 0.39.3 + '@paralleldrive/cuid2': 2.2.2 + jsdom: 25.0.1 + zod: 3.25.76 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + '@lingo.dev/_spec@0.39.3': + dependencies: + zod: 3.25.76 + zod-to-json-schema: 3.24.5(zod@3.25.76) + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.24.7 @@ -10908,7 +11499,7 @@ snapshots: proc-log: 3.0.0 promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.3 + semver: 7.7.2 which: 3.0.1 transitivePeerDependencies: - bluebird @@ -10921,7 +11512,7 @@ snapshots: json-parse-even-better-errors: 3.0.2 normalize-package-data: 5.0.0 proc-log: 3.0.0 - semver: 7.6.3 + semver: 7.7.2 transitivePeerDependencies: - bluebird @@ -11161,39 +11752,44 @@ snapshots: make-synchronized: 0.8.0 prettier: 3.4.2 - '@react-router/dev@7.6.1(@react-router/serve@7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0)(tsx@4.20.3)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0))(yaml@2.7.0)': + '@prettier/sync@0.6.1(prettier@3.6.2)': dependencies: - '@babel/core': 7.27.4 - '@babel/generator': 7.27.3 - '@babel/parser': 7.27.4 - '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + make-synchronized: 0.8.0 + prettier: 3.6.2 + + '@react-router/dev@7.7.1(@react-router/serve@7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3))(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0)(tsx@4.20.3)(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0))(yaml@2.7.0)': + dependencies: + '@babel/core': 7.28.0 + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 '@npmcli/package-json': 4.0.1 - '@react-router/node': 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + '@react-router/node': 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) arg: 5.0.2 babel-dead-code-elimination: 1.0.10 - chokidar: 4.0.1 + chokidar: 4.0.3 dedent: 1.6.0 es-module-lexer: 1.6.0 exit-hook: 2.2.1 - fs-extra: 10.1.0 + isbot: 5.1.28 jsesc: 3.0.2 lodash: 4.17.21 pathe: 1.1.2 picocolors: 1.1.1 - prettier: 2.8.8 + prettier: 3.6.2 react-refresh: 0.14.2 - react-router: 7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - semver: 7.6.3 + react-router: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + semver: 7.7.2 set-cookie-parser: 2.7.1 + tinyglobby: 0.2.14 valibot: 0.41.0(typescript@5.8.3) vite: 6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) - vite-node: 3.0.0-beta.2(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) + vite-node: 3.2.4(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) optionalDependencies: - '@react-router/serve': 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + '@react-router/serve': 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) typescript: 5.8.3 transitivePeerDependencies: - '@types/node' @@ -11211,33 +11807,30 @@ snapshots: - tsx - yaml - '@react-router/express@7.6.1(express@4.21.2)(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': + '@react-router/express@7.7.1(express@4.21.2)(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': dependencies: - '@react-router/node': 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + '@react-router/node': 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) express: 4.21.2 - react-router: 7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: typescript: 5.8.3 - '@react-router/node@7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': + '@react-router/node@7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': dependencies: '@mjackson/node-fetch-server': 0.2.0 - react-router: 7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - source-map-support: 0.5.21 - stream-slice: 0.1.2 - undici: 6.21.3 + react-router: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) optionalDependencies: typescript: 5.8.3 - '@react-router/serve@7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': + '@react-router/serve@7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3)': dependencies: - '@react-router/express': 7.6.1(express@4.21.2)(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) - '@react-router/node': 7.6.1(react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + '@react-router/express': 7.7.1(express@4.21.2)(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) + '@react-router/node': 7.7.1(react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(typescript@5.8.3) compression: 1.8.0 express: 4.21.2 get-port: 5.1.1 morgan: 1.10.0 - react-router: 7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + react-router: 7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) source-map-support: 0.5.21 transitivePeerDependencies: - supports-color @@ -11715,8 +12308,8 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.27.4 - '@babel/types': 7.27.3 + '@babel/parser': 7.28.0 + '@babel/types': 7.28.2 '@types/babel__traverse@7.20.7': dependencies: @@ -11985,7 +12578,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.33.1(typescript@5.8.3) '@typescript-eslint/types': 8.33.1 - debug: 4.4.0 + debug: 4.4.1 typescript: 5.8.3 transitivePeerDependencies: - supports-color @@ -12161,6 +12754,14 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 + '@vitest/mocker@2.1.9(vite@5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0))': + dependencies: + '@vitest/spy': 2.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + vite: 5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0) + '@vitest/mocker@2.1.9(vite@5.4.10(@types/node@24.0.12))': dependencies: '@vitest/spy': 2.1.9 @@ -12245,7 +12846,7 @@ snapshots: '@vue/compiler-core@3.5.11': dependencies: - '@babel/parser': 7.27.4 + '@babel/parser': 7.28.0 '@vue/shared': 3.5.11 entities: 4.5.0 estree-walker: 2.0.2 @@ -12354,7 +12955,7 @@ snapshots: dependencies: '@ai-sdk/provider': 1.1.3 '@ai-sdk/provider-utils': 2.2.8(zod@3.25.76) - '@ai-sdk/react': 1.2.12(react@19.1.0)(zod@3.25.76) + '@ai-sdk/react': 1.2.12(react@18.3.1)(zod@3.25.76) '@ai-sdk/ui-utils': 1.2.11(zod@3.25.76) '@opentelemetry/api': 1.9.0 jsondiffpatch: 0.6.0 @@ -12550,10 +13151,10 @@ snapshots: babel-dead-code-elimination@1.0.10: dependencies: - '@babel/core': 7.27.4 - '@babel/parser': 7.27.4 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/core': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 transitivePeerDependencies: - supports-color @@ -12785,10 +13386,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: - dependencies: - readdirp: 4.0.2 - chokidar@4.0.3: dependencies: readdirp: 4.0.2 @@ -13224,6 +13821,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.1: + dependencies: + ms: 2.1.3 + decamelize@1.2.0: {} decamelize@6.0.0: {} @@ -13497,6 +14098,8 @@ snapshots: es-module-lexer@1.6.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -14048,6 +14651,8 @@ snapshots: figlet@1.8.0: {} + figlet@1.8.2: {} + figures@6.1.0: dependencies: is-unicode-supported: 2.1.0 @@ -14474,6 +15079,12 @@ snapshots: ink: 4.4.1(@types/react@18.3.20)(react@18.3.1) react: 18.3.1 + ink-spinner@5.0.0(ink@4.4.1(@types/react@19.1.6)(react@19.1.0))(react@18.3.1): + dependencies: + cli-spinners: 2.9.2 + ink: 4.4.1(@types/react@19.1.6)(react@18.3.1) + react: 18.3.1 + ink@4.4.1(@types/react@18.3.20)(react@18.3.1): dependencies: '@alcalzone/ansi-tokenize': 0.1.3 @@ -14508,6 +15119,40 @@ snapshots: - bufferutil - utf-8-validate + ink@4.4.1(@types/react@19.1.6)(react@18.3.1): + dependencies: + '@alcalzone/ansi-tokenize': 0.1.3 + ansi-escapes: 6.2.1 + auto-bind: 5.0.1 + chalk: 5.4.1 + cli-boxes: 3.0.0 + cli-cursor: 4.0.0 + cli-truncate: 3.1.0 + code-excerpt: 4.0.0 + indent-string: 5.0.0 + is-ci: 3.0.1 + is-lower-case: 2.0.2 + is-upper-case: 2.0.2 + lodash: 4.17.21 + patch-console: 2.0.0 + react: 18.3.1 + react-reconciler: 0.29.2(react@18.3.1) + scheduler: 0.23.2 + signal-exit: 3.0.7 + slice-ansi: 6.0.0 + stack-utils: 2.0.6 + string-width: 5.1.2 + type-fest: 0.12.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + ws: 8.18.0 + yoga-wasm-web: 0.3.3 + optionalDependencies: + '@types/react': 19.1.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + inquirer@12.0.0(@types/node@24.0.12): dependencies: '@inquirer/core': 10.1.2(@types/node@24.0.12) @@ -14531,6 +15176,18 @@ snapshots: run-async: 3.0.0 rxjs: 7.8.2 + inquirer@12.6.0(@types/node@20.17.57): + dependencies: + '@inquirer/core': 10.1.10(@types/node@20.17.57) + '@inquirer/prompts': 7.5.0(@types/node@20.17.57) + '@inquirer/type': 3.0.6(@types/node@20.17.57) + ansi-escapes: 4.3.2 + mute-stream: 2.0.0 + run-async: 3.0.0 + rxjs: 7.8.2 + optionalDependencies: + '@types/node': 20.17.57 + inquirer@12.6.0(@types/node@22.10.2): dependencies: '@inquirer/core': 10.1.10(@types/node@22.10.2) @@ -14543,6 +15200,14 @@ snapshots: optionalDependencies: '@types/node': 22.10.2 + interactive-commander@0.5.194(@types/node@20.17.57): + dependencies: + '@inquirer/prompts': 7.4.1(@types/node@20.17.57) + commander: 12.1.0 + parse-my-command: 0.3.31 + transitivePeerDependencies: + - '@types/node' + interactive-commander@0.5.194(@types/node@22.10.2): dependencies: '@inquirer/prompts': 7.4.1(@types/node@22.10.2) @@ -14997,6 +15662,121 @@ snapshots: lines-and-columns@1.2.4: {} + lingo.dev@0.108.0(@types/node@20.17.57)(@types/react@19.1.6)(encoding@0.1.13)(lightningcss@1.30.1)(next@15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(terser@5.36.0): + dependencies: + '@ai-sdk/anthropic': 1.2.11(zod@3.25.76) + '@ai-sdk/google': 1.2.19(zod@3.25.76) + '@ai-sdk/mistral': 1.2.8(zod@3.25.76) + '@ai-sdk/openai': 1.3.22(zod@3.25.76) + '@babel/generator': 7.28.0 + '@babel/parser': 7.28.0 + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.2 + '@datocms/cma-client-node': 4.0.1 + '@gitbeaker/rest': 39.34.3 + '@inkjs/ui': 2.0.0(ink@4.4.1(@types/react@19.1.6)(react@19.1.0)) + '@inquirer/prompts': 7.7.1(@types/node@20.17.57) + '@lingo.dev/_compiler': 0.7.2(@types/node@20.17.57)(jsdom@25.0.1)(lightningcss@1.30.1)(react@18.3.1)(terser@5.36.0) + '@lingo.dev/_react': 0.4.2(next@15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)) + '@lingo.dev/_sdk': 0.11.0 + '@lingo.dev/_spec': 0.39.3 + '@modelcontextprotocol/sdk': 1.5.0 + '@openrouter/ai-sdk-provider': 0.7.1(ai@4.3.15(react@18.3.1)(zod@3.25.76))(zod@3.25.76) + '@paralleldrive/cuid2': 2.2.2 + '@types/ejs': 3.1.5 + ai: 4.3.15(react@18.3.1)(zod@3.25.76) + bitbucket: 2.12.0(encoding@0.1.13) + chalk: 5.4.1 + chokidar: 4.0.3 + cli-progress: 3.12.0 + cli-table3: 0.6.5 + cors: 2.8.5 + csv-parse: 5.6.0 + csv-stringify: 6.5.2 + date-fns: 4.1.0 + dedent: 1.6.0 + diff: 7.0.0 + dotenv: 16.4.7 + ejs: 3.1.10 + express: 5.1.0 + external-editor: 3.1.0 + figlet: 1.8.2 + flat: 6.0.1 + gettext-parser: 8.0.0 + glob: 10.4.5 + gradient-string: 3.0.0 + gray-matter: 4.0.3 + ini: 5.0.0 + ink: 4.4.1(@types/react@19.1.6)(react@18.3.1) + ink-progress-bar: 3.0.0 + ink-spinner: 5.0.0(ink@4.4.1(@types/react@19.1.6)(react@19.1.0))(react@18.3.1) + inquirer: 12.6.0(@types/node@20.17.57) + interactive-commander: 0.5.194(@types/node@20.17.57) + is-url: 1.2.4 + jsdom: 25.0.1 + json5: 2.2.3 + jsonrepair: 3.11.2 + listr2: 8.3.2 + lodash: 4.17.21 + marked: 15.0.6 + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm: 3.1.0 + micromark-extension-gfm: 3.0.0 + node-machine-id: 1.1.12 + node-webvtt: 1.9.4 + object-hash: 3.0.0 + octokit: 4.1.2 + ollama-ai-provider: 1.2.0(zod@3.25.76) + open: 10.1.2 + ora: 8.1.1 + p-limit: 6.2.0 + php-array-reader: 2.1.2 + plist: 3.1.0 + posthog-node: 5.6.0 + prettier: 3.6.2 + react: 18.3.1 + rehype-stringify: 10.0.1 + remark-disable-tokenizers: 1.1.1 + remark-frontmatter: 5.0.0 + remark-gfm: 4.0.1 + remark-mdx: 3.1.0 + remark-mdx-frontmatter: 5.1.0 + remark-parse: 11.0.0 + remark-rehype: 11.1.2 + remark-stringify: 11.0.0 + srt-parser-2: 1.2.3 + unified: 11.0.5 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + xliff: 6.2.1 + xml2js: 0.6.2 + xpath: 0.0.34 + yaml: 2.7.0 + zod: 3.25.76 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@types/node' + - '@types/react' + - '@vitest/browser' + - '@vitest/ui' + - babel-plugin-macros + - bufferutil + - canvas + - encoding + - happy-dom + - less + - lightningcss + - msw + - next + - react-devtools-core + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - utf-8-validate + lingo.dev@0.70.3(@types/node@24.0.12): dependencies: '@datocms/cma-client-node': 3.4.0 @@ -15037,7 +15817,7 @@ snapshots: slugify: 1.6.6 srt-parser-2: 1.2.3 typescript: 5.8.3 - vitest: 2.1.9(@types/node@24.0.12)(jsdom@25.0.1)(lightningcss@1.30.1)(terser@5.36.0) + vitest: 2.1.9(@types/node@24.0.12)(jsdom@25.0.1) xliff: 6.2.1 xml2js: 0.6.2 xmldom: 0.6.0 @@ -15811,6 +16591,32 @@ snapshots: - '@babel/core' - babel-plugin-macros + next@15.3.1(@babel/core@7.28.0)(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + dependencies: + '@next/env': 15.3.1 + '@swc/counter': 0.1.3 + '@swc/helpers': 0.5.15 + busboy: 1.6.0 + caniuse-lite: 1.0.30001695 + 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.28.0)(react@19.1.0) + optionalDependencies: + '@next/swc-darwin-arm64': 15.3.1 + '@next/swc-darwin-x64': 15.3.1 + '@next/swc-linux-arm64-gnu': 15.3.1 + '@next/swc-linux-arm64-musl': 15.3.1 + '@next/swc-linux-x64-gnu': 15.3.1 + '@next/swc-linux-x64-musl': 15.3.1 + '@next/swc-win32-arm64-msvc': 15.3.1 + '@next/swc-win32-x64-msvc': 15.3.1 + '@opentelemetry/api': 1.9.0 + sharp: 0.34.2 + transitivePeerDependencies: + - '@babel/core' + - babel-plugin-macros + next@15.3.1(@opentelemetry/api@1.9.0)(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: '@next/env': 15.3.1 @@ -15857,7 +16663,7 @@ snapshots: dependencies: hosted-git-info: 6.1.3 is-core-module: 2.15.1 - semver: 7.6.3 + semver: 7.7.2 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -16598,12 +17404,16 @@ snapshots: transitivePeerDependencies: - debug + posthog-node@5.6.0: {} + prelude-ls@1.2.1: {} prettier@2.8.8: {} prettier@3.4.2: {} + prettier@3.6.2: {} + pretty-bytes@6.1.1: {} pretty-format@27.5.1: @@ -16709,7 +17519,7 @@ snapshots: react-refresh@0.17.0: {} - react-router@7.6.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): + react-router@7.7.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0): dependencies: cookie: 1.0.2 react: 19.1.0 @@ -17157,7 +17967,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.6.3 + semver: 7.7.2 optionalDependencies: '@img/sharp-darwin-arm64': 0.33.5 '@img/sharp-darwin-x64': 0.33.5 @@ -17344,8 +18154,6 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - stream-slice@0.1.2: {} - streamsearch@1.1.0: {} strict-uri-encode@2.0.0: {} @@ -17462,6 +18270,13 @@ snapshots: optionalDependencies: '@babel/core': 7.27.4 + styled-jsx@5.1.6(@babel/core@7.28.0)(react@19.1.0): + dependencies: + client-only: 0.0.1 + react: 19.1.0 + optionalDependencies: + '@babel/core': 7.28.0 + stylehacks@5.1.1(postcss@8.5.1): dependencies: browserslist: 4.24.2 @@ -17516,12 +18331,6 @@ snapshots: react: 18.3.1 use-sync-external-store: 1.5.0(react@18.3.1) - swr@2.3.3(react@19.1.0): - dependencies: - dequal: 2.0.3 - react: 19.1.0 - use-sync-external-store: 1.5.0(react@19.1.0) - symbol-tree@3.2.4: {} tailwindcss@4.1.8: {} @@ -17582,6 +18391,11 @@ snapshots: fdir: 6.4.4(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.14: + dependencies: + fdir: 6.4.4(picomatch@4.0.2) + picomatch: 4.0.2 + tinygradient@1.1.5: dependencies: '@types/tinycolor2': 1.4.6 @@ -17871,8 +18685,6 @@ snapshots: undici-types@7.8.0: {} - undici@6.21.3: {} - unhead@1.11.14: dependencies: '@unhead/dom': 1.11.14 @@ -17999,10 +18811,6 @@ snapshots: dependencies: react: 18.3.1 - use-sync-external-store@1.5.0(react@19.1.0): - dependencies: - react: 19.1.0 - util-deprecate@1.0.2: {} utils-merge@1.0.1: {} @@ -18032,13 +18840,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@2.1.9(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0): + vite-node@2.1.9(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 5.4.10(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -18050,16 +18858,15 @@ snapshots: - supports-color - terser - vite-node@3.0.0-beta.2(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0): + vite-node@2.1.9(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 1.1.2 - vite: 6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) + vite: 5.4.10(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - - jiti - less - lightningcss - sass @@ -18068,8 +18875,6 @@ snapshots: - sugarss - supports-color - terser - - tsx - - yaml vite-node@3.1.2(@types/node@22.10.2)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0): dependencies: @@ -18134,6 +18939,27 @@ snapshots: - tsx - yaml + vite-node@3.2.4(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@6.3.5(@types/node@20.17.57)(jiti@2.4.2)(lightningcss@1.30.1)(terser@5.36.0)(tsx@4.20.3)(yaml@2.7.0)): dependencies: debug: 4.4.0 @@ -18156,6 +18982,17 @@ snapshots: lightningcss: 1.30.1 terser: 5.36.0 + vite@5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.1 + rollup: 4.24.3 + optionalDependencies: + '@types/node': 20.17.57 + fsevents: 2.3.3 + lightningcss: 1.30.1 + terser: 5.36.0 + vite@5.4.10(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0): dependencies: esbuild: 0.21.5 @@ -18235,6 +19072,78 @@ snapshots: tsx: 4.20.3 yaml: 2.7.0 + vitest@2.1.9(@types/node@20.17.57)(jsdom@25.0.1)(lightningcss@1.30.1)(terser@5.36.0): + dependencies: + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.1.2 + debug: 4.3.7 + expect-type: 1.1.0 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0) + vite-node: 2.1.9(@types/node@20.17.57)(lightningcss@1.30.1)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.17.57 + jsdom: 25.0.1 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.9(@types/node@24.0.12)(jsdom@25.0.1): + dependencies: + '@vitest/expect': 2.1.9 + '@vitest/mocker': 2.1.9(vite@5.4.10(@types/node@24.0.12)) + '@vitest/pretty-format': 2.1.9 + '@vitest/runner': 2.1.9 + '@vitest/snapshot': 2.1.9 + '@vitest/spy': 2.1.9 + '@vitest/utils': 2.1.9 + chai: 5.1.2 + debug: 4.3.7 + expect-type: 1.1.0 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.8.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0) + vite-node: 2.1.9(@types/node@24.0.12)(lightningcss@1.30.1)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.0.12 + jsdom: 25.0.1 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + vitest@2.1.9(@types/node@24.0.12)(jsdom@25.0.1)(lightningcss@1.30.1)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.9