代强 2 лет назад
Родитель
Сommit
38e50f8fc7

+ 2 - 0
content/input/upload/index.md

@@ -1302,6 +1302,7 @@ import { IconUpload } from '@douyinfe/semi-icons';
 |--- | --- | --- | --- | --- |
 |accept | `html` 原生属性,接受上传的[文件类型](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept)。<br/>`accept` 的值为你允许选择文件的[MIME types 字符串](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Complete_list_of_MIME_types)或文件后缀(.jpg等) | string | |  |
 |action | 文件上传地址,必填 | string |  |  |
+|addOnPasting | 按下 ctrl/command + v时,是否自动将剪贴板中的文件添加至 fileList,当前仅支持图片类型; 需用户授权同意 | boolean | false | 2.43.0 |
 |afterUpload | 文件上传后的钩子,根据 return 的 object 更新文件状态 | function(auProps) => afterUploadResult |  | 1.0.0 |
 |beforeClear|清空文件前回调,按照返回值来判断是否继续移除,返回false、Promise.resolve(false)、Promise.reject()会阻止移除|(fileList: Array<FileItem \>) => boolean\|Promise||1.31.0|
 |beforeRemove|移除文件前的回调,按照返回值来判断是否继续移除,返回false、Promise.resolve(false)、Promise.reject()会阻止移除|(file: <FileItem\>, fileList: Array<FileItem \>) => boolean\|Promise||1.31.0|
