From 0ac092ff1808689f6d475f6cc1c03462d90b323d Mon Sep 17 00:00:00 2001 From: Tmk Date: Mon, 9 Dec 2024 23:15:55 +0800 Subject: [PATCH] feat: add react antd example (#106) --- examples/with-antd/.gitignore | 22 + examples/with-antd/e2e/basic.spec.ts | 18 + examples/with-antd/e2e/context.ts | 8 + examples/with-antd/package.json | 33 + examples/with-antd/playwright.config.ts | 18 + examples/with-antd/public/logo.png | Bin 0 -> 61554 bytes examples/with-antd/rsbuild.config.ts | 38 + examples/with-antd/src/background/index.ts | 1 + .../with-antd/src/content-scripts/app.tsx | 25 + .../with-antd/src/content-scripts/index.tsx | 19 + examples/with-antd/src/global.less | 3 + examples/with-antd/src/manifest.ts | 20 + examples/with-antd/src/pages/popup/app.tsx | 20 + examples/with-antd/src/pages/popup/index.tsx | 9 + examples/with-antd/src/webx-env.d.ts | 1 + examples/with-antd/tailwind.config.ts | 17 + examples/with-antd/tsconfig.json | 23 + pnpm-lock.yaml | 953 ++++++++++++++++++ pnpm-workspace.yaml | 1 + templates/react/src/webx-env.d.ts | 2 - templates/solid/src/webx-env.d.ts | 2 - templates/svelte/src/webx-env.d.ts | 2 - templates/vue/src/webx-env.d.ts | 2 - 23 files changed, 1229 insertions(+), 8 deletions(-) create mode 100644 examples/with-antd/.gitignore create mode 100644 examples/with-antd/e2e/basic.spec.ts create mode 100644 examples/with-antd/e2e/context.ts create mode 100644 examples/with-antd/package.json create mode 100644 examples/with-antd/playwright.config.ts create mode 100644 examples/with-antd/public/logo.png create mode 100644 examples/with-antd/rsbuild.config.ts create mode 100644 examples/with-antd/src/background/index.ts create mode 100644 examples/with-antd/src/content-scripts/app.tsx create mode 100644 examples/with-antd/src/content-scripts/index.tsx create mode 100644 examples/with-antd/src/global.less create mode 100644 examples/with-antd/src/manifest.ts create mode 100644 examples/with-antd/src/pages/popup/app.tsx create mode 100644 examples/with-antd/src/pages/popup/index.tsx create mode 100644 examples/with-antd/src/webx-env.d.ts create mode 100644 examples/with-antd/tailwind.config.ts create mode 100644 examples/with-antd/tsconfig.json diff --git a/examples/with-antd/.gitignore b/examples/with-antd/.gitignore new file mode 100644 index 00000000..27588339 --- /dev/null +++ b/examples/with-antd/.gitignore @@ -0,0 +1,22 @@ +.DS_Store + +.pnp +.pnp.js +.env.local +.env.*.local +.history +*.log* + +node_modules/ +.yarn-integrity +.pnpm-store/ +*.tsbuildinfo +.eslintcache + +dist/ +coverage/ +release/ +output/ +log/ + +.env diff --git a/examples/with-antd/e2e/basic.spec.ts b/examples/with-antd/e2e/basic.spec.ts new file mode 100644 index 00000000..e07f61fa --- /dev/null +++ b/examples/with-antd/e2e/basic.spec.ts @@ -0,0 +1,18 @@ +import { setupStaticServer } from '@webx-kit/test-utils/playwright'; +import { expect, test } from './context'; + +const getWebpageURL = setupStaticServer(test); + +test('Popup Page', async ({ getURL, page }) => { + await page.goto(await getURL('popup.html')); + for (let id = 1; id <= 2; id++) { + await page.getByTestId(`tab-${id}`).click(); + await expect(page.getByTestId(`content-${id}`)).toBeVisible(); + } +}); + +test('Content Scripts', async ({ page }) => { + await page.goto(getWebpageURL()); + await page.getByRole('button').click(); + await expect(page.getByTestId('settings')).toContainText('Content'); +}); diff --git a/examples/with-antd/e2e/context.ts b/examples/with-antd/e2e/context.ts new file mode 100644 index 00000000..af736905 --- /dev/null +++ b/examples/with-antd/e2e/context.ts @@ -0,0 +1,8 @@ +import path from 'node:path'; +import { createWebxTest } from '@webx-kit/test-utils/playwright'; + +export const test = createWebxTest({ + extensionPath: path.resolve(__dirname, '../dist'), +}); + +export const { expect } = test; diff --git a/examples/with-antd/package.json b/examples/with-antd/package.json new file mode 100644 index 00000000..79483c99 --- /dev/null +++ b/examples/with-antd/package.json @@ -0,0 +1,33 @@ +{ + "name": "@webx-kit/example-with-antd", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "rsbuild dev", + "build": "rsbuild build", + "test": "playwright test", + "lint:type": "tsc --noEmit" + }, + "dependencies": { + "@ant-design/cssinjs": "^1.22.1", + "@ant-design/icons": "^5.5.2", + "@webx-kit/runtime": "workspace:^", + "antd": "^5.22.3", + "react": "^19.0.0", + "react-dom": "^19.0.0" + }, + "devDependencies": { + "@playwright/test": "^1.49.0", + "@rsbuild/core": "catalog:", + "@rsbuild/plugin-less": "catalog:", + "@rsbuild/plugin-react": "catalog:", + "@types/chrome": "^0.0.287", + "@types/node": "^22.10.1", + "@types/react": "^19.0.1", + "@types/react-dom": "^19.0.1", + "@webx-kit/rsbuild-plugin": "workspace:^", + "@webx-kit/test-utils": "workspace:^", + "tailwindcss": "^3.4.16", + "typescript": "^5.7.2" + } +} diff --git a/examples/with-antd/playwright.config.ts b/examples/with-antd/playwright.config.ts new file mode 100644 index 00000000..99ef6d18 --- /dev/null +++ b/examples/with-antd/playwright.config.ts @@ -0,0 +1,18 @@ +/** + * @see {@link https://playwright.dev/docs/chrome-extensions Chrome extensions | Playwright} + */ +import { defineConfig, devices } from '@playwright/test'; + +export default defineConfig({ + projects: [ + { + name: 'chromium', + use: { + ...devices['Desktop Chrome'], + channel: 'chromium', + }, + }, + ], + testDir: './e2e', + retries: 2, +}); diff --git a/examples/with-antd/public/logo.png b/examples/with-antd/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8eac0df15cac41ad179023e99324aa22113bdd98 GIT binary patch literal 61554 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�df)5gtmT?YH4tN|9V54#W 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 literal 0 HcmV?d00001 diff --git a/examples/with-antd/rsbuild.config.ts b/examples/with-antd/rsbuild.config.ts new file mode 100644 index 00000000..c42e9935 --- /dev/null +++ b/examples/with-antd/rsbuild.config.ts @@ -0,0 +1,38 @@ +import { defineConfig } from '@rsbuild/core'; +import { pluginLess } from '@rsbuild/plugin-less'; +import { pluginReact } from '@rsbuild/plugin-react'; +import { webxPlugin } from '@webx-kit/rsbuild-plugin'; + +export default defineConfig({ + plugins: [ + pluginLess(), + pluginReact(), + webxPlugin({ + background: './src/background/index.ts', + contentScripts: { + import: './src/content-scripts/index.tsx', + matches: [''], + }, + }), + ], + source: { + entry: { + popup: './src/pages/popup/index.tsx', + }, + }, + output: { + copy: [ + { + from: './public', + to: './public', + }, + ], + }, + tools: { + postcss: { + postcssOptions: { + plugins: [require('tailwindcss')], + }, + }, + }, +}); diff --git a/examples/with-antd/src/background/index.ts b/examples/with-antd/src/background/index.ts new file mode 100644 index 00000000..e921523b --- /dev/null +++ b/examples/with-antd/src/background/index.ts @@ -0,0 +1 @@ +console.log('hello'); diff --git a/examples/with-antd/src/content-scripts/app.tsx b/examples/with-antd/src/content-scripts/app.tsx new file mode 100644 index 00000000..a8714f7d --- /dev/null +++ b/examples/with-antd/src/content-scripts/app.tsx @@ -0,0 +1,25 @@ +import { ThunderboltFilled } from '@ant-design/icons'; +import { FloatButton, Modal } from 'antd'; +import { useState } from 'react'; + +export function App() { + const [visible, setVisible] = useState(false); + return ( + <> + } + tooltip="WebX Kit" + onClick={() => setVisible(true)} + /> + setVisible(false)}> + + + + ); +} + +function Settings() { + return
Content
; +} diff --git a/examples/with-antd/src/content-scripts/index.tsx b/examples/with-antd/src/content-scripts/index.tsx new file mode 100644 index 00000000..10533bc9 --- /dev/null +++ b/examples/with-antd/src/content-scripts/index.tsx @@ -0,0 +1,19 @@ +import { createShadowRootUI } from '@webx-kit/runtime/content-scripts'; +import { createRoot } from 'react-dom/client'; +import { App } from './app'; +import '../global.less'; +import { StyleProvider } from '@ant-design/cssinjs'; +import { ConfigProvider } from 'antd'; + +createShadowRootUI({ + styles: chrome.runtime.getURL('static/css/content-script.css'), + render({ root }) { + createRoot(root).render( + + root}> + + + + ); + }, +}); diff --git a/examples/with-antd/src/global.less b/examples/with-antd/src/global.less new file mode 100644 index 00000000..b5c61c95 --- /dev/null +++ b/examples/with-antd/src/global.less @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/examples/with-antd/src/manifest.ts b/examples/with-antd/src/manifest.ts new file mode 100644 index 00000000..ba80a905 --- /dev/null +++ b/examples/with-antd/src/manifest.ts @@ -0,0 +1,20 @@ +import { defineManifest } from '@webx-kit/rsbuild-plugin/manifest'; + +export default defineManifest(() => ({ + manifest_version: 3, + name: 'WebX Kit with antd', + version: '0.0.0', + icons: { + 512: 'public/logo.png', + }, + action: { + default_popup: 'popup.html', + }, + host_permissions: [''], + web_accessible_resources: [ + { + matches: [''], + resources: ['static/css/*', 'static/svg/*'], + }, + ], +})); diff --git a/examples/with-antd/src/pages/popup/app.tsx b/examples/with-antd/src/pages/popup/app.tsx new file mode 100644 index 00000000..e98ad622 --- /dev/null +++ b/examples/with-antd/src/pages/popup/app.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { AndroidOutlined, AppleOutlined } from '@ant-design/icons'; +import { Tabs } from 'antd'; + +export function App() { + return ( + { + const id = String(i + 1); + return { + key: id, + label:
{`Tab ${id}`}
, + children:
{`Tab ${id}`}
, + icon: , + }; + })} + /> + ); +} diff --git a/examples/with-antd/src/pages/popup/index.tsx b/examples/with-antd/src/pages/popup/index.tsx new file mode 100644 index 00000000..a9e2280f --- /dev/null +++ b/examples/with-antd/src/pages/popup/index.tsx @@ -0,0 +1,9 @@ +import { createRoot } from 'react-dom/client'; +import { App } from './app'; +import '../../global.less'; + +createRoot(document.getElementById('root')!).render( +
+ +
+); diff --git a/examples/with-antd/src/webx-env.d.ts b/examples/with-antd/src/webx-env.d.ts new file mode 100644 index 00000000..b0ac762b --- /dev/null +++ b/examples/with-antd/src/webx-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/with-antd/tailwind.config.ts b/examples/with-antd/tailwind.config.ts new file mode 100644 index 00000000..69206055 --- /dev/null +++ b/examples/with-antd/tailwind.config.ts @@ -0,0 +1,17 @@ +import { getPixelUnitDefaultTheme } from '@webx-kit/rsbuild-plugin/tailwind'; +import type { Config } from 'tailwindcss'; +import plugin from 'tailwindcss/plugin'; + +const config: Config = { + theme: getPixelUnitDefaultTheme(), + content: ['./src/**/*.{ts,tsx}'], + plugins: [ + plugin(({ addUtilities }) => { + addUtilities({ + '.flex-center': { display: 'flex', 'align-items': 'center', 'justify-content': 'center' }, + }); + }), + ], +}; + +export default config; diff --git a/examples/with-antd/tsconfig.json b/examples/with-antd/tsconfig.json new file mode 100644 index 00000000..425c88f8 --- /dev/null +++ b/examples/with-antd/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["DOM", "ESNext"], + "allowJs": true, + "module": "ESNext", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "declaration": false, + "jsx": "preserve", + "experimentalDecorators": true, + "resolveJsonModule": true, + "isolatedModules": true, + "moduleResolution": "Bundler", + "baseUrl": "./", + "paths": { + "@/*": ["./src/*"] + } + }, + "exclude": ["dist"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f9f587e6..3bbd5164 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -235,6 +235,64 @@ importers: specifier: ^1.5.0 version: 1.5.0(@algolia/client-search@5.15.0)(@types/node@22.10.1)(axios@1.7.9)(postcss@8.4.49)(sass-embedded@1.82.0)(terser@5.37.0)(typescript@5.7.2) + examples/with-antd: + dependencies: + '@ant-design/cssinjs': + specifier: ^1.22.1 + version: 1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/icons': + specifier: ^5.5.2 + version: 5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@webx-kit/runtime': + specifier: workspace:^ + version: link:../../packages/runtime + antd: + specifier: ^5.22.3 + version: 5.22.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: + specifier: ^19.0.0 + version: 19.0.0 + react-dom: + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) + devDependencies: + '@playwright/test': + specifier: ^1.49.0 + version: 1.49.0 + '@rsbuild/core': + specifier: 'catalog:' + version: 1.1.8 + '@rsbuild/plugin-less': + specifier: 'catalog:' + version: 1.1.0(@rsbuild/core@1.1.8) + '@rsbuild/plugin-react': + specifier: 'catalog:' + version: 1.0.7(@rsbuild/core@1.1.8) + '@types/chrome': + specifier: ^0.0.287 + version: 0.0.287 + '@types/node': + specifier: ^22.10.1 + version: 22.10.1 + '@types/react': + specifier: ^19.0.1 + version: 19.0.1 + '@types/react-dom': + specifier: ^19.0.1 + version: 19.0.1 + '@webx-kit/rsbuild-plugin': + specifier: workspace:^ + version: link:../../packages/rsbuild-plugin + '@webx-kit/test-utils': + specifier: workspace:^ + version: link:../../packages/test-utils + tailwindcss: + specifier: ^3.4.16 + version: 3.4.16 + typescript: + specifier: ^5.7.2 + version: 5.7.2 + packages/chrome-types: dependencies: '@types/chrome': @@ -873,6 +931,40 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@ant-design/colors@7.1.0': + resolution: {integrity: sha512-MMoDGWn1y9LdQJQSHiCC20x3uZ3CwQnv9QMz6pCmJOrqdgM9YxsoVVY0wtrdXbmfSgnV0KNk6zi09NAhMR2jvg==} + + '@ant-design/cssinjs-utils@1.1.3': + resolution: {integrity: sha512-nOoQMLW1l+xR1Co8NFVYiP8pZp3VjIIzqV6D6ShYF2ljtdwWJn5WSsH+7kvCktXL/yhEtWURKOfH5Xz/gzlwsg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@ant-design/cssinjs@1.22.1': + resolution: {integrity: sha512-SLuXM4wiEE1blOx94iXrkOgseMZHzdr4ngdFu3VVDq6AOWh7rlwqTkMAtJho3EsBF6x/eUGOtK53VZXGQG7+sQ==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/fast-color@2.0.6': + resolution: {integrity: sha512-y2217gk4NqL35giHl72o6Zzqji9O7vHh9YmhUVkPtAOpoTCH4uWxo/pr4VE8t0+ChEPs0qo4eJRC5Q1eXWo3vA==} + engines: {node: '>=8.x'} + + '@ant-design/icons-svg@4.4.2': + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + + '@ant-design/icons@5.5.2': + resolution: {integrity: sha512-xc53rjVBl9v2BqFxUjZGti/RfdDeA8/6KYglmInM2PNqSXc/WfuGDTifJI/ZsokJK0aeKvOIbXc9y2g8ILAhEA==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + '@ant-design/react-slick@1.1.2': + resolution: {integrity: sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==} + peerDependencies: + react: '>=16.9.0' + '@babel/code-frame@7.26.2': resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} @@ -1557,6 +1649,10 @@ packages: peerDependencies: postcss: ^8.4 + '@ctrl/tinycolor@3.6.1': + resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==} + engines: {node: '>=10'} + '@docsearch/css@3.8.0': resolution: {integrity: sha512-pieeipSOW4sQ0+bE5UFC51AOZp9NGxg89wAlZ1BAQFaiRAGK1IKUaPQ0UGZeNctJXyqZ1UvBtOQh2HH+U5GtmA==} @@ -1589,6 +1685,12 @@ packages: '@emnapi/wasi-threads@1.0.1': resolution: {integrity: sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==} + '@emotion/hash@0.8.0': + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + + '@emotion/unitless@0.7.5': + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + '@esbuild/aix-ppc64@0.21.5': resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} @@ -2411,6 +2513,61 @@ packages: webpack-plugin-serve: optional: true + '@rc-component/async-validator@5.0.4': + resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} + engines: {node: '>=14.x'} + + '@rc-component/color-picker@2.0.1': + resolution: {integrity: sha512-WcZYwAThV/b2GISQ8F+7650r5ZZJ043E57aVBFkQ+kSY4C6wdofXgB0hBx+GPGpIU0Z81eETNoDUJMr7oy/P8Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/context@1.4.0': + resolution: {integrity: sha512-kFcNxg9oLRMoL3qki0OMxK+7g5mypjgaaJp/pkOis/6rVxma9nJBF/8kCIuTYHUQNr0ii7MxqE33wirPZLJQ2w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/mini-decimal@1.1.0': + resolution: {integrity: sha512-jS4E7T9Li2GuYwI6PyiVXmxTiM6b07rlD9Ge8uGZSCz3WlzcG5ZK7g5bbuKNeZ9pgUuPK/5guV781ujdVpm4HQ==} + engines: {node: '>=8.x'} + + '@rc-component/mutate-observer@1.1.0': + resolution: {integrity: sha512-QjrOsDXQusNwGZPf4/qRQasg7UFEj06XiCJ8iuiq/Io7CrHrgVi6Uuetw60WAMG1799v+aM8kyc+1L/GBbHSlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/portal@1.1.2': + resolution: {integrity: sha512-6f813C0IsasTZms08kfA8kPAGxbbkYToa8ALaiDIGGECU4i9hj8Plgbx0sNJDrey3EtHO30hmdaxtT0138xZcg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/qrcode@1.0.0': + resolution: {integrity: sha512-L+rZ4HXP2sJ1gHMGHjsg9jlYBX/SLN2D6OxP9Zn3qgtpMWtO2vUfxVFwiogHpAIqs54FnALxraUy/BCO1yRIgg==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/tour@1.15.1': + resolution: {integrity: sha512-Tr2t7J1DKZUpfJuDZWHxyxWpfmj8EZrqSgyMZ+BCdvKZ6r1UDsfU46M/iWAAFBy961Ssfom2kv5f3UcjIL2CmQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + '@rc-component/trigger@2.2.5': + resolution: {integrity: sha512-F1EJ4KjFpGAHAjuKvOyZB/6IZDkVx0bHl0M4fQM5wXcmm7lgTgVSSnR3bXwdmS6jOJGHOqfDxIJW3WUvwMIXhQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + '@react-aria/breadcrumbs@3.5.19': resolution: {integrity: sha512-mVngOPFYVVhec89rf/CiYQGTfaLRfHFtX+JQwY7sNYNqSA+gO8p4lNARe3Be6bJPgH+LUQuruIY9/ZDL6LT3HA==} peerDependencies: @@ -3791,6 +3948,12 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} + antd@5.22.3: + resolution: {integrity: sha512-YyJ9PhsWkTqJzEo1cZ6wBFk8Ofrfs5O3uGsW8vWcpqBLq/w/yPM/nqZkEDoPFeZ1H+nAhuPF/oWmE/sfj3uYeg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} @@ -4117,6 +4280,9 @@ packages: citty@0.1.6: resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} + clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -4204,6 +4370,9 @@ packages: commondir@1.0.1: resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + compute-scroll-into-view@3.1.0: + resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -4244,6 +4413,9 @@ packages: resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} engines: {node: '>=12.13'} + copy-to-clipboard@3.3.3: + resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} + copy-webpack-plugin@11.0.0: resolution: {integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==} engines: {node: '>= 14.15.0'} @@ -4377,6 +4549,9 @@ packages: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} engines: {node: '>= 6'} + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} peerDependencies: @@ -5247,6 +5422,9 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json2mq@0.2.0: + resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -6224,6 +6402,234 @@ packages: randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} + rc-cascader@3.30.0: + resolution: {integrity: sha512-rrzSbk1Bdqbu+pDwiLCLHu72+lwX9BZ28+JKzoi0DWZ4N29QYFeip8Gctl33QVd2Xg3Rf14D3yAOG76ElJw16w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-checkbox@3.3.0: + resolution: {integrity: sha512-Ih3ZaAcoAiFKJjifzwsGiT/f/quIkxJoklW4yKGho14Olulwn8gN7hOBve0/WGDg5o/l/5mL0w7ff7/YGvefVw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-collapse@3.9.0: + resolution: {integrity: sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dialog@9.6.0: + resolution: {integrity: sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-drawer@7.2.0: + resolution: {integrity: sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-dropdown@4.2.0: + resolution: {integrity: sha512-odM8Ove+gSh0zU27DUj5cG1gNKg7mLWBYzB5E4nNLrLwBmYEgYP43vHKDGOVZcJSVElQBI0+jTQgjnq0NfLjng==} + peerDependencies: + react: '>=16.11.0' + react-dom: '>=16.11.0' + + rc-field-form@2.6.0: + resolution: {integrity: sha512-qU7ei+G/nZ5nkx7TFLRoPtcMR0s0R0yG/2O+iWqA/CX65tJmgODpJvTYYzGMPW/Psj+gy5QHbcZUrNVcPXKjLQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-image@7.11.0: + resolution: {integrity: sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input-number@9.3.0: + resolution: {integrity: sha512-JQ363ywqRyxwgVxpg2z2kja3CehTpYdqR7emJ/6yJjRdbvo+RvfE83fcpBCIJRq3zLp8SakmEXq60qzWyZ7Usw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-input@1.6.4: + resolution: {integrity: sha512-lBZhfRD4NSAUW0zOKLUeI6GJuXkxeZYi0hr8VcJgJpyTNOvHw1ysrKWAHcEOAAHj7guxgmWYSi6xWrEdfrSAsA==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-mentions@2.17.0: + resolution: {integrity: sha512-sfHy+qLvc+p8jx8GUsujZWXDOIlIimp6YQz7N5ONQ6bHsa2kyG+BLa5k2wuxgebBbH97is33wxiyq5UkiXRpHA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-menu@9.16.0: + resolution: {integrity: sha512-vAL0yqPkmXWk3+YKRkmIR8TYj3RVdEt3ptG2jCJXWNAvQbT0VJJdRyHZ7kG/l1JsZlB+VJq/VcYOo69VR4oD+w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-motion@2.9.3: + resolution: {integrity: sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-notification@5.6.2: + resolution: {integrity: sha512-Id4IYMoii3zzrG0lB0gD6dPgJx4Iu95Xu0BQrhHIbp7ZnAZbLqdqQ73aIWH0d0UFcElxwaKjnzNovTjo7kXz7g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-overflow@1.3.2: + resolution: {integrity: sha512-nsUm78jkYAoPygDAcGZeC2VwIg/IBGSodtOY3pMof4W3M9qRJgqaDYm03ZayHlde3I6ipliAxbN0RUcGf5KOzw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-pagination@4.3.0: + resolution: {integrity: sha512-UubEWA0ShnroQ1tDa291Fzw6kj0iOeF26IsUObxYTpimgj4/qPCWVFl18RLZE+0Up1IZg0IK4pMn6nB3mjvB7g==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-picker@4.8.3: + resolution: {integrity: sha512-hJ45qoEs4mfxXPAJdp1n3sKwADul874Cd0/HwnsEOE60H+tgiJUGgbOD62As3EG/rFVNS5AWRfBCDJJfmRqOVQ==} + engines: {node: '>=8.x'} + peerDependencies: + date-fns: '>= 2.x' + dayjs: '>= 1.x' + luxon: '>= 3.x' + moment: '>= 2.x' + react: '>=16.9.0' + react-dom: '>=16.9.0' + peerDependenciesMeta: + date-fns: + optional: true + dayjs: + optional: true + luxon: + optional: true + moment: + optional: true + + rc-progress@4.0.0: + resolution: {integrity: sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-rate@2.13.0: + resolution: {integrity: sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-resize-observer@1.4.0: + resolution: {integrity: sha512-PnMVyRid9JLxFavTjeDXEXo65HCRqbmLBw9xX9gfC4BZiSzbLXKzW3jPz+J0P71pLbD5tBMTT+mkstV5gD0c9Q==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-segmented@2.5.0: + resolution: {integrity: sha512-B28Fe3J9iUFOhFJET3RoXAPFJ2u47QvLSYcZWC4tFYNGPEjug5LAxEasZlA/PpAxhdOPqGWsGbSj7ftneukJnw==} + peerDependencies: + react: '>=16.0.0' + react-dom: '>=16.0.0' + + rc-select@14.16.4: + resolution: {integrity: sha512-jP6qf7+vjnxGvPpfPWbGYfFlSl3h8L2XcD4O7g2GYXmEeBC0mw+nPD7i++OOE8v3YGqP8xtYjRKAWCMLfjgxlw==} + engines: {node: '>=8.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-slider@11.1.7: + resolution: {integrity: sha512-ytYbZei81TX7otdC0QvoYD72XSlxvTihNth5OeZ6PMXyEDq/vHdWFulQmfDGyXK1NwKwSlKgpvINOa88uT5g2A==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-steps@6.0.1: + resolution: {integrity: sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-switch@4.1.0: + resolution: {integrity: sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-table@7.49.0: + resolution: {integrity: sha512-/FoPLX94muAQOxVpi1jhnpKjOIqUbT81eELQPAzSXOke4ky4oCWYUXOcVpL31ZCO90xScwVSXRd7coqtgtB1Ng==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tabs@15.4.0: + resolution: {integrity: sha512-llKuyiAVqmXm2z7OrmhX5cNb2ueZaL8ZyA2P4R+6/72NYYcbEgOXibwHiQCFY2RiN3swXl53SIABi2CumUS02g==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-textarea@1.8.2: + resolution: {integrity: sha512-UFAezAqltyR00a8Lf0IPAyTd29Jj9ee8wt8DqXyDMal7r/Cg/nDt3e1OOv3Th4W6mKaZijjgwuPXhAfVNTN8sw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tooltip@6.2.1: + resolution: {integrity: sha512-rws0duD/3sHHsD905Nex7FvoUGy2UBQRhTkKxeEvr2FB+r21HsOxcDJI0TzyO8NHhnAA8ILr8pfbSBg5Jj5KBg==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-tree-select@5.24.5: + resolution: {integrity: sha512-PnyR8LZJWaiEFw0SHRqo4MNQWyyZsyMs8eNmo68uXZWjxc7QqeWcjPPoONN0rc90c3HZqGF9z+Roz+GLzY5GXA==} + peerDependencies: + react: '*' + react-dom: '*' + + rc-tree@5.10.1: + resolution: {integrity: sha512-FPXb3tT/u39mgjr6JNlHaUTYfHkVGW56XaGDahDpEFLGsnPxGcVLNTjcqoQb/GNbSCycl7tD7EvIymwOTP0+Yw==} + engines: {node: '>=10.x'} + peerDependencies: + react: '*' + react-dom: '*' + + rc-upload@4.8.1: + resolution: {integrity: sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-util@5.44.0: + resolution: {integrity: sha512-qSNMihvZdD0Y5ht9k0rK3QsYcOQ94hdsZSvc8rHy22N+ySC6taVN35SkY1dUyAARxp+w8+ZCQ7MvgRGzXhcQKA==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-virtual-list@3.16.0: + resolution: {integrity: sha512-tRpWBC0msU+MxFxnD6+y4v0P17Yzplf+mbiHrqRvfVanx0S4o0XV+2zu4vv7hM9nNfcucO+MPHivqpRT2lfnFQ==} + engines: {node: '>=8.x'} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + react-aria-components@1.5.0: resolution: {integrity: sha512-wzf0g6cvWrqAJd4FkisAfFnslx6AJREgOd/NEmVE/RGuDxGTzss4awcwbo98rIVmqbTTFApiygy0SyWGrRZfDA==} peerDependencies: @@ -6373,6 +6779,9 @@ packages: reselect@4.1.8: resolution: {integrity: sha512-ab9EmR80F/zQTMNeneUr4cv+jSwPJgIlvEmVwLerwrWVbpLlBuls9XHzIeTFy4cegU2NHBp3va0LKOzU5qFEYQ==} + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -6577,6 +6986,9 @@ packages: resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} engines: {node: '>= 12.13.0'} + scroll-into-view-if-needed@3.1.0: + resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -6718,6 +7130,9 @@ packages: stream-http@3.2.0: resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==} + string-convert@0.2.1: + resolution: {integrity: sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -6761,6 +7176,9 @@ packages: peerDependencies: postcss: ^8.4.31 + stylis@4.3.4: + resolution: {integrity: sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now==} + sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -6934,6 +7352,10 @@ packages: peerDependencies: tslib: ^2 + throttle-debounce@5.0.2: + resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} + engines: {node: '>=12.22'} + timers-browserify@2.0.12: resolution: {integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==} engines: {node: '>=0.6.0'} @@ -6972,6 +7394,9 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toggle-selection@1.0.6: + resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} + token-stream@1.0.0: resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==} @@ -7573,6 +7998,55 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@ant-design/colors@7.1.0': + dependencies: + '@ctrl/tinycolor': 3.6.1 + + '@ant-design/cssinjs-utils@1.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@ant-design/cssinjs': 1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@babel/runtime': 7.26.0 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@ant-design/cssinjs@1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + '@emotion/hash': 0.8.0 + '@emotion/unitless': 0.7.5 + classnames: 2.5.1 + csstype: 3.1.3 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + stylis: 4.3.4 + + '@ant-design/fast-color@2.0.6': + dependencies: + '@babel/runtime': 7.26.0 + + '@ant-design/icons-svg@4.4.2': {} + + '@ant-design/icons@5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@ant-design/colors': 7.1.0 + '@ant-design/icons-svg': 4.4.2 + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@ant-design/react-slick@1.1.2(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + json2mq: 0.2.0 + react: 19.0.0 + resize-observer-polyfill: 1.5.1 + throttle-debounce: 5.0.2 + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 @@ -8512,6 +8986,8 @@ snapshots: dependencies: postcss: 8.4.49 + '@ctrl/tinycolor@3.6.1': {} + '@docsearch/css@3.8.0': {} '@docsearch/js@3.8.0(@algolia/client-search@5.15.0)': @@ -8547,6 +9023,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@emotion/hash@0.8.0': {} + + '@emotion/unitless@0.7.5': {} + '@esbuild/aix-ppc64@0.21.5': optional: true @@ -9372,6 +9852,75 @@ snapshots: optionalDependencies: type-fest: 4.30.0 + '@rc-component/async-validator@5.0.4': + dependencies: + '@babel/runtime': 7.26.0 + + '@rc-component/color-picker@2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@ant-design/fast-color': 2.0.6 + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/context@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/mini-decimal@1.1.0': + dependencies: + '@babel/runtime': 7.26.0 + + '@rc-component/mutate-observer@1.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/portal@1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/qrcode@1.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/tour@1.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + '@rc-component/trigger@2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + '@react-aria/breadcrumbs@3.5.19(react@19.0.0)': dependencies: '@react-aria/i18n': 3.12.4(react@19.0.0) @@ -11319,6 +11868,64 @@ snapshots: ansi-styles@6.2.1: {} + antd@5.22.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@ant-design/colors': 7.1.0 + '@ant-design/cssinjs': 1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/icons': 5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/react-slick': 1.1.2(react@19.0.0) + '@babel/runtime': 7.26.0 + '@ctrl/tinycolor': 3.6.1 + '@rc-component/color-picker': 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/mutate-observer': 1.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/qrcode': 1.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/tour': 1.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + copy-to-clipboard: 3.3.3 + dayjs: 1.11.13 + rc-cascader: 3.30.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-checkbox: 3.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-collapse: 3.9.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-dialog: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-drawer: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-dropdown: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-field-form: 2.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-image: 7.11.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-input-number: 9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-mentions: 2.17.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-notification: 5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-pagination: 4.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-picker: 4.8.3(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-progress: 4.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-rate: 2.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-segmented: 2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-slider: 11.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-steps: 6.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-switch: 4.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-table: 7.49.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tabs: 15.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-textarea: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tooltip: 6.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree-select: 5.24.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-upload: 4.8.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + scroll-into-view-if-needed: 3.1.0 + throttle-debounce: 5.0.2 + transitivePeerDependencies: + - date-fns + - luxon + - moment + any-promise@1.3.0: {} anymatch@3.1.3: @@ -11698,6 +12305,8 @@ snapshots: dependencies: consola: 3.2.3 + classnames@2.5.1: {} + clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -11772,6 +12381,8 @@ snapshots: commondir@1.0.1: {} + compute-scroll-into-view@3.1.0: {} + concat-map@0.0.1: {} confbox@0.1.8: {} @@ -11801,6 +12412,10 @@ snapshots: dependencies: is-what: 4.1.16 + copy-to-clipboard@3.3.3: + dependencies: + toggle-selection: 1.0.6 + copy-webpack-plugin@11.0.0(webpack@5.97.1(esbuild@0.17.19)): dependencies: fast-glob: 3.3.2 @@ -11977,6 +12592,8 @@ snapshots: data-uri-to-buffer@3.0.1: {} + dayjs@1.11.13: {} + debug@2.6.9: dependencies: ms: 2.0.0 @@ -12903,6 +13520,10 @@ snapshots: json-schema-traverse@1.0.0: {} + json2mq@0.2.0: + dependencies: + string-convert: 0.2.1 + json5@2.2.3: {} jsonc-parser@3.2.0: {} @@ -13881,6 +14502,324 @@ snapshots: randombytes: 2.1.0 safe-buffer: 5.2.1 + rc-cascader@3.30.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-checkbox@3.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-collapse@3.9.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-dialog@9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-drawer@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-dropdown@4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-field-form@2.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/async-validator': 5.0.4 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-image@7.11.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-dialog: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-input-number@9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/mini-decimal': 1.1.0 + classnames: 2.5.1 + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-input@1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-mentions@2.17.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-textarea: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-menu@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-motion@2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-notification@5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-overflow@1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-pagination@4.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-picker@4.8.3(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + optionalDependencies: + dayjs: 1.11.13 + + rc-progress@4.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-rate@2.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-resize-observer@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + resize-observer-polyfill: 1.5.1 + + rc-segmented@2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-select@14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-slider@11.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-steps@6.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-switch@4.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-table@7.49.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/context': 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-tabs@15.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-dropdown: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-textarea@1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-tooltip@6.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + classnames: 2.5.1 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-tree-select@5.24.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-tree@5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-upload@4.8.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + + rc-util@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-is: 18.3.1 + + rc-virtual-list@3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + dependencies: + '@babel/runtime': 7.26.0 + classnames: 2.5.1 + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) + react-aria-components@1.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@internationalized/date': 3.6.0 @@ -14130,6 +15069,8 @@ snapshots: reselect@4.1.8: {} + resize-observer-polyfill@1.5.1: {} + resolve-from@4.0.0: {} resolve-from@5.0.0: {} @@ -14314,6 +15255,10 @@ snapshots: ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) + scroll-into-view-if-needed@3.1.0: + dependencies: + compute-scroll-into-view: 3.1.0 + semver@5.7.2: {} semver@6.3.1: {} @@ -14452,6 +15397,8 @@ snapshots: readable-stream: 3.6.2 xtend: 4.0.2 + string-convert@0.2.1: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -14497,6 +15444,8 @@ snapshots: postcss: 8.4.49 postcss-selector-parser: 6.1.2 + stylis@4.3.4: {} + sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.5 @@ -14685,6 +15634,8 @@ snapshots: dependencies: tslib: 2.8.1 + throttle-debounce@5.0.2: {} + timers-browserify@2.0.12: dependencies: setimmediate: 1.0.5 @@ -14714,6 +15665,8 @@ snapshots: dependencies: is-number: 7.0.0 + toggle-selection@1.0.6: {} + token-stream@1.0.0: {} toml@3.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 722de143..27462ac4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,5 +1,6 @@ packages: - apps/* + - examples/* - packages/* - templates/* - tests/* diff --git a/templates/react/src/webx-env.d.ts b/templates/react/src/webx-env.d.ts index 7af949fe..b0ac762b 100644 --- a/templates/react/src/webx-env.d.ts +++ b/templates/react/src/webx-env.d.ts @@ -1,3 +1 @@ /// - -declare module '*.svg'; diff --git a/templates/solid/src/webx-env.d.ts b/templates/solid/src/webx-env.d.ts index 7af949fe..b0ac762b 100644 --- a/templates/solid/src/webx-env.d.ts +++ b/templates/solid/src/webx-env.d.ts @@ -1,3 +1 @@ /// - -declare module '*.svg'; diff --git a/templates/svelte/src/webx-env.d.ts b/templates/svelte/src/webx-env.d.ts index 7af949fe..b0ac762b 100644 --- a/templates/svelte/src/webx-env.d.ts +++ b/templates/svelte/src/webx-env.d.ts @@ -1,3 +1 @@ /// - -declare module '*.svg'; diff --git a/templates/vue/src/webx-env.d.ts b/templates/vue/src/webx-env.d.ts index e333cbfa..e87406c2 100644 --- a/templates/vue/src/webx-env.d.ts +++ b/templates/vue/src/webx-env.d.ts @@ -1,7 +1,5 @@ /// -declare module '*.svg'; - declare module '*.vue' { const component: any; export default component;