diff --git a/.gitignore b/.gitignore
index 71793887a..1f443e8e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,7 +23,7 @@ storybook-static/
*.tsbuildinfo
# Compiled locale files (generated by lingui compile)
-**/locales/*.js
+**/locales/*.ts
# Playwright MCP
.playwright-mcp
diff --git a/packages/apollo-react/lingui.config.ts b/packages/apollo-react/lingui.config.ts
index 7ca308c33..c1b9e7b29 100644
--- a/packages/apollo-react/lingui.config.ts
+++ b/packages/apollo-react/lingui.config.ts
@@ -13,8 +13,13 @@ const config: LinguiConfig = {
path: 'src/material/components/ap-tool-call/locales/{locale}',
include: ['src/material/components/ap-tool-call'],
},
+ {
+ path: 'src/canvas/locales/{locale}',
+ include: ['src/canvas'],
+ },
],
format: formatter({ style: 'minimal' }),
+ compileNamespace: 'ts',
};
export default config;
diff --git a/packages/apollo-react/rslib.config.ts b/packages/apollo-react/rslib.config.ts
index 37078ee10..b3dc61222 100644
--- a/packages/apollo-react/rslib.config.ts
+++ b/packages/apollo-react/rslib.config.ts
@@ -3,8 +3,6 @@ import { pluginReact } from '@rsbuild/plugin-react';
import type { RslibConfig } from '@rslib/core';
import { defineConfig } from '@rslib/core';
-import { pluginCopyLocales } from './scripts/plugin-copy-locales';
-
// Shared externals list to avoid duplication
const externals = [
'react',
@@ -60,7 +58,6 @@ export default defineConfig({
'!./src/test/**',
'!./src/icons/.cache',
'!./src/**/*.md',
- '!./src/**/locales/*.js',
'!./src/**/locales/*.json',
'!./src/**/.DS_Store',
],
@@ -79,7 +76,6 @@ export default defineConfig({
return opts;
},
}),
- pluginCopyLocales(),
],
output: {
target: 'web',
diff --git a/packages/apollo-react/scripts/plugin-copy-locales.ts b/packages/apollo-react/scripts/plugin-copy-locales.ts
deleted file mode 100644
index 43931f81b..000000000
--- a/packages/apollo-react/scripts/plugin-copy-locales.ts
+++ /dev/null
@@ -1,84 +0,0 @@
-import {
- existsSync,
- mkdirSync,
- readFileSync,
- readdirSync,
- statSync,
- writeFileSync,
-} from 'fs';
-import {
- dirname,
- join,
-} from 'path';
-import { fileURLToPath } from 'url';
-
-const __dirname = dirname(fileURLToPath(import.meta.url));
-const packageRoot = dirname(__dirname);
-
-/**
- * Convert CommonJS locale module to ESM format
- * From: module.exports={messages:JSON.parse("{...}")};
- * To: export default {messages:JSON.parse("{...}")};
- */
-function convertToESM(content: string): string {
- return content.replace(/module\.exports\s*=\s*/, 'export default ');
-}
-
-export function pluginCopyLocales() {
- return {
- name: 'plugin-copy-locales',
- setup(api) {
- api.onAfterBuild(() => {
- const srcDir = join(packageRoot, 'src');
- const distDir = join(packageRoot, 'dist');
-
- function findAndCopyLocales(dir: string, basePath = '') {
- for (const entry of readdirSync(dir)) {
- const fullPath = join(dir, entry);
- const relativePath = join(basePath, entry);
-
- if (entry === 'locales') {
- const srcLocales = fullPath;
- const distLocales = join(distDir, relativePath);
-
- if (existsSync(srcLocales)) {
- // Ensure dist directory exists
- mkdirSync(distLocales, { recursive: true });
-
- // Process each locale file
- const files = readdirSync(srcLocales);
- for (const file of files) {
- if (file.endsWith('.js')) {
- const srcFile = join(srcLocales, file);
- const content = readFileSync(srcFile, 'utf-8');
-
- // Write .cjs (CommonJS format)
- const cjsFile = join(distLocales, file.replace('.js', '.cjs'));
- writeFileSync(cjsFile, content, 'utf-8');
-
- // Write .js (ESM format)
- const esmFile = join(distLocales, file);
- const esmContent = convertToESM(content);
- writeFileSync(esmFile, esmContent, 'utf-8');
- } else if (file.endsWith('.json')) {
- // Copy JSON files as-is
- const srcFile = join(srcLocales, file);
- const destFile = join(distLocales, file);
- const content = readFileSync(srcFile, 'utf-8');
- writeFileSync(destFile, content, 'utf-8');
- }
- }
-
- console.log(`✓ Copied locales: ${relativePath}`);
- }
- } else if (statSync(fullPath).isDirectory()) {
- findAndCopyLocales(fullPath, relativePath);
- }
- }
- }
-
- findAndCopyLocales(srcDir);
- });
- },
- };
-}
diff --git a/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.test.tsx b/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.test.tsx
index a5b5f637f..81570a973 100644
--- a/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.test.tsx
+++ b/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.test.tsx
@@ -1,5 +1,7 @@
+import { i18n } from '@lingui/core';
import { fireEvent, render, screen } from '@testing-library/react';
import { describe, expect, it, vi } from 'vitest';
+import { ApI18nProvider, type SupportedLocale } from '../../../i18n';
import { FormattingToolbar } from './FormattingToolbar';
import type { ActiveFormats } from './markdown-formatting';
@@ -21,12 +23,20 @@ function createMockTextArea(value = '', selectionStart = 0, selectionEnd = 0) {
return { current: textarea };
}
+function renderWithI18n(ui: React.ReactElement, locale: SupportedLocale = 'en') {
+ return render(
+
+ {ui}
+
+ );
+}
+
describe('FormattingToolbar', () => {
it('calls onFormat when a button is clicked', () => {
const onFormat = vi.fn();
const ref = createMockTextArea('hello world', 6, 11);
- render(
+ renderWithI18n(
{
const onFormat = vi.fn();
const ref = { current: null } as React.RefObject;
- render(
+ renderWithI18n(
{
expect(onFormat).not.toHaveBeenCalled();
});
+ it('exposes the container as an accessible toolbar', () => {
+ const ref = { current: null } as React.RefObject;
+ renderWithI18n(
+
+ );
+
+ expect(screen.getByRole('toolbar', { name: /Text formatting/i })).toBeTruthy();
+ });
+
+ it('exposes an accessible name on every toolbar button', () => {
+ const ref = { current: null } as React.RefObject;
+ renderWithI18n(
+
+ );
+
+ // All five icon-only buttons must resolve via accessible name so screen
+ // readers announce them. Shortcut text comes from ICU interpolation — if
+ // that breaks, these queries surface the regression.
+ expect(screen.getByRole('button', { name: /^Bold \(.+\+B\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Italic \(.+\+I\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Strikethrough \(.+X\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Bullet list$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Numbered list$/ })).toBeTruthy();
+ });
+
+ it('renders translated labels when a non-English locale is active', () => {
+ const ref = { current: null } as React.RefObject;
+
+ // Load a fake Spanish catalog with translations for the toolbar keys
+ i18n.load('es', {
+ 'sticky-note.formatting.bold': ['Negrita (', ['boldShortcut'], ')'],
+ 'sticky-note.formatting.italic': ['Cursiva (', ['italicShortcut'], ')'],
+ 'sticky-note.formatting.strikethrough': ['Tachado (', ['strikethroughShortcut'], ')'],
+ 'sticky-note.formatting.bullet-list': ['Lista con viñetas'],
+ 'sticky-note.formatting.numbered-list': ['Lista numerada'],
+ 'sticky-note.formatting.toolbar': ['Formato de texto'],
+ });
+
+ renderWithI18n(
+ ,
+ 'es'
+ );
+
+ expect(screen.getByRole('toolbar', { name: 'Formato de texto' })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Negrita \(.+\+B\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Cursiva \(.+\+I\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Tachado \(.+X\)$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Lista con viñetas$/ })).toBeTruthy();
+ expect(screen.getByRole('button', { name: /^Lista numerada$/ })).toBeTruthy();
+ });
+
it('prevents textarea blur on mousedown', () => {
const ref = { current: null } as React.RefObject;
- const { container } = render(
+ const { container } = renderWithI18n(
{
/>
);
- const toolbarContainer = container.firstChild as HTMLElement;
+ const toolbarContainer = container.querySelector('[class]') as HTMLElement;
const mouseDownEvent = new MouseEvent('mousedown', { bubbles: true, cancelable: true });
const prevented = !toolbarContainer.dispatchEvent(mouseDownEvent);
expect(prevented).toBe(true);
diff --git a/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.tsx b/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.tsx
index 1e5e34759..0be2f0616 100644
--- a/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.tsx
+++ b/packages/apollo-react/src/canvas/components/StickyNoteNode/FormattingToolbar.tsx
@@ -1,3 +1,4 @@
+import { useLingui } from '@lingui/react';
import { CanvasIcon } from '@uipath/apollo-react/canvas';
import { memo, type RefObject, useCallback } from 'react';
import { CanvasTooltip } from '../CanvasTooltip';
@@ -30,6 +31,10 @@ const FormattingToolbarComponent = ({
activeFormats,
onFormat,
}: FormattingToolbarProps) => {
+ const { _ } = useLingui();
+ const mod = getModifierKey();
+ const shift = isMac() ? '⇧' : '+Shift+';
+
const applyFormat = useCallback(
(formatFn: (input: TextSelection) => TextSelection) => {
const textarea = textAreaRef.current;
@@ -53,40 +58,84 @@ const FormattingToolbarComponent = ({
const handleBulletList = useCallback(() => applyFormat(toggleBulletList), [applyFormat]);
const handleNumberedList = useCallback(() => applyFormat(toggleNumberedList), [applyFormat]);
- const mod = getModifierKey();
- const shift = isMac() ? '⇧' : '+Shift+';
+ // Hoisted so each label is used for both the tooltip text AND the button's
+ // aria-label — icon-only buttons otherwise have no accessible name.
+ // Values go inside the descriptor (Lingui v5 `_(descriptor)` overload does not
+ // take a separate values arg).
+ const boldLabel = _({
+ id: 'sticky-note.formatting.bold',
+ message: 'Bold ({boldShortcut})',
+ values: { boldShortcut: `${mod}+B` },
+ });
+ const italicLabel = _({
+ id: 'sticky-note.formatting.italic',
+ message: 'Italic ({italicShortcut})',
+ values: { italicShortcut: `${mod}+I` },
+ });
+ const strikethroughLabel = _({
+ id: 'sticky-note.formatting.strikethrough',
+ message: 'Strikethrough ({strikethroughShortcut})',
+ values: { strikethroughShortcut: `${mod}${shift}X` },
+ });
+ const bulletListLabel = _({
+ id: 'sticky-note.formatting.bullet-list',
+ message: 'Bullet list',
+ });
+ const numberedListLabel = _({
+ id: 'sticky-note.formatting.numbered-list',
+ message: 'Numbered list',
+ });
+ const toolbarLabel = _({ id: 'sticky-note.formatting.toolbar', message: 'Text formatting' });
return (
e.preventDefault()}
className="nodrag nowheel"
>
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
diff --git a/packages/apollo-react/src/canvas/components/StickyNoteNode/StickyNoteNode.tsx b/packages/apollo-react/src/canvas/components/StickyNoteNode/StickyNoteNode.tsx
index b50eaa81b..3b8424164 100644
--- a/packages/apollo-react/src/canvas/components/StickyNoteNode/StickyNoteNode.tsx
+++ b/packages/apollo-react/src/canvas/components/StickyNoteNode/StickyNoteNode.tsx
@@ -5,6 +5,7 @@ import { NodeResizeControl, useReactFlow } from '@uipath/apollo-react/canvas/xyf
import type { ResizeDragEvent, ResizeParams } from '@uipath/apollo-react/canvas/xyflow/system';
import { AnimatePresence } from 'motion/react';
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import { ApI18nProvider } from '../../../i18n';
import ReactMarkdown from 'react-markdown';
import remarkBreaks from 'remark-breaks';
import remarkGfm from 'remark-gfm';
@@ -348,7 +349,7 @@ const StickyNoteNodeComponent = ({
{isEditing ? (
- <>
+
- >
+
) : (
{localContent ? (
diff --git a/packages/apollo-react/src/canvas/locales/de.json b/packages/apollo-react/src/canvas/locales/de.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/de.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/en.json b/packages/apollo-react/src/canvas/locales/en.json
new file mode 100644
index 000000000..37f336024
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/en.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "Bold ({boldShortcut})",
+ "sticky-note.formatting.italic": "Italic ({italicShortcut})",
+ "sticky-note.formatting.strikethrough": "Strikethrough ({strikethroughShortcut})",
+ "sticky-note.formatting.bullet-list": "Bullet list",
+ "sticky-note.formatting.numbered-list": "Numbered list",
+ "sticky-note.formatting.toolbar": "Text formatting"
+}
diff --git a/packages/apollo-react/src/canvas/locales/es-MX.json b/packages/apollo-react/src/canvas/locales/es-MX.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/es-MX.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/es.json b/packages/apollo-react/src/canvas/locales/es.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/es.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/fr.json b/packages/apollo-react/src/canvas/locales/fr.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/fr.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/ja.json b/packages/apollo-react/src/canvas/locales/ja.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/ja.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/ko.json b/packages/apollo-react/src/canvas/locales/ko.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/ko.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/pt-BR.json b/packages/apollo-react/src/canvas/locales/pt-BR.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/pt-BR.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/pt.json b/packages/apollo-react/src/canvas/locales/pt.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/pt.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/ru.json b/packages/apollo-react/src/canvas/locales/ru.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/ru.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/tr.json b/packages/apollo-react/src/canvas/locales/tr.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/tr.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/zh-CN.json b/packages/apollo-react/src/canvas/locales/zh-CN.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/zh-CN.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/canvas/locales/zh-TW.json b/packages/apollo-react/src/canvas/locales/zh-TW.json
new file mode 100644
index 000000000..378816c94
--- /dev/null
+++ b/packages/apollo-react/src/canvas/locales/zh-TW.json
@@ -0,0 +1,8 @@
+{
+ "sticky-note.formatting.bold": "",
+ "sticky-note.formatting.italic": "",
+ "sticky-note.formatting.strikethrough": "",
+ "sticky-note.formatting.bullet-list": "",
+ "sticky-note.formatting.numbered-list": "",
+ "sticky-note.formatting.toolbar": ""
+}
diff --git a/packages/apollo-react/src/i18n/locale-registry.ts b/packages/apollo-react/src/i18n/locale-registry.ts
index 1203df265..8a7c98899 100644
--- a/packages/apollo-react/src/i18n/locale-registry.ts
+++ b/packages/apollo-react/src/i18n/locale-registry.ts
@@ -3,110 +3,99 @@
* All locales are statically imported at build time for better performance
*/
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatDe from '../material/components/ap-chat/locales/de.js';
+// Pre-import all locales for canvas component
+import { messages as canvasDe } from '../canvas/locales/de';
+import { messages as canvasEn } from '../canvas/locales/en';
+import { messages as canvasEs } from '../canvas/locales/es';
+import { messages as canvasEsMX } from '../canvas/locales/es-MX';
+import { messages as canvasFr } from '../canvas/locales/fr';
+import { messages as canvasJa } from '../canvas/locales/ja';
+import { messages as canvasKo } from '../canvas/locales/ko';
+import { messages as canvasPt } from '../canvas/locales/pt';
+import { messages as canvasPtBR } from '../canvas/locales/pt-BR';
+import { messages as canvasRu } from '../canvas/locales/ru';
+import { messages as canvasTr } from '../canvas/locales/tr';
+import { messages as canvasZhCN } from '../canvas/locales/zh-CN';
+import { messages as canvasZhTW } from '../canvas/locales/zh-TW';
// Pre-import all locales for ap-chat component
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatEn from '../material/components/ap-chat/locales/en.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatEs from '../material/components/ap-chat/locales/es.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatEsMX from '../material/components/ap-chat/locales/es-MX.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatFr from '../material/components/ap-chat/locales/fr.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatJa from '../material/components/ap-chat/locales/ja.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatKo from '../material/components/ap-chat/locales/ko.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatPt from '../material/components/ap-chat/locales/pt.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatPtBR from '../material/components/ap-chat/locales/pt-BR.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatRu from '../material/components/ap-chat/locales/ru.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatTr from '../material/components/ap-chat/locales/tr.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatZhCN from '../material/components/ap-chat/locales/zh-CN.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apChatZhTW from '../material/components/ap-chat/locales/zh-TW.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallDe from '../material/components/ap-tool-call/locales/de.js';
+import { messages as apChatDe } from '../material/components/ap-chat/locales/de';
+import { messages as apChatEn } from '../material/components/ap-chat/locales/en';
+import { messages as apChatEs } from '../material/components/ap-chat/locales/es';
+import { messages as apChatEsMX } from '../material/components/ap-chat/locales/es-MX';
+import { messages as apChatFr } from '../material/components/ap-chat/locales/fr';
+import { messages as apChatJa } from '../material/components/ap-chat/locales/ja';
+import { messages as apChatKo } from '../material/components/ap-chat/locales/ko';
+import { messages as apChatPt } from '../material/components/ap-chat/locales/pt';
+import { messages as apChatPtBR } from '../material/components/ap-chat/locales/pt-BR';
+import { messages as apChatRu } from '../material/components/ap-chat/locales/ru';
+import { messages as apChatTr } from '../material/components/ap-chat/locales/tr';
+import { messages as apChatZhCN } from '../material/components/ap-chat/locales/zh-CN';
+import { messages as apChatZhTW } from '../material/components/ap-chat/locales/zh-TW';
// Pre-import all locales for ap-tool-call component
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallEn from '../material/components/ap-tool-call/locales/en.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallEs from '../material/components/ap-tool-call/locales/es.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallEsMX from '../material/components/ap-tool-call/locales/es-MX.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallFr from '../material/components/ap-tool-call/locales/fr.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallJa from '../material/components/ap-tool-call/locales/ja.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallKo from '../material/components/ap-tool-call/locales/ko.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallPt from '../material/components/ap-tool-call/locales/pt.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallPtBR from '../material/components/ap-tool-call/locales/pt-BR.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallRu from '../material/components/ap-tool-call/locales/ru.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallTr from '../material/components/ap-tool-call/locales/tr.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallZhCN from '../material/components/ap-tool-call/locales/zh-CN.js';
-// @ts-expect-error - CommonJS modules without type definitions
-import apToolCallZhTW from '../material/components/ap-tool-call/locales/zh-TW.js';
+import { messages as apToolCallDe } from '../material/components/ap-tool-call/locales/de';
+import { messages as apToolCallEn } from '../material/components/ap-tool-call/locales/en';
+import { messages as apToolCallEs } from '../material/components/ap-tool-call/locales/es';
+import { messages as apToolCallEsMX } from '../material/components/ap-tool-call/locales/es-MX';
+import { messages as apToolCallFr } from '../material/components/ap-tool-call/locales/fr';
+import { messages as apToolCallJa } from '../material/components/ap-tool-call/locales/ja';
+import { messages as apToolCallKo } from '../material/components/ap-tool-call/locales/ko';
+import { messages as apToolCallPt } from '../material/components/ap-tool-call/locales/pt';
+import { messages as apToolCallPtBR } from '../material/components/ap-tool-call/locales/pt-BR';
+import { messages as apToolCallRu } from '../material/components/ap-tool-call/locales/ru';
+import { messages as apToolCallTr } from '../material/components/ap-tool-call/locales/tr';
+import { messages as apToolCallZhCN } from '../material/components/ap-tool-call/locales/zh-CN';
+import { messages as apToolCallZhTW } from '../material/components/ap-tool-call/locales/zh-TW';
+import type { Messages } from '@lingui/core';
import type { SupportedLocale } from './ApI18nProvider';
-type LocaleMessages = Record;
-
-/**
- * Extract messages from compiled Lingui locale module
- * Lingui compiles to: module.exports={messages:JSON.parse("{...}")};
- */
-function extractMessages(localeModule: unknown): LocaleMessages {
- if (typeof localeModule === 'object' && localeModule !== null && 'messages' in localeModule) {
- return (localeModule as { messages: LocaleMessages }).messages;
- }
- // Fallback for unexpected format
- console.warn('Unexpected locale module format:', localeModule);
- return {};
-}
-
/**
* Registry mapping component paths to their pre-imported locale messages
*/
-const localeRegistry: Record> = {
+const localeRegistry: Record> = {
'material/components/ap-chat': {
- en: extractMessages(apChatEn),
- es: extractMessages(apChatEs),
- pt: extractMessages(apChatPt),
- de: extractMessages(apChatDe),
- fr: extractMessages(apChatFr),
- ja: extractMessages(apChatJa),
- ko: extractMessages(apChatKo),
- ru: extractMessages(apChatRu),
- tr: extractMessages(apChatTr),
- 'zh-CN': extractMessages(apChatZhCN),
- 'zh-TW': extractMessages(apChatZhTW),
- 'pt-BR': extractMessages(apChatPtBR),
- 'es-MX': extractMessages(apChatEsMX),
+ en: apChatEn,
+ es: apChatEs,
+ pt: apChatPt,
+ de: apChatDe,
+ fr: apChatFr,
+ ja: apChatJa,
+ ko: apChatKo,
+ ru: apChatRu,
+ tr: apChatTr,
+ 'zh-CN': apChatZhCN,
+ 'zh-TW': apChatZhTW,
+ 'pt-BR': apChatPtBR,
+ 'es-MX': apChatEsMX,
},
'material/components/ap-tool-call': {
- en: extractMessages(apToolCallEn),
- es: extractMessages(apToolCallEs),
- pt: extractMessages(apToolCallPt),
- de: extractMessages(apToolCallDe),
- fr: extractMessages(apToolCallFr),
- ja: extractMessages(apToolCallJa),
- ko: extractMessages(apToolCallKo),
- ru: extractMessages(apToolCallRu),
- tr: extractMessages(apToolCallTr),
- 'zh-CN': extractMessages(apToolCallZhCN),
- 'zh-TW': extractMessages(apToolCallZhTW),
- 'pt-BR': extractMessages(apToolCallPtBR),
- 'es-MX': extractMessages(apToolCallEsMX),
+ en: apToolCallEn,
+ es: apToolCallEs,
+ pt: apToolCallPt,
+ de: apToolCallDe,
+ fr: apToolCallFr,
+ ja: apToolCallJa,
+ ko: apToolCallKo,
+ ru: apToolCallRu,
+ tr: apToolCallTr,
+ 'zh-CN': apToolCallZhCN,
+ 'zh-TW': apToolCallZhTW,
+ 'pt-BR': apToolCallPtBR,
+ 'es-MX': apToolCallEsMX,
+ },
+ canvas: {
+ en: canvasEn,
+ es: canvasEs,
+ pt: canvasPt,
+ de: canvasDe,
+ fr: canvasFr,
+ ja: canvasJa,
+ ko: canvasKo,
+ ru: canvasRu,
+ tr: canvasTr,
+ 'zh-CN': canvasZhCN,
+ 'zh-TW': canvasZhTW,
+ 'pt-BR': canvasPtBR,
+ 'es-MX': canvasEsMX,
},
};
@@ -117,7 +106,7 @@ const localeRegistry: Record> =
export function getPreImportedMessages(
component: string,
locale: SupportedLocale
-): LocaleMessages | undefined {
+): Messages | undefined {
const componentLocales = localeRegistry[component];
if (!componentLocales) {
return undefined;
@@ -130,6 +119,6 @@ export function getPreImportedMessages(
*/
export function getAllPreImportedLocales(
component: string
-): Record | undefined {
+): Record | undefined {
return localeRegistry[component];
}
diff --git a/packages/apollo-react/vitest.config.ts b/packages/apollo-react/vitest.config.ts
index 23b3d3123..7f0cdf5a9 100644
--- a/packages/apollo-react/vitest.config.ts
+++ b/packages/apollo-react/vitest.config.ts
@@ -1,8 +1,16 @@
import { fileURLToPath } from 'node:url';
+import react from '@vitejs/plugin-react';
import { defineConfig } from 'vitest/config';
export default defineConfig({
+ plugins: [
+ react({
+ babel: {
+ plugins: ['@lingui/babel-plugin-lingui-macro'],
+ },
+ }),
+ ],
test: {
globals: true,
environment: 'happy-dom',
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 06727a7a0..3b86ea20e 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -501,7 +501,7 @@ importers:
version: 10.2.15(@testing-library/dom@10.4.1)(prettier@3.8.1)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
tailwindcss:
specifier: ^4.1.17
- version: 4.2.2
+ version: 4.1.17
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -2222,8 +2222,8 @@ packages:
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
- '@emnapi/runtime@1.7.1':
- resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+ '@emnapi/runtime@1.9.2':
+ resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
@@ -2877,8 +2877,8 @@ packages:
'@iconify/utils@3.1.0':
resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==}
- '@img/colour@1.0.0':
- resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+ '@img/colour@1.1.0':
+ resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==}
engines: {node: '>=18'}
'@img/sharp-darwin-arm64@0.34.5':
@@ -3953,166 +3953,84 @@ packages:
cpu: [x64]
os: [win32]
- '@parcel/watcher-android-arm64@2.5.1':
- resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [android]
-
'@parcel/watcher-android-arm64@2.5.6':
resolution: {integrity: sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [android]
- '@parcel/watcher-darwin-arm64@2.5.1':
- resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [darwin]
-
'@parcel/watcher-darwin-arm64@2.5.6':
resolution: {integrity: sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [darwin]
- '@parcel/watcher-darwin-x64@2.5.1':
- resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [darwin]
-
'@parcel/watcher-darwin-x64@2.5.6':
resolution: {integrity: sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [darwin]
- '@parcel/watcher-freebsd-x64@2.5.1':
- resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [freebsd]
-
'@parcel/watcher-freebsd-x64@2.5.6':
resolution: {integrity: sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [freebsd]
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
-
'@parcel/watcher-linux-arm-glibc@2.5.6':
resolution: {integrity: sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- '@parcel/watcher-linux-arm-musl@2.5.1':
- resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm]
- os: [linux]
-
'@parcel/watcher-linux-arm-musl@2.5.6':
resolution: {integrity: sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==}
engines: {node: '>= 10.0.0'}
cpu: [arm]
os: [linux]
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
-
'@parcel/watcher-linux-arm64-glibc@2.5.6':
resolution: {integrity: sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [linux]
-
'@parcel/watcher-linux-arm64-musl@2.5.6':
resolution: {integrity: sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [linux]
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
-
'@parcel/watcher-linux-x64-glibc@2.5.6':
resolution: {integrity: sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- '@parcel/watcher-linux-x64-musl@2.5.1':
- resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [linux]
-
'@parcel/watcher-linux-x64-musl@2.5.6':
resolution: {integrity: sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [linux]
- '@parcel/watcher-win32-arm64@2.5.1':
- resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
- engines: {node: '>= 10.0.0'}
- cpu: [arm64]
- os: [win32]
-
'@parcel/watcher-win32-arm64@2.5.6':
resolution: {integrity: sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==}
engines: {node: '>= 10.0.0'}
cpu: [arm64]
os: [win32]
- '@parcel/watcher-win32-ia32@2.5.1':
- resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
- engines: {node: '>= 10.0.0'}
- cpu: [ia32]
- os: [win32]
-
'@parcel/watcher-win32-ia32@2.5.6':
resolution: {integrity: sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==}
engines: {node: '>= 10.0.0'}
cpu: [ia32]
os: [win32]
- '@parcel/watcher-win32-x64@2.5.1':
- resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
- engines: {node: '>= 10.0.0'}
- cpu: [x64]
- os: [win32]
-
'@parcel/watcher-win32-x64@2.5.6':
resolution: {integrity: sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==}
engines: {node: '>= 10.0.0'}
cpu: [x64]
os: [win32]
- '@parcel/watcher@2.5.1':
- resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
- engines: {node: '>= 10.0.0'}
-
'@parcel/watcher@2.5.6':
resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
engines: {node: '>= 10.0.0'}
@@ -5307,6 +5225,9 @@ packages:
'@socket.io/component-emitter@3.1.2':
resolution: {integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==}
+ '@standard-schema/spec@1.0.0':
+ resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
@@ -5486,6 +5407,9 @@ packages:
'@swc/helpers@0.5.19':
resolution: {integrity: sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==}
+ '@swc/helpers@0.5.21':
+ resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==}
+
'@tailwindcss/cli@4.1.17':
resolution: {integrity: sha512-jUIxcyUNlCC2aNPnyPEWU/L2/ik3pB4fF3auKGXr8AvN3T3OFESVctFKOBoPZQaZJIeUpPn1uCLp0MRxuek8gg==}
hasBin: true
@@ -6636,8 +6560,8 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
- baseline-browser-mapping@2.10.8:
- resolution: {integrity: sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ==}
+ baseline-browser-mapping@2.10.18:
+ resolution: {integrity: sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -6751,8 +6675,8 @@ packages:
caniuse-lite@1.0.30001756:
resolution: {integrity: sha512-4HnCNKbMLkLdhJz3TToeVWHSnfJvPaq6vu/eRP0Ahub/07n484XHhBF5AJoSGHdVrS8tKFauUQz8Bp9P7LVx7A==}
- caniuse-lite@1.0.30001786:
- resolution: {integrity: sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==}
+ caniuse-lite@1.0.30001787:
+ resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
@@ -7544,11 +7468,6 @@ packages:
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
engines: {node: '>=8'}
- detect-libc@1.0.3:
- resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
- engines: {node: '>=0.10'}
- hasBin: true
-
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
@@ -7567,6 +7486,10 @@ packages:
resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==}
engines: {node: '>=0.3.1'}
+ diff@8.0.4:
+ resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==}
+ engines: {node: '>=0.3.1'}
+
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -7689,10 +7612,6 @@ packages:
resolution: {integrity: sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==}
engines: {node: '>=10.0.0'}
- enhanced-resolve@5.18.3:
- resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
- engines: {node: '>=10.13.0'}
-
enhanced-resolve@5.18.4:
resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
engines: {node: '>=10.13.0'}
@@ -9858,6 +9777,10 @@ packages:
resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
engines: {node: 18 || 20 || >=22}
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
+
minimist@1.2.7:
resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
@@ -11358,6 +11281,11 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
+ resolve@1.22.12:
+ resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
resolve@2.0.0-next.6:
resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
engines: {node: '>= 0.4'}
@@ -13915,7 +13843,7 @@ snapshots:
'@base-ui/utils@0.2.4(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@floating-ui/utils': 0.2.10
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
@@ -14293,7 +14221,7 @@ snapshots:
tslib: 2.8.1
optional: true
- '@emnapi/runtime@1.7.1':
+ '@emnapi/runtime@1.9.2':
dependencies:
tslib: 2.8.1
optional: true
@@ -14306,7 +14234,7 @@ snapshots:
'@emotion/babel-plugin@11.13.5':
dependencies:
'@babel/helper-module-imports': 7.27.1
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@emotion/hash': 0.9.2
'@emotion/memoize': 0.9.0
'@emotion/serialize': 1.3.3
@@ -14639,7 +14567,7 @@ snapshots:
dependencies:
'@eslint/object-schema': 2.1.7
debug: 4.4.3
- minimatch: 10.2.4
+ minimatch: 10.2.5
transitivePeerDependencies:
- supports-color
@@ -14660,7 +14588,7 @@ snapshots:
ignore: 5.3.2
import-fresh: 3.3.1
js-yaml: 4.1.1
- minimatch: 10.2.4
+ minimatch: 10.2.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
@@ -14762,7 +14690,7 @@ snapshots:
'@iconify/types': 2.0.0
mlly: 1.8.0
- '@img/colour@1.0.0':
+ '@img/colour@1.1.0':
optional: true
'@img/sharp-darwin-arm64@0.34.5':
@@ -14847,7 +14775,7 @@ snapshots:
'@img/sharp-wasm32@0.34.5':
dependencies:
- '@emnapi/runtime': 1.7.1
+ '@emnapi/runtime': 1.9.2
optional: true
'@img/sharp-win32-arm64@0.34.5':
@@ -14981,7 +14909,7 @@ snapshots:
'@lingui/babel-plugin-lingui-macro@5.6.1(babel-plugin-macros@3.1.0)(typescript@5.9.3)':
dependencies:
'@babel/core': 7.28.5
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@babel/types': 7.29.0
'@lingui/conf': 5.6.1(typescript@5.9.3)
'@lingui/core': 5.6.1(@lingui/babel-plugin-lingui-macro@5.6.1(babel-plugin-macros@3.1.0)(typescript@5.9.3))(babel-plugin-macros@3.1.0)
@@ -15153,10 +15081,10 @@ snapshots:
'@rushstack/rig-package': 0.7.2
'@rushstack/terminal': 0.22.3(@types/node@24.10.1)
'@rushstack/ts-command-line': 5.3.3(@types/node@24.10.1)
- diff: 8.0.3
+ diff: 8.0.4
lodash: 4.18.1
- minimatch: 10.2.4
- resolve: 1.22.11
+ minimatch: 10.2.5
+ resolve: 1.22.12
semver: 7.5.4
source-map: 0.6.1
typescript: 5.8.2
@@ -15169,7 +15097,7 @@ snapshots:
'@microsoft/tsdoc': 0.16.0
ajv: 8.18.0
jju: 1.4.0
- resolve: 1.22.11
+ resolve: 1.22.12
optional: true
'@microsoft/tsdoc@0.16.0':
@@ -15258,7 +15186,7 @@ snapshots:
'@mui/base@5.0.0-beta.70(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@floating-ui/react-dom': 2.1.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@mui/types': 7.2.24(@types/react@19.2.8)
'@mui/utils': 6.4.9(@types/react@19.2.8)(react@19.2.3)
@@ -15321,7 +15249,7 @@ snapshots:
'@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3))(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
csstype: 3.2.3
@@ -15382,7 +15310,7 @@ snapshots:
'@mui/types@7.4.9(@types/react@19.2.8)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
optionalDependencies:
'@types/react': 19.2.8
@@ -15400,7 +15328,7 @@ snapshots:
'@mui/utils@6.4.9(@types/react@19.2.8)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@mui/types': 7.2.24(@types/react@19.2.8)
'@types/prop-types': 15.7.15
clsx: 2.1.1
@@ -15412,7 +15340,7 @@ snapshots:
'@mui/utils@7.3.6(@types/react@19.2.8)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@mui/types': 7.4.9(@types/react@19.2.8)
'@types/prop-types': 15.7.15
clsx: 2.1.1
@@ -15468,7 +15396,7 @@ snapshots:
'@mui/x-internals@8.26.0(@types/react@19.2.8)(react@19.2.3)':
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
'@mui/utils': 7.3.6(@types/react@19.2.8)(react@19.2.3)
react: 19.2.3
reselect: 5.1.1
@@ -15562,7 +15490,7 @@ snapshots:
'@napi-rs/wasm-runtime@1.0.7':
dependencies:
'@emnapi/core': 1.7.1
- '@emnapi/runtime': 1.7.1
+ '@emnapi/runtime': 1.9.2
'@tybys/wasm-util': 0.10.1
optional: true
@@ -15806,105 +15734,45 @@ snapshots:
'@pagefind/windows-x64@1.4.0':
optional: true
- '@parcel/watcher-android-arm64@2.5.1':
- optional: true
-
'@parcel/watcher-android-arm64@2.5.6':
optional: true
- '@parcel/watcher-darwin-arm64@2.5.1':
- optional: true
-
'@parcel/watcher-darwin-arm64@2.5.6':
optional: true
- '@parcel/watcher-darwin-x64@2.5.1':
- optional: true
-
'@parcel/watcher-darwin-x64@2.5.6':
optional: true
- '@parcel/watcher-freebsd-x64@2.5.1':
- optional: true
-
'@parcel/watcher-freebsd-x64@2.5.6':
optional: true
- '@parcel/watcher-linux-arm-glibc@2.5.1':
- optional: true
-
'@parcel/watcher-linux-arm-glibc@2.5.6':
optional: true
- '@parcel/watcher-linux-arm-musl@2.5.1':
- optional: true
-
'@parcel/watcher-linux-arm-musl@2.5.6':
optional: true
- '@parcel/watcher-linux-arm64-glibc@2.5.1':
- optional: true
-
'@parcel/watcher-linux-arm64-glibc@2.5.6':
optional: true
- '@parcel/watcher-linux-arm64-musl@2.5.1':
- optional: true
-
'@parcel/watcher-linux-arm64-musl@2.5.6':
optional: true
- '@parcel/watcher-linux-x64-glibc@2.5.1':
- optional: true
-
'@parcel/watcher-linux-x64-glibc@2.5.6':
optional: true
- '@parcel/watcher-linux-x64-musl@2.5.1':
- optional: true
-
'@parcel/watcher-linux-x64-musl@2.5.6':
optional: true
- '@parcel/watcher-win32-arm64@2.5.1':
- optional: true
-
'@parcel/watcher-win32-arm64@2.5.6':
optional: true
- '@parcel/watcher-win32-ia32@2.5.1':
- optional: true
-
'@parcel/watcher-win32-ia32@2.5.6':
optional: true
- '@parcel/watcher-win32-x64@2.5.1':
- optional: true
-
'@parcel/watcher-win32-x64@2.5.6':
optional: true
- '@parcel/watcher@2.5.1':
- dependencies:
- detect-libc: 1.0.3
- is-glob: 4.0.3
- micromatch: 4.0.8
- node-addon-api: 7.1.1
- optionalDependencies:
- '@parcel/watcher-android-arm64': 2.5.1
- '@parcel/watcher-darwin-arm64': 2.5.1
- '@parcel/watcher-darwin-x64': 2.5.1
- '@parcel/watcher-freebsd-x64': 2.5.1
- '@parcel/watcher-linux-arm-glibc': 2.5.1
- '@parcel/watcher-linux-arm-musl': 2.5.1
- '@parcel/watcher-linux-arm64-glibc': 2.5.1
- '@parcel/watcher-linux-arm64-musl': 2.5.1
- '@parcel/watcher-linux-x64-glibc': 2.5.1
- '@parcel/watcher-linux-x64-musl': 2.5.1
- '@parcel/watcher-win32-arm64': 2.5.1
- '@parcel/watcher-win32-ia32': 2.5.1
- '@parcel/watcher-win32-x64': 2.5.1
-
'@parcel/watcher@2.5.6':
dependencies:
detect-libc: 2.1.2
@@ -15925,7 +15793,6 @@ snapshots:
'@parcel/watcher-win32-arm64': 2.5.6
'@parcel/watcher-win32-ia32': 2.5.6
'@parcel/watcher-win32-x64': 2.5.6
- optional: true
'@pnpm/config.env-replace@1.1.0': {}
@@ -16691,7 +16558,7 @@ snapshots:
'@react-aria/interactions': 3.25.6(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@react-types/shared': 3.32.1(react@19.2.3)
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
@@ -16702,13 +16569,13 @@ snapshots:
'@react-aria/utils': 3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
'@react-stately/flags': 3.1.2
'@react-types/shared': 3.32.1(react@19.2.3)
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
'@react-aria/ssr@3.9.10(react@19.2.3)':
dependencies:
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
react: 19.2.3
'@react-aria/utils@3.31.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3)':
@@ -16717,18 +16584,18 @@ snapshots:
'@react-stately/flags': 3.1.2
'@react-stately/utils': 3.10.8(react@19.2.3)
'@react-types/shared': 3.32.1(react@19.2.3)
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
clsx: 2.1.1
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
'@react-stately/flags@3.1.2':
dependencies:
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
'@react-stately/utils@3.10.8(react@19.2.3)':
dependencies:
- '@swc/helpers': 0.5.19
+ '@swc/helpers': 0.5.21
react: 19.2.3
'@react-types/shared@3.32.1(react@19.2.3)':
@@ -17000,7 +16867,7 @@ snapshots:
fs-extra: 11.3.4
import-lazy: 4.0.0
jju: 1.4.0
- resolve: 1.22.11
+ resolve: 1.22.12
semver: 7.5.4
optionalDependencies:
'@types/node': 24.10.1
@@ -17013,7 +16880,7 @@ snapshots:
'@rushstack/rig-package@0.7.2':
dependencies:
- resolve: 1.22.11
+ resolve: 1.22.12
strip-json-comments: 3.1.1
optional: true
@@ -17225,6 +17092,8 @@ snapshots:
'@socket.io/component-emitter@3.1.2': {}
+ '@standard-schema/spec@1.0.0': {}
+
'@standard-schema/spec@1.1.0': {}
'@standard-schema/utils@0.3.0': {}
@@ -17499,12 +17368,16 @@ snapshots:
dependencies:
tslib: 2.8.1
+ '@swc/helpers@0.5.21':
+ dependencies:
+ tslib: 2.8.1
+
'@tailwindcss/cli@4.1.17':
dependencies:
- '@parcel/watcher': 2.5.1
+ '@parcel/watcher': 2.5.6
'@tailwindcss/node': 4.1.17
'@tailwindcss/oxide': 4.1.17
- enhanced-resolve: 5.18.3
+ enhanced-resolve: 5.20.0
mri: 1.2.0
picocolors: 1.1.1
tailwindcss: 4.1.17
@@ -17860,7 +17733,7 @@ snapshots:
'@tmcp/adapter-valibot@0.1.5(tmcp@1.19.2(typescript@5.9.3))(valibot@1.2.0(typescript@5.9.3))':
dependencies:
- '@standard-schema/spec': 1.1.0
+ '@standard-schema/spec': 1.0.0
'@valibot/to-json-schema': 1.5.0(valibot@1.2.0(typescript@5.9.3))
tmcp: 1.19.2(typescript@5.9.3)
valibot: 1.2.0(typescript@5.9.3)
@@ -17899,7 +17772,7 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.5
+ '@babel/parser': 7.29.2
'@babel/types': 7.29.0
'@types/babel__generator': 7.27.0
'@types/babel__template': 7.4.4
@@ -17911,7 +17784,7 @@ snapshots:
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.5
+ '@babel/parser': 7.29.2
'@babel/types': 7.29.0
'@types/babel__traverse@7.28.0':
@@ -18694,8 +18567,8 @@ snapshots:
autoprefixer@10.4.22(postcss@8.5.6):
dependencies:
- browserslist: 4.28.1
- caniuse-lite: 1.0.30001786
+ browserslist: 4.28.0
+ caniuse-lite: 1.0.30001756
fraction.js: 5.3.4
normalize-range: 0.1.2
picocolors: 1.1.1
@@ -18722,7 +18595,7 @@ snapshots:
babel-plugin-macros@3.1.0:
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
cosmiconfig: 7.1.0
resolve: 1.22.11
@@ -18762,7 +18635,7 @@ snapshots:
base64-js@1.5.1: {}
- baseline-browser-mapping@2.10.8: {}
+ baseline-browser-mapping@2.10.18: {}
baseline-browser-mapping@2.8.30: {}
@@ -18828,8 +18701,8 @@ snapshots:
browserslist@4.28.1:
dependencies:
- baseline-browser-mapping: 2.10.8
- caniuse-lite: 1.0.30001786
+ baseline-browser-mapping: 2.10.18
+ caniuse-lite: 1.0.30001787
electron-to-chromium: 1.5.307
node-releases: 2.0.36
update-browserslist-db: 1.2.3(browserslist@4.28.1)
@@ -18885,13 +18758,13 @@ snapshots:
caniuse-api@3.0.0:
dependencies:
browserslist: 4.28.1
- caniuse-lite: 1.0.30001786
+ caniuse-lite: 1.0.30001787
lodash.memoize: 4.1.2
lodash.uniq: 4.5.0
caniuse-lite@1.0.30001756: {}
- caniuse-lite@1.0.30001786: {}
+ caniuse-lite@1.0.30001787: {}
ccount@2.0.1: {}
@@ -19757,8 +19630,6 @@ snapshots:
detect-indent@6.1.0: {}
- detect-libc@1.0.3: {}
-
detect-libc@2.1.2: {}
detect-node-es@1.1.0: {}
@@ -19771,6 +19642,9 @@ snapshots:
diff@8.0.3: {}
+ diff@8.0.4:
+ optional: true
+
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
@@ -19789,7 +19663,7 @@ snapshots:
dom-helpers@5.2.1:
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
csstype: 3.2.3
dom-serializer@2.0.0:
@@ -19902,11 +19776,6 @@ snapshots:
engine.io-parser@5.2.3: {}
- enhanced-resolve@5.18.3:
- dependencies:
- graceful-fs: 4.2.11
- tapable: 2.3.0
-
enhanced-resolve@5.18.4:
dependencies:
graceful-fs: 4.2.11
@@ -20230,7 +20099,7 @@ snapshots:
is-glob: 4.0.3
json-stable-stringify-without-jsonify: 1.0.1
lodash.merge: 4.6.2
- minimatch: 10.2.4
+ minimatch: 10.2.5
natural-compare: 1.4.0
optionator: 0.9.4
optionalDependencies:
@@ -22656,6 +22525,10 @@ snapshots:
dependencies:
brace-expansion: 5.0.5
+ minimatch@10.2.5:
+ dependencies:
+ brace-expansion: 5.0.5
+
minimist@1.2.7: {}
minimist@1.2.8: {}
@@ -22768,8 +22641,8 @@ snapshots:
dependencies:
'@next/env': 16.2.3
'@swc/helpers': 0.5.15
- baseline-browser-mapping: 2.10.8
- caniuse-lite: 1.0.30001786
+ baseline-browser-mapping: 2.10.18
+ caniuse-lite: 1.0.30001787
postcss: 8.4.31
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
@@ -23775,7 +23648,7 @@ snapshots:
react-clientside-effect@1.2.8(react@19.2.3):
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.29.2
react: 19.2.3
react-compiler-runtime@19.1.0-rc.3(react@19.2.3):
@@ -24344,6 +24217,14 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
+ resolve@1.22.12:
+ dependencies:
+ es-errors: 1.3.0
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ optional: true
+
resolve@2.0.0-next.6:
dependencies:
es-errors: 1.3.0
@@ -24728,7 +24609,7 @@ snapshots:
sharp@0.34.5:
dependencies:
- '@img/colour': 1.0.0
+ '@img/colour': 1.1.0
detect-libc: 2.1.2
semver: 7.7.4
optionalDependencies:
@@ -25459,7 +25340,7 @@ snapshots:
tmcp@1.19.2(typescript@5.9.3):
dependencies:
- '@standard-schema/spec': 1.1.0
+ '@standard-schema/spec': 1.0.0
json-rpc-2.0: 1.7.1
sqids: 0.3.0
uri-template-matcher: 1.1.2