Jelajahi Sumber

Merge branch 'main' into release

pointhalo 1 tahun lalu
induk
melakukan
33ff4c734c
70 mengubah file dengan 940 tambahan dan 629 penghapusan
  1. 8 8
      content/basic/typography/index.md
  2. 10 10
      content/input/checkbox/index.md
  3. 3 5
      content/input/radio/index-en-US.md
  4. 10 12
      content/input/radio/index.md
  5. 2 2
      content/navigation/tabs/index.md
  6. 1 1
      content/other/locale/index.md
  7. 4 4
      content/show/card/index.md
  8. 14 13
      content/show/collapse/index-en-US.md
  9. 12 11
      content/show/collapse/index.md
  10. 12 12
      content/show/collapsible/index-en-US.md
  11. 13 13
      content/show/collapsible/index.md
  12. 2 2
      content/show/list/index.md
  13. 1 1
      content/show/modal/index.md
  14. 49 9
      content/show/table/index-en-US.md
  15. 52 13
      content/show/table/index.md
  16. 1 1
      content/show/tooltip/index.md
  17. 16 1
      content/start/changelog/index-en-US.md
  18. 17 1
      content/start/changelog/index.md
  19. 10 0
      cypress/e2e/select.spec.js
  20. 1 1
      lerna.json
  21. 3 3
      packages/semi-animation-react/package.json
  22. 1 1
      packages/semi-animation-styled/package.json
  23. 1 1
      packages/semi-animation/package.json
  24. 1 1
      packages/semi-eslint-plugin/package.json
  25. 13 3
      packages/semi-foundation/form/form.scss
  26. 2 2
      packages/semi-foundation/package.json
  27. 1 0
      packages/semi-foundation/radio/radio.scss
  28. 12 1
      packages/semi-foundation/select/foundation.ts
  29. 2 1
      packages/semi-foundation/slider/foundation.ts
  30. 39 4
      packages/semi-foundation/tree/foundation.ts
  31. 1 1
      packages/semi-icons-lab/package.json
  32. 1 1
      packages/semi-icons/package.json
  33. 1 1
      packages/semi-illustrations/package.json
  34. 2 2
      packages/semi-next/package.json
  35. 1 1
      packages/semi-rspack/package.json
  36. 1 1
      packages/semi-scss-compile/package.json
  37. 1 1
      packages/semi-scss-compile/src/utils/generateSCSSMap.ts
  38. 24 1
      packages/semi-scss-compile/src/utils/writeFile.ts
  39. 1 1
      packages/semi-theme-default/package.json
  40. 1 1
      packages/semi-ui/_base/_story/index.stories.jsx
  41. 9 7
      packages/semi-ui/backtop/index.tsx
  42. 11 11
      packages/semi-ui/card/_story/card.stories.jsx
  43. 3 3
      packages/semi-ui/card/_story/card.stories.tsx
  44. 14 0
      packages/semi-ui/cascader/__test__/cascader.test.js
  45. 9 4
      packages/semi-ui/cascader/index.tsx
  46. 30 30
      packages/semi-ui/checkbox/_story/checkbox.stories.jsx
  47. 3 2
      packages/semi-ui/collapse/collapse-context.tsx
  48. 29 11
      packages/semi-ui/collapse/index.tsx
  49. 2 0
      packages/semi-ui/collapse/item.tsx
  50. 33 15
      packages/semi-ui/collapsible/__test__/collapsible.test.js
  51. 71 0
      packages/semi-ui/collapsible/_story/__snapshots__/collapsible.stories.tsx.snap
  52. 10 2
      packages/semi-ui/collapsible/index.tsx
  53. 2 2
      packages/semi-ui/form/_story/FieldProps/name.jsx
  54. 2 2
      packages/semi-ui/form/_story/demo.jsx
  55. 7 7
      packages/semi-ui/list/_story/list.stories.jsx
  56. 1 1
      packages/semi-ui/locale/_story/locale.stories.jsx
  57. 7 7
      packages/semi-ui/package.json
  58. 74 50
      packages/semi-ui/radio/_story/radio.stories.jsx
  59. 48 1
      packages/semi-ui/select/_story/select.stories.jsx
  60. 2 2
      packages/semi-ui/table/_story/LinkedScroll/index.jsx
  61. 2 2
      packages/semi-ui/tabs/_story/tabs.stories.jsx
  62. 14 0
      packages/semi-ui/tree/__test__/treeMultiple.test.js
  63. 1 1
      packages/semi-ui/tree/treeNode.tsx
  64. 41 41
      packages/semi-ui/typography/_story/typography.stories.jsx
  65. 9 9
      packages/semi-ui/typography/_story/typography.stories.tsx
  66. 1 1
      packages/semi-webpack/package.json
  67. 1 0
      packages/semi-webpack/src/componentName.ts
  68. 154 154
      sitemap.xml
  69. 0 1
      test.txt
  70. 3 115
      yarn.lock

+ 8 - 8
content/basic/typography/index.md

@@ -125,12 +125,12 @@ function Demo() {
         <div>
             <Title heading={5}>默认行距</Title>
             <Paragraph>
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
             <br />
             <Title heading={5}>宽松行距</Title>
             <Paragraph spacing="extended">
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
         </div>
     );
@@ -257,12 +257,12 @@ function Demo() {
         <div>
             <Text>正常文本</Text>
             <Paragraph spacing="extended">
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
             <br />
             <Text size='small'>小文本</Text>
             <Paragraph size='small'>
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
         </div>
     );
@@ -343,19 +343,19 @@ function Demo() {
             </Text>
             <br/>
             <Paragraph ellipsis={{ suffix: '小尾巴' }} style={{ width: 300 }}>
-                有后缀的情况:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+                有后缀的情况:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
             </Paragraph>
             <br/>
             <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
-                这是一个多行截断的例子:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                这是一个多行截断的例子:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
             <br/>
             <Paragraph ellipsis={{ rows: 3, showTooltip: { type: 'popover', opts: { style: { width: 300 } } } }} style={{ width: 300 }}>
-                多行截断,展示 Popover:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
             <br/>
             <Paragraph ellipsis={{ rows: 3, expandable: true, collapsible: true, collapseText: '折叠我吧', onExpand: (bool, e) => console.log(bool, e) }} style={{ width: 300 }}>
-                支持展开和折叠:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Paragraph>
             <br/>
             <Text 

+ 10 - 10
content/input/checkbox/index.md

@@ -52,11 +52,11 @@ import { Checkbox } from '@douyinfe/semi-ui';
 
 () => (
     <>
-        <Checkbox aria-label="Checkbox 示例" extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统'>
+        <Checkbox aria-label="Checkbox 示例" extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统'>
             Semi Design
         </Checkbox>
         <br/>
-        <Checkbox aria-label="Checkbox 示例" extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 400 }}>
+        <Checkbox aria-label="Checkbox 示例" extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 400 }}>
             Semi Design
         </Checkbox>
     </>
@@ -301,16 +301,16 @@ import { CheckboxGroup, Checkbox } from '@douyinfe/semi-ui';
 
 () => (
     <CheckboxGroup type='card' defaultValue={['1', '3']} direction='vertical' aria-label="CheckboxGroup 示例">
-        <Checkbox value={'1'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'1'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'2'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'2'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'3'} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'3'} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'4'} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'4'} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
     </CheckboxGroup>
@@ -328,16 +328,16 @@ import { CheckboxGroup, Checkbox } from '@douyinfe/semi-ui';
 
 () => (
     <CheckboxGroup type='pureCard' defaultValue={['1', '3']} direction='vertical' aria-label="CheckboxGroup 示例">
-        <Checkbox value={'1'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'1'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'2'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'2'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'3'} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'3'} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
-        <Checkbox value={'4'} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Checkbox value={'4'} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Checkbox>
     </CheckboxGroup>

+ 3 - 5
content/input/radio/index-en-US.md

@@ -37,8 +37,6 @@ import { Radio } from '@douyinfe/semi-ui';
 
 You can use `extra` to add extra information, which can be any type of ReactNode.
 
-> `extra` >= v0.25.0
-
 ```jsx live=true
 import React from 'react';
 import { Radio } from '@douyinfe/semi-ui';
@@ -379,18 +377,18 @@ class App extends React.Component {
 | addonId | id of addon node, aria-labelledby refers to this id, if not set, it will generate an id randomly  <br/>**provided after v2.11.0**                                 | string            |       |
 | addonStyle | inline style of content wrapper<br/>**provided after v1.16.0** | object |  |
 | aria-label      | Label of Radio                                                            | string           | -  |
-| name         | The `name` attribute passed to `input[type="radio"]` in the Radio component, Radios with the same `name` belong to the same RadioGroup,The `name` attribute can refer to [MDN Radio](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input/radio#value)   | string         | -  |
 | autoFocus | Automatically focus the form control when the page is loaded | boolean | false |
 | checked | Specify whether it is currently selected | boolean | false |
-| type | Set the type of radio, one of `default`, `button`, `card`, `pureCard` <br/>**This api is provided after v2.18.0**| string | `default` |
 | className | Class name | string |  |
 | defaultChecked | Checked by default | boolean | false |
 | disabled | Disable the radio | boolean | false |
-| extra | Extra information displayed <br/>**provided after v0.25.0** | ReactNode | - |
+| extra | Extra information displayed | ReactNode | - |
 | extraId        | id of extra node. aria-describedby refers to this id, if not set, it will randomly generate an id <br/>**provided after v2.11.0**                     | ReactNode         | -      |
 | mode | In advanced mode, options can be clicked to uncheck, one of `advanced` | string | - |
+| name | The `name` attribute passed to `input[type="radio"]` in the Radio component, Radios with the same `name` belong to the same RadioGroup,The `name` attribute can refer to [MDN Radio](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input/radio#value)   | string         | -  |
 | preventScroll | Indicates whether the browser should scroll the document to display the newly focused element, acting on the focus method inside the component, excluding the component passed in by the user | boolean |  |  |
 | style | Inline style | CSSProperties |  |
+| type | Set the type of radio, one of `default`, `button`, `card`, `pureCard` <br/>**This api is provided after v2.18.0**| string | `default` |
 | value | Compared based on value to determine whether the option is selected | string \| number | - |
 | onChange | Callback function when the selected option changes | Function (e: Event) | - |
 | onMouseEnter | The callback function when the mouse moves into the option   | function(e:Event) | -   |

+ 10 - 12
content/input/radio/index.md

@@ -33,14 +33,12 @@ import { Radio } from '@douyinfe/semi-ui';
 
 通过`extra`设置辅助文本,可以是任意类型的 ReactNode
 
-> `extra`在 v0.25.0 后开始提供
-
 ```jsx live=true
 import React from 'react';
 import { Radio } from '@douyinfe/semi-ui';
 
 () => (
-    <Radio extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统" aria-label="单选示例" name="demo-radio-extra">
+    <Radio extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统" aria-label="单选示例" name="demo-radio-extra">
         Semi Design
     </Radio>
 );
