@@ -2,7 +2,15 @@ import React, { useState, useCallback } from 'react';
22import { LiveProvider , LiveEditor , LivePreview , LiveError } from 'react-live' ;
33
44// Semi UI 组件 - 使用稳定的导入方式
5- import {
5+ import * as SemiUI from '@douyinfe/semi-ui' ;
6+
7+ // Semi Icons - 导入全部图标
8+ import * as SemiIcons from '@douyinfe/semi-icons' ;
9+
10+ import './App.css' ;
11+
12+ // 从 SemiUI 中解构常用组件
13+ const {
614 // Layout
715 Row, Col, Layout,
816 // Navigation
@@ -24,73 +32,7 @@ import {
2432 // Other
2533 ConfigProvider, LocaleProvider, Space, Dropdown, DropdownMenu, DropdownItem, DropdownDivider,
2634 Highlight,
27- } from '@douyinfe/semi-ui' ;
28-
29- // Semi Icons
30- import {
31- IconPlus ,
32- IconMinus ,
33- IconRefresh ,
34- IconSearch ,
35- IconSetting ,
36- IconEdit ,
37- IconDelete ,
38- IconCode ,
39- IconEyeOpened ,
40- IconGridView ,
41- IconUser ,
42- IconHome ,
43- IconStar ,
44- IconHeart ,
45- IconLike ,
46- IconComment ,
47- IconShare ,
48- IconDownload ,
49- IconUpload ,
50- IconCopy ,
51- IconClose ,
52- IconTick ,
53- IconArrowLeft ,
54- IconArrowRight ,
55- IconArrowUp ,
56- IconArrowDown ,
57- IconChevronLeft ,
58- IconChevronRight ,
59- IconChevronUp ,
60- IconChevronDown ,
61- IconFilter ,
62- IconSort ,
63- IconMore ,
64- IconMenu ,
65- IconBell ,
66- IconMail ,
67- IconCalendar ,
68- IconClock ,
69- IconImage ,
70- IconFile ,
71- IconFolder ,
72- IconLink ,
73- IconGlobe ,
74- IconLock ,
75- IconUnlock ,
76- IconInfoCircle ,
77- IconAlertCircle ,
78- IconAlertTriangle ,
79- IconHelpCircle ,
80- IconCheckCircleStroked ,
81- IconPlay ,
82- IconPause ,
83- IconStop ,
84- IconVolume1 ,
85- IconVolume2 ,
86- IconMute ,
87- IconSun ,
88- IconMoon ,
89- IconGithubLogo ,
90- IconSemiLogo ,
91- } from '@douyinfe/semi-icons' ;
92-
93- import './App.css' ;
35+ } = SemiUI ;
9436
9537// 默认代码示例
9638const defaultCode = `() => {
@@ -170,6 +112,10 @@ const noInlineDefaultCode = `const App = () => {
170112render(<App />);` ;
171113
172114// 创建 scope 对象,包含所有 Semi 组件和图标
115+ // 注意:需要过滤掉 default 属性,否则 react-live 会报错 "Unexpected token 'default'"
116+ const { default : _defaultUI , ...semiUIComponents } = SemiUI ;
117+ const { default : _defaultIcons , ...semiIconComponents } = SemiIcons ;
118+
173119const scope = {
174120 // React hooks
175121 React,
@@ -181,50 +127,19 @@ const scope = {
181127 useContext : React . useContext ,
182128 useReducer : React . useReducer ,
183129
184- // Layout
185- Layout, Row, Col,
186-
187- // Navigation
188- Nav, Breadcrumb, Anchor, BackTop, Pagination, Steps, Step, Tabs, TabPane,
189-
190- // Input
191- Input, InputGroup, TextArea, InputNumber, AutoComplete, Cascader, Checkbox, CheckboxGroup,
192- DatePicker, Radio, RadioGroup, Rating, Select, Slider, Switch, TimePicker, Transfer, TreeSelect,
193- Upload, TagInput, ColorPicker, PinCode,
194-
195- // Display
196- Avatar, AvatarGroup, Badge, Calendar, Card, CardGroup, Carousel, Collapse, Collapsible,
197- Descriptions, Divider, Empty, Image, List, Popover, Table, Tag, TagGroup,
198- Timeline, Tooltip, Tree, Typography, Skeleton, OverflowList, ScrollList, ScrollItem,
130+ // 所有 Semi UI 组件(排除 default 导出)
131+ ...semiUIComponents ,
199132
200- // Feedback
201- Banner, Modal, Notification, Popconfirm, Progress, SideSheet, Spin, Toast,
202-
203- // Form
204- Form, useFormApi, useFormState, useFieldApi, useFieldState, withFormState, withFormApi, withField, ArrayField,
205-
206- // Button
207- Button, ButtonGroup, IconButton, SplitButtonGroup,
208-
209- // Other
210- ConfigProvider, LocaleProvider, Space, Dropdown, DropdownMenu, DropdownItem, DropdownDivider, Highlight,
211-
212- // Icons
213- IconPlus, IconMinus, IconRefresh, IconSearch, IconSetting, IconEdit, IconDelete,
214- IconCode, IconEyeOpened, IconGridView, IconUser, IconHome, IconStar, IconHeart,
215- IconLike, IconComment, IconShare, IconDownload, IconUpload, IconCopy, IconClose, IconTick,
216- IconArrowLeft, IconArrowRight, IconArrowUp, IconArrowDown,
217- IconChevronLeft, IconChevronRight, IconChevronUp, IconChevronDown,
218- IconFilter, IconSort, IconMore, IconMenu, IconBell, IconMail, IconCalendar, IconClock,
219- IconImage, IconFile, IconFolder, IconLink, IconGlobe, IconLock, IconUnlock,
220- IconInfoCircle, IconAlertCircle, IconAlertTriangle, IconHelpCircle, IconCheckCircleStroked,
221- IconPlay, IconPause, IconStop, IconVolume1, IconVolume2, IconMute,
222- IconSun, IconMoon, IconGithubLogo, IconSemiLogo,
133+ // 所有 Semi Icons(排除 default 导出)
134+ ...semiIconComponents ,
223135} ;
224136
225137type EditorMode = 'inline' | 'noInline' ;
226138type LayoutMode = 'horizontal' | 'vertical' ;
227139
140+ // 从 SemiIcons 中获取常用图标用于 UI
141+ const { IconCode, IconEdit, IconEyeOpened, IconSetting, IconGridView, IconRefresh } = SemiIcons ;
142+
228143function App ( ) {
229144 const [ code , setCode ] = useState ( defaultCode ) ;
230145 const [ editorMode , setEditorMode ] = useState < EditorMode > ( 'inline' ) ;
@@ -348,7 +263,7 @@ function App() {
348263 { /* Footer */ }
349264 < footer className = "app-footer" >
350265 < Typography . Text type = "tertiary" >
351- 提示:所有 Semi Design 组件和常用图标都已注入到编辑器中 ,可以直接使用。
266+ 提示:所有 Semi Design 组件和图标都已注入到编辑器中 ,可以直接使用。图标以 Icon 开头,如 IconPlus、IconMinus 等 。
352267 </ Typography . Text >
353268 </ footer >
354269 </ div >
0 commit comments