@douyinfe/semi-ui 2.1.5 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/_base/_story/a11y.jsx +1302 -0
  2. package/_base/_story/a11y.scss +49 -0
  3. package/_base/_story/index.stories.js +3 -1
  4. package/_utils/index.ts +9 -4
  5. package/cascader/__test__/cascader.test.js +221 -0
  6. package/cascader/_story/cascader.stories.js +138 -0
  7. package/cascader/index.tsx +37 -21
  8. package/cascader/item.tsx +4 -2
  9. package/datePicker/__test__/datePicker.test.js +85 -2
  10. package/datePicker/_story/datePicker.stories.js +29 -1
  11. package/datePicker/_story/v2/YearButton.jsx +17 -0
  12. package/datePicker/_story/v2/index.js +1 -0
  13. package/datePicker/monthsGrid.tsx +12 -1
  14. package/datePicker/navigation.tsx +55 -29
  15. package/descriptions/__test__/descriptions.test.js +27 -1
  16. package/descriptions/_story/descriptions.stories.js +52 -2
  17. package/descriptions/item.tsx +1 -1
  18. package/dist/css/semi.css +49 -25
  19. package/dist/css/semi.min.css +1 -1
  20. package/dist/umd/semi-ui.js +839 -253
  21. package/dist/umd/semi-ui.js.map +1 -1
  22. package/dist/umd/semi-ui.min.js +1 -1
  23. package/dist/umd/semi-ui.min.js.map +1 -1
  24. package/empty/index.tsx +2 -2
  25. package/form/_story/form.stories.js +0 -67
  26. package/gulpfile.js +2 -1
  27. package/lib/cjs/_utils/index.d.ts +1 -0
  28. package/lib/cjs/_utils/index.js +12 -5
  29. package/lib/cjs/cascader/index.d.ts +7 -0
  30. package/lib/cjs/cascader/index.js +35 -22
  31. package/lib/cjs/cascader/item.d.ts +2 -0
  32. package/lib/cjs/cascader/item.js +4 -2
  33. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
  34. package/lib/cjs/datePicker/monthsGrid.js +6 -0
  35. package/lib/cjs/datePicker/navigation.js +47 -7
  36. package/lib/cjs/descriptions/item.js +1 -1
  37. package/lib/cjs/empty/index.d.ts +2 -2
  38. package/lib/cjs/empty/index.js +19 -18
  39. package/lib/cjs/form/baseForm.d.ts +5 -0
  40. package/lib/cjs/form/field.d.ts +5 -0
  41. package/lib/cjs/locale/source/es.d.ts +7 -0
  42. package/lib/cjs/locale/source/es.js +168 -0
  43. package/lib/cjs/pagination/index.js +9 -4
  44. package/lib/cjs/rating/item.js +1 -1
  45. package/lib/cjs/select/index.d.ts +9 -0
  46. package/lib/cjs/select/index.js +13 -9
  47. package/lib/cjs/tabs/index.js +3 -7
  48. package/lib/cjs/timeline/item.d.ts +3 -0
  49. package/lib/cjs/timeline/item.js +10 -4
  50. package/lib/cjs/upload/fileCard.d.ts +2 -0
  51. package/lib/cjs/upload/fileCard.js +70 -45
  52. package/lib/cjs/upload/index.d.ts +23 -2
  53. package/lib/cjs/upload/index.js +133 -25
  54. package/lib/cjs/upload/interface.d.ts +3 -0
  55. package/lib/es/_utils/index.d.ts +1 -0
  56. package/lib/es/_utils/index.js +12 -5
  57. package/lib/es/cascader/index.d.ts +7 -0
  58. package/lib/es/cascader/index.js +34 -25
  59. package/lib/es/cascader/item.d.ts +2 -0
  60. package/lib/es/cascader/item.js +4 -2
  61. package/lib/es/datePicker/monthsGrid.d.ts +1 -0
  62. package/lib/es/datePicker/monthsGrid.js +6 -0
  63. package/lib/es/datePicker/navigation.js +48 -8
  64. package/lib/es/descriptions/item.js +1 -1
  65. package/lib/es/empty/index.d.ts +2 -2
  66. package/lib/es/empty/index.js +19 -18
  67. package/lib/es/form/baseForm.d.ts +5 -0
  68. package/lib/es/form/field.d.ts +5 -0
  69. package/lib/es/locale/source/es.d.ts +7 -0
  70. package/lib/es/locale/source/es.js +157 -0
  71. package/lib/es/pagination/index.js +8 -4
  72. package/lib/es/rating/item.js +1 -1
  73. package/lib/es/select/index.d.ts +9 -0
  74. package/lib/es/select/index.js +17 -9
  75. package/lib/es/tabs/index.js +1 -5
  76. package/lib/es/timeline/item.d.ts +3 -0
  77. package/lib/es/timeline/item.js +9 -4
  78. package/lib/es/upload/fileCard.d.ts +2 -0
  79. package/lib/es/upload/fileCard.js +69 -44
  80. package/lib/es/upload/index.d.ts +23 -2
  81. package/lib/es/upload/index.js +133 -24
  82. package/lib/es/upload/interface.d.ts +3 -0
  83. package/locale/source/es.ts +160 -0
  84. package/navigation/__test__/navigation.test.js +4 -4
  85. package/navigation/_story/AutoOpen/index.js +1 -1
  86. package/navigation/_story/WithChildren/index.js +1 -1
  87. package/navigation/_story/navigation.stories.js +1 -1
  88. package/navigation/_story/navigation.stories.tsx +4 -4
  89. package/package.json +17 -9
  90. package/pagination/_story/pagination.stories.js +11 -0
  91. package/pagination/index.tsx +9 -4
  92. package/popover/Arrow.tsx +1 -1
  93. package/rating/item.tsx +1 -1
  94. package/select/_story/select.stories.js +39 -14
  95. package/select/index.tsx +18 -7
  96. package/table/_story/DynamicFilters/index.js +13 -16
  97. package/tabs/index.tsx +1 -1
  98. package/timeline/_story/timeline.stories.js +70 -6
  99. package/timeline/item.tsx +7 -2
  100. package/tooltip/_story/tooltip.stories.js +1 -1
  101. package/upload/__test__/upload.test.js +50 -1
  102. package/upload/fileCard.tsx +110 -95
  103. package/upload/index.tsx +147 -53
  104. package/upload/interface.ts +3 -0