@@ -196,13 +194,13 @@ import { RadioGroup, Radio } from '@douyinfe/semi-ui';
 
 () => (
     <RadioGroup type='card' defaultValue={2} direction='vertical' aria-label="单选组合示例" name="demo-radio-group-card">
-        <Radio value={1} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={1} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
-        <Radio value={2} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={2} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
-        <Radio value={3} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={3} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
     </RadioGroup>
@@ -220,13 +218,13 @@ import { RadioGroup, Radio } from '@douyinfe/semi-ui';
 
 () => (
     <RadioGroup type='pureCard' defaultValue={2} direction='vertical' aria-label="单选组合示例" name="demo-radio-group-pureCard">
-        <Radio value={1} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={1} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
-        <Radio value={2} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={2} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
-        <Radio value={3} extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+        <Radio value={3} extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
             单选框标题
         </Radio>
     </RadioGroup>
@@ -325,18 +323,18 @@ class App extends React.Component {
 | addonId | addon 节点 id,aria-labelledby 指向这个 id,若无设置会随机生成一个 id  <br/>**v2.11.0 后提供**                                 | string            |       |
 | addonStyle     | 包裹内容容器的内联样式  <br/>**v1.16.0 后提供**                                 | CSSProperties     |       |
 | aria-label      | Radio 的 label                                                            | string           | -  |
-| name         | Radio组件中`input[type="radio"]`的`name`属性,具有相同`name`的Radio属于同一个RadioGroup,`name`属性可参考[MDN Radio](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/radio#%E5%80%BC)                              | string         | -  |
 | autoFocus      | 自动获取焦点                                                            | boolean           | false  |
 | checked        | 指定当前是否选中                                                         | boolean           | false  |
-|type            |设置 radio的样式类型,可选值为:`default`、`button`、`card`、`pureCard` <br/>**该 api 在 v2.18.0 后提供**    |string|`default`|
 | className      | 样式类名                                                                | string            |        |
 | defaultChecked | 初始是否选中                                                             | boolean           | false  |
 | disabled       | 禁选单选框                                                              |boolean            | false    |
-| extra          | 副文本,只对type='default'生效<br/>**v0.25.0 后提供**                     | ReactNode         | -      |
+| extra          | 副文本,只对type='default'生效<br/>                                      | ReactNode         | -      |
 | extraId        | 副文本的 id,aria-describedby 指向这个 id,若无设置会随机生成一个 id <br/>**v2.11.0 后提供**                     | ReactNode         | -      |
 | mode           | 高级和普通模式,高级模式可以在 checked 时点击变成 unchecked,可选值 advanced   | string            | -      |
+| name         | Radio组件中`input[type="radio"]`的`name`属性,具有相同`name`的Radio属于同一个RadioGroup,`name`属性可参考 [MDN Radio](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/Input/radio#%E5%80%BC)                              | string         | -  |
 | preventScroll | 指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法 | boolean |  |  |
 | style          | 内联样式                                                                 | CSSProperties    |        |
+| type            |设置 radio的样式类型,可选值为:`default`、`button`、`card`、`pureCard` <br/>**该 api 在 v2.18.0 后提供**    |string|`default`|
 | value          | 根据 value 进行比较,判断是否选中                                          | string \| number               | -      |
 | onChange       | 选项变化时的回调函数                                                      | function(e:Event) | -      |
 | onMouseEnter   | 鼠标移入选项时的回调函数                                                   | function(e:Event) | -      |

+ 2 - 2
content/navigation/tabs/index.md

@@ -37,7 +37,7 @@ import { Tabs, TabPane } from '@douyinfe/semi-ui';
             <TabPane tab="文档" itemKey="1">
                 <h3>文档</h3>
                 <p style={{ lineHeight: 1.8 }}>
-                    Semi Design 是由互娱社区前端团队与 UED
+                    Semi Design 是由抖音前端团队与 UED
                     团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                     Web 应用。
                 </p>
@@ -260,7 +260,7 @@ class App extends React.Component {
                         <div style={{ padding: '0 24px' }}>
                             <h3>文档</h3>
                             <p style={{ lineHeight: 1.8 }}>
-                                Semi Design 是由互娱社区前端团队与 UED
+                                Semi Design 是由抖音前端团队与 UED
                                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                                 Web 应用。
                             </p>

+ 1 - 1
content/other/locale/index.md

@@ -376,7 +376,7 @@ class I18nDemo extends React.Component {
                     <Typography.Paragraph copyable>Click to copy text.</Typography.Paragraph>
                     <h5>Typography - Collapsible</h5>
                     <Typography.Paragraph ellipsis={{ rows: 3, expandable: true, collapsible: true }} style={{ width: 300 }}>
-                        支持展开和折叠:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                        支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
                     </Typography.Paragraph>
                     <h5>Transfer</h5>
                     <Transfer

+ 4 - 4
content/show/card/index.md

@@ -36,7 +36,7 @@ function Demo() {
                 </Text>
             }
         >
-            Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+            Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
         </Card>
     );
 }
@@ -58,7 +58,7 @@ function Demo() {
     return (
         <>
             <Card style={{ maxWidth: 360 }} >
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
             </Card>
             <br />
             <Card 
@@ -148,7 +148,7 @@ function Demo() {
                 headerLine={true}
                 title='Semi Design'
             >
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             </Card>
         </div>
     );
@@ -288,7 +288,7 @@ function Demo() {
                 </Space>
             }
         >
-            Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+            Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
         </Card>
     );
 }

+ 14 - 13
content/show/collapse/index-en-US.md

@@ -172,19 +172,20 @@ import { IconCopy } from '@douyinfe/semi-icons';
 ### Collapse
 
 | Properties | Instructions | type | Default | version |
-| --- | --- | --- | --- | --- |
-| accordion | Accordion mode | boolean | `false` | - |
-| activeKey | Controlled property, key of the currently expanded panel | string \| string[] | - | - |
-| className | className of Collapse | string | '' | - |
-| clickHeaderToExpand | Click Header to expand and collapse, otherwise only respond to click arrow | boolean | true | 2.32.0 |
-| collapseIcon | Custom collapsing icons | ReactNode | `<IconChevronDown />` | - |
-| defaultActiveKey | Key of the expanded panel when initialized | string \| string[] | - | - |
-| expandIcon | Custom expanding icon | ReactNode | `<IconChevronUp />` | - |
-| keepDOM | Whether to keep the hidden panel in DOM tree, destroyed by default | boolean | `false` | 0.25.0 |
-| motion | Toggle whether to have animation | boolean | `true` | 1.4.0 |
-| expandIconPosition | Expand icon position | `left`, `right` | `right` | 1.12.0 |
-| style | Inline CSS style | CSSProperties | {} | - |
-| onChange | Callback function when switching panel | function(activeKey: string \| string[], e: event) | - | - |
+| --- | --- | --- | --- |---------|
+| accordion | Accordion mode | boolean | `false` | -       |
+| activeKey | Controlled property, key of the currently expanded panel | string \| string[] | - | -       |
+| className | className of Collapse | string | '' | -       |
+| clickHeaderToExpand | Click Header to expand and collapse, otherwise only respond to click arrow | boolean | true | 2.32.0  |
+| collapseIcon | Custom collapsing icons | ReactNode | `<IconChevronDown />` | -       |
+| defaultActiveKey | Key of the expanded panel when initialized | string \| string[] | - | -       |
+| expandIcon | Custom expanding icon | ReactNode | `<IconChevronUp />` | -       |
+| keepDOM | Whether to keep the hidden panel in DOM tree, destroyed by default | boolean | `false` | 0.25.0  |
+| motion | Toggle whether to have animation | boolean | `true` | 1.4.0   |
+| expandIconPosition | Expand icon position | `left`, `right` | `right` | 1.12.0  |
+| lazyRender | Used with keepDOM, when true, the component will not be rendered when mounting                                         | boolean | `false` | 2.25.1  |
+| style | Inline CSS style | CSSProperties | {} | -       |
+| onChange | Callback function when switching panel | function(activeKey: string \| string[], e: event) | - | -       |
 
 ### Collapse.Panel
 | Properties | Instructions                                                                                                            | type | Default | version       |

+ 12 - 11
content/show/collapse/index.md

@@ -170,20 +170,21 @@ import { IconCopy } from '@douyinfe/semi-icons';
 
 ### Collapse
 
-| 属性 | 说明 | 类型 | 默认值 | 版本 |
-| --- | --- | --- | --- | --- |
-| accordion | 手风琴模式 | boolean | `false` | - |
-| activeKey | 受控属性, 当前展开的面板的 key | string \| string[] | 无 | - |
-| className | 样式类名 | string | '' | - |
+| 属性 | 说明 | 类型 | 默认值 | 版本     |
+| --- | --- | --- | --- |--------|
+| accordion | 手风琴模式 | boolean | `false` | -      |
+| activeKey | 受控属性, 当前展开的面板的 key | string \| string[] | 无 | -      |
+| className | 样式类名 | string | '' | -      |
 | clickHeaderToExpand | 点击 Header 展开收起,否则只响应点击箭头 | boolean | true | 2.32.0 |
-| collapseIcon | 自定义折叠图标 | ReactNode | `<IconChevronDown />` | - |
-| defaultActiveKey | 初始化选中面板的 key | string \| string[] | 无 | - |
-| expandIcon | 自定义展开图标 | ReactNode | `<IconChevronUp />` | - |
+| collapseIcon | 自定义折叠图标 | ReactNode | `<IconChevronDown />` | -      |
+| defaultActiveKey | 初始化选中面板的 key | string \| string[] | 无 | -      |
+| expandIcon | 自定义展开图标 | ReactNode | `<IconChevronUp />` | -      |
 | expandIconPosition | 展开图标位置 | `left`, `right` | `right` | 1.12.0 |
 | keepDOM | 是否保留隐藏的面板 DOM 树,默认销毁 | bool | `false` | 0.25.0 |
-| motion | 是否开启动画 | boolean | `true` | 1.4.0 |
-| style | 内联 CSS 样式 | CSSProperties | {} | - |
-| onChange | 切换面板的回调 | function(activeKey: string \| string[], e: event) | 无 | - |
+| motion | 是否开启动画 | boolean | `true` | 1.4.0  |
+| lazyRender | 配合 keepDOM 使用,为 true 时挂载时不会渲染组件 | boolean | `false` | 2.25.1 |
+| style | 内联 CSS 样式 | CSSProperties | {} | -      |
+| onChange | 切换面板的回调 | function(activeKey: string \| string[], e: event) | 无 | -      |
 
 ### Collapse.Panel
 

+ 12 - 12
content/show/collapsible/index-en-US.md

@@ -178,18 +178,18 @@ import { Collapsible, Button } from '@douyinfe/semi-ui';
 ## API reference
 
 | Properties | Instructions                                                                                               | type | Default | version |
-| --- |------------------------------------------------------------------------------------------------------------| --- | --- | --- |
-| className | Class name                                                                                                 | string | - | 0.34.0 |
-| collapseHeight | Collapse height                                                                                            | number | 0 | 1.0.0 |
-| duration | Time of animation execution                                                                                | number | 250 | - |
-| isOpen | Toggle whether to expand the content area                                                                  | boolean | `false` | - |
-| keepDOM | Whether to keep the hidden panel in DOM tree, destroyed by default                                         | boolean | `false` | 0.25.0 |
-| lazyRender | Used with keepDOM, when true, the component will not be rendered when mounting                                         | boolean | `true` | 2.24 |
-| motion | Toggle whether to turn on animation                                                                        | Motion | `true` | - |
-| onMotionEnd | Animation end callback                                                                                     | () => void | - | - |
-| reCalcKey | When reCalcKey changes, the height of children will be reset. Used for optimize dynamic content rendering. | number \| string | - | 1.5.0 |
-| style | Style object                                                                                               | CSSProperties | - | 0.34.0 |
-| aria-controls | [aria-controls](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls)  | string |-| 2.3.0|
+| --- |------------------------------------------------------------------------------------------------------------| --- |---------|---------|
+| className | Class name                                                                                                 | string | -       | 0.34.0  |
+| collapseHeight | Collapse height                                                                                            | number | 0       | 1.0.0   |
+| duration | Time of animation execution                                                                                | number | 250     | -       |
+| isOpen | Toggle whether to expand the content area                                                                  | boolean | `false` | -       |
+| keepDOM | Whether to keep the hidden panel in DOM tree, destroyed by default                                         | boolean | `false` | 0.25.0  |
+| lazyRender | Used with keepDOM, when true, the component will not be rendered when mounting                                         | boolean | `false` | 2.54    |
+| motion | Toggle whether to turn on animation                                                                        | Motion | `true`  | -       |
+| onMotionEnd | Animation end callback                                                                                     | () => void | -       | -       |
+| reCalcKey | When reCalcKey changes, the height of children will be reset. Used for optimize dynamic content rendering. | number \| string | -       | 1.5.0   |
+| style | Style object                                                                                               | CSSProperties | -       | 0.34.0  |
+| aria-controls | [aria-controls](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls)  | string | -       | 2.3.0   |
 
 ## Accessibility
 

+ 13 - 13
content/show/collapsible/index.md

@@ -208,20 +208,20 @@ import { Collapsible, Button } from '@douyinfe/semi-ui';
 
 ## API 参考
 
-| 属性 | 说明 | 类型 | 默认值 | 版本 |
-| -- | --- | --- | --- | --- |
-| className | 类名 | string | - | 0.34.0 |
-| collapseHeight | 折叠高度 | number | 0 | 1.0.0 |
-| duration | 动画执行的时间 | number | 250 | - |
-| fade | 是否开启淡入淡出 | boolean | false | 2.21.0 |
-| isOpen | 是否展开内容区域 | boolean | `false` | - |
+| 属性 | 说明 | 类型 | 默认值     | 版本     |
+| -- | --- | --- |---------|--------|
+| className | 类名 | string | -       | 0.34.0 |
+| collapseHeight | 折叠高度 | number | 0       | 1.0.0  |
+| duration | 动画执行的时间 | number | 250     | -      |
+| fade | 是否开启淡入淡出 | boolean | false   | 2.21.0 |
+| isOpen | 是否展开内容区域 | boolean | `false` | -      |
 | keepDOM | 是否保留隐藏的面板 DOM 树,默认销毁 | boolean | `false` | 0.25.0 |
-| lazyRender | 配合 keepDOM 使用,为 true 时挂载时不会渲染组件 | boolean | `true` | 2.24 |
-| motion | 是否开启动画 | boolean | `true` | - |
-| onMotionEnd | 动画结束的回调 | () => void | - | - |
-| reCalcKey | 当 reCalcKey 改变时,将重新计算子节点的高度,用于优化动态渲染时的计算 | number \| string | - | 1.5.0 |
-| style | 样式 | CSSProperties | - | 0.34.0 |
-| id | id | html id string type | - | 2.3.0 |
+| lazyRender | 配合 keepDOM 使用,为 true 时挂载时不会渲染组件 | boolean | `false` | 2.25   |
+| motion | 是否开启动画 | boolean | `true`  | -      |
+| onMotionEnd | 动画结束的回调 | () => void | -       | -      |
+| reCalcKey | 当 reCalcKey 改变时,将重新计算子节点的高度,用于优化动态渲染时的计算 | number \| string | -       | 1.5.0  |
+| style | 样式 | CSSProperties | -       | 0.34.0 |
+| id | id | html id string type | -       | 2.3.0  |
 ## Accessibility
 
 ### ARIA

+ 2 - 2
content/show/list/index.md

@@ -98,13 +98,13 @@ class ContentList extends React.Component {
                     textOverflow: 'ellipsis',
                 }}
             >
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
             </p>,
             // eslint-disable-next-line react/jsx-key
             <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0', width: 500 }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
             </p>,

+ 1 - 1
content/show/modal/index.md

@@ -360,7 +360,7 @@ class modalDemo extends React.Component {
                     bodyStyle={{ overflow: 'auto', height: 200 }}
                 >
                     <p style={{ lineHeight: 1.8 }}>
-                        Semi Design 是由互娱社区前端团队与 UED
+                        Semi Design 是由抖音前端团队与 UED
                         团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                         Web 应用。
                     </p>

+ 49 - 9
content/show/table/index-en-US.md

@@ -257,7 +257,10 @@ This feature can be turned on by passing in `rowSelection`.
 -   Click the selection box in the header, and all rows in the `dataSource` that are not in the state of `disabled` will be selected. The callback function for selecting all rows is `onSelectAll`;
 -   Clicking on the row selection box will select the current row. Its callback function is `onSelect`;
 
-> Note: Be sure to provide a "key" for each row of data that is different from other row values, or use the rowKey parameter to specify a property name as the primary key.
+<Notice title='注意事项'>
+    <div>1. Be sure to provide a "key" for each row of data that is different from other row values, or use the rowKey parameter to specify a property name as the primary key.</div>
+    <div>2. If you encounter the problem of returning to the first page after clicking a row selection on the second page, please check whether component rendering triggers "dataSource" update (shallow equal). After the "dataSource" is updated, the uncontrolled page turner will return to the first page. Please put "dataSource" inside state. </div>
+</Notice>
 
 ```jsx live=true noInline=true dir="column"
 import React from 'react';
@@ -265,7 +268,8 @@ import { Table, Avatar } from '@douyinfe/semi-ui';
 import { IconMore } from '@douyinfe/semi-icons';
 
 function App() {
-    const columns = [
+    const [selectedKeys, setSelectedKeys] = useState([]);
+    const columns = useMemo(() => [
         {
             title: 'Title',
             dataIndex: 'name',
@@ -313,8 +317,8 @@ function App() {
                 return <IconMore />;
             },
         },
-    ];
-    const data = [
+    ], []);
+    const data = useMemo(() => [
         {
             key: '1',
             name: 'Semi Design design draft.fig',
@@ -369,7 +373,7 @@ function App() {
             updateTime: '2020-01-26 11:01',
             avatarBg: 'light-blue',
         },
-    ];
+    ], []);
     const rowSelection = {
         getCheckboxProps: record => ({
             disabled: record.name === 'Design docs', // Column configuration not to be checked
@@ -383,6 +387,7 @@ function App() {
         },
         onChange: (selectedRowKeys, selectedRows) => {
             console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
+            setSelectedKeys(selectedRowKeys);
         },
     };
 
@@ -1080,6 +1085,8 @@ Filters and sorting controls are integrated inside the table, and users can pass
 
 > Note: Be sure to provide a "key" for each row of data that is different from other row values, or use the rowKey parameter to specify a property name as the primary key.
 
+> Note: Sorting and filtering columns must set independent "dataIndex"
+
 ```jsx live=true noInline=true dir="column"
 import React, { useState, useMemo } from 'react';
 import { Table, Avatar } from '@douyinfe/semi-ui';
@@ -5266,7 +5273,7 @@ render(App);
 | clickGroupedRowToExpand | Group content expands or collapses when the group header row is clicked                                                   | boolean |  | **0.29.0** |
 | columns | For a configuration description of the table column, see [Column](#Column)                                                | Column [] | [] |
 | components | Override the elements of Table, such as table, body, row, td, th, etc.                                                    | <a target="_blank" href="https://github.com/DouyinFE/semi-design/blob/340c93e4e1612a879be869c43ad7a9a85ab5a302/packages/semi-ui/table/interface.ts#L200">TableComponents</a> |  |
-| dataSource | Data, Each item needs to have a key, or specify rowKey, see the beginning of the document                                                                                                                      | RecordType[] | [] |
+| dataSource | Data. **An independent key of each data record is need, or use rowKey to specify an attribute name as the primary key**                                                                                                             | RecordType[] | [] |
 | defaultExpandAllRows | All rows are expanded by default                                                                                          | boolean | false |
 | defaultExpandAllGroupRows | All grouped rows are expanded by default                                                                                  | boolean | false | **1.30.0** |
 | defaultExpandedRowKeys | Default expansion of row key array                                                                                        | Array <\*> | [] |
@@ -5274,7 +5281,7 @@ render(App);
 | expandCellFixed | Whether the column of the expansion icon is fixed or not, the same value as the fixed value in Column                     | boolean\|string | false |
 | expandIcon | Custom expansion icon, hidden when it is `false`                                                                          | boolean <br/>\|ReactNode <br/>\| (expanded: boolean) => ReactNode |  |
 | expandedRowKeys | Expanded rows, the row expansion function will be controlled when this parameter is introduced.                           | (string \| number)[] |  |
-| expandedRowRender | Extra unfolding lines                                                                                                     | (record: object, index: number, expanded: boolean) => ReactNode |  |
+| expandedRowRender | Extra unfolding lines. **An independent key of each data record is need**                                                                                                     | (record: object, index: number, expanded: boolean) => ReactNode |  |
 | expandAllRows | All rows are expanded                                                                                                     | boolean | false | **1.30.0** |
 | expandAllGroupRows | All grouped rows are expanded                                                                                             | boolean | false | **1.30.0** |
 | expandRowByClick | Expand row when click row                                                                                                 | boolean | false | **1.31.0** |
@@ -5437,13 +5444,13 @@ import { Table } from '@douyinfe/semi-ui';
 | resize | Whether to enable resize mode, this property will take effect only after Table resizable is enabled | boolean |  | **2.42.0** |
 | sortChildrenRecord | Whether to sort child data locally | boolean |  | **0.29.0** |
 | sortOrder | The controlled property of the sorting, the sorting of this control column can be set to 'ascend'\|'descended '\|false | boolean | false |
-| sorter | Sorting function, local sorting uses a function (refer to the compareFunction of Array.sort), requiring a server-side sorting can be set to true | boolean\|(r1: RecordType, r2: RecordType, sortOrder: 'ascend' \| 'descend') => number | true |
+| sorter | Sorting function, local sorting uses a function (refer to the compareFunction of Array.sort), requiring a server-side sorting can be set to true. **An independent dataIndex must be set for the sort column, and an independent key must be set for each data item in the dataSource** | boolean\|(r1: RecordType, r2: RecordType, sortOrder: 'ascend' \| 'descend') => number | true |
 | sortIcon |Customize the sort icon. The returned node controls the entire sort button, including ascending and descending buttons. Need to control highlighting behavior based on sortOrder | (props: { sortOrder }) => ReactNode | | **2.50.0** |
 | title | Column header displays text. When a function is passed in, title will use the return value of the function; when other types are passed in, they will be aggregated with sorter and filter. It needs to be used with useFullRender to obtain parameters such as filter in the function type | string \| ReactNode\|({ filter: ReactNode, sorter: ReactNode, selection: ReactNode }) => ReactNode. |  | Function type requires **0.34.0** |
 | useFullRender | Whether to completely customize the rendering, see [Full Custom Rendering](#Fully-custom-rendering) for usage details, enabling this feature will cause a certain performance loss | boolean | false | **0.34.0** |
 | width | Column width | string \| number |  |
 | onCell | Set cell properties | (record: RecordType, rowIndex: number) => object |  |
-| onFilter | Determine the running function of the filter in local mode | (filteredValue: any, record: RecordType) => boolean |  |
+| onFilter | Determine the running function of the filter in local mode. **An independent dataIndex must be set for the filter column, and an independent key must be set for each data item in the dataSource** | (filteredValue: any, record: RecordType) => boolean |  |
 | onFilterDropdownVisibleChange | A callback when a custom filter menu is visible | (visible: boolean) => void |  |
 | onHeaderCell | Set the head cell property | (column: RecordType, columnIndex: number) => object |  |
 
@@ -5586,6 +5593,39 @@ function Demo() {
 
 ## FAQ
 
+- **Clicking the row selection button on the second page will jump to the first page? **
+
+     After the Table's dataSource is updated, the page number will be reset to the initial state. Please check if the data source changed when the component was rendered.
+
+     ```typescript
+     function App() {
+         const [dataSource, setDataSource] = useState([]);
+
+         useEffect(() => {
+             // ✅ Correct
+             const getData = () => {
+                 // fetch data
+                 const newData = fetch(/**/);
+                 // set data
+                 setDataSource(dataSource);
+             };
+
+             getData();
+         }, []);
+
+         // ❌ Error
+         const data = [];
+
+         return <Table dataSource={data} columns={[/*...*/]} />;
+     }
+     ```
+
+-   **The number of filtered data is wrong?**
+
+    Please check that your filter columns and data sources are configured correctly.
+
+    The filter column needs to set an independent `dataIndex`, and the dataSource needs to set an independent `key`. Please refer to the `dataSource` API. Otherwise the filtering function will not work properly.
+
 -   **Why is the table data not updated?**  
      At present, all parameters of the table component are shallow comparison. That is to say, if the parameter value type is an array or object, you need to manually change its reference to trigger the update. Similarly, if you don't want to trigger additional updates, try not to use literal values when passing parameters directly or define reference parameter values in the render process:
 

+ 52 - 13
content/show/table/index.md

@@ -257,17 +257,19 @@ render(App);
 -   点击行的选择框会选中当前行。它的回调函数为 `onSelect`;
 
 <Notice title='注意事项'>
-    请务必为 dataSource 中每行数据提供一个与其他行值不同的 `key`,或者使用 `rowKey` 参数指定一个作为主键的属性名。
+    <div>1. 请务必为 `dataSource` 中每行数据提供一个与其他行值不同的 `key`,或者使用 `rowKey` 参数指定一个作为主键的属性名。</div>
+    <div>2. 如你遇见在第二页点击行选择后,回到第一页问题,请检查组件渲染是否触发了 `dataSource` 更新(浅对比)。`dataSource` 更新后,非受控的翻页器会回到第一页。请将 `dataSource` 放在 state 内。</div>
 </Notice>
 
-
 ```jsx live=true noInline=true dir="column"
 import React from 'react';
 import { Table, Avatar } from '@douyinfe/semi-ui';
 import { IconMore } from '@douyinfe/semi-icons';
 
 function App() {
-    const columns = [
+    const [selectedKeys, setSelectedKeys] = useState([]);
+
+    const columns = useMemo(() => [
         {
             title: '标题',
             dataIndex: 'name',
@@ -315,8 +317,9 @@ function App() {
                 return <IconMore />;
             },
         },
-    ];
-    const data = [
+    ], []);
+
+    const data = useMemo(() => [
         {
             key: '1',
             name: 'Semi Design 设计稿.fig',
@@ -371,7 +374,8 @@ function App() {
             updateTime: '2020-01-26 11:01',
             avatarBg: 'light-blue',
         },
-    ];
+    ], []);
+
     const rowSelection = {
         getCheckboxProps: record => ({
             disabled: record.name === '设计文档', // Column configuration not to be checked
@@ -385,6 +389,7 @@ function App() {
         },
         onChange: (selectedRowKeys, selectedRows) => {
             console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
+            setSelectedKeys(selectedRowKeys);
         },
     };
 
@@ -1083,7 +1088,8 @@ render(App);
 表格内部集成了过滤器和排序控件,用户可以通过在 Column 中传入 `filters` 以及 `onFilter` 开启表头的过滤器控件展示,传入 `sorter` 开启表头的排序控件的展示。
 
 <Notice title='注意事项'>
- 请为 `dataSource` 中的每个数据项提供一个与其他数据项值不同的 `key`,或者使用 `rowKey` 参数指定一个作为主键的属性名,表格的行选择、展开等绝大多数行操作功能都会使用到。
+    <div>1. 请为 `dataSource` 中的每个数据项提供一个与其他数据项值不同的 `key`,或者使用 `rowKey` 参数指定一个作为主键的属性名,表格的行选择、展开等绝大多数行操作功能都会使用到。</div>
+    <div>2. 排序和筛选列必须设置独立的 `dataIndex`</div>
 </Notice>
 
 ```jsx live=true noInline=true dir="column"
@@ -5273,7 +5279,7 @@ render(App);
 | clickGroupedRowToExpand | 点击分组表头行时分组内容展开或收起                                                   | boolean |  | **0.29.0** |
 | columns | 表格列的配置描述,详见[Column](#Column)                                        | Column[] | [] |
 | components | 覆盖 Table 的组成元素,如 table, body,row,td,th 等                            | <a target="_blank" href="https://github.com/DouyinFE/semi-design/blob/340c93e4e1612a879be869c43ad7a9a85ab5a302/packages/semi-ui/table/interface.ts#L200">TableComponents</a> |  |
-| dataSource | 数据, 每项需要有key,或者指定 rowKey,见文档开头                                      | RecordType[] | [] |
+| dataSource | 数据。**请为每一条数据分配一个独立的 key,或使用 rowKey 指定一个作为主键的属性名**                                    | RecordType[] | [] |
 | defaultExpandAllRows | 默认是否展开所有行,动态加载数据时不生效                                                | boolean | false |
 | defaultExpandAllGroupRows | 默认是否展开分组行,动态加载数据时不生效                                                | boolean | false | **1.30.0** |
 | defaultExpandedRowKeys | 默认展开的行 key 数组,,动态加载数据时不生效                                           | Array<\*> | [] |
@@ -5282,7 +5288,7 @@ render(App);
 | expandCellFixed | 展开图标所在列是否固定,与 Column 中的 fixed 取值相同                                  | boolean\|string | false |
 | expandIcon | 自定义展开按钮,传 `false` 关闭默认的渲染                                           | boolean \| ReactNode<br/> \| (expanded: boolean) => ReactNode |  |
 | expandedRowKeys | 展开的行,传入此参数时行展开功能将受控                                                 | (string \| number)[] |  |
-| expandedRowRender | 额外的展开行                                                              | (record: object, index: number, expanded: boolean) => ReactNode |  |
+| expandedRowRender | 额外的展开行。**请为每一条数据分配一个独立的 key,或使用 rowKey 指定一个作为主键的属性名**                                                               | (record: object, index: number, expanded: boolean) => ReactNode |  |
 | expandAllRows | 是否展开所有行                                                             | boolean | false | **1.30.0** |
 | expandAllGroupRows | 是否展开分组行                                                             | boolean | false | **1.30.0** |
 | expandRowByClick | 点击行时是否展开可展开行                                                        | boolean | false | **1.31.0** |
@@ -5431,7 +5437,7 @@ import { Table } from '@douyinfe/semi-ui';
 | className | 列样式名 | string |  |
 | children | 表头合并时用于子列的设置 | Column[] |  |
 | colSpan | 表头列合并,设置为 0 时,不渲染 | number |  |
-| dataIndex | 列数据在数据项中对应的 key,使用排序或筛选时必传 | string |  |
+| dataIndex | 列数据在数据项中对应的 key,使用排序或筛选时必传,且需要保持不重复 | string |  |
 | defaultFilteredValue | 筛选的默认值,值为已筛选的 value 数组 | any[] |  | **2.5.0** |
 | defaultSortOrder | 排序的默认值,可设置为 'ascend'\|'descend'\|false | boolean\| string | false | **1.31.0** |
 | ellipsis | 文本缩略,开启后 table-layout 会自动切换为 fixed | boolean\| { showTitle: boolean } | false | **2.34.0** |
@@ -5442,7 +5448,7 @@ import { Table } from '@douyinfe/semi-ui';
 | filterIcon | 自定义 filter 图标 | boolean\|ReactNode\|(filtered: boolean) => ReactNode |  |
 | filterMultiple | 是否多选 | boolean | true |
 | filteredValue | 筛选的受控属性,外界可用此控制列的筛选状态,值为已筛选的 value 数组 | any[] |  |
-| filters | 表头的筛选菜单项 | Filter[] |  |
+| filters | 表头的筛选菜单项 | Filter[] |  |
 | fixed | 列是否固定,可选 true(等效于 left) 'left' 'right',在 RTL 时会自动切换 | boolean\|string | false |
 | key | React 需要的 key,如果已经设置了唯一的 dataIndex,可以忽略这个属性 | string |  |
 | render | 生成复杂数据的渲染函数,参数分别为当前行的值,当前行数据,行索引,@return 里面可以设置表格行/列合并 | (text: any, record: RecordType, index: number, { expandIcon?: ReactNode, selection?: ReactNode, indentText?: ReactNode }) => object\|ReactNode |  |
@@ -5451,13 +5457,13 @@ import { Table } from '@douyinfe/semi-ui';
 | resize | 是否开启 resize 模式,只有 Table resizable 开启后此属性才会生效 | boolean |  | **2.42.0** |
 | sortChildrenRecord | 是否对子级数据进行本地排序 | boolean |  | **0.29.0** |
 | sortOrder | 排序的受控属性,外界可用此控制列的排序,可设置为 'ascend'\|'descend'\|false | boolean\| string | false |
-| sorter | 排序函数,本地排序使用一个函数(参考 Array.sort 的 compareFunction),需要服务端排序可设为 true | boolean\|(r1: RecordType, r2: RecordType, sortOrder: 'ascend' \| 'descend') => number | true |
+| sorter | 排序函数,本地排序使用一个函数(参考 Array.sort 的 compareFunction),需要服务端排序可设为 true。**必须给排序列设置一个独立的 dataIndex,必须为 dataSource 里面的每条数据项设置独立的 key** | boolean\|(r1: RecordType, r2: RecordType, sortOrder: 'ascend' \| 'descend') => number | true |
 | sortIcon | 自定义 sort 图标,返回的节点控制了整个排序按钮,包含升序和降序。需根据 sortOrder 控制高亮行为 | (props: { sortOrder }) => ReactNode | | **2.50.0** |
 | title | 列头显示文字。传入 function 时,title 将使用函数的返回值;传入其他类型,将会和 sorter、filter 进行聚合。需要搭配 useFullRender 获取函数类型中的 filter 等参数 | ReactNode\|({ filter: ReactNode, sorter: ReactNode, selection: ReactNode }) => ReactNode |  | Function 类型需要**0.34.0** |
 | useFullRender | 是否完全自定义渲染,用法详见[完全自定义渲染](#完全自定义渲染), 开启此功能会造成一定的性能损耗 | boolean | false | **0.34.0** |
 | width | 列宽度 | string \| number |  |
 | onCell | 设置单元格属性 | (record: RecordType, rowIndex: number) => object |  |
-| onFilter | 本地模式下,确定筛选的运行函数 | (filteredValue: any, record: RecordType) => boolean |  |
+| onFilter | 本地模式下,确定筛选的运行函数。**必须给筛选列设置一个独立的 dataIndex,必须为 dataSource 里面的每条数据项设置独立的 key** | (filteredValue: any, record: RecordType) => boolean |  |
 | onFilterDropdownVisibleChange | 自定义筛选菜单可见变化时回调 | (visible: boolean) => void |  |
 | onHeaderCell | 设置头部单元格属性 | (column: RecordType, columnIndex: number) => object |  |
 
@@ -5602,6 +5608,39 @@ function Demo() {
 
 ## FAQ
 
+- **点击第二页的行选择按钮,会跳转到第一页?**
+
+    Table 的 dataSource 更新后,会将页码重置到初始态。请检查数据源是否在组件渲染时发生了变化。
+
+    ```typescript
+    function App() {
+        const [dataSource, setDataSource] = useState([]);
+
+        useEffect(() => {
+            // ✅ 正确
+            const getData = () => {
+                // fetch data
+                const newData = fetch(/**/);
+                // set data
+                setDataSource(dataSource);
+            };
+
+            getData();
+        }, []);
+
+        // ❌ 错误
+        const data = [];
+
+        return <Table dataSource={data} columns={[/*...*/]} />;
+    }
+    ```
+
+-   **筛选后的数据条数不对?**
+
+    请检查你的筛选列和数据源是否配置正确。
+
+    筛选列需设置独立的 dataIndex,同时 dataSource 需要设置独立的 key,请参考 dataSource API。否则筛选功能无法正常工作。
+
 -   **表格数据为何没有更新?**  
 
      Table 组件目前所有参数都为浅层对比,也就是说如果该参数值类型为一个 Array 或者 Object,你需要手动改变其引用才能触发更新。同理,如果你不想触发额外更新,尽量不要直接在传参的时候使用字面量或是在 render 过程中定义引用型参数值:

+ 1 - 1
content/show/tooltip/index.md

@@ -353,7 +353,7 @@ function Demo() {
                 ellipsis={{ rows: 3, showTooltip: { type: 'popover', opts: { style: { width: 300 } } } }}
                 style={{ width: 300 }}
             >
-                多行截断,展示 Popover:Semi Design 是由互娱社区前端团队与 UED
+                多行截断,展示 Popover:Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
             </Paragraph>

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

@@ -16,8 +16,23 @@ Version:Major.Minor.Patch (follow the **Semver** specification)
 
 ---
 
+#### 🎉 2.55.5 (2024-04-02)
+- 【Fix】
+  - Fixed a type error caused by value not being in treeData when checkRelation in the Tree component is unRelated.
+  - Fix type error in controlled Cascader where value is not in TreeData
+  - Fixed the problem of slider tooltip not automatically hiding when the mouse is moved in some scenarios (Affected version 2.49.0 ~ 2.55.4)
+
+#### 🎉 2.55.3 (2024-04-01)
+- 【Fix】
+  - Fixed the problem that when onChangWithObject is turned on for Select multi-selection and value is controlled, the current value does not exist in the optionList, and the rendering is not re-executed after updating other properties in the value.
+
+
+#### 🎉 2.55.1 (2024-03-25)
+- 【Fix】
+  - Fix: Fix collapse & collapsible keepDOM failure problem (affects versions 2.54.0-beta.0 ~ 2.55.0)
+  - Fix: Correct the default value of lazyRender for collapse, from true set in 2.54.0 to a more appropriate false, keeping the use cases where lazyRender is not set consistent with the behavior before 2.54 (affects versions 2.54.0-beta.0 ~ 2.55.0 )
 
-#### 🎉 2.55.0-beta.0 (2024-03-22)
+#### 🎉 2.55.0 (2024-03-22)
 - 【Fix】
   - Fix the problem that the Table header selection state is incorrectly selected when the data is empty (affects v2.51 ~ v2.54)  [#2128](https://github.com/DouyinFE/semi-design/issues/2128)
   - Fix the problem of Split Button losing style when children Button className changes

+ 17 - 1
content/start/changelog/index.md

@@ -13,7 +13,23 @@ Semi 版本号遵循 **Semver** 规范(主版本号-次版本号-修订版本
 -   修订版本号(patch):仅会进行 bugfix,发布时间不限
 -   不同版本间的详细关系,可查阅 [FAQ](/zh-CN/start/faq)
 
-#### 🎉 2.55.0-beta.0 (2024-03-22)
+
+#### 🎉 2.55.5 (2024-04-02)
+- 【Fix】
+  - 修复 Tree 组件中 checkRelation 为 unRelated 时,由于 value 不在 treeData 中导致的类型错误
+  - 修复受控 Cascader 中 value 不在 TreeData 内时的类型错误
+  - 修复 slider 在一些场景下 tooltip 在 鼠标移走时不自动隐藏的问题 (影响范围 2.49.0 ~ 2.55.4 )
+
+#### 🎉 2.55.3 (2024-04-01)
+- 【Fix】
+  - 修复 Select 多选开启 onChangWithObject 且 value 受控,当前value 并不存在于 optionList 中,更新了 value中的其他属性后渲染未重新执行的问题
+
+#### 🎉 2.55.1 (2024-03-25)
+- 【Fix】
+  - Fix: 修复 collapse & collapsible keepDOM 失效的问题 (影响版本 2.54.0-beta.0 ~ 2.55.0)
+  - Fix:修正 collapse 的 lazyRender 默认值,由 2.54.0 设置的 true 改为更合适的 false,保持未设置 lazyRender的用例与 2.54前行为的一致性 (影响版本 2.54.0-beta.0 ~ 2.55.0)
+
+#### 🎉 2.55.0 (2024-03-22)
 - 【Fix】
   - 修复 Table 表头选择状态在数据为空时错误被选中问题(影响 v2.51 ~ v2.54版本)  [#2128](https://github.com/DouyinFE/semi-design/issues/2128)
   - 修复 Split Button 在 children Button className 变化时丢失样式的问题

+ 10 - 0
cypress/e2e/select.spec.js

@@ -168,6 +168,16 @@ describe('Select', () => {
 
     });
 
+    it('Fixed PR-2139', () => {
+        // 1.Select multi-select turns on onChangWithObject and value is controlled
+        // 2. The current value does not exist in optionList
+        // 3. The problem that rendering is not re - executed after updating other attributes in value(such as label, or any other Key)
+        cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/select--update-other-key-not-in-list');
+        cy.get('.render-content').eq(0).should('have.text', 'AA-Label-AA-OtherProps')
+        cy.get('#change').eq(0).click();
+        cy.get('.render-content').eq(0).should('have.text', 'AA-Label-2-AA-OtherProps-2')
+
+    });
     // it('ellipsisTrigger', () => {
     //     cy.visit('http://127.0.0.1:6006/iframe.html?path=/story/select--fix-1560');
 

+ 1 - 1
lerna.json

@@ -1,5 +1,5 @@
 {
     "useWorkspaces": true,
     "npmClient": "yarn",
-    "version": "2.55.0"
+    "version": "2.55.5"
 }

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

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

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation-styled",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "semi styled animation",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-animation",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "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.55.0",
+    "version": "2.55.5",
     "description": "semi ui eslint plugin",
     "keywords": [
         "semi",

+ 13 - 3
packages/semi-foundation/form/form.scss

@@ -9,6 +9,8 @@ $col: #{$form}-col;
 $checkboxGroup: #{$prefix}-checkboxGroup;
 $radioGroup: #{$prefix}-radioGroup;
 $buttonRadioGroup: #{$prefix}-radioGroup-buttonRadio;
+$horizontalCardRadioGroup: #{$prefix}-radioGroup-horizontal-card;
+$verticalCardRadioGroup: #{$prefix}-radioGroup-vertical-card;
 
 $switch: #{$prefix}-switch;
 $rating: #{$prefix}-rating;
@@ -171,11 +173,17 @@ $rating: #{$prefix}-rating;
             padding-top: $spacing-form_label_posTop-paddingTop;
             padding-bottom: $spacing-form_label_posTop-paddingBottom;
         }
+        // no need to adjust height for button radio & card radio
+        .#{$buttonRadioGroup},
+        .#{$horizontalCardRadioGroup},
+        .#{$verticalCardRadioGroup} {
+            padding-top: 0;
+            padding-bottom: 0;
+        }
         .#{$field}-label-with-extra {
             display: flex;
             align-items: center;
         }
-
     }
 
     &[x-label-pos="left"] {
@@ -197,8 +205,10 @@ $rating: #{$prefix}-rating;
             padding-top: $spacing-form_label-paddingTop;
             padding-bottom: $spacing-form_label-paddingTop;
         }
-        // no need to adjust height for button radio, already 32px
-        .#{$buttonRadioGroup} {
+        // no need to adjust height for button radio, already 32px, no need to consider height of card radio
+        .#{$buttonRadioGroup},
+        .#{$horizontalCardRadioGroup},
+        .#{$verticalCardRadioGroup} {
             padding-top: 0;
             padding-bottom: 0;
         }

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

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

+ 1 - 0
packages/semi-foundation/radio/radio.scss

@@ -335,6 +335,7 @@ $inner-width: $width-icon-medium;
         left: 0;
         width: 100%;
         height: 100%;
+        margin-top: 0; // when type= button/card/pureCard, reset margin
         z-index: -1;
         opacity: 0;
     }

+ 12 - 1
packages/semi-foundation/select/foundation.ts

@@ -298,7 +298,18 @@ export default class SelectFoundation extends BaseFoundation<SelectAdapter> {
                     const indexInSelectedList = selectedOptionList.findIndex(option => option.value === selectedValue);
                     if (indexInSelectedList !== -1) {
                         const option = selectedOptionList[indexInSelectedList];
-                        selections.set(option.label, option);
+                        if (onChangeWithObject) {
+                            // Although the value is the same and can be found in selections, it cannot ensure that other items remain unchanged. A comparison is made.
+                            // https://github.com/DouyinFE/semi-design/pull/2139
+                            const optionCompare = { ...(propValue[i] as any) };
+                            if (isEqual(optionCompare, option)) {
+                                selections.set(option.label, option);
+                            } else {
+                                selections.set(optionCompare.label, optionCompare);
+                            }
+                        } else {
+                            selections.set(option.label, option);
+                        }
                     } else {
                         // The current value does not exist in the current optionList or the list before the change. Construct an option and update it to the selection
                         let optionNotExist = { value: selectedValue, label: selectedValue, _notExist: true };

+ 2 - 1
packages/semi-foundation/slider/foundation.ts

@@ -550,7 +550,8 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
     onHandleLeave = () => {
         // this._adapter.setEventDefault(e);
         const disabled = this._adapter.getState('disabled');
-        if (!disabled && this.getStates()['focusPos'] === "") {
+        const isDrag = this._adapter.getState('isDrag');
+        if (!disabled && !isDrag) {
             this._adapter.onHandleLeave();
         }
     };

+ 39 - 4
packages/semi-foundation/tree/foundation.ts

@@ -420,20 +420,55 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
         this._adapter.notifyChange(value as BasicValue);
     }
 
+    constructDataForValue(value: string) {
+        const { keyMaps } = this.getProps();
+        const keyName = get(keyMaps, 'key', 'key');
+        const labelName = get(keyMaps, 'label', 'label');
+        return {
+            [keyName]: value,
+            [labelName]: value
+        };    
+    }
+
+    findDataForValue(findValue: string) {
+        const { value, defaultValue, keyMaps } = this.getProps();
+        const realValueName = get(keyMaps, 'value', 'value');
+        const realKeyName = get(keyMaps, 'key', 'key');
+        let valueArr = [];
+        if (value) {
+            valueArr = Array.isArray(value) ? value : [value];
+        } else if (defaultValue) {
+            valueArr = Array.isArray(defaultValue) ? defaultValue : [defaultValue];
+        }
+        return valueArr.find(item => {
+            return item[realValueName] === findValue || item[realKeyName] === findValue;
+        });
+    }
+
+    getDataForKeyNotInKeyEntities(value: string) {
+        const { onChangeWithObject } = this.getProps();
+        if (onChangeWithObject) {
+            return this.findDataForValue(value);
+        } else {
+            return this.constructDataForValue(value);
+        }
+    }
+
     notifyMultipleChange(key: string[], e: any) {
         const { keyEntities } = this.getStates();
         const { leafOnly, checkRelation, keyMaps } = this.getProps();
         let value;
         let keyList = [];
         if (checkRelation === 'related') {
-            keyList = normalizeKeyList(key, keyEntities, leafOnly);
+            keyList = normalizeKeyList(key, keyEntities, leafOnly, true);
         } else if (checkRelation === 'unRelated') {
             keyList = key;
         }
+        const nodes = keyList.map(key => keyEntities[key] ? keyEntities[key].data : this.getDataForKeyNotInKeyEntities(key));
         if (this.getProp('onChangeWithObject')) {
-            value = keyList.map((itemKey: string) => keyEntities[itemKey].data);
+            value = nodes;
         } else {
-            value = getValueOrKey(keyList.map((itemKey: string) => keyEntities[itemKey].data), keyMaps);
+            value = getValueOrKey(nodes, keyMaps);
         }
         this._adapter.notifyChange(value);
     }
@@ -585,7 +620,7 @@ export default class TreeFoundation extends BaseFoundation<TreeAdapter, BasicTre
         const nonDisabled = descendantKeys.filter((key: string) => !disabledKeys.has(key));
         const newCheckedKeys = targetStatus ?
             [...nonDisabled, ...checkedKeys] :
-            difference(normalizeKeyList([...checkedKeys], keyEntities, true), nonDisabled);
+            difference(normalizeKeyList([...checkedKeys], keyEntities, true, true), nonDisabled);
         return calcCheckedKeys(newCheckedKeys, keyEntities);
     }
 

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

@@ -1,6 +1,6 @@
 {
   "name": "@douyinfe/semi-icons-lab",
-  "version": "2.55.0",
+  "version": "2.55.5",
   "description": "semi icons lab",
   "keywords": [
     "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-icons",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "semi icons",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-illustrations",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "semi illustrations",
     "keywords": [
         "semi",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-next",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "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.55.0"
+        "@douyinfe/semi-webpack-plugin": "2.55.5"
     },
     "gitHead": "eb34a4f25f002bb4cbcfa51f3df93bed868c831a"
 }

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-rspack-plugin",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "",
     "homepage": "",
     "license": "MIT",

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-scss-compile",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "compile semi scss to css",
     "author": "[email protected]",
     "license": "MIT",

+ 1 - 1
packages/semi-scss-compile/src/utils/generateSCSSMap.ts

@@ -38,7 +38,7 @@ const generateComponentsScssMap = (foundationPath: string, iconPath?: string) =>
 
 
 const generateThemeScssMap = (themePath: string) => {
-    const fileList = ['_font.scss', '_palette.scss', 'global.scss', 'animation.scss', 'index.scss', 'local.scss', 'mixin.scss', 'variables.scss'] as const;
+    const fileList = ['_font.scss', '_palette.scss', 'global.scss', 'animation.scss', 'index.scss', 'local.scss', 'mixin.scss', 'variables.scss', 'custom.scss'] as const;
     const themeScssMap: { [key in typeof fileList[number]]?: string } = {};
     for (const fileName of fileList) {
         const scssAbsolutePath = path.join(themePath, 'scss', fileName);

+ 24 - 1
packages/semi-scss-compile/src/utils/writeFile.ts

@@ -65,12 +65,35 @@ const preProcessScssMap = (scssMapOrigin: ReturnType<typeof generateScssMap>) =>
             }
         }
     }
+
+    //---- inject custom file custom.scss to component's variables.scss -----
+    const customScssRaw = scssMap.theme['custom.scss'];
+    let allCustomRaw = '';
+    if (customScssRaw) {
+        const componentNames = Object.keys(scssMap['components']);
+        const orderList = ['tooltip', 'anchor', 'autoComplete', 'avatar', 'backtop', 'badge', 'banner', 'breadcrumb', 'button', 'calendar', 'card', 'carousel', 'cascader', 'checkbox', 'collapse', 'collapsible', 'datePicker', 'descriptions', 'divider', 'dropdown', 'empty', 'form', 'grid', 'highlight', 'image', 'input', 'inputNumber', 'list', 'modal', 'navigation', 'notification', 'pagination', 'popconfirm', 'popover', 'progress', 'radio', 'rating', 'scrollList', 'select', 'sideSheet', 'skeleton', 'slider', 'space', 'spin', 'steps', 'switch', 'table', 'tabs', 'tag', 'tagInput', 'timePicker', 'timeline', 'toast', 'transfer', 'tree', 'treeSelect', 'typography', 'upload'];
+
+        componentNames.sort((a,b)=>{
+            return orderList.indexOf(a) - orderList.indexOf(b);
+        });
+
+        for (const componentName of componentNames) {
+            if (scssMap['components'][componentName]['variables.scss']) {
+                allCustomRaw+= scssMap['components'][componentName]['variables.scss']+'\n';
+            }
+        }
+        allCustomRaw+= themeLocalRaw || "";
+        allCustomRaw+="\n";
+        allCustomRaw+=`body:not(:not(body)){${customScssRaw}};`+"\n";
+        scssMap.theme['index.scss'] += '\n'+allCustomRaw;
+    }
+
     //----- inject end -----
 
     return {
         ...{
             components: scssMap['components'],
-            theme: lodash.omit(scssMap['theme'], 'local.scss')
+            theme: lodash.omit(scssMap['theme'], 'local.scss', 'custom.scss')
         },
         index: compilerEntryContent
     };

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-theme-default",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "description": "semi-theme-default",
     "keywords": [
         "semi-theme",

+ 1 - 1
packages/semi-ui/_base/_story/index.stories.jsx

@@ -61,7 +61,7 @@ export const TestAlwaysDarkLight = () => {
               style={{ maxWidth: 360, marginRight: 12 }}
               headerExtraContent={<Text link>更多</Text>}
             >
-              Semi Design 是由互娱社区前端团队与 UED
+              Semi Design 是由抖音前端团队与 UED
               团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
               Web 应用。
               <Tooltip content={'hi bytedance'}>

+ 9 - 7
packages/semi-ui/backtop/index.tsx

@@ -2,6 +2,7 @@ import React from 'react';
 import BaseComponent from '../_base/baseComponent';
 import cls from 'classnames';
 import PropTypes from 'prop-types';
+import { throttle } from 'lodash';
 import { cssClasses } from '@douyinfe/semi-foundation/backtop/constants';
 import BackTopFoundation, { BackTopAdapter } from '@douyinfe/semi-foundation/backtop/foundation';
 
@@ -48,6 +49,8 @@ export default class BackTop extends BaseComponent<BackTopProps, BackTopState> {
         className: PropTypes.string,
     };
 
+    handler: (e: React.MouseEvent<HTMLDivElement>) => void;
+
     constructor(props: BackTopProps) {
         super(props);
         this.state = {
@@ -58,6 +61,7 @@ export default class BackTop extends BaseComponent<BackTopProps, BackTopState> {
 
     componentDidMount() {
         this.foundation.init();
+        this.handler = throttle(this.handleClick, this.props.duration ?? BackTop.defaultProps.duration);
     }
 
     componentWillUnmount() {
@@ -91,9 +95,7 @@ export default class BackTop extends BaseComponent<BackTopProps, BackTopState> {
     }
 
     renderDefault() {
-        return (
-            <IconButton theme="light" icon={<IconChevronUp />} />
-        );
+        return <IconButton theme="light" icon={<IconChevronUp />} />;
     }
 
     render() {
@@ -107,10 +109,10 @@ export default class BackTop extends BaseComponent<BackTopProps, BackTopState> {
         const content = visible ? (
             // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
             <div
-                {...others} 
-                className={preCls} 
-                style={style} 
-                onClick={e => this.handleClick(e)} 
+                {...others}
+                className={preCls}
+                style={style}
+                onClick={e => this.handler(e)}
                 x-semi-prop="children"
             >
                 {backtopBtn}

+ 11 - 11
packages/semi-ui/card/_story/card.stories.jsx

@@ -39,7 +39,7 @@ export const Default = () => (
       aria-label='basic card'
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -50,7 +50,7 @@ export const Default = () => (
       }}
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -61,7 +61,7 @@ export const Default = () => (
       }}
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -72,7 +72,7 @@ export const Default = () => (
       }}
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -87,7 +87,7 @@ export const Default = () => (
       }}
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -98,7 +98,7 @@ export const Default = () => (
       }}
       headerExtraContent={<Text link={{}}>更多</Text>}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -113,7 +113,7 @@ export function Simple() {
           width: 360,
         }}
       >
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
       </Card>
       <Card
         style={{
@@ -265,7 +265,7 @@ export const MetaDemo = () => (
       </Space>
     }
   >
-    Semi Design 是由互娱社区前端团队与 UED
+    Semi Design 是由抖音前端团队与 UED
     团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
     Web 应用。
   </Card>
@@ -476,7 +476,7 @@ export const Actions = () => (
         </Space>
       }
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -500,7 +500,7 @@ export const Actions = () => (
       actions={[<IconLikeThumb />, <IconLikeHeart />, <IconEdit />, <IconWrench />]}
       headerLine={false}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
     </Card>
@@ -536,7 +536,7 @@ export const CardGroupDemo = () => (
           />
         }
       >
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
       </Card>
     ))}
   </CardGroup>

+ 3 - 3
packages/semi-ui/card/_story/card.stories.tsx

@@ -39,7 +39,7 @@ stories.add('default', () => (
           />
         }
       >
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
       </Card>
       <Card
         style={{ width: 300 }}
@@ -68,7 +68,7 @@ stories.add('default', () => (
           />
         }
       >
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
       </Card>
       <Card
         style={{ width: 300 }}
@@ -97,7 +97,7 @@ stories.add('default', () => (
           />
         }
       >
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
       </Card>
     </CardGroup>
 ))

+ 14 - 0
packages/semi-ui/cascader/__test__/cascader.test.js

@@ -1399,4 +1399,18 @@ describe('Cascader', () => {
         expect(placeholder.getDOMNode().textContent).toEqual('autoMergeValue 为 false');
         cascader.unmount();
     })
+
+    it('value not in TreeData', () => {
+        const cascader = render({
+            multiple: true,
+            value: [ "value", "notIn",  "treeData"],
+            placeholder: "value not in treeData, show placeholder",
+            autoMergeValue: false,
+            filterTreeNode: true,
+        });
+
+        const placeholder = cascader.find(`.${BASE_CLASS_PREFIX}-input`)
+        expect(placeholder.getDOMNode().placeholder).toEqual('value not in treeData, show placeholder');
+        cascader.unmount();
+    })
 });

+ 9 - 4
packages/semi-ui/cascader/index.tsx

@@ -453,7 +453,11 @@ class Cascader extends BaseComponent<CascaderProps, CascaderState> {
                 formatItem.length > 0 && (formatValuePath.push(formatItem));
             });
             // formatKeys is used to save key of value
-            const formatKeys = formatValuePath.map(v => getKeyByValuePath(v));
+            const formatKeys = formatValuePath.reduce((acc, cur) => { 
+                const key = getKeyByValuePath(cur);
+                keyEntities[key] && acc.push(key);
+                return acc;
+            }, []) as string[];
             return formatKeys;
         };
         const needUpdateTreeData = needUpdate('treeData') || needUpdateData();
@@ -541,11 +545,12 @@ class Cascader extends BaseComponent<CascaderProps, CascaderState> {
     renderTagItem = (nodeKey: string, idx: number) => {
         const { keyEntities, disabledKeys } = this.state;
         const { size, disabled, displayProp, displayRender, disableStrictly } = this.props;
-        const isDsiabled =
-            disabled || keyEntities[nodeKey].data.disabled || (disableStrictly && disabledKeys.has(nodeKey));
+
         if (keyEntities[nodeKey]) {
+            const isDisabled =
+            disabled || keyEntities[nodeKey].data.disabled || (disableStrictly && disabledKeys.has(nodeKey));
             const tagCls = cls(`${prefixcls}-selection-tag`, {
-                [`${prefixcls}-selection-tag-disabled`]: isDsiabled,
+                [`${prefixcls}-selection-tag-disabled`]: isDisabled,
             });
             // custom render tags
             if (isFunction(displayRender)) {

+ 30 - 30
packages/semi-ui/checkbox/_story/checkbox.stories.jsx

@@ -612,19 +612,19 @@ export const CheckboxGroupCardStyle = () => (
     <CheckboxGroup key={getUuidShort({ prefix: '' })} aria-label='group demo' type="card" direction="horizontal" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
@@ -635,21 +635,21 @@ export const CheckboxGroupCardStyle = () => (
     <CheckboxGroup key={getUuidShort({ prefix: '' })} aria-label='group demo' type="card" direction="horizontal" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
@@ -676,19 +676,19 @@ export const CheckboxGroupCardStyle = () => (
       <Checkbox
         value="1"
         aria-label='checkbox demo'
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
       <Checkbox
         value="2"
         aria-label='checkbox demo'
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
       <Checkbox
         value="3"
         aria-label='checkbox demo'
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
     </CheckboxGroup>
@@ -714,19 +714,19 @@ export const CheckboxGroupCardStyle = () => (
     <CheckboxGroup key={getUuidShort({ prefix: '' })} aria-label='group demo' direction="vertical" type="card" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
@@ -737,21 +737,21 @@ export const CheckboxGroupCardStyle = () => (
     <CheckboxGroup key={getUuidShort({ prefix: '' })} aria-label='group demo' direction="vertical" type="card" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
@@ -808,19 +808,19 @@ export const CheckboxGroupPureCardStyle = () => (
     <CheckboxGroup type="pureCard" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
@@ -831,21 +831,21 @@ export const CheckboxGroupPureCardStyle = () => (
     <CheckboxGroup type="pureCard" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
@@ -871,17 +871,17 @@ export const CheckboxGroupPureCardStyle = () => (
     <CheckboxGroup type="pureCard" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Checkbox>
     </CheckboxGroup>
@@ -907,19 +907,19 @@ export const CheckboxGroupPureCardStyle = () => (
     <CheckboxGroup direction="vertical" type="pureCard" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Checkbox>
@@ -930,21 +930,21 @@ export const CheckboxGroupPureCardStyle = () => (
     <CheckboxGroup direction="vertical" type="pureCard" defaultValue={['1']}>
       <Checkbox
         value="1"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="2"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Checkbox>
       <Checkbox
         value="3"
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题

+ 3 - 2
packages/semi-ui/collapse/collapse-context.tsx

@@ -9,10 +9,11 @@ export interface CollapseContextType{
     keepDOM: boolean;
     expandIconPosition: 'left' | 'right';
     onClick: (activeKey: string, e: React.MouseEvent) => void;
-    motion: boolean
+    motion: boolean;
+    lazyRender: boolean
 }
 
 
 const CollapseContext = React.createContext<CollapseContextType>({} as CollapseContextType);
 
-export default CollapseContext;
+export default CollapseContext;

+ 29 - 11
packages/semi-ui/collapse/index.tsx

@@ -6,7 +6,7 @@ import CollapseFoundation, {
     ArgsType,
     CollapseAdapter,
     CollapseProps,
-    CollapseState
+    CollapseState,
 } from '@douyinfe/semi-foundation/collapse/foundation';
 import BaseComponent from '../_base/baseComponent';
 import CollapsePanel from './item';
@@ -14,16 +14,17 @@ import '@douyinfe/semi-foundation/collapse/collapse.scss';
 import { noop } from '@douyinfe/semi-foundation/utils/function';
 import { isEqual } from 'lodash';
 import CollapseContext from './collapse-context';
-import { getDefaultPropsFromGlobalConfig } from "../_utils";
+import { getDefaultPropsFromGlobalConfig } from '../_utils';
 
 export type { CollapsePanelProps } from './item';
 
-export interface CollapseReactProps extends CollapseProps{
+export interface CollapseReactProps extends CollapseProps {
     expandIcon?: React.ReactNode;
     collapseIcon?: React.ReactNode;
     children?: React.ReactNode;
     style?: CSSProperties;
-    onChange?: (activeKey: CollapseProps['activeKey'], e: React.MouseEvent) => void
+    onChange?: (activeKey: CollapseProps['activeKey'], e: React.MouseEvent) => void;
+    lazyRender?: boolean
 }
 
 
@@ -44,24 +45,26 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
         className: PropTypes.string,
         keepDOM: PropTypes.bool,
         motion: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object]),
-        expandIconPosition: PropTypes.oneOf(strings.iconPosition)
+        expandIconPosition: PropTypes.oneOf(strings.iconPosition),
+        lazyRender: PropTypes.bool,
     };
 
-    static __SemiComponentName__ = "Collapse";
+    static __SemiComponentName__ = 'Collapse';
 
     static defaultProps = getDefaultPropsFromGlobalConfig(Collapse.__SemiComponentName__, {
         defaultActiveKey: '',
         clickHeaderToExpand: true,
         onChange: noop,
-        expandIconPosition: 'right'
-    })
+        expandIconPosition: 'right',
+        lazyRender: false,
+    });
 
     constructor(props: CollapseReactProps) {
         super(props);
         this.foundation = new CollapseFoundation(this.adapter);
         const initKeys = this.foundation.initActiveKey();
         this.state = {
-            activeSet: new Set(initKeys)
+            activeSet: new Set(initKeys),
         };
         this.onChange = this.onChange.bind(this);
     }
@@ -98,7 +101,21 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
     };
 
     render() {
-        const { defaultActiveKey, accordion, style, motion, className, keepDOM, expandIconPosition, expandIcon, collapseIcon, children, clickHeaderToExpand, ...rest } = this.props;
+        const {
+            defaultActiveKey,
+            lazyRender,
+            accordion,
+            style,
+            motion,
+            className,
+            keepDOM,
+            expandIconPosition,
+            expandIcon,
+            collapseIcon,
+            children,
+            clickHeaderToExpand,
+            ...rest
+        } = this.props;
         const clsPrefix = cls(cssClasses.PREFIX, className);
         const { activeSet } = this.state;
         return (
@@ -112,7 +129,8 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
                         keepDOM,
                         expandIconPosition,
                         onClick: this.onChange,
-                        motion
+                        motion,
+                        lazyRender,
                     }}
                 >
                     {children}

+ 2 - 0
packages/semi-ui/collapse/item.tsx

@@ -123,6 +123,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
             expandIconPosition,
             activeSet,
             motion,
+            lazyRender
         } = this.context;
         const active = activeSet.has(itemKey);
         const itemCls = cls(className, {
@@ -155,6 +156,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
                 {
                     children && (
                         <Collapsible
+                            lazyRender={lazyRender}
                             isOpen={active} keepDOM={keepDOM} motion={motion}
                             onMotionEnd={this.props.onMotionEnd}
                             reCalcKey={reCalcKey}>

+ 33 - 15
packages/semi-ui/collapsible/__test__/collapsible.test.js

@@ -16,29 +16,47 @@ describe('collapsible', () => {
         clear();
     });
 
-    it('keepDOM = true', async () => {
-        let component = getCollapsible({ keepDOM: true, motion: false });
+    it('keepDOM = true',  () => {
+        let component = getCollapsible({ keepDOM: true, motion: false, lazyRender:true });
         let collapsible = mount(component, { attachTo: document.getElementById('container') })
         expect(collapsible.exists(`.collapsible-test-content`)).toEqual(false);
-        // set true
-        collapsible.setProps({ isOpen: true });
-        collapsible.update(); // 必须调用一次update
+        collapsible.setProps({keepDOM: true, motion: false, lazyRender:false,isOpen:true})
+        collapsible.update();
         expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
-        collapsible.setProps({ isOpen: false });
-        collapsible.update(); // 必须调用一次update
-        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(false);
+        collapsible.unmount()
     });
 
-    it('keepDOM + lazyRender = false', () => {
-        let component = getCollapsible({ keepDOM: true, lazyRender: false });
-        let collapsible = mount(component);
+
+    it('keepDOM = true lazyRender=false', ()=>{
+        let component = getCollapsible({ keepDOM: true, motion: false, lazyRender:false });
+        let collapsible = mount(component, { attachTo: document.getElementById('container') })
+        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
+        collapsible.setProps({keepDOM: true, motion: false, lazyRender:false,isOpen:true})
+        collapsible.update();
         expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
+        collapsible.setProps({keepDOM: true, motion: false, lazyRender:false,isOpen:false})
+        collapsible.update();
+        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
+        collapsible.unmount()
+    })
+
+
+
+
+
+
+    it('keepDOM  lazyRender = false', () => {
+        let component = getCollapsible({ keepDOM: false,motion:false, lazyRender: false });
+        let collapsible = mount(component);
+        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(false);
         // set true
-        collapsible.setProps({ isOpen: true });
+        collapsible.setProps({ isOpen: true,motion:false,keepDOM: false, lazyRender: false });
         collapsible.update(); // 必须调用一次update
         expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
-        collapsible.setProps({ isOpen: false });
+        collapsible.setProps({ isOpen: false,motion:false,keepDOM: false, lazyRender: false });
         collapsible.update(); // 必须调用一次update
-        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(true);
+
+        expect(collapsible.exists(`.collapsible-test-content`)).toEqual(false);
+        collapsible.unmount()
     });
-});
+});

+ 71 - 0
packages/semi-ui/collapsible/_story/__snapshots__/collapsible.stories.tsx.snap

@@ -0,0 +1,71 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Collapsible 1`] = `
+<Demo>
+  <div>
+    <Button
+      block={false}
+      disabled={false}
+      htmlType="button"
+      onClick={[Function]}
+      onMouseDown={[Function]}
+      onMouseEnter={[Function]}
+      onMouseLeave={[Function]}
+      prefixCls="semi-button"
+      size="default"
+      theme="light"
+      type="primary"
+    >
+      <button
+        aria-disabled={false}
+        className="semi-button semi-button-primary semi-button-light"
+        disabled={false}
+        onClick={[Function]}
+        onMouseDown={[Function]}
+        onMouseEnter={[Function]}
+        onMouseLeave={[Function]}
+        type="button"
+      >
+        <span
+          className="semi-button-content"
+          onClick={[Function]}
+          x-semi-prop="children"
+        >
+          显示更多
+        </span>
+      </button>
+    </Button>
+    <Collapsible
+      collapseHeight={0}
+      duration={250}
+      fade={false}
+      isOpen={false}
+      keepDOM={false}
+      lazyRender={false}
+      motion={true}
+    >
+      <div
+        className="semi-collapsible-wrapper"
+        onTransitionEnd={[Function]}
+        style={
+          Object {
+            "height": 0,
+            "opacity": 1,
+            "overflow": "hidden",
+            "transitionDuration": "0ms",
+          }
+        }
+      >
+        <div
+          style={
+            Object {
+              "overflow": "hidden",
+            }
+          }
+          x-semi-prop="children"
+        />
+      </div>
+    </Collapsible>
+  </div>
+</Demo>
+`;

+ 10 - 2
packages/semi-ui/collapsible/index.tsx

@@ -43,13 +43,14 @@ class Collapsible extends BaseComponent<CollapsibleProps, CollapsibleState> {
         duration: 250,
         motion: true,
         keepDOM: false,
-        lazyRender: true,
+        lazyRender: false,
         collapseHeight: 0,
         fade: false
     }) 
     public foundation: CollapsibleFoundation;
     private domRef = React.createRef<HTMLDivElement>();
     private resizeObserver: ResizeObserver | null;
+    private hasBeenRendered: boolean = false;
 
     constructor(props: CollapsibleProps) {
         super(props);
@@ -175,7 +176,14 @@ class Collapsible extends BaseComponent<CollapsibleProps, CollapsibleState> {
             [`${cssClasses.PREFIX}-transition`]: this.props.motion && this.state.isTransitioning
         }, this.props.className);
 
-        const shouldRender = (this.props.keepDOM && !this.props.lazyRender) || this.props.collapseHeight !== 0 || this.state.visible || this.props.isOpen;
+        const shouldRender = (this.props.keepDOM &&
+            (this.props.lazyRender ? this.hasBeenRendered : true)) ||
+            this.props.collapseHeight !== 0 || this.state.visible || this.props.isOpen;
+
+        if (shouldRender && !this.hasBeenRendered) {
+            this.hasBeenRendered = true;
+        }
+
 
         return (
             <div

+ 2 - 2
packages/semi-ui/form/_story/FieldProps/name.jsx

@@ -136,10 +136,10 @@ const NameDemo = () => {
             <Form.Rating field="rating" name='rating' label='满意度(Rating)' initValue={2} style={{ width: '90%' }}/>
             <Form.Switch field='switch' name='switch' label='开关(Switch)'/>
             <Form.CheckboxGroup field="cardCheckbox" label='卡片选择' style={{ width: '90%' }} type='card' initValue={['1', '3']} direction={'horizontal'} aria-label="CheckboxGroup 示例">
-                <Form.Checkbox value={'1'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+                <Form.Checkbox value={'1'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
                     单选框标题
                 </Form.Checkbox>
-                <Form.Checkbox value={'2'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
+                <Form.Checkbox value={'2'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{ width: 280 }}>
                     单选框标题
                 </Form.Checkbox>
             </Form.CheckboxGroup>

+ 2 - 2
packages/semi-ui/form/_story/demo.jsx

@@ -351,10 +351,10 @@ class BasicDemoWithInit extends Component {
                     </Col>
                 </Row>
                 <Form.CheckboxGroup field="cardCheckbox" label='卡片选择' style={{ width: '90%' }} type='card' initValue={['1', '3']} direction={'horizontal'} aria-label="CheckboxGroup 示例">
-                    <Form.Checkbox value={'1'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{width:280}}>
+                    <Form.Checkbox value={'1'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{width:280}}>
                         单选框标题
                     </Form.Checkbox>
-                    <Form.Checkbox value={'2'} disabled extra='Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统' style={{width:280}}>
+                    <Form.Checkbox value={'2'} disabled extra='Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统' style={{width:280}}>
                         单选框标题
                     </Form.Checkbox>
                 </Form.CheckboxGroup>

+ 7 - 7
packages/semi-ui/list/_story/list.stories.jsx

@@ -156,7 +156,7 @@ export const ItemStructure = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -190,7 +190,7 @@ export const ItemLayout = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -224,7 +224,7 @@ export const ItemLayoutAlign = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -251,7 +251,7 @@ export const ItemLayoutAlign = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -278,7 +278,7 @@ export const ItemLayoutAlign = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -305,7 +305,7 @@ export const ItemLayoutAlign = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED
+                Semi Design 是由抖音前端团队与 UED
                 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
                 Web 应用。
               </p>
@@ -370,7 +370,7 @@ export const ResponsiveGrid = () => (
             <div>
               <span style={{ color: 'var(--semi-color-text-0)' }}>示例标题</span>
               <p style={{ color: 'var(--semi-color-text-2)', margin: '4px 0' }}>
-                Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。
+                Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。
               </p>
             </div>
           }

+ 1 - 1
packages/semi-ui/locale/_story/locale.stories.jsx

@@ -378,7 +378,7 @@ class I18nDemo extends React.Component {
                     <Typography.Paragraph copyable>Click to copy text.</Typography.Paragraph>
                     <h5>Typography - Collapsible</h5>
                     <Typography.Paragraph ellipsis={{ rows: 3, expandable: true, collapsible: true }} style={{ width: 300 }}>
-                        支持展开和折叠:Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+                        支持展开和折叠:Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
                     </Typography.Paragraph>
                     <h5>Transfer</h5>
                     <Transfer

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

@@ -1,6 +1,6 @@
 {
     "name": "@douyinfe/semi-ui",
-    "version": "2.55.0",
+    "version": "2.55.5",
     "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.55.0",
-        "@douyinfe/semi-animation-react": "2.55.0",
-        "@douyinfe/semi-foundation": "2.55.0",
-        "@douyinfe/semi-icons": "2.55.0",
-        "@douyinfe/semi-illustrations": "2.55.0",
-        "@douyinfe/semi-theme-default": "2.55.0",
+        "@douyinfe/semi-animation": "2.55.5",
+        "@douyinfe/semi-animation-react": "2.55.5",
+        "@douyinfe/semi-foundation": "2.55.5",
+        "@douyinfe/semi-icons": "2.55.5",
+        "@douyinfe/semi-illustrations": "2.55.5",
+        "@douyinfe/semi-theme-default": "2.55.5",
         "async-validator": "^3.5.0",
         "classnames": "^2.2.6",
         "copy-text-to-clipboard": "^2.1.1",

+ 74 - 50
packages/semi-ui/radio/_story/radio.stories.jsx

@@ -435,27 +435,51 @@ export const RadioGroupButtonStyle = () => {
     const onChange3 = e => {
       setValue3(e.target.value);
     };
+
+    const options = [
+      { label: 'semi', value: 1 },
+      { label: 'design', value: 2 },
+      { label: 'designToCode', value: 3 },
+      { label: 'dsm', value: 4 },
+    ];
+    
+    const rowStyle = { marginBottom: 12 }
+
+    const type = 'button';
+
     return (
-      <Space vertical spacing="loose" align="start">
-        <RadioGroup type="button" buttonSize="small" onChange={onChange1} value={value1} name="demo-radio-button-1">
-          <Radio value={1}>semi</Radio>
-          <Radio value={2}>pipixia</Radio>
-          <Radio value={3}>hotsoon</Radio>
-          <Radio value={4}>toutiao</Radio>
-        </RadioGroup>
-        <RadioGroup type="button" buttonSize="middle" onChange={onChange2} value={value2} name="demo-radio-button-2">
-          <Radio value={1}>semi</Radio>
-          <Radio value={2}>pipixia</Radio>
-          <Radio value={3}>hotsoon</Radio>
-          <Radio value={4}>toutiao</Radio>
-        </RadioGroup>
-        <RadioGroup type="button" buttonSize="large" onChange={onChange3} value={value3} name="demo-radio-button-3">
-          <Radio value={1}>semi</Radio>
-          <Radio value={2}>pipixia</Radio>
-          <Radio value={3}>hotsoon</Radio>
-          <Radio value={4}>toutiao</Radio>
-        </RadioGroup>
-      </Space>
+      <Row>
+        {/* default button radio */}
+        <Col span={12}>
+            <div style={rowStyle}>
+              <RadioGroup type={type} buttonSize="small" onChange={onChange1} options={options} value={value1} name="demo-radio-button-1" />
+            </div>
+            <div style={rowStyle}>
+              <RadioGroup type={type} buttonSize="middle" onChange={onChange2} options={options} value={value2} name="demo-radio-button-2" />
+            </div>
+            <div style={rowStyle}>
+              <RadioGroup type={type} buttonSize="large" onChange={onChange3} options={options}  value={value3} name="demo-radio-button-3" />
+            </div>
+        </Col>
+
+        {/* form radio button */}
+        <Col span={12}>
+            <Form>
+                <div style={rowStyle}>
+                  <Form.RadioGroup field='test1' type={type} buttonSize="small" onChange={onChange1} options={options}  value={value1} name="demo-radio-button-1">
+                  </Form.RadioGroup>
+                </div>
+                <div style={rowStyle}>
+                  <Form.RadioGroup field='test2' type={type} buttonSize="middle" onChange={onChange2} options={options}  value={value2} name="demo-radio-button-2">
+                  </Form.RadioGroup>
+                </div>
+                <div style={rowStyle}>
+                  <Form.RadioGroup field='test3' type={type} buttonSize="large" onChange={onChange3} options={options}  value={value3} name="demo-radio-button-3">
+                  </Form.RadioGroup>
+                </div>
+            </Form>
+        </Col>
+      </Row>
     );
   };
 
@@ -514,19 +538,19 @@ export const RadioGroupCardStyle = () => (
     <RadioGroup type="card" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
@@ -537,21 +561,21 @@ export const RadioGroupCardStyle = () => (
     <RadioGroup type="card" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
@@ -577,17 +601,17 @@ export const RadioGroupCardStyle = () => (
     <RadioGroup type="card" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
     </RadioGroup>
@@ -613,19 +637,19 @@ export const RadioGroupCardStyle = () => (
     <RadioGroup direction="vertical" type="card" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
@@ -636,21 +660,21 @@ export const RadioGroupCardStyle = () => (
     <RadioGroup direction="vertical" type="card" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
@@ -711,19 +735,19 @@ export const RadioGroupPureCardStyle = () => (
     <RadioGroup type="pureCard" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
@@ -734,21 +758,21 @@ export const RadioGroupPureCardStyle = () => (
     <RadioGroup type="pureCard" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 180 }}
       >
         多选框标题
@@ -774,17 +798,17 @@ export const RadioGroupPureCardStyle = () => (
     <RadioGroup type="pureCard" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       ></Radio>
     </RadioGroup>
@@ -810,19 +834,19 @@ export const RadioGroupPureCardStyle = () => (
     <RadioGroup direction="vertical" type="pureCard" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
       >
         多选框标题
       </Radio>
@@ -833,21 +857,21 @@ export const RadioGroupPureCardStyle = () => (
     <RadioGroup direction="vertical" type="pureCard" defaultValue={1}>
       <Radio
         value={1}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={2}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题
       </Radio>
       <Radio
         value={3}
-        extra="Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统"
+        extra="Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统"
         style={{ width: 380 }}
       >
         多选框标题

+ 48 - 1
packages/semi-ui/select/_story/select.stories.jsx

@@ -3463,4 +3463,51 @@ export const AllCaseOfBlur = () => {
       <br />
     </div>
   )
-}
+}
+
+export const UpdateOtherKeyNotInList = () => {
+  const [v, setV] = useState([
+    {
+      label: 'AA-Label',
+      value: 'AA',
+      otherProps: 'AA-OtherProps',
+    },
+  ]);
+
+  const change = () => {
+    setV([
+      {
+        label: 'AA-Label-2',
+        value: 'AA',
+        otherProps: 'AA-OtherProps-2',
+      },
+    ])
+  }
+
+  const renderSelectedItem = (optionNode) => {
+    const { label, otherProps } = optionNode;
+    const content = (
+      <div className='render-content'>
+        {label}-{otherProps}
+      </div>
+    );
+    return {
+      isRenderInTag: false,
+      content,
+    };
+  };
+  return (
+    <>
+      <Select
+        value={v}
+        onChange={setV}
+        filter
+        multiple
+        renderSelectedItem={renderSelectedItem}
+        onChangeWithObject
+        style={{ width: 320 }}
+      />
+      <Button id='change' onClick={() => change()}>change</Button>
+    </>
+  );
+};

+ 2 - 2
packages/semi-ui/table/_story/LinkedScroll/index.jsx

@@ -3,7 +3,7 @@ import { Table } from '@douyinfe/semi-ui';
 
 import './index.scss';
 
-const ariticle = `Semi Design 是由互娱社区前端团队与 UED
+const ariticle = `Semi Design 是由抖音前端团队与 UED
 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
 Web 应用。`;
 
@@ -11,7 +11,7 @@ const columns = [
     {
         title: 'Name',
         dataIndex: 'name',
-        render: text => <a href="javascript:;">{text}</a>,
+        render: text => <a href="https://semi.design">{text}</a>,
     },
     {
         title: 'Age',

+ 2 - 2
packages/semi-ui/tabs/_story/tabs.stories.jsx

@@ -48,7 +48,7 @@ class App extends React.Component {
                 lineHeight: 1.8,
               }}
             >
-              Semi Design 是由互娱社区前端团队与 UED
+              Semi Design 是由抖音前端团队与 UED
               团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
               Web 应用。
             </p>
@@ -80,7 +80,7 @@ class App extends React.Component {
                 lineHeight: 1.8,
               }}
             >
-              Semi Design 是由互娱社区前端团队与 UED
+              Semi Design 是由抖音前端团队与 UED
               团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
               Web 应用。
             </p>

+ 14 - 0
packages/semi-ui/tree/__test__/treeMultiple.test.js

@@ -807,4 +807,18 @@ describe('Tree', () => {
         const nodeZhongguo = tree.find(`.${BASE_CLASS_PREFIX}-tree-option.${BASE_CLASS_PREFIX}-tree-option-level-2`).at(0);
         expect(nodeZhongguo.find(`.${BASE_CLASS_PREFIX}-checkbox-inner-checked`).exists()).toEqual(true);
     });
+
+    it('value not in treeData', () => {
+        const spyOnChange = sinon.spy(() => {});
+        let tree = getTree({
+            multiple: true,
+            defaultValue: ['fish'],
+            onChange: spyOnChange,
+            defaultExpandAll: true,
+        });
+        let nodeYazhou = tree.find(`.${BASE_CLASS_PREFIX}-tree-option.${BASE_CLASS_PREFIX}-tree-option-level-1`).at(0);;
+        nodeYazhou.simulate('click');
+        expect(spyOnChange.calledWithMatch(['fish', 'Yazhou'])).toEqual(true);
+        tree.unmount();
+    })
 })

+ 1 - 1
packages/semi-ui/tree/treeNode.tsx

@@ -75,7 +75,7 @@ export default class TreeNode extends PureComponent<TreeNodeProps, TreeNodeState
         }
         const { onNodeCheck } = this.context;
         e.stopPropagation();
-        e.nativeEvent.stopImmediatePropagation();
+        e.nativeEvent?.stopImmediatePropagation?.();
         onNodeCheck(e, this.props);
     };
 

+ 41 - 41
packages/semi-ui/typography/_story/typography.stories.jsx

@@ -123,7 +123,7 @@ TextIcon.story = {
 export const _Paragraph = () => (
   <div>
     <Paragraph>
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
       <br />
@@ -141,7 +141,7 @@ export const _Paragraph = () => (
     </Paragraph>
     <br />
     <Paragraph spacing="extended">
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
       <br />
@@ -163,14 +163,14 @@ export const _Paragraph = () => (
 export const EllipsisSingle = () => (
   <div>
     <Paragraph ellipsis style={{ width: 350 }}>
-      这是一个单行截断的例子: Semi Design 是由互娱社区前端团队与 UED
+      这是一个单行截断的例子: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ expandable: true }} style={{ width: 350 }}>
-      单行截断并且支持展开:Semi Design 是由互娱社区前端团队与 UED
+      单行截断并且支持展开:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -181,21 +181,21 @@ export const EllipsisSingle = () => (
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ expandable: true, expandText: 'Show More' }} style={{ width: 350 }}>
-      单行截断并且支持展开,自定义展开文本: Semi Design 是由互娱社区前端团队与 UED
+      单行截断并且支持展开,自定义展开文本: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ expandText: 'Show More' }} style={{ width: 350 }}>
-      单行截断,自定义展开文本但是不能展开哦: Semi Design 是由互娱社区前端团队与 UED
+      单行截断,自定义展开文本但是不能展开哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ showTooltip: true }} style={{ width: 350 }}>
-      单行截断,展示tooltip: Semi Design 是由互娱社区前端团队与 UED
+      单行截断,展示tooltip: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -209,7 +209,7 @@ export const EllipsisSingle = () => (
       ellipsis={{ suffix: '喵喵喵', expandText: 'Show More', expandable: true }}
       style={{ width: 250 }}
     >
-      单行截断,有suffix哦: Semi Design 是由互娱社区前端团队与 UED
+      单行截断,有suffix哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -219,7 +219,7 @@ export const EllipsisSingle = () => (
       ellipsis={{ suffix: '喵喵喵', expandText: 'Show More', expandable: true }}
       style={{ width: '50%' }}
     >
-      单行截断,要自动适配宽度才可以: Semi Design 是由互娱社区前端团队与 UED
+      单行截断,要自动适配宽度才可以: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -234,7 +234,7 @@ EllipsisSingle.story = {
 export const EllipsisMultiple = () => (
   <div>
     <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
-      这是一个多行截断的例子: Semi Design 是由互娱社区前端团队与 UED
+      这是一个多行截断的例子: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -252,7 +252,7 @@ export const EllipsisMultiple = () => (
     </Paragraph>
     <br />
    <Paragraph ellipsis={{ rows: 3, expandable: true }} style={{ width: 280 }}>
-      多行截断并且支持展开:Semi Design 是由互娱社区前端团队与 UED
+      多行截断并且支持展开:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -262,28 +262,28 @@ export const EllipsisMultiple = () => (
       ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
       style={{ width: 250 }}
     >
-      多行截断并且支持展开,自定义展开文本: Semi Design 是由互娱社区前端团队与 UED
+      多行截断并且支持展开,自定义展开文本: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, expandText: 'Show More' }} style={{ width: 250 }}>
-      多行截断,自定义展开文本但是不能展开哦: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,自定义展开文本但是不能展开哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, showTooltip: true }} style={{ width: 250 }}>
-      多行截断,展示tooltip: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,展示tooltip: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, showTooltip: { type: 'popover' } }} style={{ width: 250 }}>
-      多行截断,展示popover: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,展示popover: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -293,7 +293,7 @@ export const EllipsisMultiple = () => (
       ellipsis={{ rows: 3, expandText: 'Show More', showTooltip: { type: 'popover' } }}
       style={{ width: 250 }}
     >
-      多行截断,有展开文字但是不能展开所以不能展示popover: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,有展开文字但是不能展开所以不能展示popover: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -304,14 +304,14 @@ export const EllipsisMultiple = () => (
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, suffix: '喵喵喵', expandable: true }} style={{ width: 250 }}>
-      多行截断,有suffix哦: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,有suffix哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, suffix: '喵喵喵', expandable: true }} style={{ width: '50%' }}>
-      多行截断,要自动适配宽度才可以: Semi Design 是由互娱社区前端团队与 UED
+      多行截断,要自动适配宽度才可以: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -334,7 +334,7 @@ EllipsisMultiple.story = {
 export const EllipsisChaos = () => (
   <div>
     <Paragraph ellipsis={{ rows: 3 }} style={{ width: 300 }}>
-      不可以有非文本,要抛出来warning: Semi Design 是由互娱社区前端团队与 UED
+      不可以有非文本,要抛出来warning: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。
       <br />{' '}
       设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
@@ -343,7 +343,7 @@ export const EllipsisChaos = () => (
     </Paragraph>
     <br />
     <Paragraph ellipsis copyable style={{ width: 350 }}>
-      还可以复制哦: Semi Design 是由互娱社区前端团队与 UED
+      还可以复制哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -360,14 +360,14 @@ export const EllipsisChaos = () => (
       }}
       style={{ width: 350 }}
     >
-      不要复制成功了: Semi Design 是由互娱社区前端团队与 UED
+      不要复制成功了: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis link style={{ width: 350 }}>
-      是一个链接呢: Semi Design 是由互娱社区前端团队与 UED
+      是一个链接呢: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -378,7 +378,7 @@ export const EllipsisChaos = () => (
       ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
       style={{ width: 250 }}
     >
-      是一个链接还能展开呢: Semi Design 是由互娱社区前端团队与 UED
+      是一个链接还能展开呢: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -390,21 +390,21 @@ export const EllipsisChaos = () => (
       ellipsis={{ expandable: true, rows: 3, expandText: 'Show More' }}
       style={{ width: 250 }}
     >
-      是一个链接还能展开呢还能复制呢: Semi Design 是由互娱社区前端团队与 UED
+      是一个链接还能展开呢还能复制呢: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Title heading={2} ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
-      是个2号标题哦: Semi Design 是由互娱社区前端团队与 UED
+      是个2号标题哦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Title>
     <br />
     <Title heading={4} link ellipsis={{ showTooltip: true }} style={{ width: 250 }}>
-      是个4号标题链接呢: Semi Design 是由互娱社区前端团队与 UED
+      是个4号标题链接呢: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -415,7 +415,7 @@ export const EllipsisChaos = () => (
       ellipsis={{ rows: 3, showTooltip: { type: 'popover' } }}
       style={{ width: 250 }}
     >
-      是个警告文本呢: Semi Design 是由互娱社区前端团队与 UED
+      是个警告文本呢: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -428,7 +428,7 @@ export const EllipsisChaos = () => (
       ellipsis={{ showTooltip: true }}
       style={{ width: 250 }}
     >
-      是个5号标题链接还有个小小的图标啦: Semi Design 是由互娱社区前端团队与 UED
+      是个5号标题链接还有个小小的图标啦: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -451,7 +451,7 @@ export const EllipsisCollapsible = () => (
       }}
       style={{ width: 300 }}
     >
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -467,7 +467,7 @@ export const EllipsisCollapsible = () => (
       }}
       style={{ width: 300 }}
     >
-      自定义的收起:Semi Design 是由互娱社区前端团队与 UED
+      自定义的收起:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -483,7 +483,7 @@ export const EllipsisCollapsible = () => (
       }}
       style={{ width: 300 }}
     >
-      不让你收起来略:Semi Design 是由互娱社区前端团队与 UED
+      不让你收起来略:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -499,7 +499,7 @@ export const EllipsisCollapsible = () => (
       }}
       style={{ width: 300 }}
     >
-      又可以复制啦:Semi Design 是由互娱社区前端团队与 UED
+      又可以复制啦:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -515,7 +515,7 @@ export const EllipsisCollapsible = () => (
       }}
       style={{ width: 300 }}
     >
-      又来测试链接啦啦啦:Semi Design 是由互娱社区前端团队与 UED
+      又来测试链接啦啦啦:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -539,7 +539,7 @@ export const EllipsisFromCenter = () => (
       }}
       style={{ width: 300 }}
     >
-      多行中间截断还能展开和折叠:Semi Design 是由互娱社区前端团队与 UED
+      多行中间截断还能展开和折叠:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -558,28 +558,28 @@ export const EllipsisFromCenter = () => (
       }}
       style={{ width: 300 }}
     >
-      单行中间截断还能展开和折叠: Semi Design 是由互娱社区前端团队与 UED
+      单行中间截断还能展开和折叠: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ pos: 'middle', expandable: true }} style={{ width: 300 }}>
-      单行中间截断还能展开超厉害: Semi Design 是由互娱社区前端团队与 UED
+      单行中间截断还能展开超厉害: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ pos: 'middle' }} style={{ width: '50%' }}>
-      单行中间截断: Semi Design 是由互娱社区前端团队与 UED
+      单行中间截断: Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
     </Paragraph>
     <br />
     <Paragraph ellipsis={{ rows: 3, pos: 'middle', expandable: true }} style={{ width: '50%' }}>
-      自动适配的多行中间截断:Semi Design 是由互娱社区前端团队与 UED
+      自动适配的多行中间截断:Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -623,7 +623,7 @@ EllipsisFromCenter.story = {
 export const Copyable = () => (
   <div>
     <Paragraph copyable>
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。 区别于其他的设计系统而言,Semi Design
       以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
@@ -636,7 +636,7 @@ export const Copyable = () => (
     }} >点击右边的图标复制文本。</Paragraph>
     <br />
     <Paragraph spacing="extended" copyable>
-      Semi Design 是由互娱社区前端团队与 UED
+      Semi Design 是由抖音前端团队与 UED
       团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
       Web 应用。
       <br />
@@ -655,7 +655,7 @@ export const Copyable = () => (
     <br />
     <Paragraph spacing="extended" copyable>
       <span>
-        Semi Design 是由互娱社区前端团队与 UED
+        Semi Design 是由抖音前端团队与 UED
         团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的
         Web 应用。 ➡️
       </span>

+ 9 - 9
packages/semi-ui/typography/_story/typography.stories.tsx

@@ -84,7 +84,7 @@ stories.add('Text icon', () => (
 stories.add('Paragraph', () => (
     <div>
         <Paragraph>
-            Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+            Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             <br/>
             区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
             <br/>
@@ -98,7 +98,7 @@ stories.add('Paragraph', () => (
         </Paragraph>
         <br />
         <Paragraph spacing="extended">
-            Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+            Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             <br/>
             区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
             <br/>
@@ -117,12 +117,12 @@ stories.add('Paragraph', () => (
 stories.add('Ellipsis', () => (
     <div>
         <Paragraph ellipsis style={{width: 250}}>
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
         </Paragraph>
         <br />
         <Paragraph ellipsis={{rows: 3}} style={{width: 300}}>
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
         </Paragraph>
         <br />
@@ -131,12 +131,12 @@ stories.add('Ellipsis', () => (
         </Paragraph>
         <br />
         <Paragraph ellipsis={{rows: 3, expandable: true}} style={{width: 250}}>
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
         </Paragraph>
         <br />
         <Paragraph ellipsis={{expandable: true}} style={{width: 250}}>
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
         </Paragraph>
     </div>
@@ -145,7 +145,7 @@ stories.add('Ellipsis', () => (
 stories.add('Copyable', () => (
     <div>
         <Paragraph copyable>
-        Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+        Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
 区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有四大优势。
         </Paragraph>
         <br />
@@ -154,7 +154,7 @@ stories.add('Copyable', () => (
         </Paragraph>
         <br />
         <Paragraph spacing="extended" copyable>
-            Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+            Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             <br/>
             区别于其他的设计系统而言,Semi Design 以用户中心、内容优先、设计人性化为设计理念,具有以下优势:
             <br/>
@@ -168,7 +168,7 @@ stories.add('Copyable', () => (
         </Paragraph>
         <br />
         <Paragraph spacing="extended" copyable>
-            <span>Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
+            <span>Semi Design 是由抖音前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
             ➡️</span>
         </Paragraph>
     </div>

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

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

+ 1 - 0
packages/semi-webpack/src/componentName.ts

@@ -59,4 +59,5 @@ const componentVariablePathList: string[] = [
     '@douyinfe/semi-foundation/upload/variables.scss'
 ];
 
+
 export default componentVariablePathList;

+ 154 - 154
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>2024-03-22T10:17:49.561Z</lastmod>
+        <lastmod>2024-04-02T07:21:32.704Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://medium.com/front-end-weekly/how-we-test-semi-design-component-libraries-64b854f63b65</loc>
-        <lastmod>2024-03-22T10:17:48.892Z</lastmod>
+        <lastmod>2024-04-02T07:21:31.743Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://mp.weixin.qq.com/s/noHoWRuA25PgqFNcurhIUA</loc>
-        <lastmod>2024-03-22T10:17:52.220Z</lastmod>
+        <lastmod>2024-04-02T07:21:35.299Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://mp.weixin.qq.com/s/O3js-SZDNPEOjGxh-aAkbw</loc>
-        <lastmod>2024-03-22T10:17:51.882Z</lastmod>
+        <lastmod>2024-04-02T07:21:35.208Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
@@ -334,7 +334,7 @@
     </url>
     <url>
         <loc>https://semi.design/design/zh-CN/feedback/banner</loc>
-        <lastmod>2024-03-18T12:30:42.766Z</lastmod>
+        <lastmod>2024-04-01T06:36:36.126Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.133</scm>
     </url>
@@ -418,7 +418,7 @@
     </url>
     <url>
         <loc>https://semi.design/design/zh-CN/input/input</loc>
-        <lastmod>2024-03-18T12:30:43.619Z</lastmod>
+        <lastmod>2024-04-01T06:36:36.705Z</lastmod>
         <changefreq>weekly</changefreq>
         <scm>1.0.0.133</scm>
     </url>
@@ -652,9 +652,9 @@
     </url>
     <url>
         <loc>https://semi.design/design/zh-CN/visual/layout</loc>
-        <lastmod>2024-03-18T12:30:45.345Z</lastmod>
+        <lastmod>2024-04-02T07:21:40.694Z</lastmod>
         <changefreq>weekly</changefreq>
-        <scm>1.0.0.133</scm>
+        <scm>1.0.0.130</scm>
     </url>
     <url>
         <loc>https://semi.design/design/zh-CN/visual/spacings</loc>
@@ -784,83 +784,83 @@
     </url>
     <url>
         <loc>https://semi.design/dsm/landing</loc>
-        <lastmod>2024-03-22T10:18:01.260Z</lastmod>
+        <lastmod>2024-03-29T06:27:45.272Z</lastmod>
         <changefreq>weekly</changefreq>
-        <scm>1.0.0.168</scm>
+        <scm>1.0.0.169</scm>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/divider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/grid</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/icon</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/layout</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/space</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/tokens</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/basic/typography</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/banner</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/notification</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/popconfirm</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/progress</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/skeleton</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/spin</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/feedback/toast</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/autocomplete</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
@@ -870,362 +870,362 @@
     </url>
     <url>
         <loc>https://semi.design/en-US/input/cascader</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/checkbox</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/datepicker</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/form</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/input</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/inputnumber</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/radio</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/rating</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/select</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/slider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/switch</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/taginput</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/timepicker</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/transfer</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/treeselect</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/input/upload</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/anchor</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/backtop</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/breadcrumb</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/navigation</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/pagination</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/steps</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/tabs</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/navigation/tree</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/other/configprovider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/other/locale</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/avatar</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/badge</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/calendar</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/card</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/carousel</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/collapse</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/collapsible</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/descriptions</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/dropdown</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/empty</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/highlight</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/image</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/list</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/modal</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/overflowlist</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/popover</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/scrolllist</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/sidesheet</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/table</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/tag</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/timeline</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/show/tooltip</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/accessibility</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/changelog</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/customize-theme</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/dark-mode</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/faq</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/getting-started</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/introduction</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/overview</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/en-US/start/update-to-v2</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/divider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/grid</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/icon</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/layout</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/space</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/tokens</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/basic/typography</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/banner</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/notification</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/popconfirm</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/progress</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/skeleton</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/spin</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/feedback/toast</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/autocomplete</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
@@ -1235,287 +1235,287 @@
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/cascader</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/checkbox</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/datepicker</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/form</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/input</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/inputnumber</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/radio</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/rating</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/select</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/slider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/switch</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/taginput</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/timepicker</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/transfer</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/treeselect</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/input/upload</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/anchor</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/backtop</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/breadcrumb</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/navigation</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/pagination</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/steps</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/tabs</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/navigation/tree</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/other/configprovider</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/other/locale</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/avatar</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/badge</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/calendar</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/card</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/carousel</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/collapse</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/collapsible</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/descriptions</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/dropdown</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/empty</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/highlight</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/image</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/list</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/modal</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/overflowlist</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/popover</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/scrolllist</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/sidesheet</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/table</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/tag</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/timeline</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/show/tooltip</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/accessibility</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/changelog</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/customize-theme</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/dark-mode</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/faq</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/getting-started</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/introduction</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/overview</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
     <url>
         <loc>https://semi.design/zh-CN/start/update-to-v2</loc>
-        <lastmod>2024-03-22T09:45:41.000Z</lastmod>
+        <lastmod>2024-04-02T06:46:30.000Z</lastmod>
         <changefreq>weekly</changefreq>
     </url>
 </urlset>

+ 0 - 1
test.txt

@@ -1 +0,0 @@
-test3

+ 3 - 115
yarn.lock

@@ -1519,25 +1519,11 @@
     "@douyinfe/semi-animation-styled" "2.23.2"
     classnames "^2.2.6"
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-react/-/semi-animation-react-2.54.1.tgz#0bd3b3d980eeb5c958d98180a10908c02fe0e1f7"
-  integrity sha512-xLVK8Tu75p90oduD16Nhftk77REgo+Z608irWOumuYdfsAiSNjLq5xn/OqHGfmtn4iFYCkJglQDorH6cyckJBQ==
-  dependencies:
-    "@douyinfe/semi-animation" "2.54.1"
-    "@douyinfe/semi-animation-styled" "2.54.1"
-    classnames "^2.2.6"
-
 "@douyinfe/[email protected]":
   version "2.23.2"
   resolved "https://registry.npmjs.org/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.23.2.tgz#f18bc074515441c297cc636ed98521e249d093c9"
   integrity sha512-cKaA1yGHPF76Rx7EZDZicj+1oX1su2wnqb/UGFOTquAwqWmkTfgQ+EKxCd/N704WH+RtmGf4xbrJKpBvvcEdSQ==
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation-styled/-/semi-animation-styled-2.54.1.tgz#b491fa6356e7ee97e875d779bb80ba34a9dcdd2e"
-  integrity sha512-Y/DCtb6UyCenNY6aG8oQGE/Sy2s6+D6ghrjJ0HdcXutoLGuWmk7xMw6RDx+aZUxthQE3dqfc7EbuZ8rYqQRpYg==
-
 "@douyinfe/[email protected]":
   version "2.12.0"
   resolved "https://registry.npmjs.org/@douyinfe/semi-animation/-/semi-animation-2.12.0.tgz#51fe52d3911c2591a80a6e9fe96e6809c1511f13"
@@ -1553,13 +1539,6 @@
   dependencies:
     bezier-easing "^2.1.0"
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-animation/-/semi-animation-2.54.1.tgz#1d5334a5c89291c8dfac9408ca8017eea0f048ca"
-  integrity sha512-Bj/RUTIeSXi5IZqK02UC4bTMD1O9JCzaomtQ7v8dyp9SF3MIpeKNppNw7/wa3vHv5iW+QbJdF2wsxTGgJtCnrQ==
-  dependencies:
-    bezier-easing "^2.1.0"
-
 "@douyinfe/[email protected]":
   version "2.33.1"
   resolved "https://registry.npmjs.org/@douyinfe/semi-foundation/-/semi-foundation-2.33.1.tgz#1dfe6233e35a4ed768cb580b0c9a677d1c34ffba"
@@ -1574,21 +1553,6 @@
     memoize-one "^5.2.1"
     scroll-into-view-if-needed "^2.2.24"
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-foundation/-/semi-foundation-2.54.1.tgz#d46dca2749fe3c6dd506e41ed2c18dbfbb0e0b67"
-  integrity sha512-RaeTfCb/0AsqJrDWRI6zRsQcie0IogddkVuYFiQfuMhHFrjUG8O5IPNvv6d5+8O0L9zkdIxQ95LE6BcEhZe+dg==
-  dependencies:
-    "@douyinfe/semi-animation" "2.54.1"
-    async-validator "^3.5.0"
-    classnames "^2.2.6"
-    date-fns "^2.29.3"
-    date-fns-tz "^1.3.8"
-    fast-copy "^3.0.1 "
-    lodash "^4.17.21"
-    memoize-one "^5.2.1"
-    scroll-into-view-if-needed "^2.2.24"
-
 "@douyinfe/[email protected]", "@douyinfe/semi-icons@latest":
   version "2.33.1"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.33.1.tgz#8e2871d9bc0ab7e12df74e3c71802d53d69b7425"
@@ -1596,23 +1560,11 @@
   dependencies:
     classnames "^2.2.6"
 
-"@douyinfe/[email protected]", "@douyinfe/semi-icons@^2.0.0":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-icons/-/semi-icons-2.54.1.tgz#ff3ea6601eabae741dc85de0b8e496b311696352"
-  integrity sha512-cykK857iXU4nkGqk8sm/ZgFD8A48NVk9yr1ThLS0E6PzYwBU/KpavYWGHciNdeFOpFMsiUvMPYVH96jRglpkJw==
-  dependencies:
-    classnames "^2.2.6"
-
 "@douyinfe/[email protected]":
   version "2.33.1"
   resolved "https://registry.npmjs.org/@douyinfe/semi-illustrations/-/semi-illustrations-2.33.1.tgz#530ab851f4dc32a52221c4067c778c800b9b55d7"
   integrity sha512-tTTUN8QwnQiF++sk4VBNzfkG87aYZ4iUeqk2ys8/ymVUmCZQ7y46ys020GO1MfPHRR47OMFPI82FVcH1WQtE3g==
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-illustrations/-/semi-illustrations-2.54.1.tgz#006d79568856942442ad7e8da9d5b841397bcf7b"
-  integrity sha512-8Vg0Ty6OdQRHVpu5OBFpw5b92Z4eRx1ArQtygsOfYnVeKVOc7IytrS5eQZxijMx1ScFshrlk3qISe40D3HVS6g==
-
 "@douyinfe/[email protected]":
   version "2.23.2"
   resolved "https://registry.npmjs.org/@douyinfe/semi-scss-compile/-/semi-scss-compile-2.23.2.tgz#30884bb194ee9ae1e81877985e5663c3297c1ced"
@@ -1686,40 +1638,6 @@
   dependencies:
     glob "^7.1.6"
 
-"@douyinfe/[email protected]":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-theme-default/-/semi-theme-default-2.54.1.tgz#86e403a1ebb4f25ae44242701a0c5616406ea7ca"
-  integrity sha512-LispAQ9H0MjgO3WcoM2lLFvtMUMAyqontOrdoIq37s2iaC8ZP7nHH50wvlOprzWmz7zH7F7ls6DiWLw0Nd6/UA==
-  dependencies:
-    glob "^7.1.6"
-
-"@douyinfe/semi-ui@^2.0.0":
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.54.1.tgz#ccba9779daee6584a80382f82aa595b1ceda89c3"
-  integrity sha512-rgABgQO038Q/pdsuz1kUTpaliZmhIj64yOmuoNBG3zVEhRJ+WpkWuwn1kGXHR+sCKDZ+4EydEFhwpLaRV96+sQ==
-  dependencies:
-    "@dnd-kit/core" "^6.0.8"
-    "@dnd-kit/sortable" "^7.0.2"
-    "@dnd-kit/utilities" "^3.2.1"
-    "@douyinfe/semi-animation" "2.54.1"
-    "@douyinfe/semi-animation-react" "2.54.1"
-    "@douyinfe/semi-foundation" "2.54.1"
-    "@douyinfe/semi-icons" "2.54.1"
-    "@douyinfe/semi-illustrations" "2.54.1"
-    "@douyinfe/semi-theme-default" "2.54.1"
-    async-validator "^3.5.0"
-    classnames "^2.2.6"
-    copy-text-to-clipboard "^2.1.1"
-    date-fns "^2.29.3"
-    date-fns-tz "^1.3.8"
-    fast-copy "^3.0.1 "
-    lodash "^4.17.21"
-    prop-types "^15.7.2"
-    react-resizable "^3.0.5"
-    react-window "^1.8.2"
-    scroll-into-view-if-needed "^2.2.24"
-    utility-types "^3.10.0"
-
 "@douyinfe/semi-ui@latest":
   version "2.33.1"
   resolved "https://registry.yarnpkg.com/@douyinfe/semi-ui/-/semi-ui-2.33.1.tgz#3234ca96eb3560b8299bc9750fbe59446522d9bb"
@@ -11693,11 +11611,6 @@ eslint-plugin-react@^7.20.6, eslint-plugin-react@^7.24.0:
     semver "^6.3.0"
     string.prototype.matchall "^4.0.8"
 
-eslint-plugin-semi-design@^2.33.0:
-  version "2.54.1"
-  resolved "https://registry.yarnpkg.com/eslint-plugin-semi-design/-/eslint-plugin-semi-design-2.54.1.tgz#0dd381b8a897e4e5236705e813fd04d221dffdce"
-  integrity sha512-B3vRUJElJ4A469wLmPvJYRUnooa0oFuHfIksEC39EZuk+cOjE7GHukWJUHb6fUJDKstn+6VNbA3CwZL+8KNdzA==
-
 eslint-rule-composer@^0.3.0:
   version "0.3.0"
   resolved "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz#79320c927b0c5c0d3d3d2b76c8b4a488f25bbaf9"
@@ -24212,7 +24125,7 @@ string-similarity@^1.2.2:
     lodash.map "^4.6.0"
     lodash.maxby "^4.6.0"
 
-"string-width-cjs@npm:string-width@^4.2.0":
+"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
   integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -24230,15 +24143,6 @@ string-width@^1.0.1, string-width@^1.0.2:
     is-fullwidth-code-point "^1.0.0"
     strip-ansi "^3.0.0"
 
-"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
-  version "4.2.3"
-  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
-  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.1"
-
 string-width@^2.0.0, string-width@^2.1.0:
   version "2.1.1"
   resolved "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
@@ -24361,7 +24265,7 @@ stringify-object@^3.3.0:
     is-obj "^1.0.1"
     is-regexp "^1.0.0"
 
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
   version "6.0.1"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -24389,13 +24293,6 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
   dependencies:
     ansi-regex "^4.1.0"
 
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
-  version "6.0.1"
-  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
-  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-  dependencies:
-    ansi-regex "^5.0.1"
-
 strip-ansi@^7.0.1:
   version "7.0.1"
   resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2"
@@ -26843,7 +26740,7 @@ worker-farm@^1.7.0:
   dependencies:
     errno "~0.1.7"
 
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
   version "7.0.0"
   resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
   integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -26878,15 +26775,6 @@ wrap-ansi@^6.2.0:
     string-width "^4.1.0"
     strip-ansi "^6.0.0"
 
-wrap-ansi@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
-  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
-  dependencies:
-    ansi-styles "^4.0.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-
 wrap-ansi@^8.1.0:
   version "8.1.0"
   resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"