Skip to content

Commit 1b83282

Browse files
committed
feat: add live for ai
1 parent 7ec865d commit 1b83282

File tree

1 file changed

+22
-107
lines changed

1 file changed

+22
-107
lines changed

semi-live-for-ai/src/App.tsx

Lines changed: 22 additions & 107 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,15 @@ import React, { useState, useCallback } from 'react';
22
import { 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
// 默认代码示例
9638
const defaultCode = `() => {
@@ -170,6 +112,10 @@ const noInlineDefaultCode = `const App = () => {
170112
render(<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+
173119
const 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

225137
type EditorMode = 'inline' | 'noInline';
226138
type LayoutMode = 'horizontal' | 'vertical';
227139

140+
// 从 SemiIcons 中获取常用图标用于 UI
141+
const { IconCode, IconEdit, IconEyeOpened, IconSetting, IconGridView, IconRefresh } = SemiIcons;
142+
228143
function 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

Comments
 (0)