@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.
Files changed (88) hide show
  1. package/lib/add-page/input-page-router.js +1 -1
  2. package/lib/add-page/main.js +1 -1
  3. package/lib/add-page/select-page-template.js +1 -1
  4. package/lib/api/api-doc-ui.js +1 -1
  5. package/lib/api/api-doc.js +1 -1
  6. package/lib/api/api-pull-ui.js +1 -1
  7. package/lib/api/fetch-model-list.js +1 -1
  8. package/lib/api/generate-api-file.js +1 -1
  9. package/lib/api/main.js +1 -1
  10. package/lib/api/pull-silent.js +1 -1
  11. package/lib/app-menu/app-menu-sync-ui.js +1 -1
  12. package/lib/app-menu/create-menu.js +1 -1
  13. package/lib/app-menu/get-local-pages.js +1 -1
  14. package/lib/app-menu/get-online-menu-list.js +1 -1
  15. package/lib/app-menu/use-get-online-menu-list.js +1 -1
  16. package/lib/app-menu/utils.js +1 -1
  17. package/lib/app-menu/valid-url.js +1 -1
  18. package/lib/app-menu-update-cdn/current-content.js +1 -1
  19. package/lib/app-menu-update-cdn/input-cdn-asset.js +1 -1
  20. package/lib/app-menu-update-cdn/main.js +1 -1
  21. package/lib/app-menu-update-cdn/update-menu-cdn-url.js +1 -1
  22. package/lib/auth/auth-server-ui.js +1 -1
  23. package/lib/auth/auth-server.js +1 -1
  24. package/lib/auth/constant.js +1 -1
  25. package/lib/auth/get-cookie.js +1 -1
  26. package/lib/auth/is-session-valid.js +1 -1
  27. package/lib/auth/logout.js +1 -1
  28. package/lib/cli.js +1 -1
  29. package/lib/cmd/build-watch.js +1 -1
  30. package/lib/cmd/build.js +1 -1
  31. package/lib/cmd/logs.js +1 -1
  32. package/lib/cmd/preview.js +1 -1
  33. package/lib/cmd/start.js +1 -1
  34. package/lib/config/config-help.js +1 -1
  35. package/lib/config/main.js +1 -1
  36. package/lib/constant/domain.js +1 -1
  37. package/lib/constant/env.js +1 -1
  38. package/lib/create-app/enhanced-guided-create.js +1 -1
  39. package/lib/create-app/format-elapsed.js +1 -1
  40. package/lib/create-app/main.js +1 -1
  41. package/lib/create-app/task-finished.js +1 -1
  42. package/lib/create-app/task-loading.js +1 -1
  43. package/lib/create-app/task-running.js +1 -1
  44. package/lib/create-app/task-time.js +1 -1
  45. package/lib/create-app/use-copy-project-template.js +1 -1
  46. package/lib/create-app/use-format-code.js +1 -1
  47. package/lib/create-app/use-install-dependencies.js +1 -1
  48. package/lib/help.js +1 -1
  49. package/lib/init/main.js +1 -1
  50. package/lib/mcp/claude.js +1 -0
  51. package/lib/mcp/cursor.js +1 -1
  52. package/lib/mcp/main.js +1 -1
  53. package/lib/skills/main.js +1 -0
  54. package/lib/utils/check-sdk-version.js +1 -1
  55. package/lib/utils/config.js +1 -1
  56. package/lib/utils/copy-directory.js +1 -1
  57. package/lib/utils/http-client.js +1 -1
  58. package/lib/utils/logger.js +1 -1
  59. package/lib/utils/router-updater.js +1 -1
  60. package/lib/utils/sleep.js +1 -1
  61. package/lib/utils/template-replacer.js +1 -1
  62. package/package.json +1 -1
  63. package/templates/projects/sub-app-react-demo/index.html +22 -34
  64. package/templates/projects/sub-app-react-demo/public/logo.svg +1 -0
  65. package/templates/projects/sub-app-react-demo/src/api/api.ts +1 -1
  66. package/templates/projects/sub-app-react-demo/src/api/client.ts +1 -1
  67. package/templates/projects/sub-app-react-demo/src/layouts/MainLayout.tsx +44 -71
  68. package/templates/projects/sub-app-react-demo/src/pages/index.tsx +387 -927
  69. package/templates/projects/sub-app-react-demo/src/pages/sdk-demo/index.tsx +1 -1
  70. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.module.css +293 -0
  71. package/templates/projects/sub-app-react-demo/src/pages/workbench/index.tsx +100 -414
  72. package/templates/projects/sub-app-react-demo/src/style.css +21 -15
  73. package/templates/projects/sub-app-react-demo/vite.config.ts +18 -13
  74. package/templates/rules/lovrabet_rules.mdc.tpl +636 -43
  75. package/templates/skills/.claude/skills/lovrabet/SKILL.md +257 -0
  76. package/templates/skills/.cursor/commands/lovrabet.md +247 -0
  77. package/templates/skills/.cursorrules +109 -0
  78. package/templates/skills/.shared/README.md +45 -0
  79. package/templates/skills/.shared/guides/01-filter-query/guide.md +300 -0
  80. package/templates/skills/.shared/guides/02-mcp-sql-workflow/guide.md +272 -0
  81. package/templates/skills/.shared/guides/03-antd-style/guide.md +227 -0
  82. package/templates/skills/.shared/guides/04-troubleshooting/guide.md +426 -0
  83. package/templates/skills/.shared/guides/05-api-integration/guide.md +327 -0
  84. package/templates/skills/.shared/guides/06-menu-management/guide.md +305 -0
  85. package/templates/skills/.windsurf/workflows/lovrabet.md +256 -0
  86. package/templates/projects/sub-app-react-demo/.vscode/extensions.json +0 -3
  87. package/templates/projects/sub-app-react-demo/.vscode/settings.json +0 -57
  88. 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", background: "#f5f5f5" }}>
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: 8 }}>
203
- <RocketOutlined style={{ color: "#1890ff", fontSize: 20 }} />
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={{ fontSize: 16, fontWeight: 600, color: "#262626" }}
169
+ style={{
170
+ fontSize: 16,
171
+ fontWeight: 600,
172
+ }}
206
173
  >
207
174
  Lovrabet System
208
175
  </span>
209
176
  </div>
210
177
  ) : (
211
- <RocketOutlined style={{ color: "#1890ff", fontSize: 24 }} />
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
- width: 40,
290
- height: 40,
291
- display: "flex",
292
- alignItems: "center",
293
- justifyContent: "center",
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 = "#f5f5f5";
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, color: "#262626" }}>管理员</span>
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: colorBgContainer,
300
+ background: "#fff",
328
301
  borderRadius: 8,
329
302
  }}
330
303
  >