diff --git a/.gitignore b/.gitignore index 41837b6758..ca04c5b700 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ node_modules .npmrc /dist /dist-demo +/dist-site /release /libs /jd/upload.js @@ -53,4 +54,7 @@ pnpm-lock.*.yaml *.sw? # vitest -/html \ No newline at end of file +/html + +# Harmony CSS files +src/packages/**/*.harmony.css \ No newline at end of file diff --git a/cypress/e2e/h5/index.cy.js b/cypress/e2e/h5/index.cy.js index ef142a6588..e21f1b20e6 100644 --- a/cypress/e2e/h5/index.cy.js +++ b/cypress/e2e/h5/index.cy.js @@ -8,6 +8,6 @@ import { checkH5Blank } from '../common/pageWhiteTest.cy' // import './exhibition.cy' // import './feedback.cy' -describe('All Taro Demos White Page Test', () => { +describe('All H5 Demos White Page Test', () => { checkH5Blank() }) diff --git a/cypress/e2e/utils/visit-demo.cy.js b/cypress/e2e/utils/visit-demo.cy.js index 4825dafccf..d533867d2a 100644 --- a/cypress/e2e/utils/visit-demo.cy.js +++ b/cypress/e2e/utils/visit-demo.cy.js @@ -1,5 +1,6 @@ export const visitH5Demo = (componentName, delay = 500) => { - const getPath = () => `${Cypress.env('baseUrl')}${componentName}` + const getPath = () => + `http://localhost:5173/react/demo.html#/zh-CN/component/${componentName.toLowerCase()}` cy.visit(getPath(componentName), { onBeforeLoad: (win) => { Object.defineProperty(win.navigator, 'userAgent', { diff --git a/index.html b/index.html index 47e045264c..738380c63b 100644 --- a/index.html +++ b/index.html @@ -49,7 +49,7 @@ continue.
- + + + + + + + + +
+ + + + + + + \ No newline at end of file diff --git a/package.json b/package.json index 526054f3fb..10832fb4da 100644 --- a/package.json +++ b/package.json @@ -68,13 +68,15 @@ "build": "node ./scripts/replace-css-var.js && npm run checked && node scripts/build.mjs", "build:taro": "node ./scripts/replace-css-var.js && npm run checked:taro && node scripts/build-taro.mjs", "build:taro:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp node scripts/build-taro.mjs", - "build:site": "npm run checked && vite build --config vite.config.site.mts", - "build:site:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", - "prebuild:taro:site": "pnpm run update:taro:entry", - "build:taro:site": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:jdtaro:site": "npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:taro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:jdtaro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:demo": "npm run checked && vite build --config vite.config.demo.ts", + "build:demo:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build", + "prebuild:taro:demo": "SKIPDD=1 pnpm run update:taro:entry", + "build:taro:demo": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:site": "vite build --config vite.config.site.mts", + "build:taro:site": "vite build --config vite.config.site.taro.mts && node ./scripts/rename.js", + "build:jdtaro:demo": "npm run checked:taro && npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:taro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:jdtaro:demo:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && JD=1 pnpm --dir ./packages/nutui-taro-demo build:h5", "generate:file": "node scripts/generate-nutui.js", "generate:themes": "node scripts/generate-themes.js", "generate:themes-dev": "node scripts/generate-themes-dev.js", @@ -86,12 +88,12 @@ "publish:beta": "npm publish --tag beta", "test": "vitest --coverage", "test:ui": "vitest --ui --coverage", - "cypress:run": "cypress run --env baseUrl=http://localhost:5173/react/demo.html#/zh-CN/component/ --spec 'cypress/e2e/h5/index.cy.js'", - "cypress:open": "cypress open --env baseUrl=http://localhost:5173/react/demo.html#/zh-CN/component/ 'cypress/e2e/h5/index.cy.js'", + "cypress:run": "cypress run --spec 'cypress/e2e/h5/index.cy.js'", + "cypress:open": "cypress open 'cypress/e2e/h5/index.cy.js'", "cypress:run:taro": "cypress run --env baseUrl=http://localhost:10086/#/ --spec 'cypress/e2e/taro/index.cy.js'", "cypress:open:taro": "cypress open --env baseUrl=http://localhost:10086/#/ 'cypress/e2e/taro/index.cy.js'", - "e2e:run:h5": "start-server-and-test dev http://localhost:5173/ cypress:run", - "e2e:open:h5": "start-server-and-test dev http://localhost:5173/ cypress:open", + "e2e:run:h5": "start-server-and-test dev http://localhost:5173/react/ cypress:run", + "e2e:open:h5": "start-server-and-test dev http://localhost:5173/react/ cypress:open", "e2e:run:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:run:taro", "e2e:open:taro": "start-server-and-test dev:taro:h5 http://localhost:10086 cypress:open:taro", "update:taro:entry": "node ./scripts/harmony/update-taro-entry", @@ -112,16 +114,18 @@ "@use-gesture/react": "10.2.20", "async-validator": "^4.2.5", "classnames": "^2.5.1", - "react-fast-compare": "^3.2.2", "lodash.kebabcase": "^4.1.1", "lottie-miniprogram": "^1.0.12", "lottie-react": "^2.4.0", - "react-transition-group": "^4.4.5" + "react-fast-compare": "^3.2.2", + "react-transition-group": "^4.4.5", + "rehype-highlight": "^7.0.2" }, "devDependencies": { "@babel/plugin-proposal-class-properties": "^7.18.6", "@commitlint/cli": "^19.0.3", "@commitlint/config-conventional": "^19.0.3", + "@inquirer/prompts": "^7.2.3", "@loadable/component": "^5.16.3", "@mdx-js/mdx": "^3.0.1", "@mdx-js/react": "^3.0.1", @@ -131,6 +135,7 @@ "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "16.0.0", "@rollup/plugin-typescript": "^11.1.6", + "@shikijs/markdown-it": "^3.0.0", "@swc/core": "^1.4.8", "@tarojs/components": "4.0.8-beta.1", "@tarojs/plugin-platform-alipay": "4.0.8-beta.1", @@ -156,7 +161,6 @@ "@vitejs/plugin-react": "^4.2.1", "@vitest/coverage-v8": "^2.0.4", "@vitest/ui": "^2.0.4", - "@inquirer/prompts":"^7.2.3", "autoprefixer": "^10.4.17", "axios": "^1.6.7", "cypress": "^13.15.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ba0df60c7e..03f68b685e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -62,6 +62,9 @@ importers: react-transition-group: specifier: ^4.4.5 version: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rehype-highlight: + specifier: ^7.0.2 + version: 7.0.2 devDependencies: '@babel/plugin-proposal-class-properties': specifier: ^7.18.6 @@ -102,6 +105,9 @@ importers: '@rollup/plugin-typescript': specifier: ^11.1.6 version: 11.1.6(rollup@4.30.0)(tslib@2.8.1)(typescript@5.7.2) + '@shikijs/markdown-it': + specifier: ^3.0.0 + version: 3.0.0 '@swc/core': specifier: ^1.4.8 version: 1.10.4(@swc/helpers@0.5.15) @@ -499,7 +505,7 @@ importers: version: 7.6.8 vitest: specifier: ^1.5.0 - version: 1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + version: 1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) devDependencies: '@types/lodash.kebabcase': specifier: ^4.1.9 @@ -527,7 +533,7 @@ importers: version: 7.26.0 '@nutui/replace-icons': specifier: ^1.0.0 - version: 1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + version: 1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) '@nutui/touch-emulator': specifier: ^1.0.0 version: 1.0.0 @@ -621,7 +627,7 @@ importers: version: 4.0.8-beta.1(@swc/helpers@0.5.15) '@tarojs/plugin-platform-harmony-ets': specifier: 4.0.8-beta.1 - version: 4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))) + version: 4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15)))) '@tarojs/vite-runner': specifier: 4.0.8-beta.1 version: 4.0.8-beta.1(@swc/helpers@0.5.15)(@tarojs/runtime@4.0.8-beta.1)(@types/babel__core@7.20.5)(jiti@2.4.2)(postcss@8.4.49)(rollup@3.29.5)(terser@5.37.0)(tsx@4.19.2)(typescript@5.7.2)(vite@5.4.11(@types/node@22.10.5)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)) @@ -686,7 +692,7 @@ importers: packages: '@adobe/css-tools@4.3.3': - resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==, tarball: https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz} + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} '@adobe/css-tools@4.4.1': resolution: {integrity: sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==} @@ -1397,7 +1403,7 @@ packages: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} '@colors/colors@1.5.0': - resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, tarball: https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz} + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} '@commitlint/cli@19.6.1': @@ -1507,433 +1513,433 @@ packages: engines: {node: '>=16'} '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} engines: {node: '>=12'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.23.1': - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz} + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/aix-ppc64@0.24.2': - resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==, tarball: https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz} + resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz} + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} engines: {node: '>=12'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.23.1': - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz} + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm64@0.24.2': - resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz} + resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} engines: {node: '>=18'} cpu: [arm64] os: [android] '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz} + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} engines: {node: '>=12'} cpu: [arm] os: [android] '@esbuild/android-arm@0.23.1': - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz} + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-arm@0.24.2': - resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz} + resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} engines: {node: '>=18'} cpu: [arm] os: [android] '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz} + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} engines: {node: '>=12'} cpu: [x64] os: [android] '@esbuild/android-x64@0.23.1': - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz} + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/android-x64@0.24.2': - resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz} + resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} engines: {node: '>=18'} cpu: [x64] os: [android] '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz} + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.23.1': - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz} + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-arm64@0.24.2': - resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz} + resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz} + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} engines: {node: '>=12'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.23.1': - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz} + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/darwin-x64@0.24.2': - resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz} + resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz} + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.23.1': - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz} + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-arm64@0.24.2': - resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.23.1': - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/freebsd-x64@0.24.2': - resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz} + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} engines: {node: '>=12'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.23.1': - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz} + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm64@0.24.2': - resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz} + resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz} + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} engines: {node: '>=12'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.23.1': - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz} + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-arm@0.24.2': - resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz} + resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} engines: {node: '>=18'} cpu: [arm] os: [linux] '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz} + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} engines: {node: '>=12'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.23.1': - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz} + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-ia32@0.24.2': - resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz} + resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} engines: {node: '>=18'} cpu: [ia32] os: [linux] '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz} + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.23.1': - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz} + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-loong64@0.24.2': - resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz} + resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} engines: {node: '>=18'} cpu: [loong64] os: [linux] '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz} + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.23.1': - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz} + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-mips64el@0.24.2': - resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz} + resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz} + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.23.1': - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz} + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-ppc64@0.24.2': - resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz} + resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz} + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.23.1': - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz} + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-riscv64@0.24.2': - resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz} + resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz} + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} engines: {node: '>=12'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.23.1': - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz} + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-s390x@0.24.2': - resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz} + resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz} + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} engines: {node: '>=12'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.23.1': - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz} + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/linux-x64@0.24.2': - resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz} + resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} engines: {node: '>=18'} cpu: [x64] os: [linux] '@esbuild/netbsd-arm64@0.24.2': - resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.23.1': - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/netbsd-x64@0.24.2': - resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] '@esbuild/openbsd-arm64@0.23.1': - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz} + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-arm64@0.24.2': - resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==, tarball: https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz} + resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz} + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.23.1': - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz} + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/openbsd-x64@0.24.2': - resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz} + resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz} + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} engines: {node: '>=12'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.23.1': - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz} + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/sunos-x64@0.24.2': - resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz} + resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} engines: {node: '>=18'} cpu: [x64] os: [sunos] '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz} + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} engines: {node: '>=12'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.23.1': - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz} + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-arm64@0.24.2': - resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz} + resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz} + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} engines: {node: '>=12'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.23.1': - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz} + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-ia32@0.24.2': - resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz} + resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz} + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} engines: {node: '>=12'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.23.1': - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz} + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} engines: {node: '>=18'} cpu: [x64] os: [win32] '@esbuild/win32-x64@0.24.2': - resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz} + resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2052,7 +2058,7 @@ packages: engines: {node: '>=18.18'} '@iarna/toml@2.2.5': - resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==, tarball: https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz} + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} '@icons/material@0.2.4': resolution: {integrity: sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==} @@ -2294,7 +2300,7 @@ packages: resolution: {integrity: sha512-HAPjR3bnCsdXBsATpDIP5WCrw0JcACwhhrwIAQhiR46n+jm+a2F8kBsfseAuWtSyQ+H3Yebt2k43B5dy+04yMA==} '@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3': - resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==, tarball: https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz} + resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==} '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} @@ -2335,65 +2341,65 @@ packages: resolution: {integrity: sha512-k2hvI/9LlRA7Ph1Chni27pTuvPmKPt+/I10sWWd2sWzqiCOYRerD79eIwCMRGUF/q6WVDEKVnv00t9CEUL4sPA==} '@octokit/auth-token@5.1.2': - resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==, tarball: https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.2.tgz} + resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==} engines: {node: '>= 18'} '@octokit/core@6.1.4': - resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==, tarball: https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz} + resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==} engines: {node: '>= 18'} '@octokit/endpoint@10.1.3': - resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==, tarball: https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz} + resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==} engines: {node: '>= 18'} '@octokit/graphql@8.2.1': - resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==, tarball: https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz} + resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==} engines: {node: '>= 18'} '@octokit/openapi-types@22.2.0': - resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==, tarball: https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz} + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} '@octokit/openapi-types@23.0.1': - resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==, tarball: https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz} + resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==} '@octokit/plugin-paginate-rest@11.3.1': - resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==, tarball: https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz} + resolution: {integrity: sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '5' '@octokit/plugin-request-log@5.3.1': - resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==, tarball: https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-5.3.1.tgz} + resolution: {integrity: sha512-n/lNeCtq+9ofhC15xzmJCNKP2BWTv8Ih2TTy+jatNCCq/gQP/V7rK3fjIfuz0pDWDALO/o/4QY4hyOF6TQQFUw==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': '>=6' '@octokit/plugin-rest-endpoint-methods@13.2.2': - resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==, tarball: https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz} + resolution: {integrity: sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==} engines: {node: '>= 18'} peerDependencies: '@octokit/core': ^5 '@octokit/request-error@6.1.7': - resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==, tarball: https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz} + resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==} engines: {node: '>= 18'} '@octokit/request@9.2.2': - resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==, tarball: https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz} + resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==} engines: {node: '>= 18'} '@octokit/rest@21.0.2': - resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==, tarball: https://registry.npmjs.org/@octokit/rest/-/rest-21.0.2.tgz} + resolution: {integrity: sha512-+CiLisCoyWmYicH25y1cDfCrv41kRSvTq6pPWtRroRJzhsCZWZyCqGyI8foJT5LmScADSwRAnr/xo+eewL04wQ==} engines: {node: '>= 18'} '@octokit/types@13.6.2': - resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==, tarball: https://registry.npmjs.org/@octokit/types/-/types-13.6.2.tgz} + resolution: {integrity: sha512-WpbZfZUcZU77DrSW4wbsSgTPfKcp286q3ItaIgvSbBpZJlu6mnYXAkjZz6LVZPXkEvLIM8McanyZejKTYUHipA==} '@octokit/types@13.8.0': - resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==, tarball: https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz} + resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==} '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, tarball: https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz} + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} '@pkgr/core@0.1.1': @@ -2453,15 +2459,15 @@ packages: optional: true '@pnpm/config.env-replace@1.1.0': - resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==, tarball: https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz} + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} engines: {node: '>=12.22.0'} '@pnpm/network.ca-file@1.0.2': - resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==, tarball: https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz} + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} engines: {node: '>=12.22.0'} '@pnpm/npm-conf@2.3.1': - resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==, tarball: https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz} + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} engines: {node: '>=12'} '@polka/url@1.0.0-next.28': @@ -2545,7 +2551,7 @@ packages: optional: true '@rollup/plugin-node-resolve@16.0.0': - resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==, tarball: https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.0.tgz} + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.78.0||^3.0.0||^4.0.0 @@ -2585,97 +2591,97 @@ packages: optional: true '@rollup/rollup-android-arm-eabi@4.30.0': - resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.0.tgz} + resolution: {integrity: sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==} cpu: [arm] os: [android] '@rollup/rollup-android-arm64@4.30.0': - resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==, tarball: https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.0.tgz} + resolution: {integrity: sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==} cpu: [arm64] os: [android] '@rollup/rollup-darwin-arm64@4.30.0': - resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.0.tgz} + resolution: {integrity: sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==} cpu: [arm64] os: [darwin] '@rollup/rollup-darwin-x64@4.30.0': - resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==, tarball: https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.0.tgz} + resolution: {integrity: sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==} cpu: [x64] os: [darwin] '@rollup/rollup-freebsd-arm64@4.30.0': - resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.0.tgz} + resolution: {integrity: sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==} cpu: [arm64] os: [freebsd] '@rollup/rollup-freebsd-x64@4.30.0': - resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==, tarball: https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.0.tgz} + resolution: {integrity: sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==} cpu: [x64] os: [freebsd] '@rollup/rollup-linux-arm-gnueabihf@4.30.0': - resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.0.tgz} + resolution: {integrity: sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm-musleabihf@4.30.0': - resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.0.tgz} + resolution: {integrity: sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==} cpu: [arm] os: [linux] '@rollup/rollup-linux-arm64-gnu@4.30.0': - resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-arm64-musl@4.30.0': - resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.0.tgz} + resolution: {integrity: sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==} cpu: [arm64] os: [linux] '@rollup/rollup-linux-loongarch64-gnu@4.30.0': - resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==} cpu: [loong64] os: [linux] '@rollup/rollup-linux-powerpc64le-gnu@4.30.0': - resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.0.tgz} + resolution: {integrity: sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==} cpu: [ppc64] os: [linux] '@rollup/rollup-linux-riscv64-gnu@4.30.0': - resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==} cpu: [riscv64] os: [linux] '@rollup/rollup-linux-s390x-gnu@4.30.0': - resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.0.tgz} + resolution: {integrity: sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==} cpu: [s390x] os: [linux] '@rollup/rollup-linux-x64-gnu@4.30.0': - resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.0.tgz} + resolution: {integrity: sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==} cpu: [x64] os: [linux] '@rollup/rollup-linux-x64-musl@4.30.0': - resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==, tarball: https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.0.tgz} + resolution: {integrity: sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==} cpu: [x64] os: [linux] '@rollup/rollup-win32-arm64-msvc@4.30.0': - resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.0.tgz} + resolution: {integrity: sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==} cpu: [arm64] os: [win32] '@rollup/rollup-win32-ia32-msvc@4.30.0': - resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.0.tgz} + resolution: {integrity: sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==} cpu: [ia32] os: [win32] '@rollup/rollup-win32-x64-msvc@4.30.0': - resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==, tarball: https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.0.tgz} + resolution: {integrity: sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==} cpu: [x64] os: [win32] @@ -2705,7 +2711,36 @@ packages: resolution: {integrity: sha512-QSRqHT/IfoC5nk9zn6+fgyqOPXHME0BfchII9EUPR19pocsNp/xSbeBCbD3PIR2Lg+Q5qk7OFqk1VhWPMdKHJg==} '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==, tarball: https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz} + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@shikijs/core@3.0.0': + resolution: {integrity: sha512-gSm3JQf2J2psiUn5bWokmZwnu5N0jfBtRps4CQ1B+qrFvmZCRAkMVoaxgl9qZgAFK5KisLAS3//XaMFVytYHKw==} + + '@shikijs/engine-javascript@3.0.0': + resolution: {integrity: sha512-zoB10hTfvk1iZk1ldt6VaF+0iucQL+4TtSvTdTu5MhOeLPLEf5nZ8Wz6uxlp99y627OLalYa2z4W0iTTwb6oyA==} + + '@shikijs/engine-oniguruma@3.0.0': + resolution: {integrity: sha512-uM9lqwMrlPHPVcdpAN/4pAzTJah1pY7mi9f1MxG887SDkjF/tdiQK+5200Y8N5Hg125sewdMQ1K2agoAo8hDiA==} + + '@shikijs/langs@3.0.0': + resolution: {integrity: sha512-HBsZAukiYz7k3hzttPWa0en3PABEwK3cpxcAcERRwvwuKc5pn0Y+yPxAIYZtN9cFdtNqrbFJNhfcEu/xbG1u/A==} + + '@shikijs/markdown-it@3.0.0': + resolution: {integrity: sha512-XCTFyhNgGeKO2Fh/wbsiOel9gOWGbIFL+c9oC2tYAqsSaWaJmFn0ePTrY7AJXyWyyfFruW2T2ISs9uKtR9w02w==} + peerDependencies: + markdown-it-async: ^2.0.0 + peerDependenciesMeta: + markdown-it-async: + optional: true + + '@shikijs/themes@3.0.0': + resolution: {integrity: sha512-mz63nyVB5nXWsv5H2hifDFIThZEJ/cJhMq1/+0JjMdOuuBq2H2D1Fn8UM5yzUtEvap/ipRltv381+hsHZFs4ug==} + + '@shikijs/types@3.0.0': + resolution: {integrity: sha512-kh/xgZHxI6m9trVvPw+C47jyVHx190r0F5gkF+VO5vYB54UtcoPJe66dzZmK7GbJbzmtGEGbOwct/jsoPjjUqg==} + + '@shikijs/vscode-textmate@10.0.2': + resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} '@sideway/address@4.1.5': resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} @@ -2732,7 +2767,7 @@ packages: engines: {node: '>=18'} '@sindresorhus/merge-streams@4.0.0': - resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==, tarball: https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz} + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} '@sinonjs/commons@3.0.1': @@ -2747,121 +2782,121 @@ packages: hasBin: true '@swc/core-darwin-arm64@1.10.4': - resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.4.tgz} + resolution: {integrity: sha512-sV/eurLhkjn/197y48bxKP19oqcLydSel42Qsy2zepBltqUx+/zZ8+/IS0Bi7kaWVFxerbW1IPB09uq8Zuvm3g==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] '@swc/core-darwin-arm64@1.3.96': - resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==, tarball: https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.96.tgz} + resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] '@swc/core-darwin-x64@1.10.4': - resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.4.tgz} + resolution: {integrity: sha512-gjYNU6vrAUO4+FuovEo9ofnVosTFXkF0VDuo1MKPItz6e2pxc2ale4FGzLw0Nf7JB1sX4a8h06CN16/pLJ8Q2w==} engines: {node: '>=10'} cpu: [x64] os: [darwin] '@swc/core-darwin-x64@1.3.96': - resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==, tarball: https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.96.tgz} + resolution: {integrity: sha512-mFp9GFfuPg+43vlAdQZl0WZpZSE8sEzqL7sr/7Reul5McUHP0BaLsEzwjvD035ESfkY8GBZdLpMinblIbFNljQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] '@swc/core-linux-arm-gnueabihf@1.10.4': - resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.4.tgz} + resolution: {integrity: sha512-zd7fXH5w8s+Sfvn2oO464KDWl+ZX1MJiVmE4Pdk46N3PEaNwE0koTfgx2vQRqRG4vBBobzVvzICC3618WcefOA==} engines: {node: '>=10'} cpu: [arm] os: [linux] '@swc/core-linux-arm-gnueabihf@1.3.96': - resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==, tarball: https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.96.tgz} + resolution: {integrity: sha512-8UEKkYJP4c8YzYIY/LlbSo8z5Obj4hqcv/fUTHiEePiGsOddgGf7AWjh56u7IoN/0uEmEro59nc1ChFXqXSGyg==} engines: {node: '>=10'} cpu: [arm] os: [linux] '@swc/core-linux-arm64-gnu@1.10.4': - resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.4.tgz} + resolution: {integrity: sha512-+UGfoHDxsMZgFD3tABKLeEZHqLNOkxStu+qCG7atGBhS4Slri6h6zijVvf4yI5X3kbXdvc44XV/hrP/Klnui2A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-gnu@1.3.96': - resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.96.tgz} + resolution: {integrity: sha512-c/IiJ0s1y3Ymm2BTpyC/xr6gOvoqAVETrivVXHq68xgNms95luSpbYQ28rqaZC8bQC8M5zdXpSc0T8DJu8RJGw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-musl@1.10.4': - resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.4.tgz} + resolution: {integrity: sha512-cDDj2/uYsOH0pgAnDkovLZvKJpFmBMyXkxEG6Q4yw99HbzO6QzZ5HDGWGWVq/6dLgYKlnnmpjZCPPQIu01mXEg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-arm64-musl@1.3.96': - resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==, tarball: https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.96.tgz} + resolution: {integrity: sha512-i5/UTUwmJLri7zhtF6SAo/4QDQJDH2fhYJaBIUhrICmIkRO/ltURmpejqxsM/ye9Jqv5zG7VszMC0v/GYn/7BQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] '@swc/core-linux-x64-gnu@1.10.4': - resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.4.tgz} + resolution: {integrity: sha512-qJXh9D6Kf5xSdGWPINpLGixAbB5JX8JcbEJpRamhlDBoOcQC79dYfOMEIxWPhTS1DGLyFakAx2FX/b2VmQmj0g==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-gnu@1.3.96': - resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.96.tgz} + resolution: {integrity: sha512-USdaZu8lTIkm4Yf9cogct/j5eqtdZqTgcTib4I+NloUW0E/hySou3eSyp3V2UAA1qyuC72ld1otXuyKBna0YKQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-musl@1.10.4': - resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.4.tgz} + resolution: {integrity: sha512-A76lIAeyQnHCVt0RL/pG+0er8Qk9+acGJqSZOZm67Ve3B0oqMd871kPtaHBM0BW3OZAhoILgfHW3Op9Q3mx3Cw==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-linux-x64-musl@1.3.96': - resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==, tarball: https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.96.tgz} + resolution: {integrity: sha512-QYErutd+G2SNaCinUVobfL7jWWjGTI0QEoQ6hqTp7PxCJS/dmKmj3C5ZkvxRYcq7XcZt7ovrYCTwPTHzt6lZBg==} engines: {node: '>=10'} cpu: [x64] os: [linux] '@swc/core-win32-arm64-msvc@1.10.4': - resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.4.tgz} + resolution: {integrity: sha512-e6j5kBu4fIY7fFxFxnZI0MlEovRvp50Lg59Fw+DVbtqHk3C85dckcy5xKP+UoXeuEmFceauQDczUcGs19SRGSQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] '@swc/core-win32-arm64-msvc@1.3.96': - resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==, tarball: https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.96.tgz} + resolution: {integrity: sha512-hjGvvAduA3Un2cZ9iNP4xvTXOO4jL3G9iakhFsgVhpkU73SGmK7+LN8ZVBEu4oq2SUcHO6caWvnZ881cxGuSpg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] '@swc/core-win32-ia32-msvc@1.10.4': - resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.4.tgz} + resolution: {integrity: sha512-RSYHfdKgNXV/amY5Tqk1EWVsyQnhlsM//jeqMLw5Fy9rfxP592W9UTumNikNRPdjI8wKKzNMXDb1U29tQjN0dg==} engines: {node: '>=10'} cpu: [ia32] os: [win32] '@swc/core-win32-ia32-msvc@1.3.96': - resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==, tarball: https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.96.tgz} + resolution: {integrity: sha512-Far2hVFiwr+7VPCM2GxSmbh3ikTpM3pDombE+d69hkedvYHYZxtTF+2LTKl/sXtpbUnsoq7yV/32c9R/xaaWfw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] '@swc/core-win32-x64-msvc@1.10.4': - resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.4.tgz} + resolution: {integrity: sha512-1ujYpaqfqNPYdwKBlvJnOqcl+Syn3UrQ4XE0Txz6zMYgyh6cdU6a3pxqLqIUSJ12MtXRA9ZUhEz1ekU3LfLWXw==} engines: {node: '>=10'} cpu: [x64] os: [win32] '@swc/core-win32-x64-msvc@1.3.96': - resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==, tarball: https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.96.tgz} + resolution: {integrity: sha512-4VbSAniIu0ikLf5mBX81FsljnfqjoVGleEkCQv4+zRlyZtO3FHoDPkeLVoy6WRlj7tyrRcfUJ4mDdPkbfTO14g==} engines: {node: '>=10'} cpu: [x64] os: [win32] @@ -3346,7 +3381,7 @@ packages: optional: true '@testing-library/dom@10.4.0': - resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==, tarball: https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz} + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} '@testing-library/jest-dom@6.6.3': @@ -3369,7 +3404,7 @@ packages: optional: true '@tootallnate/quickjs-emscripten@0.23.0': - resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==, tarball: https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz} + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} @@ -3385,7 +3420,7 @@ packages: resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} '@types/aria-query@5.0.4': - resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==, tarball: https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz} + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -3415,7 +3450,7 @@ packages: resolution: {integrity: sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==} '@types/cookie@0.6.0': - resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==, tarball: https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz} + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -3550,7 +3585,7 @@ packages: resolution: {integrity: sha512-4tgJ1Z3elF/tOMpA8JLVuR9spt9Ynsf7+JjqsQ2IqtiPJtcLoHoXcT6qU4E10cPFqyXX5HDm9QwIzZhBSkLxsw==} '@types/parse-path@7.0.3': - resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==, tarball: https://registry.npmjs.org/@types/parse-path/-/parse-path-7.0.3.tgz} + resolution: {integrity: sha512-LriObC2+KYZD3FzCrgWGv/qufdUy4eXrxcLgQMfYXgPbLIecKIsVBaQgUPmxSSLcjmYbDTQbMgr6qr6l/eb7Bg==} '@types/postcss-import@14.0.3': resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==} @@ -3582,7 +3617,7 @@ packages: resolution: {integrity: sha512-uLGJ87j6Sz8UaBAooU0T6lWJ0dBmjZgN1PZTrj05TNql2/XpC6+4HhMT5syIdFUUt+FASfCeLLv4kBygNU+8qA==} '@types/react-test-renderer@19.0.0': - resolution: {integrity: sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==, tarball: https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.0.0.tgz} + resolution: {integrity: sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==} '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} @@ -3593,7 +3628,7 @@ packages: resolution: {integrity: sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==} '@types/resolve@1.20.2': - resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, tarball: https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz} + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} '@types/responselike@1.0.3': resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} @@ -3661,7 +3696,7 @@ packages: resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} '@types/yauzl@2.10.3': - resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==, tarball: https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz} + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -4134,7 +4169,7 @@ packages: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} ansi-align@3.0.1: - resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==, tarball: https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz} + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} ansi-colors@1.1.0: resolution: {integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==} @@ -4217,7 +4252,7 @@ packages: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, tarball: https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz} + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} aria-query@5.3.2: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} @@ -4319,7 +4354,7 @@ packages: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} ast-types@0.13.4: - resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==, tarball: https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz} + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} engines: {node: '>=4'} ast-types@0.16.1: @@ -4339,7 +4374,7 @@ packages: engines: {node: '>= 10.13.0'} async-retry@1.3.3: - resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==, tarball: https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz} + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} async-settle@2.0.0: resolution: {integrity: sha512-Obu/KE8FurfQRN6ODdHN9LuXqwC+JFIM9NRyZqJJ4ZfLJmIYN9Rg0/kb+wF70VV5+fJusTMQlJ1t5rF7J/ETdg==} @@ -4359,7 +4394,7 @@ packages: engines: {node: '>= 4.0.0'} atomically@2.0.3: - resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==, tarball: https://registry.npmjs.org/atomically/-/atomically-2.0.3.tgz} + resolution: {integrity: sha512-kU6FmrwZ3Lx7/7y3hPS5QnbJfaohcIul5fGqf7ok+4KklIEk9tJ0C2IQPdacSbVUWv6zVHXEBWoWd6NrVMT7Cw==} autoprefixer@10.4.20: resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} @@ -4501,13 +4536,13 @@ packages: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} bare-events@2.5.2: - resolution: {integrity: sha512-KSdMqLj1ZERZMP1PTmnLK7SqJu9z9/SbwUUPZly2puMtfVcytC+jl6mb/9XYiqq0PXcx1rNDS+Qvl1g54Lho6A==, tarball: https://registry.npmjs.org/bare-events/-/bare-events-2.5.2.tgz} + resolution: {integrity: sha512-KSdMqLj1ZERZMP1PTmnLK7SqJu9z9/SbwUUPZly2puMtfVcytC+jl6mb/9XYiqq0PXcx1rNDS+Qvl1g54Lho6A==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} basic-ftp@5.0.5: - resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==, tarball: https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz} + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} engines: {node: '>=10.0.0'} batch@0.6.1: @@ -4517,7 +4552,7 @@ packages: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} before-after-hook@3.0.2: - resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==, tarball: https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz} + resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==} big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} @@ -4556,7 +4591,7 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} boxen@8.0.1: - resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==, tarball: https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz} + resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==} engines: {node: '>=18'} brace-expansion@1.1.11: @@ -4616,7 +4651,7 @@ packages: hasBin: true bundle-name@4.1.0: - resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, tarball: https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz} + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} bundle-require@5.1.0: @@ -4683,7 +4718,7 @@ packages: engines: {node: '>=10'} camelcase@8.0.0: - resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==, tarball: https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz} + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} caniuse-api@3.0.0: @@ -4775,7 +4810,7 @@ packages: engines: {node: '>= 0.8.0'} chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, tarball: https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz} + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} chokidar@4.0.3: @@ -4795,7 +4830,7 @@ packages: engines: {node: '>=8'} ci-info@4.1.0: - resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==, tarball: https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz} + resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==} engines: {node: '>=8'} citty@0.1.6: @@ -4824,7 +4859,7 @@ packages: engines: {node: '>=6'} cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==, tarball: https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz} + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} cli-cursor@3.1.0: @@ -4999,7 +5034,7 @@ packages: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} configstore@7.0.0: - resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==, tarball: https://registry.npmjs.org/configstore/-/configstore-7.0.0.tgz} + resolution: {integrity: sha512-yk7/5PN5im4qwz0WFZW3PXnzHgPu9mX29Y8uZ3aefe2lBPC1FYttWZRcaW9fKkT0pBCJyuQ2HfbmPVaODi9jcQ==} engines: {node: '>=18'} confusing-browser-globals@1.0.11: @@ -5054,7 +5089,7 @@ packages: engines: {node: '>= 0.6'} cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==, tarball: https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz} + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} engines: {node: '>=18'} copy-anything@2.0.6: @@ -5259,7 +5294,7 @@ packages: engines: {node: '>=0.10'} data-uri-to-buffer@6.0.2: - resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==, tarball: https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz} + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} data-urls@5.0.0: @@ -5375,15 +5410,15 @@ packages: engines: {node: '>=0.10.0'} deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, tarball: https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz} + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} default-browser-id@5.0.0: - resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, tarball: https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz} + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} engines: {node: '>=18'} default-browser@5.2.1: - resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, tarball: https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz} + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} default-gateway@6.0.3: @@ -5405,7 +5440,7 @@ packages: engines: {node: '>=8'} define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, tarball: https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz} + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} define-properties@1.2.1: @@ -5416,11 +5451,11 @@ packages: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} degenerator@5.0.1: - resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==, tarball: https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz} + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} engines: {node: '>= 14'} del@8.0.0: - resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==, tarball: https://registry.npmjs.org/del/-/del-8.0.0.tgz} + resolution: {integrity: sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==} engines: {node: '>=18'} delayed-stream@1.0.0: @@ -5494,7 +5529,7 @@ packages: engines: {node: '>=6.0.0'} dom-accessibility-api@0.5.16: - resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==, tarball: https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz} + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dom-accessibility-api@0.6.3: resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} @@ -5536,7 +5571,7 @@ packages: engines: {node: '>=8'} dot-prop@9.0.0: - resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==, tarball: https://registry.npmjs.org/dot-prop/-/dot-prop-9.0.0.tgz} + resolution: {integrity: sha512-1gxPBJpI/pcjQhKgIU91II6Wkay+dLcN3M6rf2uwP8hRur3HtQXjVrdAK3sjC0piaEuxzMwjXChcETiJl47lAQ==} engines: {node: '>=18'} dotenv-expand@11.0.7: @@ -5589,6 +5624,9 @@ packages: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} engines: {node: '>=12'} + emoji-regex-xs@1.0.0: + resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} + emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} @@ -5622,10 +5660,10 @@ packages: engines: {node: '>=8.6'} entities@2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, tarball: https://registry.npmjs.org/entities/-/entities-2.2.0.tgz} + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, tarball: https://registry.npmjs.org/entities/-/entities-4.5.0.tgz} + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} env-paths@2.2.1: @@ -5642,7 +5680,7 @@ packages: engines: {node: '>=18'} errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://registry.npmjs.org/errno/-/errno-0.1.8.tgz} + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} hasBin: true error-ex@1.3.2: @@ -5719,7 +5757,7 @@ packages: engines: {node: '>=6'} escape-goat@4.0.0: - resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==, tarball: https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz} + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} engines: {node: '>=12'} escape-html@1.0.3: @@ -5742,7 +5780,7 @@ packages: engines: {node: '>=12'} escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, tarball: https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz} + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} hasBin: true @@ -6114,7 +6152,7 @@ packages: engines: {node: '>=16.17'} execa@9.5.2: - resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==, tarball: https://registry.npmjs.org/execa/-/execa-9.5.2.tgz} + resolution: {integrity: sha512-EHlpxMCpHWSAh1dgS6bVeoLAXGnJNdR93aabr4QCGbzOM73o5XmRfM/e5FUqsw3aagP8S8XEWUWFAxnRBnAF0Q==} engines: {node: ^18.19.0 || >=20.5.0} executable@4.1.1: @@ -6177,7 +6215,7 @@ packages: engines: {node: '>=10.13.0'} fast-content-type-parse@2.0.1: - resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==, tarball: https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz} + resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -6240,7 +6278,7 @@ packages: engines: {node: '>=8'} figures@6.1.0: - resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==, tarball: https://registry.npmjs.org/figures/-/figures-6.1.0.tgz} + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} file-entry-cache@6.0.1: @@ -6449,7 +6487,7 @@ packages: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, tarball: https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz} + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -6522,7 +6560,7 @@ packages: engines: {node: '>=16'} get-stream@9.0.1: - resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==, tarball: https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz} + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} get-symbol-description@1.1.0: @@ -6533,7 +6571,7 @@ packages: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} get-uri@6.0.4: - resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==, tarball: https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz} + resolution: {integrity: sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==} engines: {node: '>= 14'} getos@3.2.1: @@ -6555,10 +6593,10 @@ packages: hasBin: true git-up@8.0.1: - resolution: {integrity: sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==, tarball: https://registry.npmjs.org/git-up/-/git-up-8.0.1.tgz} + resolution: {integrity: sha512-2XFu1uNZMSjkyetaF+8rqn6P0XqpMq/C+2ycjI6YwrIKcszZ5/WR4UubxjN0lILOKqLkLaHDaCr2B6fP1cke6g==} git-url-parse@16.0.0: - resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==, tarball: https://registry.npmjs.org/git-url-parse/-/git-url-parse-16.0.0.tgz} + resolution: {integrity: sha512-Y8iAF0AmCaqXc6a5GYgPQW9ESbncNLOL+CeQAJRhmWUOmnPkKpBYeWYp4mFd3LA5j53CdGDdslzX12yEBVHQQg==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -6672,7 +6710,7 @@ packages: engines: {node: '>=8.6'} graceful-fs@4.2.10: - resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, tarball: https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz} + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -6723,11 +6761,11 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} happy-dom@14.12.3: - resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==, tarball: https://registry.npmjs.org/happy-dom/-/happy-dom-14.12.3.tgz} + resolution: {integrity: sha512-vsYlEs3E9gLwA1Hp+w3qzu+RUDFf4VTT8cyKqVICoZ2k7WM++Qyd2LwzyTi5bqMJFiIC/vNpTDYuxdreENRK/g==} engines: {node: '>=16.0.0'} happy-dom@17.1.0: - resolution: {integrity: sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==, tarball: https://registry.npmjs.org/happy-dom/-/happy-dom-17.1.0.tgz} + resolution: {integrity: sha512-9tUhXyePCjzUMycaHS/IzrIpF69xiq/laAT7golk4MtZ6t8ft5+Rv7U3lfrs2b4NMH0JTL3EhZzjfahrPmOnaQ==} engines: {node: '>=18.0.0'} has-bigints@1.1.0: @@ -6763,15 +6801,24 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + hast-util-parse-selector@2.2.5: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} hast-util-to-estree@3.1.1: resolution: {integrity: sha512-IWtwwmPskfSmma9RpzCappDUitC8t5jhAynHhc1m2+5trOgsrp7txscUSavc5Ic8PATyAjfrCK1wgtxh2cICVQ==} + hast-util-to-html@9.0.5: + resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} + hast-util-to-jsx-runtime@2.3.2: resolution: {integrity: sha512-1ngXYb+V9UT5h+PxNRa1O1FYguZK/XL+gkeqvp7EdHlB9oHUG0eYRo/vY5inBdcqo3RkPMC58/H94HvkbfGdyg==} + hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} + hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -6848,6 +6895,9 @@ packages: html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} + html-void-elements@3.0.0: + resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + html-webpack-plugin@5.6.3: resolution: {integrity: sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==} engines: {node: '>=10.13.0'} @@ -6921,7 +6971,7 @@ packages: engines: {node: '>=16.17.0'} human-signals@8.0.0: - resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==, tarball: https://registry.npmjs.org/human-signals/-/human-signals-8.0.0.tgz} + resolution: {integrity: sha512-/1/GPCpDUCCYwlERiYjxoczfP0zfvZMU/OWgQPMya9AbAE24vseigFdhAMObpc8Q4lc/kjutPfUddDYyAmejnA==} engines: {node: '>=18.18.0'} husky@9.1.7: @@ -6958,7 +7008,7 @@ packages: engines: {node: '>= 4'} image-size@0.5.5: - resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz} + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} hasBin: true @@ -7017,7 +7067,7 @@ packages: resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==} inquirer@12.3.0: - resolution: {integrity: sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==, tarball: https://registry.npmjs.org/inquirer/-/inquirer-12.3.0.tgz} + resolution: {integrity: sha512-3NixUXq+hM8ezj2wc7wC37b32/rHq1MwNZDYdvx+d6jokOD+r+i8Q4Pkylh9tISYP114A128LCX8RKhopC5RfQ==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -7043,7 +7093,7 @@ packages: engines: {node: '>=4'} ip-address@9.0.5: - resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==, tarball: https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz} + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -7128,7 +7178,7 @@ packages: hasBin: true is-docker@3.0.0: - resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, tarball: https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz} + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true @@ -7179,12 +7229,12 @@ packages: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} is-in-ci@1.0.0: - resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==, tarball: https://registry.npmjs.org/is-in-ci/-/is-in-ci-1.0.0.tgz} + resolution: {integrity: sha512-eUuAjybVTHMYWm/U+vBO1sY/JOCgoPCXRxzdju0K+K0BiGW0SChEL1MLC0PoCIR1OlPo5YAp8HuQoUlsWEICwg==} engines: {node: '>=18'} hasBin: true is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, tarball: https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz} + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} hasBin: true @@ -7193,7 +7243,7 @@ packages: engines: {node: '>=10'} is-installed-globally@1.0.0: - resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==, tarball: https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz} + resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==} engines: {node: '>=18'} is-interactive@1.0.0: @@ -7201,7 +7251,7 @@ packages: engines: {node: '>=8'} is-interactive@2.0.0: - resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==, tarball: https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz} + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} is-invalid-path@1.0.2: @@ -7216,7 +7266,7 @@ packages: resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} is-module@1.0.0: - resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, tarball: https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz} + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} is-natural-number@4.0.1: resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} @@ -7226,7 +7276,7 @@ packages: engines: {node: '>=0.10.0'} is-npm@6.0.0: - resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==, tarball: https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz} + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-number-object@1.1.1: @@ -7249,7 +7299,7 @@ packages: resolution: {integrity: sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==} is-path-cwd@3.0.0: - resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==, tarball: https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz} + resolution: {integrity: sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-path-inside@3.0.3: @@ -7307,7 +7357,7 @@ packages: engines: {node: '>= 0.4'} is-ssh@1.4.0: - resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==, tarball: https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz} + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} is-stream@1.1.0: resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} @@ -7322,7 +7372,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} is-stream@4.0.1: - resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==, tarball: https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz} + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} is-string@1.1.1: @@ -7353,11 +7403,11 @@ packages: engines: {node: '>=10'} is-unicode-supported@1.3.0: - resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz} + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} engines: {node: '>=12'} is-unicode-supported@2.1.0: - resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, tarball: https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz} + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} is-valid-glob@1.0.0: @@ -7388,7 +7438,7 @@ packages: engines: {node: '>=8'} is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, tarball: https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz} + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} isarray@0.0.1: @@ -7415,7 +7465,7 @@ packages: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} issue-parser@7.0.1: - resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==, tarball: https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz} + resolution: {integrity: sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==} engines: {node: ^18.17 || >=20.6.1} istanbul-lib-coverage@3.2.2: @@ -7652,7 +7702,7 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} jsbn@1.1.0: - resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==, tarball: https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz} + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} jscodeshift@17.1.1: resolution: {integrity: sha512-4vq5B1sD37aa9qed3zWq2XQPun5XjxebIv+Folr57lt8B4HLGDHEz1UG7pfcxzSaelzPbcY7yZSs033/S0i6wQ==} @@ -7780,7 +7830,7 @@ packages: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} ky@1.7.4: - resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==, tarball: https://registry.npmjs.org/ky/-/ky-1.7.4.tgz} + resolution: {integrity: sha512-zYEr/gh7uLW2l4su11bmQ2M9xLgQLjyvx58UyNM/6nuqyWFHPX5ktMjvpev3F8QWdjSsHUpnWew4PBCswBNuMQ==} engines: {node: '>=18'} language-subtag-registry@0.3.23: @@ -7799,7 +7849,7 @@ packages: engines: {node: '>=8'} latest-version@9.0.0: - resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==, tarball: https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz} + resolution: {integrity: sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==} engines: {node: '>=18'} launch-editor@2.9.1: @@ -7844,61 +7894,61 @@ packages: engines: {node: '>=10.13.0'} lightningcss-darwin-arm64@1.28.2: - resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==, tarball: https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.2.tgz} + resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] lightningcss-darwin-x64@1.28.2: - resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==, tarball: https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.2.tgz} + resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] lightningcss-freebsd-x64@1.28.2: - resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==, tarball: https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.2.tgz} + resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] lightningcss-linux-arm-gnueabihf@1.28.2: - resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==, tarball: https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.2.tgz} + resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] lightningcss-linux-arm64-gnu@1.28.2: - resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.2.tgz} + resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-arm64-musl@1.28.2: - resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==, tarball: https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.2.tgz} + resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] lightningcss-linux-x64-gnu@1.28.2: - resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.2.tgz} + resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-linux-x64-musl@1.28.2: - resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==, tarball: https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.2.tgz} + resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] lightningcss-win32-arm64-msvc@1.28.2: - resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==, tarball: https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.2.tgz} + resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] lightningcss-win32-x64-msvc@1.28.2: - resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==, tarball: https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.2.tgz} + resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] @@ -7915,7 +7965,7 @@ packages: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} linguist-languages@7.27.0: - resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==, tarball: https://registry.npmjs.org/linguist-languages/-/linguist-languages-7.27.0.tgz} + resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -7985,7 +8035,7 @@ packages: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} lodash.capitalize@4.2.1: - resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==, tarball: https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz} + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} lodash.clonedeep@4.5.0: resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} @@ -7994,7 +8044,7 @@ packages: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} lodash.escaperegexp@4.1.2: - resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==, tarball: https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz} + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} @@ -8003,7 +8053,7 @@ packages: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} lodash.isstring@4.0.1: - resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==, tarball: https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz} + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} lodash.kebabcase@4.1.1: resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} @@ -8036,7 +8086,7 @@ packages: resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} lodash.uniqby@4.7.0: - resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==, tarball: https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz} + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} lodash.upperfirst@4.3.1: resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} @@ -8049,7 +8099,7 @@ packages: engines: {node: '>=10'} log-symbols@6.0.0: - resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==, tarball: https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz} + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} engines: {node: '>=18'} log-update@4.0.0: @@ -8116,6 +8166,9 @@ packages: lowlight@1.20.0: resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} + lowlight@3.3.0: + resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} @@ -8134,18 +8187,18 @@ packages: engines: {node: '>=10'} lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, tarball: https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz} + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} engines: {node: '>=12'} lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==, tarball: https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz} + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true lzutf8@0.6.3: resolution: {integrity: sha512-CAkF9HKrM+XpB0f3DepQ2to2iUEo0zrbh+XgBqgNBc1+k8HMM3u/YSfHI3Dr4GmoTIez2Pr/If1XFl3rU26AwA==} macos-release@3.3.0: - resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==, tarball: https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz} + resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} magic-string@0.30.17: @@ -8448,7 +8501,7 @@ packages: engines: {node: '>= 0.6'} mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://registry.npmjs.org/mime/-/mime-1.6.0.tgz} + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} hasBin: true @@ -8531,10 +8584,10 @@ packages: resolution: {integrity: sha512-o7bOfrU28MEMCBWo83nXv0ROQSBFxJcfCl4f2wTYqah64ipC5RGqLJfvWJTWhlQt2ECVwspSzM8LgvnfMo7TEQ==} miniprogram-compiler@0.2.3: - resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==, tarball: https://registry.npmjs.org/miniprogram-compiler/-/miniprogram-compiler-0.2.3.tgz} + resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==} miniprogram-exparser@2.29.1: - resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==, tarball: https://registry.npmjs.org/miniprogram-exparser/-/miniprogram-exparser-2.29.1.tgz} + resolution: {integrity: sha512-f2LUVYcQ5O664nOHhrEbtR//hlqln88dRY0mIwuRncJfuXMCdK9FBk0vzNDG6EgaaeTt3iGLeFQLRHlhYktkXw==} miniprogram-simulate@1.6.1: resolution: {integrity: sha512-WO+T1A1fYZV6qW4mLNEl/+Rtdpw339mPd8q0KkyGHUFbRCIMzIHVutn2UrhUbn6UWZpkGurKwDUckNkpLhJ9QA==} @@ -8614,7 +8667,7 @@ packages: hasBin: true native-request@1.1.2: - resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==, tarball: https://registry.npmjs.org/native-request/-/native-request-1.1.2.tgz} + resolution: {integrity: sha512-/etjwrK0J4Ebbcnt35VMWnfiUX/B04uwGJxyJInagxDqf2z5drSt/lsOvEMWGYunz1kaLZAFrV4NDAbOoDKvAQ==} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -8635,11 +8688,11 @@ packages: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} netmask@2.0.2: - resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==, tarball: https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz} + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} engines: {node: '>= 0.4.0'} new-github-release-url@2.0.0: - resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==, tarball: https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz} + resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} no-case@2.3.2: @@ -8701,7 +8754,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} npm-run-path@6.0.0: - resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==, tarball: https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz} + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} nth-check@2.1.1: @@ -8788,8 +8841,11 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + oniguruma-to-es@3.1.1: + resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==} + open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, tarball: https://registry.npmjs.org/open/-/open-10.1.0.tgz} + resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} open@8.4.2: @@ -8805,11 +8861,11 @@ packages: engines: {node: '>=10'} ora@8.1.1: - resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==, tarball: https://registry.npmjs.org/ora/-/ora-8.1.1.tgz} + resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==} engines: {node: '>=18'} os-name@6.0.0: - resolution: {integrity: sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==, tarball: https://registry.npmjs.org/os-name/-/os-name-6.0.0.tgz} + resolution: {integrity: sha512-bv608E0UX86atYi2GMGjDe0vF/X1TJjemNS8oEW6z22YW1Rc3QykSYoGfkQbX0zZX9H0ZB6CQP/3GTf1I5hURg==} engines: {node: '>=18'} os-tmpdir@1.0.2: @@ -8880,7 +8936,7 @@ packages: engines: {node: '>=10'} p-map@7.0.3: - resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==, tarball: https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz} + resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} p-retry@4.6.2: @@ -8896,18 +8952,18 @@ packages: engines: {node: '>=6'} pac-proxy-agent@7.1.0: - resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==, tarball: https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.1.0.tgz} + resolution: {integrity: sha512-Z5FnLVVZSnX7WjBg0mhDtydeRZ1xMcATZThjySQUHqr+0ksP8kqaw23fNKkaaN/Z8gwLUs/W7xdl0I75eP2Xyw==} engines: {node: '>= 14'} pac-resolver@7.0.1: - resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==, tarball: https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz} + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} engines: {node: '>= 14'} package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} package-json@10.0.1: - resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==, tarball: https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz} + resolution: {integrity: sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==} engines: {node: '>=18'} package-json@6.5.0: @@ -8943,7 +8999,7 @@ packages: engines: {node: '>=8'} parse-ms@4.0.0: - resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==, tarball: https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz} + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} parse-passwd@1.0.0: @@ -8951,10 +9007,10 @@ packages: engines: {node: '>=0.10.0'} parse-path@7.0.0: - resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==, tarball: https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz} + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} parse-url@9.2.0: - resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==, tarball: https://registry.npmjs.org/parse-url/-/parse-url-9.2.0.tgz} + resolution: {integrity: sha512-bCgsFI+GeGWPAvAiUv63ZorMeif3/U0zaXABGJbOWt5OH2KCaPHF6S+0ok4aqM9RuIPGyZdx9tR9l13PsW4AYQ==} engines: {node: '>=14.13.0'} parse5-htmlparser2-tree-adapter@6.0.1: @@ -9047,7 +9103,7 @@ packages: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} pathe@2.0.3: - resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==, tarball: https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz} + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} @@ -9488,7 +9544,7 @@ packages: engines: {node: '>= 10'} pretty-format@27.5.1: - resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, tarball: https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz} + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} pretty-format@29.7.0: @@ -9496,7 +9552,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} pretty-ms@9.2.0: - resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==, tarball: https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz} + resolution: {integrity: sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==} engines: {node: '>=18'} pretty-time@1.1.0: @@ -9537,18 +9593,21 @@ packages: property-information@6.5.0: resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} + property-information@7.0.0: + resolution: {integrity: sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} protocols@2.0.1: - resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==, tarball: https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz} + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} proxy-agent@6.5.0: - resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==, tarball: https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz} + resolution: {integrity: sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==} engines: {node: '>= 14'} proxy-from-env@1.0.0: @@ -9583,7 +9642,7 @@ packages: engines: {node: '>=6'} pupa@3.1.0: - resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==, tarball: https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz} + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} engines: {node: '>=12.20'} pure-rand@6.1.0: @@ -9671,14 +9730,14 @@ packages: engines: {node: '>=0.10.0'} react-router-dom@7.1.5: - resolution: {integrity: sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==, tarball: https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.5.tgz} + resolution: {integrity: sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' react-dom: '>=18' react-router@7.1.5: - resolution: {integrity: sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==, tarball: https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz} + resolution: {integrity: sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==} engines: {node: '>=20.0.0'} peerDependencies: react: '>=18' @@ -9811,6 +9870,15 @@ packages: regex-parser@2.3.0: resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + regex-recursion@6.0.2: + resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} + + regex-utilities@2.3.0: + resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} + + regex@6.0.1: + resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==} + regexp-ast-analysis@0.7.1: resolution: {integrity: sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} @@ -9832,7 +9900,7 @@ packages: engines: {node: '>=6.0.0'} registry-auth-token@5.0.3: - resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==, tarball: https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.3.tgz} + resolution: {integrity: sha512-1bpc9IyC+e+CNFRaWyn77tk4xGG4PPUyfakSmA6F6cvUDjrm58dfyJ3II+9yb10EDkHoy1LaPSmHaWLOH3m6HA==} engines: {node: '>=14'} registry-url@5.1.0: @@ -9840,7 +9908,7 @@ packages: engines: {node: '>=8'} registry-url@6.0.1: - resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==, tarball: https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz} + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} engines: {node: '>=12'} regjsgen@0.8.0: @@ -9854,6 +9922,9 @@ packages: resolution: {integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==} hasBin: true + rehype-highlight@7.0.2: + resolution: {integrity: sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==} + rehype-recma@1.0.0: resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} @@ -9862,7 +9933,7 @@ packages: engines: {node: '>= 0.10'} release-it@18.1.2: - resolution: {integrity: sha512-HOVRcicehCgoCsPFOu0iCBlEC8GDOoKS5s6ICkWmqomGEoZtRQ88D3RCsI5MciSU8vAQU+aWZW2z57NQNNb74w==, tarball: https://registry.npmjs.org/release-it/-/release-it-18.1.2.tgz} + resolution: {integrity: sha512-HOVRcicehCgoCsPFOu0iCBlEC8GDOoKS5s6ICkWmqomGEoZtRQ88D3RCsI5MciSU8vAQU+aWZW2z57NQNNb74w==} engines: {node: ^20.9.0 || >=22.0.0} hasBin: true @@ -10039,7 +10110,7 @@ packages: hasBin: true run-applescript@7.0.0: - resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, tarball: https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz} + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} run-async@2.4.1: @@ -10047,7 +10118,7 @@ packages: engines: {node: '>=0.12.0'} run-async@3.0.0: - resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==, tarball: https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz} + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} engines: {node: '>=0.12.0'} run-parallel@1.2.0: @@ -10110,7 +10181,7 @@ packages: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==, tarball: https://registry.npmjs.org/sax/-/sax-1.4.1.tgz} + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -10168,7 +10239,7 @@ packages: hasBin: true semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, tarball: https://registry.npmjs.org/semver/-/semver-7.6.3.tgz} + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true @@ -10183,13 +10254,13 @@ packages: resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} seroval-plugins@1.1.1: - resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==, tarball: https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.1.1.tgz} + resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} engines: {node: '>=10'} peerDependencies: seroval: ^1.0 seroval@1.1.1: - resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==, tarball: https://registry.npmjs.org/seroval/-/seroval-1.1.1.tgz} + resolution: {integrity: sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==} engines: {node: '>=10'} serve-index@1.9.1: @@ -10201,7 +10272,7 @@ packages: engines: {node: '>= 0.8.0'} set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==, tarball: https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz} + resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} @@ -10242,6 +10313,9 @@ packages: engines: {node: '>=4'} hasBin: true + shiki@3.0.0: + resolution: {integrity: sha512-x6MMdYN9auPGx7kMFtyKbaj65eCdetfrfkvQZwqisZLnGMnAZsZxOpcWD0ElvLPFWHOSMukVyN9Opm7TxQjnZA==} + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -10287,7 +10361,7 @@ packages: engines: {node: '>=8'} slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, tarball: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz} + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} slashes@3.0.12: @@ -10310,7 +10384,7 @@ packages: engines: {node: '>=18'} smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, tarball: https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz} + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} smob@1.5.0: @@ -10323,15 +10397,15 @@ packages: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==, tarball: https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz} + resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} engines: {node: '>= 14'} socks@2.8.3: - resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==, tarball: https://registry.npmjs.org/socks/-/socks-2.8.3.tgz} + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} solid-js@1.9.3: - resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==, tarball: https://registry.npmjs.org/solid-js/-/solid-js-1.9.3.tgz} + resolution: {integrity: sha512-5ba3taPoZGt9GY3YlsCB24kCg0Lv/rie/HTD4kG6h4daZZz7+yK02xn8Vx8dLYBc9i6Ps5JwAbEiqjmKaLB3Ag==} sort-keys-length@1.0.1: resolution: {integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==} @@ -10421,7 +10495,7 @@ packages: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} sprintf-js@1.1.3: - resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==, tarball: https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz} + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -10458,7 +10532,7 @@ packages: resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} stdin-discarder@0.2.2: - resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==, tarball: https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz} + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} stream-combiner@0.0.4: @@ -10505,7 +10579,7 @@ packages: engines: {node: '>=18'} string.fromcodepoint@0.2.1: - resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==, tarball: https://registry.npmjs.org/string.fromcodepoint/-/string.fromcodepoint-0.2.1.tgz} + resolution: {integrity: sha512-n69H31OnxSGSZyZbgBlvYIXlrMhJQ0dQAX1js1QDhpaUH6zmU3QYlj07bCwCNlPOu3oRXIubGPl2gDGnHsiCqg==} string.prototype.includes@2.0.1: resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} @@ -10574,7 +10648,7 @@ packages: engines: {node: '>=12'} strip-final-newline@4.0.0: - resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==, tarball: https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz} + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} strip-indent@3.0.0: @@ -10597,7 +10671,7 @@ packages: engines: {node: '>=0.10.0'} stubborn-fs@1.2.5: - resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==, tarball: https://registry.npmjs.org/stubborn-fs/-/stubborn-fs-1.2.5.tgz} + resolution: {integrity: sha512-H2N9c26eXjzL/S/K+i/RHHcFanE74dptvvjM8iwzwbVcWY/zjBbgRqF3K0DY4+OD+uTTASTBvDoxPDaPN02D7g==} style-loader@3.3.4: resolution: {integrity: sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==} @@ -10633,7 +10707,7 @@ packages: optional: true stylus@0.64.0: - resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==, tarball: https://registry.npmjs.org/stylus/-/stylus-0.64.0.tgz} + resolution: {integrity: sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==} engines: {node: '>=16'} hasBin: true @@ -10801,7 +10875,7 @@ packages: engines: {node: '>=14.0.0'} tinyrainbow@2.0.0: - resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==, tarball: https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz} + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} engines: {node: '>=14.0.0'} tinyspy@2.2.1: @@ -10967,7 +11041,7 @@ packages: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} turbo-stream@2.4.0: - resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==, tarball: https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz} + resolution: {integrity: sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==} turndown-plugin-gfm@1.0.2: resolution: {integrity: sha512-vwz9tfvF7XN/jE0dGoBei3FXWuvll78ohzCZQuOb+ZjWrs3a0XhQVomJEb2Qh4VHTPNRO4GPZh0V7VRbiWwkRg==} @@ -11011,7 +11085,7 @@ packages: engines: {node: '>=12.20'} type-fest@4.31.0: - resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==, tarball: https://registry.npmjs.org/type-fest/-/type-fest-4.31.0.tgz} + resolution: {integrity: sha512-yCxltHW07Nkhv/1F6wWBr8kz+5BGMfP+RbRSYFnegVb0qV/UMT0G0ElBloPVerqn4M2ZV80Ir1FtCcYv1cT6vQ==} engines: {node: '>=16'} type-is@1.6.18: @@ -11098,11 +11172,11 @@ packages: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} undici@6.21.1: - resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==, tarball: https://registry.npmjs.org/undici/-/undici-6.21.1.tgz} + resolution: {integrity: sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==} engines: {node: '>=18.17'} unescape-js@1.1.4: - resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==, tarball: https://registry.npmjs.org/unescape-js/-/unescape-js-1.1.4.tgz} + resolution: {integrity: sha512-42SD8NOQEhdYntEiUQdYq/1V/YHwr1HLwlHuTJB5InVVdOSbgI6xu8jK5q65yIzuFCfczzyDF/7hbGzVbyCw0g==} unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} @@ -11125,12 +11199,15 @@ packages: engines: {node: '>=18'} unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, tarball: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz} + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} unified@11.0.5: resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + unist-util-find-after@5.0.0: + resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} + unist-util-is@6.0.0: resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} @@ -11156,7 +11233,7 @@ packages: resolution: {integrity: sha512-i3XDhyfg0znwCu2Ue1zwWIWgfed+XYDqlUYXgriGnS58tzO3RgKHe4KWtq9HLQOl/Tknnh0C6jEH0+FLTrrBiQ==} universal-user-agent@7.0.2: - resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==, tarball: https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz} + resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==} universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -11175,7 +11252,7 @@ packages: engines: {node: '>= 0.8'} unplugin@2.2.0: - resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==, tarball: https://registry.npmjs.org/unplugin/-/unplugin-2.2.0.tgz} + resolution: {integrity: sha512-m1ekpSwuOT5hxkJeZGRxO7gXbXT3gF26NjQ7GdVHoLoF8/nopLcd/QfPigpCy7i51oFHiRJg/CyHhj4vs2+KGw==} engines: {node: '>=18.12.0'} untildify@4.0.0: @@ -11189,7 +11266,7 @@ packages: browserslist: '>= 4.21.0' update-notifier@7.3.1: - resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==, tarball: https://registry.npmjs.org/update-notifier/-/update-notifier-7.3.1.tgz} + resolution: {integrity: sha512-+dwUY4L35XFYEzE+OAL3sarJdUioVovq+8f7lcIJ7wnmnYQV5UD1Y/lcwaMSyaQ6Bj3JMj1XSTjZbNLHn/19yA==} engines: {node: '>=18'} upper-case-first@2.0.2: @@ -11205,7 +11282,7 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} url-join@5.0.0: - resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==, tarball: https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz} + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} url-parse-lax@3.0.0: @@ -11476,10 +11553,10 @@ packages: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz} + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, tarball: https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz} + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} webpack-chain@6.5.1: @@ -11556,7 +11633,7 @@ packages: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, tarball: https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz} + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} engines: {node: '>=12'} whatwg-mimetype@4.0.0: @@ -11571,7 +11648,7 @@ packages: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} when-exit@2.1.3: - resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==, tarball: https://registry.npmjs.org/when-exit/-/when-exit-2.1.3.tgz} + resolution: {integrity: sha512-uVieSTccFIr/SFQdFWN/fFaQYmV37OKtuaGphMAzi4DmmUlrvRBJW5WSLkHyjNQY/ePJMz3LoiX9R3yy1Su6Hw==} which-boxed-primitive@1.1.1: resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} @@ -11604,17 +11681,17 @@ packages: hasBin: true widest-line@5.0.0: - resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==, tarball: https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz} + resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==} engines: {node: '>=18'} wildcard-match@5.1.4: - resolution: {integrity: sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==, tarball: https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.4.tgz} + resolution: {integrity: sha512-wldeCaczs8XXq7hj+5d/F38JE2r7EXgb6WQDM84RVwxy81T/sxB5e9+uZLK9Q9oNz1mlvjut+QtvgaOQFPVq/g==} wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} windows-release@6.0.1: - resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==, tarball: https://registry.npmjs.org/windows-release/-/windows-release-6.0.1.tgz} + resolution: {integrity: sha512-MS3BzG8QK33dAyqwxfYJCJ03arkwKaddUOvvnnlFdXLudflsQF6I8yAxrLBeQk4yO8wjdH/+ax0YzxJEDrOftg==} engines: {node: '>=18'} word-wrap@1.2.5: @@ -11661,7 +11738,7 @@ packages: optional: true xdg-basedir@5.1.0: - resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==, tarball: https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz} + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} engines: {node: '>=12'} xml-name-validator@4.0.0: @@ -11741,7 +11818,7 @@ packages: engines: {node: '>=18'} yoctocolors@2.1.1: - resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==, tarball: https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz} + resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==} engines: {node: '>=18'} yup@1.6.1: @@ -13764,7 +13841,7 @@ snapshots: transitivePeerDependencies: - react-dom - '@nutui/replace-icons@1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)': + '@nutui/replace-icons@1.0.3(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0)': dependencies: '@babel/cli': 7.26.4(@babel/core@7.26.0) '@babel/core': 7.26.0 @@ -13773,7 +13850,7 @@ snapshots: '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@types/babel__core': 7.20.5 '@types/babel__generator': 7.6.8 - vitest: 1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) + vitest: 1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) transitivePeerDependencies: - '@edge-runtime/vm' - '@types/node' @@ -14176,6 +14253,44 @@ snapshots: '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + hast-util-to-html: 9.0.5 + + '@shikijs/engine-javascript@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + oniguruma-to-es: 3.1.1 + + '@shikijs/engine-oniguruma@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + + '@shikijs/langs@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + + '@shikijs/markdown-it@3.0.0': + dependencies: + markdown-it: 14.1.0 + shiki: 3.0.0 + + '@shikijs/themes@3.0.0': + dependencies: + '@shikijs/types': 3.0.0 + + '@shikijs/types@3.0.0': + dependencies: + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + + '@shikijs/vscode-textmate@10.0.2': {} + '@sideway/address@4.1.5': dependencies: '@hapi/hoek': 9.3.0 @@ -14747,7 +14862,7 @@ snapshots: - webpack-chain - webpack-dev-server - '@tarojs/plugin-platform-harmony-ets@4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))': + '@tarojs/plugin-platform-harmony-ets@4.0.8-beta.1(@babel/core@7.26.0)(@swc/core@1.3.96(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))': dependencies: '@babel/preset-react': 7.26.3(@babel/core@7.26.0) '@tarojs/components': 4.0.8-beta.1(@tarojs/helper@4.0.8-beta.1(@swc/helpers@0.5.15))(@types/react@18.3.18)(html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(postcss@8.4.49)(react@18.3.1)(rollup@3.29.5)(webpack-chain@6.5.1)(webpack-dev-server@4.15.2(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))))(webpack@5.91.0(@swc/core@1.3.96(@swc/helpers@0.5.15))) @@ -14767,6 +14882,7 @@ snapshots: - esbuild - html-webpack-plugin - postcss + - react - rollup - supports-color - uglify-js @@ -17770,6 +17886,8 @@ snapshots: emittery@0.13.1: {} + emoji-regex-xs@1.0.0: {} + emoji-regex@10.4.0: {} emoji-regex@8.0.0: {} @@ -19525,6 +19643,10 @@ snapshots: dependencies: function-bind: 1.1.2 + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + hast-util-parse-selector@2.2.5: {} hast-util-to-estree@3.1.1: @@ -19548,6 +19670,20 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-html@9.0.5: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + ccount: 2.0.1 + comma-separated-tokens: 2.0.3 + hast-util-whitespace: 3.0.0 + html-void-elements: 3.0.0 + mdast-util-to-hast: 13.2.0 + property-information: 7.0.0 + space-separated-tokens: 2.0.2 + stringify-entities: 4.0.4 + zwitch: 2.0.4 + hast-util-to-jsx-runtime@2.3.2: dependencies: '@types/estree': 1.0.6 @@ -19568,6 +19704,13 @@ snapshots: transitivePeerDependencies: - supports-color + hast-util-to-text@4.0.2: + dependencies: + '@types/hast': 3.0.4 + '@types/unist': 3.0.3 + hast-util-is-element: 3.0.0 + unist-util-find-after: 5.0.0 + hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -19652,6 +19795,8 @@ snapshots: html-url-attributes@3.0.1: {} + html-void-elements@3.0.0: {} + html-webpack-plugin@5.6.3(webpack@5.91.0(@swc/core@1.10.4(@swc/helpers@0.5.15))): dependencies: '@types/html-minifier-terser': 6.1.0 @@ -21084,6 +21229,12 @@ snapshots: fault: 1.0.4 highlight.js: 10.7.3 + lowlight@3.3.0: + dependencies: + '@types/hast': 3.0.4 + devlop: 1.1.0 + highlight.js: 11.11.1 + lru-cache@10.4.3: {} lru-cache@11.0.2: {} @@ -22007,6 +22158,12 @@ snapshots: dependencies: mimic-function: 5.0.1 + oniguruma-to-es@3.1.1: + dependencies: + emoji-regex-xs: 1.0.0 + regex: 6.0.1 + regex-recursion: 6.0.2 + open@10.1.0: dependencies: default-browser: 5.2.1 @@ -22722,6 +22879,8 @@ snapshots: property-information@6.5.0: {} + property-information@7.0.0: {} + proto-list@1.2.4: {} protocols@2.0.1: {} @@ -23078,6 +23237,16 @@ snapshots: regex-parser@2.3.0: {} + regex-recursion@6.0.2: + dependencies: + regex-utilities: 2.3.0 + + regex-utilities@2.3.0: {} + + regex@6.0.1: + dependencies: + regex-utilities: 2.3.0 + regexp-ast-analysis@0.7.1: dependencies: '@eslint-community/regexpp': 4.12.1 @@ -23129,6 +23298,14 @@ snapshots: dependencies: jsesc: 3.0.2 + rehype-highlight@7.0.2: + dependencies: + '@types/hast': 3.0.4 + hast-util-to-text: 4.0.2 + lowlight: 3.3.0 + unist-util-visit: 5.0.0 + vfile: 6.0.3 + rehype-recma@1.0.0: dependencies: '@types/estree': 1.0.6 @@ -23621,6 +23798,17 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 + shiki@3.0.0: + dependencies: + '@shikijs/core': 3.0.0 + '@shikijs/engine-javascript': 3.0.0 + '@shikijs/engine-oniguruma': 3.0.0 + '@shikijs/langs': 3.0.0 + '@shikijs/themes': 3.0.0 + '@shikijs/types': 3.0.0 + '@shikijs/vscode-textmate': 10.0.2 + '@types/hast': 3.0.4 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -24596,6 +24784,11 @@ snapshots: trough: 2.2.0 vfile: 6.0.3 + unist-util-find-after@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-is@6.0.0: dependencies: '@types/unist': 3.0.3 @@ -24932,7 +25125,7 @@ snapshots: jest-canvas-mock: 2.5.2 vitest: 3.0.7(@types/debug@4.1.12)(@types/node@20.17.12)(@vitest/ui@2.1.8)(happy-dom@14.12.3)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0) - vitest@1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vitest@1.6.0(@types/node@18.19.70)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -24969,7 +25162,7 @@ snapshots: - supports-color - terser - vitest@1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8)(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): + vitest@1.6.0(@types/node@22.10.5)(@vitest/ui@2.1.8(vitest@3.0.5))(happy-dom@17.1.0)(jsdom@24.1.3)(less@3.13.1)(lightningcss@1.28.2)(sass@1.77.6)(stylus@0.64.0)(terser@5.37.0): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 diff --git a/scripts/rename.js b/scripts/rename.js new file mode 100644 index 0000000000..2163da3dc8 --- /dev/null +++ b/scripts/rename.js @@ -0,0 +1,16 @@ +const fs = require('fs') +const path = require('path') + +const distDir = path.join(__dirname, '../dist-site/taro') // 假设你的构建输出目录是 dist-site/taro + +fs.rename( + path.join(distDir, 'index.taro.html'), + path.join(distDir, 'index.html'), + (err) => { + if (err) { + console.error('重命名文件时出错:', err) + } else { + console.log('文件重命名成功') + } + } +) diff --git a/src/packages/popup/doc.en-US.md b/src/packages/popup/doc.en-US.md index b513983d55..d33af625bc 100644 --- a/src/packages/popup/doc.en-US.md +++ b/src/packages/popup/doc.en-US.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | The subtitle/description | `ReactNode` | `-` | | destroyOnClose | Whether to close after the component is destroyed | `boolean` | `false` | | round | Whether to show rounded corners | `boolean` | `false` | -| portal | Mount the specified node | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | Mount the specified node | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | Triggered when the popup is clicked | `event: MouseEvent` | `-` | | onCloseIconClick | Fired when the close icon is clicked | `event: MouseEvent` | `-` | | onOpen | Triggered when the popup is opened | `-` | `-` | diff --git a/src/packages/popup/doc.md b/src/packages/popup/doc.md index 27b6076865..9e3d46d18d 100644 --- a/src/packages/popup/doc.md +++ b/src/packages/popup/doc.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | 子标题/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否显示圆角 | `boolean` | `false` | -| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | 点击弹框时触发 | `event: MouseEvent` | `-` | | onCloseIconClick | 点击关闭图标时触发 | `event: MouseEvent` | `-` | | onOpen | 打开弹框时触发 | `-` | `-` | diff --git a/src/packages/popup/doc.taro.md b/src/packages/popup/doc.taro.md index 5badf6c610..33a1f4807b 100644 --- a/src/packages/popup/doc.taro.md +++ b/src/packages/popup/doc.taro.md @@ -52,14 +52,6 @@ import { Popup } from '@nutui/nutui-react-taro' ::: - - ### 多层堆叠 :::demo @@ -110,7 +102,7 @@ import { Popup } from '@nutui/nutui-react-taro' | description | 子标题/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否显示圆角 | `boolean` | `false` | -| portal | 指定节点挂载 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定节点挂载 | ``HTMLElement` \| `(() => HTMLElement)` \| null`` | `null` | | onClick | 点击弹框时触发 | `event: MouseEvent` | `-` | | onCloseIconClick | 点击关闭图标时触发 | `event: MouseEvent` | `-` | | onOpen | 打开弹框时触发 | `-` | `-` | diff --git a/src/packages/popup/doc.zh-TW.md b/src/packages/popup/doc.zh-TW.md index d866b0c20b..773133790e 100644 --- a/src/packages/popup/doc.zh-TW.md +++ b/src/packages/popup/doc.zh-TW.md @@ -92,7 +92,7 @@ import { Popup } from '@nutui/nutui-react' | description | 子標題/描述部分 | `ReactNode` | `-` | | destroyOnClose | 组件不可见时,卸载内容 | `boolean` | `false` | | round | 是否顯示圓角 | `boolean` | `false` | -| portal | 指定節點掛載 | `HTMLElement` \| `(() => HTMLElement)` | null` | `null` | +| portal | 指定節點掛載 | `HTMLElement` \| `(() => HTMLElement)` \| null` | `null` | | onClick | 點擊彈框時觸發 | `event: MouseEvent` | `-` | | onCloseIconClick | 點擊關閉圖標時觸發 | `event: MouseEvent` | `-` | | onOpen | 打開彈框時觸發 | `-` | `-` | diff --git a/src/packages/uploader/doc.en-US.md b/src/packages/uploader/doc.en-US.md index 655224e74b..afade42f4f 100644 --- a/src/packages/uploader/doc.en-US.md +++ b/src/packages/uploader/doc.en-US.md @@ -102,7 +102,7 @@ import { Uploader } from '@nutui/nutui-react' | deletable | Whether or not to show the delete button | `boolean` | `true` | | method | The http method for the upload request | `string` | `post` | | previewType | previewType | The built-in style of the uploaded list, two basic styles are supported picture, list | `string` -| capture | Picture [selection mode] ("), directly bring up the camera | `string` | `false` | maxFileSize +| capture | Picture [selection mode](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input#htmlattrdefcapture), directly bring up the camera | `string` | `false` | maxFileSize | maxFileSize | You can set the maximum file size (in bytes) for uploading | `number` \| `string` | `Number.MAX_VALUE` | | maxCount | File upload count limit | `number` \| `string` | `1` | | fit | Picture fill mode | `contain` \| `cover` \| `fill` \| `none` \| `scale-down` | `cover` | @@ -113,14 +113,14 @@ import { Uploader } from '@nutui/nutui-react' | uploadLabel | Text below the image in the upload area | `React. | multiple | Whether to support file multi-selection |`boolean`|`false`| | disabled | Whether to disable file uploading |`boolean`|`false`| -| beforeUpload | The beforeUpload function needs to return a`Promise`object |`(file: File[]) => Promise`|`-`| -| beforeDelete | Callback when deleting a file, does not remove it if the return value is false. Supports returning a`Promise`object, which is not removed when resolve(false) or reject |`(file: FileItem, files: FileItem[]) => boolean`|`-`| -| onOversize | Triggered when file size exceeds limit |`(file: File[]) => void`|`-`| +| beforeUpload | The beforeUpload function needs to return a`Promise`object |```(file: File[]) => Promise```|`-`| +| beforeDelete | Callback when deleting a file, does not remove it if the return value is false. Supports returning a`Promise`object, which is not removed when resolve(false) or reject |```(file: FileItem, files: FileItem[]) => boolean```|`-`| +| onOversize | Triggered when file size exceeds limit |```(file: File[]) => void```|`-`| | onOverCount | Triggered when the number of files exceeds the limit |`(count: number) => void`|`-`| -| onChange | Triggered when the list of uploaded files changes |`(files: FileItem[]) => void`|`-`| -| onDelete | Triggered when clicked to delete a file |`(file: FileItem, files: FileItem[]) => void`|`-`| -| onFileItemClick | Triggered when a file is uploaded successfully |`(file: FileItem, index: number) => void`|`-`| -| onUploadQueueChange | Triggered when the image upload queue changes |`(tasks: FileItem[]) => void`|`-` | +| onChange | Triggered when the list of uploaded files changes |```(files: FileItem[]) => void```|`-`| +| onDelete | Triggered when clicked to delete a file |```(file: FileItem, files: FileItem[]) => void```|`-`| +| onFileItemClick | Triggered when a file is uploaded successfully |```(file: FileItem, index: number) => void```|`-`| +| onUploadQueueChange | Triggered when the image upload queue changes |```(tasks: FileItem[]) => void```|`-` | > Note: accept, capture and multiple are the native attributes of the browser input tag, the support for these attributes varies among mobile models, so there may be some compatibility issues under different models and WebViews. diff --git a/src/sites/assets/images/icon-add.svg b/src/sites/assets/images/icon-add.svg new file mode 100644 index 0000000000..313565f560 --- /dev/null +++ b/src/sites/assets/images/icon-add.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/sites/assets/styles/highlight.scss b/src/sites/assets/styles/highlight.scss index 3a8f61f0e4..5e0f85c795 100644 --- a/src/sites/assets/styles/highlight.scss +++ b/src/sites/assets/styles/highlight.scss @@ -13,10 +13,10 @@ code { -webkit-font-smoothing: auto; background-color: #fafafa; border-radius: 16px; -} -code span { - font-family: $nutui-doc-code-font-family; + span { + font-family: $nutui-doc-code-font-family; + } } pre { diff --git a/src/sites/assets/styles/md-style.scss b/src/sites/assets/styles/md-style.scss index e60139037a..f6e4995484 100644 --- a/src/sites/assets/styles/md-style.scss +++ b/src/sites/assets/styles/md-style.scss @@ -2,11 +2,17 @@ .doc-content-document { position: relative; + min-width: 1000px; background: #fff; padding-top: 40px; padding-bottom: 40px; padding-left: 40px; padding-right: 445px; + + &.full { + padding-right: 100px; + } + .card { margin-bottom: 24px; padding: 24px; @@ -21,11 +27,11 @@ -webkit-font-smoothing: auto; &:hover { - color: mix(black, $nutui-doc-blue, 10%); + color: darken($nutui-doc-blue, 10%); } &:active { - color: mix(black, $nutui-doc-blue, 20%); + color: darken($nutui-doc-blue, 20%); } } @@ -38,13 +44,11 @@ color: $nutui-doc-black; font-weight: bold; line-height: 1.5; - - &[id] { - cursor: pointer; - } } &.isComponent { + padding-top: 0; + h1 { display: none; } @@ -65,20 +69,20 @@ left: 16px; width: 44px; height: 17px; - background: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png'); + background: $doc-smile-curve; background-size: 100% 100%; } } h2 { - margin: 45px 0 20px; - font-size: 24px; + margin: 16px 0; + font-size: 20px; } h3 { margin: 16px 0px; - font-weight: 600; - font-size: 20px; + font-weight: 400; + font-size: 18px; } h4 { @@ -98,12 +102,14 @@ font-size: 14px; line-height: 22px; } + strong { margin: 24px 0 12px; font-weight: bold; font-size: 14px; color: #333; } + table { width: 100%; margin-top: 12px; @@ -112,12 +118,16 @@ line-height: 1.5; border-collapse: collapse; border: 1px solid #eee; + th { padding: 8px 20px; font-weight: 600; text-align: left; border-left: 1px solid #e9e9e9; background-color: #f7f8fa; + // &:first-child { + // padding-left: 0; + // } &:last-child { padding-right: 0; @@ -128,6 +138,7 @@ padding: 8px 20px; border-top: 1px solid $nutui-doc-code-background-color; border-left: 1px solid #e9e9e9; + &:first-child { // padding-left: 0; border-left: 0px; @@ -157,6 +168,11 @@ } } + ul, + ol { + margin: 16px 0; + } + ul li, ol li { position: relative; @@ -212,14 +228,21 @@ blockquote { margin: 16px 0px; padding: 16px; - background-color: #fff4f0; - border-left: 6px solid #fa192c; + background-color: rgba($doc-default-color, 0.06); + border-left: 6px solid $doc-default-color; border-radius: 3px; + p { color: #1a1a1a; } } + img { + max-width: 100%; + // margin: 16px 0; + // border-radius: $nutui-doc-border-radius; + } + &--changelog, &--changelog-v3 { strong { @@ -240,21 +263,69 @@ } } } + .handle-part { height: 50px; display: flex; justify-content: flex-end; align-items: center; + .online-btn { display: block; color: #5555e2; background-color: #fff; font-size: 14px; cursor: pointer; + &:hover { color: blue; text-decoration: underline; } } } + + .contributor { + display: table; + width: 1120px; + margin-top: 12px; + color: #666; + font-size: 14px; + line-height: 1.5; + border-collapse: collapse; + border: 0; + table-layout: fixed; + + .contributor-head { + display: table-row; + + .contributor-head-item { + display: table-cell; + padding: 10px 15px; + font-weight: 600; + text-align: center; + background-color: transparent; + border: 0; + + a { + img { + width: 60px; + height: 60px; + } + } + } + } + + .contributor-body { + display: table-row; + border-top: 1px solid #eee; + padding-top: 15px; + + .contributor-body-item { + display: table-cell; + padding: 10px 15px; + border: 0; + text-align: center; + } + } + } } diff --git a/src/sites/assets/styles/reset.scss b/src/sites/assets/styles/reset.scss index 27725be407..ab756a77e4 100644 --- a/src/sites/assets/styles/reset.scss +++ b/src/sites/assets/styles/reset.scss @@ -54,7 +54,12 @@ video { margin: 0; padding: 0; border: 0; - font-family: PingFang SC, Microsoft YaHei, Helvetica, Hiragino Sans GB, SimSun, + font-family: + PingFang SC, + Microsoft YaHei, + Helvetica, + Hiragino Sans GB, + SimSun, sans-serif; -webkit-overflow-scrolling: touch; } @@ -94,6 +99,9 @@ table { -moz-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; + &::-webkit-scrollbar { + display: none; + } } html, @@ -118,5 +126,7 @@ html, body { height: 100%; width: 100%; - background: #fff; +} +#doc { + overflow-x: hidden; } diff --git a/src/sites/assets/styles/variables.scss b/src/sites/assets/styles/variables.scss index fc6b3a5203..02a12925ca 100644 --- a/src/sites/assets/styles/variables.scss +++ b/src/sites/assets/styles/variables.scss @@ -1,5 +1,8 @@ // doc -$doc-default-color: #ff0f23; +$doc-default-color: #fa2c19 !default; +$doc-smile-curve: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png') !default; +$doc-footer-theme-icon: url('@/assets/images/icon-color.png') no-repeat + center/100% !default; $doc-default-primary-bg: linear-gradient( 135deg, rgba(250, 25, 44, 1) 0%, @@ -8,9 +11,14 @@ $doc-default-primary-bg: linear-gradient( rgba(250, 63, 25, 1) 100% ); -// color +$white: #fff; +$black: #000; +// 标题常规文字 +$title-color: #1a1a1a; + +// clolr // 红色 -$theme-red: #ff0f23; +$theme-red: #fa2c19; $theme-red-word: #fff; $theme-red-border: #fff; $theme-red-input: #fff; @@ -18,7 +26,7 @@ $theme-red-actice: #fff; $theme-red-select-border: #f0f2f5; $theme-red-select-word: #666; $theme-red-select-bg: #fff; -$theme-red-header-bg: url('../../assets/images/header-bg.png'); +$theme-red-header-bg: url('@/sites/assets/images/header-bg.png'); $theme-red-footer-word1: #1a1a1a; $theme-red-footer-word2: #666; $theme-red-footer-word3: #1d1d21; @@ -37,22 +45,24 @@ $theme-white: #fff; $theme-white-word: #1a1a1a; $theme-white-input: #ccc; $theme-white-border: #d8d8d8; -$theme-white-actice: #ff0f23; +$theme-white-actice: #fa2c19; $theme-white-select-border: #f0f2f5; $theme-white-select-word: #666; $theme-white-select-bg: #fff; +$theme-white-select-hover: rgba(0, 0, 0, 0.02); +$theme-white-select-active: rgba(0, 0, 0, 0.06); $theme-white-box-border: #f5f5f5; $theme-white-footer-word1: #1a1a1a; $theme-white-footer-word2: #666; $theme-white-footer-word3: #1d1d21; $theme-white-footer-word4: #808080; -$theme-white-footer-hover: #ff0f23; +$theme-white-footer-hover: #fa2c19; $theme-white-footer-bg: #fff; $theme-white-footer-border: #eaf0fb; $theme-white-theme-border: #f5f6f7; $theme-white-circle: #fff; $theme-white-circle-border: #e5e5e5; -$theme-white-index-description: #959fb1; +$theme-white-index-desc: #959fb1; // 黑色 $theme-black-word: #ccc; @@ -60,6 +70,10 @@ $theme-black-input: #ccc; $theme-black-border: #d8d8d8; $theme-black-actice: #fff; $theme-black-select-bg: #1d1d1d; +$theme-black-nav-select-bg: #2c2c2c; +$theme-black-nav-select-border: #5e5e5e; +$theme-black-nav-select-active-bg: rgba(255, 255, 255, 0.2); +$theme-black-nav-select-hover-bg: rgba(255, 255, 255, 0.06); $theme-black-select-border: #c1c1c3; $theme-black-select-hover: #797a7b; $theme-black-select-word: #fff; @@ -67,8 +81,8 @@ $theme-black-box-border: #6b5554; $theme-black-footer-word1: #fff; $theme-black-footer-word2: #f5f5f5; $theme-black-footer-word3: #f5f5f5; -$theme-black-footer-word4: #808080; -$theme-black-footer-hover: #ff0f23; +$theme-black-footer-word4: #fff; +$theme-black-footer-hover: $doc-default-color; $theme-black-footer-bg: #1d1d21; $theme-black-footer-border: transparent; $theme-black-theme-border: #666; @@ -76,27 +90,34 @@ $theme-black-circle: #1a1a1a; // header $doc-default-header-color: $white; $doc-header-height: 64px; -$doc-header-bg: url('../../assets/images/header-bg.png') no-repeat; +$doc-header-bg: url('@/assets/images/header-bg.png') no-repeat; // nav $doc-default-nav-bg: $white; -$doc-default-nav-color: $color-title; +$doc-default-nav-color: $title-color; +$doc-nav-icon-color1: #41b883; +$doc-nav-icon-color2: #74c9ff; +$doc-nav-icon-bg1: rgba(65, 184, 131, 0.16); +$doc-nav-icon-bg2: rgba(116, 201, 255, 0.16); +// footer +// $doc-default-header-color: $white; +// $doc-footer-height: 73px; // home $theme-black-content-bg: #060506; //markdown-add-style $nutui-doc-black: #323233; -$nutui-doc-blue: #0073ff; +$nutui-doc-blue: #1989fa; $nutui-doc-purple: #8080ff; $nutui-doc-fuchsia: #a7419e; $nutui-doc-red: #fa2400; -$nutui-doc-text-color: #666666; +$nutui-doc-text-color: rgba(0, 0, 0, 0.88); $nutui-doc-text-light-blue: rgba(69, 90, 100, 0.6); $nutui-doc-background-color: #f7f8fa; $nutui-doc-grey: #999; $nutui-doc-dark-grey: #666; $nutui-doc-light-grey: #ccc; $nutui-doc-border-color: #f1f4f8; -$nutui-doc-code-color: #58727e; +$nutui-doc-code-color: rgba(0, 0, 0, 0.88); $nutui-doc-code-background-color: #f1f4f8; $nutui-doc-code-font-family: 'Source Code Pro', 'Monaco', 'Inconsolata', monospace; diff --git a/src/sites/assets/util/index.ts b/src/sites/assets/util/index.ts index 7a5ac8e292..1872f4a2c9 100644 --- a/src/sites/assets/util/index.ts +++ b/src/sites/assets/util/index.ts @@ -5,7 +5,7 @@ const isMobile = /ios|iphone|ipod|ipad|android/.test(ua) const getComponentName = () => { const s = window.location.hash.split('/') - const cname = s[s.length - 1].toLowerCase() + const cname = s[s.length - 1].toLowerCase().replace('-taro', '') const component: any = {} nav.forEach((item: any) => { item.packages.forEach((sItem: any) => { diff --git a/src/sites/components/header.tsx b/src/sites/components/header.tsx index 1bb013f81b..93e8b83814 100644 --- a/src/sites/components/header.tsx +++ b/src/sites/components/header.tsx @@ -42,4 +42,4 @@ const Header = () => { ) } -export default Header +export default Header \ No newline at end of file diff --git a/src/sites/config/baseConfig.ts b/src/sites/config/baseConfig.ts new file mode 100644 index 0000000000..082b621b94 --- /dev/null +++ b/src/sites/config/baseConfig.ts @@ -0,0 +1,174 @@ +// 抽象配置中心 + +import homefeatures1 from '../assets/images/img-home-features1.png'; +import homefeatures2 from '../assets/images/img-home-features2.png'; +import homefeatures3 from '../assets/images/img-home-features3.png'; +import homefeatures5 from '../assets/images/img-home-features5.png'; + +// React 官网配置 +export const SiteReact = { + repository: { + git: 'https://github.com/jdf2e/nutui-react', + gitee: 'https://gitee.com/jd-platform-opensource/nutui-react', + releases: 'https://github.com/jdf2e/nutui-react/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui-react/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/' + }, + { + name: 'nutui-vue', + link: 'https://nutui.jd.com/' + } + ], + newHeader: [], + header: [ + { + name: 'intro-react,theme-react,start-react,international-react,contributing-react', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro-react', + pathName: 'intro-react' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: '/zh-CN/component/button' + } + ], + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'React Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '60+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + ], + // 是否展示taro楼层 + taroShow: true, + bizComponent: [], + cases: { + show: false + }, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'react' +}; +// React Taro 官网配置 +export const SiteReactTaro = { + repository: { + git: 'https://github.com/jdf2e/nutui-react', + gitee: '', + releases: 'https://github.com/jdf2e/nutui-react/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui-react/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + newRepository: { + git: 'https://github.com/jdf2e', + gitee: 'https://gitee.com/jd-platform-opensource', + releases: 'https://github.com/jdf2e/nutui/releases', // git 更新日志 + issues: 'https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui&lang=zh-cn', + discussions: 'https://github.com/jdf2e/nutui/discussions', + plan: 'https://github.com/jdf2e/nutui/projects/1' + }, + versions: [ + { + name: '1.x', + link: '/' + }, + { + name: 'nutui-vue', + link: 'https://nutui.jd.com/' + } + ], + newHeader: [], + header: [ + { + name: 'intro-react,theme-react,starttaro-react,international-react,contributing-react', + cName: '指南', + eName: 'Guide', + path: '/zh-CN/guide/intro-react', + pathName: 'intro-react' + }, + { + name: 'component', + cName: '组件', + eName: 'Components', + path: '/zh-CN/component/button', + pathName: '/zh-CN/component/button' + } + ], + homePage: { + gitstar: 'https://ghbtns.com/github-btn.html?user=jdf2e&repo=nutui-react&type=star&count=true&size=large', + platform: [ + { + title: '京东风格', + desc: '遵循京东 App 10.0 设计规范', + url: homefeatures1 + }, + { + title: '前沿技术', + desc: 'React Vite 2.x TypeScript', + url: homefeatures3 + }, + { + title: '适配多端', + desc: '基于 Taro 轻松开发多端小程序', + url: homefeatures5 + }, + { + title: '组件丰富', + desc: '60+ 组件,覆盖多数业务场景', + url: homefeatures2 + } + ], + // 是否展示taro楼层 + taroShow: true, + bizComponent: [], + cases: { + show: false + }, + // 学习资源 + article: { + show: true, + moreRouter: '#/zh-CN/resource' + } + }, + language: 'react' +}; + diff --git a/src/sites/config/env.ts b/src/sites/config/env.ts index e2d86f54d4..3a2a1ebaea 100644 --- a/src/sites/config/env.ts +++ b/src/sites/config/env.ts @@ -1,9 +1,7 @@ type EnvConfig = { - baseUrl: string - themeUrl: string - isPrd: boolean - locales: string[] -} + baseUrl: string; + isPrd: boolean; +}; /** * 配置编译环境和线上环境之间的切换 @@ -14,26 +12,22 @@ type EnvConfig = { const config: EnvConfig = { baseUrl: '', - themeUrl: '', isPrd: true, // 是否为线上 - locales: ['zh-CN', 'zh-TW', 'en-US', 'th'], -} -switch (import.meta.env.MODE) { +}; +switch ((import.meta as any).env.MODE) { case 'development': /* * 开发环境 => npm run dev */ - config.isPrd = false - config.baseUrl = '/devServer' - config.themeUrl = '/theme-react/dist/theme-react/source' - break + config.isPrd = false; + config.baseUrl = '/devServer'; + break; case 'production': /* * 线上环境 => npm run build */ - config.isPrd = true - config.baseUrl = 'https://nutui.jd.com' - config.themeUrl = './source' - break + config.isPrd = true; + config.baseUrl = 'https://nutui.jd.com'; + break; } -export default config +export default config; diff --git a/src/sites/config/index.ts b/src/sites/config/index.ts new file mode 100644 index 0000000000..bf33471b43 --- /dev/null +++ b/src/sites/config/index.ts @@ -0,0 +1,306 @@ +import reactConfig from '../../config.json'; +import { + SiteReact, + SiteReactTaro, +} from './baseConfig'; +import ReactConfig from '../../config.json'; + +let config: any = {}; + +const guide = [ + { + type: 'Vue', + icon: 'https://img11.360buyimg.com/imagetools/jfs/t1/221256/40/8490/1929/61d64810Ec6a88d27/99270cce560545d5.png', + data: [ + { + link: '/h5/vue/4x/', + language: ['Vue3'], + app: 'App 10.0' + }, + { + name: '3.x', + link: '/3x/', + language: ['Vue3'], + app: 'App 10.0' + } + ] + } +]; + + +const moreGuide = [ + { + type: { + cName: '基础组件', + eName: 'Basic Component' + }, + icon: '', + datas: [ + { + plat: { + cName: 'H5', + eName: 'H5' + }, + data: [ + { + name: 'NutUI-Vue', + link: '/h5/vue/4x/#/zh-CN/guide/intro', + language: ['Vue3'], + app: 'App 10.0' + }, + { + name: 'NutUI-React', + link: '/h5/react/2x/#/zh-CN/guide/intro-react', + language: ['React18'], + app: 'App 10.0' + } + ] + }, + { + plat: { + cName: '小程序', + eName: 'Applets' + }, + data: [ + { + name: 'NutUI-Vue', + link: '/taro/vue/4x/#/zh-CN/guide/intro', + language: ['Vue3', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-React', + link: '/taro/react/2x/#/zh-CN/guide/intro-react', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-Uni', + link: 'https://ext.dcloud.net.cn/search?q=nutui', + language: ['Vue3', 'uni-app'], + app: 'App 10.0' + } + ] + } + ] + }, + { + type: { + cName: '高级组件', + eName: 'Advanced Component' + }, + icon: '', + datas: [ + { + data: [ + { + name: 'NutUI-Biz', + link: '/biz/h5/react/1x/#/zh-CN/guide/intro', + language: ['React'], + app: 'App 10.0' + }, + { + name: 'NutUI-Bingo', + link: '/bingo/index.html#/', + language: ['Vue3', 'Taro'], + app: 'App 10.0' + }, + { + name: 'NutUI-Cat', + link: '/cat/index.html#/', + language: ['Vue2'], + app: 'App 10.0' + } + ] + } + ] + } +]; + +const reactGuide = [ + { + type: 'React', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: '3x', + link: '/h5/react/3x/', + language: ['React18'], + app: 'App 10.0' + }, + { + name: '2x', + link: '/h5/react/2x/', + language: ['React18'], + app: 'App 10.0' + }, + { + name: '1.x', + link: '/h5/react/1x/', + language: ['React18'], + app: 'App 10.0' + } + ] + } +]; + +const reactTaroGuide = [ + { + type: 'React', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: ReactConfig.version, + link: '/taro/react/3x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: '2x', + link: '/taro/react/2x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + }, + { + name: '1.x', + link: '/taro/react/1x/', + language: ['React18', 'Taro'], + app: 'App 10.0' + } + ] + } +]; + +const reactNativeGuide = [ + { + type: 'React Native', + icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + data: [ + { + name: '0.x', + link: '/react-native/', + language: ['React18'], + app: 'App 10.0' + } + ] + } +]; + +const businessGuide = [ + { + data: [ + { + name: 'NutUI-Biz', + link: '/biz/h5/react/1x/#/zh-CN/guide/intro', + language: ['React'] + }, + { + name: 'NutUI-Bingo', + link: '/bingo/index.html#/', + language: ['Vue3', 'Taro'] + }, + { + name: 'NutUI-Cat', + link: '/cat/index.html#/', + language: ['Vue2'] + } + ] + } + + // { + // type: 'React', + // icon: 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + // data: [ + // { + // name: '1.x', + // link: 'https://nutui.jd.com/react', + // language: ['React18'], + // app: 'App 10.0' + // } + // ] + // } +]; + +const products = [ + { + type: 'React', + data: [ + { + name: 'NutUI React', + icon: + 'https://img12.360buyimg.com/imagetools/jfs/t1/192500/27/37524/4524/649d5065F7e5fbef6/afe567692acba3b0.png', + status: 1, + link: '/h5/react/3x/#/zh-CN/guide/intro-react' + }, + { + name: 'NutUI React Taro', + icon: + 'https://img13.360buyimg.com/imagetools/jfs/t1/169186/5/33010/1762/639703a1E898bcb96/6c372c661c6dddfe.png', + status: 1, + link: '/taro/react/3x/#/zh-CN/guide/intro-react' + }, + { + name: 'NutUI React Native', + icon: + 'https://img10.360buyimg.com/imagetools/jfs/t1/93992/33/35657/10303/63c0fddbFa8977e27/8d099681ad788fc8.png', + status: 1, + link: 'https://nutui.jd.com/react-native/#/zh-CN/guide/intro' + } + ] + }, + { + type: 'Vue', + data: [ + { + name: 'NutUI Vue', + icon: + 'https://img12.360buyimg.com/imagetools/jfs/t1/192500/27/37524/4524/649d5065F7e5fbef6/afe567692acba3b0.png', + status: 1, + link: '/h5/vue/4x/#/zh-CN/guide/intro' + }, + { + name: 'NutUI Vue Taro', + icon: + 'https://img13.360buyimg.com/imagetools/jfs/t1/169186/5/33010/1762/639703a1E898bcb96/6c372c661c6dddfe.png', + status: 1, + link: '/taro/vue/4x/#/zh-CN/guide/intro' + }, + { + name: 'NutUI uniapp', + icon: 'https://img13.360buyimg.com/imagetools/jfs/t1/113716/40/39920/321/64c3764dF986d8400/f4474acb3a73c055.png', + status: 1, + link: 'https://ext.dcloud.net.cn/search?q=nutui' + } + ] + } +]; +if ((import.meta as any).env.BASE_URL.includes('react')) { + config = { + ...reactConfig, + ...SiteReact + }; +} + +export const { + nav, + docs, + version, + demoUrl, + homePage, + versions, + newHeader, + header, + language, + repository, + newRepository +} = config; +export { + guide, + moreGuide, + reactGuide, + reactTaroGuide, + reactNativeGuide, + businessGuide, + products, + SiteReactTaro, +}; diff --git a/src/sites/doc/App.scss b/src/sites/doc/App.scss deleted file mode 100644 index 13ed9d9c69..0000000000 --- a/src/sites/doc/App.scss +++ /dev/null @@ -1,110 +0,0 @@ -::selection { - background: $doc-default-color; - color: #fff; -} - -$doc-title-height: 137px; - -#doc { - background: #fff; - height: 100%; - width: 100%; - display: flex; - flex-direction: column; -} - -.doc { - &-title { - width: 100%; - height: $doc-title-height; - z-index: 2; - &-position { - top: 0px; - display: flex; - align-items: center; - justify-content: space-between; - padding: 40px; - border-bottom: 1px solid #eee; - background: #fff; - visibility: visible; - opacity: 1; - transition: opacity 0.8s; - &.fixed { - width: calc(100% - 290px); - position: fixed; - padding: 24px 48px; - .title { - font-size: 24px; - font-weight: bold; - } - } - &.hidden { - visibility: hidden; - opacity: 0; - } - .title { - font-size: 40px; - font-weight: bold; - } - } - } - &-content { - margin-left: 290px; - display: flex; - flex-direction: column; - - &-document { - min-height: 800px; - min-width: 1000px; - } - &-tabs { - position: absolute; - right: 475px; - top: 48px; - display: flex; - height: 40px; - align-items: center; - justify-content: space-between; - z-index: 1; - padding: 2px; - box-sizing: border-box; - - border-radius: 2px; - background: #eee; - box-shadow: rgb(0 0 0 / 15%) 0px 2px 4px; - &.single { - padding: 0; - - .tab-item { - line-height: 40px; - cursor: auto; - } - } - .tab-item { - position: relative; - padding: 0 10px; - line-height: 36px; - cursor: pointer; - font-size: 16px; - color: #323232; - text-align: center; - border-radius: 2px; - background: #eee; - &.cur { - font-weight: bold; - color: #323232; - background: #fff; - } - } - } - } -} -.nutui-react--demo-button { - display: none; -} - -.nutui-react--demo-wrapper { - .nutui-react--demo-button { - display: block; - } -} diff --git a/src/sites/doc/App.tsx b/src/sites/doc/App.tsx deleted file mode 100644 index dbce12d5ae..0000000000 --- a/src/sites/doc/App.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useEffect, useMemo, useState } from 'react' -import { HashRouter, Routes, Route, useLocation } from 'react-router-dom' -import { MDXProvider } from '@mdx-js/react' -import './App.scss' -import APPContext from './context' -import Nav from '@/sites/doc/components/nav' -import Header from '@/sites/doc/components/header' -import DemoPreview from '@/sites/doc/components/demo-preview' -import Issue from '@/sites/doc/components/issue' -import { getComponentName } from '@/sites/assets/util' -import routers from './router' -import loadable from '@loadable/component' -import CodeBlock from './components/demoblock/codeblock' - -const Title = () => { - let location = useLocation() - const s = window.location.hash.split('/') - useEffect(() => { - const componentName = getComponentName() - setComponentName(componentName) - }, [location]) - const [componentName, setComponentName] = useState({ name: '', cName: '' }) - return ( -
- {componentName.name} {s[1] === 'zh-CN' && componentName.cName} -
- ) -} -const components = { - CodeBlock, -} -const App = () => { - const [fixed, setFixed] = useState(false) - const [hidden, setHidden] = useState(false) - - const scrollTitle = () => { - let top = document.documentElement.scrollTop - if (top > 127) { - setFixed(true) - if (top < 142) { - setHidden(true) - } else { - setHidden(false) - } - } else { - setFixed(false) - setHidden(false) - } - } - - useEffect(() => { - document.addEventListener('scroll', scrollTitle) - }, []) - - return ( -
- -
- -
-
- -
-
- - {routers.map((ru, k) => { - const path = ru.component.name?.substring( - 0, - ru.component.name.lastIndexOf('/') - ) - const C = useMemo(() => loadable(ru.component), [ru.component]) - return ( - - - - - - } - > - ) - })} - -
- -
-
-
- ) -} -export default App diff --git a/src/sites/doc/components/demo-preview/demo-preview.tsx b/src/sites/doc/components/demo-preview/demo-preview.tsx deleted file mode 100644 index abdecb48f4..0000000000 --- a/src/sites/doc/components/demo-preview/demo-preview.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React, { useEffect, useState } from 'react' -import './demo-preview.scss' -import { useLocation } from 'react-router-dom' - -const DemoPreview = (props: any) => { - const location = useLocation() - const [URL, setURL] = useState(location.pathname) - - useEffect(() => { - setURL(location.pathname) - }, [location]) - - return ( -
- -
- ) -} - -export default DemoPreview diff --git a/src/sites/doc/components/demo-preview/index.ts b/src/sites/doc/components/demo-preview/index.ts deleted file mode 100644 index 584a5be520..0000000000 --- a/src/sites/doc/components/demo-preview/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import DemoPreview from '@/sites/doc/components/demo-preview/demo-preview' - -export default DemoPreview diff --git a/src/sites/doc/components/header/header.scss b/src/sites/doc/components/header/header.scss deleted file mode 100644 index b0cb6f2c24..0000000000 --- a/src/sites/doc/components/header/header.scss +++ /dev/null @@ -1,420 +0,0 @@ -.doc { - &-header { - z-index: 2; - top: 0; - left: 0; - right: 0; - min-width: 1300px; - background-size: cover; - background-position: center; - background-repeat: no-repeat; - height: $doc-header-height; - line-height: $doc-header-height; - text-align: left; - padding: 0 50px; - font-size: 20px; - } -} -.header { - &-logo { - position: relative; - display: inline-block; - width: 240px; - height: 64px; - .logo-link { - width: 120px; - height: 46px; - vertical-align: middle; - position: absolute; - top: 50%; - margin-top: -23px; - } - .logo-border { - width: 1px; - height: 26px; - position: absolute; - right: 0; - top: 50%; - margin-top: -13px; - } - .version { - position: absolute; - right: 70px; - font-size: 14px; - } - } - &-nav { - display: flex; - justify-content: space-between; - align-items: center; - float: right; - width: calc(100% - 240px); - min-width: 900px; - padding: 0 40px; - > a { - color: #fff; - } - .nav-box { - margin-right: 140px; - .nav-list { - min-width: 490px; - display: flex; - list-style: none; - align-items: center; - justify-content: space-around; - } - .nav-item { - position: relative; - margin-right: 30px; - font-size: 14px; - height: 63px; - line-height: 63px; - text-align: center; - cursor: pointer; - flex-shrink: 0; - a { - display: inline-block; - line-height: 64px; - } - &.active { - font-weight: bold; - &:after { - content: ''; - display: inline-block; - width: 35px; - height: 13px; - position: absolute; - bottom: 3px; - left: 50%; - margin-left: -17.5px; - background: url('../../assets/images/item-active.png'); - } - } - &:last-of-type { - margin-right: 0; - } - } - .user-link { - display: inline-block; - width: 26px; - height: 26px; - vertical-align: middle; - background-repeat: no-repeat; - background-image: url('../../assets/images/icon-user.png'); - background-size: 26px; - - &.gitee { - margin-left: 8px; - background-image: url('../../assets/images/icon-gitee.png'); - } - } - } - } -} -.header-select { - &-box { - position: relative; - display: inline-block; - vertical-align: middle; - outline: 0; - } - &-hd { - min-width: 77px; - height: 28px; - padding: 0 30px 0 15px; - line-height: 26px; - font-size: 14px; - color: $theme-red-word; - background-position: right 15px top 12px; - background-size: 8px 5px; - background-repeat: no-repeat; - border-radius: 14px; - } - &-bd { - position: absolute; - top: 30px; - left: 50%; - margin-left: -60px; - border-radius: 3px; - overflow: hidden; - } - &-item { - width: 120px; - height: 28px; - padding: 0 12px; - line-height: 26px; - font-size: 14px; - border-width: 0px 1px 1px; - border-style: solid; - cursor: pointer; - &:first-of-type { - border-top-width: 1px; - } - } -} -// 颜色 -.doc-header { - &-red { - background-image: $theme-red-header-bg; - color: $theme-red-word; - .header { - &-logo { - .logo-link { - background: url('../../../assets/images/logo-header-white.png') - no-repeat center/100%; - } - .logo-border { - background: $theme-red-border; - } - } - &-nav { - .search-box { - .search-input { - color: $theme-red-word; - background-position: 0 0; - &::-webkit-input-placeholder { - color: $theme-red-input; - } - } - } - .nav-box { - .nav-item { - color: $theme-red-word; - a { - color: $theme-red-word; - } - &.active { - color: $theme-red-actice; - &:after { - background-position: 0 0; - } - a { - color: $theme-red-actice; - } - } - } - .user-link { - background-position: 0 0; - } - } - } - } - .header-select { - &-box { - &.select-down { - .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); - } - } - &.select-up { - .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); - } - } - } - &-hd { - color: $theme-red-word; - border: 1px solid $theme-white-select-border; - } - &-bd { - color: $theme-white-select-word; - } - &-item { - border-color: $theme-red-select-border; - background-color: $theme-red-select-bg; - &:hover { - color: $theme-red; - } - } - } - } - &-white { - background: $white; - color: $theme-white-word; - border-bottom: 1px solid $theme-white-box-border; - .header { - &-logo { - .logo-link { - background: url('../../assets/images/logo-header-red.png') no-repeat - center/100%; - } - .logo-border { - background: $theme-white-border; - } - } - &-nav { - .search-box { - .search-input { - color: $theme-white-word; - background-position: 0 -22px; - &::-webkit-input-placeholder { - color: $theme-white-input; - } - } - } - .nav-box { - .nav-item { - color: $theme-white-word; - a { - color: $theme-white-word; - } - &.active { - color: $theme-white-actice; - &:after { - background-position: 0 -13px; - } - a { - color: $theme-white-actice; - } - } - } - .user-link { - background-position: 0 -25px; - } - } - } - } - .header-select { - &-box { - &.select-down { - .header-select-hd { - background-image: url('../../assets/images/icon-select-gray-down.png'); - } - } - &.select-up { - .header-select-hd { - background-image: url('../../assets/images/icon-select-gray-up.png'); - } - } - } - &-hd { - color: $theme-white-select-word; - border: 1px solid $theme-white-select-border; - } - &-bd { - color: $theme-white-select-word; - } - &-item { - border-color: $theme-white-select-border; - background-color: $theme-white-select-bg; - &:hover { - color: $theme-white-actice; - } - } - } - } - &-black { - background: $black; - color: $theme-black-word; - border-bottom: 1px solid $theme-black-box-border; - .header { - &-logo { - .logo-link { - background: url('../../assets/images/logo-header-red.png') no-repeat - center/100%; - } - .logo-border { - background: $theme-black-border; - } - } - &-nav { - .search-box { - .search-input { - color: $theme-black-word; - background-position: 0 -44px; - &::-webkit-input-placeholder { - color: $theme-black-input; - } - } - } - .nav-box { - .nav-item { - color: $theme-black-word; - a { - color: $theme-black-word; - } - &.active { - color: $theme-black-actice; - &:after { - background-position: 0 -13px; - } - a { - color: $theme-black-actice; - } - } - } - .user-link { - background-position: 0 -51px; - } - } - } - } - .header-select { - &-box { - &.select-down { - .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); - } - } - &.select-up { - .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); - } - } - } - &-hd { - color: $theme-black-select-word; - background-color: $theme-black-select-bg; - border: 1px solid $theme-black-select-border; - } - &-bd { - color: $theme-black-select-word; - } - &-item { - background-color: $theme-black-select-bg; - border-color: $theme-black-select-bg; - &:hover { - background-color: $theme-black-select-hover; - border-color: $theme-black-select-hover; - } - } - } - } -} -.nut-popover { - height: 100%; - position: relative; -} -.curr-lang { - display: block; - font-size: 12px; -} -.switch { - position: absolute; - right: 60px; - top: 0; - height: 100%; - width: 150px; - cursor: pointer; - - .nut-popover--dark { - width: 100%; - margin-right: 0; - background: transparent; - text-align: center; - } - .title-item { - height: 30px; - } -} -.switch-content { - position: relative; -} -// 下拉列表选择动画效果 -.fade-enter-active, -.fade-leave-active { - transition: opacity 0.5s; -} -.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { - opacity: 0; -} diff --git a/src/sites/doc/components/header/header.tsx b/src/sites/doc/components/header/header.tsx deleted file mode 100644 index 38aaf7af8b..0000000000 --- a/src/sites/doc/components/header/header.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import React, { useEffect, useState } from 'react' -import { nav } from '@/config.json' -// @ts-ignore -import { version } from '/package.json' -import config from '@/sites/config/env' -import './header.scss' -import { useNavigate, useLocation } from 'react-router-dom' - -const Header = () => { - const navigate = useNavigate() - const location = useLocation() - const [currLang, setCurrLang] = useState({}) - - const toHome = () => { - navigate('/') - } - - useEffect(() => { - let packages = [] as any[] - nav.forEach((item) => { - packages.push(...item.packages) - }) - }, []) - - useEffect(() => { - const lang = langs.filter( - (l) => location.pathname.indexOf(l.locale) > -1 - )[0] - setCurrLang(lang) - }, [location]) - - const langs = [ - { name: '中文', locale: 'zh-CN' }, - { name: '中文(繁体)', locale: 'zh-TW' }, - { name: 'English', locale: 'en-US' }, - { name: 'Thai', locale: 'th' }, - ] - - const [visible, setVisible] = useState(false) - const handleSwitchLocale = (e: any) => { - const classList: string[] = [].slice.call(e.target.classList) - if (classList.indexOf('curr-lang') > -1) { - return setVisible(!visible) - } - const name = e.target.innerText - setVisible(!visible) - const [{ locale }] = langs.filter((l) => name == l.name) - - let link = '' - if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { - link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) - } else { - link = window.location.href.replace(/\#\//gi, `#/${locale}/`) - } - window.location.href = link - } - - return ( -
-
- - - {version} -
-
- - 当前环境:development ,代码 PR 合并后,文档会自动同步至 - https://github.com/jdf2e/nutui-docs - -
-
- ) -} - -export default Header diff --git a/src/sites/doc/components/header/index.ts b/src/sites/doc/components/header/index.ts deleted file mode 100644 index daa1dc13fe..0000000000 --- a/src/sites/doc/components/header/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -import Header from '@/sites/doc/components/header/header' -export default Header diff --git a/src/sites/doc/components/nav/index.ts b/src/sites/doc/components/nav/index.ts deleted file mode 100644 index 01ec18ad30..0000000000 --- a/src/sites/doc/components/nav/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import Nav from '@/sites/doc/components/nav/nav' - -export default Nav diff --git a/src/sites/doc/components/nav/nav.tsx b/src/sites/doc/components/nav/nav.tsx deleted file mode 100644 index 297e6b73c6..0000000000 --- a/src/sites/doc/components/nav/nav.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React, { Fragment, useEffect, useState } from 'react' -import { nav } from '@/config.json' -import { NavLink } from 'react-router-dom' -import './nav.scss' -import useLocale from '@/sites/assets/locale/uselocale' - -const Nav = () => { - const [cNav] = useState(nav) - const [lang] = useLocale() - const [fixed, setFixed] = useState(false) - const scrollNav = () => { - let top = document.documentElement.scrollTop - if (top > 64) { - setFixed(true) - } else { - setFixed(false) - } - } - useEffect(() => { - document.addEventListener('scroll', scrollNav) - }, []) - return ( -
-
    - {cNav.map((cn: any) => { - return ( - - {cn.enName === 'dataentry' ? null : ( -
  1. {lang === 'zh-CN' ? cn.name : cn.enName}
  2. - )} -
      - {cn.packages.map((cp: any) => { - if (!cp.show) return null - return ( - - isPending ? '' : isActive ? 'selected' : '' - } - to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} - > -
    • - {cp.name}   - {lang === 'zh-CN' && cp.cName} - {cp.version !== '2.0.0' ? ( - - 🛠 - - ) : null} -
    • -
      - ) - })} -
    -
    - ) - })} -
-
- ) -} - -export default Nav diff --git a/src/sites/sites-react/doc-taro/App.scss b/src/sites/sites-react/doc-taro/App.scss new file mode 100644 index 0000000000..30e763cf00 --- /dev/null +++ b/src/sites/sites-react/doc-taro/App.scss @@ -0,0 +1,254 @@ +$doc-title-height: 137px; + +.doc { + &-content { + margin-left: 290px; + display: flex; + flex-direction: column; + background: #fff; + &-document { + min-height: 800px; + + .markdown-body { + min-height: 600px; + } + } + + &-tabs { + position: absolute; + right: 475px; + top: 48px; + display: flex; + height: 40px; + align-items: center; + justify-content: space-between; + z-index: 1; + padding: 2px; + box-sizing: border-box; + + border-radius: 2px; + background: #eee; + box-shadow: rgb(0 0 0 / 15%) 0px 2px 4px; + + &.single { + padding: 0; + + .tab-item { + line-height: 40px; + cursor: auto; + } + } + + .tab-item { + position: relative; + padding: 0 10px; + line-height: 36px; + cursor: pointer; + font-size: 16px; + color: #323232; + text-align: center; + border-radius: 2px; + background: #eee; + + &.cur { + font-weight: bold; + color: #323232; + background: #fff; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + } + + &-contributors { + margin: 40px 0; + + a { + position: relative; + } + + img { + height: 26px; + height: 26px; + border-radius: 50%; + margin-left: 8px; + } + + .contributors-hover { + display: none; + padding: 5px 10px; + color: #fff; + font-size: 12px; + background-color: #000; + border-radius: 5px; + position: absolute; + /* min-width:150px; */ + white-space: nowrap; + top: -200%; + transform: translateX(-55%); + } + + a:hover { + .contributors-hover { + display: inline-block; + } + } + } + + &-contributors-gap { + padding-top: 20px; + border-top: 1px solid #eeeaea; + } + + &-faq { + &-title { + margin: 38px 0 20px; + font-size: 24px; + font-weight: bold; + } + + &-item { + margin: 0 8px 28px; + } + + &-que { + font-size: 18px; + line-height: 30px; + color: #323232; + font-weight: 600; + } + + &-aws { + margin-top: 8px; + color: #34495e; + font-size: 14px; + line-height: 26px; + } + } + } + + &-title { + width: 100%; + height: $doc-title-height; + z-index: 2; + + &-content { + display: flex; + justify-content: space-between; + flex-direction: column; + align-items: flex-start; + width: calc(100% - 408px); + + .npm-package { + img { + margin-right: 5px; + } + } + } + + &-position { + top: 0px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 24px 40px; + // line-height: 56px; + border-bottom: 1px solid #eee; + background: #fff; + visibility: visible; + opacity: 1; + // transition: opacity 0.8s linear, visibility 0.8s linear; + transition: opacity 0.8s; + + &.fixed { + width: calc(100% - 290px); + position: fixed; + padding: 24px 48px; + z-index: 999; + .title { + font-size: 24px; + font-weight: bold; + } + + .doc-content-tabs { + position: revert; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + + .title { + font-size: 32px; + font-weight: bold; + } + } + } +} + +::v-deep(.contributors-banner) { + display: flex; + width: 800px; + + .banner-link { + position: relative; + flex: 1; + margin-right: 20px; + + .shadow { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + opacity: 0; + transition: all linear 0.2s; + } + + &:hover { + .shadow { + opacity: 1; + } + + .img-icon { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + } + + img { + display: block; + width: 100%; + height: 200px; + } + + .img-icon { + position: absolute; + z-index: 999; + bottom: -10px; + right: 0; + width: 80px; + height: 70px; + transition: all linear 0.2s; + } + + .img-icon-book { + width: 50px; + height: 50px; + bottom: 0; + right: 10px; + } +} +.doc-backtop { + position: fixed; + bottom: 14px; + right: 200px; +} diff --git a/src/sites/sites-react/doc-taro/App.tsx b/src/sites/sites-react/doc-taro/App.tsx new file mode 100644 index 0000000000..ccaf89769f --- /dev/null +++ b/src/sites/sites-react/doc-taro/App.tsx @@ -0,0 +1,146 @@ +import React, { useEffect, useMemo, useState } from 'react' +import { HashRouter, Routes, Route, useLocation } from 'react-router-dom' +import { MDXProvider } from '@mdx-js/react' +import './App.scss' +import APPContext from '../doc/context' +import Nav from '../doc/components/nav' +import Header from '../doc/components/header' +import DemoPreview from '../doc/components/demo-preview' +import Issue from '..//doc/components/issue' +import { getComponentName } from '../../assets/util' +import { routes as routers, guideEnTaroRoutes, guideTaroRoutes } from './router' +import loadable from '@loadable/component' +import CodeBlock from '../doc/components/demoblock/codeblock' +import { BackTop } from '../../../packages/backtop/backtop' +import { Navigate } from 'react-router-dom' + +const Title = () => { + console.log(routers) + let location = useLocation() + const isTaro = window.location.pathname.includes('taro') + const s = window.location.hash.split('/') + useEffect(() => { + const componentName = getComponentName() + setComponentName(componentName) + }, [location]) + const [componentName, setComponentName] = useState({ name: '', cName: '' }) + return ( +
+
+ {componentName.name} {s[1] === 'zh-CN' && componentName.cName} +
+ {isTaro ? ( +
+ + @nutui/nutui-react-taro + + +
+ ) : ( +
+ + @nutui/nutui-react + + +
+ )} +
+ ) +} + +const components = { + CodeBlock, +} + +const Content = () => { + const [fixed, setFixed] = useState(false) + const location = useLocation() + const scrollTitle = () => { + let top = document.documentElement.scrollTop + if (top > 127) { + setFixed(true) + } else { + setFixed(false) + } + } + const isGuide = location.pathname.includes('/guide') + useEffect(() => { + document.addEventListener('scroll', scrollTitle) + }, []) + const routes = [...routers, ...guideTaroRoutes, ...guideEnTaroRoutes] + return ( +
+ {!isGuide && ( +
+
+ + </div> + </div> + )} + <div + className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} + > + <Routes> + <Route + path="/" + element={<Navigate to="/zh-CN/guide/intro-react" />} + /> + {routes.map((ru, k) => { + const path = ru.component?.name?.substring( + 0, + ru.component.name.lastIndexOf('/') + ) + const C = useMemo(() => loadable(ru.component), [ru.component]) + return ( + <Route + key={k} + path={ru.path} + element={ + <APPContext.Provider value={{ path }}> + <MDXProvider components={components}> + <C /> + </MDXProvider> + </APPContext.Provider> + } + ></Route> + ) + })} + </Routes> + </div> + {!isGuide && ( + <> + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + </> + )} + </div> + ) +} + +const App = () => { + return ( + <div> + <HashRouter> + <Header /> + <Nav /> + <Content /> + </HashRouter> + </div> + ) +} + +export default App diff --git a/src/sites/doc/context.ts b/src/sites/sites-react/doc-taro/context.ts similarity index 100% rename from src/sites/doc/context.ts rename to src/sites/sites-react/doc-taro/context.ts diff --git a/src/sites/sites-react/doc-taro/docs.taro.ts b/src/sites/sites-react/doc-taro/docs.taro.ts new file mode 100644 index 0000000000..0e866e4365 --- /dev/null +++ b/src/sites/sites-react/doc-taro/docs.taro.ts @@ -0,0 +1,363 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw' +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw' +import CellGroup from '@/packages/cellgroup/doc.md?raw' +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw' +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw' +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw' +import Col from '@/packages/col/doc.md?raw' +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw' +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw' +import GridItem from '@/packages/griditem/doc.md?raw' +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw' +import Row from '@/packages/row/doc.md?raw' +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw' +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw' +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw' +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw' +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw' +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw' +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw' +import HoverButtonItem from '@/packages/hoverbuttonitem/doc.md?raw' +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw' +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw' +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw' +import SideBarItem from '@/packages/sidebaritem/doc.md?raw' +import SideNavBarItem from '@/packages/sidenavbaritem/doc.md?raw' +import SubSideNavBar from '@/packages/subsidenavbar/doc.md?raw' +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw' +import TabbarItem from '@/packages/tabbaritem/doc.md?raw' +import TabPane from '@/packages/tabpane/doc.md?raw' +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw' +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw' +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw' +import CalendarItem from '@/packages/calendaritem/doc.md?raw' +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw' +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw' +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw' +import CheckboxGroup from '@/packages/checkboxgroup/doc.md?raw' +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw' +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw' +import FormItem from '@/packages/formitem/doc.md?raw' +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw' +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw' +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw' +import MenuItem from '@/packages/menuitem/doc.md?raw' +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw' +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw' +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw' +import RadioGroup from '@/packages/radiogroup/doc.md?raw' +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw' +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw' +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw' +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw' +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw' +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw' +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw' +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw' +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw' +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw' +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw' +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw' +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw' +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw' +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw' +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw' +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw' +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw' +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw' +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw' +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw' +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw' +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw' +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw' +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw' +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw' +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw' +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw' +import AvatarGroup from '@/packages/avatargroup/doc.md?raw' +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw' +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw' +import CollapseItem from '@/packages/collapseitem/doc.md?raw' +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw' +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw' +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw' +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw' +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw' +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw' +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw' +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw' +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw' +import Step from '@/packages/step/doc.md?raw' +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw' +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw' +import SwiperItem from '@/packages/swiperitem/doc.md?raw' +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw' +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw' +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw' +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw' +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw' +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw' +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw' +import TimeDetail from '@/packages/timedetail/doc.md?raw' +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw' +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw' +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw' +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw' + +export const routers = ['Button','Cell','CellGroup','ConfigProvider','Image','Overlay','Col','Divider','Grid','GridItem','Layout','Row','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','HoverButtonItem','NavBar','SideNavBar','SideBar','SideBarItem','SideNavBarItem','SubSideNavBar','Tabbar','TabbarItem','TabPane','Tabs','Address','Calendar','CalendarItem','CalendarCard','Cascader','Checkbox','CheckboxGroup','DatePicker','Form','FormItem','Input','InputNumber','Menu','MenuItem','NumberKeyboard','Picker','Radio','RadioGroup','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','AvatarGroup','CircleProgress','Collapse','CollapseItem','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Step','Steps','Swiper','SwiperItem','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeDetail','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,CellGroup,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,Col,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,GridItem,LayoutzhTW,Layouttaro,LayoutenUS,Layout,Row,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,HoverButtonItem,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,SideBarItem,SideNavBarItem,SubSideNavBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabbarItem,TabPane,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarItem,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,CheckboxGroup,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,FormItem,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,MenuItem,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RadioGroup,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,AvatarGroup,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CollapseItem,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,Step,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,SwiperItem,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeDetail,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc-taro/docs.ts b/src/sites/sites-react/doc-taro/docs.ts new file mode 100644 index 0000000000..ef1bfc3344 --- /dev/null +++ b/src/sites/sites-react/doc-taro/docs.ts @@ -0,0 +1,359 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw'; +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw'; +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw'; +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw'; +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw'; +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw'; +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw'; +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw'; +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw'; +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw'; +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw'; +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw'; +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw'; +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw'; +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw'; +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw'; +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw'; +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw'; +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw'; +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw'; +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw'; +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw'; +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw'; +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw'; +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw'; +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw'; +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw'; +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw'; +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw'; +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw'; +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw'; +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw'; +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw'; +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw'; +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw'; +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw'; +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw'; +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw'; +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw'; +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw'; +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw'; +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw'; +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw'; +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw'; +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw'; +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw'; +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw'; +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw'; +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw'; +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw'; +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw'; +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw'; +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw'; +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw'; +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw'; +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw'; +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw'; +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw'; +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw'; +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw'; +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw'; +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw'; +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw'; +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw'; +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw'; +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw'; +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw'; +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw'; +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw'; +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw'; +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw'; +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw'; +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw'; +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw'; +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw'; +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw'; +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw'; +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw'; +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw'; +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw'; +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw'; +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw'; +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw'; +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw'; +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw'; + +import CellScss from '@/packages/cell/demo.scss?raw'; +import OverlayScss from '@/packages/overlay/demo.scss?raw'; +import NavBarScss from '@/packages/navbar/demo.scss?raw'; +import CalendarScss from '@/packages/calendar/demo.scss?raw'; +import SignatureScss from '@/packages/signature/demo.scss?raw'; +import NoticeBarScss from '@/packages/noticebar/demo.scss?raw'; +import PopoverScss from '@/packages/popover/demo.scss?raw'; +import SkeletonScss from '@/packages/skeleton/demo.scss?raw'; +import AvatarScss from '@/packages/avatar/demo.scss?raw'; +import CircleProgressScss from '@/packages/circleprogress/demo.scss?raw'; +import SwiperScss from '@/packages/swiper/demo.scss?raw'; +import TourScss from '@/packages/tour/demo.scss?raw'; +import BarrageScss from '@/packages/barrage/demo.scss?raw'; +import TrendArrowScss from '@/packages/trendarrow/demo.scss?raw'; + +export const scssRaws = { CellScss,OverlayScss,NavBarScss,CalendarScss,SignatureScss,NoticeBarScss,PopoverScss,SkeletonScss,AvatarScss,CircleProgressScss,SwiperScss,TourScss,BarrageScss,TrendArrowScss } +export const routers = ['Button','Cell','ConfigProvider','Image','Overlay','Divider','Grid','Layout','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','NavBar','SideNavBar','SideBar','Tabbar','Tabs','Address','Calendar','CalendarCard','Cascader','Checkbox','DatePicker','Form','Input','InputNumber','Menu','NumberKeyboard','Picker','Radio','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','CircleProgress','Collapse','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Steps','Swiper','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,LayoutzhTW,Layouttaro,LayoutenUS,Layout,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/doc/main.tsx b/src/sites/sites-react/doc-taro/main.tsx similarity index 89% rename from src/sites/doc/main.tsx rename to src/sites/sites-react/doc-taro/main.tsx index 2345d6fed1..edbb32b1d5 100644 --- a/src/sites/doc/main.tsx +++ b/src/sites/sites-react/doc-taro/main.tsx @@ -1,6 +1,6 @@ import React from 'react' import * as ReactDOM from 'react-dom/client' -import { isMobile } from '@/sites/assets/util' +import { isMobile } from '../../assets/util' import '@/sites/assets/styles/reset.scss' import '@/sites/assets/styles/md-style.scss' import App from './App' diff --git a/src/sites/sites-react/doc-taro/router.ts b/src/sites/sites-react/doc-taro/router.ts new file mode 100644 index 0000000000..4a4e7bfc7a --- /dev/null +++ b/src/sites/sites-react/doc-taro/router.ts @@ -0,0 +1,46 @@ +// const modulesPage = import.meta.globEager('/src/packages/**/doc.md', { +// as: 'raw', +// }) +const routes: any[] = [] +const guideRoutes: any[] = [] +const guideEnRoutes: any[] = [] +const guideTaroRoutes: any[] = [] +const guideEnTaroRoutes: any[] = [] + + + +const modulesTaroPage = import.meta.glob('/src/packages/**/doc.taro.md') +// console.log('modulesTaroPage', modulesTaroPage) +for (const path in modulesTaroPage) { + let name = (/packages\/(.*)\/doc\.taro\.md/.exec(path) as any[])[1] + routes.push({ + path: '/en-US/component/' + name, + component: modulesTaroPage[path], + name: name, + }) + routes.push({ + path: '/zh-CN/component/' + name, + component: modulesTaroPage[path], + name: name, + }) +} + +const modulesTaroDocs = import.meta.glob('/src/sites/sites-react/doc/docs/taro/*.md'); +for (const path in modulesTaroDocs) { + let name = (/docs\/taro\/(.*).md/.exec(path) as any[])[1]; + guideTaroRoutes.push({ + path: `/zh-CN/guide/${name}`, + component: modulesTaroDocs[path], + name + }); +} +const modulesEnTaroDocs = import.meta.glob('/src/sites/sites-react/doc/docs/taro/*.en-US.md'); +for (const path in modulesEnTaroDocs) { + let name = (/docs\/taro\/(.*).en-US.md/.exec(path) as any[])[1]; + guideEnTaroRoutes.push({ + path: `/en-US/guide/${name}-taro`, + component: modulesEnTaroDocs[path], + name + }); +} +export {routes, guideRoutes, guideEnRoutes, guideTaroRoutes, guideEnTaroRoutes} diff --git a/src/sites/sites-react/doc/App.scss b/src/sites/sites-react/doc/App.scss new file mode 100644 index 0000000000..30e763cf00 --- /dev/null +++ b/src/sites/sites-react/doc/App.scss @@ -0,0 +1,254 @@ +$doc-title-height: 137px; + +.doc { + &-content { + margin-left: 290px; + display: flex; + flex-direction: column; + background: #fff; + &-document { + min-height: 800px; + + .markdown-body { + min-height: 600px; + } + } + + &-tabs { + position: absolute; + right: 475px; + top: 48px; + display: flex; + height: 40px; + align-items: center; + justify-content: space-between; + z-index: 1; + padding: 2px; + box-sizing: border-box; + + border-radius: 2px; + background: #eee; + box-shadow: rgb(0 0 0 / 15%) 0px 2px 4px; + + &.single { + padding: 0; + + .tab-item { + line-height: 40px; + cursor: auto; + } + } + + .tab-item { + position: relative; + padding: 0 10px; + line-height: 36px; + cursor: pointer; + font-size: 16px; + color: #323232; + text-align: center; + border-radius: 2px; + background: #eee; + + &.cur { + font-weight: bold; + color: #323232; + background: #fff; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + } + + &-contributors { + margin: 40px 0; + + a { + position: relative; + } + + img { + height: 26px; + height: 26px; + border-radius: 50%; + margin-left: 8px; + } + + .contributors-hover { + display: none; + padding: 5px 10px; + color: #fff; + font-size: 12px; + background-color: #000; + border-radius: 5px; + position: absolute; + /* min-width:150px; */ + white-space: nowrap; + top: -200%; + transform: translateX(-55%); + } + + a:hover { + .contributors-hover { + display: inline-block; + } + } + } + + &-contributors-gap { + padding-top: 20px; + border-top: 1px solid #eeeaea; + } + + &-faq { + &-title { + margin: 38px 0 20px; + font-size: 24px; + font-weight: bold; + } + + &-item { + margin: 0 8px 28px; + } + + &-que { + font-size: 18px; + line-height: 30px; + color: #323232; + font-weight: 600; + } + + &-aws { + margin-top: 8px; + color: #34495e; + font-size: 14px; + line-height: 26px; + } + } + } + + &-title { + width: 100%; + height: $doc-title-height; + z-index: 2; + + &-content { + display: flex; + justify-content: space-between; + flex-direction: column; + align-items: flex-start; + width: calc(100% - 408px); + + .npm-package { + img { + margin-right: 5px; + } + } + } + + &-position { + top: 0px; + display: flex; + align-items: center; + justify-content: space-between; + padding: 24px 40px; + // line-height: 56px; + border-bottom: 1px solid #eee; + background: #fff; + visibility: visible; + opacity: 1; + // transition: opacity 0.8s linear, visibility 0.8s linear; + transition: opacity 0.8s; + + &.fixed { + width: calc(100% - 290px); + position: fixed; + padding: 24px 48px; + z-index: 999; + .title { + font-size: 24px; + font-weight: bold; + } + + .doc-content-tabs { + position: revert; + } + } + + &.hidden { + visibility: hidden; + opacity: 0; + } + + .title { + font-size: 32px; + font-weight: bold; + } + } + } +} + +::v-deep(.contributors-banner) { + display: flex; + width: 800px; + + .banner-link { + position: relative; + flex: 1; + margin-right: 20px; + + .shadow { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + opacity: 0; + transition: all linear 0.2s; + } + + &:hover { + .shadow { + opacity: 1; + } + + .img-icon { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + } + } + + img { + display: block; + width: 100%; + height: 200px; + } + + .img-icon { + position: absolute; + z-index: 999; + bottom: -10px; + right: 0; + width: 80px; + height: 70px; + transition: all linear 0.2s; + } + + .img-icon-book { + width: 50px; + height: 50px; + bottom: 0; + right: 10px; + } +} +.doc-backtop { + position: fixed; + bottom: 14px; + right: 200px; +} diff --git a/src/sites/sites-react/doc/App.tsx b/src/sites/sites-react/doc/App.tsx new file mode 100644 index 0000000000..b82c72b8b8 --- /dev/null +++ b/src/sites/sites-react/doc/App.tsx @@ -0,0 +1,151 @@ +import React, { useEffect, useMemo, useState } from 'react' +import { + HashRouter, + Routes, + Route, + useLocation, + Navigate, +} from 'react-router-dom' +import { MDXProvider } from '@mdx-js/react' +import './App.scss' +import APPContext from './context' +import Nav from '../doc/components/nav' +import Header from '../doc/components/header' +import DemoPreview from '../doc/components/demo-preview' +import Issue from '..//doc/components/issue' +import { getComponentName } from '../../assets/util' +import { routes as routers, guideEnRoutes, guideRoutes } from './router' +import loadable from '@loadable/component' +import CodeBlock from './components/demoblock/codeblock' +import { BackTop } from '../../../packages/backtop/backtop' + +const Title = () => { + let location = useLocation() + const isTaro = window.location.pathname.includes('taro') + const s = window.location.hash.split('/') + useEffect(() => { + const componentName = getComponentName() + setComponentName(componentName) + }, [location]) + const [componentName, setComponentName] = useState({ name: '', cName: '' }) + return ( + <div className="doc-title-content"> + <div className="title"> + {componentName.name} {s[1] === 'zh-CN' && componentName.cName} + </div> + {isTaro ? ( + <div className="npm-package"> + <a href="https://www.npmjs.com/package/@nutui/nutui-react-taro"> + <img + src="https://img.shields.io/badge/npm-%40nutui%2Fnutui--react--taro-brightgreen" + alt="@nutui/nutui-react-taro" + /> + </a> + <img + src="https://img13.360buyimg.com/imagetools/jfs/t1/169186/5/33010/1762/639703a1E898bcb96/6c372c661c6dddfe.png" + width="20" + height="20" + /> + </div> + ) : ( + <div className="npm-package"> + <a href="https://www.npmjs.com/package/@nutui/nutui-react"> + <img + src="https://img.shields.io/badge/npm-%40nutui%2Fnutui--react-brightgreen" + alt="@nutui/nutui-react" + /> + </a> + <img + src="https://img12.360buyimg.com/imagetools/jfs/t1/192500/27/37524/4524/649d5065F7e5fbef6/afe567692acba3b0.png" + width="20" + height="20" + /> + </div> + )} + </div> + ) +} + +const components = { + CodeBlock, +} + +const Content = () => { + const [fixed, setFixed] = useState(false) + const location = useLocation() + const scrollTitle = () => { + let top = document.documentElement.scrollTop + if (top > 127) { + setFixed(true) + } else { + setFixed(false) + } + } + const isGuide = location.pathname.includes('/guide') + useEffect(() => { + document.addEventListener('scroll', scrollTitle) + }, []) + const routes = [...routers, ...guideRoutes, ...guideEnRoutes] + return ( + <div className="doc-content"> + {!isGuide && ( + <div className="doc-title"> + <div className={`doc-title-position ${fixed ? 'fixed' : ''}`}> + <Title /> + </div> + </div> + )} + <div + className={`doc-content-document ${isGuide ? 'full' : 'isComponent'}`} + > + <Routes> + <Route + path="/" + element={<Navigate to="/zh-CN/guide/intro-react" />} + /> + + {routes.map((ru, k) => { + const path = ru.component?.name?.substring( + 0, + ru.component.name.lastIndexOf('/') + ) + const C = useMemo(() => loadable(ru.component), [ru.component]) + return ( + <Route + key={k} + path={ru.path} + element={ + <APPContext.Provider value={{ path }}> + <MDXProvider components={components}> + <C /> + </MDXProvider> + </APPContext.Provider> + } + ></Route> + ) + })} + </Routes> + </div> + {!isGuide && ( + <> + <DemoPreview className={`${fixed ? 'fixed' : ''}`}></DemoPreview> + <BackTop className={`${fixed ? 'doc-backtop' : ''}`} /> + </> + )} + </div> + ) +} + +const App = () => { + return ( + <div> + <HashRouter> + <Header /> + <Nav /> + <Content /> + </HashRouter> + </div> + ) +} + +export default App diff --git a/src/sites/doc/components/demo-preview/demo-preview.scss b/src/sites/sites-react/doc/components/demo-preview/demo-preview.scss similarity index 100% rename from src/sites/doc/components/demo-preview/demo-preview.scss rename to src/sites/sites-react/doc/components/demo-preview/demo-preview.scss diff --git a/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx new file mode 100644 index 0000000000..017e599765 --- /dev/null +++ b/src/sites/sites-react/doc/components/demo-preview/demo-preview.tsx @@ -0,0 +1,34 @@ +import React, { useEffect, useState } from 'react' +import './demo-preview.scss' +import { nav } from '../../../../config/index' +import { useLocation } from 'react-router-dom' + +declare const __DEMO_PATH__: string +const DemoPreview = (props: any) => { + const location = useLocation() + const [iframeSrc, setIframeSrc] = useState('') + const taroComponentPath: any = {} + nav.forEach((n: any) => { + n.packages.forEach((p: any) => { + taroComponentPath[p.name.toLowerCase()] = + `${n.enName}/pages/${p.name.toLowerCase()}/index` + }) + }) + useEffect(() => { + const c = location.pathname + .slice(location.pathname.lastIndexOf('/') + 1) + .toLocaleLowerCase() + const path = __DEMO_PATH__.includes('taro') + ? `${__DEMO_PATH__}/${taroComponentPath[c]}` + : `${__DEMO_PATH__}${location.pathname}` + setIframeSrc(path) + }, [location]) + + return ( + <div className={`doc-demo-preview ${props.className}`}> + <iframe title="demos" src={iframeSrc}></iframe> + </div> + ) +} + +export default DemoPreview diff --git a/src/sites/sites-react/doc/components/demo-preview/index.ts b/src/sites/sites-react/doc/components/demo-preview/index.ts new file mode 100644 index 0000000000..750c18144c --- /dev/null +++ b/src/sites/sites-react/doc/components/demo-preview/index.ts @@ -0,0 +1,3 @@ +import DemoPreview from '../../../doc/components/demo-preview/demo-preview' + +export default DemoPreview diff --git a/src/sites/doc/components/demoblock/basedUtil.ts b/src/sites/sites-react/doc/components/demoblock/basedUtil.ts similarity index 100% rename from src/sites/doc/components/demoblock/basedUtil.ts rename to src/sites/sites-react/doc/components/demoblock/basedUtil.ts diff --git a/src/sites/doc/components/demoblock/codeblock.tsx b/src/sites/sites-react/doc/components/demoblock/codeblock.tsx similarity index 86% rename from src/sites/doc/components/demoblock/codeblock.tsx rename to src/sites/sites-react/doc/components/demoblock/codeblock.tsx index 541813b962..1509641103 100644 --- a/src/sites/doc/components/demoblock/codeblock.tsx +++ b/src/sites/sites-react/doc/components/demoblock/codeblock.tsx @@ -4,7 +4,7 @@ import APPContext from '../../context' import DemoBlock from './demoblock' import './demoblock.scss' -const modules = import.meta.glob(`@/packages/**/demos/h5/*.tsx`, { +const modules = import.meta.glob(`@/packages/**/demos/**/*.tsx`, { query: '?raw', import: 'default', eager: true, @@ -12,6 +12,7 @@ const modules = import.meta.glob(`@/packages/**/demos/h5/*.tsx`, { const CodeBlock: FunctionComponent = (props: { src?: string }) => { const ctx = useContext(APPContext) + const path = `${ctx.path}/doc.md` const originCode = modules[`${ctx.path}/demos/${props.src}`] try { const highlightedCode = hljs.highlightAuto(originCode, ['jsx']).value @@ -22,7 +23,7 @@ const CodeBlock: FunctionComponent = (props: { src?: string }) => { </pre> </DemoBlock> ) - } catch(e) { + } catch (e) { console.log('e', e) return <></> } diff --git a/src/sites/doc/components/demoblock/demoblock.scss b/src/sites/sites-react/doc/components/demoblock/demoblock.scss similarity index 100% rename from src/sites/doc/components/demoblock/demoblock.scss rename to src/sites/sites-react/doc/components/demoblock/demoblock.scss diff --git a/src/sites/doc/components/demoblock/demoblock.tsx b/src/sites/sites-react/doc/components/demoblock/demoblock.tsx similarity index 98% rename from src/sites/doc/components/demoblock/demoblock.tsx rename to src/sites/sites-react/doc/components/demoblock/demoblock.tsx index b8ba1bd841..45bb6fef23 100644 --- a/src/sites/doc/components/demoblock/demoblock.tsx +++ b/src/sites/sites-react/doc/components/demoblock/demoblock.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react' import { compressText, copyCodeHtml } from './basedUtil' - +import './demoblock.scss' interface A { text: string scss: string diff --git a/src/sites/doc/components/demoblock/index.ts b/src/sites/sites-react/doc/components/demoblock/index.ts similarity index 100% rename from src/sites/doc/components/demoblock/index.ts rename to src/sites/sites-react/doc/components/demoblock/index.ts diff --git a/src/sites/sites-react/doc/components/header/header.scss b/src/sites/sites-react/doc/components/header/header.scss new file mode 100644 index 0000000000..c6d116a3aa --- /dev/null +++ b/src/sites/sites-react/doc/components/header/header.scss @@ -0,0 +1,996 @@ +.v3-banner { + position: fixed; + top: 0; + transition: all 0.3s; + > a { + color: #fff; + font-weight: bold; + } + font-size: 14px; + width: 100%; + z-index: 999; + text-align: center; + padding: 10px 60px; + color: #fff; + background: linear-gradient( + 135deg, + rgba(242, 20, 12, 1) 0%, + rgba(232, 34, 14, 1) 69.83950099728881%, + rgba(242, 77, 12, 1) 100% + ); +} +.doc { + &-header { + // position: fixed; + z-index: 9999; + top: 0px; + left: 0; + right: 0; + min-width: 1300px; + background-size: cover; + background-position: center; + background-repeat: no-repeat; + height: $doc-header-height; + line-height: $doc-header-height; + text-align: left; + padding: 0 50px; + font-size: 20px; + } +} +.header { + &-logo { + position: relative; + display: inline-block; + width: 240px; + height: 64px; + margin-left: -30px; + .logo-link { + width: 110px !important; + height: 46px; + vertical-align: middle; + position: absolute; + top: 50%; + margin-top: -23px; + cursor: pointer; + + &.react { + width: 160px !important; + } + &.jdb, + &.jddkh { + width: 180px; + } + } + .logo-border { + width: 1px; + height: 26px; + position: absolute; + right: -30px !important; + top: 50%; + margin-top: -13px; + } + .version { + position: absolute; + right: 40px; + font-size: 16px !important; + color: #fa2c19; + + &.taro { + right: 30px; + } + + &.react { + right: 20px; + + &.taro { + right: 5px; + } + } + } + } + &-nav { + display: flex; + justify-content: space-between; + align-items: center; + float: right; + width: calc(100% - 240px); + min-width: 900px; + padding-left: 40px; + .nav-box { + .nav-list { + position: relative; + min-width: 490px; + display: flex; + list-style: none; + align-items: center; + justify-content: flex-end; + } + .nav-item { + position: relative; + margin-right: 30px; + font-size: 14px; + height: 63px; + line-height: 63px; + text-align: center; + cursor: pointer; + flex-shrink: 0; + a { + display: inline-block; + line-height: 64px; + } + // overflow: hidden; + &.active { + font-weight: bold; + &:after { + content: ''; + display: inline-block; + width: 35px; + height: 13px; + position: absolute; + bottom: 3px; + left: 50%; + margin-left: -17.5px; + background: url('../../../../assets/images/item-active.png'); + } + } + &:last-of-type { + margin-right: 0; + } + } + .user-link { + display: inline-block; + width: 26px; + height: 26px; + vertical-align: middle; + background-repeat: no-repeat; + background-image: url('../../../../assets/images/icon-user.png'); + background-size: 26px; + + &.gitee { + margin-left: 8px; + background-image: url('../../../../assets/images/icon-gitee.png'); + } + } + } + } +} +.header-select { + &-box { + position: relative; + display: inline-block; + vertical-align: middle; + outline: 0; + } + &-hd { + min-width: 77px; + height: 28px; + padding: 0 30px 0 15px; + line-height: 26px; + font-size: 14px; + color: $theme-red-word; + background-position: right 15px top 12px; + background-size: 8px 5px; + background-repeat: no-repeat; + border-radius: 14px; + } + &-bd { + position: absolute; + top: 30px; + left: 50%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + } + &-item { + width: 120px; + height: 28px; + padding: 0 12px; + line-height: 26px; + font-size: 14px; + border-width: 0px 1px 1px; + border-style: solid; + cursor: pointer; + &:first-of-type { + border-top-width: 1px; + } + } +} +// 颜色 +.doc-header { + .link-title:hover { + cursor: pointer; + } + // 红色 + &-red { + background-image: $theme-red-header-bg; + color: $theme-red-word; + .header { + &-logo { + .logo-link { + background: url('../../../../assets/images/logo-header-white.png') + no-repeat center/100%; + &.react { + background: url('../../../../assets/images/logo-header-white-react.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } + } + .logo-border { + background: $theme-red-border; + } + } + &-nav { + .search-box { + .search-input { + color: $theme-red-word; + background-position: 0 0; + &::-webkit-input-placeholder { + color: $theme-red-input; + } + } + } + .nav-box { + .nav-item { + color: $theme-red-word; + a { + color: $theme-red-word; + } + &.active { + color: $theme-red-actice; + &:after { + background-position: 0 0; + } + a { + color: $theme-red-actice; + } + } + } + .user-link { + background-position: 0 0; + // &:hover { + // background-position: -26px 0; + // } + } + } + } + } + .header-select { + &-box { + position: relative; + &.select-down { + .header-select-hd { + background-image: url('../../../../assets/images/icon-select-white-down.png'); + } + } + &.select-up { + .header-select-hd { + background-image: url('../../../../assets/images/icon-select-white-up.png'); + } + } + .guild-line { + position: absolute; + height: 20px; + width: 77px; + right: 0%; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(255, 255, 255, 0.2); + } + &:hover { + background-color: rgba(255, 255, 255, 0.06); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } + } + } + } + &-hd { + color: $theme-red-word; + border: 1px solid $theme-white-select-border; + } + &-bd { + color: $theme-white-select-word; + } + &-item { + border-color: $theme-red-select-border; + background-color: $theme-red-select-bg; + &:hover { + color: $theme-red; + } + } + } + } + // 白色 + &-white { + background: $white; + color: $theme-white-word; + border-bottom: 1px solid $theme-white-box-border; + .header { + &-logo { + .logo-link { + background: url('../../../assets/images/logo-header-red.png') + no-repeat center/100%; + &.react { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } + } + .logo-border { + background: $theme-white-border; + } + } + &-nav { + .search-box { + .search-input { + color: $theme-white-word; + background-position: 0 -22px; + &::-webkit-input-placeholder { + color: $theme-white-input; + } + } + } + .nav-box { + .nav-item { + color: $theme-white-word; + a { + color: $theme-white-word; + } + &.active { + color: $theme-white-actice; + &:after { + background-position: 0 -13px; + } + a { + color: $theme-white-actice; + } + } + } + .user-link { + background-position: 0 -25px; + // &:hover { + // background-position: -26px -25px; + // } + } + } + } + } + .header-select { + &-box { + position: relative; + &.select-down { + .header-select-hd { + background-image: url('../../../assets/images/icon-select-gray-down.png'); + } + } + &.select-up { + .header-select-hd { + background-image: url('../../../assets/images/icon-select-gray-up.png'); + } + } + .guild-line { + position: absolute; + right: 0%; + height: 20px; + width: 77px; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: $theme-white; + border: 1px solid $theme-white-select-border; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(0, 0, 0, 0.06); + } + &:hover { + background-color: rgba(0, 0, 0, 0.02); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } + } + } + } + &-hd { + color: $theme-white-select-word; + border: 1px solid $theme-white-select-border; + } + &-bd { + color: $theme-white-select-word; + } + &-item { + border-color: $theme-white-select-border; + background-color: $theme-white-select-bg; + &:hover { + color: $theme-white-actice; + } + } + } + } + // 黑色 + &-black { + background: $black; + color: $theme-black-word; + border-bottom: 1px solid $theme-black-box-border; + .header { + &-logo { + .logo-link { + background: url('../../../assets/images/logo-header-red.png') + no-repeat center/100%; + &.react { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/124864/1/33144/4732/63a97786F51517a97/a9ca3c1e043ceeb4.png') + no-repeat center/100%; + } + &.jdb { + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/23011/31/12900/11114/64257a3cF018c7f3b/3574c5a9ae4d1040.png') + no-repeat center/100%; + width: 180px !important; + } + &.jddkh { + background: url('https://img14.360buyimg.com/imagetools/jfs/t1/132257/25/35572/4472/64257a3cFff3e161d/7010593eb1334f46.png') + no-repeat center/100%; + width: 180px !important; + } + } + .logo-border { + background: $theme-black-border; + } + } + &-nav { + .search-box { + .search-input { + color: $theme-black-word; + background-position: 0 -44px; + &::-webkit-input-placeholder { + color: $theme-black-input; + } + } + } + .nav-box { + .nav-item { + color: $theme-black-word; + a { + color: $theme-black-word; + } + &.active { + color: $theme-black-actice; + &:after { + background-position: 0 -13px; + } + a { + color: $theme-black-actice; + } + } + } + .user-link { + background-position: 0 -51px; + // &:hover { + // background-position: -26px -51px; + // } + } + } + } + } + .header-select { + &-box { + &.select-down { + .header-select-hd { + background-image: url('../../../../assets/images/icon-select-white-down.png'); + } + } + &.select-up { + .header-select-hd { + background-image: url('../../../assets/images/icon-select-white-up.png'); + } + } + .guild-line { + position: absolute; + height: 20px; + right: 0%; + width: 77px; + background: transparent; + } + .guid-data { + position: absolute; + top: 40px; + right: 0%; + margin-left: -60px; + border-radius: 3px; + overflow: hidden; + padding-left: 29px; + padding-right: 29px; + width: 336px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + z-index: 3; + .info { + padding-top: 16px; + padding-bottom: 22px; + &:first-child { + border-bottom: 1px solid #5e5e5e; + padding-bottom: 10px; + } + .header { + display: flex; + align-items: center; + justify-content: flex-start; + line-height: 24px; + .icon { + width: 22px; + height: 19px; + margin-right: 9px; + } + } + .content { + padding-top: 6px; + padding-bottom: 6px; + display: flex; + align-items: center; + justify-content: space-between; + line-height: 24px; + margin-top: 2px; + margin-bottom: 2px; + border-radius: 4px; + &.active { + background-color: rgba(255, 255, 255, 0.2); + } + &:hover { + background-color: rgba(255, 255, 255, 0.06); + } + .version { + width: 91px; + text-align: center; + } + .list { + width: 95px; + height: 24px; + align-items: center; + justify-content: flex-start; + display: flex; + .lang { + height: 24px; + background: rgba(65, 184, 131, 0.16); + border-radius: 4px; + margin-right: 4px; + &:nth-child(2) { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + .name { + padding-left: 6px; + padding-right: 6px; + font-size: 14px; + font-family: PingFangSC; + font-weight: normal; + color: #41b883; + } + } + } + .app { + display: flex; + justify-content: flex-start; + width: 64px; + margin-left: 18px; + margin-right: 19px; + } + } + } + .contentKey { + @extend .info; + .content { + .list { + .lang { + background: rgba(116, 201, 255, 0.16); + .name { + color: #74c9ff; + } + } + } + } + } + } + } + &-hd { + color: $theme-black-select-word; + background-color: $theme-black-select-bg; + border: 1px solid $theme-black-select-border; + } + &-bd { + color: $theme-black-select-word; + } + &-item { + background-color: $theme-black-select-bg; + border-color: $theme-black-select-bg; + &:hover { + background-color: $theme-black-select-hover; + border-color: $theme-black-select-hover; + } + } + } + } +} +// 下拉列表选择动画效果 +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.5s; +} +.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ { + opacity: 0; +} +.fade-enter { + opacity: 0; +} +.fade-enter-active { + opacity: 1; + transition: opacity 0.3s; +} +.fade-exit { + opacity: 1; +} +.fade-exit-active { + opacity: 0; + transition: opacity 0.3s; +} + +.fade-content { + background-color: #f9f9f9; + padding: 20px; + border: 1px solid #ddd; + margin-top: 10px; +} +.site-guid-data { + // display: block !important; + line-height: normal; + position: absolute; + z-index: 10; + top: 60px; + left: -180px; + padding: 20px; + width: 450px; + background: #2c2c2c; + border: 1px solid #5e5e5e; + border-radius: 12px; + font-size: 14px; + color: #fff; + .site-guid-data-arrow { + position: absolute; + width: 100px; + height: 30px; + top: -26px; + left: 37%; + cursor: pointer; + } + .info { + // &:first-child { + // border-bottom: 1px solid #5e5e5e; + // } + .header { + line-height: 24px; + border-bottom: 1px solid #514c4c; + .type { + padding: 10px; + } + } + } + .product-type { + overflow: hidden; + width: 100%; + display: flex; + justify-content: flex-start; + flex-wrap: wrap; + } + .content-disabled { + &:hover { + cursor: not-allowed !important; + } + } + .content { + width: 200px; + display: flex; + align-items: center; + padding: 15px 10px; + transition: all linear 0.2s; + &:hover { + background-color: rgba(88, 88, 88, 0.8); + cursor: pointer; + } + .item-logo { + width: 30px; + height: 30px; + margin-right: 10px; + img { + width: 100%; + height: 100%; + } + } + .name { + color: #fff; + } + .status { + display: inline-block; + font-size: 12px; + padding: 3px 6px; + color: #fff; + background: linear-gradient(119deg, #00b2bd 11%, #2ceb85 55%); + transform: scale(0.8); + border-radius: 10px; + } + .infor-disabled { + background: gray; + cursor: not-allowed; + } + .infor-goline { + background: linear-gradient(315deg, #6772ff 0, #00f9e5 100%); + } + .infor-child-name { + display: inline-block; + padding: 3px 6px; + margin-left: 2px; + font-size: 12px; + color: #00b2bd; + border: 1px solid #00b2bd; + border-radius: 10px; + transform: scale(0.8); + + &:hover { + color: #2ceb85; + border-color: #2ceb85; + background-color: rgba(0, 178, 189, 0.5); + cursor: pointer; + } + } + .version { + margin-top: 6px; + font-size: 12px; + } + } + // .child-content { + // width: 100%; + // } +} +.guid-data-business { + top: 60px !important; + left: -80px !important; + + .content.disabled { + opacity: 0.5; + cursor: not-allowed; + } +} +.nav-item-title { + display: flex !important; + align-items: center; + .hover-arrow { + width: 10px; + height: 8px; + transition: all linear 0.2s; + margin-left: 5px; + } +} +.header { + font-weight: bold; + font-size: 16px; +} +.plat { + text-align: left; + line-height: normal; + font-weight: bold; + margin-top: 5px; + margin-left: 10px; +} +.list { + width: 120px; + + .lang .name { + font-size: 12px !important; + } +} +.content { + font-size: 12px; + + .version { + margin-left: 20px; + text-align: left !important; + } +} diff --git a/src/sites/sites-react/doc/components/header/header.tsx b/src/sites/sites-react/doc/components/header/header.tsx new file mode 100644 index 0000000000..ba773e8f96 --- /dev/null +++ b/src/sites/sites-react/doc/components/header/header.tsx @@ -0,0 +1,368 @@ +import React, { useEffect, useState } from 'react' +// @ts-ignore +import { version } from '/package.json' +import config from '../../../../config/env' +import './header.scss' +import { useNavigate, useLocation } from 'react-router-dom' +import { CSSTransition } from 'react-transition-group' +import Search from '../search/search' +import { + SiteReactTaro, + nav, + repository, + reactGuide, + moreGuide, +} from '../../../../config/index' +const Header = () => { + const navigate = useNavigate() + const location = useLocation() + const [currLang, setCurrLang] = useState<any>({}) + + const toHome = () => { + navigate('/') + } + + useEffect(() => { + let packages = [] as any[] + nav.forEach((item) => { + packages.push(...item.packages) + }) + }, []) + + useEffect(() => { + const lang = langs.filter( + (l) => location.pathname.indexOf(l.locale) > -1 + )[0] + setCurrLang(lang) + }, [location]) + + const langs = [ + { name: '中文', locale: 'zh-CN' }, + { name: 'English', locale: 'en-US' }, + ] + const isZh = currLang?.locale === 'zh-CN' + const toLink = (item: any) => { + if (item) { + if (isZh) { + item.path = item.path.replace('en-US', 'zh-CN') + } else { + item.path = item.path.replace('zh-CN', 'en-US') + } + navigate(item.path) + } else { + navigate('/') + } + } + useEffect(() => { + const lang = langs.filter( + (l) => location.pathname.indexOf(l.locale) > -1 + )[0] + setCurrLang(lang) + }, [location]) + const [activeLink, setActiveLink] = useState('指南') + // const handleSwitchLocale = (e: any) => { + // const classList: string[] = [].slice.call(e.target.classList) + // if (classList.indexOf('curr-lang') > -1) { + // return setVisible(!visible) + // } + // const name = e.target.innerText + // setVisible(!visible) + // const [{ locale }] = langs.filter((l) => name == l.name) + // let link = '' + // if (config.locales.some((l) => window.location.href.indexOf(l) > -1)) { + // link = window.location.href.replace(/\#\/([a-z-]+)/gi, `#/${locale}`) + // } else { + // link = window.location.href.replace(/\#\//gi, `#/${locale}/`) + // } + // window.location.href = link + // } + const isReactTaro = window.location.href.includes('taro') + const headerBck = SiteReactTaro.header + const [isShowGuid, setIsShowGuid] = useState(false) + const [isShowGuid4, setIsShowGuid4] = useState(false) + const [selectedVersion, setSelectedVersion] = useState(version) + const [selectedLanguage, setSelectedLanguage] = useState('') + const handleMouseHover = (isHovered) => { + setIsShowGuid(isHovered) + } + useEffect(() => { + if (location.pathname.includes('/component')) { + setActiveLink('组件') + } + }, [location]) + const toAnother = () => { + // 开发环境 + if (process.env.NODE_ENV === 'development') { + if (window.location.href.includes('/react/#')) { + window.location.href = window.location.href.replace( + '/react/#', + '/react/index.taro.html#' + ) + } else if (window.location.href.includes('/react/index.taro.html#')) { + window.location.href = window.location.href.replace( + '/react/index.taro.html#', + '/react/#' + ) + } + return + } + // 生产环境 + if (window.location.href.includes('taro')) { + window.location.href = window.location.href.replace('taro', 'h5') + } else if (window.location.href.includes('h5')) { + window.location.href = window.location.href.replace('h5', 'taro') + } + } + const checkGuidTheme = (item: any, type: string) => { + setIsShowGuid(false) + window.open(item.link) + } + const checkGuidTheme2 = (item: any, type: string) => { + if (item.link) { + setIsShowGuid(false) + window.open(item.link) + } + } + const handleClick = () => { + setIsShowGuid(!isShowGuid) + } + + const handleLanguageSelect = (language) => { + setSelectedLanguage(language) + } + const onMouseHover4 = (isHovered) => { + setIsShowGuid4(isHovered) + } + return ( + <div className="doc-header doc-header-black"> + <div className="header-logo"> + <a className={`logo-link react`} onClick={toHome}></a> + <span className="logo-border"></span> + <span> + <span + onClick={toAnother} + className={`version link-title react ${isReactTaro ? 'taro' : ''}`} + style={{ display: 'inline' }} + > + {isReactTaro ? '小程序' : 'H5'} + </span> + </span> + </div> + + <div className="header-nav"> + <Search /> + + <div className="nav-box"> + <ul className="nav-list"> + {headerBck.map((item) => ( + <li + className={`nav-item ${item.cName === activeLink ? 'active' : ''}`} + key={item.name} + onClick={() => { + setActiveLink(item.cName) + }} + > + <a + onClick={() => { + toLink(item) + }} + > + {isZh ? item.cName : item.eName} + </a> + </li> + ))} + <li className="nav-item"> + <div + onMouseEnter={() => handleMouseHover(true)} + onMouseLeave={() => handleMouseHover(false)} + // tabIndex="0" + className={ + isShowGuid + ? 'header-select-box select-up' + : 'header-select-box select-down' + } + onClick={handleClick} + > + <div className="header-select-hd"> + {selectedVersion} + <i className=""></i> + </div> + <div className="guild-line"></div> + + <CSSTransition + in={isShowGuid} + timeout={300} + classNames="fade" + unmountOnExit + > + <div + className={`guid-data ${isShowGuid ? 'fade-in' : 'fade-out'}`} + > + {reactGuide.map((item, indexKey) => ( + <div + className={`info ${indexKey === 1 ? 'contentKey' : ''}`} + key={indexKey} + > + <div className="header"> + <img src={item.icon} className="icon" /> + <div className="type"> {item.type}</div> + </div> + <div> + {item.data.map((info, index) => ( + <div + className="content" + onClick={() => checkGuidTheme(info, 'Basis')} + key={info.link} + > + <div className="version"> {info.name}</div> + <div className="list"> + {info.language.map((lang, index) => ( + <div className="lang" key={lang}> + <div className="name">{lang}</div> + </div> + ))} + </div> + <div className="app"> {info.app}</div> + </div> + ))} + </div> + </div> + ))} + </div> + </CSSTransition> + </div> + </li> + <li className="nav-item" style={{ marginLeft: '-15px' }}> + <div + onMouseEnter={() => onMouseHover4(true)} + onMouseLeave={() => onMouseHover4(false)} + // className="header-select-box" + className={ + isShowGuid4 + ? 'header-select-box select-up' + : 'header-select-box select-down' + } + onClick={() => { + setIsShowGuid4(!isShowGuid4) + }} + > + <div className="header-select-hd"> + {isZh ? '更多' : 'More'} + <i className=""></i> + </div> + <div className="guild-line"></div> + <CSSTransition + in={isShowGuid4} + timeout={300} + classNames="fade" + unmountOnExit + > + <div + className={`guid-data ${isShowGuid4 ? 'fade-in' : 'fade-out'}`} + style={{ width: '-346px' }} + > + {moreGuide.map((item, indexKey) => ( + <div + className={`info ${indexKey === 1 ? 'contentKey' : ''}`} + key={indexKey} + > + <div className="header"> + {item.icon && ( + <img src={item.icon} className="icon" /> + )} + <div className="type"> + {' '} + {isZh ? item.type.cName : item.type.eName} + </div> + </div> + {item.datas.map((info, index) => ( + <div key={index}> + {info.plat && ( + <div className="plat"> + {isZh ? info.plat.cName : info.plat.eName} + </div> + )} + {info.data.map((info2, index2) => ( + <div + className="content" + key={index2} + onClick={() => + checkGuidTheme(info2, 'Advanced') + } + > + <div className="version"> {info2.name}</div> + <div + className="list" + style={{ width: '120px' }} + > + {info2.language.map((lang, index2) => ( + <div className="lang" key={index2}> + <div + className="name" + onClick={() => + handleLanguageSelect(lang) + } + > + {lang} + </div> + </div> + ))} + </div> + {/* <div className="app"> {info2.app}</div> */} + </div> + ))} + </div> + ))} + </div> + ))} + </div> + </CSSTransition> + </div> + </li> + {!isReactTaro && ( + <li + className="nav-item" + onClick={() => { + let location = window.location + if (currLang.locale == 'zh-CN') { + location.href = location.href.replace('zh-CN', 'en-US') + setCurrLang({ + name: 'English', + locale: 'en-US', + }) + } else { + location.href = location.href.replace('en-US', 'zh-CN') + setCurrLang({ + name: '中文', + locale: 'zh-CN', + }) + } + }} + > + En/中 + </li> + )} + <li className="nav-item"> + {repository.git && ( + <a + className="user-link" + target="_blank" + href={repository.git} + ></a> + )} + {repository.gitee && ( + <a + className="user-link gitee" + target="_blank" + href={repository.gitee} + ></a> + )} + </li> + </ul> + </div> + </div> + </div> + ) +} + +export default Header diff --git a/src/sites/sites-react/doc/components/header/index.ts b/src/sites/sites-react/doc/components/header/index.ts new file mode 100644 index 0000000000..989f813ead --- /dev/null +++ b/src/sites/sites-react/doc/components/header/index.ts @@ -0,0 +1,2 @@ +import Header from '../../../doc/components/header/header' +export default Header diff --git a/src/sites/doc/components/issue/index.ts b/src/sites/sites-react/doc/components/issue/index.ts similarity index 100% rename from src/sites/doc/components/issue/index.ts rename to src/sites/sites-react/doc/components/issue/index.ts diff --git a/src/sites/doc/components/issue/issue.scss b/src/sites/sites-react/doc/components/issue/issue.scss similarity index 51% rename from src/sites/doc/components/issue/issue.scss rename to src/sites/sites-react/doc/components/issue/issue.scss index 39180f47d5..1379b84a65 100644 --- a/src/sites/doc/components/issue/issue.scss +++ b/src/sites/sites-react/doc/components/issue/issue.scss @@ -1,9 +1,13 @@ .doc-content-issue { + // position: absolute; + // right: 605px; + // top: 51px; display: flex; align-items: center; z-index: 1; padding: 4px; height: 40px; + // background: var(--bg-color-component-transparent); border-radius: 6px; align-items: center; background: #fff; @@ -15,13 +19,30 @@ transition: all 0.2s ease 0s; display: flex; align-items: center; - padding: 5px 8px; + padding: 5px 9px; line-height: 22px; - font-size: 16px; + font-size: 14px; color: #333; cursor: pointer; text-decoration: none; border-radius: 2px; + .icon { + display: inline-block; + width: 16px; + height: 16px; + margin-right: 5px; + background-size: 100% 100%; + background-repeat: no-repeat; + &.issue { + background-image: url('../../../assets/images/icon-add.svg'); + } + &.open { + background-image: url('../../../assets/images/icon-open.svg'); + } + &.closed { + background-image: url('../../../assets/images/icon-closed.svg'); + } + } .nut-icon { font-size: 12px; margin-right: 5px; diff --git a/src/sites/doc/components/issue/issue.tsx b/src/sites/sites-react/doc/components/issue/issue.tsx similarity index 91% rename from src/sites/doc/components/issue/issue.tsx rename to src/sites/sites-react/doc/components/issue/issue.tsx index da86cbe063..8ea3022583 100644 --- a/src/sites/doc/components/issue/issue.tsx +++ b/src/sites/sites-react/doc/components/issue/issue.tsx @@ -1,6 +1,6 @@ import './issue.scss' import React, { useEffect, useState } from 'react' -import { Tips, Check, Add } from '@nutui/icons-react' +import { Tips, Check, Add, Plus } from '@nutui/icons-react' import { useLocation } from 'react-router-dom' import { getComponentName } from '@/sites/assets/util' @@ -20,7 +20,7 @@ export function Issue() { href="https://github.com/jdf2e/nutui-react/issues" target="_blank" > - <Add /> + <Add className='icon issue'/> Issue </a> <a diff --git a/src/sites/sites-react/doc/components/nav/index.ts b/src/sites/sites-react/doc/components/nav/index.ts new file mode 100644 index 0000000000..99e5eeb8a4 --- /dev/null +++ b/src/sites/sites-react/doc/components/nav/index.ts @@ -0,0 +1,3 @@ +import Nav from '../../../doc/components/nav/nav' + +export default Nav diff --git a/src/sites/doc/components/nav/nav.scss b/src/sites/sites-react/doc/components/nav/nav.scss similarity index 74% rename from src/sites/doc/components/nav/nav.scss rename to src/sites/sites-react/doc/components/nav/nav.scss index 0779dac2a5..7d4ce25755 100644 --- a/src/sites/doc/components/nav/nav.scss +++ b/src/sites/sites-react/doc/components/nav/nav.scss @@ -11,10 +11,12 @@ border-right: 1px solid #eee; overflow: auto; padding-left: 35px; + padding-top: 35px; &.fixed { position: fixed; top: 0; + padding-top: 15px; } ol { @@ -35,10 +37,13 @@ line-height: 48px; font-size: 14px; color: $doc-default-nav-color; - font-weight: bold; position: relative; + font-weight: bold; &.active { + font-weight: bold; + color: $doc-default-color; + &::before { position: absolute; content: ''; @@ -48,8 +53,7 @@ margin-top: -5px; height: 10px; transform: rotate(90deg); - background: url(https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png) - no-repeat; + background: url('https://img10.360buyimg.com/imagetools/jfs/t1/136135/19/14659/946/5fa20aa8E33a9aa26/d329fbe669171208.png'); background-size: 100% 100%; } } @@ -59,15 +63,19 @@ li { padding-left: 29px; cursor: pointer; + height: 100%; + font-weight: bold; &:hover { - a { + &:visited { color: $doc-default-color; } } a { - height: 100%; + &:hover { + color: $doc-default-color !important; + } &.router-link-active, &.active { @@ -76,15 +84,7 @@ &:link, &:visited { - color: $color-title; - } - - &:hover { - color: $doc-default-color; - - &:visited { - color: $doc-default-color; - } + color: #1a1a1a; } b { @@ -92,15 +92,13 @@ font-size: 12px; } } - } - } - } - - .selected { - color: #ff0f23 !important; - li { - color: #ff0f23 !important; + div { + &:hover { + color: $doc-default-color !important; + } + } + } } } } diff --git a/src/sites/sites-react/doc/components/nav/nav.tsx b/src/sites/sites-react/doc/components/nav/nav.tsx new file mode 100644 index 0000000000..7c12605d4b --- /dev/null +++ b/src/sites/sites-react/doc/components/nav/nav.tsx @@ -0,0 +1,121 @@ +import React, { Fragment, useEffect, useState } from 'react' +import { nav, docs } from '@/config.json' +import { NavLink, useLocation, useNavigate } from 'react-router-dom' +import './nav.scss' +import useLocale from '@/sites/assets/locale/uselocale' + +const Nav = () => { + const [cNav] = useState<any>(nav) + const [lang] = useLocale() + const [fixed, setFixed] = useState(false) + const [isGuide, setIsGuide] = useState(false) + const [activeName, setActiveName] = useState<string>('') + const scrollNav = () => { + let top = document.documentElement.scrollTop + if (top > 64) { + setFixed(true) + } else { + setFixed(false) + } + } + useEffect(() => { + document.addEventListener('scroll', scrollNav) + }, []) + + const location = useLocation() + const navigate = useNavigate() + + useEffect(() => { + if (location.pathname.includes('/guide')) { + setIsGuide(true) + } else { + setIsGuide(false) + } + setActiveName(location.pathname.slice(location.pathname.lastIndexOf('/') + 1)) + }, [location]) + const changeNav = (_nav: any) => { + setActiveName(_nav.name) + navigate(`${isZh ? '/zh-CN/' : '/en-US/'}guide/${_nav.name.toLowerCase()}`) + } + const isTaro = window.location.pathname.includes('taro') + const isZh = lang === 'zh-CN' + return ( + <div className={`doc-nav ${fixed ? 'fixed' : ''}`}> + {isGuide ? ( + <ol> + <ul> + {docs.packages.map((_package) => ( + <li + key={_package.name} + className={activeName === _package.name ? 'active' : ''} + > + {_package.show && ( + <> + {_package.isLink ? ( + <a href={_package.name} target="_blank"> + {isZh ? _package.cName : _package.eName} + </a> + ) : ( + <div onClick={() => changeNav(_package)}> + {isZh ? _package.cName : _package.eName} + </div> + )} + </> + )} + </li> + ))} + </ul> + </ol> + ) : ( + <ol> + {cNav.map((cn: any) => { + return ( + <Fragment key={cn.enName}> + {cn.enName === 'dataentry' ? null : ( + <li>{lang === 'zh-CN' ? cn.name : cn.enName}</li> + )} + <ul> + {cn.packages.map((cp: any) => { + if (!cp.show) return null + return ( + <li key={Math.random()}> + <NavLink + key={Math.random()} + className={({ isActive, isPending }) => + isPending ? '' : isActive ? 'active' : '' + } + to={`${lang ? `/${lang}` : ''}/component/${cp.name}`} + > + {cp.name}   + <b>{lang === 'zh-CN' && cp.cName}</b> + {cp.version !== '2.0.0' ? ( + <b + style={{ + background: 'rgb(250, 205, 205)', + padding: '0px 5px', + borderRadius: '5px', + color: 'rgb(255, 255, 255)', + transform: 'scale(0.8)', + height: '20px', + lineHeight: '20px', + display: 'inline-block', + }} + > + 🛠 + </b> + ) : null} + </NavLink> + </li> + ) + })} + </ul> + </Fragment> + ) + })} + </ol> + )} + </div> + ) +} + +export default Nav diff --git a/src/sites/sites-react/doc/components/search/search.scss b/src/sites/sites-react/doc/components/search/search.scss new file mode 100644 index 0000000000..08d5cce62d --- /dev/null +++ b/src/sites/sites-react/doc/components/search/search.scss @@ -0,0 +1,69 @@ +.search-box { + position: relative; + min-width: 300px; + height: 22px; + line-height: 22px; + .search-input { + height: 22px; + padding-left: 42px; + font-size: 14px; + vertical-align: middle; + background-color: transparent; + background-image: url('../../../../assets/images/input-search.png'); + background-repeat: no-repeat; + font-size: 14px; + color: #fff; + &:focus { + outline: none; + } + } + .search-input::placeholder { + color: #888 !important; + // font-style: italic; + // opacity: 1; /* 确保不被透明度影响 */ + } +} +.search-list { + background: #fff; + position: absolute; + width: 300px; + list-style: none; + border: 1px solid #f2f2f2; + z-index: 99999; + top: 27px; + padding: 0; + li { + height: 40px; + line-height: 40px; + font-size: 12px; + a { + display: inline-block; + box-sizing: border-box; + width: 100%; + padding-left: 40px; + text-decoration: none; + color: #666; + } + &:hover { + // background: #6096ff; + color: $doc-default-color; + a { + color: $doc-default-color; + } + } + } + .cur { + background: $doc-default-color; + color: #fff; + &:hover { + color: #fff; + font-weight: bold; + a { + color: #fff; + } + } + a { + color: #fff; + } + } +} diff --git a/src/sites/sites-react/doc/components/search/search.tsx b/src/sites/sites-react/doc/components/search/search.tsx new file mode 100644 index 0000000000..04fd406374 --- /dev/null +++ b/src/sites/sites-react/doc/components/search/search.tsx @@ -0,0 +1,95 @@ +import React, { useEffect, useState } from 'react' +import './search.scss' +import { Link, useNavigate } from 'react-router-dom' +import { nav } from '../../../../config' +export default function Search() { + const navList = nav.flatMap((item) => item.packages).filter((i) => i.show) + const [searchVal, setSearchVal] = useState('') + const [searchList, setSearchList] = useState<any>([]) + const [searchCurName, setSearchCurName] = useState('') + const [searchIndex, setSearchIndex] = useState(0) + const navigate = useNavigate() + const onfocus = () => { + // 处理聚焦事件 + } + + const onblur = () => { + // 处理失焦事件 + } + + const choseList = (e) => { + let index = searchIndex; + if (e.keyCode == 40) { + index++; + } + if (e.keyCode == 38) { + index--; + } + if (searchIndex < 0) { + index = 0; + } + if (searchList.length > 0) { + const cName = searchList[index] && searchList[index].name; + if (cName) { + setSearchCurName(cName); + setSearchIndex(index); + if (e.keyCode == 13) { + navigate(`/zh-CN/component/${(searchList[index].name || '').toLowerCase()}`); + setSearchCurName('') + setSearchIndex(0) + setSearchVal('') + } + } + } + }; + + const checklist = () => { + setSearchCurName('') + setSearchIndex(0) + setSearchVal('') + }; + const onChange = (e) => { + const val = e.target.value + setSearchVal(val) + const list = navList.filter( + (i) => + i.cName.includes(val) || + i.name.toLowerCase().includes(val.toLowerCase()) + ) + setSearchList(list) + } + useEffect(() => { + if (searchVal === '') { + setSearchList([]) + } + }, [searchVal]) + return ( + <div className="search-box"> + <input + type="text" + className="search-input" + placeholder="在 NutUI 中搜索" + value={searchVal} + onChange={onChange} + onFocus={onfocus} + onBlur={onblur} + onKeyUp={choseList} + /> + <ul + className="search-list" + style={{ display: searchList.length > 0 ? 'block' : 'none' }} + > + {searchList.map((item: any, index) => { + return ( + <li key={index} className={searchCurName === item.name ? 'cur' : ''} onClick={() => checklist()}> + <Link to={`/zh-CN/component/${item.name.toLowerCase()}`}> + {item.name} + <span>{item.cName}</span> + </Link> + </li> + ) + })} + </ul> + </div> + ) +} diff --git a/src/sites/sites-react/doc/context.ts b/src/sites/sites-react/doc/context.ts new file mode 100644 index 0000000000..3af78c54ea --- /dev/null +++ b/src/sites/sites-react/doc/context.ts @@ -0,0 +1,5 @@ +import React from 'react' + +export default React.createContext({ + path: '', +}) diff --git a/src/sites/sites-react/doc/docs.taro.ts b/src/sites/sites-react/doc/docs.taro.ts new file mode 100644 index 0000000000..0e866e4365 --- /dev/null +++ b/src/sites/sites-react/doc/docs.taro.ts @@ -0,0 +1,363 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw' +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw' +import CellGroup from '@/packages/cellgroup/doc.md?raw' +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw' +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw' +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw' +import Col from '@/packages/col/doc.md?raw' +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw' +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw' +import GridItem from '@/packages/griditem/doc.md?raw' +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw' +import Row from '@/packages/row/doc.md?raw' +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw' +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw' +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw' +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw' +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw' +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw' +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw' +import HoverButtonItem from '@/packages/hoverbuttonitem/doc.md?raw' +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw' +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw' +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw' +import SideBarItem from '@/packages/sidebaritem/doc.md?raw' +import SideNavBarItem from '@/packages/sidenavbaritem/doc.md?raw' +import SubSideNavBar from '@/packages/subsidenavbar/doc.md?raw' +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw' +import TabbarItem from '@/packages/tabbaritem/doc.md?raw' +import TabPane from '@/packages/tabpane/doc.md?raw' +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw' +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw' +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw' +import CalendarItem from '@/packages/calendaritem/doc.md?raw' +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw' +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw' +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw' +import CheckboxGroup from '@/packages/checkboxgroup/doc.md?raw' +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw' +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw' +import FormItem from '@/packages/formitem/doc.md?raw' +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw' +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw' +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw' +import MenuItem from '@/packages/menuitem/doc.md?raw' +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw' +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw' +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw' +import RadioGroup from '@/packages/radiogroup/doc.md?raw' +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw' +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw' +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw' +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw' +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw' +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw' +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw' +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw' +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw' +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw' +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw' +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw' +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw' +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw' +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw' +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw' +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw' +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw' +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw' +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw' +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw' +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw' +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw' +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw' +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw' +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw' +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw' +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw' +import AvatarGroup from '@/packages/avatargroup/doc.md?raw' +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw' +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw' +import CollapseItem from '@/packages/collapseitem/doc.md?raw' +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw' +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw' +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw' +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw' +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw' +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw' +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw' +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw' +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw' +import Step from '@/packages/step/doc.md?raw' +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw' +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw' +import SwiperItem from '@/packages/swiperitem/doc.md?raw' +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw' +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw' +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw' +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw' +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw' +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw' +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw' +import TimeDetail from '@/packages/timedetail/doc.md?raw' +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw' +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw' +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw' +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw' + +export const routers = ['Button','Cell','CellGroup','ConfigProvider','Image','Overlay','Col','Divider','Grid','GridItem','Layout','Row','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','HoverButtonItem','NavBar','SideNavBar','SideBar','SideBarItem','SideNavBarItem','SubSideNavBar','Tabbar','TabbarItem','TabPane','Tabs','Address','Calendar','CalendarItem','CalendarCard','Cascader','Checkbox','CheckboxGroup','DatePicker','Form','FormItem','Input','InputNumber','Menu','MenuItem','NumberKeyboard','Picker','Radio','RadioGroup','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','AvatarGroup','CircleProgress','Collapse','CollapseItem','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Step','Steps','Swiper','SwiperItem','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeDetail','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,CellGroup,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,Col,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,GridItem,LayoutzhTW,Layouttaro,LayoutenUS,Layout,Row,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,HoverButtonItem,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,SideBarItem,SideNavBarItem,SubSideNavBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabbarItem,TabPane,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarItem,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,CheckboxGroup,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,FormItem,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,MenuItem,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RadioGroup,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,AvatarGroup,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CollapseItem,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,Step,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,SwiperItem,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeDetail,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc/docs.ts b/src/sites/sites-react/doc/docs.ts new file mode 100644 index 0000000000..ef1bfc3344 --- /dev/null +++ b/src/sites/sites-react/doc/docs.ts @@ -0,0 +1,359 @@ +import ButtonzhTW from '@/packages/button/doc.zh-TW.md?raw'; +import Buttontaro from '@/packages/button/doc.taro.md?raw'; +import ButtonenUS from '@/packages/button/doc.en-US.md?raw'; +import Button from '@/packages/button/doc.md?raw'; +import CellzhTW from '@/packages/cell/doc.zh-TW.md?raw'; +import Celltaro from '@/packages/cell/doc.taro.md?raw'; +import CellenUS from '@/packages/cell/doc.en-US.md?raw'; +import Cell from '@/packages/cell/doc.md?raw'; +import ConfigProviderzhTW from '@/packages/configprovider/doc.zh-TW.md?raw'; +import ConfigProvidertaro from '@/packages/configprovider/doc.taro.md?raw'; +import ConfigProviderenUS from '@/packages/configprovider/doc.en-US.md?raw'; +import ConfigProvider from '@/packages/configprovider/doc.md?raw'; +import ImagezhTW from '@/packages/image/doc.zh-TW.md?raw'; +import Imagetaro from '@/packages/image/doc.taro.md?raw'; +import ImageenUS from '@/packages/image/doc.en-US.md?raw'; +import Image from '@/packages/image/doc.md?raw'; +import OverlayzhTW from '@/packages/overlay/doc.zh-TW.md?raw'; +import Overlaytaro from '@/packages/overlay/doc.taro.md?raw'; +import OverlayenUS from '@/packages/overlay/doc.en-US.md?raw'; +import Overlay from '@/packages/overlay/doc.md?raw'; +import DividerzhTW from '@/packages/divider/doc.zh-TW.md?raw'; +import Dividertaro from '@/packages/divider/doc.taro.md?raw'; +import DividerenUS from '@/packages/divider/doc.en-US.md?raw'; +import Divider from '@/packages/divider/doc.md?raw'; +import GridzhTW from '@/packages/grid/doc.zh-TW.md?raw'; +import Gridtaro from '@/packages/grid/doc.taro.md?raw'; +import GridenUS from '@/packages/grid/doc.en-US.md?raw'; +import Grid from '@/packages/grid/doc.md?raw'; +import LayoutzhTW from '@/packages/layout/doc.zh-TW.md?raw'; +import Layouttaro from '@/packages/layout/doc.taro.md?raw'; +import LayoutenUS from '@/packages/layout/doc.en-US.md?raw'; +import Layout from '@/packages/layout/doc.md?raw'; +import SpacezhTW from '@/packages/space/doc.zh-TW.md?raw'; +import Spacetaro from '@/packages/space/doc.taro.md?raw'; +import SpaceenUS from '@/packages/space/doc.en-US.md?raw'; +import Space from '@/packages/space/doc.md?raw'; +import StickyzhTW from '@/packages/sticky/doc.zh-TW.md?raw'; +import Stickytaro from '@/packages/sticky/doc.taro.md?raw'; +import StickyenUS from '@/packages/sticky/doc.en-US.md?raw'; +import Sticky from '@/packages/sticky/doc.md?raw'; +import SafeAreazhTW from '@/packages/safearea/doc.zh-TW.md?raw'; +import SafeAreataro from '@/packages/safearea/doc.taro.md?raw'; +import SafeAreaenUS from '@/packages/safearea/doc.en-US.md?raw'; +import SafeArea from '@/packages/safearea/doc.md?raw'; +import BackTopzhTW from '@/packages/backtop/doc.zh-TW.md?raw'; +import BackToptaro from '@/packages/backtop/doc.taro.md?raw'; +import BackTopenUS from '@/packages/backtop/doc.en-US.md?raw'; +import BackTop from '@/packages/backtop/doc.md?raw'; +import ElevatorzhTW from '@/packages/elevator/doc.zh-TW.md?raw'; +import Elevatortaro from '@/packages/elevator/doc.taro.md?raw'; +import ElevatorenUS from '@/packages/elevator/doc.en-US.md?raw'; +import Elevator from '@/packages/elevator/doc.md?raw'; +import FixedNavzhTW from '@/packages/fixednav/doc.zh-TW.md?raw'; +import FixedNavtaro from '@/packages/fixednav/doc.taro.md?raw'; +import FixedNavenUS from '@/packages/fixednav/doc.en-US.md?raw'; +import FixedNav from '@/packages/fixednav/doc.md?raw'; +import HoverButtonzhTW from '@/packages/hoverbutton/doc.zh-TW.md?raw'; +import HoverButtontaro from '@/packages/hoverbutton/doc.taro.md?raw'; +import HoverButtonenUS from '@/packages/hoverbutton/doc.en-US.md?raw'; +import HoverButton from '@/packages/hoverbutton/doc.md?raw'; +import NavBarzhTW from '@/packages/navbar/doc.zh-TW.md?raw'; +import NavBartaro from '@/packages/navbar/doc.taro.md?raw'; +import NavBarenUS from '@/packages/navbar/doc.en-US.md?raw'; +import NavBar from '@/packages/navbar/doc.md?raw'; +import SideNavBarzhTW from '@/packages/sidenavbar/doc.zh-TW.md?raw'; +import SideNavBartaro from '@/packages/sidenavbar/doc.taro.md?raw'; +import SideNavBarenUS from '@/packages/sidenavbar/doc.en-US.md?raw'; +import SideNavBar from '@/packages/sidenavbar/doc.md?raw'; +import SideBarzhTW from '@/packages/sidebar/doc.zh-TW.md?raw'; +import SideBartaro from '@/packages/sidebar/doc.taro.md?raw'; +import SideBarenUS from '@/packages/sidebar/doc.en-US.md?raw'; +import SideBar from '@/packages/sidebar/doc.md?raw'; +import TabbarzhTW from '@/packages/tabbar/doc.zh-TW.md?raw'; +import Tabbartaro from '@/packages/tabbar/doc.taro.md?raw'; +import TabbarenUS from '@/packages/tabbar/doc.en-US.md?raw'; +import Tabbar from '@/packages/tabbar/doc.md?raw'; +import TabszhTW from '@/packages/tabs/doc.zh-TW.md?raw'; +import Tabstaro from '@/packages/tabs/doc.taro.md?raw'; +import TabsenUS from '@/packages/tabs/doc.en-US.md?raw'; +import Tabs from '@/packages/tabs/doc.md?raw'; +import AddresszhTW from '@/packages/address/doc.zh-TW.md?raw'; +import Addresstaro from '@/packages/address/doc.taro.md?raw'; +import AddressenUS from '@/packages/address/doc.en-US.md?raw'; +import Address from '@/packages/address/doc.md?raw'; +import CalendarzhTW from '@/packages/calendar/doc.zh-TW.md?raw'; +import Calendartaro from '@/packages/calendar/doc.taro.md?raw'; +import CalendarenUS from '@/packages/calendar/doc.en-US.md?raw'; +import Calendar from '@/packages/calendar/doc.md?raw'; +import CalendarCardzhTW from '@/packages/calendarcard/doc.zh-TW.md?raw'; +import CalendarCardtaro from '@/packages/calendarcard/doc.taro.md?raw'; +import CalendarCardenUS from '@/packages/calendarcard/doc.en-US.md?raw'; +import CalendarCard from '@/packages/calendarcard/doc.md?raw'; +import CascaderzhTW from '@/packages/cascader/doc.zh-TW.md?raw'; +import Cascadertaro from '@/packages/cascader/doc.taro.md?raw'; +import CascaderenUS from '@/packages/cascader/doc.en-US.md?raw'; +import Cascader from '@/packages/cascader/doc.md?raw'; +import CheckboxzhTW from '@/packages/checkbox/doc.zh-TW.md?raw'; +import Checkboxtaro from '@/packages/checkbox/doc.taro.md?raw'; +import CheckboxenUS from '@/packages/checkbox/doc.en-US.md?raw'; +import Checkbox from '@/packages/checkbox/doc.md?raw'; +import DatePickerzhTW from '@/packages/datepicker/doc.zh-TW.md?raw'; +import DatePickertaro from '@/packages/datepicker/doc.taro.md?raw'; +import DatePickerenUS from '@/packages/datepicker/doc.en-US.md?raw'; +import DatePicker from '@/packages/datepicker/doc.md?raw'; +import FormzhTW from '@/packages/form/doc.zh-TW.md?raw'; +import Formtaro from '@/packages/form/doc.taro.md?raw'; +import FormenUS from '@/packages/form/doc.en-US.md?raw'; +import Form from '@/packages/form/doc.md?raw'; +import InputzhTW from '@/packages/input/doc.zh-TW.md?raw'; +import Inputtaro from '@/packages/input/doc.taro.md?raw'; +import InputenUS from '@/packages/input/doc.en-US.md?raw'; +import Input from '@/packages/input/doc.md?raw'; +import InputNumberzhTW from '@/packages/inputnumber/doc.zh-TW.md?raw'; +import InputNumbertaro from '@/packages/inputnumber/doc.taro.md?raw'; +import InputNumberenUS from '@/packages/inputnumber/doc.en-US.md?raw'; +import InputNumber from '@/packages/inputnumber/doc.md?raw'; +import MenuzhTW from '@/packages/menu/doc.zh-TW.md?raw'; +import Menutaro from '@/packages/menu/doc.taro.md?raw'; +import MenuenUS from '@/packages/menu/doc.en-US.md?raw'; +import Menu from '@/packages/menu/doc.md?raw'; +import NumberKeyboardzhTW from '@/packages/numberkeyboard/doc.zh-TW.md?raw'; +import NumberKeyboardtaro from '@/packages/numberkeyboard/doc.taro.md?raw'; +import NumberKeyboardenUS from '@/packages/numberkeyboard/doc.en-US.md?raw'; +import NumberKeyboard from '@/packages/numberkeyboard/doc.md?raw'; +import PickerzhTW from '@/packages/picker/doc.zh-TW.md?raw'; +import Pickertaro from '@/packages/picker/doc.taro.md?raw'; +import PickerenUS from '@/packages/picker/doc.en-US.md?raw'; +import Picker from '@/packages/picker/doc.md?raw'; +import RadiozhTW from '@/packages/radio/doc.zh-TW.md?raw'; +import Radiotaro from '@/packages/radio/doc.taro.md?raw'; +import RadioenUS from '@/packages/radio/doc.en-US.md?raw'; +import Radio from '@/packages/radio/doc.md?raw'; +import RangezhTW from '@/packages/range/doc.zh-TW.md?raw'; +import Rangetaro from '@/packages/range/doc.taro.md?raw'; +import RangeenUS from '@/packages/range/doc.en-US.md?raw'; +import Range from '@/packages/range/doc.md?raw'; +import RatezhTW from '@/packages/rate/doc.zh-TW.md?raw'; +import Ratetaro from '@/packages/rate/doc.taro.md?raw'; +import RateenUS from '@/packages/rate/doc.en-US.md?raw'; +import Rate from '@/packages/rate/doc.md?raw'; +import SearchBarzhTW from '@/packages/searchbar/doc.zh-TW.md?raw'; +import SearchBartaro from '@/packages/searchbar/doc.taro.md?raw'; +import SearchBarenUS from '@/packages/searchbar/doc.en-US.md?raw'; +import SearchBar from '@/packages/searchbar/doc.md?raw'; +import ShortPasswordzhTW from '@/packages/shortpassword/doc.zh-TW.md?raw'; +import ShortPasswordtaro from '@/packages/shortpassword/doc.taro.md?raw'; +import ShortPasswordenUS from '@/packages/shortpassword/doc.en-US.md?raw'; +import ShortPassword from '@/packages/shortpassword/doc.md?raw'; +import SignaturezhTW from '@/packages/signature/doc.zh-TW.md?raw'; +import Signaturetaro from '@/packages/signature/doc.taro.md?raw'; +import SignatureenUS from '@/packages/signature/doc.en-US.md?raw'; +import Signature from '@/packages/signature/doc.md?raw'; +import SwitchzhTW from '@/packages/switch/doc.zh-TW.md?raw'; +import Switchtaro from '@/packages/switch/doc.taro.md?raw'; +import SwitchenUS from '@/packages/switch/doc.en-US.md?raw'; +import Switch from '@/packages/switch/doc.md?raw'; +import TextAreazhTW from '@/packages/textarea/doc.zh-TW.md?raw'; +import TextAreataro from '@/packages/textarea/doc.taro.md?raw'; +import TextAreaenUS from '@/packages/textarea/doc.en-US.md?raw'; +import TextArea from '@/packages/textarea/doc.md?raw'; +import UploaderzhTW from '@/packages/uploader/doc.zh-TW.md?raw'; +import Uploadertaro from '@/packages/uploader/doc.taro.md?raw'; +import UploaderenUS from '@/packages/uploader/doc.en-US.md?raw'; +import Uploader from '@/packages/uploader/doc.md?raw'; +import ActionSheetzhTW from '@/packages/actionsheet/doc.zh-TW.md?raw'; +import ActionSheettaro from '@/packages/actionsheet/doc.taro.md?raw'; +import ActionSheetenUS from '@/packages/actionsheet/doc.en-US.md?raw'; +import ActionSheet from '@/packages/actionsheet/doc.md?raw'; +import BadgezhTW from '@/packages/badge/doc.zh-TW.md?raw'; +import Badgetaro from '@/packages/badge/doc.taro.md?raw'; +import BadgeenUS from '@/packages/badge/doc.en-US.md?raw'; +import Badge from '@/packages/badge/doc.md?raw'; +import DialogzhTW from '@/packages/dialog/doc.zh-TW.md?raw'; +import Dialogtaro from '@/packages/dialog/doc.taro.md?raw'; +import DialogenUS from '@/packages/dialog/doc.en-US.md?raw'; +import Dialog from '@/packages/dialog/doc.md?raw'; +import DragzhTW from '@/packages/drag/doc.zh-TW.md?raw'; +import Dragtaro from '@/packages/drag/doc.taro.md?raw'; +import DragenUS from '@/packages/drag/doc.en-US.md?raw'; +import Drag from '@/packages/drag/doc.md?raw'; +import EmptyzhTW from '@/packages/empty/doc.zh-TW.md?raw'; +import Emptytaro from '@/packages/empty/doc.taro.md?raw'; +import EmptyenUS from '@/packages/empty/doc.en-US.md?raw'; +import Empty from '@/packages/empty/doc.md?raw'; +import ResultPagezhTW from '@/packages/resultpage/doc.zh-TW.md?raw'; +import ResultPagetaro from '@/packages/resultpage/doc.taro.md?raw'; +import ResultPageenUS from '@/packages/resultpage/doc.en-US.md?raw'; +import ResultPage from '@/packages/resultpage/doc.md?raw'; +import InfiniteLoadingzhTW from '@/packages/infiniteloading/doc.zh-TW.md?raw'; +import InfiniteLoadingtaro from '@/packages/infiniteloading/doc.taro.md?raw'; +import InfiniteLoadingenUS from '@/packages/infiniteloading/doc.en-US.md?raw'; +import InfiniteLoading from '@/packages/infiniteloading/doc.md?raw'; +import LoadingzhTW from '@/packages/loading/doc.zh-TW.md?raw'; +import Loadingtaro from '@/packages/loading/doc.taro.md?raw'; +import LoadingenUS from '@/packages/loading/doc.en-US.md?raw'; +import Loading from '@/packages/loading/doc.md?raw'; +import NoticeBarzhTW from '@/packages/noticebar/doc.zh-TW.md?raw'; +import NoticeBartaro from '@/packages/noticebar/doc.taro.md?raw'; +import NoticeBarenUS from '@/packages/noticebar/doc.en-US.md?raw'; +import NoticeBar from '@/packages/noticebar/doc.md?raw'; +import NotifyzhTW from '@/packages/notify/doc.zh-TW.md?raw'; +import Notifytaro from '@/packages/notify/doc.taro.md?raw'; +import NotifyenUS from '@/packages/notify/doc.en-US.md?raw'; +import Notify from '@/packages/notify/doc.md?raw'; +import PopoverzhTW from '@/packages/popover/doc.zh-TW.md?raw'; +import Popovertaro from '@/packages/popover/doc.taro.md?raw'; +import PopoverenUS from '@/packages/popover/doc.en-US.md?raw'; +import Popover from '@/packages/popover/doc.md?raw'; +import PopupzhTW from '@/packages/popup/doc.zh-TW.md?raw'; +import Popuptaro from '@/packages/popup/doc.taro.md?raw'; +import PopupenUS from '@/packages/popup/doc.en-US.md?raw'; +import Popup from '@/packages/popup/doc.md?raw'; +import PullToRefreshzhTW from '@/packages/pulltorefresh/doc.zh-TW.md?raw'; +import PullToRefreshtaro from '@/packages/pulltorefresh/doc.taro.md?raw'; +import PullToRefreshenUS from '@/packages/pulltorefresh/doc.en-US.md?raw'; +import PullToRefresh from '@/packages/pulltorefresh/doc.md?raw'; +import SkeletonzhTW from '@/packages/skeleton/doc.zh-TW.md?raw'; +import Skeletontaro from '@/packages/skeleton/doc.taro.md?raw'; +import SkeletonenUS from '@/packages/skeleton/doc.en-US.md?raw'; +import Skeleton from '@/packages/skeleton/doc.md?raw'; +import SwipezhTW from '@/packages/swipe/doc.zh-TW.md?raw'; +import Swipetaro from '@/packages/swipe/doc.taro.md?raw'; +import SwipeenUS from '@/packages/swipe/doc.en-US.md?raw'; +import Swipe from '@/packages/swipe/doc.md?raw'; +import ToastzhTW from '@/packages/toast/doc.zh-TW.md?raw'; +import Toasttaro from '@/packages/toast/doc.taro.md?raw'; +import ToastenUS from '@/packages/toast/doc.en-US.md?raw'; +import Toast from '@/packages/toast/doc.md?raw'; +import AnimatezhTW from '@/packages/animate/doc.zh-TW.md?raw'; +import Animatetaro from '@/packages/animate/doc.taro.md?raw'; +import AnimateenUS from '@/packages/animate/doc.en-US.md?raw'; +import Animate from '@/packages/animate/doc.md?raw'; +import AnimatingNumberszhTW from '@/packages/animatingnumbers/doc.zh-TW.md?raw'; +import AnimatingNumberstaro from '@/packages/animatingnumbers/doc.taro.md?raw'; +import AnimatingNumbersenUS from '@/packages/animatingnumbers/doc.en-US.md?raw'; +import AnimatingNumbers from '@/packages/animatingnumbers/doc.md?raw'; +import AudiozhTW from '@/packages/audio/doc.zh-TW.md?raw'; +import Audiotaro from '@/packages/audio/doc.taro.md?raw'; +import AudioenUS from '@/packages/audio/doc.en-US.md?raw'; +import Audio from '@/packages/audio/doc.md?raw'; +import AvatarzhTW from '@/packages/avatar/doc.zh-TW.md?raw'; +import Avatartaro from '@/packages/avatar/doc.taro.md?raw'; +import AvatarenUS from '@/packages/avatar/doc.en-US.md?raw'; +import Avatar from '@/packages/avatar/doc.md?raw'; +import CircleProgresszhTW from '@/packages/circleprogress/doc.zh-TW.md?raw'; +import CircleProgresstaro from '@/packages/circleprogress/doc.taro.md?raw'; +import CircleProgressenUS from '@/packages/circleprogress/doc.en-US.md?raw'; +import CircleProgress from '@/packages/circleprogress/doc.md?raw'; +import CollapsezhTW from '@/packages/collapse/doc.zh-TW.md?raw'; +import Collapsetaro from '@/packages/collapse/doc.taro.md?raw'; +import CollapseenUS from '@/packages/collapse/doc.en-US.md?raw'; +import Collapse from '@/packages/collapse/doc.md?raw'; +import CountDownzhTW from '@/packages/countdown/doc.zh-TW.md?raw'; +import CountDowntaro from '@/packages/countdown/doc.taro.md?raw'; +import CountDownenUS from '@/packages/countdown/doc.en-US.md?raw'; +import CountDown from '@/packages/countdown/doc.md?raw'; +import EllipsiszhTW from '@/packages/ellipsis/doc.zh-TW.md?raw'; +import Ellipsistaro from '@/packages/ellipsis/doc.taro.md?raw'; +import EllipsisenUS from '@/packages/ellipsis/doc.en-US.md?raw'; +import Ellipsis from '@/packages/ellipsis/doc.md?raw'; +import ImagePreviewzhTW from '@/packages/imagepreview/doc.zh-TW.md?raw'; +import ImagePreviewtaro from '@/packages/imagepreview/doc.taro.md?raw'; +import ImagePreviewenUS from '@/packages/imagepreview/doc.en-US.md?raw'; +import ImagePreview from '@/packages/imagepreview/doc.md?raw'; +import IndicatorzhTW from '@/packages/indicator/doc.zh-TW.md?raw'; +import Indicatortaro from '@/packages/indicator/doc.taro.md?raw'; +import IndicatorenUS from '@/packages/indicator/doc.en-US.md?raw'; +import Indicator from '@/packages/indicator/doc.md?raw'; +import LottiezhTW from '@/packages/lottie/doc.zh-TW.md?raw'; +import Lottietaro from '@/packages/lottie/doc.taro.md?raw'; +import LottieenUS from '@/packages/lottie/doc.en-US.md?raw'; +import Lottie from '@/packages/lottie/doc.md?raw'; +import PaginationzhTW from '@/packages/pagination/doc.zh-TW.md?raw'; +import Paginationtaro from '@/packages/pagination/doc.taro.md?raw'; +import PaginationenUS from '@/packages/pagination/doc.en-US.md?raw'; +import Pagination from '@/packages/pagination/doc.md?raw'; +import SegmentedzhTW from '@/packages/segmented/doc.zh-TW.md?raw'; +import Segmentedtaro from '@/packages/segmented/doc.taro.md?raw'; +import SegmentedenUS from '@/packages/segmented/doc.en-US.md?raw'; +import Segmented from '@/packages/segmented/doc.md?raw'; +import PricezhTW from '@/packages/price/doc.zh-TW.md?raw'; +import Pricetaro from '@/packages/price/doc.taro.md?raw'; +import PriceenUS from '@/packages/price/doc.en-US.md?raw'; +import Price from '@/packages/price/doc.md?raw'; +import ProgresszhTW from '@/packages/progress/doc.zh-TW.md?raw'; +import Progresstaro from '@/packages/progress/doc.taro.md?raw'; +import ProgressenUS from '@/packages/progress/doc.en-US.md?raw'; +import Progress from '@/packages/progress/doc.md?raw'; +import StepszhTW from '@/packages/steps/doc.zh-TW.md?raw'; +import Stepstaro from '@/packages/steps/doc.taro.md?raw'; +import StepsenUS from '@/packages/steps/doc.en-US.md?raw'; +import Steps from '@/packages/steps/doc.md?raw'; +import SwiperzhTW from '@/packages/swiper/doc.zh-TW.md?raw'; +import Swipertaro from '@/packages/swiper/doc.taro.md?raw'; +import SwiperenUS from '@/packages/swiper/doc.en-US.md?raw'; +import Swiper from '@/packages/swiper/doc.md?raw'; +import TablezhTW from '@/packages/table/doc.zh-TW.md?raw'; +import Tabletaro from '@/packages/table/doc.taro.md?raw'; +import TableenUS from '@/packages/table/doc.en-US.md?raw'; +import Table from '@/packages/table/doc.md?raw'; +import TagzhTW from '@/packages/tag/doc.zh-TW.md?raw'; +import Tagtaro from '@/packages/tag/doc.taro.md?raw'; +import TagenUS from '@/packages/tag/doc.en-US.md?raw'; +import Tag from '@/packages/tag/doc.md?raw'; +import TourzhTW from '@/packages/tour/doc.zh-TW.md?raw'; +import Tourtaro from '@/packages/tour/doc.taro.md?raw'; +import TourenUS from '@/packages/tour/doc.en-US.md?raw'; +import Tour from '@/packages/tour/doc.md?raw'; +import VideozhTW from '@/packages/video/doc.zh-TW.md?raw'; +import Videotaro from '@/packages/video/doc.taro.md?raw'; +import VideoenUS from '@/packages/video/doc.en-US.md?raw'; +import Video from '@/packages/video/doc.md?raw'; +import VirtualListzhTW from '@/packages/virtuallist/doc.zh-TW.md?raw'; +import VirtualListtaro from '@/packages/virtuallist/doc.taro.md?raw'; +import VirtualListenUS from '@/packages/virtuallist/doc.en-US.md?raw'; +import VirtualList from '@/packages/virtuallist/doc.md?raw'; +import BarragezhTW from '@/packages/barrage/doc.zh-TW.md?raw'; +import Barragetaro from '@/packages/barrage/doc.taro.md?raw'; +import BarrageenUS from '@/packages/barrage/doc.en-US.md?raw'; +import Barrage from '@/packages/barrage/doc.md?raw'; +import CardzhTW from '@/packages/card/doc.zh-TW.md?raw'; +import Cardtaro from '@/packages/card/doc.taro.md?raw'; +import CardenUS from '@/packages/card/doc.en-US.md?raw'; +import Card from '@/packages/card/doc.md?raw'; +import TimeSelectzhTW from '@/packages/timeselect/doc.zh-TW.md?raw'; +import TimeSelecttaro from '@/packages/timeselect/doc.taro.md?raw'; +import TimeSelectenUS from '@/packages/timeselect/doc.en-US.md?raw'; +import TimeSelect from '@/packages/timeselect/doc.md?raw'; +import TrendArrowzhTW from '@/packages/trendarrow/doc.zh-TW.md?raw'; +import TrendArrowtaro from '@/packages/trendarrow/doc.taro.md?raw'; +import TrendArrowenUS from '@/packages/trendarrow/doc.en-US.md?raw'; +import TrendArrow from '@/packages/trendarrow/doc.md?raw'; +import WaterMarkzhTW from '@/packages/watermark/doc.zh-TW.md?raw'; +import WaterMarktaro from '@/packages/watermark/doc.taro.md?raw'; +import WaterMarkenUS from '@/packages/watermark/doc.en-US.md?raw'; +import WaterMark from '@/packages/watermark/doc.md?raw'; +import AvatarCropperzhTW from '@/packages/avatarcropper/doc.zh-TW.md?raw'; +import AvatarCroppertaro from '@/packages/avatarcropper/doc.taro.md?raw'; +import AvatarCropperenUS from '@/packages/avatarcropper/doc.en-US.md?raw'; +import AvatarCropper from '@/packages/avatarcropper/doc.md?raw'; + +import CellScss from '@/packages/cell/demo.scss?raw'; +import OverlayScss from '@/packages/overlay/demo.scss?raw'; +import NavBarScss from '@/packages/navbar/demo.scss?raw'; +import CalendarScss from '@/packages/calendar/demo.scss?raw'; +import SignatureScss from '@/packages/signature/demo.scss?raw'; +import NoticeBarScss from '@/packages/noticebar/demo.scss?raw'; +import PopoverScss from '@/packages/popover/demo.scss?raw'; +import SkeletonScss from '@/packages/skeleton/demo.scss?raw'; +import AvatarScss from '@/packages/avatar/demo.scss?raw'; +import CircleProgressScss from '@/packages/circleprogress/demo.scss?raw'; +import SwiperScss from '@/packages/swiper/demo.scss?raw'; +import TourScss from '@/packages/tour/demo.scss?raw'; +import BarrageScss from '@/packages/barrage/demo.scss?raw'; +import TrendArrowScss from '@/packages/trendarrow/demo.scss?raw'; + +export const scssRaws = { CellScss,OverlayScss,NavBarScss,CalendarScss,SignatureScss,NoticeBarScss,PopoverScss,SkeletonScss,AvatarScss,CircleProgressScss,SwiperScss,TourScss,BarrageScss,TrendArrowScss } +export const routers = ['Button','Cell','ConfigProvider','Image','Overlay','Divider','Grid','Layout','Space','Sticky','SafeArea','BackTop','Elevator','FixedNav','HoverButton','NavBar','SideNavBar','SideBar','Tabbar','Tabs','Address','Calendar','CalendarCard','Cascader','Checkbox','DatePicker','Form','Input','InputNumber','Menu','NumberKeyboard','Picker','Radio','Range','Rate','SearchBar','ShortPassword','Signature','Switch','TextArea','Uploader','ActionSheet','Badge','Dialog','Drag','Empty','ResultPage','InfiniteLoading','Loading','NoticeBar','Notify','Popover','Popup','PullToRefresh','Skeleton','Swipe','Toast','Animate','AnimatingNumbers','Audio','Avatar','CircleProgress','Collapse','CountDown','Ellipsis','ImagePreview','Indicator','Lottie','Pagination','Segmented','Price','Progress','Steps','Swiper','Table','Tag','Tour','Video','VirtualList','Barrage','Card','TimeSelect','TrendArrow','WaterMark','AvatarCropper'] +export const raws = {ButtonzhTW,Buttontaro,ButtonenUS,Button,CellzhTW,Celltaro,CellenUS,Cell,ConfigProviderzhTW,ConfigProvidertaro,ConfigProviderenUS,ConfigProvider,ImagezhTW,Imagetaro,ImageenUS,Image,OverlayzhTW,Overlaytaro,OverlayenUS,Overlay,DividerzhTW,Dividertaro,DividerenUS,Divider,GridzhTW,Gridtaro,GridenUS,Grid,LayoutzhTW,Layouttaro,LayoutenUS,Layout,SpacezhTW,Spacetaro,SpaceenUS,Space,StickyzhTW,Stickytaro,StickyenUS,Sticky,SafeAreazhTW,SafeAreataro,SafeAreaenUS,SafeArea,BackTopzhTW,BackToptaro,BackTopenUS,BackTop,ElevatorzhTW,Elevatortaro,ElevatorenUS,Elevator,FixedNavzhTW,FixedNavtaro,FixedNavenUS,FixedNav,HoverButtonzhTW,HoverButtontaro,HoverButtonenUS,HoverButton,NavBarzhTW,NavBartaro,NavBarenUS,NavBar,SideNavBarzhTW,SideNavBartaro,SideNavBarenUS,SideNavBar,SideBarzhTW,SideBartaro,SideBarenUS,SideBar,TabbarzhTW,Tabbartaro,TabbarenUS,Tabbar,TabszhTW,Tabstaro,TabsenUS,Tabs,AddresszhTW,Addresstaro,AddressenUS,Address,CalendarzhTW,Calendartaro,CalendarenUS,Calendar,CalendarCardzhTW,CalendarCardtaro,CalendarCardenUS,CalendarCard,CascaderzhTW,Cascadertaro,CascaderenUS,Cascader,CheckboxzhTW,Checkboxtaro,CheckboxenUS,Checkbox,DatePickerzhTW,DatePickertaro,DatePickerenUS,DatePicker,FormzhTW,Formtaro,FormenUS,Form,InputzhTW,Inputtaro,InputenUS,Input,InputNumberzhTW,InputNumbertaro,InputNumberenUS,InputNumber,MenuzhTW,Menutaro,MenuenUS,Menu,NumberKeyboardzhTW,NumberKeyboardtaro,NumberKeyboardenUS,NumberKeyboard,PickerzhTW,Pickertaro,PickerenUS,Picker,RadiozhTW,Radiotaro,RadioenUS,Radio,RangezhTW,Rangetaro,RangeenUS,Range,RatezhTW,Ratetaro,RateenUS,Rate,SearchBarzhTW,SearchBartaro,SearchBarenUS,SearchBar,ShortPasswordzhTW,ShortPasswordtaro,ShortPasswordenUS,ShortPassword,SignaturezhTW,Signaturetaro,SignatureenUS,Signature,SwitchzhTW,Switchtaro,SwitchenUS,Switch,TextAreazhTW,TextAreataro,TextAreaenUS,TextArea,UploaderzhTW,Uploadertaro,UploaderenUS,Uploader,ActionSheetzhTW,ActionSheettaro,ActionSheetenUS,ActionSheet,BadgezhTW,Badgetaro,BadgeenUS,Badge,DialogzhTW,Dialogtaro,DialogenUS,Dialog,DragzhTW,Dragtaro,DragenUS,Drag,EmptyzhTW,Emptytaro,EmptyenUS,Empty,ResultPagezhTW,ResultPagetaro,ResultPageenUS,ResultPage,InfiniteLoadingzhTW,InfiniteLoadingtaro,InfiniteLoadingenUS,InfiniteLoading,LoadingzhTW,Loadingtaro,LoadingenUS,Loading,NoticeBarzhTW,NoticeBartaro,NoticeBarenUS,NoticeBar,NotifyzhTW,Notifytaro,NotifyenUS,Notify,PopoverzhTW,Popovertaro,PopoverenUS,Popover,PopupzhTW,Popuptaro,PopupenUS,Popup,PullToRefreshzhTW,PullToRefreshtaro,PullToRefreshenUS,PullToRefresh,SkeletonzhTW,Skeletontaro,SkeletonenUS,Skeleton,SwipezhTW,Swipetaro,SwipeenUS,Swipe,ToastzhTW,Toasttaro,ToastenUS,Toast,AnimatezhTW,Animatetaro,AnimateenUS,Animate,AnimatingNumberszhTW,AnimatingNumberstaro,AnimatingNumbersenUS,AnimatingNumbers,AudiozhTW,Audiotaro,AudioenUS,Audio,AvatarzhTW,Avatartaro,AvatarenUS,Avatar,CircleProgresszhTW,CircleProgresstaro,CircleProgressenUS,CircleProgress,CollapsezhTW,Collapsetaro,CollapseenUS,Collapse,CountDownzhTW,CountDowntaro,CountDownenUS,CountDown,EllipsiszhTW,Ellipsistaro,EllipsisenUS,Ellipsis,ImagePreviewzhTW,ImagePreviewtaro,ImagePreviewenUS,ImagePreview,IndicatorzhTW,Indicatortaro,IndicatorenUS,Indicator,LottiezhTW,Lottietaro,LottieenUS,Lottie,PaginationzhTW,Paginationtaro,PaginationenUS,Pagination,SegmentedzhTW,Segmentedtaro,SegmentedenUS,Segmented,PricezhTW,Pricetaro,PriceenUS,Price,ProgresszhTW,Progresstaro,ProgressenUS,Progress,StepszhTW,Stepstaro,StepsenUS,Steps,SwiperzhTW,Swipertaro,SwiperenUS,Swiper,TablezhTW,Tabletaro,TableenUS,Table,TagzhTW,Tagtaro,TagenUS,Tag,TourzhTW,Tourtaro,TourenUS,Tour,VideozhTW,Videotaro,VideoenUS,Video,VirtualListzhTW,VirtualListtaro,VirtualListenUS,VirtualList,BarragezhTW,Barragetaro,BarrageenUS,Barrage,CardzhTW,Cardtaro,CardenUS,Card,TimeSelectzhTW,TimeSelecttaro,TimeSelectenUS,TimeSelect,TrendArrowzhTW,TrendArrowtaro,TrendArrowenUS,TrendArrow,WaterMarkzhTW,WaterMarktaro,WaterMarkenUS,WaterMark,AvatarCropperzhTW,AvatarCroppertaro,AvatarCropperenUS,AvatarCropper} diff --git a/src/sites/sites-react/doc/docs/react/contributing-react.en-US.md b/src/sites/sites-react/doc/docs/react/contributing-react.en-US.md new file mode 100644 index 0000000000..d96531048f --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/contributing-react.en-US.md @@ -0,0 +1,129 @@ +# Contribution Guidelines + +You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. + +  + +This guide will guide you on how to contribute to NutUI. Please take a few minutes to read this guide before you file an issue or pull request to ensure that the contribution is compliant and can help the community. + +## code of conduct + +In order to ensure a good network environment and create a comfortable development atmosphere, I hope all contributors can abide by this [Code of Conduct](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/), and please take the time to read the full text to clarify what is prohibited and what is allowed. + +## Branch management + +The main branch is currently maintained on github. If you want to fix a bug or add a feature, send a pull request to the main branch. + +  + +The official website will update [NutUI - React release cycle] (https://github.com/jdf2e/nutui-react/releases), at the same time every day developers review submitted code in the making. The release cycle is once a week, usually incorporating new code or features in advance and releasing formal packages; In case of emergency, beta versions can be released based on the specified branch. + +## Issue + +If submit Bug reports, please be sure to comply with the [` Bug report `] (https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) template. + +## Bugs + +We use [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) for bug tracking. We hope you can submit feedback through the issue assistant we provide, and provide all the development information as much as possible, because the more comprehensive the information, the faster the development response, and the bugs you find will be solved quickly. + +  + +Before you commit a bug, Please ensure that the search had existing [issue] (https://github.com/jdf2e/nutui-react/issues) and read our [FAQ] (https://nutui.jd.com/#/zh-CN/notice). + +## new features + +If you have a better idea of an existing component function or API, We also recommend that you use our provided [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) to submit a issue of adding new features. + +  + +If you want to help develop new features and components, Can scan [qr code] (HTTP: / / https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911 .png) join our community co-building group. + +## Participate in contribution + +If you are not familiar with the PR process of github, you can read the following two articles to learn: + +  + +[NutUI Contribution Guidelines](https://github.com/jdf2e/nutui-react/discussions/348) + +[github repository code synchronization](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request Specification + +1. Each PR addresses a single issue or adds a single feature + +2. When adding components or modifying existing components, synchronously change the corresponding unit tests and documents to ensure the stability of the code + +3. Please follow the [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) specification for the commit message + +4. The PR information should include which component has been modified, which problem has been solved, and associated the corresponding issue link on github + +## Pull Request Process + +1. Fork the main repository and synchronize the latest code of the main repository + +  + +2. Download the project locally, run npm install in the project root directory, and access it locally + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +cd src/sites/mobile-taro && npm install +cd - +npm run dev:taro:weapp +``` + +3. Create a new branch or develop on the corresponding branch + +``` +git checkout -b username/xxxx +git checkout {current branch} +``` + +4. If the development involves new components or new features of components, it is necessary to improve the Chinese and English documentation of the components, the unit testing of the components, and use [nutui-demo](https://github.com/jdf2e/nutui-demo) to Component testing is used. + +  + +5、Ensure that the compilation function is used normally + +``` +npm run test +// node v17 +// @nutui/nutui-react +npm run build +// @nutui/nutui-react-taro +npm run build:taro +``` + +6、After the development is completed, submit it to the corresponding branch of the warehouse. After the review is passed, the PR will be merged into the main warehouse, and then wait for NutUI-React to release a new version(Once a week)。 + +  + +### Knowledge sharing + +1. Project Use Cases + +     Share the [use case](https://nutui.jd.com/#/zh-CN/case) of NutUI, we will recommend it on the official website, prepare the name of the project, Project entry (QR code\link), logo, sample image, delivery platform (H5\mini program\APP, etc.), nutui version and other information should be submitted to **nutui@jd.com** by email. + +  + +2. Article video submission + +     Share your experiences (tutorials, articles, videos, etc.) by contributing to **nutui@jd.com**. After passing the review, collect it in the [official website resource](https://nutui.jd.com/#/zh-CN/resource), and pass your knowledge and ideas to NutUI friends. + +  + +3. Co-construction and sharing + +     Based on NutUI, design or develop new tools, such as adapting to uni-app, developing plug-ins to improve efficiency, etc. If you are interested, welcome to join our [Community Development Group](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png) to communicate and discuss. + +  + +### Credits + +Thanks to all the developers below who have contributed code to NutUI. + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> diff --git a/src/sites/sites-react/doc/docs/react/contributing-react.md b/src/sites/sites-react/doc/docs/react/contributing-react.md new file mode 100644 index 0000000000..56e2eb7b72 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/contributing-react.md @@ -0,0 +1,121 @@ +# 贡献指南 + +您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 + +  + +本篇指南会指导你如何为 NutUI 贡献一份自己的力量,请在您要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南,保证贡献是符合规范并且能帮助到社区。 + +## 行为准则 + +为保证良好的网络环境,营造舒适的开发氛围,希望所有的贡献者都能遵守这份[行为准则](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/),也请花时间阅读一遍全文明确哪些行为是禁止的,哪些行为是可行的。 + +## 分支管理 + +目前 github 上长期维护分支 main。如果您要修一个 bug 或新增功能,请发 pull request 到 main 分支。 + +  + +官网会同步更新 [NutUI-React 的发布周期](https://github.com/jdf2e/nutui-react/releases),同时每天都会有开发者 review github 中提交的代码。发版周期是每 1 周/次,通常会提前合并新的代码或功能,发布正式包;期间如遇紧急需求,可基于指定分支发布 beta 版本。 + +## Issue 报告指南 + +如果提交的是 Bug 报告,请务必遵守 [Bug report](https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) 模板。 + +## Bugs + +我们使用 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 来做 bug 追踪。希望大家通过我们提供的 issue 小助手来提交反馈,并尽可能提供一切开发信息,因为信息越全面,开发响应速度越快,您发现的 bug 会被快速解决。 + +  + +提交 bug 之前,请先确保搜索过已有的 [issue](https://github.com/jdf2e/nutui-react/issues) 和阅读了我们的[常见问题](https://nutui.jd.com/#/zh-CN/notice)。 + +## 功能新增 + +如果您对现有的组件功能或者 API 有更好的想法,我们同样推荐你使用我们提供的 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 提交一个添加新功能的 issue。 + +  + +如果你希望协助开发新功能新组件,可扫描[二维码](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)加入我们的社区共建群。 + +## 参与贡献 + +如果你对 github 的 PR 流程还不熟悉,可以阅读下面这 2 篇文章来学习: + +  + +[NutUI 贡献指南](https://github.com/jdf2e/nutui-react/discussions/348) + +[github 仓库代码同步](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request 规范 + +1. 每个 PR 只解决单个问题或者新增单个功能 + +2. 当新增组件或修改原有组件时,同步更改对应的单元测试和文档,保证代码的稳定 + +3. commit message 请遵循 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) 规范 + +4. PR 信息中最好包括修改了哪个组件,解决了哪个问题,并关联 github 上对应的 issue 链接 + +## Pull Request 流程 + +1、fork 主仓库,并同步主仓库的最新代码 + +2、将项目下载到本地,在项目根目录下运行 npm install,并在本地能正常访问 + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3、创建一个新的分支或在对应分支上进行开发 + +``` +git checkout -b username/xxxx +git checkout {现有分支名称} +``` + +4、如开发涉及新组件或组件的新特性,需要完善组件的中英文文档、组件的单元测试,同时要使用 [nutui-demo](https://github.com/jdf2e/nutui-demo) 对组件测试使用。 + +5、保证编译功能正常使用 + +``` +npm run test +// build 使用 node 17 版本 +// 构建 @nutui/nutui-react +npm run build +// 构建 @nutui/nutui-react-taro +npm run build:taro +``` + +6、开发完成后提交到仓库的对应分支上,PR 会在 Review 通过后被合并到主仓库,然后等待 NutUI-React 发布新版本(每周一次)。 + +### 知识分享 + +1. 项目使用案例 + +     分享 NutUI 的[使用案例](https://nutui.jd.com/next/#/case),我们会在官网进行推荐展示,准备项目的名称、项目入口(二维码\链接)、logo、示例图、投放平台(H5\小程序\APP等)、nutui 版本等信息,以邮箱的形式提交到 **nutui@jd.com**。 + +  + +2. 文章视频投稿 + +     分享你的经验(教程、文章、视频等),可以给 **nutui@jd.com** 投稿。在审核通过后,收藏到[官网资源](https://nutui.jd.com/next/#/resource)中,将你的知识与思想传递给 NutUI 的小伙伴们。 + +  + +3. 共建分享征集 + +     以 NutUI-React 为基础,设计或开发新的工具,开发提效的插件等。有兴趣欢迎加入我们的[社区开发群](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)交流讨论。 + +  + +### Credits + +感谢以下所有给 NutUI 贡献过代码的开发者。 +  +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> +<img src="https://opencollective.com/nutui-react/contributors.svg?width=920&button=false" alt="contributors"/> +</a> diff --git a/src/sites/sites-react/doc/docs/react/international-react.en-US.md b/src/sites/sites-react/doc/docs/react/international-react.en-US.md new file mode 100644 index 0000000000..30f695393b --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/international-react.en-US.md @@ -0,0 +1,42 @@ +# Internationalization + +NutUI-React support multiple languages. NutUI uses Chinese as the default language. Use as follows: + +## Usage + +### Switch languages + +:::demo + +```javascript +import { ConfigProvider } from '@nutui/nutui-react' +import en from '@nutui/nutui-react/dist/locales/en-US' + +ReactDOM.render( + <ConfigProvider locale={en}> + <App /> + </ConfigProvider>, + document.querySelector('#root') +) +``` + +::: + +## Current supported languages: + +| Language | Filename | Version | +| --- | --- | --- | +| English | en-US | `v1.0.0` | +| Chinese | zh-CN | `v1.0.0` | +| Uygur | zh-UG | `v1.3.15` | +| Traditional Chinese | zh-TW | `v1.0.0` | +| Indonesian | id-ID | `v1.3.2` | +| Thai | th-TH | PR | + +> View all language configs [Here](https://github.com/jdf2e/nutui-react/tree/main/src/locales). + +## Common Questions + +### Missing language pack? + +Welcome to commit PR If you need new language pack. Changes refer to [language pack](https://github.com/jdf2e/nutui-react/tree/main/src/locales). diff --git a/src/sites/sites-react/doc/docs/react/international-react.md b/src/sites/sites-react/doc/docs/react/international-react.md new file mode 100644 index 0000000000..be7ed2c381 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/international-react.md @@ -0,0 +1,43 @@ +# 国际化 + +NutUI-React 1.0 以上版本支持多语言。组件默认使用中文。 + +## 使用方法 + +### 多语言切换 + +:::demo + +```javascript +// 多语言版本 +import { ConfigProvider } from '@nutui/nutui-react' +import en from '@nutui/nutui-react/dist/locales/en-US' + +ReactDOM.render( + <ConfigProvider locale={en}> + <App /> + </ConfigProvider>, + document.querySelector('#root') +) +``` + +::: + +## 目前支持的语言: + +| 语言 | 文件名 | 版本 | +| --- | --- | --- | +| 英语 | en-US | `v1.0.0` | +| 简体中文 | zh-CN | `v1.0.0` | +| 维吾尔语 | zh-UG | `v1.3.15` | +| 繁體中文 | zh-TW | `v1.0.0` | +| 印度尼西亚语 | id-ID | `v1.3.2` | +| 泰语 | th-TH | 等待 PR | + +> 在 [这里](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 查看所有的语言包源文件。 + +## 常见问题 + +### 找不到所需的语言包? + +如果上方列表中没有你需要的语言,欢迎给我们提 Pull Request 来增加新的语言包。改动内容可以参考 [语言包](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 的 PR diff --git a/src/sites/sites-react/doc/docs/react/intro-react.en-US.md b/src/sites/sites-react/doc/docs/react/intro-react.en-US.md new file mode 100644 index 0000000000..ca1a178d13 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/intro-react.en-US.md @@ -0,0 +1,42 @@ +# NutUI-React + +The NutUI-React component library is suitable for H5 applications of the React technology stack. It can be used out of the box to help developers quickly develop user interfaces, improve development efficiency, and improve development experience. + +## Features + +- 🚀 80+ high-quality components covering mainstream mobile scenarios +- 📖 Based on JD APP 10.0 visual specification +- 🍭 Support on-demand reference +- 📖 Detailed documentation and examples +- 💪 Supports TypeScript +- 💪 Support for server-side rendering (Next.js) +- 🍭 Support custom themes +- 🌍 Internationalization support +- 🍭 Unit test coverage exceeds 80% to ensure stability +- 📖 Sketch design resources are available + +## Examples + +<img src="https://storage.360buyimg.com/imgtools/cc08cb2760-d70f19c0-0a95-11ee-808d-b1254110adba.png" width="200" alt="NutUI-React" /> + +## Compatibility Environment + +| Version | Supported Frameworks | Visual Specifications | Compatibility | +| --- | --- | --- | --- | +| @nutui/nutui-react <img src="https://img.shields.io/npm/v/@nutui/nutui-react" /> | React 17\18 | Jingdong [APP 10.0](#/resource) | Modern browsers start with Chrome >= 51、iOS >= 10.0 | + +For some older versions of browsers, corresponding polyfills are needed. It is recommended to use @babel/preset-env to address browser compatibility issues. The package provided by NutUI-React has not undergone extensive syntax transformation, so it is necessary to include the NutUI-React package in the compilation phase. + +For browsers that do not support CSS variables, it is recommended to use [postcss-var-replace](https://www.npmjs.com/package/postcss-var-replace) to resolve compatibility issues. + +## All Contributors + +Thanks to the following friends for their contributions to NutUI-React: + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> + +## LICENSE + +[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) diff --git a/src/sites/sites-react/doc/docs/react/intro-react.md b/src/sites/sites-react/doc/docs/react/intro-react.md new file mode 100644 index 0000000000..6f12688d62 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/intro-react.md @@ -0,0 +1,42 @@ +# NutUI-React + +NutUI-React 组件库,适用于 React 技术栈的 H5 应用,开箱即用,帮助研发快速开发用户界面,提升开发效率,改善开发体验。 + +## 特性 + +- 🚀 80+ 高质量组件,覆盖移动端主流场景 +- 📖 基于京东APP 10.0 视觉规范 +- 🍭 支持按需引用 +- 📖 详尽的文档和示例 +- 💪 支持 TypeScript +- 💪 支持服务端渲染(Next.js) +- 🍭 支持定制主题 +- 🌍 国际化支持 +- 🍭 单元测试覆盖率超过 80%,保障稳定性 +- 📖 提供 Sketch 设计资源 + +## 扫码体验 + +<img src="https://storage.360buyimg.com/imgtools/cc08cb2760-d70f19c0-0a95-11ee-808d-b1254110adba.png" width="200" alt="NutUI-React" /> + +## 兼容情况 + +| 版本 | 支持的框架 | 视觉规范 | 兼容 | +| --- | --- | --- | --- | +| @nutui/nutui-react <img src="https://img.shields.io/npm/v/@nutui/nutui-react" /> | React 17\18 | 京东 [APP 10.0](#/resource) 规范 | 现代浏览器以 Chrome >= 51、iOS >= 10.0 | + +对于一些低版本的浏览器,需要相应的 Ployfill,建议使用 @babel/preset-environment 来解决浏览器兼容问题。NutUI-React 提供的包并未进行过多的语法转换,所以需要将 NutUI-React 包含到编译阶段。 + +对于不支持 CSS 变量的浏览器,建议使用 [postcss-var-replace](https://www.npmjs.com/package/postcss-var-replace) 来解决兼容问题。 + +## 贡献者们 + +感谢以下小伙伴们为 NutUI-React 发展做出的贡献: + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors" /> +</a> + +## 开源协议 + +本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议 diff --git a/src/sites/sites-react/doc/docs/react/migrate-from-v1.en-US.md b/src/sites/sites-react/doc/docs/react/migrate-from-v1.en-US.md new file mode 100644 index 0000000000..ac547cc7d1 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/migrate-from-v1.en-US.md @@ -0,0 +1,73 @@ +# Upgrading from v1 to v2 + +This document will help you upgrade from NutUI React `1.x` to NutUI React `2.x` version. + +## Upgrade Steps + +1. H5 Install NutUI React version 2.x + +```shell +npm install @nutui/nutui-react +``` + +2. Taro installs NutUI React version 2.x + +```shell +npm install @nutui/nutui-react-taro +``` + +3. Handling incompatible updates + There are some incompatible updates from NutUI React 1.x to NutUI React 2.x. You need to read the incompatible updates carefully and deal with them in turn. + You can manually check your code against the list below to make changes, or we provide a codemod cli tool @nutui/nutui-react-codemod to help you upgrade to v2 quickly. Please commit your local code changes before running codemod cli. +4. Theme variables are renamed: + For example, primary-color is renamed to color-primary; note that if you are using a custom theme, especially if you are using the ConfigProvider component, you are not using `nutuiBrandColor`, remember to rename it to `nutuiColorPrimary`. + +## Compatibility Updates + +1. Component style handling + Added support for importing css files on demand, while retaining the ability to import scss files on demand. On-demand css import can be realized by babel-import-plugin plugin: + The H5 configuration is as follows: + +```json +// Webpack .babelrc or babel.config.js configuration +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react”. + ] +] +``` + +Taro is configured as follows: + +```json +// Configured in Webpack .babelrc or babel.config.js +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react-taro”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react-taro”. + ] +] +``` + +2. better type exporting and adding `JSDoc` annotations to types +3. Adjustment of component categorization + In terms of component classification, we have reviewed the 1.x classification based on the information structure from the interaction dimension, together with the interaction design side, and subclassed and reclassified them, with the goal of more closely matching the distribution of interaction scenarios and making it easy to find components. The main distribution is: + +- Basic components, remove the `Popup` component, and subdivide `Popup` into operation feedback-guidance tips section; +- Layout components, remain unchanged; +- Navigation components: move paging related components `Pagination` and `Indicator` to the display component (to consider the light operation of paging on mobile); move `Menu` menu to the subclass of data entry class-selector (to consider that `Menu` is mainly used as a filter); + +Translated with DeepL.com (free version) diff --git a/migrate-from-v1.md b/src/sites/sites-react/doc/docs/react/migrate-from-v1.md similarity index 100% rename from migrate-from-v1.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v1.md diff --git a/src/sites/sites-react/doc/docs/react/migrate-from-v2.en-US.md b/src/sites/sites-react/doc/docs/react/migrate-from-v2.en-US.md new file mode 100644 index 0000000000..ab97f5b9f9 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/migrate-from-v2.en-US.md @@ -0,0 +1,78 @@ +# Upgrading from v2 to v3 + +This document will help you upgrade from NutUI React `2.x` to NutUI React `3.x` version. + +## Upgrade Steps + +1. H5 Install NutUI React version 3.x + +```shell +npm install @nutui/nutui-react +``` + +2. Taro installs NutUI React version 3.x + +```shell +npm install @nutui/nutui-react-taro +``` + +3. Handling incompatible updates + +There are some incompatible updates from NutUI React 1.x to NutUI React 2.x. You need to read the incompatible updates carefully and deal with them in turn. + +You can manually check your code against the list below to make changes, or we provide a codemod cli tool @nutui/nutui-react-codemod to help you upgrade to v2 quickly. Please commit your local code changes before running codemod cli. + +4. Theme variables are renamed: + For example, primary-color is renamed to color-primary; note that if you are using a custom theme, especially if you are using the ConfigProvider component, you are not using `nutuiBrandColor`, remember to rename it to `nutuiColorPrimary`. + +## Compatibility Updates + +1. Component style handling + +Added support for importing css files on demand, while retaining the ability to import scss files on demand. On-demand css import can be realized by babel-import-plugin plugin: + +The H5 configuration is as follows: + +```js +// Webpack .babelrc or babel.config.js configuration +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react”. + ] +] +``` + +Taro is configured as follows: + +```json +// Configured in Webpack .babelrc or babel.config.js +plugins: [ + [ + “import”. + { + libraryName: “@nutui/nutui-react-taro”, libraryDirectory: “dist/esm”, { + libraryDirectory: “dist/esm”, { + style: 'css', + camel2DashComponentName: false, + }. + “nutui-react-taro”. + ] +] +``` + +2. better type exporting and adding `JSDoc` annotations to types +3. Adjustment of component categorization + In terms of component classification, we have reviewed the 1.x classification based on the information structure from the interaction dimension, together with the interaction design side, and subclassed and reclassified them, with the goal of more closely matching the distribution of interaction scenarios and making it easy to find components. The main distribution is: + +- Basic components, remove the `Popup` component, and subdivide `Popup` into operation feedback-guidance tips section; +- Layout components, remain unchanged; +- Navigation components: move `Pagination` and `Indicator` to the display component (considering the light operation of paging on mobile); move `Menu` menu to the data entry class-selector subclass (considering the light operation of paging on mobile); move `Menu` to the data entry class-selector subclass (considering the light operation of paging on mobile). + +Translated with DeepL.com (free version) diff --git a/migrate-from-v2.md b/src/sites/sites-react/doc/docs/react/migrate-from-v2.md similarity index 100% rename from migrate-from-v2.md rename to src/sites/sites-react/doc/docs/react/migrate-from-v2.md diff --git a/src/sites/sites-react/doc/docs/react/official-theme-react.en-US.md b/src/sites/sites-react/doc/docs/react/official-theme-react.en-US.md new file mode 100644 index 0000000000..a5abda8b81 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/official-theme-react.en-US.md @@ -0,0 +1,65 @@ +# Official theme + +## introduce + +NutUI provides multiple sets of official `UI` themes by default, while allowing new themes to be customized to a certain extent to meet the diverse visual needs of the business. + +#### + +| theme description | scss file name | +| --- | --- | +| Jingdong APP 10.0 theme (default) | `variables.scss` | +| Jingdong B Mall Theme <a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >Preview</a> | `variables-jdb.scss ` | + +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI theme customization"/> + +## How to use + +### Modify the configuration file of the local project vite or webpack + +Modify the **sass-loader** configuration in the vite or webpack configuration file. The following example + +#### vite configuration example + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack configuration example + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Default Jingdong APP theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // Note: In different versions of sass-loader, the name of this option is different. For details, please refer to the version documentation corresponding to sass-loader + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/react/official-theme-react.md b/src/sites/sites-react/doc/docs/react/official-theme-react.md new file mode 100644 index 0000000000..777b004251 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/official-theme-react.md @@ -0,0 +1,65 @@ +# 官方主题 + +## 介绍 + +NutUI 默认提供多套官方`UI`主题,同时允许在一定程度上定制新主题,以满足业务的多样化视觉需求。 + +#### + +| 主题说明 | scss 文件名称 | +| --- | --- | +| 京东 APP 主题(默认) | `variables.scss` | +| 京东B商城主题<a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >预览</a> | `variables-jdb.scss` | + +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI 主题定制"/> + +## 使用方式 + +### 修改本地项目 vite 或者 webpack 的配置文件 + +修改 vite 或者 webpack 配置文件中 **sass-loader** 的配置。如下示例 + +#### vite 配置示例 + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack 配置示例 + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/react/start-react.en-US.md b/src/sites/sites-react/doc/docs/react/start-react.en-US.md new file mode 100644 index 0000000000..753a4772ac --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/start-react.en-US.md @@ -0,0 +1,190 @@ +# Quick Start + +## Intro + +Through this article, you can master the installation and use of NutUI React. The operation is simple and easy to use, and the development is simple and fast. + +## Install + +#### 1. Install via NPM + +```sh +#pnpm +pnpm add @nutui/nutui-react +#yarn +yarn add @nutui/nutui-react +# npm +npm install @nutui/nutui-react +``` + +#### 2. Install and use via CDN + +> NutUI is available on public CDNs like **jsdelivr** and **unpkg**. +> It is not recommended to use the component library CDN in the production environment. If this method is required, it is recommended to download the specific version of the CDN file to the local project directory for use. + +:::demo + +```html +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <!-- import style --> + <link + rel="stylesheet" + href="https://cdn.jsdelivr.net/npm/@nutui/nutui-react/dist/style.css" + /> + <!-- import React --> + <script + crossorigin + src="https://unpkg.com/react@17/umd/react.production.min.js" + ></script> + <script + crossorigin + src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" + ></script> + <!-- Import NutUI component library --> + <script src="https://cdn.jsdelivr.net/npm/@nutui/nutui-react/dist/nutui.react.umd.js"></script> + </head> + <body> + <div id="app"></div> + <script> + // Render a button component under the #app tag + ReactDOM.render( + React.createElement( + nutui.react.Button, + null, + React.createElement('div', null, 'Primary button') + ), + document.querySelector('#app') + ) + </script> + </body> +</html> +``` + +::: + +## Component usage + +> NutUI React supports Tree Shaking by default, and supports on-demand import of component JS files without any plug-in configuration. However, css style files cannot be implemented in this way, so from the perspective of style, it can be divided into the following two usage methods: + +#### Method 1, Conventional usage: Full import of styles + +:::demo + +```js +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import '@nutui/nutui-react/dist/style.css' +import { Button } from '@nutui/nutui-react' + +ReactDOM.render( + <div className="App"> + <Button></Button> + </div>, + document.getElementById('app') +) +``` + +::: + +#### Method 2, import styles on demand + +<details> +<summary>vite</summary> + +Install the `vite-plugin-imp` plugin and configure it. + +```sh +#pnpm +pnpm add vite-plugin-imp -D +#yarn +yarn add vite-plugin-imp -D +# npm +npm install vite-plugin-imp -D +``` + +:::demo + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import vitePluginImp from 'vite-plugin-imp' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + vitePluginImp({ + libList: [ + { + libName: '@nutui/nutui-react', + style: (name) => { + return `@nutui/nutui-react/dist/esm/${name}/style/css` + }, + replaceOldImport: false, + camel2DashComponentName: false, + }, + ], + }), + ], +}) +``` + +::: + +</details><br/> + +<details> +<summary>webpack</summary> + +Install the `babel-plugin-import` plugin and configure it. + +```sh +#pnpm +pnpm add babel-plugin-import -D +#yarn +yarn add babel-plugin-import -D +# npm +npm install babel-plugin-import -D +``` + +Babel configuration: + +:::demo + +```js +{ + //... + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react', + ], + ] +} +``` + +::: + +</details><br/> + +## Precautions for use + +- NutUI-React is built on [react@^18.0.0](https://www.npmjs.com/package/react) +- The component CSS unit uses **px**, if you need **rem** unit in your project, you can convert it with some tools, such as [px2rem-loader](https://www.npmjs.com/package/px2rem-loader) of [webpack](https://www.webpackjs.com/), [postcss] of [postcss](https://github.com/postcss/postcss) -plugin-px2rem](https://www.npmjs.com/package/postcss-plugin-px2rem) plugin etc. + +## Examples + +Source code for all the examples can be found in the [packages/templates](https://github.com/jdf2e/nutui-react/tree/next/packages/nutui-templates) directory. + +<content-examples/> diff --git a/src/sites/sites-react/doc/docs/react/start-react.md b/src/sites/sites-react/doc/docs/react/start-react.md new file mode 100644 index 0000000000..deb0328ec8 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/start-react.md @@ -0,0 +1,190 @@ +# 快速上手 + +## 介绍 + +通过本文你可以掌握 NutUI React 的安装和使用方法,操作简单易上手,开发简洁快速。 + +## 安装 + +#### 1. 通过 NPM 安装 + +```sh +# pnpm +pnpm add @nutui/nutui-react +# yarn +yarn add @nutui/nutui-react +# npm +npm install @nutui/nutui-react +``` + +#### 2. 通过 CDN 安装及使用 + +> 可以在 **jsdelivr** 和 **unpkg** 等公共 CDN 上获取到 NutUI。 +> 不推荐在生产环境使用组件库 CDN,如果需要这种使用方式,建议将特定版本的 CDN 文件下载至本地项目目录中使用。 + +:::demo + +```html +<!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <!-- 引入样式 --> + <link + rel="stylesheet" + href="https://cdn.jsdelivr.net/npm/@nutui/nutui-react/dist/style.css" + /> + <!-- 引入React --> + <script + crossorigin + src="https://unpkg.com/react@17/umd/react.production.min.js" + ></script> + <script + crossorigin + src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js" + ></script> + <!-- 引入NutUI组件库 --> + <script src="https://cdn.jsdelivr.net/npm/@nutui/nutui-react/dist/nutui.react.umd.js"></script> + </head> + <body> + <div id="app"></div> + <script> + // 在 #app 标签下渲染一个按钮组件 + ReactDOM.render( + React.createElement( + nutui.react.Button, + null, + React.createElement('div', null, '主要按钮') + ), + document.querySelector('#app') + ) + </script> + </body> +</html> +``` + +::: + +## 组件使用 + +> NutUI React 默认支持 Tree Shaking,在无任何插件配置的情况下支持组件 JS 文件的按需引入。但 css 样式文件无法通过这种方式实现,因此从样式的角度可以分为以下两种使用方法: + +#### 方法一、常规用法:全量引入样式 + +:::demo + +```js +import * as React from 'react' +import * as ReactDOM from 'react-dom' +import '@nutui/nutui-react/dist/style.css' +import { Button } from '@nutui/nutui-react' + +ReactDOM.render( + <div className="App"> + <Button></Button> + </div>, + document.getElementById('app') +) +``` + +::: + +#### 方法二、按需引入样式 + +<details> +<summary>vite</summary> + +安装 `vite-plugin-imp` 插件并配置。 + +```sh +# pnpm +pnpm add vite-plugin-imp -D +# yarn +yarn add vite-plugin-imp -D +# npm +npm install vite-plugin-imp -D +``` + +:::demo + +```js +// vite.config.js +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import vitePluginImp from 'vite-plugin-imp' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + vitePluginImp({ + libList: [ + { + libName: '@nutui/nutui-react', + style: (name) => { + return `@nutui/nutui-react/dist/esm/${name}/style/css` + }, + replaceOldImport: false, + camel2DashComponentName: false, + }, + ], + }), + ], +}) +``` + +::: + +</details><br /> + +<details> +<summary>webpack</summary> + +安装 `babel-plugin-import` 插件并配置。 + +```sh +# pnpm +pnpm add babel-plugin-import -D +# yarn +yarn add babel-plugin-import -D +# npm +npm install babel-plugin-import -D +``` + +babel 配置: + +:::demo + +```js +{ + // ... + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react', + ], + ] +} +``` + +::: + +</details><br/> + +## 使用注意事项 + +- NutUI-React 基于 [react@^18.0.0](https://www.npmjs.com/package/react) 构建 +- 组件 CSS 单位使用的是 **px**,如果你的项目中需要 **rem** 单位,可借助一些工具进行转换,比如 [webpack](https://www.webpackjs.com/) 的 [px2rem-loader](https://www.npmjs.com/package/px2rem-loader)、[postcss](https://github.com/postcss/postcss) 的 [postcss-plugin-px2rem](https://www.npmjs.com/package/postcss-plugin-px2rem) 插件等 + +## 示例 + +示例代码可以再 [packages/templates](https://github.com/jdf2e/nutui-react/tree/next/packages/nutui-templates) 下查看 + +<content-examples/> diff --git a/src/sites/sites-react/doc/docs/react/theme-react.en-US.md b/src/sites/sites-react/doc/docs/react/theme-react.en-US.md new file mode 100644 index 0000000000..062a297deb --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/theme-react.en-US.md @@ -0,0 +1,68 @@ +# Customize Theme + +## Introduce + +NutUI-React supports flexible style customization to meet multiple visual business and brand needs, including but not limited to support for global master tone and component-specific visual customization. +<br /> +<br /> +In NutUI-React version 2.0, the Sass theme customization function of 1.x can still be used. We added CSS variables to the original theme customization function, so that the new theme customization function can be used without introducing additional SCSS style files. + +## Method 1: Use CSS Variables to configure topics + +`NutUI - React` can [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) to organize the pattern, By overwriting these 'CSS' variables, you can achieve custom theme, dynamic switching theme and other functions. +<br /> +<br /> +You can play with the [ConfigProvider](#/zh-CN/component/configprovider) component. +<br /> +<br /> +We recommend replacing [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) for the theme of personalized configuration. + +## Method 2: Use Sass variable for topic configuration + +#### Step 1: Create a custom variable SCSS file + +Create a new 'SCSS' file 'custom_theme.scss' in your local project. + +```scss +// Dominant tone +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +#### Step 2: Modify the configuration file of the local project webpack or vite + +Modify the ** ass-loader** configuration in the 'vite' or 'webpack' configuration file. The following example + +#### vite + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";@import "./your/custom_theme.scss";`, + }, + }, + }, +}) +``` + +#### webpack + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Note: The option name is different for different versions of ass-loader. For details, see the corresponding version document of ass-loader + data: `@import "./assets/custom_theme.scss";@import "@nutui/nutui/dist/styles/variables.scss";`, + } + } + ] +} +``` diff --git a/src/sites/sites-react/doc/docs/react/theme-react.md b/src/sites/sites-react/doc/docs/react/theme-react.md new file mode 100644 index 0000000000..cc180538e2 --- /dev/null +++ b/src/sites/sites-react/doc/docs/react/theme-react.md @@ -0,0 +1,65 @@ +# 主题定制 + +## 介绍 + +NutUI-React 支持灵活的样式定制,满足多种视觉业务和品牌需求,包括但不限于全局主色调和特定组件视觉定制的支持。 +<br /> +<br /> +在 NutUI-React 的 2.0 版本中,依然可以使用 1.x 的 Sass 定制主题功能,我们在原有的主题定制功能上新增了 CSS 变量, 无需引入额外的 SCSS 样式文件,就可以使用到新的主题定制功能。 + +## 方式一 使用 CSS Variables 进行主题配置 + +`NutUI-React` 组件可以通过 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 来组织样式,通过覆盖这些 `CSS` 变量,可以实现定制主题、动态切换主题等功能。 +<br /> +<br /> +您可在 [ConfigProvider 组件](#/zh-CN/component/configprovider) 进行体验。我们更推荐使用替换 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 的方式来进行个性化的主题配置。 + +## 方式二 使用 Sass 变量 进行主题配置 + +### 第一步 新建自定义变量 SCSS 文件 + +在本地项目中新建一个 `SCSS` 文件 `custom_theme.scss` 进行自定义。 + +```scss +// 主色调 +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +### 第二步 修改本地项目 Webpack 或者 Vite 的配置文件 + +修改 `vite` 或者 `webpack` 配置文件中 **sass-loader** 的配置。如下示例: + +#### Vite 方式 + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";@import "./your/custom_theme.scss";`, + }, + }, + }, +}) +``` + +#### Webpack 方式 + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "./assets/custom_theme.scss";@import "@nutui/nutui/dist/styles/variables.scss";`, + } + } + ] +} +``` diff --git a/src/sites/sites-react/doc/docs/taro/contributing-react.en-US.md b/src/sites/sites-react/doc/docs/taro/contributing-react.en-US.md new file mode 100644 index 0000000000..2d201daa60 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/contributing-react.en-US.md @@ -0,0 +1,127 @@ +# Contribution Guidelines + +You can contribute to the NutUI community according to the co-construction direction in 《[NutUI invites you to build, Hello Contributor](https://jelly.jd.com/article/6320528b92d94a0068685525)》. + +  + +This guide will guide you on how to contribute to NutUI. Please take a few minutes to read this guide before you file an issue or pull request to ensure that the contribution is compliant and can help the community. + +## code of conduct + +In order to ensure a good network environment and create a comfortable development atmosphere, I hope all contributors can abide by this [Code of Conduct](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/), and please take the time to read the full text to clarify what is prohibited and what is allowed. + +## Branch management + +The main branch is currently maintained on github. If you want to fix a bug or add a feature, send a pull request to the main branch. + +  + +The official website will update [NutUI - React release cycle] (https://github.com/jdf2e/nutui-react/releases), at the same time every day developers review submitted code in the making. The release cycle is once a week, usually incorporating new code or features in advance and releasing formal packages; In case of emergency, beta versions can be released based on the specified branch. + +## Issue + +If submit Bug reports, please be sure to comply with the [` Bug report `] (https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) template. + +## Bugs + +We use [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) for bug tracking. We hope you can submit feedback through the issue assistant we provide, and provide all the development information as much as possible, because the more comprehensive the information, the faster the development response, and the bugs you find will be solved quickly. + +  + +Before you commit a bug, Please ensure that the search had existing [issue] (https://github.com/jdf2e/nutui-react/issues) and read our [FAQ] (https://nutui.jd.com/#/zh-CN/notice). + +## new features + +If you have a better idea of an existing component function or API, We also recommend that you use our provided [issue - helper] (https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) to submit a issue of adding new features. + +  + +If you want to help develop new features and components, Can scan [qr code] (HTTP: / / https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911 .png) join our community co-building group. + +## Participate in contribution + +If you are not familiar with the PR process of github, you can read the following two articles to learn: + +  + +[NutUI Contribution Guidelines](https://github.com/jdf2e/nutui-react/discussions/348) + +[github repository code synchronization](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request Specification + +1. Each PR addresses a single issue or adds a single feature + +2. When adding components or modifying existing components, synchronously change the corresponding unit tests and documents to ensure the stability of the code + +3. Please follow the [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) specification for the commit message + +4. The PR information should include which component has been modified, which problem has been solved, and associated the corresponding issue link on github + +## Pull Request Process + +1. Fork the main repository and synchronize the latest code of the main repository + +  + +2. Download the project locally, run npm install in the project root directory, and access it locally + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3. Create a new branch or develop on the corresponding branch + +``` +git checkout -b username/xxxx +git checkout {current branch} +``` + +4. If the development involves new components or new features of components, it is necessary to improve the Chinese and English documentation of the components, the unit testing of the components, and use [nutui-demo](https://github.com/jdf2e/nutui-demo) to Component testing is used. + +  + +5、Ensure that the compilation function is used normally + +``` +npm run test +// node v17 +// @nutui/nutui-react +npm run build +// @nutui/nutui-react-taro +npm run build:taro +``` + +6、After the development is completed, submit it to the corresponding branch of the warehouse. After the review is passed, the PR will be merged into the main warehouse, and then wait for NutUI-React to release a new version(Once a week)。 + +  + +### Knowledge sharing + +1. Project Use Cases + +     Share the [use case](https://nutui.jd.com/#/zh-CN/case) of NutUI, we will recommend it on the official website, prepare the name of the project, Project entry (QR code\link), logo, sample image, delivery platform (H5\mini program\APP, etc.), nutui version and other information should be submitted to **nutui@jd.com** by email. + +  + +2. Article video submission + +     Share your experiences (tutorials, articles, videos, etc.) by contributing to **nutui@jd.com**. After passing the review, collect it in the [official website resource](https://nutui.jd.com/#/zh-CN/resource), and pass your knowledge and ideas to NutUI friends. + +  + +3. Co-construction and sharing + +     Based on NutUI, design or develop new tools, such as adapting to uni-app, developing plug-ins to improve efficiency, etc. If you are interested, welcome to join our [Community Development Group](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png) to communicate and discuss. + +  + +### Credits + +Thanks to all the developers below who have contributed code to NutUI. + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> diff --git a/src/sites/sites-react/doc/docs/taro/contributing-react.md b/src/sites/sites-react/doc/docs/taro/contributing-react.md new file mode 100644 index 0000000000..cc161ad9f8 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/contributing-react.md @@ -0,0 +1,121 @@ +# 贡献指南 + +您可根据《[NutUI 邀您共建,Contributor 您好](https://jelly.jd.com/article/6320528b92d94a0068685525)》中的共建方向为 NutUI 社区做出贡献。 + +  + +本篇指南会指导你如何为 NutUI 贡献一份自己的力量,请在您要提 issue 或者 pull request 之前花几分钟来阅读一遍这篇指南,保证贡献是符合规范并且能帮助到社区。 + +## 行为准则 + +为保证良好的网络环境,营造舒适的开发氛围,希望所有的贡献者都能遵守这份[行为准则](https://www.contributor-covenant.org/zh-cn/version/2/1/code_of_conduct/),也请花时间阅读一遍全文明确哪些行为是禁止的,哪些行为是可行的。 + +## 分支管理 + +目前 github 上长期维护分支 main。如果您要修一个 bug 或新增功能,请发 pull request 到 main 分支。 + +  + +官网会同步更新 [NutUI-React 的发布周期](https://github.com/jdf2e/nutui-react/releases),同时每天都会有开发者 review github 中提交的代码。发版周期是每 1 周/次,通常会提前合并新的代码或功能,发布正式包;期间如遇紧急需求,可基于指定分支发布 beta 版本。 + +## Issue 报告指南 + +如果提交的是 Bug 报告,请务必遵守 [Bug report](https://github.com/jdf2e/nutui/blob/next/.github/ISSUE_TEMPLATE/bug_report.md) 模板。 + +## Bugs + +我们使用 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 来做 bug 追踪。希望大家通过我们提供的 issue 小助手来提交反馈,并尽可能提供一切开发信息,因为信息越全面,开发响应速度越快,您发现的 bug 会被快速解决。 + +  + +提交 bug 之前,请先确保搜索过已有的 [issue](https://github.com/jdf2e/nutui-react/issues) 和阅读了我们的[常见问题](https://nutui.jd.com/#/zh-CN/notice)。 + +## 功能新增 + +如果您对现有的组件功能或者 API 有更好的想法,我们同样推荐你使用我们提供的 [issue-helper](https://nutui.jd.com/nutui-issue-helper/?repo=jdf2e/nutui-react) 提交一个添加新功能的 issue。 + +  + +如果你希望协助开发新功能新组件,可扫描[二维码](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)加入我们的社区共建群。 + +## 参与贡献 + +如果你对 github 的 PR 流程还不熟悉,可以阅读下面这 2 篇文章来学习: + +  + +[NutUI 贡献指南](https://github.com/jdf2e/nutui-react/discussions/348) + +[github 仓库代码同步](https://github.com/jdf2e/nutui/discussions/687) + +## Pull Request 规范 + +1. 每个 PR 只解决单个问题或者新增单个功能 + +2. 当新增组件或修改原有组件时,同步更改对应的单元测试和文档,保证代码的稳定 + +3. commit message 请遵循 [Angular Style Commit Message Conventions](https://gist.github.com/stephenparish/9941e89d80e2bc58a153) 规范 + +4. PR 信息中最好包括修改了哪个组件,解决了哪个问题,并关联 github 上对应的 issue 链接 + +## Pull Request 流程 + +1、fork 主仓库,并同步主仓库的最新代码 + +2、将项目下载到本地,在项目根目录下运行 npm install,并在本地能正常访问 + +``` +git clone https://github.com/{github username}/nutui-react.git +npm install +npm run dev +``` + +3、创建一个新的分支或在对应分支上进行开发 + +``` +git checkout -b username/xxxx +git checkout {现有分支名称} +``` + +4、如开发涉及新组件或组件的新特性,需要完善组件的中英文文档、组件的单元测试,同时要使用 [nutui-demo](https://github.com/jdf2e/nutui-demo) 对组件测试使用。 + +5、保证编译功能正常使用 + +``` +npm run test +// build 使用 node 17 版本 +// 构建 @nutui/nutui-react +npm run build +// 构建 @nutui/nutui-react-taro +npm run build:taro +``` + +6、开发完成后提交到仓库的对应分支上,PR 会在 Review 通过后被合并到主仓库,然后等待 NutUI-React 发布新版本(每周一次)。 + +### 知识分享 + +1. 项目使用案例 + +     分享 NutUI 的[使用案例](https://nutui.jd.com/next/#/case),我们会在官网进行推荐展示,准备项目的名称、项目入口(二维码\链接)、logo、示例图、投放平台(H5\小程序\APP等)、nutui 版本等信息,以邮箱的形式提交到 **nutui@jd.com**。 + +  + +2. 文章视频投稿 + +     分享你的经验(教程、文章、视频等),可以给 **nutui@jd.com** 投稿。在审核通过后,收藏到[官网资源](https://nutui.jd.com/next/#/resource)中,将你的知识与思想传递给 NutUI 的小伙伴们。 + +  + +3. 共建分享征集 + +     以 NutUI-React 为基础,设计或开发新的工具,开发提效的插件等。有兴趣欢迎加入我们的[社区开发群](https://img13.360buyimg.com/imagetools/s300x300_jfs/t1/187308/9/29678/349561/634fa983E93012590/a641089fdfed5911.png)交流讨论。 + +  + +### Credits + +感谢以下所有给 NutUI 贡献过代码的开发者。 +  +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> +<img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> diff --git a/src/sites/sites-react/doc/docs/taro/international-react.en-US.md b/src/sites/sites-react/doc/docs/taro/international-react.en-US.md new file mode 100644 index 0000000000..a0bbe071cb --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/international-react.en-US.md @@ -0,0 +1,42 @@ +# Internationalization + +NutUI-React support multiple languages. NutUI uses Chinese as the default language. Use as follows: + +## Usage + +### Switch languages + +:::demo + +```javascript +import { ConfigProvider } from '@nutui/nutui-react-taro' +import en from '@nutui/nutui-react-taro/dist/locales/en-US' + +ReactDOM.render( + <ConfigProvider locale={en}> + <App /> + </ConfigProvider>, + document.querySelector('#root') +) +``` + +::: + +## Current supported languages: + +| Language | Filename | Version | +| --- | --- | --- | +| English | en-US | `v1.0.0` | +| Chinese | zh-CN | `v1.0.0` | +| Uygur | zh-UG | `v1.3.15` | +| Traditional Chinese | zh-TW | `v1.0.0` | +| Indonesian | id-ID | `v1.3.2` | +| Thai | th-TH | PR | + +> View all language configs [Here](https://github.com/jdf2e/nutui-react/tree/main/src/locales). + +## Common Questions + +### Missing language pack? + +Welcome to commit PR If you need new language pack. Changes refer to [language pack](https://github.com/jdf2e/nutui-react/tree/main/src/locales). diff --git a/src/sites/sites-react/doc/docs/taro/international-react.md b/src/sites/sites-react/doc/docs/taro/international-react.md new file mode 100644 index 0000000000..19f3c6b717 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/international-react.md @@ -0,0 +1,43 @@ +# 国际化 + +NutUI-React 1.0 以上版本支持多语言。组件默认使用中文。 + +## 使用方法 + +### 多语言切换 + +:::demo + +```javascript +// 多语言版本 +import { ConfigProvider } from '@nutui/nutui-react-taro' +import en from '@nutui/nutui-react-taro/dist/locales/en-US' + +ReactDOM.render( + <ConfigProvider locale={en}> + <App /> + </ConfigProvider>, + document.querySelector('#root') +) +``` + +::: + +## 目前支持的语言: + +| 语言 | 文件名 | 版本 | +| --- | --- | --- | +| 英语 | en-US | `v1.0.0` | +| 简体中文 | zh-CN | `v1.0.0` | +| 维吾尔语 | zh-UG | `v1.3.15` | +| 繁體中文 | zh-TW | `v1.0.0` | +| 印度尼西亚语 | id-ID | `v1.3.2` | +| 泰语 | th-TH | 等待 PR | + +> 在 [这里](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 查看所有的语言包源文件。 + +## 常见问题 + +### 找不到所需的语言包? + +如果上方列表中没有你需要的语言,欢迎给我们提 Pull Request 来增加新的语言包。改动内容可以参考 [语言包](https://github.com/jdf2e/nutui-react/tree/main/src/locales) 的 PR diff --git a/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md b/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md new file mode 100644 index 0000000000..68f59f4280 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/intro-react.en-US.md @@ -0,0 +1,39 @@ +# NutUI-React + +NutUI-React component library, based on Taro, uses React technology stack to develop applet applications, out of the box, helps R&D to quickly develop user interface, improve development efficiency, and improve development experience. + +## Features + +- 🚀 70+ high-quality components covering mainstream mobile scenarios +- 💪 Supports a set of code to develop multi-terminal Mini Programs +H5 at the same time +- 📖 Based on JD APP 10.0 visual specification +- 🍭 Support on-demand reference +- 📖 Detailed documentation and examples +- 💪 Supports TypeScript +- 💪 Support for server-side rendering (test phase) +- 🍭 Support custom themes +- 🌍 Internationalization support +- 🍭 Unit test coverage exceeds 80% to ensure stability +- 📖 Sketch design resources are available + +## Examples + +<img src="https://img13.360buyimg.com/imagetools/jfs/t1/102323/22/33163/27773/632a7855E75c9fa02/8c351778f47d24f5.jpg" width="200" alt="NutUI-React" /> + +## Version + +| Version | Supported Frameworks | Visual Specifications | Compatibility | +| --- | --- | --- | --- | +| @nutui/nutui-react-taro <img src="https://img.shields.io/npm/v/@nutui/nutui-react" /> | React 17\18 | Jingdong [APP 10.0](/next#/resource) | Modern browsers start with Chrome >= 51、iOS >= 10.0、Android >= 6 | + +## All Contributors + +Thanks to the following friends for their contributions to NutUI-React: + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> + +## LICENSE + +[MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) diff --git a/src/sites/sites-react/doc/docs/taro/intro-react.md b/src/sites/sites-react/doc/docs/taro/intro-react.md new file mode 100644 index 0000000000..a1caceb7b9 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/intro-react.md @@ -0,0 +1,39 @@ +# NutUI-React + +NutUI-React 组件库,基于 Taro,使用 React 技术栈开发小程序应用,开箱即用,帮助研发快速开发用户界面,提升开发效率,改善开发体验。 + +## 特性 + +- 🚀 80+ 高质量组件,覆盖移动端主流场景 +- 💪 支持一套代码同时开发多端小程序+H5 +- 📖 基于京东APP 10.0 视觉规范 +- 🍭 支持按需引用 +- 📖 详尽的文档和示例 +- 💪 支持 TypeScript +- 💪 支持服务端渲染(测试阶段) +- 🍭 支持定制主题 +- 🌍 国际化支持 +- 🍭 单元测试覆盖率超过 80%,保障稳定性 +- 📖 提供 Sketch 设计资源 + +## 扫码体验 + +<img src="https://img13.360buyimg.com/imagetools/jfs/t1/102323/22/33163/27773/632a7855E75c9fa02/8c351778f47d24f5.jpg" width="200" alt="NutUI-React" /> + +## 版本说明 + +| 版本 | 支持的框架 | 视觉规范 | 兼容 | +| --- | --- | --- | --- | +| @nutui/nutui-react <img src="https://img.shields.io/npm/v/@nutui/nutui-react" /> | React 17\18 | 京东 [APP 10.0](/next#/resource) 规范 | 现代浏览器以 Chrome >= 51、iOS >= 10.0、Android >= 6 | + +## 贡献者们 + +感谢以下小伙伴们为 NutUI-React 发展做出的贡献: + +<a href="https://github.com/jdf2e/nutui-react/graphs/contributors"> + <img src="https://opencollective.com/nutui-react/contributors.svg?width=890&button=false" alt="contributors"/> +</a> + +## 开源协议 + +本项目基于 [MIT](https://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89) 协议 diff --git a/src/sites/sites-react/doc/docs/taro/migrate-from-v1.md b/src/sites/sites-react/doc/docs/taro/migrate-from-v1.md new file mode 100644 index 0000000000..97ec2f56e0 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/migrate-from-v1.md @@ -0,0 +1,888 @@ +# 从 v1 升级到 v2 + +本文档将帮助您从 NutUI React `1.x` 升级到 NutUI React `2.x` 版本。 + +## 升级步骤 + +1. H5 安装 NutUI React 2.x 版本 + +```shell +npm install @nutui/nutui-react +``` + +2. Taro 安装 NutUI React 2.x 版本 + +```shell +npm install @nutui/nutui-react-taro +``` + +3. 处理不兼容更新 + +从 NutUI React 1.x 到 NutUI React 2.x 存在一些不兼容更新,需要仔细阅读不兼容更新内容,并依次处理。 + +你可以手动对照下面的列表逐条检查代码进行修改,另外,我们也提供了一个 codemod cli 工具 @nutui/nutui-react-codemod 以帮助你快速升级到 v2 版本。在运行 codemod cli 前,请先提交你的本地代码修改。 + +4. 主题变量更名: + 如,primary-color 更名为 color-primary;注意在使用自定义主题,特别是使用 ConfigProvider 组件的情况下,有没有使用 `nutuiBrandColor`,这时记得更名为 `nutuiColorPrimary` + +## 兼容更新 + +1. 组件样式处理 + +新增了按需引入 css 文件的支持,同时保留了按需引入 scss 文件的能力。可通过 babel-import-plugin 插件实现按需引入 css: + +H5配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react", + ] +] +``` + +Taro配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react-taro", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react-taro", + ] +] +``` + +2. 更完善的类型导出以及对类型增加 `JSDoc` 注释 +3. 组件分类的调整 + 在组件分类上,我们从交互维度上,和交互设计侧共同对 1.x 分类进行了基于信息结构的评审,并进行了子类梳理,完成重新分类,目标是更贴合交互场景的分布,易于查找组件。主要分布在: + +- 基础组件,将 `Popup` 组件移除,将 `Popup` 细分到操作反馈-引导提示部分; +- 布局组件,保持不变; +- 导航组件:将分页相关组件 `Pagination`、`Indicator` 移动到展示组件(考虑移动端的分页轻操作);`Menu` 菜单移动到数据录入类-选择器子类(考虑 `Menu` 主要是作为筛选器);将 `BackTop` 移至导航组件,作为锚点组件的一部分; +- 展示组件:将 `Badge`、`NoticeBar`、`Popover` 移至操作反馈-引导提示类,`Empty`、`Skeleton` 移至操作反馈-加载状态结果反馈中;`WaterMark`、`TrendArrow` 作为特性增强类组件放在特色组件中,待由该类组件的使用场景和范围确认是否变更分类;同时新增 `Audio`,将其同 `Video`、`ImagePreview`、`Swiper` 一同归为展示-多媒体类; +- 操作反馈类,新增 `Skeleton`、`Empty`(加载结果反馈类),`Popover`、`Notify`、`NoticeBar`、`Popup` (引导提示类)6个组件;同时去除 `BackTop`(导航组件-锚点类)、`Switch`(数据录入-选择器)、`Audio``(展示-多媒体);在此基础上,未来会考虑增加 ResultPage`,整合错误状态、空状态等反馈状态,该组件在考虑中;同时考虑增加加载状态 `Loading` 组件。版本待定。 +- 数据录入类,主要分为两大类-输入及选择器。在输入中增加 `Signature`,该组件在 `Form` 表单中的应用范围日渐广泛,从特色组件中移入到数据录入部分;选择器中增加 `Switch`、`Menu`,及 `Address`。其中 `Signature` 和 `Address` 都是考虑其常用性,从特色中迁移到数据录入部分。 +- 特色组件,保留 `Barrage`、`Card`、`TimeSelect`,新增 `WaterMark`、`TrendArrow`。 + +## 不兼容更新 + +## NutUI Icons 调整 + +1.x 版本我们在实际开发过程中会发现 `Button` 只是引用了一个很小的 Loading Icon,但是全量引用了 IconFont 字体 ,会导致开发者的项目文件增大。我们在 NutUI React 2.x 中为解决此问题,重新定义了 Icon 组件,将所有的 Icons 抽离成单独的图标组件库 @nutui/icons-react(Taro 适配下为 @nutui/icons-react-taro) ,使其可以进行按需加载使用。 因此一些组件之前关于 Icon 的相关 Props 将被移除,需要使用插槽或者传递一个 Component 组件的 Props 进行使用。 受影响的组件如下: + +- Avatar +- Button +- ImagePreview +- Collapse +- InfiniteLoading +- Popup +- Steps +- Switch +- Toast +- Progress +- NoticeBar +- SearchBar +- Navbar +- Menu +- Tabbar +- Checkbox +- InputNumber +- Input +- Radio +- Rate +- Uploader +- Popover +- Grid +- TrendArrow + +如果你的项目中使用了这些组件,请仔细阅读文档并进行升级。 + +## 组件名称调整 + +- GridItem -> Grid.Item +- TabbarItem -> Tabbar.Item +- CollapseItem -> Collapse.Item +- SwiperItem -> Swiper.Item +- CellGroup -> Cell.Group +- MenuItem -> Menu.Item +- Infiniteloading -> InfiniteLoading + +## 组件 API 调整 + +在 2.0 版本中,我们重点对组件 API 进行了评审和修订,使属性和方法命名更贴合常用的命名习惯及 React 语言规范,目标希望开发者在使用组件时得心应手。我们的思路大体如下: + +### 属性定义 + +本次升级重点关注属性的命名方面,从 1.x 的 610 个属性精简为 410 个,更精简、更规范;同时增强属性的类型范围,提升自定义能力。 + +- 对同一属性进行统一描述,比如: + - 缩写类会改为全拼,如 `desc`、`descSlot`、`description` 统一为 `description` + - 能使用名词或形容词的优先使用该类词性,一个词能说明白的不用两个词。 + - 如 `wrap`、`wrapable` 统一为 `wrap` + - 如将 `isXxx` 统一为 `xxx`,如 `isVisible`、`isDeletable` 等,可直接使用 `visible`、`deletable` 等,形容词化 + - 如`showXxx` 尽量统一为 `xxx`,名词化。【部分属性待优化。】 + - 如 `roundRadius` 改为 `radius` ,`columnNum` 改为 `columns`等 + - `onClickXxx` 统一为 `onXxxClick` + - `modelValue` 统一为 `value`,并增加支持 `defaultValue`,支持受控与非受控模式 + - 对于标识位置、对齐等类的属性,将属性名变更为其上一层的属性定义,如 `center`会改为 `align`、`vertical`,改为 `direction`,像标记距离的,如 `top`、`bottom`、`distance` 等,会改为 `threshold` + - 不规范的定义如 `okBtn`、`okText` 这种,会改为 `confirmXxx` +- 扩充属性的类型。如 `title` 的类型从 `string` 扩充为 `React.ReactNode`,增强自定义内容;其中有涉及合并属性的,统一用最简命名来定义属性;如 `title`、`titleSlot` 合并为 `title`,再扩充属性类型。 +- 对于 `xxClass`、`xxStyle`类的属性,移除,可使用 `className` 、`style` 来实现。 +- 移除与样式有关的属性,除基础组件的样式属性及部分实现起来较为复杂的样式属性外,大多数样式属性被移除,可通过样式变量来实现。 +- 将普遍认同可内置的属性或不怎么使用的属性,直接内置,去掉属性设置。 + +### 组件实现 + +### 基础组件 + +#### Button + +- 移除 `plain`,通过 `fill="outline"` 实现 +- 增加 `ref`,对外暴露组件内 `button` 元素 +- CSS 变量中,对 `type` 类型对应的色值的定义,不在暴露到文档中,建议使用默认值,或修改主题变量 +- 增加 `fill` 模式类型,`dashed`,修改 `fill` 默认值为 `outline`。 +- 增加 `rightIcon`,可满足同时设置左右两个icon的情况。 +- 修改 `size` 为 `large` 时的默认 `width` 为 `100%` 的值,如果使用通栏的 `button`,可搭配 `block` 来使用。 + +#### Cell + +- `subTitle` 重命名为 `description`,类型修改为 `React.Node` +- `desc` 重命名为 `extra`,类型修改为 `React.Node` +- `roundRadius` 重命名为 `radius` +- `center` 重命名为 `align`,默认值修改为`flex-start`,可选值为 `flex-start`、`center`、`flex-end` +- 移除 `icon`、 `isLink`、`url`、`linkSlot`、`replace`、`descTextAlign`,通过用户自定义节点实现,参考文档demo示例 + +#### CellGroup + +- 新增 `divider`,单元格之间是否有分割线 +- `desc` 重命名为 `description` +- `title`、`description` 类型修改为 `React.Node` +- 移除 `titleSlot` 和 `descSlot`,通过 `title`、`description` 实现 +- + +#### ConfigProvider + +#### Icon + +#### Image + +- 移除 `round`,通过 `radius` 实现圆或圆角 +- 移除 `loadingImg` 和 `slotLoading`,通过 `loading` 属性实现,当 `loading` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `loading` 状态 +- 移除 `showError` 和 `slotError`,通过 `error` 属性实现,当 `error` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `error` 状态 +- 移除 `loadingImg`,可通过 `loading` 设置 `ReactNode` +- 移除 `errorImg`,可通过 `error` 设置 `ReactNode` +- `showError` 重命名为 `error`,类型修改为 `boolean|ReactNode` +- `showLoading` 重命名为 `loading`,类型修改为 `boolean|ReactNode` + +#### Overlay + +- `overlayClass` 重命名为 `className` +- `overlayStyle` 重命名为 `style` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- 更改 `lockScroll` 默认值为 `true` +- 新增 `afterClose` 和 `afterShow`,用于完全关闭后触发的回调和完全展示后触发的回调 + +#### Popup + +- `popClass` 重命名为 `className`,统一将组件的样式类名使用 `className`,不再指定特殊名字,减轻用户使用的记忆成本 +- `overlayClass` 重命名为 `overlayClassName`,继承自`Overlay` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `onOpened` 和 `onClosed` 重命名为 `afterShow` 和 `afterClose`,继承自`Overlay`,用于完全关闭后触发的回调和完全展示后触发的回调 +- `destroyOnClose` 的描述进行了修订,改为:“组件不可见时,卸载内容”,并把其默认值改为了`false` +- `onClickCloseIcon` 和 `onClickOverlay` 两个方法,增加布尔判断,如返回false 或 未定义返回值时,将不再关闭 Popup;默认值为 `true`;在demo中已增加相应示例;同时,两者的名字变更为 `onCloseIconClick`、`onOverlayClick` +- `closeIcon` 类型从 `string` 改为 `ReactNode`,以前的 `closeIcon='mask-close'` 需改为 `closeIcon={<MaskClose />}` +- `onOverlayClick` 和 `onCloseIconClick` 不会自动触发 `onClose` 了,如需触发关闭事件,需主动调用 `onClose` 回调函数 +- 新增 `description` 属性,支持标题下展示描述内容。 +- 调整 `position` 为 `bottom` 时的默认样式,默认支持圆角,此刻不需要再设置 `round` 属性。 + +### 布局组件 + +#### Divider + +- 移除 `dashed`, 通过 `style` 属性实现 +- 移除 `hairline`, 默认为 `true` +- CSS 变量调整:`$divider-before-margin-right`、`$divider-after-margin-left` 统一为 `$divider-spacing`,`$divider-vertical-border-left` 变更为 `$divider-border-color`,增加 `$divider-side-width`。 + +#### Grid + +- 移除 `fontSize`,可自行控制传入的组件字体大小 +- 移除 `border`,作为默认样式 +- `columnNum` 重命名为 `columns` +- `GridItem` 使用方式修改为 `Grid.Item` + +#### Layout + +#### Sticky + +- 移除 `top` 和 `bottom`, 重命名为 `threshold` + +### 导航组件 + +#### Elevator + +- `acceptKey` 重命名为 `floorKey` +- `indexList` 重命名为 `list` +- `isSticky` 重命名为 `sticky` +- `onClickIndex` 重命名为 `onIndexClick` +- `onClickItem` 重命名为 `onItemClick` +- 新增`showKeys`,是否展示右侧导航 +- CSS 变量部分,对命名做了简化。 + +#### FixedNav + +- `unActiveText` 重命名为 `inactiveText` +- `navList` 重命名为 `list` +- `slotBtn` 重命名为 `content` +- `onSelected` 重命名为 `onSelect` +- 移除 `fixednavClass`,通过 `className` 实现 +- 移除 `slotList`,通过 `children` 实现 +- 该组件已废弃 `BEM` 规范,记得把 `__` 改为 `-` + +#### Indicator + +- 移除 `block`,暴露自定义节点 +- 移除 `align`,暴露自定义节点 +- `vertical` 重命名为`direction`,默认值为 `horizontal`,可选 `vertical` +- 移除 `fillZero`,暴露自定义节点 +- `size` 重命名为 `total` +- 增加非数字展示,并设置为默认状态 + +#### Menu + +- 移除 `fontClassName` +- 移除 `iconClassPrefix` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `titleIcon` 重命名为 `icon` +- `optionsIcon` 重命名为 `icon` +- 增加 `closeOnClickAway` + +#### NavBar + +- `desc` 重命名为 `right`,类型修改为 `React.Node` +- 新增 `left`,左侧内容,渲染在返回区域的右侧 +- 新增 `back`,返回区域内容 +- `onClickBack` 重命名为 `onBackClick` +- 移除 `title`,通过 `children` 实现 +- 移除 `leftText` `leftShow`,通过 `back`、`left`实现 +- `safeAreaInsetTop` 重命名为 `safeArea` +- `border` 废弃 +- 移除 `onClickTitle` `onClickRight` `onClickIcon`,通过在`left`、`title`、`right`自定义事件实现,参考文档demo示例 +- + +#### Pagination + +- 新增 `lite` 模式,只展示页码,不支持事件交互 +- 新增 `defaultValue` 非受控值 +- `modelValue` 重命名为 `value`,受控值 +- `prevText` 重命名为 `prev`,类型修改为 `ReactNode` +- `nextText` 重命名为 `next`,类型修改为 `ReactNode` +- `forceEllipses` 重命令为 `ellipse` +- `showPageSize` 重命名为 `itemSize` +- `itemsPerpage` 重命名为 `pageSize` +- `totalitems` 重命名为 `total` +- `pageNodeRender` 重命名为 `itemRender` +- 移除 `pageCount`,通过 `total` 与 `pageSize` 组合实现 + +#### SideNavBar + +- `offset` 重命名为 `indent` + +#### Tabbar + +- `unactiveColor` 重命名为 `inactiveColor` +- `tabTitle` 重命名为 `title`,类型修改为 `ReactNode` +- `bottom` 重命名为 `fixed` +- `safeAreaInsetBottom` 重命名为 `safeArea` +- `visible` 重命名为 `defaultValue`,非受控 +- `activeVisible` 重命名为 `value`,受控 + +#### TabbarItem + +- 使用方式修改为 `Tabbar.Item` +- `icon` 类型改为 `ReactNode`,移除其他 `icon` 关联属性 +- 移除 `href`,通过 `onSwitch` 事件控制链接与路由跳转 +- 移除 `num`,支持传入所有 `Badge` Props +- 移除 `color`,使用父元素的 `activeColor`,保持同样的 `active` 状态 + +#### Tabs + +- 增加 `lite`、`card`、`button`、`divider` 模式。 +- 移除 `background`,通过 `className` 或 `style` 控制 +- 移除 `titleScroll`, 默认支持滚动 +- 移除 `ellipsis`,默认 `flex:1` +- 移除 `size`,通过 css 变量 `--nutui-tabs-titles-item-font-size` 实现 +- `animatedTime` 重命名为 `duration` +- `titleGutter` 重命名为 css 样式变量实现 +- `titleNode` 重命名为 `title` +- `color` 重命名为 `activeColor` +- `type` 重命名为 `activeType` +- `leftAlign` 重命名为 `align` +- `onClick` 类型改为 `(index: string | number) => void` +- `onChange` 类型改为 `(index: string | number) => void` +- 增加 defaultValue +- 增加 `activeType` 类型 `simple`,实现选项卡的简约选择,只修改字号和字重,不处理字色。 + +#### Tabs.Tabpane + +- `paneKey` 重命名为 `value` + +### 数据录入 + +#### Calendar + +- `poppable` 重命名为 `popup` +- `isAutoBackFill` 重命名为 `autoBackfill` +- `toDateAnimation` 重命名为 `scrollAnimation` +- `startText` 类型改为 `ReactNode` +- `endText` 类型改为 `ReactNode` +- `confirmText` 类型改为 `ReactNode` +- `onBtn` 重命名为 `renderHeaderButtons` +- `onDay` 重命名为 `renderDay` +- `onTopInfo` 重命名为 `renderDayTop` +- `onBottomInfo` 重命名为 `renderDayBottom` +- `onSelected` 重命名为 `onDayClick` +- `onChoose` 重命名为 `onConfirm` +- `onYearMonthChange` 重命名为 `onPageChange` +- 新增 `firstDayOfWeek`,支持按照周进行选择,指定周起止日,如0-6 + +#### Cascader + +- 新增 `defaultValue`,其中 `defaultValue` 用于非受控,原 `value` 用于受控。两者的类型都改为 `(number | string | undefined)[]` +- `checkedIcon` 重命名为 `activeIcon` +- `poppable` 重命名为 `popup` +- `lazyLoad` 重命名为 `onLoad`,当启动懒加载 `lazy` 时,动态加载数据 +- `convertConfig` 重命名为 `format`,配置转换规则 +- 合并 `textKey` `valueKey` `childrenKey` 三个属性为对象属性 `optionKey` +- 移除 `tabsColor`, 该属性为设置 `Tabs` 当前选中的 `tab` 的下划线色值,但该值最好与文字部分搭配使用,统一处理 CSS 变量。 + +#### Checkbox + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 新增 `value`,用于 group 模式 +- `textPosition` 重命名为 `labelPosition` +- `iconName` 重命名为 `icon`,类型为 `ReactNode` +- `iconAcitveName` 重命名为 `activeIcon` +- `iconIndeterminateName` 重命名为 `iconIndeterminateIcon` +- 移除 `iconSize` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` +- 增加半选的禁用状态 + +#### Checkbox.Group + +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `textPosition` 重命名为 `labelPosition` +- `toggleAll` 重命名为 `toggle` +- `toggleReverse` 重命名为 `reverse` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` + +#### DatePicker + +- `modelValue` 重命名为 `value`,并增加 `defaultValue` +- `isShowChinese` 重命名为 `showChinese` +- `minDate` 重命名为 `startDate` +- `maxDate` 重命名为 `endDate` +- `onConfirmDatePicker` 重命名为 `onConfirm` +- `onCloseDatePicker` 重命名为 `onClose` +- 因为依赖组件`Picker`的变更,方法 `onConfirmDatePicker`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Form + +- 增加 `footer`,类型为 `ReactNode`,用于表单底部区域,通常用于设置提交、重置按钮 +- 增加 `initialValues`,用于设置表单初始值,同时用于表单的重置 +- 增加 `name` 属性 + +#### Form.Item + +- 移除 `labelWidth`, 通过 `--nutui-form-item-label-width` 控制宽度 +- 增加 `required`,用于必选样式控制 +- 增加 `trigger`,用于设置数据更新的时机 +- 增加 `valuePropName`,用于收集子组件受控的属性映射 +- 增加 `getValueFromEvent`,用于在收集数据中进行数据转换 +- 增加 `onclick` 用于收集子组件的 `ref` + +#### Input + +#### InputNumber + +- 增加 `allowEmpty`, 用于允许内容是否为空 +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `decimalPlaces` 重命名为 `digits` +- `isAsync` 重命名为 `async` +- 移除 `inputWidth`, 通过`--nutui-inputnumber-input-width`控制输入框的宽度 +- 移除 `buttonSize`, 通过`–nutui-inputnumber-button-width` 和 `–nutui-inputnumber-button-height`控制按钮的宽度和高度 +- taro 新增 `formatter` 属性, 用于指定输入框展示值的格式 +- 移除 `errorMessage` +- 移除 `showWordLimit` +- `autofocus` 重命名为 `autoFocus` +- `type="textarea"` 建议改为使用 `TextArea` 组件实现 + +#### NumberKeyboard + +- `randomKeys` 重命名为 `random` +- `customKey` 重命名为 `custom` +- `title` 类型变更为 `ReactNode` +- 新增 `onConfirm` 事件 +- 移除 `popClass` 定义,默认支持透传 `Popup` 属性 + +#### Picker + +- `isVisible` 重命名为 `visible` +- `listData` 重命名为 `options` +- `defaultValueData` 重命名为 `defaultValue` +- 增加受控 `value` +- `swipeDuration` 重命名为 `duration` +- `onCloseUpdate` 重命名为 `afterClose` +- 方法 `onConfirm`、`onClose`、`afterClose`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Radio + +- 移除 `iconSize`,可通过 Icon 的 css 变量设置 +- `iconName` 重命名为 `icon`,类型修改为 `ReactNode` +- 增加 `labelPosition`,用于设置 `label` 的位置 +- 增加 `checked` 和 `defaultChecked` ,用于受控和非受控 +- `onChange` 类型修改为 `(checked: boolean) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +### Radio.Group + +- `textPosition` 重命名为 `labelPosition` +- 增加 `defaultValue` ,用于非受控 +- `onChange` 类型修改为 `(value: string| number) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +#### Range + +- `maxDesc` 重命名为 `maxDescription`,类型改为 `ReactNode` +- `minDesc` 重命名为 `minDescription`,类型改为 `ReactNode` +- `curValueDesc` 重命名为 `currentDescription`,类型改为 `(value) => ReactNode` +- 移除 `hiddenRange`,通过 `max/minDescription` 传 `null` 实现 +- 移除 `hiddenTag`,通过 `currentDescription` 传 `null` 实现 +- 移除 `activeColor`、`inactiveColor`、`buttonColor`,通过 `css` 变量实现 +- `onDragStart` 重命名为 `onStart` +- `onDragEnd` 重命名为 `onEnd` +- `modelValue` 重命为 `value`,增加 `defaultValue` 非受控方式 + +#### Rate + +- `minimizeValue` 重命名为 `min` +- `readonly` 重命名为 `readOnly` +- 移除 `spacing`,通过 css 样式变量实现 +- 移除 `activeColor`、`voidColor`、`iconSize`,通过 `checkedIcon`、`uncheckedIcon` 实现 +- 增加受控 `value` 与非受控 `defaultValue`,移除 `modelValue` + +#### SearchBar + +- `onClickInput` 重命名为 `onInputClick` +- 移除 `clearSize`,样式默认 +- 移除 `background`,使用 CSS 变量 `--nutui-searchbar-background` 实现 +- 移除 `inputBackground`,使用 CSS 变量 `--nutui-searchbar-input-background` 实现 +- 移除 `align`,使用 CSS 变量 `--nutui-searchbar-input-text-align` +- 新增 `left` 和 `right`,为 `ReactNode` 节点,可自定义内容 +- 移除 `leftoutIcon` 和 `label`,使用 `left` 实现 +- 移除 `rightoutIcon` 和 `actionText`,使用 `right` 实现 +- 移除 `leftinIcon`,使用 `leftIn` 实现 +- 移除 `rightinIcon`,使用 `rightIn` 实现,同时兼顾和 clearIcon 的交互,当设置rightIn时,默认展示 rightIn,当触发输入后,展示 clearIcon。同时增加 `backable` 来标记是否展示左侧返回Icon +- 移除 `onCancel`,使用 `right` 来实现事件处理 +- 移除 `onClickLeftinIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickLeftoutIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickRightinIcon`,用户可使用 `right` 来实现事件处理 +- 移除 `onClickRightoutIcon`,用户可使用 `right` 来实现事件处理 + +#### ShortPassword + +- `desc` 重命名为 `description` +- `noButton` 重命名为 `hideFooter` +- `onOk` 重命名为 `onConfirm` +- `errorMsg` 重命名为 `error` +- 移除 `closeOnClickOverlay`,默认支持透传 Popup 属性 +- `title`、`description`、`tips`、`error` 类型修改为 `ReactNode` +- `modelValue` 重命名为 `value`,受控模式 +- 新增 `onFoucs` 事件 + +#### TextArea + +- `maxlength` 重命名为 `maxLength` +- `readonly` 重命名为 `readOnly` +- `limitShow` 重命名为 `showCount` +- `autosize` 重命名为 `autoSize` +- 移除 `textAlign`,可通过 `style` 传入 +- `defaultValue` 改为非受控,增加受控值 `value` + +#### Uploader + +- `maximize` 重命名为 `maxFileSize` +- `maximum` 重命名为 `maxCount` +- `listType ` 重命名为 `previewType` +- `isDeletable ` 重命名为 `deletable` +- `isPreview` 重命名为 ` preview` +- `defaultImg` 重命名为 ` previewUrl` +- `defaultFileList` 重命名为 ` defaultValue` +- `uploadIconTip` 重命名为 `uploadLabel`,类型变更为 `ReactNode` +- `onBeforeUpload` 重命名为 `beforeUpload` +- `onBeforeXhrUpload` 重命名为 `beforeXhrUpload` +- `onBeforeDelete` 重命名为 `beforeDelete` +- `onRemove` 重命名为 `onDelete` +- 增加 `fit`,用于图片填充模式 +- 增加 `value`,用于受控传值 +- 移除 `uploadIconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- `uploadIcon` 类型从 `string` 调整为 `ReactNode` +- `onChange` 参数类型从 `{fileList: FileItem[], event: any}` 调整为 `FileItem[]` + +### 操作反馈 + +#### ActionSheet + +- `title`,类型变更为 `ReactNode` +- `description`,类型变更为 `ReactNode` +- `cancelTxt`,重命名为 `cancelText`,类型变更为 `ReactNode` +- `menuItems` 重命名为 `options` +- `chooseTagValue` 重命名为 `value` +- `onChoose` 重命名为 `onSelect` +- 增加 `options` 的定义 + - `color` 重命名为 `danger` + - `name`,列表项的标题key + - `description`,列表项的描述key + - `danger`,列表项中提醒用户重点关注的操作 + - `disabled`,列表项中禁用项 + +#### BackTop + +- `elId` 重命名为 `target` +- 移除 `right`、`bottom`,通过 style 传入,增加支持 `left`、`top` +- `distance` 重命名为 `threshold` +- 移除 `isAnimation`,通过 `duration` 设置 0 实现无动画效果 + +#### Dialog + +- `okText` 重命名为 `confirmText`,规范命名。 +- `mask` 重命名为 `overlay`,组件库中统一使用 Overlay 组件作为遮罩层,并使用 overlay 作为是否展示遮罩层的属性值。 +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick`,组件库统一到该属性。 +- `noOkBtn` 重命名为 `hideConfirmButton`,初始值不变,依然表示是否隐藏确认按钮,主要是为了语义化更强。 +- `noCancelBtn` 重命名为 `hideCancelButton`,初始值不变,依然表示是否隐藏取消按钮,主要是为了语义化更强。 +- `okBtnDisabled` 重命名为 `disableConfirmButton`,初始值不变,依然表示是否禁用确认按钮,主要是为了语义化更强。 +- 移除 `noFooter`,使用 footer 统一处理,当 footer 为空时,及可替代该值。目前 noFooter 也需要手动声明是否为 noFooter;修改后需手动指出 footer={null} +- 移除 `textAlign`,改用样式变量 `--nutui-dialog-content-text-align` 或 SCSS 变量 `$dialog-content-text-align` 控制,默认值为 center。 +- 移除 `cancelAutoClose`,改为 `beforeCancel` 和 `beforeClose` 来实现,在点击关闭或取消时,可先触发这两个方法,以确定是否要关闭弹框,如返回true,则关闭;否则不关闭。 +- `onOk` 重命名为 `onConfirm`,规范命名。 +- `onClosed` 重命名为 `onClose`,规范命名,关闭时触发。 +- `onClickSelf` 重命名为 `onClick`,语义不变,仍表示点击弹框自身时触发事件。 +- 增加 `overlayStyle` 和 `overlayClassName`,用来配置 Overlay 组件样式。 +- 增加 `onOverlayClick`,支持点击overlay时,触发事件。 +- `onCancel` 回调不会自动关闭弹层,需主动调用 `Dialog.close(xx)` + +#### Drag + +#### InfiniteLoading + +- `useCapture` 重命名为 `capture` +- `onScrollChange` 重命名为 `onScroll` +- `isOpenRefresh` 重命名为 `pullRefresh` +- `pullTxt` 重命名为 `pullingText`,类型变更为 `ReactNode` +- `loadTxt` 重命名为 `loadingText`,类型变更为 `ReactNode` +- `containerId` 重命名为 `target` +- 修订类名如 `top-box`、`bottom-box` 为 `nut-infinite-top-tips`、`nut-infinite-bottom-tips` + +#### Notify + +- 移除 `color` ,通过css变量`--nutui-notify-text-color`实现 +- 移除`background`,通过css变量`--nutui-notify-base-background-color`实现 +- `onClosed` 重命名为 `onClose` + +#### PullToRefresh + +#### Swipe + +- 移除 `leftWidth` ,通过 `leftAction` 实现 +- 移除 `rightWidth` ,通过 `rightAction` 实现 + +#### Switch + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 移除 `isAsync`,通过 `checked`实现 +- 移除 `activeColor` ,通过css变量`--nutui-switch-open-background-color`实现 +- 移除 `inactiveColor`,通过css变量`--nutui-switch-close-background-color`实现 + +#### Toast + +- 移除H5版本 `id` +- 移除 `center`和 `bottom`,通过 `position` 实现 +- 移除 `bgColor`,通过 css 变量实现 +- 移除 `customClass`,通过 `className` 实现 +- 移除 `cover` 和 `coverColor` ,通过css变量实现 +- 移除 `loadingRotate`,旋转状态通过 `iconFont`实现 +- 移除 `textAlignCenter`,通过css变量实现 +- 修改 `closeOnClickOverlay` 为 `closeOnOverlayClick` ,语义不变,是否在点击遮罩层后关闭提示 +- 新增 `lockScroll` ,用于背景是否锁定,默认值为 `false` + +### 展示组件 + +#### Animate + +- `type` 属性类型更改为 `AnimateType` ,具体值详见文档 +- `action` 属性类型更改为 `initial \| click` + +#### AnimatingNumbers + +- `maxLen` 重命名为 `length` +- `endNumber` 重命名为 `value`,类型修改为 `string|number` +- `delaySpeed` 重命名为 `delay` +- `easeSpeed` 重命名为 `duration` + +#### Audio + +- `url` 重命名为 `src` +- `autoplay` 重命名为 `autoPlay` +- `onFastBack` 重命名为 `onBack` +- `onPlayEnd` 重命名为 `onEnd` + +#### Avatar + +- `url` 重命名为 `src` +- `onActiveAvatar` 重命名为 `onClick` +- 新增 `fit` 属性,用于图片填充模式 +- 移除 `iconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 + +#### AvatarGroup + +- AvatarGroup `maxCount` 重命名为 `max` +- AvatarGroup `span` 重命名为 `gap` +- AvatarGroup `zIndex` 重命名为 `level` + +#### Badge + +- 移除 `zIndex`,目前没有用到,也不生效,直接去掉。 +- 移除 `icon`,自定义 `icon` 可放在 `value` 中实现,扩充了 `value` 的类型。 +- 修改 `max` 的最大值为99(之前为10000),比较贴合实际场景。 +- 主题定制的 `css` 变量中,去掉和 `dot` 有关的其他值,只保留 `width`。其他值由 `width` 计算而来. +- 主题定制,增加包含 icon 情况下的样式变量。 + +#### CircleProgress + +- `progress` 重命名为 `percent` +- `circleColor` 重命名为 `color` +- `pathColor` 重命名为 `background` + +#### Collapse + +- 新增 `defaultActiveName` 非受控 +- `activeName` 改为受控方式 +- `icon` 重命名为 `expandIcon`,类型修改为 `ReactNode` +- `onChange` 参数变更为 `activeName, name, status` +- 新增一种样式,尝试修改 `--nutui-collapse-item-border-bottom` 和 `-nutui-collapse-item-header-border-bottom`,可查看 + +#### CollapseItem + +- 使用方式调整为 `Collapse.Item` +- subTitle 重命名为 extra,类型修改为 `ReactNode` +- 新增 `expnandIcon`,优先级高于父组件对应值 +- 新增 `rotate`,优先级高于父组件对应值 + +#### CountDown + +- 新增 `remainingTime`,支持剩余毫秒时间倒计时。 + +#### Ellipsis + +- 新增 `className` 和 `style` 属性的支持 +- 优化 H5 的代码,去掉 `useEffect` 渲染改用 `useLayoutEffect` + +#### Empty + +- 新增 `status` 属性,用于默认图片错误类型 +- 新增 `size` 属性,用于区分全屏与半屏状态下图片的不同大小 +- 新增 `title` 属性,用于展示提示的标题部分 +- 新增 `actions` 属性,用于展示提示的操作部分,支持1个或2个操作 +- `image` 属性类型更改为 `ReactNode` +- 新增 `title`、`size`、`actions` 属性,支持标题的设置、图片大小的设置、可能的操作设置,操作设置默认以`Button`实现。 + +#### ImagePreview + +- `show` 重命名为 `visible` +- `autoplay` 重命名为 `autoPlay` +- `initNo` 重命名为 `defaultValue`,同时增加 `value`,为受控 +- `paginationVisible` 重命名为 `indicator` +- `paginationColor` 重命名为 `indicatorColor` +- `contentClose` 重命名为 `closeOnContentClick` +- 在 `Taro` 下支持视频 + +#### NoticeBar + +- `direction` 的可选值从 `across` 重命名为 `horizontal` +- `text` 重命名为 `content` +- `closeMode` 重命名为 `closeable` +- `leftIcon` 类型扩充,支持 `ReactNode` +- `rightIcon` 类型扩充,支持 `ReactNode` +- `color` 移除,使用 CSS 变量,之前已支持 +- `background` 移除,使用 CSS 变量,之前已支持 +- `wrapable` 重命名为 `wrap` +- `standTime` 重命名为 `duration` +- `onClickItem` 重命名为 `onItemClick` +- `complexAm` 废弃 + +#### Popover + +- 移除 `theme` 属性,可以通过css变量 `--nutui-brand-color` 控制暗黑模式 +- 新增 `showArrow` 属性,用于是否显示小箭头 +- 新增 `closeOnActionClick` 属性,用于是否在点击选项后关闭 +- 新增 `closeOnOutsideClick` 属性,用于是否在点击外部元素后关闭菜单 +- 新增 `targetId` 属性,用于自定义目标元素 id +- 新增 `onOpen` 属性,用于点击菜单时触发 +- 新增 `onClose` 属性,用于关闭菜单时触发 +- 新增 `action` 属性,用于为对应的选项添加方法 +- `onChoose` 重命名为 `onSelect` +- 继承Popup组件的 `overlayStyle` 、`overlayClassName` 、`overlay` 、`closeOnOverlayClick` 属性。 + +#### Price + +- `decimalDigits` 重命名为 `digits` +- 移除 `needSymbol`,通过 `symbol` 判断是否需要加上 symbol 符号 +- 新增 `line`,是否展示划线价 + +#### Progress + +- `percentage` 重命名为 `percent`,受控 +- 移除 `isShowPercentage`,可以自定义传入文案 +- 移除 `textWidth`,可以自定义传入内容的宽度 +- `strokeColor` 重命名为 `color` +- `fillColor` 重命名为 `background` +- 移除 `size`,通过 `strokeWidth`、`progress-height` css 变量实现尺寸自定义 +- `status` 重命名为 `animated`,表示是否展示动画效果 +- 移除 `textBackground`,通过 css 实现 +- 移除 `textColor`,通过 css 实现 +- 移除 `textInside`,仅保留内显功能 +- 移除 `textType、icon`,通过 `children` 传入自定义 `ReactNode`,不再区分类型 +- 新增 `lazy` 属性,支持每次进入可视区时展示进度条动画 +- 新增 `delay` 属性,表示延迟数据加载时长 + +#### Skeleton + +- `loading` 重命名为 `visible` +- `row` 重命名为 `rows` +- 移除 `width`,通过 css 变量 `skeleton-line-width` 实现 +- 移除 `height`,通过 css 变量 `skeleton-line-height` 实现 +- 移除 `round`,通过 css 变量 `skeleton-line-border-radius` 实现 + +#### Steps + +- `current` 重命名为 `value` +- `onClickStep` 重命名为 `onStepClick` +- `progressDot` 重命名为 `dot` + +#### Step + +- 移除 `iconColor`,可通过 `icon` 属性传入自定义 icon 或借助 CSS Variables 修改 icon 颜色 +- 移除 `size`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- 移除 `renderContent` ,可通过 `description` 实现 +- `title` 类型修改为 `ReactNode` +- `content` 重命名为 `description`,类型改为 `ReactNode` +- `icon` 类型修改为 `ReactNode` +- `activeIndex` 重命名为 `value` + +#### Swiper + +- h5 + - 移除 `paginationColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `paginationBgColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `pageContent`,通过 indicator 实现 + - `autoplay` 重命名为 `autoplay` + - `initPage` 重命名为 `defaultValue` + - `paginationVisible` 重命名为 `indicator`,类型改为` ReactNode` + - `isPreventDefault` 重命名为 `preventDefault` + - `isStopPropagation` 重命名为 `stopPropagation` + - `isCenter` 重命名为 `center` +- taro + - 通过封装 Taro 的 `Swiper` 和 `SwiperItem` 实现,支持的属性可参考 Taro Swiper 文档。 + +#### Table + +- `onSorter` 重命名为 `onSort` +- 合并 `summary` 与 `noData` 的样式处理 + +#### Tag + +- `color` 重命名为 `background` +- `textColor` 重命名为 `color` + +#### TrendArrow + +- `rate` 重命名为 `value` +- `showSign` 重命名为 `symbol` +- `showZero` 重命名为 `zero` +- `arrowLeft` 重命名为 `left` +- `syncTextColor` 重命名为 `sync` +- `textColor` 重命名为 `color` +- `upIconName` 重命名为 `riseIcon`,类型修改为 `React.Node` +- `downIconName` 重命名为 `dropIcon`,类型修改为 `React.Node` +- 移除 `iconSize`,通过`riseIcon`、`dropIcon`自定义传入icon大小 + +#### Video + +- 在 `Taro` 下新增video的适配 + +#### VirtualList + +- `sourceData` 重命名为 `list` +- `conatinerSize` 重命名为 `containerHeight` +- `itemSize` 重命名为 `itemHeight` +- `itemEqualSize` 重命名为 `itemEqual` +- `horizontal` 修改为 `direction`,默认值 `vertical`,可选值 `horizontal` + +#### WaterMark + +- `fontColor` 重命名为 `color` + +### 特色组件 + +#### Address + +- 该组件的 `custom` 改用 `Cascader` 组件重写;`custom2`也将使用 `Cascader` 完成,在 `Cascader` 中支持 `Elevator`,开发中。所以会废弃 `province`、`city`、`country`、`town` 这些属性,同时支持 `Cascader` 的属性。 +- `modelValue` 重命名为 `visible` +- `modelSelect` 重命名为 `defaultValue` +- `onSelected` 重命名为 `onSelect` +- `existAddress` 重命名为 `existList` +- `selectedIcon` 重命名为 `selectIcon` +- `closeBtnIcon` 重命名为 `closeIcon` +- `backBtnIcon` 重命名为 `backIcon` +- `isShowCustomAddress` 重命名为 `custom`,用于已有地址列表与自定义列表的切换,修改默认为值 `false` +- `customAndExistTitle` 废弃,与 `custom` 合并,当 `custom` 为 true 时,为默认文案,设置为某字符串时,展示字符串。 +- `customAddressTitle`、`existAddressTitle` 重命名为 `title`,不再区分状态,可通过onSwitch修改title +- 精简布局和样式 + +#### Barrage + +- `barrageList` 重命名为 `list` +- `frequency` 重命名为 `interval` +- `speeds` 重命名为 `duration` +- `top` 重命名为 `gapY` + +#### Card + +#### Signature + +- `type` 类型修改为 `png|jpg` +- `unSupportTpl` 重命名为 `unsupported`,类型修改为 `ReactNode` +- 新增 `confirm`和`clear` ref 的方法,移除组件内部 `button`元素,通过自定义按钮元素,设置元素点击事件结合ref实现,参考文档demo示例 + +#### TimeSelect + +- 移除 `height`,通过 `style` 设置高度 +- `title` 类型修改为 `ReactNode` +- `onPannelChange` 重命名为 `onDateChange` +- 移除 `dates`、`times`,合并为 `options`,重新设计了数据结构 +- 增加 `optionKey` 用于自定义数据中的关键字 +- 移除 `currentKey`,新增 `defaultValue` 用于设置默认选项,支持时间选择 diff --git a/src/sites/sites-react/doc/docs/taro/migrate-from-v2.md b/src/sites/sites-react/doc/docs/taro/migrate-from-v2.md new file mode 100644 index 0000000000..5bd3f8ec5e --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/migrate-from-v2.md @@ -0,0 +1,888 @@ +# 从 v2 升级到 v3 + +本文档将帮助您从 NutUI React `2.x` 升级到 NutUI React `3.x` 版本。 + +## 升级步骤 + +1. H5 安装 NutUI React 3.x 版本 + +```shell +npm install @nutui/nutui-react +``` + +2. Taro 安装 NutUI React 3.x 版本 + +```shell +npm install @nutui/nutui-react-taro +``` + +3. 处理不兼容更新 + +从 NutUI React 1.x 到 NutUI React 2.x 存在一些不兼容更新,需要仔细阅读不兼容更新内容,并依次处理。 + +你可以手动对照下面的列表逐条检查代码进行修改,另外,我们也提供了一个 codemod cli 工具 @nutui/nutui-react-codemod 以帮助你快速升级到 v2 版本。在运行 codemod cli 前,请先提交你的本地代码修改。 + +4. 主题变量更名: + 如,primary-color 更名为 color-primary;注意在使用自定义主题,特别是使用 ConfigProvider 组件的情况下,有没有使用 `nutuiBrandColor`,这时记得更名为 `nutuiColorPrimary` + +## 兼容更新 + +1. 组件样式处理 + +新增了按需引入 css 文件的支持,同时保留了按需引入 scss 文件的能力。可通过 babel-import-plugin 插件实现按需引入 css: + +H5配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react", + ] +] +``` + +Taro配置如下: + +```json +// Webpack .babelrc 或 babel.config.js中配置 +plugins: [ + [ + "import", + { + libraryName: "@nutui/nutui-react-taro", + libraryDirectory: "dist/esm", + style: 'css', + camel2DashComponentName: false, + }, + "nutui-react-taro", + ] +] +``` + +2. 更完善的类型导出以及对类型增加 `JSDoc` 注释 +3. 组件分类的调整 + 在组件分类上,我们从交互维度上,和交互设计侧共同对 1.x 分类进行了基于信息结构的评审,并进行了子类梳理,完成重新分类,目标是更贴合交互场景的分布,易于查找组件。主要分布在: + +- 基础组件,将 `Popup` 组件移除,将 `Popup` 细分到操作反馈-引导提示部分; +- 布局组件,保持不变; +- 导航组件:将分页相关组件 `Pagination`、`Indicator` 移动到展示组件(考虑移动端的分页轻操作);`Menu` 菜单移动到数据录入类-选择器子类(考虑 `Menu` 主要是作为筛选器);将 `BackTop` 移至导航组件,作为锚点组件的一部分; +- 展示组件:将 `Badge`、`NoticeBar`、`Popover` 移至操作反馈-引导提示类,`Empty`、`Skeleton` 移至操作反馈-加载状态结果反馈中;`WaterMark`、`TrendArrow` 作为特性增强类组件放在特色组件中,待由该类组件的使用场景和范围确认是否变更分类;同时新增 `Audio`,将其同 `Video`、`ImagePreview`、`Swiper` 一同归为展示-多媒体类; +- 操作反馈类,新增 `Skeleton`、`Empty`(加载结果反馈类),`Popover`、`Notify`、`NoticeBar`、`Popup` (引导提示类)6个组件;同时去除 `BackTop`(导航组件-锚点类)、`Switch`(数据录入-选择器)、`Audio``(展示-多媒体);在此基础上,未来会考虑增加 ResultPage`,整合错误状态、空状态等反馈状态,该组件在考虑中;同时考虑增加加载状态 `Loading` 组件。版本待定。 +- 数据录入类,主要分为两大类-输入及选择器。在输入中增加 `Signature`,该组件在 `Form` 表单中的应用范围日渐广泛,从特色组件中移入到数据录入部分;选择器中增加 `Switch`、`Menu`,及 `Address`。其中 `Signature` 和 `Address` 都是考虑其常用性,从特色中迁移到数据录入部分。 +- 特色组件,保留 `Barrage`、`Card`、`TimeSelect`,新增 `WaterMark`、`TrendArrow`。 + +## 不兼容更新 + +## NutUI Icons 调整 + +1.x 版本我们在实际开发过程中会发现 `Button` 只是引用了一个很小的 Loading Icon,但是全量引用了 IconFont 字体 ,会导致开发者的项目文件增大。我们在 NutUI React 2.x 中为解决此问题,重新定义了 Icon 组件,将所有的 Icons 抽离成单独的图标组件库 @nutui/icons-react(Taro 适配下为 @nutui/icons-react-taro) ,使其可以进行按需加载使用。 因此一些组件之前关于 Icon 的相关 Props 将被移除,需要使用插槽或者传递一个 Component 组件的 Props 进行使用。 受影响的组件如下: + +- Avatar +- Button +- ImagePreview +- Collapse +- InfiniteLoading +- Popup +- Steps +- Switch +- Toast +- Progress +- NoticeBar +- SearchBar +- Navbar +- Menu +- Tabbar +- Checkbox +- InputNumber +- Input +- Radio +- Rate +- Uploader +- Popover +- Grid +- TrendArrow + +如果你的项目中使用了这些组件,请仔细阅读文档并进行升级。 + +## 组件名称调整 + +- GridItem -> Grid.Item +- TabbarItem -> Tabbar.Item +- CollapseItem -> Collapse.Item +- SwiperItem -> Swiper.Item +- CellGroup -> Cell.Group +- MenuItem -> Menu.Item +- Infiniteloading -> InfiniteLoading + +## 组件 API 调整 + +在 2.0 版本中,我们重点对组件 API 进行了评审和修订,使属性和方法命名更贴合常用的命名习惯及 React 语言规范,目标希望开发者在使用组件时得心应手。我们的思路大体如下: + +### 属性定义 + +本次升级重点关注属性的命名方面,从 1.x 的 610 个属性精简为 410 个,更精简、更规范;同时增强属性的类型范围,提升自定义能力。 + +- 对同一属性进行统一描述,比如: + - 缩写类会改为全拼,如 `desc`、`descSlot`、`description` 统一为 `description` + - 能使用名词或形容词的优先使用该类词性,一个词能说明白的不用两个词。 + - 如 `wrap`、`wrapable` 统一为 `wrap` + - 如将 `isXxx` 统一为 `xxx`,如 `isVisible`、`isDeletable` 等,可直接使用 `visible`、`deletable` 等,形容词化 + - 如`showXxx` 尽量统一为 `xxx`,名词化。【部分属性待优化。】 + - 如 `roundRadius` 改为 `radius` ,`columnNum` 改为 `columns`等 + - `onClickXxx` 统一为 `onXxxClick` + - `modelValue` 统一为 `value`,并增加支持 `defaultValue`,支持受控与非受控模式 + - 对于标识位置、对齐等类的属性,将属性名变更为其上一层的属性定义,如 `center`会改为 `align`、`vertical`,改为 `direction`,像标记距离的,如 `top`、`bottom`、`distance` 等,会改为 `threshold` + - 不规范的定义如 `okBtn`、`okText` 这种,会改为 `confirmXxx` +- 扩充属性的类型。如 `title` 的类型从 `string` 扩充为 `React.ReactNode`,增强自定义内容;其中有涉及合并属性的,统一用最简命名来定义属性;如 `title`、`titleSlot` 合并为 `title`,再扩充属性类型。 +- 对于 `xxClass`、`xxStyle`类的属性,移除,可使用 `className` 、`style` 来实现。 +- 移除与样式有关的属性,除基础组件的样式属性及部分实现起来较为复杂的样式属性外,大多数样式属性被移除,可通过样式变量来实现。 +- 将普遍认同可内置的属性或不怎么使用的属性,直接内置,去掉属性设置。 + +### 组件实现 + +### 基础组件 + +#### Button + +- 移除 `plain`,通过 `fill="outline"` 实现 +- 增加 `ref`,对外暴露组件内 `button` 元素 +- CSS 变量中,对 `type` 类型对应的色值的定义,不在暴露到文档中,建议使用默认值,或修改主题变量 +- 增加 `fill` 模式类型,`dashed`,修改 `fill` 默认值为 `outline`。 +- 增加 `rightIcon`,可满足同时设置左右两个icon的情况。 +- 修改 `size` 为 `large` 时的默认 `width` 为 `100%` 的值,如果使用通栏的 `button`,可搭配 `block` 来使用。 + +#### Cell + +- `subTitle` 重命名为 `description`,类型修改为 `React.Node` +- `desc` 重命名为 `extra`,类型修改为 `React.Node` +- `roundRadius` 重命名为 `radius` +- `center` 重命名为 `align`,默认值修改为`flex-start`,可选值为 `flex-start`、`center`、`flex-end` +- 移除 `icon`、 `isLink`、`url`、`linkSlot`、`replace`、`descTextAlign`,通过用户自定义节点实现,参考文档demo示例 + +#### CellGroup + +- 新增 `divider`,单元格之间是否有分割线 +- `desc` 重命名为 `description` +- `title`、`description` 类型修改为 `React.Node` +- 移除 `titleSlot` 和 `descSlot`,通过 `title`、`description` 实现 +- + +#### ConfigProvider + +#### Icon + +#### Image + +- 移除 `round`,通过 `radius` 实现圆或圆角 +- 移除 `loadingImg` 和 `slotLoading`,通过 `loading` 属性实现,当 `loading` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `loading` 状态 +- 移除 `showError` 和 `slotError`,通过 `error` 属性实现,当 `error` 属性设置为 `ReactNode` 或 `true` 时,表示展示 `error` 状态 +- 移除 `loadingImg`,可通过 `loading` 设置 `ReactNode` +- 移除 `errorImg`,可通过 `error` 设置 `ReactNode` +- `showError` 重命名为 `error`,类型修改为 `boolean|ReactNode` +- `showLoading` 重命名为 `loading`,类型修改为 `boolean|ReactNode` + +#### Overlay + +- `overlayClass` 重命名为 `className` +- `overlayStyle` 重命名为 `style` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- 更改 `lockScroll` 默认值为 `true` +- 新增 `afterClose` 和 `afterShow`,用于完全关闭后触发的回调和完全展示后触发的回调 + +#### Popup + +- `popClass` 重命名为 `className`,统一将组件的样式类名使用 `className`,不再指定特殊名字,减轻用户使用的记忆成本 +- `overlayClass` 重命名为 `overlayClassName`,继承自`Overlay` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `onOpened` 和 `onClosed` 重命名为 `afterShow` 和 `afterClose`,继承自`Overlay`,用于完全关闭后触发的回调和完全展示后触发的回调 +- `destroyOnClose` 的描述进行了修订,改为:“组件不可见时,卸载内容”,并把其默认值改为了`false` +- `onClickCloseIcon` 和 `onClickOverlay` 两个方法,增加布尔判断,如返回false 或 未定义返回值时,将不再关闭 Popup;默认值为 `true`;在demo中已增加相应示例;同时,两者的名字变更为 `onCloseIconClick`、`onOverlayClick` +- `closeIcon` 类型从 `string` 改为 `ReactNode`,以前的 `closeIcon='mask-close'` 需改为 `closeIcon={<MaskClose />}` +- `onOverlayClick` 和 `onCloseIconClick` 不会自动触发 `onClose` 了,如需触发关闭事件,需主动调用 `onClose` 回调函数 +- 新增 `description` 属性,支持标题下展示描述内容。 +- 调整 `position` 为 `bottom` 时的默认样式,默认支持圆角,此刻不需要再设置 `round` 属性。 + +### 布局组件 + +#### Divider + +- 移除 `dashed`, 通过 `style` 属性实现 +- 移除 `hairline`, 默认为 `true` +- CSS 变量调整:`$divider-before-margin-right`、`$divider-after-margin-left` 统一为 `$divider-spacing`,`$divider-vertical-border-left` 变更为 `$divider-border-color`,增加 `$divider-side-width`。 + +#### Grid + +- 移除 `fontSize`,可自行控制传入的组件字体大小 +- 移除 `border`,作为默认样式 +- `columnNum` 重命名为 `columns` +- `GridItem` 使用方式修改为 `Grid.Item` + +#### Layout + +#### Sticky + +- 移除 `top` 和 `bottom`, 重命名为 `threshold` + +### 导航组件 + +#### Elevator + +- `acceptKey` 重命名为 `floorKey` +- `indexList` 重命名为 `list` +- `isSticky` 重命名为 `sticky` +- `onClickIndex` 重命名为 `onIndexClick` +- `onClickItem` 重命名为 `onItemClick` +- 新增`showKeys`,是否展示右侧导航 +- CSS 变量部分,对命名做了简化。 + +#### FixedNav + +- `unActiveText` 重命名为 `inactiveText` +- `navList` 重命名为 `list` +- `slotBtn` 重命名为 `content` +- `onSelected` 重命名为 `onSelect` +- 移除 `fixednavClass`,通过 `className` 实现 +- 移除 `slotList`,通过 `children` 实现 +- 该组件已废弃 `BEM` 规范,记得把 `__` 改为 `-` + +#### Indicator + +- 移除 `block`,暴露自定义节点 +- 移除 `align`,暴露自定义节点 +- `vertical` 重命名为`direction`,默认值为 `horizontal`,可选 `vertical` +- 移除 `fillZero`,暴露自定义节点 +- `size` 重命名为 `total` +- 增加非数字展示,并设置为默认状态 + +#### Menu + +- 移除 `fontClassName` +- 移除 `iconClassPrefix` +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick` +- `titleIcon` 重命名为 `icon` +- `optionsIcon` 重命名为 `icon` +- 增加 `closeOnClickAway` + +#### NavBar + +- `desc` 重命名为 `right`,类型修改为 `React.Node` +- 新增 `left`,左侧内容,渲染在返回区域的右侧 +- 新增 `back`,返回区域内容 +- `onClickBack` 重命名为 `onBackClick` +- 移除 `title`,通过 `children` 实现 +- 移除 `leftText` `leftShow`,通过 `back`、`left`实现 +- `safeAreaInsetTop` 重命名为 `safeArea` +- `border` 废弃 +- 移除 `onClickTitle` `onClickRight` `onClickIcon`,通过在`left`、`title`、`right`自定义事件实现,参考文档demo示例 +- + +#### Pagination + +- 新增 `lite` 模式,只展示页码,不支持事件交互 +- 新增 `defaultValue` 非受控值 +- `modelValue` 重命名为 `value`,受控值 +- `prevText` 重命名为 `prev`,类型修改为 `ReactNode` +- `nextText` 重命名为 `next`,类型修改为 `ReactNode` +- `forceEllipses` 重命令为 `ellipse` +- `showPageSize` 重命名为 `itemSize` +- `itemsPerpage` 重命名为 `pageSize` +- `totalitems` 重命名为 `total` +- `pageNodeRender` 重命名为 `itemRender` +- 移除 `pageCount`,通过 `total` 与 `pageSize` 组合实现 + +#### SideNavBar + +- `offset` 重命名为 `indent` + +#### Tabbar + +- `unactiveColor` 重命名为 `inactiveColor` +- `tabTitle` 重命名为 `title`,类型修改为 `ReactNode` +- `bottom` 重命名为 `fixed` +- `safeAreaInsetBottom` 重命名为 `safeArea` +- `visible` 重命名为 `defaultValue`,非受控 +- `activeVisible` 重命名为 `value`,受控 + +#### TabbarItem + +- 使用方式修改为 `Tabbar.Item` +- `icon` 类型改为 `ReactNode`,移除其他 `icon` 关联属性 +- 移除 `href`,通过 `onSwitch` 事件控制链接与路由跳转 +- 移除 `num`,支持传入所有 `Badge` Props +- 移除 `color`,使用父元素的 `activeColor`,保持同样的 `active` 状态 + +#### Tabs + +- 增加 `lite`、`card`、`button`、`divider` 模式。 +- 移除 `background`,通过 `className` 或 `style` 控制 +- 移除 `titleScroll`, 默认支持滚动 +- 移除 `ellipsis`,默认 `flex:1` +- 移除 `size`,通过 css 变量 `--nutui-tabs-titles-item-font-size` 实现 +- `animatedTime` 重命名为 `duration` +- `titleGutter` 重命名为 css 样式变量实现 +- `titleNode` 重命名为 `title` +- `color` 重命名为 `activeColor` +- `type` 重命名为 `activeType` +- `leftAlign` 重命名为 `align` +- `onClick` 类型改为 `(index: string | number) => void` +- `onChange` 类型改为 `(index: string | number) => void` +- 增加 defaultValue +- 增加 `activeType` 类型 `simple`,实现选项卡的简约选择,只修改字号和字重,不处理字色。 + +#### Tabs.Tabpane + +- `paneKey` 重命名为 `value` + +### 数据录入 + +#### Calendar + +- `poppable` 重命名为 `popup` +- `isAutoBackFill` 重命名为 `autoBackfill` +- `toDateAnimation` 重命名为 `scrollAnimation` +- `startText` 类型改为 `ReactNode` +- `endText` 类型改为 `ReactNode` +- `confirmText` 类型改为 `ReactNode` +- `onBtn` 重命名为 `renderHeaderButtons` +- `onDay` 重命名为 `renderDay` +- `onTopInfo` 重命名为 `renderDayTop` +- `onBottomInfo` 重命名为 `renderDayBottom` +- `onSelected` 重命名为 `onDayClick` +- `onChoose` 重命名为 `onConfirm` +- `onYearMonthChange` 重命名为 `onPageChange` +- 新增 `firstDayOfWeek`,支持按照周进行选择,指定周起止日,如0-6 + +#### Cascader + +- 新增 `defaultValue`,其中 `defaultValue` 用于非受控,原 `value` 用于受控。两者的类型都改为 `(number | string | undefined)[]` +- `checkedIcon` 重命名为 `activeIcon` +- `poppable` 重命名为 `popup` +- `lazyLoad` 重命名为 `onLoad`,当启动懒加载 `lazy` 时,动态加载数据 +- `convertConfig` 重命名为 `format`,配置转换规则 +- 合并 `textKey` `valueKey` `childrenKey` 三个属性为对象属性 `optionKey` +- 移除 `tabsColor`, 该属性为设置 `Tabs` 当前选中的 `tab` 的下划线色值,但该值最好与文字部分搭配使用,统一处理 CSS 变量。 + +#### Checkbox + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 新增 `value`,用于 group 模式 +- `textPosition` 重命名为 `labelPosition` +- `iconName` 重命名为 `icon`,类型为 `ReactNode` +- `iconAcitveName` 重命名为 `activeIcon` +- `iconIndeterminateName` 重命名为 `iconIndeterminateIcon` +- 移除 `iconSize` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` +- 增加半选的禁用状态 + +#### Checkbox.Group + +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `textPosition` 重命名为 `labelPosition` +- `toggleAll` 重命名为 `toggle` +- `toggleReverse` 重命名为 `reverse` +- 部分 className 命名变更,废弃 `nutui-checkbox__xx` 命名方式,直接使用 `nutui-checkbox-xx`,并对选中状态命名修订为 `nutui-checkbox-icon-checked` + +#### DatePicker + +- `modelValue` 重命名为 `value`,并增加 `defaultValue` +- `isShowChinese` 重命名为 `showChinese` +- `minDate` 重命名为 `startDate` +- `maxDate` 重命名为 `endDate` +- `onConfirmDatePicker` 重命名为 `onConfirm` +- `onCloseDatePicker` 重命名为 `onClose` +- 因为依赖组件`Picker`的变更,方法 `onConfirmDatePicker`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Form + +- 增加 `footer`,类型为 `ReactNode`,用于表单底部区域,通常用于设置提交、重置按钮 +- 增加 `initialValues`,用于设置表单初始值,同时用于表单的重置 +- 增加 `name` 属性 + +#### Form.Item + +- 移除 `labelWidth`, 通过 `--nutui-form-item-label-width` 控制宽度 +- 增加 `required`,用于必选样式控制 +- 增加 `trigger`,用于设置数据更新的时机 +- 增加 `valuePropName`,用于收集子组件受控的属性映射 +- 增加 `getValueFromEvent`,用于在收集数据中进行数据转换 +- 增加 `onclick` 用于收集子组件的 `ref` + +#### Input + +#### InputNumber + +- 增加 `allowEmpty`, 用于允许内容是否为空 +- 新增 `defaultValue`,用于非受控,`value` 用于受控 +- `decimalPlaces` 重命名为 `digits` +- `isAsync` 重命名为 `async` +- 移除 `inputWidth`, 通过`--nutui-inputnumber-input-width`控制输入框的宽度 +- 移除 `buttonSize`, 通过`–nutui-inputnumber-button-width` 和 `–nutui-inputnumber-button-height`控制按钮的宽度和高度 +- taro 新增 `formatter` 属性, 用于指定输入框展示值的格式 +- 移除 `errorMessage` +- 移除 `showWordLimit` +- `autofocus` 重命名为 `autoFocus` +- `type="textarea"` 建议改为使用 `TextArea` 组件实现 + +#### NumberKeyboard + +- `randomKeys` 重命名为 `random` +- `customKey` 重命名为 `custom` +- `title` 类型变更为 `ReactNode` +- 新增 `onConfirm` 事件 +- 移除 `popClass` 定义,默认支持透传 `Popup` 属性 + +#### Picker + +- `isVisible` 重命名为 `visible` +- `listData` 重命名为 `options` +- `defaultValueData` 重命名为 `defaultValue` +- 增加受控 `value` +- `swipeDuration` 重命名为 `duration` +- `onCloseUpdate` 重命名为 `afterClose` +- 方法 `onConfirm`、`onClose`、`afterClose`、`onChange`的参数进行了调整,从`(selectedValue, selectedOptions)` 改为 `(selectedOptions, selectedValue)`。 + +#### Radio + +- 移除 `iconSize`,可通过 Icon 的 css 变量设置 +- `iconName` 重命名为 `icon`,类型修改为 `ReactNode` +- 增加 `labelPosition`,用于设置 `label` 的位置 +- 增加 `checked` 和 `defaultChecked` ,用于受控和非受控 +- `onChange` 类型修改为 `(checked: boolean) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +### Radio.Group + +- `textPosition` 重命名为 `labelPosition` +- 增加 `defaultValue` ,用于非受控 +- `onChange` 类型修改为 `(value: string| number) => void` +- 部分 className 命名变更,废弃 `nutui-radio__xx` 命名方式,直接使用 `nutui-radio-xx`,并对选中状态命名修订为 `nutui-radio-icon-checked` + +#### Range + +- `maxDesc` 重命名为 `maxDescription`,类型改为 `ReactNode` +- `minDesc` 重命名为 `minDescription`,类型改为 `ReactNode` +- `curValueDesc` 重命名为 `currentDescription`,类型改为 `(value) => ReactNode` +- 移除 `hiddenRange`,通过 `max/minDescription` 传 `null` 实现 +- 移除 `hiddenTag`,通过 `currentDescription` 传 `null` 实现 +- 移除 `activeColor`、`inactiveColor`、`buttonColor`,通过 `css` 变量实现 +- `onDragStart` 重命名为 `onStart` +- `onDragEnd` 重命名为 `onEnd` +- `modelValue` 重命为 `value`,增加 `defaultValue` 非受控方式 + +#### Rate + +- `minimizeValue` 重命名为 `min` +- `readonly` 重命名为 `readOnly` +- 移除 `spacing`,通过 css 样式变量实现 +- 移除 `activeColor`、`voidColor`、`iconSize`,通过 `checkedIcon`、`uncheckedIcon` 实现 +- 增加受控 `value` 与非受控 `defaultValue`,移除 `modelValue` + +#### SearchBar + +- `onClickInput` 重命名为 `onInputClick` +- 移除 `clearSize`,样式默认 +- 移除 `background`,使用 CSS 变量 `--nutui-searchbar-background` 实现 +- 移除 `inputBackground`,使用 CSS 变量 `--nutui-searchbar-input-background` 实现 +- 移除 `align`,使用 CSS 变量 `--nutui-searchbar-input-text-align` +- 新增 `left` 和 `right`,为 `ReactNode` 节点,可自定义内容 +- 移除 `leftoutIcon` 和 `label`,使用 `left` 实现 +- 移除 `rightoutIcon` 和 `actionText`,使用 `right` 实现 +- 移除 `leftinIcon`,使用 `leftIn` 实现 +- 移除 `rightinIcon`,使用 `rightIn` 实现,同时兼顾和 clearIcon 的交互,当设置rightIn时,默认展示 rightIn,当触发输入后,展示 clearIcon。同时增加 `backable` 来标记是否展示左侧返回Icon +- 移除 `onCancel`,使用 `right` 来实现事件处理 +- 移除 `onClickLeftinIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickLeftoutIcon`,用户可使用 `left` 来实现事件处理 +- 移除 `onClickRightinIcon`,用户可使用 `right` 来实现事件处理 +- 移除 `onClickRightoutIcon`,用户可使用 `right` 来实现事件处理 + +#### ShortPassword + +- `desc` 重命名为 `description` +- `noButton` 重命名为 `hideFooter` +- `onOk` 重命名为 `onConfirm` +- `errorMsg` 重命名为 `error` +- 移除 `closeOnClickOverlay`,默认支持透传 Popup 属性 +- `title`、`description`、`tips`、`error` 类型修改为 `ReactNode` +- `modelValue` 重命名为 `value`,受控模式 +- 新增 `onFoucs` 事件 + +#### TextArea + +- `maxlength` 重命名为 `maxLength` +- `readonly` 重命名为 `readOnly` +- `limitShow` 重命名为 `showCount` +- `autosize` 重命名为 `autoSize` +- 移除 `textAlign`,可通过 `style` 传入 +- `defaultValue` 改为非受控,增加受控值 `value` + +#### Uploader + +- `maximize` 重命名为 `maxFileSize` +- `maximum` 重命名为 `maxCount` +- `listType ` 重命名为 `previewType` +- `isDeletable ` 重命名为 `deletable` +- `isPreview` 重命名为 ` preview` +- `defaultImg` 重命名为 ` previewUrl` +- `defaultFileList` 重命名为 ` defaultValue` +- `uploadIconTip` 重命名为 `uploadLabel`,类型变更为 `ReactNode` +- `onBeforeUpload` 重命名为 `beforeUpload` +- `onBeforeXhrUpload` 重命名为 `beforeXhrUpload` +- `onBeforeDelete` 重命名为 `beforeDelete` +- `onRemove` 重命名为 `onDelete` +- 增加 `fit`,用于图片填充模式 +- 增加 `value`,用于受控传值 +- 移除 `uploadIconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- `uploadIcon` 类型从 `string` 调整为 `ReactNode` +- `onChange` 参数类型从 `{fileList: FileItem[], event: any}` 调整为 `FileItem[]` + +### 操作反馈 + +#### ActionSheet + +- `title`,类型变更为 `ReactNode` +- `description`,类型变更为 `ReactNode` +- `cancelTxt`,重命名为 `cancelText`,类型变更为 `ReactNode` +- `menuItems` 重命名为 `options` +- `chooseTagValue` 重命名为 `value` +- `onChoose` 重命名为 `onSelect` +- 增加 `options` 的定义 + - `color` 重命名为 `danger` + - `name`,列表项的标题key + - `description`,列表项的描述key + - `danger`,列表项中提醒用户重点关注的操作 + - `disabled`,列表项中禁用项 + +#### BackTop + +- `elId` 重命名为 `target` +- 移除 `right`、`bottom`,通过 style 传入,增加支持 `left`、`top` +- `distance` 重命名为 `threshold` +- 移除 `isAnimation`,通过 `duration` 设置 0 实现无动画效果 + +#### Dialog + +- `okText` 重命名为 `confirmText`,规范命名。 +- `mask` 重命名为 `overlay`,组件库中统一使用 Overlay 组件作为遮罩层,并使用 overlay 作为是否展示遮罩层的属性值。 +- `closeOnClickOverlay` 重命名为 `closeOnOverlayClick`,组件库统一到该属性。 +- `noOkBtn` 重命名为 `hideConfirmButton`,初始值不变,依然表示是否隐藏确认按钮,主要是为了语义化更强。 +- `noCancelBtn` 重命名为 `hideCancelButton`,初始值不变,依然表示是否隐藏取消按钮,主要是为了语义化更强。 +- `okBtnDisabled` 重命名为 `disableConfirmButton`,初始值不变,依然表示是否禁用确认按钮,主要是为了语义化更强。 +- 移除 `noFooter`,使用 footer 统一处理,当 footer 为空时,及可替代该值。目前 noFooter 也需要手动声明是否为 noFooter;修改后需手动指出 footer={null} +- 移除 `textAlign`,改用样式变量 `--nutui-dialog-content-text-align` 或 SCSS 变量 `$dialog-content-text-align` 控制,默认值为 center。 +- 移除 `cancelAutoClose`,改为 `beforeCancel` 和 `beforeClose` 来实现,在点击关闭或取消时,可先触发这两个方法,以确定是否要关闭弹框,如返回true,则关闭;否则不关闭。 +- `onOk` 重命名为 `onConfirm`,规范命名。 +- `onClosed` 重命名为 `onClose`,规范命名,关闭时触发。 +- `onClickSelf` 重命名为 `onClick`,语义不变,仍表示点击弹框自身时触发事件。 +- 增加 `overlayStyle` 和 `overlayClassName`,用来配置 Overlay 组件样式。 +- 增加 `onOverlayClick`,支持点击overlay时,触发事件。 +- `onCancel` 回调不会自动关闭弹层,需主动调用 `Dialog.close(xx)` + +#### Drag + +#### InfiniteLoading + +- `useCapture` 重命名为 `capture` +- `onScrollChange` 重命名为 `onScroll` +- `isOpenRefresh` 重命名为 `pullRefresh` +- `pullTxt` 重命名为 `pullingText`,类型变更为 `ReactNode` +- `loadTxt` 重命名为 `loadingText`,类型变更为 `ReactNode` +- `containerId` 重命名为 `target` +- 修订类名如 `top-box`、`bottom-box` 为 `nut-infinite-top-tips`、`nut-infinite-bottom-tips` + +#### Notify + +- 移除 `color` ,通过css变量`--nutui-notify-text-color`实现 +- 移除`background`,通过css变量`--nutui-notify-base-background-color`实现 +- `onClosed` 重命名为 `onClose` + +#### PullToRefresh + +#### Swipe + +- 移除 `leftWidth` ,通过 `leftAction` 实现 +- 移除 `rightWidth` ,通过 `rightAction` 实现 + +#### Switch + +- 新增 `defaultChecked`,用于非受控,`checked` 用于受控 +- 移除 `isAsync`,通过 `checked`实现 +- 移除 `activeColor` ,通过css变量`--nutui-switch-open-background-color`实现 +- 移除 `inactiveColor`,通过css变量`--nutui-switch-close-background-color`实现 + +#### Toast + +- 移除H5版本 `id` +- 移除 `center`和 `bottom`,通过 `position` 实现 +- 移除 `bgColor`,通过 css 变量实现 +- 移除 `customClass`,通过 `className` 实现 +- 移除 `cover` 和 `coverColor` ,通过css变量实现 +- 移除 `loadingRotate`,旋转状态通过 `iconFont`实现 +- 移除 `textAlignCenter`,通过css变量实现 +- 修改 `closeOnClickOverlay` 为 `closeOnOverlayClick` ,语义不变,是否在点击遮罩层后关闭提示 +- 新增 `lockScroll` ,用于背景是否锁定,默认值为 `false` + +### 展示组件 + +#### Animate + +- `type` 属性类型更改为 `AnimateType` ,具体值详见文档 +- `action` 属性类型更改为 `initial \| click` + +#### AnimatingNumbers + +- `maxLen` 重命名为 `length` +- `endNumber` 重命名为 `value`,类型修改为 `string|number` +- `delaySpeed` 重命名为 `delay` +- `easeSpeed` 重命名为 `duration` + +#### Audio + +- `url` 重命名为 `src` +- `autoplay` 重命名为 `autoPlay` +- `onFastBack` 重命名为 `onBack` +- `onPlayEnd` 重命名为 `onEnd` + +#### Avatar + +- `url` 重命名为 `src` +- `onActiveAvatar` 重命名为 `onClick` +- 新增 `fit` 属性,用于图片填充模式 +- 移除 `iconSize`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 + +#### AvatarGroup + +- AvatarGroup `maxCount` 重命名为 `max` +- AvatarGroup `span` 重命名为 `gap` +- AvatarGroup `zIndex` 重命名为 `level` + +#### Badge + +- 移除 `zIndex`,目前没有用到,也不生效,直接去掉。 +- 移除 `icon`,自定义 `icon` 可放在 `value` 中实现,扩充了 `value` 的类型。 +- 修改 `max` 的最大值为99(之前为10000),比较贴合实际场景。 +- 主题定制的 `css` 变量中,去掉和 `dot` 有关的其他值,只保留 `width`。其他值由 `width` 计算而来. +- 主题定制,增加包含 icon 情况下的样式变量。 + +#### CircleProgress + +- `progress` 重命名为 `percent` +- `circleColor` 重命名为 `color` +- `pathColor` 重命名为 `background` + +#### Collapse + +- 新增 `defaultActiveName` 非受控 +- `activeName` 改为受控方式 +- `icon` 重命名为 `expandIcon`,类型修改为 `ReactNode` +- `onChange` 参数变更为 `activeName, name, status` +- 新增一种样式,尝试修改 `--nutui-collapse-item-border-bottom` 和 `-nutui-collapse-item-header-border-bottom`,可查看 + +#### CollapseItem + +- 使用方式调整为 `Collapse.Item` +- subTitle 重命名为 extra,类型修改为 `ReactNode` +- 新增 `expnandIcon`,优先级高于父组件对应值 +- 新增 `rotate`,优先级高于父组件对应值 + +#### CountDown + +- 新增 `remainingTime`,支持剩余毫秒时间倒计时。 + +#### Ellipsis + +- 新增 `className` 和 `style` 属性的支持 +- 优化 H5 的代码,去掉 `useEffect` 渲染改用 `useLayoutEffect` + +#### Empty + +- 新增 `status` 属性,用于默认图片错误类型 +- 新增 `size` 属性,用于区分全屏与半屏状态下图片的不同大小 +- 新增 `title` 属性,用于展示提示的标题部分 +- 新增 `actions` 属性,用于展示提示的操作部分,支持1个或2个操作 +- `image` 属性类型更改为 `ReactNode` +- 新增 `title`、`size`、`actions` 属性,支持标题的设置、图片大小的设置、可能的操作设置,操作设置默认以`Button`实现。 + +#### ImagePreview + +- `show` 重命名为 `visible` +- `autoplay` 重命名为 `autoPlay` +- `initNo` 重命名为 `defaultValue`,同时增加 `value`,为受控 +- `paginationVisible` 重命名为 `indicator` +- `paginationColor` 重命名为 `indicatorColor` +- `contentClose` 重命名为 `closeOnContentClick` +- 在 `Taro` 下支持视频 + +#### NoticeBar + +- `direction` 的可选值从 `across` 重命名为 `horizontal` +- `text` 重命名为 `content` +- `closeMode` 重命名为 `closeable` +- `leftIcon` 类型扩充,支持 `ReactNode` +- `rightIcon` 类型扩充,支持 `ReactNode` +- `color` 移除,使用 CSS 变量,之前已支持 +- `background` 移除,使用 CSS 变量,之前已支持 +- `wrapable` 重命名为 `wrap` +- `standTime` 重命名为 `duration` +- `onClickItem` 重命名为 `onItemClick` +- `complexAm` 废弃 + +#### Popover + +- 移除 `theme` 属性,可以通过css变量 `--nutui-brand-color` 控制暗黑模式 +- 新增 `showArrow` 属性,用于是否显示小箭头 +- 新增 `closeOnActionClick` 属性,用于是否在点击选项后关闭 +- 新增 `closeOnOutsideClick` 属性,用于是否在点击外部元素后关闭菜单 +- 新增 `targetId` 属性,用于自定义目标元素 id +- 新增 `onOpen` 属性,用于点击菜单时触发 +- 新增 `onClose` 属性,用于关闭菜单时触发 +- 新增 `action` 属性,用于为对应的选项添加方法 +- `onChoose` 重命名为 `onSelect` +- 继承Popup组件的 `overlayStyle` 、`overlayClassName` 、`overlay` 、`closeOnOverlayClick` 属性。 + +#### Price + +- `decimalDigits` 重命名为 `digits` +- 移除 `needSymbol`,通过 `symbol` 判断是否需要加上 symbol 符号 +- 新增 `line`,是否展示划线价 + +#### Progress + +- `percentage` 重命名为 `percent`,受控 +- 移除 `isShowPercentage`,可以自定义传入文案 +- 移除 `textWidth`,可以自定义传入内容的宽度 +- `strokeColor` 重命名为 `color` +- `fillColor` 重命名为 `background` +- 移除 `size`,通过 `strokeWidth`、`progress-height` css 变量实现尺寸自定义 +- `status` 重命名为 `animated`,表示是否展示动画效果 +- 移除 `textBackground`,通过 css 实现 +- 移除 `textColor`,通过 css 实现 +- 移除 `textInside`,仅保留内显功能 +- 移除 `textType、icon`,通过 `children` 传入自定义 `ReactNode`,不再区分类型 +- 新增 `lazy` 属性,支持每次进入可视区时展示进度条动画 +- 新增 `delay` 属性,表示延迟数据加载时长 + +#### Skeleton + +- `loading` 重命名为 `visible` +- `row` 重命名为 `rows` +- 移除 `width`,通过 css 变量 `skeleton-line-width` 实现 +- 移除 `height`,通过 css 变量 `skeleton-line-height` 实现 +- 移除 `round`,通过 css 变量 `skeleton-line-border-radius` 实现 + +#### Steps + +- `current` 重命名为 `value` +- `onClickStep` 重命名为 `onStepClick` +- `progressDot` 重命名为 `dot` + +#### Step + +- 移除 `iconColor`,可通过 `icon` 属性传入自定义 icon 或借助 CSS Variables 修改 icon 颜色 +- 移除 `size`,可通过 icon 属性传入自定义 icon 或借助 CSS Variables 修改 icon 大小 +- 移除 `renderContent` ,可通过 `description` 实现 +- `title` 类型修改为 `ReactNode` +- `content` 重命名为 `description`,类型改为 `ReactNode` +- `icon` 类型修改为 `ReactNode` +- `activeIndex` 重命名为 `value` + +#### Swiper + +- h5 + - 移除 `paginationColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `paginationBgColor`,通过 `indicator` 的 CSS 变量控制 + - 移除 `pageContent`,通过 indicator 实现 + - `autoplay` 重命名为 `autoplay` + - `initPage` 重命名为 `defaultValue` + - `paginationVisible` 重命名为 `indicator`,类型改为` ReactNode` + - `isPreventDefault` 重命名为 `preventDefault` + - `isStopPropagation` 重命名为 `stopPropagation` + - `isCenter` 重命名为 `center` +- taro + - 通过封装 Taro 的 `Swiper` 和 `SwiperItem` 实现,支持的属性可参考 Taro Swiper 文档。 + +#### Table + +- `onSorter` 重命名为 `onSort` +- 合并 `summary` 与 `noData` 的样式处理 + +#### Tag + +- `color` 重命名为 `background` +- `textColor` 重命名为 `color` + +#### TrendArrow + +- `rate` 重命名为 `value` +- `showSign` 重命名为 `symbol` +- `showZero` 重命名为 `zero` +- `arrowLeft` 重命名为 `left` +- `syncTextColor` 重命名为 `sync` +- `textColor` 重命名为 `color` +- `upIconName` 重命名为 `riseIcon`,类型修改为 `React.Node` +- `downIconName` 重命名为 `dropIcon`,类型修改为 `React.Node` +- 移除 `iconSize`,通过`riseIcon`、`dropIcon`自定义传入icon大小 + +#### Video + +- 在 `Taro` 下新增video的适配 + +#### VirtualList + +- `sourceData` 重命名为 `list` +- `conatinerSize` 重命名为 `containerHeight` +- `itemSize` 重命名为 `itemHeight` +- `itemEqualSize` 重命名为 `itemEqual` +- `horizontal` 修改为 `direction`,默认值 `vertical`,可选值 `horizontal` + +#### WaterMark + +- `fontColor` 重命名为 `color` + +### 特色组件 + +#### Address + +- 该组件的 `custom` 改用 `Cascader` 组件重写;`custom2`也将使用 `Cascader` 完成,在 `Cascader` 中支持 `Elevator`,开发中。所以会废弃 `province`、`city`、`country`、`town` 这些属性,同时支持 `Cascader` 的属性。 +- `modelValue` 重命名为 `visible` +- `modelSelect` 重命名为 `defaultValue` +- `onSelected` 重命名为 `onSelect` +- `existAddress` 重命名为 `existList` +- `selectedIcon` 重命名为 `selectIcon` +- `closeBtnIcon` 重命名为 `closeIcon` +- `backBtnIcon` 重命名为 `backIcon` +- `isShowCustomAddress` 重命名为 `custom`,用于已有地址列表与自定义列表的切换,修改默认为值 `false` +- `customAndExistTitle` 废弃,与 `custom` 合并,当 `custom` 为 true 时,为默认文案,设置为某字符串时,展示字符串。 +- `customAddressTitle`、`existAddressTitle` 重命名为 `title`,不再区分状态,可通过onSwitch修改title +- 精简布局和样式 + +#### Barrage + +- `barrageList` 重命名为 `list` +- `frequency` 重命名为 `interval` +- `speeds` 重命名为 `duration` +- `top` 重命名为 `gapY` + +#### Card + +#### Signature + +- `type` 类型修改为 `png|jpg` +- `unSupportTpl` 重命名为 `unsupported`,类型修改为 `ReactNode` +- 新增 `confirm`和`clear` ref 的方法,移除组件内部 `button`元素,通过自定义按钮元素,设置元素点击事件结合ref实现,参考文档demo示例 + +#### TimeSelect + +- 移除 `height`,通过 `style` 设置高度 +- `title` 类型修改为 `ReactNode` +- `onPannelChange` 重命名为 `onDateChange` +- 移除 `dates`、`times`,合并为 `options`,重新设计了数据结构 +- 增加 `optionKey` 用于自定义数据中的关键字 +- 移除 `currentKey`,新增 `defaultValue` 用于设置默认选项,支持时间选择 diff --git a/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md b/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md new file mode 100644 index 0000000000..a2a53645af --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/official-theme-react.en-US.md @@ -0,0 +1,65 @@ +# Official theme + +## introduce + +NutUI provides multiple sets of official `UI` themes by default, while allowing new themes to be customized to a certain extent to meet the diverse visual needs of the business. + +#### + +| theme description | scss file name | +| --- | --- | +| Jingdong APP theme (default) | `variables.scss` | +| Jingdong B Mall Theme <a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >Preview</a> | `variables-jdb.scss ` | + +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI theme customization"/> + +## How to use + +### Modify the configuration file of the local project vite or webpack + +Modify the **sass-loader** configuration in the vite or webpack configuration file. The following example + +#### vite configuration example + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack configuration example + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // Default Jingdong APP 10.0 theme > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // Jingdong B Mall theme > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // Note: In different versions of sass-loader, the name of this option is different. For details, please refer to the version documentation corresponding to sass-loader + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/taro/official-theme-react.md b/src/sites/sites-react/doc/docs/taro/official-theme-react.md new file mode 100644 index 0000000000..b183ada3bd --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/official-theme-react.md @@ -0,0 +1,86 @@ +# 官方主题 + +## 介绍 + +NutUI 默认提供多套官方`UI`主题,同时允许在一定程度上定制新主题,以满足业务的多样化视觉需求。 + +#### + +| 主题说明 | scss 文件名称 | +| --- | --- | +| 京东 APP 主题(默认) | `variables.scss` | +| 京东B商城主题<a target="_blank" href="https://nutui.jd.com/h5/vue/4x/?jdb#/zh-CN/component/button" >预览</a> | `variables-jdb.scss` | + +<img src="https://img12.360buyimg.com/imagetools/jfs/t1/157759/16/13989/142151/6052efc7Ef8f4bff4/f3dd6422949ba4b7.jpg" width="700" alt="NutUI 主题定制"/> + +## 使用方式 + +### 修改本地项目 vite 或者 webpack 的配置文件 + +修改 vite 或者 webpack 配置文件中 **sass-loader** 的配置。如下示例 + +#### vite 配置示例 + +:::demo + +```javascript +// https://vitejs.dev/config/ +export default defineConfig({ + //... + css: { + preprocessorOptions: { + scss: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + additionalData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +}) +``` + +::: + +#### webpack 配置示例 + +:::demo + +```javascript +{ + test: /\.(sa|sc)ss$/, + use: [ + { + loader: 'sass-loader', + options: { + // 默认京东 APP 主题 > @import "@nutui/nutui-react/dist/styles/variables.scss"; + // 京东B商城主题 > @import "@nutui/nutui-react/dist/styles/variables-jdb.scss"; + // 注意:在 sass-loader 不同版本,这个选项名是 是不一样的,具体可参考 sass-loader对应的版本文档 + data: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + } + } + ] +} +``` + +::: + +#### vue/cli 3 以上版本修改 **vue.config.js** 进行配置 + +:::demo + +```javascript +module.exports = { + css: { + loaderOptions: { + // 给 sass-loader 传递选项 + scss: { + // @/ 是 src/ 的别名 + // 注意:在 sass-loader v7 中,这个选项名是 "data" + prependData: `@import "@nutui/nutui-react/dist/styles/variables.scss";`, + }, + }, + }, +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/taro/start-react.en-US.md b/src/sites/sites-react/doc/docs/taro/start-react.en-US.md new file mode 100644 index 0000000000..b8d48574ff --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/start-react.en-US.md @@ -0,0 +1,185 @@ +# Quick Start + +## Intro + +Through this article, you can master the installation and use of NutUI-React Taro. The operation is simple and easy to use, and the development is simple and fast. + +## Install Taro CLI + +```sh +# pnpm +pnpm install -g @tarojs/cli +# npm +npm install -g @tarojs/cli +# yarn +yarn global add @tarojs/cli +``` + +## Method 1: Use the NutUI template to quickly create a project + +#### 1. Use the command to create a Taro project: + +```sh +taro init +``` + +#### 2、Refer to the operation below to select the NutUI React template + +```sh +👽 Taro + +Taro 即将创建一个新项目! +Need help? Go and open issue: https://tls.jd.com/taro-issue-helper + +? 请输入项目名称! MyProject +? 请输入项目介绍 +? 请选择框架 React +? 是否需要使用 TypeScript ? Yes +? 请选择 CSS 预处理器(Sass/Less/Stylus) Sass +? 请选择编译工具 Webpack5 +? 请选择包管理工具 pnpm +? 请选择模板源 Github(最新) +✔ 拉取远程模板仓库成功! + 默认模板 + harmony + mobx + pwa +❯ react-NutUI(使用 NutUI React 的模板) + react-native + ...... +``` + +## Method 2: Introduce NutUI React into the existing Taro project + +#### 1. Install NutUI React + +```sh +# pnpm +pnpm add @nutui/nutui-react-taro +# npm +npm i @nutui/nutui-react-taro +# yarn +yarn add @nutui/nutui-react-taro +``` + +#### 2、Taro + +Install [@tarojs/plugin-html](https://taro-docs.jd.com/docs/use-h5/) + +```sh +# pnpm +pnpm add @tarojs/plugin-html@version +# yarn +yarn add @tarojs/plugin-html@version +# npm +npm i @tarojs/plugin-html@version +``` + +config + +:::demo + +```js +// config/index.js +config = { + plugins: ['@tarojs/plugin-html'], + designWidth(input) { + if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) { + return 375 + } + return 750 + }, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1, + }, +} +``` + +::: + +#### 3、Component usage and on-demand import + +You can choose to import style files in full: + +```js +import '@nutui/nutui-react-taro/dist/style.css' +``` + +You can also implement on-demand import of styles in the following ways: + +Install `babel-plugin-import`. + +```sh +# pnpm +pnpm add babel-plugin-import +# npm +npm i babel-plugin-import +# yarn +yarn add babel-plugin-import +``` + +babel config + +:::demo + +```js +// babel.config.js +plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react-taro', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react-taro', + ], +] +``` + +::: + +## Precautions + +#### 1. Check if Taro is successfully installed + +```sh +taro -v +``` + +The Taro version number appears to indicate a successful installation. + +#### 2. Saas-related errors occurred during the installation of Taro + +You may consider installing `mirror-config-china` and try again. + +```sh +npm install -g mirror-config-china +``` + +#### 3. When the applet project is running, the error message "can't find the template" appears + +Solution: Turn off prebundle and cache in Taro configuration file + +:::demo + +```js +// config/index.js +config = { + compiler: { + type: 'webpack5', + prebundle: { + exclude: ['@nutui/nutui-react-taro', '@nutui/icons-react-taro'], + }, + }, + cache: { + enable: false, + }, +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/taro/start-react.md b/src/sites/sites-react/doc/docs/taro/start-react.md new file mode 100644 index 0000000000..89ac3ff900 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/start-react.md @@ -0,0 +1,191 @@ +# 快速上手 + +## 介绍 + +通过本文你可以掌握 NutUI-React Taro 的安装和使用方法,操作简单易上手,开发简洁快速。 + +## 安装 Taro 脚手架 + +```sh +# pnpm +pnpm install -g @tarojs/cli +# npm +npm install -g @tarojs/cli +# yarn +yarn global add @tarojs/cli +``` + +## 方式一:使用 Taro 内置的 NutUI 模板快速创建项目 + +#### 1、使用命令创建 Taro 项目: + +```sh +taro init +``` + +#### 2、参考下方操作,选择 NutUI React 模板 + +```sh +👽 Taro + +Taro 即将创建一个新项目! +Need help? Go and open issue: https://tls.jd.com/taro-issue-helper + +? 请输入项目名称! MyProject +? 请输入项目介绍 +? 请选择框架 React +? 是否需要使用 TypeScript ? Yes +? 请选择 CSS 预处理器(Sass/Less/Stylus) Sass +? 请选择编译工具 Webpack5 +? 请选择包管理工具 pnpm +? 请选择模板源 Github(最新) +✔ 拉取远程模板仓库成功! + 默认模板 + harmony + mobx + pwa +❯ react-NutUI(使用 NutUI React 的模板) + react-native + ...... +``` + +## 方式二:在已有 Taro 项目中引入 NutUI React + +#### 1、安装 NutUI React + +```sh +# pnpm +pnpm add @nutui/nutui-react-taro +# npm +npm i @nutui/nutui-react-taro +# yarn +yarn add @nutui/nutui-react-taro +``` + +#### 2、Taro 相关配置 + +安装 [@tarojs/plugin-html](https://taro-docs.jd.com/docs/use-h5/) + +> 注意,这里安装的版本 version 必须与项目中 Taro 版本保持一致! + +```bash +# pnpm +pnpm add @tarojs/plugin-html@version +# yarn +yarn add @tarojs/plugin-html@version +# npm +npm i @tarojs/plugin-html@version +``` + +在项目中配置 + +:::demo + +```js +// config/index.js +config = { + // 开启 HTML 插件 + plugins: ['@tarojs/plugin-html'], + designWidth(input) { + // 配置 NutUI 375 尺寸 + if (input?.file?.replace(/\\+/g, '/').indexOf('@nutui') > -1) { + return 375 + } + // 全局使用 Taro 默认的 750 尺寸 + return 750 + }, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1, + }, +} +``` + +::: + +#### 3、组件使用与按需引入 + +您可以选择全量引入样式文件: + +```js +import '@nutui/nutui-react-taro/dist/style.css' +``` + +也可以通过下面的方式实现样式的按需引入: + +首先安装 `babel-plugin-import` 插件 + +```sh +# pnpm +pnpm add babel-plugin-import +# npm +npm i babel-plugin-import +# yarn +yarn add babel-plugin-import +``` + +安装后在项目中设置 babel 相关配置: + +```js +// babel.config.js +module.exports = { + presets: [ + // ... + ], + plugins: [ + [ + 'import', + { + libraryName: '@nutui/nutui-react-taro', + libraryDirectory: 'dist/esm', + style: 'css', + camel2DashComponentName: false, + }, + 'nutui-react-taro', + ], + ], +} +``` + +## 注意事项 + +#### 1、检查 Taro 是否安装成功 + +```sh +taro -v +``` + +出现 Taro 版本号说明安装成功。 + +#### 2、安装 Taro 过程中出现 Saas 相关错误 + +可以考虑安装 `mirror-config-china` 后重试。 + +```sh +npm install -g mirror-config-china +``` + +#### 3、小程序项目运行时出现「找不到模板」的错误提示 + +解决方案:在 Taro 配置文件中关闭 prebundle 及 cache + +:::demo + +```js +// config/index.js +config = { + compiler: { + type: 'webpack5', + prebundle: { + exclude: ['@nutui/nutui-react-taro', '@nutui/icons-react-taro'], + }, + }, + cache: { + enable: false, + }, +} +``` + +::: diff --git a/src/sites/sites-react/doc/docs/taro/theme-react.en-US.md b/src/sites/sites-react/doc/docs/taro/theme-react.en-US.md new file mode 100644 index 0000000000..30cfcb128c --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/theme-react.en-US.md @@ -0,0 +1,58 @@ +# Customize Theme + +## Introduce + +NutUI-React supports flexible style customization to meet multiple visual business and brand needs, including but not limited to support for global master tone and component-specific visual customization. +<br /> +<br /> +In NutUI-React version 1.4.0, the Sass theme customization function of 1.x can still be used. We added CSS variables to the original theme customization function, so that the new theme customization function can be used without introducing additional SCSS style files. + +## Method 1: Use CSS Variables to configure topics + +`NutUI - React` can [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) to organize the pattern, By overwriting these 'CSS' variables, you can achieve custom theme, dynamic switching theme and other functions. +<br /> +<br /> +You can play with the [ConfigProvider](#/zh-CN/component/configprovider) component. +<br /> +<br /> +We recommend replacing [CSS Vars] (https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) for the theme of personalized configuration. + +## Method 2: Use Sass variable for topic configuration + +#### Step 1: Create a custom variable SCSS file + +Create a new 'SCSS' file 'custom_theme.scss' in your local project. + +```scss +// Dominant tone +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +#### Step 2: Modify the configuration file of the local project webpack or vite + +Modify the ** ass-loader** configuration in the 'vite' or 'webpack' configuration file. The following example + +#### taro + +Configure `scss` file global cover in `config/index.js`: + +```javascript +const path = require('path'); +const config = { + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1 + }, + sass: { + resource: [ + path.resolve(__dirname, '..', 'src/assets/styles/custom_theme.scss') + ], + // 默认京东 APP 10.0主题 > @import "@nutui/nutui-react-taro/dist/styles/variables.scss"; + data: `@import "@nutui/nutui-react-taro/dist/styles/variables.scss";` + }, + // ... +``` diff --git a/src/sites/sites-react/doc/docs/taro/theme-react.md b/src/sites/sites-react/doc/docs/taro/theme-react.md new file mode 100644 index 0000000000..f1aec212d5 --- /dev/null +++ b/src/sites/sites-react/doc/docs/taro/theme-react.md @@ -0,0 +1,53 @@ +# 主题定制 + +## 介绍 + +NutUI-React 支持灵活的样式定制,满足多种视觉业务和品牌需求,包括但不限于全局主色调和特定组件视觉定制的支持。 +<br /> +在 NutUI-React 的 1.4.0 版本中,依然可以使用 1.x 的 Sass 定制主题功能,我们在原有的主题定制功能上新增了 CSS 变量, 无需引入额外的 SCSS 样式文件,就可以使用到新的主题定制功能。 + +## 方式一 使用 CSS Variables 进行主题配置 + +`NutUI-React` 组件可以通过 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 来组织样式,通过覆盖这些 `CSS` 变量,可以实现定制主题、动态切换主题等功能。 +<br /> +您可在 [ConfigProvider 组件](#/zh-CN/component/configprovider) 进行体验。 +<br /> +我们更推荐使用替换 [CSS Vars](https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties) 的方式来进行个性化的主题配置。 + +## 方式二 使用 Sass 变量 进行主题配置 + +### 第一步 新建自定义变量 SCSS 文件 + +在本地项目中新建一个 `SCSS` 文件 `custom_theme.scss` 进行自定义。 + +```scss +// 主色调 +$color-primary: #fa2c19; +$color-primary-end: #fa6419; +... +``` + +### 第二步 修改本地项目 webpack 或者 vite 的配置文件 + +#### Taro 小程序使用示例 + +修改 `config/index.js` 文件中配置 `scss` 文件,全局覆盖如: + +```javascript +const path = require('path'); +const config = { + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2, + 375: 2 / 1 + }, + sass: { + resource: [ + path.resolve(__dirname, '..', 'src/assets/styles/custom_theme.scss') + ], + // 默认京东 APP 10.0主题 > @import "@nutui/nutui-react-taro/dist/styles/variables.scss"; + data: `@import "@nutui/nutui-react-taro/dist/styles/variables.scss";` + }, + // ... +``` diff --git a/src/sites/sites-react/doc/main.tsx b/src/sites/sites-react/doc/main.tsx new file mode 100644 index 0000000000..96ee288930 --- /dev/null +++ b/src/sites/sites-react/doc/main.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import * as ReactDOM from 'react-dom/client' +import { isMobile } from '../../assets/util' +import '@/sites/assets/styles/reset.scss' +import '@/sites/assets/styles/md-style.scss' +import App from './App' +if (isMobile) { + location.replace('demo.html') +} + +const rootElement = document.querySelector('#doc') + +if (rootElement != null) { + const root = ReactDOM.createRoot(rootElement) + root.render(<App />) +} diff --git a/src/sites/doc/router.ts b/src/sites/sites-react/doc/router.ts similarity index 63% rename from src/sites/doc/router.ts rename to src/sites/sites-react/doc/router.ts index d88f36dc8b..fa7e1b2b66 100644 --- a/src/sites/doc/router.ts +++ b/src/sites/sites-react/doc/router.ts @@ -3,6 +3,10 @@ // }) const modulesPage = import.meta.glob('/src/packages/**/doc.md') const routes: any[] = [] +const guideRoutes: any[] = [] +const guideEnRoutes: any[] = [] +const guideTaroRoutes: any[] = [] +const guideEnTaroRoutes: any[] = [] for (const path in modulesPage) { let name = (/packages\/(.*)\/doc\.md/.exec(path) as any[])[1] routes.push({ @@ -43,4 +47,24 @@ for (const path in modulesTaroPage) { }) } -export default routes +const modulesDocs = import.meta.glob('/src/sites/sites-react/doc/docs/react/*.md'); +for (const path in modulesDocs) { + let name = (/docs\/react\/(.*).md/.exec(path) as any[])[1]; + guideRoutes.push({ + path: `/zh-CN/guide/${name}`, + component: modulesDocs[path], + name + }); +} + +const modulesEnDocs = import.meta.glob('/src/sites/sites-react/doc/docs/react/*.en-US.md'); +for (const path in modulesEnDocs) { + let name = (/docs\/react\/(.*).en-US.md/.exec(path) as any[])[1]; + guideEnRoutes.push({ + path: `/en-US/guide/${name}`, + component: modulesEnDocs[path], + name: `en-${name}` + }); +} + +export {routes, guideRoutes, guideEnRoutes} \ No newline at end of file diff --git a/src/sites/theme/components/demo-preview/demo-preview.tsx b/src/sites/theme/components/demo-preview/demo-preview.tsx index bc25d904d4..8d6316ac5d 100644 --- a/src/sites/theme/components/demo-preview/demo-preview.tsx +++ b/src/sites/theme/components/demo-preview/demo-preview.tsx @@ -1,6 +1,6 @@ import React, { useEffect, useState } from 'react' import './demo-preview.scss' -import { useHistory, useLocation } from 'react-router-dom' +import { useLocation } from 'react-router-dom' const DemoPreview = (props: any) => { const location = useLocation() diff --git a/src/sites/theme/components/header/header.scss b/src/sites/theme/components/header/header.scss index a090f32d67..b1ae250808 100644 --- a/src/sites/theme/components/header/header.scss +++ b/src/sites/theme/components/header/header.scss @@ -209,12 +209,12 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } } @@ -367,12 +367,12 @@ &-box { &.select-down { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-down.png'); + background-image: url('../../../assets/images/icon-select-white-down.png'); } } &.select-up { .header-select-hd { - background-image: url('../../assets/images/icon-select-white-up.png'); + background-image: url('../../../assets/images/icon-select-white-up.png'); } } } diff --git a/tsconfig.json b/tsconfig.json index 7ec048bcd8..96e9336eac 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -45,7 +45,7 @@ "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx" - ], +, "global.d.ts" ], "exclude": [ "./node_modules/**", "src/sites/**", diff --git a/vite.config.demo.ts b/vite.config.demo.ts new file mode 100644 index 0000000000..f89b305d4d --- /dev/null +++ b/vite.config.demo.ts @@ -0,0 +1,126 @@ +/// <reference types="vitest" /> +import { defineConfig, UserConfig } from 'vite' +import { resolve, join } from 'path' +// @ts-ignore +import atImport from 'postcss-import' +import autoprefixer from 'autoprefixer' +import config from './package.json' + +const projectID = process.env.VITE_APP_PROJECT_ID || '' + +let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/variables.scss";@import '@/styles/theme-default.scss';\n` +if (projectID) { + fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` +} + +// https://vitejs.dev/config/ +export default defineConfig(async (): Promise<UserConfig> => { + return { + mode: 'production', + base: `/h5/react/${projectID === 'jmapp' ? 'jdesign' : '3x'}`, + resolve: { + alias: [ + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/light/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/loading.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/global.json' + ), + }, + { + find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', + replacement: resolve( + __dirname, + './src/packages/lottie/animation/dark/pulltorefresh.json' + ), + }, + { + find: '@nutui/nutui-react/dist/locale/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { + find: '@nutui/nutui-react-taro/dist/locales/en-US', + replacement: resolve(__dirname, './src/locales/en-US.ts'), + }, + { find: '@', replacement: resolve(__dirname, './src') }, + { + find: '@nutui/nutui-react', + replacement: resolve(__dirname, './src/packages/nutui.react.ts'), + }, + { + find: '@nutui/nutui-react-taro', + replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), + }, + ], + }, + css: { + preprocessorOptions: { + scss: { + // example : additionalData: `@import "./src/dclearesign/styles/variables";` + // dont need include file extend .scss + api: 'modern-compiler', + additionalData: fileStr, + // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 + silenceDeprecations: ['import', 'global-builtin'], + }, + postcss: { + plugins: [ + atImport({ path: join(__dirname, 'src`') }), + autoprefixer({ + overrideBrowserslist: [ + '> 0.5%', + 'last 2 versions', + 'ie > 11', + 'iOS >= 10', + 'Android >= 5', + ], + }), + ], + }, + }, + }, + build: { + target: 'es2015', + outDir: `./dist-demo/${projectID === 'jmapp' ? 'jdesign' : '3x'}/`, + cssCodeSplit: true, + rollupOptions: { + input: { + mobile: resolve(__dirname, 'demo.html'), + }, + output: { + entryFileNames: `demo-${config.version}/[name].js`, + chunkFileNames: `demo-${config.version}/[name].js`, + assetFileNames: `demo-${config.version}/[name].[ext]`, + }, + }, + }, + } +}) diff --git a/vite.config.mts b/vite.config.mts index bd91be55a3..fdb7935c9a 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -5,6 +5,7 @@ import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' import { readFileSync } from 'node:fs' +import rehypeHighlight from 'rehype-highlight' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -23,6 +24,9 @@ export default defineConfig(async (): Promise<UserConfig> => { host: '0.0.0.0', }, base: '/react/', + define: { + __DEMO_PATH__: JSON.stringify('/react/demo.html#'), + }, resolve: { alias: [ { @@ -96,7 +100,7 @@ export default defineConfig(async (): Promise<UserConfig> => { // silenceDeprecations: ['import', 'global-builtin'], }, postcss: { - plugins: [atImport({ path: join(__dirname, 'src`') })], + plugins: [atImport({ path: join(__dirname, 'src') })], }, }, }, @@ -108,6 +112,7 @@ export default defineConfig(async (): Promise<UserConfig> => { mdExtensions: [], mdxExtensions: ['.md'], remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], }), }, { diff --git a/vite.config.site.mts b/vite.config.site.mts index f89b305d4d..22b367a462 100644 --- a/vite.config.site.mts +++ b/vite.config.site.mts @@ -1,9 +1,10 @@ /// <reference types="vitest" /> import { defineConfig, UserConfig } from 'vite' -import { resolve, join } from 'path' +import reactRefresh from '@vitejs/plugin-react' +import { join, resolve } from 'path' // @ts-ignore import atImport from 'postcss-import' -import autoprefixer from 'autoprefixer' +import rehypeHighlight from 'rehype-highlight' import config from './package.json' const projectID = process.env.VITE_APP_PROJECT_ID || '' @@ -12,113 +13,70 @@ let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/ if (projectID) { fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` } +const refRandom = Math.random().toString(36).slice(-8) // https://vitejs.dev/config/ export default defineConfig(async (): Promise<UserConfig> => { + const mdx = await import('@mdx-js/rollup') + const remarkGfm = await import('remark-gfm') + const remarkDirective = await import('remark-directive') return { - mode: 'production', - base: `/h5/react/${projectID === 'jmapp' ? 'jdesign' : '3x'}`, - resolve: { - alias: [ - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/light/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/light/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/loading.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/loading.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/global.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/global.json' - ), - }, - { - find: '@nutui/nutui-react/dist/es/lottie/animation/dark/pulltorefresh.json', - replacement: resolve( - __dirname, - './src/packages/lottie/animation/dark/pulltorefresh.json' - ), - }, - { - find: '@nutui/nutui-react/dist/locale/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), - }, - { - find: '@nutui/nutui-react-taro/dist/locales/en-US', - replacement: resolve(__dirname, './src/locales/en-US.ts'), + base: '/h5/react/3x', + server: { + port: 2021, + host: '0.0.0.0', + open: '/h5/react/3x/index.react.html', + proxy: { + '/devServer': { + target: 'https://nutui.jd.com', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/devServer/, ''), }, - { find: '@', replacement: resolve(__dirname, './src') }, - { - find: '@nutui/nutui-react', - replacement: resolve(__dirname, './src/packages/nutui.react.ts'), - }, - { - find: '@nutui/nutui-react-taro', - replacement: resolve(__dirname, './src/packages/nutui.react.taro.ts'), - }, - ], + }, + }, + resolve: { + alias: [{ find: '@', replacement: resolve(__dirname, './src') }], + }, + define: { + __DEMO_PATH__: JSON.stringify('/h5/react/3x/demo.html#'), }, css: { preprocessorOptions: { scss: { - // example : additionalData: `@import "./src/dclearesign/styles/variables";` - // dont need include file extend .scss + // example : additionalData: `@import "./src/design/styles/variables";` api: 'modern-compiler', additionalData: fileStr, - // 这里查看可选值:https://github.com/sass/sass/blob/1c9ec00/js-api-doc/deprecations.d.ts#L180 - silenceDeprecations: ['import', 'global-builtin'], }, postcss: { - plugins: [ - atImport({ path: join(__dirname, 'src`') }), - autoprefixer({ - overrideBrowserslist: [ - '> 0.5%', - 'last 2 versions', - 'ie > 11', - 'iOS >= 10', - 'Android >= 5', - ], - }), - ], + plugins: [atImport({ path: join(__dirname, 'src`') })], }, }, }, + plugins: [ + { + enforce: 'pre', + ...mdx.default({ + providerImportSource: '@mdx-js/react', + mdExtensions: [], + mdxExtensions: ['.md'], + remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], + }), + }, + reactRefresh(), + ], build: { - target: 'es2015', - outDir: `./dist-demo/${projectID === 'jmapp' ? 'jdesign' : '3x'}/`, + outDir: './dist-site/h5', + assetsDir: `${config.version}-${refRandom}`, cssCodeSplit: true, rollupOptions: { input: { - mobile: resolve(__dirname, 'demo.html'), + react: resolve(__dirname, 'index.html'), }, output: { - entryFileNames: `demo-${config.version}/[name].js`, - chunkFileNames: `demo-${config.version}/[name].js`, - assetFileNames: `demo-${config.version}/[name].[ext]`, + entryFileNames: `${config.version}-${refRandom}/[name].js`, + chunkFileNames: `${config.version}-${refRandom}/[name].js`, + assetFileNames: `${config.version}-${refRandom}/[name].[ext]`, }, }, }, diff --git a/vite.config.site.taro.mts b/vite.config.site.taro.mts new file mode 100644 index 0000000000..18f40b9dbd --- /dev/null +++ b/vite.config.site.taro.mts @@ -0,0 +1,84 @@ +/// <reference types="vitest" /> +import { defineConfig, UserConfig } from 'vite' +import reactRefresh from '@vitejs/plugin-react' +import { join, resolve } from 'path' +// @ts-ignore +import atImport from 'postcss-import' +import rehypeHighlight from 'rehype-highlight' +import config from './package.json' + +const projectID = process.env.VITE_APP_PROJECT_ID || '' + +let fileStr = `@import "@/styles/variables.scss";@import "@/sites/assets/styles/variables.scss";@import '@/styles/theme-default.scss';\n` +if (projectID) { + fileStr = `@import '@/styles/variables-${projectID}.scss';\n@import "@/sites/assets/styles/variables.scss";\n@import '@/styles/font-${projectID}/iconfont.css';\n@import '@/styles/theme-${projectID}.scss';\n` +} +const refRandom = Math.random().toString(36).slice(-8) + +// https://vitejs.dev/config/ +export default defineConfig(async (): Promise<UserConfig> => { + const mdx = await import('@mdx-js/rollup') + const remarkGfm = await import('remark-gfm') + const remarkDirective = await import('remark-directive') + return { + base: '/taro/react/3x', + server: { + port: 2021, + host: '0.0.0.0', + // open: '/taro/react/3x/index.taro.html', + open: false, + proxy: { + '/devServer': { + target: 'https://nutui.jd.com', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/devServer/, ''), + }, + }, + }, + define: { + __DEMO_PATH__: JSON.stringify('/taro/react/3x/demo/index.html#'), + }, + resolve: { + alias: [{ find: '@', replacement: resolve(__dirname, './src') }], + }, + css: { + preprocessorOptions: { + scss: { + api: 'modern-compiler', + additionalData: fileStr, + }, + postcss: { + plugins: [atImport({ path: join(__dirname, 'src`') })], + }, + }, + }, + plugins: [ + { + enforce: 'pre', + ...mdx.default({ + providerImportSource: '@mdx-js/react', + mdExtensions: [], + mdxExtensions: ['.md'], + remarkPlugins: [remarkGfm.default, remarkDirective.default], + rehypePlugins: [rehypeHighlight], + }), + }, + reactRefresh(), + ], + build: { + outDir: './dist-site/taro', + assetsDir: `${config.version}-${refRandom}`, + cssCodeSplit: true, + rollupOptions: { + input: { + react: resolve(__dirname, 'index.taro.html'), + }, + output: { + entryFileNames: `${config.version}-${refRandom}/[name].js`, + chunkFileNames: `${config.version}-${refRandom}/[name].js`, + assetFileNames: `${config.version}-${refRandom}/[name].[ext]`, + }, + }, + }, + } +})