@lovrabet/cli 1.2.4 → 1.2.5-beta.1
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.
- package/lib/add-page/input-page-router.js +1 -1
- package/lib/add-page/main.js +1 -1
- package/lib/add-page/select-page-template.js +1 -1
- package/lib/api/api-doc-ui.js +1 -1
- package/lib/api/api-doc.js +1 -1
- package/lib/api/api-pull-ui.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/api/main.js +1 -1
- package/lib/api/pull-silent.js +1 -1
- package/lib/app-menu/app-menu-sync-ui.js +1 -1
- package/lib/app-menu/create-menu.js +1 -1
- package/lib/app-menu/get-local-pages.js +1 -1
- package/lib/app-menu/get-online-menu-list.js +1 -1
- package/lib/app-menu/use-get-online-menu-list.js +1 -1
- package/lib/app-menu/utils.js +1 -1
- package/lib/app-menu/valid-url.js +1 -1
- package/lib/app-menu-update-cdn/current-content.js +1 -1
- package/lib/app-menu-update-cdn/input-cdn-asset.js +1 -1
- package/lib/app-menu-update-cdn/main.js +1 -1
- package/lib/app-menu-update-cdn/update-menu-cdn-url.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/cmd/build-watch.js +1 -1
- package/lib/cmd/build.js +1 -1
- package/lib/cmd/logs.js +1 -1
- package/lib/cmd/preview.js +1 -1
- package/lib/cmd/start.js +1 -1
- package/lib/config/config-help.js +1 -1
- package/lib/config/main.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/create-app/enhanced-guided-create.js +1 -1
- package/lib/create-app/format-elapsed.js +1 -1
- package/lib/create-app/main.js +1 -1
- package/lib/create-app/task-finished.js +1 -1
- package/lib/create-app/task-loading.js +1 -1
- package/lib/create-app/task-running.js +1 -1
- package/lib/create-app/task-time.js +1 -1
- package/lib/create-app/use-copy-project-template.js +1 -1
- package/lib/create-app/use-format-code.js +1 -1
- package/lib/create-app/use-install-dependencies.js +1 -1
- package/lib/help.js +1 -1
- package/lib/init/main.js +1 -1
- package/lib/mcp/claude.js +1 -0
- package/lib/mcp/cursor.js +1 -1
- package/lib/mcp/main.js +1 -1
- package/lib/skills/main.js +1 -0
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/copy-directory.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/router-updater.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/package.json +1 -1
- package/templates/projects/sub-app-react-demo/index.html +22 -34
- package/templates/projects/sub-app-react-demo/public/logo.svg +1 -0
- package/templates/projects/sub-app-react-demo/src/api/api.ts +1 -1
- package/templates/projects/sub-app-react-demo/src/api/client.ts +1 -1
- package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +44 -71
- package/templates/projects/sub-app-react-demo/src/pages/index.tsx +387 -927
- package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +1 -1
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +293 -0
- package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +100 -414
- package/templates/projects/sub-app-react-demo/src/style.css +21 -15
- package/templates/projects/sub-app-react-demo/vite.config.ts +18 -13
- package/templates/rules/lovrabet_rules.mdc.tpl +636 -43
- package/templates/skills/.claude/skills/lovrabet/SKILL.md +257 -0
- package/templates/skills/.cursor/commands/lovrabet.md +247 -0
- package/templates/skills/.cursorrules +109 -0
- package/templates/skills/.shared/README.md +45 -0
- package/templates/skills/.shared/guides/01-filter-query/guide.md +300 -0
- package/templates/skills/.shared/guides/02-mcp-sql-workflow/guide.md +272 -0
- package/templates/skills/.shared/guides/03-antd-style/guide.md +227 -0
- package/templates/skills/.shared/guides/04-troubleshooting/guide.md +426 -0
- package/templates/skills/.shared/guides/05-api-integration/guide.md +327 -0
- package/templates/skills/.shared/guides/06-menu-management/guide.md +305 -0
- package/templates/skills/.windsurf/workflows/lovrabet.md +256 -0
- package/templates/projects/sub-app-react-demo/.vscode/extensions.json +0 -3
- package/templates/projects/sub-app-react-demo/.vscode/settings.json +0 -57
- package/templates/projects/sub-app-react-demo/src/pages/intro/index.tsx +0 -560
|
@@ -4,7 +4,6 @@ import { Outlet, useNavigate, useLocation } from "react-router-dom";
|
|
|
4
4
|
import {
|
|
5
5
|
Layout,
|
|
6
6
|
Menu,
|
|
7
|
-
theme,
|
|
8
7
|
Button,
|
|
9
8
|
Breadcrumb,
|
|
10
9
|
Avatar,
|
|
@@ -18,12 +17,10 @@ import {
|
|
|
18
17
|
ApiOutlined,
|
|
19
18
|
MenuFoldOutlined,
|
|
20
19
|
MenuUnfoldOutlined,
|
|
21
|
-
RocketOutlined,
|
|
22
20
|
UserOutlined,
|
|
23
|
-
SunOutlined,
|
|
24
|
-
MoonOutlined,
|
|
25
21
|
BarChartOutlined,
|
|
26
22
|
FileTextOutlined,
|
|
23
|
+
AuditOutlined,
|
|
27
24
|
} from "@ant-design/icons";
|
|
28
25
|
|
|
29
26
|
const { Header, Sider, Content } = Layout;
|
|
@@ -35,14 +32,12 @@ const routeConfig = [
|
|
|
35
32
|
{ path: "/dashboard", title: "数据看板" },
|
|
36
33
|
{ path: "/sdk-demo", title: "SDK 演示" },
|
|
37
34
|
{ path: "/data-screen", title: "数据大屏" },
|
|
35
|
+
{ path: "/ceo-audit", title: "CEO 审计" },
|
|
38
36
|
];
|
|
39
37
|
|
|
40
38
|
const MainLayout: React.FC = () => {
|
|
41
39
|
const navigate = useNavigate();
|
|
42
40
|
const location = useLocation();
|
|
43
|
-
const {
|
|
44
|
-
token: { colorBgContainer, colorBgLayout },
|
|
45
|
-
} = theme.useToken();
|
|
46
41
|
|
|
47
42
|
// 菜单收起/展开状态
|
|
48
43
|
const [collapsed, setCollapsed] = useState(false);
|
|
@@ -53,7 +48,7 @@ const MainLayout: React.FC = () => {
|
|
|
53
48
|
{
|
|
54
49
|
key: "/",
|
|
55
50
|
icon: <HomeOutlined />,
|
|
56
|
-
label: "
|
|
51
|
+
label: "首页",
|
|
57
52
|
},
|
|
58
53
|
{
|
|
59
54
|
key: "/sdk-demo",
|
|
@@ -82,33 +77,6 @@ const MainLayout: React.FC = () => {
|
|
|
82
77
|
},
|
|
83
78
|
],
|
|
84
79
|
},
|
|
85
|
-
{
|
|
86
|
-
key: "docs",
|
|
87
|
-
icon: <FileTextOutlined />,
|
|
88
|
-
label: "参考文档",
|
|
89
|
-
children: [
|
|
90
|
-
{
|
|
91
|
-
key: "https://open.lovrabet.com/docs/lovrabet-cli/",
|
|
92
|
-
icon: <FileTextOutlined />,
|
|
93
|
-
label: "CLI 前端脚手架",
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
key: "https://open.lovrabet.com/docs/category/lovrabet-node-sdk",
|
|
97
|
-
icon: <FileTextOutlined />,
|
|
98
|
-
label: "TypeScript SDK",
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
key: "https://open.lovrabet.com/docs/category/java-opensdk",
|
|
102
|
-
icon: <FileTextOutlined />,
|
|
103
|
-
label: "Java SDK",
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
key: "https://open.lovrabet.com/docs/category/openapi",
|
|
107
|
-
icon: <FileTextOutlined />,
|
|
108
|
-
label: "OpenAPI",
|
|
109
|
-
},
|
|
110
|
-
],
|
|
111
|
-
},
|
|
112
80
|
];
|
|
113
81
|
|
|
114
82
|
const handleMenuClick = ({ key }: { key: string }) => {
|
|
@@ -165,26 +133,18 @@ const MainLayout: React.FC = () => {
|
|
|
165
133
|
|
|
166
134
|
// 可选:根据isInIcestark()判断当前运行环境,被嵌入时,不渲染layout布局
|
|
167
135
|
if (isInIcestark()) {
|
|
168
|
-
return
|
|
169
|
-
<div style={{ padding: "16px 20px" }}>
|
|
170
|
-
<Outlet />
|
|
171
|
-
</div>
|
|
172
|
-
);
|
|
136
|
+
return <Outlet />;
|
|
173
137
|
}
|
|
174
138
|
|
|
175
139
|
return (
|
|
176
|
-
<Layout style={{ minHeight: "100vh"
|
|
140
|
+
<Layout style={{ minHeight: "100vh" }}>
|
|
177
141
|
{!menuHidden && (
|
|
178
142
|
<Sider
|
|
179
143
|
trigger={null}
|
|
180
144
|
collapsible
|
|
181
145
|
collapsed={collapsed}
|
|
182
146
|
width={220}
|
|
183
|
-
style={{
|
|
184
|
-
background: "#fafafa",
|
|
185
|
-
boxShadow: "2px 0 8px 0 rgba(29,35,41,.05)",
|
|
186
|
-
borderRight: "1px solid #f0f0f0",
|
|
187
|
-
}}
|
|
147
|
+
style={{ background: "#fff" }}
|
|
188
148
|
>
|
|
189
149
|
{/* 系统标题 */}
|
|
190
150
|
<div
|
|
@@ -194,21 +154,32 @@ const MainLayout: React.FC = () => {
|
|
|
194
154
|
display: "flex",
|
|
195
155
|
alignItems: "center",
|
|
196
156
|
justifyContent: collapsed ? "center" : "flex-start",
|
|
197
|
-
borderBottom: "1px solid #f0f0f0",
|
|
198
157
|
background: "#fff",
|
|
158
|
+
borderBottom: "1px solid #f0f0f0",
|
|
199
159
|
}}
|
|
200
160
|
>
|
|
201
161
|
{!collapsed ? (
|
|
202
|
-
<div style={{ display: "flex", alignItems: "center", gap:
|
|
203
|
-
<
|
|
162
|
+
<div style={{ display: "flex", alignItems: "center", gap: 12 }}>
|
|
163
|
+
<img
|
|
164
|
+
src="/logo.svg"
|
|
165
|
+
alt="Logo"
|
|
166
|
+
style={{ height: 28, width: 28 }}
|
|
167
|
+
/>
|
|
204
168
|
<span
|
|
205
|
-
style={{
|
|
169
|
+
style={{
|
|
170
|
+
fontSize: 16,
|
|
171
|
+
fontWeight: 600,
|
|
172
|
+
}}
|
|
206
173
|
>
|
|
207
174
|
Lovrabet System
|
|
208
175
|
</span>
|
|
209
176
|
</div>
|
|
210
177
|
) : (
|
|
211
|
-
<
|
|
178
|
+
<img
|
|
179
|
+
src="/logo.svg"
|
|
180
|
+
alt="Logo"
|
|
181
|
+
style={{ height: 28, width: 28 }}
|
|
182
|
+
/>
|
|
212
183
|
)}
|
|
213
184
|
</div>
|
|
214
185
|
<Menu
|
|
@@ -219,9 +190,7 @@ const MainLayout: React.FC = () => {
|
|
|
219
190
|
style={{
|
|
220
191
|
height: "calc(100vh - 64px)",
|
|
221
192
|
borderRight: 0,
|
|
222
|
-
background: "#fafafa",
|
|
223
193
|
}}
|
|
224
|
-
theme="light"
|
|
225
194
|
className="custom-menu"
|
|
226
195
|
/>
|
|
227
196
|
</Sider>
|
|
@@ -230,13 +199,13 @@ const MainLayout: React.FC = () => {
|
|
|
230
199
|
<Header
|
|
231
200
|
style={{
|
|
232
201
|
padding: "0 24px",
|
|
233
|
-
background: "#fff",
|
|
234
202
|
display: "flex",
|
|
235
203
|
alignItems: "center",
|
|
236
204
|
justifyContent: "space-between",
|
|
237
205
|
boxShadow: "0 2px 8px 0 rgba(29,35,41,.05)",
|
|
238
|
-
borderBottom: "1px solid #f0f0f0",
|
|
239
206
|
height: 64,
|
|
207
|
+
background: "#fff",
|
|
208
|
+
borderBottom: "1px solid #f0f0f0",
|
|
240
209
|
}}
|
|
241
210
|
>
|
|
242
211
|
<div style={{ display: "flex", alignItems: "center", gap: 16 }}>
|
|
@@ -277,22 +246,26 @@ const MainLayout: React.FC = () => {
|
|
|
277
246
|
{/* 面包屑导航 */}
|
|
278
247
|
<Breadcrumb
|
|
279
248
|
items={getBreadcrumbItems()}
|
|
280
|
-
style={{ marginLeft: menuHidden ? 0 : 16 }}
|
|
281
|
-
/>
|
|
282
|
-
</div>
|
|
283
|
-
<div style={{ display: "flex", alignItems: "center", gap: 16 }}>
|
|
284
|
-
{/* 主题切换 */}
|
|
285
|
-
<Button
|
|
286
|
-
type="text"
|
|
287
|
-
icon={<SunOutlined />}
|
|
288
249
|
style={{
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
250
|
+
marginLeft: menuHidden ? 0 : 16,
|
|
251
|
+
fontSize: 14,
|
|
252
|
+
}}
|
|
253
|
+
itemRender={(route, params, routes, paths) => {
|
|
254
|
+
const isLast = routes.indexOf(route) === routes.length - 1;
|
|
255
|
+
return (
|
|
256
|
+
<span
|
|
257
|
+
style={{
|
|
258
|
+
color: isLast ? "#262626" : "#595959",
|
|
259
|
+
fontWeight: isLast ? 500 : 400,
|
|
260
|
+
}}
|
|
261
|
+
>
|
|
262
|
+
{route.title}
|
|
263
|
+
</span>
|
|
264
|
+
);
|
|
294
265
|
}}
|
|
295
266
|
/>
|
|
267
|
+
</div>
|
|
268
|
+
<div style={{ display: "flex", alignItems: "center", gap: 16 }}>
|
|
296
269
|
{/* 用户信息 */}
|
|
297
270
|
<Dropdown menu={{ items: userMenuItems }} placement="bottomRight">
|
|
298
271
|
<Space
|
|
@@ -303,7 +276,7 @@ const MainLayout: React.FC = () => {
|
|
|
303
276
|
transition: "background 0.3s",
|
|
304
277
|
}}
|
|
305
278
|
onMouseEnter={(e) => {
|
|
306
|
-
e.currentTarget.style.background = "
|
|
279
|
+
e.currentTarget.style.background = "rgba(0,0,0,0.06)";
|
|
307
280
|
}}
|
|
308
281
|
onMouseLeave={(e) => {
|
|
309
282
|
e.currentTarget.style.background = "transparent";
|
|
@@ -314,7 +287,7 @@ const MainLayout: React.FC = () => {
|
|
|
314
287
|
icon={<UserOutlined />}
|
|
315
288
|
style={{ background: "#1890ff" }}
|
|
316
289
|
/>
|
|
317
|
-
<span style={{ fontSize: 14
|
|
290
|
+
<span style={{ fontSize: 14 }}>管理员</span>
|
|
318
291
|
</Space>
|
|
319
292
|
</Dropdown>
|
|
320
293
|
</div>
|
|
@@ -324,7 +297,7 @@ const MainLayout: React.FC = () => {
|
|
|
324
297
|
margin: "16px",
|
|
325
298
|
padding: 24,
|
|
326
299
|
minHeight: 280,
|
|
327
|
-
background:
|
|
300
|
+
background: "#fff",
|
|
328
301
|
borderRadius: 8,
|
|
329
302
|
}}
|
|
330
303
|
>
|