@@ -0,0 +1,1302 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import {
3
+ Avatar,
4
+ Badge,
5
+ Breadcrumb,
6
+ Button,
7
+ Layout,
8
+ Nav,
9
+ Pagination,
10
+ Popover,
11
+ Rating,
12
+ Row,
13
+ Steps,
14
+ Space,
15
+ Tag,
16
+ Timeline,
17
+ Tooltip,
18
+ Col,
19
+ Typography,
20
+ Anchor,
21
+ BackTop,
22
+ Tabs,
23
+ TabPane,
24
+ Calendar,
25
+ Card,
26
+ Collapse,
27
+ Descriptions,
28
+ Dropdown,
29
+ Empty,
30
+ List,
31
+ ButtonGroup,
32
+ Modal,
33
+ OverflowList,
34
+ Slider,
35
+ SideSheet,
36
+ Table,
37
+ Banner,
38
+ Popconfirm,
39
+ Notification,
40
+ Progress,
41
+ Toast,
42
+ Spin,
43
+ Form,
44
+ Select,
45
+ Collapsible,
46
+ Skeleton,
47
+ Tree,
48
+ Transfer
49
+ } from '@douyinfe/semi-ui';
50
+ import {
51
+ IconSemiLogo,
52
+ IconBell,
53
+ IconHelpCircle,
54
+ IconBytedanceLogo,
55
+ IconHome,
56
+ IconHistogram,
57
+ IconLive,
58
+ IconSetting,
59
+ IconEdit,
60
+ IconCamera,
61
+ IconAlarm,
62
+ IconBookmark,
63
+ IconDuration,
64
+ IconFolder,
65
+ IconDelete,
66
+ IconUpload,
67
+ IconSun,
68
+ IconMoon,
69
+ IconSearch
70
+ } from '@douyinfe/semi-icons';
71
+ import {
72
+ IllustrationConstruction,
73
+ IllustrationConstructionDark,
74
+ IllustrationNoResult,
75
+ IllustrationNoResultDark,
76
+ IllustrationSuccess,
77
+ IllustrationSuccessDark,
78
+ IllustrationFailure,
79
+ IllustrationFailureDark,
80
+ IllustrationNoAccess,
81
+ IllustrationNoAccessDark,
82
+ IllustrationNoContent,
83
+ IllustrationNoContentDark,
84
+ IllustrationNotFound,
85
+ IllustrationNotFoundDark,
86
+ IllustrationIdle,
87
+ IllustrationIdleDark
88
+ } from '@douyinfe/semi-illustrations';
89
+ import './a11y.scss';
90
+
91
+ SemiA11y.storyName = 'Semi A11y';
92
+
93
+ const raw = [
94
+ {
95
+ key: '1',
96
+ name: 'Semi Design 设计稿标题可能有点长这时候应该显示 Tooltip.fig',
97
+ nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/figma-icon.png',
98
+ size: '2M',
99
+ owner: '姜鹏志',
100
+ updateTime: '2020-02-02 05:13',
101
+ avatarBg: 'grey',
102
+ },
103
+ {
104
+ key: '2',
105
+ name: 'Semi Design 分享演示文稿',
106
+ nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
107
+ size: '2M',
108
+ owner: '郝宣',
109
+ updateTime: '2020-01-17 05:31',
110
+ avatarBg: 'red',
111
+ },
112
+ {
113
+ key: '3',
114
+ name: '设计文档',
115
+ nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
116
+ size: '34KB',
117
+ owner: 'Zoey Edwards',
118
+ updateTime: '2020-01-26 11:01',
119
+ avatarBg: 'light-blue',
120
+ },
121
+ {
122
+ key: '4',
123
+ name: 'Semi Pro 设计文档可能也有点长所以也会显示Tooltip',
124
+ nameIconSrc: 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/docs-icon.png',
125
+ size: '34KB',
126
+ owner: '姜琪',
127
+ updateTime: '2020-01-26 11:01',
128
+ avatarBg: 'green',
129
+ },
130
+ ];
131
+
132
+ const treeData = [
133
+ {
134
+ label: '亚洲',
135
+ value: 'Asia',
136
+ key: '0',
137
+ children: [
138
+ {
139
+ label: '中国',
140
+ value: 'China',
141
+ key: '0-0',
142
+ children: [
143
+ {
144
+ label: '北京',
145
+ value: 'Beijing',
146
+ key: '0-0-0',
147
+ },
148
+ {
149
+ label: '上海',
150
+ value: 'Shanghai',
151
+ key: '0-0-1',
152
+ },
153
+ ],
154
+ },
155
+ ],
156
+ },
157
+ {
158
+ label: '北美洲',
159
+ value: 'North America',
160
+ key: '1',
161
+ }
162
+ ];
163
+
164
+ const listData = [
165
+ {
166
+ title: '审核管理平台',
167
+ rating: 4.5,
168
+ feedbacks: 124,
169
+ },
170
+ {
171
+ title: '扁鹊',
172
+ rating: 4,
173
+ feedbacks: 108,
174
+ },
175
+ {
176
+ title: '直播审核平台',
177
+ rating: 3.5,
178
+ feedbacks: 244,
179
+ },
180
+ {
181
+ title: '抖音安全测试',
182
+ feedbacks: 189,
183
+ },
184
+ {
185
+ title: '内容平台',
186
+ rating: 3,
187
+ feedbacks: 128,
188
+ },
189
+ {
190
+ title: '策略平台',
191
+ rating: 4,
192
+ feedbacks: 156,
193
+ },
194
+ ];
195
+
196
+ const style = { width: '90%' };
197
+ const initValues = {
198
+ name: 'semi',
199
+ business: ['ulikeCam'],
200
+ role: 'ued',
201
+ switch: true,
202
+ files: [
203
+ {
204
+ uid: '1',
205
+ name: 'vigo.png',
206
+ status: 'success',
207
+ size: '130KB',
208
+ preview: true,
209
+ url:
210
+ 'https://lf3-static.bytednsdoc.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/vigo.png',
211
+ },
212
+ {
213
+ uid: '2',
214
+ name: 'jiafang1.jpeg',
215
+ status: 'validateFail',
216
+ size: '222KB',
217
+ percent: 50,
218
+ preview: true,
219
+ fileInstance: new File([new ArrayBuffer(2048)], 'jiafang1.jpeg', { type: 'image/jpeg' }),
220
+ url:
221
+ 'https://sf6-cdn-tos.douyinstatic.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bf8647bffab13c38772c9ff94bf91a9d.jpg',
222
+ },
223
+ {
224
+ uid: '3',
225
+ name: 'jiafang2.jpeg',
226
+ status: 'uploading',
227
+ size: '222KB',
228
+ percent: 50,
229
+ preview: true,
230
+ fileInstance: new File([new ArrayBuffer(2048)], 'jiafang2.jpeg', { type: 'image/jpeg' }),
231
+ url:
232
+ 'https://sf6-cdn-tos.douyinstatic.com/obj/eden-cn/ptlz_zlp/ljhwZthlaukjlkulzlp/root-web-sites/bf8647bffab13c38772c9ff94bf91a9d.jpg',
233
+ },
234
+ ],
235
+ };
236
+
237
+ const listItemStyle = {
238
+ border: '1px solid var(--semi-color-border)',
239
+ backgroundColor: 'var(--semi-color-bg-2)',
240
+ borderRadius: '3px',
241
+ paddingLeft: '20px',
242
+ margin: '8px 2px',
243
+ };
244
+
245
+ const descriptionData = [
246
+ { key: '实际用户数量', value: '1,480,000' },
247
+ { key: '7天留存', value: '98%' },
248
+ { key: '安全等级', value: '3级' },
249
+ { key: '垂类标签', value: <Tag style={{ margin: 0 }}>电商</Tag> },
250
+ { key: '认证状态', value: '未认证' },
251
+ ];
252
+ const descriptionStyle = {
253
+ boxShadow: 'var(--semi-shadow-elevated)',
254
+ backgroundColor: 'var(--semi-color-bg-2)',
255
+ borderRadius: '4px',
256
+ padding: '10px',
257
+ margin: '10px',
258
+ width: '200px',
259
+ };
260
+
261
+ const emptyStyle = {
262
+ padding: 30,
263
+ };
264
+
265
+ const transferData = Array.from({ length: 100 }, (v, i) => {
266
+ return {
267
+ label: `选项名称 ${i}`,
268
+ value: i,
269
+ disabled: false,
270
+ key: i,
271
+ };
272
+ });
273
+
274
+ const items = [
275
+ { icon: <IconAlarm style={{ marginRight: 4 }} />, key: 'alarm' },
276
+ { icon: <IconBookmark style={{ marginRight: 4 }} />, key: 'bookmark' },
277
+ { icon: <IconCamera style={{ marginRight: 4 }} />, key: 'camera' },
278
+ { icon: <IconDuration style={{ marginRight: 4 }} />, key: 'duration' },
279
+ { icon: <IconEdit style={{ marginRight: 4 }} />, key: 'edit' },
280
+ { icon: <IconFolder style={{ marginRight: 4 }} />, key: 'folder' },
281
+ ];
282
+
283
+ const empty = (
284
+ <Empty
285
+ image={<IllustrationNoResult />}
286
+ darkModeImage={<IllustrationNoResultDark />}
287
+ description={'搜索无结果'}
288
+ />
289
+ );
290
+
291
+ const placeholder = (
292
+ <div style={style}>
293
+ <Skeleton.Avatar style={{ marginRight: 12 }} />
294
+ <div>
295
+ <Skeleton.Title style={{ width: 120, marginBottom: 12, marginTop: 12 }} />
296
+ <Skeleton.Paragraph style={{ width: 240 }} rows={3} />
297
+ </div>
298
+ </div>
299
+ );
300
+
301
+ export default function SemiA11y() {
302
+ const { Header, Footer, Sider, Content } = Layout;
303
+ const { Title, Text, Paragraph } = Typography;
304
+ const [modalVisible, setModalVisible] = useState(false);
305
+ const [sideSheetVisible, setSideSheetVisible] = useState(false);
306
+ const [overflowWidth, setOverflowWidth] = useState(100);
307
+ const [isOpen, setCollapsibleOpen] = useState(false);
308
+ const [dataSource, setData] = useState(raw);
309
+ const [mode, setMode] = useState('light');
310
+ const [stringData, setStringData] = useState([]);
311
+
312
+ const removeRecord = key => {
313
+ let newDataSource = [...dataSource];
314
+ if (key != null) {
315
+ let idx = newDataSource.findIndex(data => data.key === key);
316
+
317
+ if (idx > -1) {
318
+ newDataSource.splice(idx, 1);
319
+ setData(newDataSource);
320
+ }
321
+ }
322
+ };
323
+
324
+ const columns = [
325
+ {
326
+ title: '标题',
327
+ dataIndex: 'name',
328
+ width: 400,
329
+ render: (text, record, index) => {
330
+ return (
331
+ <span style={{ display: 'flex', alignItems: 'center' }}>
332
+ <Avatar
333
+ size="small"
334
+ shape="square"
335
+ src={record.nameIconSrc}
336
+ style={{ marginRight: 12 }}
337
+ ></Avatar>
338
+ {/* 宽度计算方式为单元格设置宽度 - 非文本内容宽度 */}
339
+ <Text heading={5} ellipsis={{ showTooltip: true }} style={{ width: 'calc(400px - 76px)' }}>
340
+ {text}
341
+ </Text>
342
+ </span>
343
+ );
344
+ },
345
+ },
346
+ {
347
+ title: '大小',
348
+ dataIndex: 'size',
349
+ width: 150,
350
+ },
351
+ {
352
+ title: '所有者',
353
+ dataIndex: 'owner',
354
+ render: (text, record, index) => {
355
+ return (
356
+ <div>
357
+ <Avatar size="small" color={record.avatarBg} style={{ marginRight: 4 }}>
358
+ {typeof text === 'string' && text.slice(0, 1)}
359
+ </Avatar>
360
+ {text}
361
+ </div>
362
+ );
363
+ },
364
+ },
365
+ {
366
+ title: '更新日期',
367
+ dataIndex: 'updateTime',
368
+ },
369
+ {
370
+ title: '',
371
+ width: 100,
372
+ dataIndex: 'operate',
373
+ render: (text, record) => (
374
+ <Button icon={<IconDelete />} theme="borderless" onClick={() => removeRecord(record.key)} />
375
+ ),
376
+ },
377
+ ];
378
+
379
+ const onConfirm = () => {
380
+ Toast.success('确认保存!');
381
+ };
382
+
383
+ const onCancel = () => {
384
+ Toast.warning('取消保存!');
385
+ };
386
+
387
+ const switchMode = () => {
388
+ const body = document.body;
389
+ if (body.hasAttribute('theme-mode')) {
390
+ body.removeAttribute('theme-mode');
391
+ setMode('light');
392
+ } else {
393
+ body.setAttribute('theme-mode', 'dark');
394
+ setMode('dark');
395
+ }
396
+ };
397
+
398
+ const handleStringSearch = (value) => {
399
+ let result;
400
+ if (value) {
401
+ result = ['gmail.com', '163.com', 'qq.com'].map(domain => `${value}@${domain}`);
402
+ } else {
403
+ result = [];
404
+ }
405
+ setStringData(result);
406
+ };
407
+
408
+ const renderOverflow = items => {
409
+ return items.length ? <Tag style={{ flex: '0 0 auto' }}>+{items.length}</Tag> : null;
410
+ };
411
+ const renderOverflowItem = (item, ind) => {
412
+ return (
413
+ <Tag color="blue" key={item.key} style={{ marginRight: 8, flex: '0 0 auto' }}>
414
+ {item.icon}
415
+ {item.key}
416
+ </Tag>
417
+ );
418
+ };
419
+
420
+ useEffect(() => {
421
+ document.body && document.body.setAttribute('data-page', 'a11y');
422
+
423
+ return () => {
424
+ document.body && document.body.removeAttribute('data-page');
425
+ };
426
+ }, []);
427
+
428
+ return (
429
+ <>
430
+ <Layout style={{ border: '1px solid var(--semi-color-border)' }}>
431
+ <Header style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
432
+ <div>
433
+ <Nav mode="horizontal" defaultSelectedKeys={['Home']}>
434
+ <Nav.Header>
435
+ <IconSemiLogo style={{ width: '96px', height: '36px', fontSize: 36 }} />
436
+ <span
437
+ style={{
438
+ color: 'var(--semi-color-text-2)',
439
+ }}
440
+ >
441
+ <span
442
+ style={{
443
+ marginRight: '24px',
444
+ color: 'var(--semi-color-text-0)',
445
+ fontWeight: '600',
446
+ }}
447
+ >
448
+ 模版推荐
449
+ </span>
450
+ <span style={{ marginRight: '24px' }}>所有模版</span>
451
+ <span>我的模版</span>
452
+ </span>
453
+ </Nav.Header>
454
+ <Nav.Footer>
455
+ <Button
456
+ theme="borderless"
457
+ icon={mode === 'dark' ? <IconSun size="large" /> : <IconMoon size="large" />}
458
+ style={{
459
+ color: 'var(--semi-color-text-2)',
460
+ marginRight: '12px',
461
+ }}
462
+ onClick={switchMode}
463
+ />
464
+ <Button
465
+ theme="borderless"
466
+ icon={<IconBell size="large" />}
467
+ style={{
468
+ color: 'var(--semi-color-text-2)',
469
+ marginRight: '12px',
470
+ }}
471
+ />
472
+ <Button
473
+ theme="borderless"
474
+ icon={<IconHelpCircle size="large" />}
475
+ style={{
476
+ color: 'var(--semi-color-text-2)',
477
+ marginRight: '12px',
478
+ }}
479
+ />
480
+ <Avatar color="orange" size="small">
481
+ YJ
482
+ </Avatar>
483
+ </Nav.Footer>
484
+ </Nav>
485
+ </div>
486
+ </Header>
487
+ <Layout>
488
+ <Sider style={{ backgroundColor: 'var(--semi-color-bg-1)' }}>
489
+ <Nav
490
+ style={{ maxWidth: 220, height: '100%' }}
491
+ defaultSelectedKeys={['Home']}
492
+ items={[
493
+ { itemKey: 'Home', text: '首页', icon: <IconHome size="large" /> },
494
+ { itemKey: 'Histogram', text: '基础数据', icon: <IconHistogram size="large" /> },
495
+ { itemKey: 'Live', text: '测试功能', icon: <IconLive size="large" /> },
496
+ { itemKey: 'Setting', text: '设置', icon: <IconSetting size="large" /> },
497
+ ]}
498
+ footer={{
499
+ collapseButton: true,
500
+ }}
501
+ />
502
+ </Sider>
503
+ <Content
504
+ style={{
505
+ padding: '24px',
506
+ backgroundColor: 'var(--semi-color-bg-1)',
507
+ maxHeight: 'calc(100vh - 120px)',
508
+ }}
509
+ >
510
+ <Breadcrumb
511
+ style={{
512
+ marginBottom: '24px',
513
+ }}
514
+ routes={['首页', '当这个页面标题很长时需要省略', '上一页', '详情页']}
515
+ />
516
+ <div
517
+ style={{
518
+ borderRadius: '10px',
519
+ border: '1px solid var(--semi-color-border)',
520
+ padding: '32px',
521
+ }}
522
+ className="rows-container"
523
+ >
524
+ <Row id="基本示例">
525
+ <Pagination total={80} showSizeChanger></Pagination>
526
+ <Steps current={1}>
527
+ <Steps.Step title="Finished" description="This is a description." />
528
+ <Steps.Step title="In Progress" description="This is a description." />
529
+ <Steps.Step title="Waiting" description="This is a description." />
530
+ </Steps>
531
+ <Steps current={1} status="error">
532
+ <Steps.Step title="Finished" description="This is a description" />
533
+ <Steps.Step title="In Process" description="This is a description" />
534
+ <Steps.Step title="Waiting" description="This is a description" />
535
+ </Steps>
536
+ </Row>
537
+ <Row>
538
+ <div style={{ display: 'flex' }}>
539
+ <div style={{ padding: 8 }}>
540
+ <Badge count={5} theme="solid">
541
+ <Avatar color="blue" shape="square">
542
+ XZ
543
+ </Avatar>
544
+ </Badge>
545
+ </div>
546
+ <div style={{ padding: 8 }}>
547
+ <Badge count={5} theme="light">
548
+ <Avatar color="cyan" shape="square">
549
+ YB
550
+ </Avatar>
551
+ </Badge>
552
+ </div>
553
+ <div style={{ padding: 8 }}>
554
+ <Badge count={5} theme="inverted">
555
+ <Avatar color="indigo" shape="square">
556
+ LX
557
+ </Avatar>
558
+ </Badge>
559
+ </div>
560
+ <div style={{ padding: 8 }}>
561
+ <Badge dot theme="solid">
562
+ <Avatar color="light-blue" shape="square">
563
+ YZ
564
+ </Avatar>
565
+ </Badge>
566
+ </div>
567
+ <div style={{ padding: 8 }}>
568
+ <Badge dot theme="light">
569
+ <Avatar color="teal" shape="square">
570
+ HW
571
+ </Avatar>
572
+ </Badge>
573
+ </div>
574
+ <div
575
+ style={{
576
+ padding: '8px',
577
+ borderRadius: '4px',
578
+ backgroundColor: 'var(--semi-color-fill-0)',
579
+ }}
580
+ >
581
+ <Badge dot theme="inverted">
582
+ <Avatar color="green" shape="square">
583
+ XM
584
+ </Avatar>
585
+ </Badge>
586
+ </div>
587
+ </div>
588
+ <div>
589
+ <Space wrap>
590
+ <Tag color="grey">grey tag</Tag>
591
+ <Tag color="blue">blue tag</Tag>
592
+ <Tag color="blue" type="ghost">
593
+ ghost tag
594
+ </Tag>
595
+ <Tag color="blue" type="solid">
596
+ solid tag
597
+ </Tag>
598
+ <Tag color="red">red tag</Tag>
599
+ <Tag color="green">green tag</Tag>
600
+ <Tag color="orange">orange tag</Tag>
601
+ <Tag color="teal">teal tag</Tag>
602
+ <Tag color="violet">violet tag</Tag>
603
+ <Tag color="white">white tag</Tag>
604
+ </Space>
605
+ </div>
606
+ <div>
607
+ <Space>
608
+ <Popover content={'hi semi-design'} style={{ padding: 8 }}>
609
+ <Tag style={{ marginRight: 8 }}>I am Popover</Tag>
610
+ </Popover>
611
+ <Tooltip content={'hi semi-design'}>
612
+ <Tag style={{ marginRight: 8 }}>I am Tooltip</Tag>
613
+ </Tooltip>
614
+ <Dropdown
615
+ render={
616
+ <Dropdown.Menu>
617
+ <Dropdown.Item>Menu Item 1</Dropdown.Item>
618
+ <Dropdown.Item>Menu Item 2</Dropdown.Item>
619
+ <Dropdown.Item>Menu Item 3</Dropdown.Item>
620
+ </Dropdown.Menu>
621
+ }
622
+ >
623
+ <Tag>I am dropdown</Tag>
624
+ </Dropdown>
625
+ <Rating defaultValue={3} size="small" style={{ marginRight: 8 }} />
626
+ </Space>
627
+ </div>
628
+ <div className="mt12">
629
+ <Space>
630
+ <Button onClick={() => setModalVisible(true)}>Modal</Button>
631
+ <Button type="tertiary" onClick={() => setSideSheetVisible(true)}>
632
+ SideSheet
633
+ </Button>
634
+ <Button
635
+ type="warning"
636
+ onClick={() =>
637
+ Notification.open({
638
+ title: 'Hi, Bytedance',
639
+ content: 'ies dance dance dance',
640
+ duration: 3,
641
+ })
642
+ }
643
+ >
644
+ Notification
645
+ </Button>
646
+ <Popconfirm
647
+ title="确定是否要保存此修改?"
648
+ content="此修改将不可逆"
649
+ onConfirm={onConfirm}
650
+ onCancel={onCancel}
651
+ >
652
+ <Button type="danger">Popconfirm</Button>
653
+ </Popconfirm>
654
+ <Modal
655
+ title="基本对话框"
656
+ visible={modalVisible}
657
+ onOk={() => setModalVisible(false)}
658
+ onCancel={() => setModalVisible(false)}
659
+ >
660
+ This is the content of a basic modal.
661
+ More content...
662
+ </Modal>
663
+ <SideSheet
664
+ title="滑动侧边栏"
665
+ visible={sideSheetVisible}
666
+ onCancel={() => setSideSheetVisible(false)}
667
+ >
668
+ <p>This is the content of a basic side sheet.</p>
669
+ <p>Here is more content...</p>
670
+ </SideSheet>
671
+ </Space>
672
+ </div>
673
+ </Row>
674
+ <Row>
675
+ <Col span={12} style={{ paddingRight: 24 }}>
676
+ <div style={{ maxWidth: 640 }}>
677
+ <Banner
678
+ className="mb12"
679
+ fullMode={false}
680
+ type="info"
681
+ bordered
682
+ icon={null}
683
+ closeIcon={null}
684
+ title={
685
+ <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
686
+ 不知道 AppKey?
687
+ </div>
688
+ }
689
+ description={
690
+ <div>
691
+ 你可先联系对应的研发同学,确认是否已在
692
+ <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
693
+ 申请了应用,并填写对应的信息。
694
+ </div>
695
+ }
696
+ />
697
+ <Banner
698
+ className="mb12"
699
+ fullMode={false}
700
+ type="warning"
701
+ bordered
702
+ icon={null}
703
+ closeIcon={null}
704
+ title={
705
+ <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
706
+ 不知道 AppKey?
707
+ </div>
708
+ }
709
+ description={
710
+ <div>
711
+ 你可先联系对应的研发同学,确认是否已在
712
+ <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
713
+ 申请了应用,并填写对应的信息。
714
+ </div>
715
+ }
716
+ />
717
+ <Banner
718
+ className="mb12"
719
+ fullMode={false}
720
+ type="danger"
721
+ bordered
722
+ icon={null}
723
+ closeIcon={null}
724
+ title={
725
+ <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
726
+ 不知道 AppKey?
727
+ </div>
728
+ }
729
+ description={
730
+ <div>
731
+ 你可先联系对应的研发同学,确认是否已在
732
+ <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
733
+ 申请了应用,并填写对应的信息。
734
+ </div>
735
+ }
736
+ />
737
+ <Banner
738
+ fullMode={false}
739
+ type="success"
740
+ bordered
741
+ icon={null}
742
+ closeIcon={null}
743
+ title={
744
+ <div style={{ fontWeight: 600, fontSize: '14px', lineHeight: '20px' }}>
745
+ 不知道 AppKey?
746
+ </div>
747
+ }
748
+ description={
749
+ <div>
750
+ 你可先联系对应的研发同学,确认是否已在
751
+ <Text link={{ href: 'https://semi.design/' }}>应用云平台</Text>
752
+ 申请了应用,并填写对应的信息。
753
+ </div>
754
+ }
755
+ />
756
+ </div>
757
+ </Col>
758
+ <Col span={12}>
759
+ <Title style={{ margin: '8px 0' }}>h1. Semi Design</Title>
760
+ <Title heading={2} style={{ margin: '8px 0' }}>
761
+ h2. Semi Design
762
+ </Title>
763
+ <Title heading={3} style={{ margin: '8px 0' }}>
764
+ h3. Semi Design
765
+ </Title>
766
+ <Title heading={4} style={{ margin: '8px 0' }}>
767
+ h4. Semi Design
768
+ </Title>
769
+ <Title heading={5} style={{ margin: '8px 0' }}>
770
+ h5. Semi Design
771
+ </Title>
772
+ <Title heading={6} style={{ margin: '8px 0' }}>
773
+ h6. Semi Design
774
+ </Title>
775
+ </Col>
776
+ </Row>
777
+ <Row id="组件">
778
+ <div style={{ display: 'flex', flexWrap: 'wrap' }}>
779
+ <Empty
780
+ image={<IllustrationSuccess style={{ width: 150, height: 150 }} />}
781
+ darkModeImage={<IllustrationSuccessDark style={{ width: 150, height: 150 }} />}
782
+ description={'创建成功'}
783
+ style={emptyStyle}
784
+ />
785
+ <Empty
786
+ image={<IllustrationFailure style={{ width: 150, height: 150 }} />}
787
+ darkModeImage={<IllustrationFailureDark style={{ width: 150, height: 150 }} />}
788
+ description={'加载失败'}
789
+ style={emptyStyle}
790
+ />
791
+ <Empty
792
+ image={<IllustrationNoAccess style={{ width: 150, height: 150 }} />}
793
+ darkModeImage={<IllustrationNoAccessDark style={{ width: 150, height: 150 }} />}
794
+ description={'没有权限'}
795
+ style={emptyStyle}
796
+ />
797
+ <Empty
798
+ image={<IllustrationNoContent style={{ width: 150, height: 150 }} />}
799
+ darkModeImage={<IllustrationNoContentDark style={{ width: 150, height: 150 }} />}
800
+ description={'暂无内容,请添加'}
801
+ style={emptyStyle}
802
+ />
803
+ <Empty
804
+ image={<IllustrationNotFound style={{ width: 150, height: 150 }} />}
805
+ darkModeImage={<IllustrationNotFoundDark style={{ width: 150, height: 150 }} />}
806
+ description={'页面404'}
807
+ style={emptyStyle}
808
+ />
809
+ <Empty
810
+ image={<IllustrationNoResult style={{ width: 150, height: 150 }} />}
811
+ darkModeImage={<IllustrationNoResultDark style={{ width: 150, height: 150 }} />}
812
+ description={'搜索无结果'}
813
+ style={emptyStyle}
814
+ />
815
+ <Empty
816
+ image={<IllustrationConstruction style={{ width: 150, height: 150 }} />}
817
+ darkModeImage={<IllustrationConstructionDark style={{ width: 150, height: 150 }} />}
818
+ description={'建设中'}
819
+ style={emptyStyle}
820
+ />
821
+ <Empty
822
+ image={<IllustrationIdle style={{ width: 150, height: 150 }} />}
823
+ darkModeImage={<IllustrationIdleDark style={{ width: 150, height: 150 }} />}
824
+ description={'神游四方'}
825
+ style={emptyStyle}
826
+ />
827
+ </div>
828
+ </Row>
829
+ <Row>
830
+ <Timeline>
831
+ <Timeline.Item time="2019-07-14 10:35" type="ongoing">
832
+ 审核中
833
+ </Timeline.Item>
834
+ <Timeline.Item time="2019-06-13 16:17" type="success">
835
+ 发布成功
836
+ </Timeline.Item>
837
+ <Timeline.Item time="2019-05-14 18:34" type="error">
838
+ 审核失败
839
+ </Timeline.Item>
840
+ </Timeline>
841
+ <div style={{ width: 200 }}>
842
+ <Progress className="mb12" percent={10} stroke="#fc8800" />
843
+ <Progress className="mb12" percent={25} stroke="#f93920" />
844
+ <Progress className="mb12" percent={50} />
845
+ <Progress className="mb12" percent={80} />
846
+ <Progress className="mb12" percent={80} size="large" />
847
+ <Progress className="mb12" percent={80} style={{ height: '8px' }} />
848
+ </div>
849
+ <div className="mb12">
850
+ <Skeleton placeholder={placeholder} loading={true} active>
851
+ <div style={{
852
+ display: 'flex',
853
+ alignItems: 'flex-start',
854
+ }}>
855
+ <Avatar color="blue" style={{ marginRight: 12 }}>
856
+ UI
857
+ </Avatar>
858
+ <div>
859
+ <h3>Semi UI</h3>
860
+ <p>Hi, Bytedance dance dance.</p>
861
+ <p>Hi, Bytedance dance dance.</p>
862
+ <p>Hi, Bytedance dance dance.</p>
863
+ </div>
864
+ </div>
865
+ </Skeleton>
866
+ </div>
867
+ <div>
868
+ <Spin size="small" />
869
+ <Spin size="middle" />
870
+ <Spin size="large" />
871
+ </div>
872
+ </Row>
873
+ <Row>
874
+ <div style={{ width: 300 }}>
875
+ <Slider
876
+ step={1}
877
+ value={overflowWidth}
878
+ onChange={value => setOverflowWidth(value)}
879
+ />
880
+ <div style={{ width: `${overflowWidth}%` }}>
881
+ <OverflowList
882
+ items={items}
883
+ overflowRenderer={renderOverflow}
884
+ visibleItemRenderer={renderOverflowItem}
885
+ />
886
+ </div>
887
+ </div>
888
+ </Row>
889
+ <Row id="设计语言">
890
+ <Table
891
+ style={{ minHeight: 350 }}
892
+ columns={columns}
893
+ dataSource={dataSource}
894
+ pagination={false}
895
+ empty={empty}
896
+ />
897
+ </Row>
898
+ <Row id="物料平台">
899
+ <Form
900
+ initValues={initValues}
901
+ style={{ padding: 10, width: '100%' }}
902
+ onValueChange={v => console.log(v)}
903
+ >
904
+ <Form.Section text={'基本信息'}>
905
+ <Row>
906
+ <Col span={12}>
907
+ <Form.Input
908
+ field="name"
909
+ label="名称(Input)"
910
+ initValue={'mikeya'}
911
+ style={style}
912
+ trigger="blur"
913
+ />
914
+ </Col>
915
+ <Col span={12}>
916
+ <Form.DatePicker
917
+ field="date"
918
+ label="日期(DatePicker)"
919
+ style={style}
920
+ initValue={new Date()}
921
+ placeholder="请选择生效日期"
922
+ />
923
+ </Col>
924
+ </Row>
925
+ <Row>
926
+ <Col span={12}>
927
+ <Form.Select
928
+ field="role"
929
+ style={style}
930
+ label="角色(Select)"
931
+ placeholder="请选择你的角色"
932
+ >
933
+ <Select.Option value="operate">运营</Select.Option>
934
+ <Select.Option value="rd">开发</Select.Option>
935
+ <Select.Option value="pm">产品</Select.Option>
936
+ <Select.Option value="ued">设计</Select.Option>
937
+ </Form.Select>
938
+ </Col>
939
+ <Col span={12}>
940
+ <Form.Select
941
+ field="business"
942
+ multiple
943
+ style={style}
944
+ placeholder="请选择业务线"
945
+ label="业务线(多选Select)"
946
+ extraText={
947
+ <div
948
+ style={{
949
+ color: 'rgba(var(--semi-blue-5), 1)',
950
+ fontSize: 14,
951
+ userSelect: 'none',
952
+ cursor: 'pointer',
953
+ }}
954
+ >
955
+ 没有找到合适的业务线?
956
+ </div>
957
+ }
958
+ >
959
+ <Select.Option value="abc">Semi</Select.Option>
960
+ <Select.Option value="ulikeCam">轻颜相机</Select.Option>
961
+ <Select.Option value="toutiao">今日头条</Select.Option>
962
+ </Form.Select>
963
+ </Col>
964
+ </Row>
965
+ <Row>
966
+ <Col span={12}>
967
+ <Form.Cascader
968
+ placeholder="请选择所在地区"
969
+ treeData={treeData}
970
+ field="area"
971
+ label="地区(Cascader)"
972
+ style={style}
973
+ ></Form.Cascader>
974
+ </Col>
975
+ <Col span={12}>
976
+ <Form.TreeSelect
977
+ field="tree"
978
+ style={style}
979
+ label="节点(TreeSelect)"
980
+ placeholder="请选择服务节点"
981
+ treeData={treeData}
982
+ filterTreeNode
983
+ ></Form.TreeSelect>
984
+ </Col>
985
+ </Row>
986
+ <Row>
987
+ <Col span={12}>
988
+ <Form.TagInput
989
+ field="product"
990
+ label="产品(TagInput)"
991
+ placeholder="请输入产品"
992
+ style={style}
993
+ />
994
+ </Col>
995
+ <Col span={12}>
996
+ <Form.AutoComplete
997
+ field="email"
998
+ label="邮箱(AutoComplete)"
999
+ data={stringData}
1000
+ showClear
1001
+ prefix={<IconSearch />}
1002
+ placeholder="搜索... "
1003
+ onSearch={handleStringSearch}
1004
+ style={style}
1005
+ />
1006
+ </Col>
1007
+ </Row>
1008
+ <Row>
1009
+ <Col span={24}>
1010
+ <Form.Upload
1011
+ field="files"
1012
+ label="证明文件(Upload)"
1013
+ action="//semi.design/api/upload"
1014
+ >
1015
+ <Button icon={<IconUpload />} theme="light">
1016
+ 点击上传
1017
+ </Button>
1018
+ </Form.Upload>
1019
+ </Col>
1020
+ </Row>
1021
+ </Form.Section>
1022
+ <Form.Section text="资源详情">
1023
+ <Row>
1024
+ <Col span={12}>
1025
+ <Form.TextArea
1026
+ style={{ ...style, height: 120 }}
1027
+ field="description"
1028
+ label="申请理由(TextArea)"
1029
+ placeholder="请填写申请资源理由"
1030
+ />
1031
+ </Col>
1032
+ <Col span={12}>
1033
+ <Form.CheckboxGroup
1034
+ field="type"
1035
+ direction="horizontal"
1036
+ label="申请类型(CheckboxGroup)"
1037
+ initValue={['user', 'admin']}
1038
+ rules={[{ required: true }]}
1039
+ >
1040
+ <Form.Checkbox value="admin">admin</Form.Checkbox>
1041
+ <Form.Checkbox value="user">user</Form.Checkbox>
1042
+ <Form.Checkbox value="guest">guest</Form.Checkbox>
1043
+ <Form.Checkbox value="root">root</Form.Checkbox>
1044
+ </Form.CheckboxGroup>
1045
+ <Form.RadioGroup
1046
+ field="isMonopolize"
1047
+ label="是否独占资源(Radio)"
1048
+ rules={[
1049
+ { type: 'boolean' },
1050
+ { required: true, message: '必须选择是否独占 ' },
1051
+ ]}
1052
+ >
1053
+ <Form.Radio value={true}>是</Form.Radio>
1054
+ <Form.Radio value={false}>否</Form.Radio>
1055
+ </Form.RadioGroup>
1056
+ </Col>
1057
+ </Row>
1058
+ <Row>
1059
+ <Col span={12}>
1060
+ <Form.TimePicker
1061
+ field="time"
1062
+ label="截止时刻(TimePicker)"
1063
+ style={{ width: '90%' }}
1064
+ />
1065
+ </Col>
1066
+ <Col span={12}>
1067
+ <Form.InputNumber
1068
+ field="number"
1069
+ label="申请数量(InputNumber)"
1070
+ initValue={20}
1071
+ style={style}
1072
+ />
1073
+ </Col>
1074
+ </Row>
1075
+ <Row>
1076
+ <Col span={12}>
1077
+ <Form.Slider
1078
+ field="range"
1079
+ label="资源使用报警阈值(%)(Slider)"
1080
+ initValue={10}
1081
+ style={{ width: '90%' }}
1082
+ />
1083
+ </Col>
1084
+ <Col span={12}>
1085
+ <Form.Switch field="switch" label="开关(Switch)" />
1086
+ </Col>
1087
+ </Row>
1088
+ <Row>
1089
+ <Col span={12}>
1090
+ <Form.Rating
1091
+ field="rating"
1092
+ label="满意度(Rating)"
1093
+ initValue={2}
1094
+ style={{ width: '90%' }}
1095
+ />
1096
+ </Col>
1097
+ </Row>
1098
+ </Form.Section>
1099
+ <Form.Checkbox value="false" field="agree" noLabel={true}>
1100
+ 我已阅读并清楚相关规定(Checkbox)
1101
+ </Form.Checkbox>
1102
+ <Button type="primary" htmlType="submit" className="btn-margin-right">
1103
+ 提交(submit)
1104
+ </Button>
1105
+ <Button htmlType="reset">重置(reset)</Button>
1106
+ </Form>
1107
+ </Row>
1108
+ <Row>
1109
+ <Col span="12">
1110
+ <Tree
1111
+ treeData={treeData}
1112
+ defaultExpandAll
1113
+ style={{
1114
+ width: 260,
1115
+ height: 420,
1116
+ border: '1px solid var(--semi-color-border)'
1117
+ }}
1118
+ />
1119
+ </Col>
1120
+ <Col span="12">
1121
+ <Transfer
1122
+ style={{ width: 568, height: 416 }}
1123
+ dataSource={transferData}
1124
+ onChange={(values, items) => console.log(values, items)}
1125
+ />
1126
+ </Col>
1127
+ </Row>
1128
+ <Row id="主题商店">
1129
+ <List
1130
+ grid={{
1131
+ gutter: 12,
1132
+ xs: 0,
1133
+ sm: 0,
1134
+ md: 12,
1135
+ lg: 8,
1136
+ xl: 8,
1137
+ xxl: 6,
1138
+ }}
1139
+ dataSource={listData}
1140
+ renderItem={item => (
1141
+ <List.Item style={listItemStyle}>
1142
+ <div>
1143
+ <h3 style={{ color: 'var(--semi-color-text-0)', fontWeight: 500 }}>
1144
+ {item.title}
1145
+ </h3>
1146
+ <Descriptions
1147
+ align="center"
1148
+ size="small"
1149
+ row
1150
+ data={[
1151
+ {
1152
+ key: '满意度',
1153
+ value: (
1154
+ <Rating allowHalf size="small" value={item.rating} />
1155
+ ),
1156
+ },
1157
+ { key: '反馈数', value: item.feedbacks },
1158
+ ]}
1159
+ />
1160
+ <div
1161
+ style={{
1162
+ margin: '12px 0',
1163
+ display: 'flex',
1164
+ justifyContent: 'flex-end',
1165
+ }}
1166
+ >
1167
+ <ButtonGroup theme="borderless" style={{ marginTop: 8 }}>
1168
+ <Button>编辑</Button>
1169
+ <Button>更多</Button>
1170
+ </ButtonGroup>
1171
+ </div>
1172
+ </div>
1173
+ </List.Item>
1174
+ )}
1175
+ />
1176
+ <div style={{ display: 'flex', flexWrap: 'wrap' }}>
1177
+ <Descriptions align="center" data={descriptionData} style={descriptionStyle} />
1178
+ <Descriptions align="justify" data={descriptionData} style={descriptionStyle} />
1179
+ <Descriptions align="left" data={descriptionData} style={descriptionStyle} />
1180
+ <Descriptions align="plain" data={descriptionData} style={descriptionStyle} />
1181
+ </div>
1182
+ <div
1183
+ style={{
1184
+ backgroundColor: 'var(--semi-color-fill-0)',
1185
+ padding: 20,
1186
+ }}
1187
+ >
1188
+ <Row gutter={[16, 16]}>
1189
+ <Col span={8}>
1190
+ <Card title="Card Title" bordered={false}>
1191
+ Card Content
1192
+ </Card>
1193
+ </Col>
1194
+ <Col span={8}>
1195
+ <Card title="Card Title" bordered={false}>
1196
+ Card Content
1197
+ </Card>
1198
+ </Col>
1199
+ <Col span={8}>
1200
+ <Card title="Card Title" bordered={false}>
1201
+ Card Content
1202
+ </Card>
1203
+ </Col>
1204
+ </Row>
1205
+ <Row gutter={[16, 16]}>
1206
+ <Col span={16}>
1207
+ <Card title="Card Title" bordered={false}>
1208
+ Card Content
1209
+ </Card>
1210
+ </Col>
1211
+ <Col span={8}>
1212
+ <Card title="Card Title" bordered={false}>
1213
+ Card Content
1214
+ </Card>
1215
+ </Col>
1216
+ </Row>
1217
+ </div>
1218
+ </Row>
1219
+ <Row>
1220
+ <Calendar mode="month" />
1221
+ </Row>
1222
+ <Row>
1223
+ <Collapse className="mt12">
1224
+ <Collapse.Panel header="This is panel header 1" itemKey="1">
1225
+ <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
1226
+ </Collapse.Panel>
1227
+ <Collapse.Panel header="This is panel header 2" itemKey="2">
1228
+ <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
1229
+ </Collapse.Panel>
1230
+ <Collapse.Panel header="This is panel header 3" itemKey="3">
1231
+ <p>Hi, bytedance dance dance. This is the docsite of Semi UI. </p>
1232
+ </Collapse.Panel>
1233
+ </Collapse>
1234
+ <Tabs type="button" className="mt12">
1235
+ <TabPane tab="文档" itemKey="1">
1236
+ 文档
1237
+ </TabPane>
1238
+ <TabPane tab="快速起步" itemKey="2">
1239
+ 快速起步
1240
+ </TabPane>
1241
+ <TabPane tab="帮助" itemKey="3">
1242
+ 帮助
1243
+ </TabPane>
1244
+ </Tabs>
1245
+ <div className="mt12" style={{ height: 200 }}>
1246
+ <Button onClick={() => setCollapsibleOpen(!isOpen)}>Toggle</Button>
1247
+ <Collapsible isOpen={isOpen}>
1248
+ <ul>
1249
+ <li>
1250
+ <p>Semi Design 以内容优先进行设计。</p>
1251
+ </li>
1252
+ <li>
1253
+ <p>更容易地自定义主题。</p>
1254
+ </li>
1255
+ <li>
1256
+ <p>适用国际化场景。</p>
1257
+ </li>
1258
+ <li>
1259
+ <p>效率场景加入人性化关怀。</p>
1260
+ </li>
1261
+ </ul>
1262
+ </Collapsible>
1263
+ </div>
1264
+ <Anchor style={{ position: 'fixed', top: 150, right: 50 }}>
1265
+ <Anchor.Link href="#基本示例" title="基本示例" />
1266
+ <Anchor.Link href="#组件" title="组件" />
1267
+ <Anchor.Link href="#设计语言" title="设计语言" />
1268
+ <Anchor.Link href="#物料平台" title="物料平台" />
1269
+ <Anchor.Link href="#主题商店" title="主题商店" />
1270
+ </Anchor>
1271
+ <BackTop style={{ bottom: 100, right: 50 }} target={() => document && document.querySelector('.semi-layout-content' || window)} visibilityHeight={-1} />
1272
+ </Row>
1273
+ </div>
1274
+ </Content>
1275
+ </Layout>
1276
+ <Footer
1277
+ style={{
1278
+ display: 'flex',
1279
+ justifyContent: 'space-between',
1280
+ padding: '20px',
1281
+ color: 'var(--semi-color-text-2)',
1282
+ backgroundColor: 'rgba(var(--semi-grey-0), 1)',
1283
+ }}
1284
+ >
1285
+ <span
1286
+ style={{
1287
+ display: 'flex',
1288
+ alignItems: 'center',
1289
+ }}
1290
+ >
1291
+ <IconBytedanceLogo size="large" style={{ marginRight: '8px' }} />
1292
+ <span>{`Copyright © ${(new Date()).getFullYear()} Semi Design. All Rights Reserved. `}</span>
1293
+ </span>
1294
+ <span>
1295
+ <span style={{ marginRight: '24px' }}>平台客服</span>
1296
+ <span>反馈建议</span>
1297
+ </span>
1298
+ </Footer>
1299
+ </Layout>
1300
+ </>
1301
+ );
1302
+ }