@@ -1338,6 +1339,7 @@ import { IconUpload } from '@douyinfe/semi-icons';
 |onOpenFileDialog | 打开系统文系统文件选择弹窗时触发 | () => void |  | 1.18.0 |
 |onPreviewClick | 点击文件卡片时的回调 | (fileItem: FileItem) => void |  | 1.8.0 |
 |onProgress | 上传文件时的回调 | (percent: number, file: [File](https://developer.mozilla.org/zh-CN/docs/Web/API/File), fileList: Array<FileItem\>) => void |  |  |
+|onPastingError | addOnPasting为true时,粘贴读取失败时的回调 | (Error\|PermissionState) |  | 2.43.0 |
 |onRemove | 移除文件的回调 | (currentFile: [File](https://developer.mozilla.org/zh-CN/docs/Web/API/File), fileList:Array<FileItem\>, currentFileItem: FileItem) => void |  |  |
 |onRetry | 上传重试的回调 | (file: <FileItem\>) => void |  | 1.18.0 |
 |onSizeError | 文件尺寸非法的回调 | (file:[File](https://developer.mozilla.org/zh-CN/docs/Web/API/File), fileList:Array<FileItem\>) => void |  |  |

+ 40 - 18
content/navigation/tree/index-en-US.md

@@ -1613,26 +1613,48 @@ import { Tree } from '@douyinfe/semi-ui';
 
 You could use `renderFullLabel` for advanced rendering to render the entire option on you own.
 
-```
-{
-    onClick: Function, // Click the callback of the entire row to control the expansion behavior and selection
-    onContextMenu: Function, // Callback for right-clicking the entire row
-    onDoubleClick: Function,  // Callback for double-clicking the entire row
-    className: strings, // Class name, including built-in styles such as indent, expand button, filter, disable, check, etc.
-    onExpand: Function, // Expand callback
-    data: object, // The original data of the row
-    level: number, // The level where the line is located, which can be used to customize the indentation value
-    style: object, // The style required for virtualization, if virtualization is used, the style must be assigned to the DOM element
-    onCheck: Function, // Multiple selection click callback
-    expandIcon: ReactNode, // Expand button
+The parameter types of renderFullLabel are as follows:
+
+```ts
+type RenderFullLabelProps = {
+    /* The original data of the row */
+    data: BasicTreeNodeData;
+    /* The level of the line can be used to customize the indentation value */
+    level: number;
+    /* The style required for virtualization, if virtualization is used, the style must be assigned to the DOM element */
+    style: any;
+    /* Class name, including built-in styles such as indentation, expand button, filter, disable, select, etc. */
+    className: string;
+    /* icon of Expand button */
+    expandIcon: any;
+    /* Selected state */
     checkStatus: {
-        checked: Boolean, // Whether it is selected in the multi-select state
-        halfChecked: Boolean, // Whether half-selected in multi-select state
-    },
+        /* Whether to select in the multi-select state */
+        checked: boolean;
+        /* Whether to half-select in the multi-select state */
+        halfChecked: boolean
+    };
+    /* Expand status */
     expandStatus: {
-        expanded,
-        loading,
-    },
+        /* Has it been expanded */
+        expanded: boolean;
+        /* Is it unfolding */
+        loading: boolean
+    };
+    /* Whether the node meets the search conditions */
+    filtered: boolean | undefined;
+    /* Current search box input */
+    searchWord: string | undefined;
+    /* Click the callback of the entire row to control the expansion behavior and selection */
+    onClick: (e: MouseEvent) => void;
+    /* Multi-select click callback */
+    onCheck: (e: MouseEvent) => void;
+    /* Right-click the callback for the entire row */
+    onContextMenu: (e: MouseEvent) => void; 
+    /* Double-click the entire line of callback */
+    onDoubleClick: (e: MouseEvent) => void;
+    /* 展开回调 */
+    onExpand: (e: MouseEvent) => void;
 }
 ```
 

+ 45 - 0
content/navigation/tree/index.md

@@ -1638,6 +1638,51 @@ import { Tree } from '@douyinfe/semi-ui';
 
 Tree 组件的 api 支持了大部分的渲染需求,但是如果有非常特殊的定制要求的话,可以使用 `renderFullLabel` 来接管整行 option 的渲染效果。
 
+renderFullLabel 参数类型如下:
+
+```ts
+type RenderFullLabelProps = {
+    /* 节点数据 */
+    data: BasicTreeNodeData;
+    /* 层级 */
+    level: number;
+    /* 虚拟化情况下,该 style 必须给到 DOM 节点上*/
+    style: any;
+     /* 样式类名,包括内置样式,如缩进、展开按钮、过滤器、禁用、选择等。 */
+    className: string;
+    /* 展开按钮 */
+    expandIcon: any;
+    /* 选中状态 */
+    checkStatus: {
+        /* 是否选中 */
+        checked: boolean;
+        /* 是否半选 */
+        halfChecked: boolean
+    };
+    /* 展开状态 */
+    expandStatus: {
+        /* 是否展开 */
+        expanded: boolean;
+        /* 是否加载中 */
+        loading: boolean
+    };
+    /* 该节点是否符合筛选条件 */
+    filtered: boolean | undefined;
+    /* 当前搜索框输入值 */
+    searchWord: string | undefined;
+    /* 点击回调 */
+    onClick: (e: MouseEvent) => void;
+    /* 多选点击回调 */
+    onCheck: (e: MouseEvent) => void;
+    /* 右键点击回调 */
+    onContextMenu: (e: MouseEvent) => void; 
+    /* 二次点击回调 */
+    onDoubleClick: (e: MouseEvent) => void;
+    /* 展开回调 */
+    onExpand: (e: MouseEvent) => void;
+}
+```
+
 <Notice type="primary" title="注意事项">
 <div>如果开启了虚拟化,需要将 style (虚拟化相关样式)赋予给渲染的 DOM 节点</div>
 </Notice>

+ 16 - 5
content/start/changelog/index-en-US.md

@@ -16,6 +16,14 @@ Version:Major.Minor.Patch (follow the **Semver** specification)
 
 ---
 
+#### 🎉 2.43.0-beta.0 (2023-09-04)
+- 【Feat】
+    - The renderFullLabel callback of Tree and TreeSelect adds filtered and searchWord parameters
+    - Upload new API: addOnPasting,  supports reading the pictures in the pasteboard and automatically adding to fileList [@ChuTingzj](https://github.com/ChuTingzj)  [#1612 ](https://github.com/DouyinFE/semi-design/issues/1612)
+- 【Fix】
+    - Fixed an issue where the Item click did not take effect in very few scenarios when nesting Dropdowns.
+    - fixed resizable table onHeaderCell bug  [#1796](https://github.com/DouyinFE/semi-design/issues/1796)
+
 #### 🎉 2.42.2 (2023-08-28)
 - 【Fix】
     - Fix the problem that when the image file name has a query parameter, the image cannot be opened due to the wrong file name after downloading [@nekocode](https://github.com/nekocode) [#1782](https://github.com/DouyinFE/semi-design/pull/1784)
@@ -246,12 +254,15 @@ Version:Major.Minor.Patch (follow the **Semver** specification)
 - 【Style】
   - The default word wrap style of Table text is changed from break-all to break-word  [#1318](https://github.com/DouyinFE/semi-design/issues/1318)
   - Changed the spacing between icon and text in BreadCrumb from 8px to 4px(Affects v2.0.0~v2.33.1)
-  
+- 【Breaking Change】
+  - **In order to solve the word wrapping problem, the Table word break style is modified from break-all to break-word. If a column of a non-fixed table is set to a fixed width, the cell text in this column will originally be folded, but will now be stretched and displayed, causing the width of other columns to be reduced** [#1318](https://github.com/DouyinFE/semi-design/issues/1318)
+
+
 #### 🎉 2.33.1 (2023-04-21)
--【Fix】
-     - Fixed the issue that Popover StopPropagation did not stop the bubbling of the focus and blur triggered in the Portal layer [#1557](https://github.com/DouyinFE/semi-design/pull/1559)
-     - Fix the problem of Input reporting error about noBg props, the scope of influence is 2.33.0-beta.0 - 2.33.0
-     - Fix Fix the indent problem when Table hideExpandedColumn is false [#1556](https://github.com/DouyinFE/semi-design/issues/1556)
+- 【Fix】
+    - Fixed the issue that Popover StopPropagation did not stop the bubbling of the focus and blur triggered in the Portal layer [#1557](https://github.com/DouyinFE/semi-design/pull/1559)
+    - Fix the problem of Input reporting error about noBg props, the scope of influence is 2.33.0-beta.0 - 2.33.0
+    - Fix Fix the indent problem when Table hideExpandedColumn is false [#1556](https://github.com/DouyinFE/semi-design/issues/1556)
 
 #### 🎉 2.33.0 (2023-04-14)
 - 【Fix】

+ 10 - 0
content/start/changelog/index.md

@@ -13,6 +13,14 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
 -   修订版本号(patch):仅会进行 bugfix,发布时间不限
 -   不同版本间的详细关系,可查阅 [FAQ](/zh-CN/start/faq)
 
+#### 🎉 2.43.0-beta.0 (2023-09-04)
+- 【Feat】
+    - Tree 和 TreeSelect 的 renderFullLabel 回调增加 filtered 和 searchWord 参数
+    - Upload 新增API:addOnPasting,支持读取粘贴板中的图片,自动添加到 fileList中 [@ChuTingzj](https://github.com/ChuTingzj)  [#1612](https://github.com/DouyinFE/semi-design/issues/1612)
+- 【Fix】
+    - 修复嵌套 Dropdown 时,Item 的点击在极个别场景不生效的问题。
+    - 修复 resizable Table onHeaderCell 失效问题 [#1796](https://github.com/DouyinFE/semi-design/issues/1796)
+
 #### 🎉 2.42.2 (2023-08-28)
 - 【Fix】
     - 修复当 Image 文件名称带 query 参数时候,图片下载后因文件名错误无法打开问题 [@nekocode](https://github.com/nekocode) [#1782](https://github.com/DouyinFE/semi-design/pull/1784)
@@ -250,6 +258,8 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
   - Typography resize后可能会丢失省略 [@marshcat0](https://github.com/marshcat0)
   - Typography resize后展开状态可能会被变成折叠 [@marshcat0](https://github.com/marshcat0)
   - Typography 展开按钮可能会在不需要折叠时出现 [@marshcat0](https://github.com/marshcat0)
+- 【Breaking Change】
+  - **为了解决单词换行问题,Table 换行样式从 break-all 修改为 break-word。如果非 fixed 表格某列设置固定了宽度,原来这一列的单元格文本会折行,现在会撑开展示,导致其他列宽度减少** [#1318](https://github.com/DouyinFE/semi-design/issues/1318)
 
 #### 🎉 2.33.1 (2023-04-21)
 - 【Fix】

+ 1 - 1
lerna.json

@@ -1,5 +1,5 @@
 {
     "useWorkspaces": true,
     "npmClient": "yarn",
-    "version": "2.42.4"
+    "version": "2.43.0-beta.0"
 }

+ 3 - 3
packages/semi-animation-react/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-react",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "motion library for semi-ui-react",
     "keywords": [
         "motion",
@@ -25,8 +25,8 @@
         "prepublishOnly": "npm run build:lib"
     },
     "dependencies": {
-        "@douyinfe/semi-animation": "2.42.4",
-        "@douyinfe/semi-animation-styled": "2.42.4",
+        "@douyinfe/semi-animation": "2.43.0-beta.0",
+        "@douyinfe/semi-animation-styled": "2.43.0-beta.0",
         "classnames": "^2.2.6"
     },
     "devDependencies": {

+ 1 - 1
packages/semi-animation-styled/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-styled",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "semi styled animation",
     "keywords": [
         "semi",

+ 1 - 1
packages/semi-animation/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "animation base library for semi-ui",
     "keywords": [
         "animation",

+ 1 - 1
packages/semi-eslint-plugin/package.json

@@ -1,6 +1,6 @@
 {
     "name": "eslint-plugin-semi-design",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "semi ui eslint plugin",
     "keywords": [
         "semi",

+ 2 - 2
packages/semi-foundation/package.json

@@ -1,13 +1,13 @@
 {
     "name": "@douyinfe/semi-foundation",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "",
     "scripts": {
         "build:lib": "node ./scripts/compileLib.js",
         "prepublishOnly": "npm run build:lib"
     },
     "dependencies": {
-        "@douyinfe/semi-animation": "2.42.4",
+        "@douyinfe/semi-animation": "2.43.0-beta.0",
         "async-validator": "^3.5.0",
         "classnames": "^2.2.6",
         "date-fns": "^2.29.3",

+ 5 - 1
packages/semi-foundation/tree/foundation.ts

@@ -156,7 +156,11 @@ export interface BasicRenderFullLabelProps {
         expanded: boolean;
         /* Is it unfolding */
         loading: boolean
-    }
+    };
+    /* Whether the node meets the search conditions */
+    filtered: boolean | undefined;
+    /* Current search box input */
+    searchWord: string | undefined
 }
 
 export interface BasicSearchRenderProps {

+ 73 - 1
packages/semi-foundation/upload/foundation.ts

@@ -84,7 +84,12 @@ export interface UploadAdapter<P = Record<string, any>, S = Record<string, any>>
     notifyClear: () => void;
     notifyPreviewClick: (file: any) => void;
     notifyDrop: (e: any, files: Array<File>, fileList: Array<BaseFileItem>) => void;
-    notifyAcceptInvalid: (invalidFiles: Array<File>) => void
+    notifyAcceptInvalid: (invalidFiles: Array<File>) => void;
+    registerPastingHandler: (cb?: (params?: any) => void) => void;
+    unRegisterPastingHandler: () => void;
+    isMac: () => boolean;
+    notifyPastingError: (error: Error | PermissionStatus) => void
+    // notifyPasting: () => void; 
 }
 
 class UploadFoundation<P = Record<string, any>, S = Record<string, any>> extends BaseFoundation<UploadAdapter<P, S>, P, S> {
@@ -92,8 +97,19 @@ class UploadFoundation<P = Record<string, any>, S = Record<string, any>> extends
         super({ ...adapter });
     }
 
+    init(): void {
+        const { disabled, addOnPasting } = this.getProps();
+        if (addOnPasting && !disabled) {
+            this.bindPastingHandler();
+        }
+    }
+
     destroy() {
+        const { disabled, addOnPasting } = this.getProps();
         this.releaseMemory();
+        if (addOnPasting && !disabled) {
+            this.unbindPastingHandler();
+        }
     }
 
     getError({ action, xhr, message, fileName }: { action: string;xhr: XMLHttpRequest;message?: string;fileName: string }): XhrError {
@@ -847,6 +863,62 @@ class UploadFoundation<P = Record<string, any>, S = Record<string, any>> extends
     handlePreviewClick(fileItem: BaseFileItem): void {
         this._adapter.notifyPreviewClick(fileItem);
     }
+
+    readFileFromClipboard(clipboardItems) {
+        for (const clipboardItem of clipboardItems) {
+            for (const type of clipboardItem.types) {
+                // types maybe: text/plain, image/png, text/html
+                if (type.startsWith('image')) {
+                    clipboardItem.getType(type).then(blob => {
+                        return blob.arrayBuffer();
+                    }).then((buffer) => {
+                        const format = type.split('/')[1];
+                        const file = new File([buffer], `upload.${format}`, { type });
+                        this.handleChange([file]);
+                    });
+                }
+            }
+        }
+    }
+
+    handlePasting(e: any) {
+        const isMac = this._adapter.isMac();
+        const isCombineKeydown = isMac ? e.metaKey : e.ctrlKey;
+
+        if (isCombineKeydown && e.code === 'KeyV' && e.target === document.body) {
+            // https://github.com/microsoft/TypeScript/issues/33923
+            const permissionName = "clipboard-read" as PermissionName;
+            // The main thread should not be blocked by clipboard, so callback writing is required here. No await here
+            navigator.permissions
+                .query({ name: permissionName })
+                .then(result => {
+                    console.log(result);
+                    if (result.state === 'granted' || result.state === 'prompt') {
+                        // user has authorized or will authorize
+                        navigator.clipboard
+                            .read()
+                            .then(clipboardItems => {
+                                // Process the data read from the pasteboard
+                                // Check the returned data type to determine if it is image data, and process accordingly
+                                this.readFileFromClipboard(clipboardItems);
+                            });
+                    } else {
+                        this._adapter.notifyPastingError(result);
+                    }
+                })
+                .catch(error => {
+                    this._adapter.notifyPastingError(error);
+                });
+        }
+    }
+
+    bindPastingHandler(): void {
+        this._adapter.registerPastingHandler((event) => this.handlePasting(event));
+    }
+
+    unbindPastingHandler() {
+        this._adapter.unRegisterPastingHandler();
+    }
 }
 
 export default UploadFoundation;

+ 1 - 1
packages/semi-icons/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-icons",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "semi icons",
     "keywords": [
         "semi",

+ 1 - 1
packages/semi-illustrations/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-illustrations",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "semi illustrations",
     "keywords": [
         "semi",

+ 2 - 2
packages/semi-next/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-next",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "Plugin that support Semi Design in Next.js",
     "author": "伍浩威 <[email protected]>",
     "homepage": "",
@@ -23,7 +23,7 @@
         "typescript": "^4"
     },
     "dependencies": {
-        "@douyinfe/semi-webpack-plugin": "2.42.4"
+        "@douyinfe/semi-webpack-plugin": "2.43.0-beta.0"
     },
     "gitHead": "eb34a4f25f002bb4cbcfa51f3df93bed868c831a"
 }

+ 1 - 1
packages/semi-rspack/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-rspack-plugin",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "",
     "homepage": "",
     "license": "MIT",

+ 1 - 1
packages/semi-scss-compile/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-scss-compile",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "compile semi scss to css",
     "author": "[email protected]",
     "license": "MIT",

+ 1 - 1
packages/semi-theme-default/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-theme-default",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "semi-theme-default",
     "keywords": [
         "semi-theme",

+ 7 - 7
packages/semi-ui/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-ui",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.",
     "main": "lib/cjs/index.js",
     "module": "lib/es/index.js",
@@ -20,12 +20,12 @@
         "@dnd-kit/core": "^6.0.8",
         "@dnd-kit/sortable": "^7.0.2",
         "@dnd-kit/utilities": "^3.2.1",
-        "@douyinfe/semi-animation": "2.42.4",
-        "@douyinfe/semi-animation-react": "2.42.4",
-        "@douyinfe/semi-foundation": "2.42.4",
-        "@douyinfe/semi-icons": "2.42.4",
-        "@douyinfe/semi-illustrations": "2.42.4",
-        "@douyinfe/semi-theme-default": "2.42.4",
+        "@douyinfe/semi-animation": "2.43.0-beta.0",
+        "@douyinfe/semi-animation-react": "2.43.0-beta.0",
+        "@douyinfe/semi-foundation": "2.43.0-beta.0",
+        "@douyinfe/semi-icons": "2.43.0-beta.0",
+        "@douyinfe/semi-illustrations": "2.43.0-beta.0",
+        "@douyinfe/semi-theme-default": "2.43.0-beta.0",
         "async-validator": "^3.5.0",
         "classnames": "^2.2.6",
         "copy-text-to-clipboard": "^2.1.1",

+ 2 - 0
packages/semi-ui/tree/treeNode.tsx

@@ -366,6 +366,8 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
                 expanded,
                 loading,
             },
+            filtered,
+            searchWord: rest.keyword,
         };
 
         const dragProps = {

+ 26 - 0
packages/semi-ui/upload/_story/upload.stories.jsx

@@ -1248,3 +1248,29 @@ export const PreviewFallback = () => <PreviewFallbackDemo></PreviewFallbackDemo>
 PreviewFallback.story = {
   name: 'preview other type',
 };
+
+
+export const PastingDemo = () => {
+  return (
+    <div style={{ width: 800, height: 500 }}>
+      <Upload
+        addOnPasting
+        action={action}
+        // {...commonProps}
+        onChange={(e) => console.log(e)}
+      >
+        <Button>点击或粘贴上传</Button>
+      </Upload>
+      <Button
+        type='danger'
+        theme='solid'
+        onClick={() => {
+          navigator.clipboard
+          .write([])
+          .then(() => alert('clear'))
+          .catch(error => console.log(error))
+      }}>清空clipboard</Button>
+    </div>
+
+  )
+};

+ 23 - 1
packages/semi-ui/upload/index.tsx

@@ -67,6 +67,7 @@ export interface UploadProps {
     dragMainText?: ReactNode;
     dragSubText?: ReactNode;
     draggable?: boolean;
+    addOnPasting?: boolean;
     fileList?: Array<FileItem>;
     fileName?: string;
     headers?: Record<string, any> | ((file: File) => Record<string, string>);
@@ -83,6 +84,7 @@ export interface UploadProps {
     onClear?: () => void;
     onDrop?: (e: Event, files: Array<File>, fileList: Array<FileItem>) => void;
     onError?: (e: CustomError, file: File, fileList: Array<FileItem>, xhr: XMLHttpRequest) => void;
+    onPastingError?: (error: Error | PermissionStatus) => void;
     onExceed?: (fileList: Array<File>) => void;
     onFileChange?: (files: Array<File>) => void;
     onOpenFileDialog?: () => void;
@@ -129,6 +131,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
     static propTypes = {
         accept: PropTypes.string, // Limit allowed file types
         action: PropTypes.string.isRequired,
+        addOnPasting: PropTypes.bool,
         afterUpload: PropTypes.func,
         beforeClear: PropTypes.func,
         beforeRemove: PropTypes.func,
@@ -169,6 +172,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
         onRetry: PropTypes.func,
         onSizeError: PropTypes.func, // Callback with invalid file size
         onSuccess: PropTypes.func,
+        onPastingError: PropTypes.func,
         previewFile: PropTypes.func, // Custom preview
         prompt: PropTypes.node,
         promptPosition: PropTypes.oneOf<UploadProps['promptPosition']>(strings.PROMPT_POSITION),
@@ -214,6 +218,7 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
         onRetry: noop,
         onSizeError: noop,
         onSuccess: noop,
+        onPastingError: noop,
         promptPosition: 'right' as const,
         showClear: true,
         showPicInfo: false,
@@ -294,6 +299,19 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
                     replaceInputKey: Math.random(),
                 }));
             },
+            isMac: (): boolean => {
+                return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
+            },
+            registerPastingHandler: (cb?: (e: KeyboardEvent) => void): void => {
+                document.body.addEventListener('keydown', cb);
+                this.pastingCb = cb;
+            },
+            unRegisterPastingHandler: (): void => {
+                if (this.pastingCb) {
+                    document.body.removeEventListener('keydown', this.pastingCb);
+                }
+            },
+            notifyPastingError: (error): void => this.props.onPastingError(error),
             updateDragAreaStatus: (dragAreaStatus: string): void =>
                 this.setState({ dragAreaStatus } as { dragAreaStatus: 'default' | 'legal' | 'illegal' }),
             notifyChange: ({ currentFile, fileList }): void => this.props.onChange({ currentFile, fileList }),
@@ -310,6 +328,11 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
     foundation: UploadFoundation;
     inputRef: RefObject<HTMLInputElement> = null;
     replaceInputRef: RefObject<HTMLInputElement> = null;
+    pastingCb: null | ((params: any) => void);
+
+    componentDidMount(): void {
+        this.foundation.init();
+    }
 
     componentWillUnmount(): void {
         this.foundation.destroy();
@@ -739,5 +762,4 @@ class Upload extends BaseComponent<UploadProps, UploadState> {
         );
     }
 }
-
 export default Upload;

+ 1 - 1
packages/semi-webpack/package.json

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-webpack-plugin",
-    "version": "2.42.4",
+    "version": "2.43.0-beta.0",
     "description": "",
     "author": "伍浩威 <[email protected]>",
     "homepage": "",

+ 170 - 170
sitemap.xml

@@ -2,22 +2,22 @@
 <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
     <url>
         <loc>https://juejin.cn/post/7267418854124699702</loc>
-        <lastmod>2023-09-05T02:56:21.695Z</lastmod>
+        <lastmod>2023-09-04T12:16:50.108Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://medium.com/front-end-weekly/how-we-test-semi-design-component-libraries-64b854f63b65</loc>
-        <lastmod>2023-09-05T02:56:20.597Z</lastmod>
+        <lastmod>2023-09-04T12:16:49.579Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://mp.weixin.qq.com/s/noHoWRuA25PgqFNcurhIUA</loc>
-        <lastmod>2023-09-05T02:56:23.771Z</lastmod>
+        <lastmod>2023-09-04T12:16:51.799Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://mp.weixin.qq.com/s/O3js-SZDNPEOjGxh-aAkbw</loc>
-        <lastmod>2023-09-05T02:56:23.353Z</lastmod>
+        <lastmod>2023-09-04T12:16:51.553Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
@@ -670,852 +670,852 @@
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/introduction/case</loc>
-        <lastmod>2023-09-05T02:56:32.800Z</lastmod>
+        <lastmod>2023-09-04T12:16:58.909Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/introduction/changelog</loc>
-        <lastmod>2023-09-05T02:56:32.785Z</lastmod>
+        <lastmod>2023-09-04T12:16:58.906Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/introduction/faq</loc>
-        <lastmod>2023-09-05T02:56:33.020Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.082Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/introduction/roadmap</loc>
-        <lastmod>2023-09-05T02:56:33.587Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.201Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/introduction/start</loc>
-        <lastmod>2023-09-05T02:56:33.266Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.085Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/plugin/changeThemeModel</loc>
-        <lastmod>2023-09-05T02:56:33.274Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.446Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/plugin/genDocs</loc>
-        <lastmod>2023-09-05T02:56:33.558Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.846Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/plugin/intallPlugin</loc>
-        <lastmod>2023-09-05T02:56:33.897Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.057Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/plugin/syncInFigma</loc>
-        <lastmod>2023-09-05T02:56:33.695Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.102Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/plugin/writeTheme</loc>
-        <lastmod>2023-09-05T02:56:33.549Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.109Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/themeStore/fork</loc>
-        <lastmod>2023-09-05T02:56:33.794Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.216Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/themeStore/preview</loc>
-        <lastmod>2023-09-05T02:56:33.781Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.076Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/themeStore/publish</loc>
-        <lastmod>2023-09-05T02:56:34.136Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.232Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/addPartner</loc>
-        <lastmod>2023-09-05T02:56:34.025Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.246Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/componentToken</loc>
-        <lastmod>2023-09-05T02:56:34.346Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.331Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/globalToken</loc>
-        <lastmod>2023-09-05T02:56:34.595Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.345Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/use</loc>
-        <lastmod>2023-09-05T02:56:34.491Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.556Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/web_publish</loc>
-        <lastmod>2023-09-05T02:56:34.462Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.431Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm_manual/zh-CN/web/web_start</loc>
-        <lastmod>2023-09-05T02:56:34.490Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.610Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.65</scm>
     </url>
     <url>
         <loc>https://semi.design/dsm/landing</loc>
-        <lastmod>2023-09-05T02:56:34.489Z</lastmod>
+        <lastmod>2023-09-04T12:16:59.636Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.147</scm>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/divider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/grid</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/icon</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/layout</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/space</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/tokens</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/typography</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/banner</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/notification</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/popconfirm</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/progress</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/skeleton</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/spin</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/toast</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/autocomplete</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/button</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/cascader</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/checkbox</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/datepicker</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/form</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/input</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/inputnumber</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/radio</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/rating</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/select</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/slider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/switch</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/taginput</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/timepicker</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/transfer</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/treeselect</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/upload</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/anchor</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/backtop</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/breadcrumb</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/navigation</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/pagination</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/steps</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/tabs</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/tree</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/other/configprovider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/other/locale</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/avatar</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/badge</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/calendar</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/card</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/carousel</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/collapse</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/collapsible</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/descriptions</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/dropdown</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/empty</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/highlight</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/image</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/list</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/modal</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/overflowlist</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/popover</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/scrolllist</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/sidesheet</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/table</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/tag</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/timeline</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/tooltip</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/accessibility</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/changelog</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/customize-theme</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/dark-mode</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/faq</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/getting-started</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/introduction</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/overview</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/update-to-v2</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/divider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/grid</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/icon</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/layout</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/space</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/tokens</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/typography</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/banner</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/notification</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/popconfirm</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/progress</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/skeleton</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/spin</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/toast</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/autocomplete</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/button</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/cascader</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/checkbox</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/datepicker</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/form</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/input</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/inputnumber</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/radio</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/rating</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/select</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/slider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/switch</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/taginput</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/timepicker</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/transfer</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/treeselect</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/upload</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/anchor</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/backtop</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/breadcrumb</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/navigation</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/pagination</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/steps</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/tabs</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/tree</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/other/configprovider</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/other/locale</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/avatar</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/badge</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/calendar</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/card</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/carousel</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/collapse</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/collapsible</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/descriptions</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/dropdown</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/empty</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/highlight</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/image</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/list</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/modal</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/overflowlist</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/popover</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/scrolllist</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/sidesheet</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/table</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/tag</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/timeline</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/tooltip</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/accessibility</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/changelog</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/customize-theme</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/dark-mode</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/faq</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/getting-started</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/introduction</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/overview</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/update-to-v2</loc>
-        <lastmod>2023-09-04T11:45:11.000Z</lastmod>
+        <lastmod>2023-09-04T11:54:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
 </urlset>

+ 9 - 9
src/locale/zh-CN.js

@@ -81,27 +81,27 @@ const appLocale = {
         "home_banner_description": "由抖音前端与 UED 团队维护,易于定制的现代化设计系统,帮助设计师与开发者打造高质量产品。",
         "start_using": "开始使用",
         // page two: products
-        "now_serving_100_000": "已服务 10 万 + 用户",
+        "now_serving_100_000": "已服务 10 万 + 用户",
         // page three: feature
-        "feature_title": "完善的开发者体验",
+        "feature_title": "先进的开发者体验",
         "feature_subtitle": "开箱即用的底层能力支持,为开发者节省精力,避免重造",
         "feature_FA": "易于贡献的 FA 架构",
-        "feature_FA_description": "Semi 基于 FA 架构设计,主逻辑抽为 Foundation 包,易于迁移到其他框架",
-        "feature_a11y": "完备的无障碍支持",
-        "feature_a11y_description": "Semi 遵循 W3C 标准为所有组件提供键盘交互、焦点管理和语义化",
+        "feature_FA_description": "Semi 基于 FA 架构设计,主逻辑抽为 Foundation 包,源码清晰已读,易于迁移到其他框架",
+        "feature_a11y": "A11y 无障碍友好",
+        "feature_a11y_description": "Semi 遵循 W3C 标准为所有组件提供键盘交互、焦点管理和语义化支持",
         "feature_language": "国际化与多语言",
-        "feature_language_description": "Semi 提供完备的多语言、多时区、RTL支持,轻松打造全球化应用",
+        "feature_language_description": "Semi 提供完备的多语言、多时区、RTL支持,助你轻松打造全球化应用",
         "feature_live_code": "Live Code 组件",
         "feature_live_code_description": "LiveCode 允许你使用在线代码编辑器即时演示你的 UI 组件",
         "feature_test": "稳定的质量保障",
-        "feature_test_description": "Semi 使用了单元测试等多种方法保证组件的稳定和质量,代码覆盖率达到 90%",
+        "feature_test_description": "Semi 稳定迭代4年+,使用了单元测试、E2E测试、视觉对比测试等多种方法保证组件的稳定和质量,测试覆盖率达到 90%",
         "feature_SSR": "支持 SSR",
         "feature_SSR_description": "Semi 组件库支持 SSR 场景,可以在 Next.js 、 Gatsby 和 Remix 等框架中使用",
         "feature_D2C": "设计稿转代码",
-        "feature_D2C_description": "Semi 提供强大的 design to code能力,3-5s,一键点击,从 Figma 设计稿生成真实代码",
+        "feature_D2C_description": "Semi 提供高效的 design to code 能力,3-5s,一键点击,从 Figma 设计稿生成真实代码",
         // page four: theme
         "home.theme": "百变主题",
-        "home.theme.desc": "快速克隆或深度定制,灵活调配符合品牌调性的设计风格",
+        "home.theme.desc": "提供高达2700+ Design Token,快速克隆或深度定制,灵活调配符合品牌调性的设计风格",
         // page five: DSM
         "semi_dsm": "Semi 设计系统管理",
         "powerful_theme_editor__real_time_effect__one_click_synchronization_of_design_too_d77f5776bf126331e801d6d6aa0146f2": "强大的主题编辑器,实时生效,设计工具一键同步",