openxiangda 1.0.39 → 1.0.41
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/README.md +2 -2
- package/lib/cli.js +9 -1
- package/openxiangda-skills/SKILL.md +6 -3
- package/openxiangda-skills/references/best-practices.md +29 -5
- package/openxiangda-skills/references/component-guide.md +79 -45
- package/openxiangda-skills/references/forms/component-registry.md +33 -1
- package/openxiangda-skills/references/openxiangda-api.md +7 -0
- package/openxiangda-skills/references/permissions-settings.md +27 -4
- package/openxiangda-skills/skills/openxiangda-core/SKILL.md +2 -2
- package/openxiangda-skills/skills/openxiangda-form/SKILL.md +9 -2
- package/openxiangda-skills/skills/openxiangda-page/SKILL.md +5 -3
- package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +5 -0
- package/package.json +1 -1
- package/packages/sdk/dist/runtime/index.cjs +546 -0
- package/packages/sdk/dist/runtime/index.cjs.map +1 -1
- package/packages/sdk/dist/runtime/index.d.mts +13 -1
- package/packages/sdk/dist/runtime/index.d.ts +13 -1
- package/packages/sdk/dist/runtime/index.mjs +546 -0
- package/packages/sdk/dist/runtime/index.mjs.map +1 -1
- package/packages/sdk/src/build-source/scripts/build-forms.mjs +5 -1
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-form.mdc +4 -0
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-page.mdc +2 -0
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda.mdc +3 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-form.md +4 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-page.md +2 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda.md +3 -0
- package/templates/sy-lowcode-app-workspace/AGENTS.md +5 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/README.md +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/catalog.json +32 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/decision-guide.md +20 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/design-style.md +48 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/GlassHomeDashboard.tsx +232 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/styles.css +196 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/MintAnalyticsDashboard.tsx +279 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/styles.css +163 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/OpsMonitorDashboard.tsx +306 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/styles.css +248 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/WorkOrderListDrawerPage.tsx +371 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/styles.css +182 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/DashboardPrimitives.tsx +832 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/chartOptions.ts +140 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/sampleData.ts +466 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/styles.css +874 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/types.ts +150 -0
- package/templates/sy-lowcode-app-workspace/src/forms/README.md +4 -0
- package/templates/sy-lowcode-app-workspace/src/main.tsx +4 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export type TemplateKey =
|
|
2
|
+
| "glass-home-dashboard"
|
|
3
|
+
| "mint-analytics-dashboard"
|
|
4
|
+
| "ops-monitor-dashboard"
|
|
5
|
+
| "work-order-list-drawer";
|
|
6
|
+
|
|
7
|
+
export type DrawerMode = "detail" | "create" | "edit" | "process";
|
|
8
|
+
|
|
9
|
+
export type TemplateTone =
|
|
10
|
+
| "blue"
|
|
11
|
+
| "cyan"
|
|
12
|
+
| "green"
|
|
13
|
+
| "mint"
|
|
14
|
+
| "purple"
|
|
15
|
+
| "orange"
|
|
16
|
+
| "red"
|
|
17
|
+
| "slate";
|
|
18
|
+
|
|
19
|
+
export interface AdminTemplateMeta {
|
|
20
|
+
key: TemplateKey;
|
|
21
|
+
uiTemplate: TemplateKey;
|
|
22
|
+
name: string;
|
|
23
|
+
recommendedFor: string[];
|
|
24
|
+
description: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface NavItem {
|
|
28
|
+
key: string;
|
|
29
|
+
label: string;
|
|
30
|
+
icon: IconName;
|
|
31
|
+
children?: NavItem[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type IconName =
|
|
35
|
+
| "home"
|
|
36
|
+
| "analytics"
|
|
37
|
+
| "business"
|
|
38
|
+
| "customer"
|
|
39
|
+
| "order"
|
|
40
|
+
| "product"
|
|
41
|
+
| "finance"
|
|
42
|
+
| "supply"
|
|
43
|
+
| "hr"
|
|
44
|
+
| "system"
|
|
45
|
+
| "app"
|
|
46
|
+
| "ticket"
|
|
47
|
+
| "task"
|
|
48
|
+
| "monitor"
|
|
49
|
+
| "alert"
|
|
50
|
+
| "device"
|
|
51
|
+
| "report"
|
|
52
|
+
| "setting"
|
|
53
|
+
| "import"
|
|
54
|
+
| "export"
|
|
55
|
+
| "help"
|
|
56
|
+
| "user"
|
|
57
|
+
| "cart"
|
|
58
|
+
| "approval"
|
|
59
|
+
| "contract"
|
|
60
|
+
| "dashboard";
|
|
61
|
+
|
|
62
|
+
export interface MetricItem {
|
|
63
|
+
id: string;
|
|
64
|
+
label: string;
|
|
65
|
+
value: string;
|
|
66
|
+
delta: string;
|
|
67
|
+
trend: number[];
|
|
68
|
+
tone: TemplateTone;
|
|
69
|
+
icon: IconName;
|
|
70
|
+
helper?: string;
|
|
71
|
+
direction?: "up" | "down";
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export interface QuickAction {
|
|
75
|
+
id: string;
|
|
76
|
+
label: string;
|
|
77
|
+
icon: IconName;
|
|
78
|
+
tone: TemplateTone;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface RankingItem {
|
|
82
|
+
id: string;
|
|
83
|
+
name: string;
|
|
84
|
+
amount: string;
|
|
85
|
+
rank: number;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface ActivityItem {
|
|
89
|
+
id: string;
|
|
90
|
+
content: string;
|
|
91
|
+
time: string;
|
|
92
|
+
tone: TemplateTone;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export interface NoticeItem {
|
|
96
|
+
id: string;
|
|
97
|
+
title: string;
|
|
98
|
+
description: string;
|
|
99
|
+
time: string;
|
|
100
|
+
tone: TemplateTone;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export interface TodoItem {
|
|
104
|
+
id: string;
|
|
105
|
+
title: string;
|
|
106
|
+
owner: string;
|
|
107
|
+
due: string;
|
|
108
|
+
tone: TemplateTone;
|
|
109
|
+
done?: boolean;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export interface TaskProgressItem {
|
|
113
|
+
id: string;
|
|
114
|
+
title: string;
|
|
115
|
+
percent: number;
|
|
116
|
+
status: string;
|
|
117
|
+
tone: TemplateTone;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export type WorkOrderStatus =
|
|
121
|
+
| "pending"
|
|
122
|
+
| "processing"
|
|
123
|
+
| "done"
|
|
124
|
+
| "cancelled";
|
|
125
|
+
|
|
126
|
+
export type WorkOrderPriority = "high" | "medium" | "low";
|
|
127
|
+
|
|
128
|
+
export interface WorkOrderRecord {
|
|
129
|
+
key: string;
|
|
130
|
+
id: string;
|
|
131
|
+
title: string;
|
|
132
|
+
status: WorkOrderStatus;
|
|
133
|
+
priority: WorkOrderPriority;
|
|
134
|
+
owner: string;
|
|
135
|
+
avatar: string;
|
|
136
|
+
department: string;
|
|
137
|
+
createdAt: string;
|
|
138
|
+
updatedAt: string;
|
|
139
|
+
source: string;
|
|
140
|
+
contact: string;
|
|
141
|
+
relatedSystem: string;
|
|
142
|
+
description: string;
|
|
143
|
+
attachmentName: string;
|
|
144
|
+
timeline: Array<{
|
|
145
|
+
id: string;
|
|
146
|
+
title: string;
|
|
147
|
+
operator: string;
|
|
148
|
+
time: string;
|
|
149
|
+
}>;
|
|
150
|
+
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Create form source under `src/forms/<formCode>/schema.ts`.
|
|
4
4
|
|
|
5
|
+
Form-entry component priority is OpenXiangda platform fields first, `antd` / `antd-mobile` wrappers second, and custom business components only when neither fits. AI-authored workspace code must not replace platform fields with raw `<input>`, `<select>`, `<textarea>`, file inputs, hand-written pickers, or hand-written uploaders.
|
|
6
|
+
|
|
5
7
|
Use `defineFormSchema` from `openxiangda` and default-export the schema:
|
|
6
8
|
|
|
7
9
|
```ts
|
|
@@ -46,3 +48,5 @@ export default createFormSchema({
|
|
|
46
48
|
|
|
47
49
|
The helper adds field-level required validation and never emits top-level validation rules.
|
|
48
50
|
It also normalizes option components without `options` to `options: []` as a runtime guard.
|
|
51
|
+
|
|
52
|
+
If a real business need exposes a missing platform field capability, report it with `openxiangda feedback submit --yes` and then use an `antd` / `antd-mobile` wrapper as a temporary workaround.
|
|
@@ -3,12 +3,16 @@ import { createRoot } from "react-dom/client";
|
|
|
3
3
|
import { StyleProvider } from "@ant-design/cssinjs";
|
|
4
4
|
import { App as AntdApp, ConfigProvider } from "antd";
|
|
5
5
|
import zhCN from "antd/locale/zh_CN";
|
|
6
|
+
import dayjs from "dayjs";
|
|
7
|
+
import "dayjs/locale/zh-cn";
|
|
6
8
|
import "antd-mobile/es/global";
|
|
7
9
|
import { antdTheme } from "openxiangda/antd-theme";
|
|
8
10
|
|
|
9
11
|
import App from "./dev/App";
|
|
10
12
|
import "./index.css";
|
|
11
13
|
|
|
14
|
+
dayjs.locale("zh-cn");
|
|
15
|
+
|
|
12
16
|
createRoot(document.getElementById("root")!).render(
|
|
13
17
|
<StrictMode>
|
|
14
18
|
<StyleProvider hashPriority="high">
|