@skopon-cool/form-sdk 0.1.9 → 0.2.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/README.md +24 -6
- package/dist/adapter/a2uiAdapter.d.ts.map +1 -1
- package/dist/adapter/formSchema.d.ts.map +1 -1
- package/dist/catalog/a2uiCustomCatalog.d.ts.map +1 -1
- package/dist/catalog/skoponCaseSelect.d.ts.map +1 -1
- package/dist/catalog/skoponResumeSelect.d.ts.map +1 -1
- package/dist/catalog/skoponSelectLoading.test.d.ts +2 -0
- package/dist/catalog/skoponSelectLoading.test.d.ts.map +1 -0
- package/dist/catalog/useSkoponBoundField.d.ts +2 -0
- package/dist/catalog/useSkoponBoundField.d.ts.map +1 -1
- package/dist/components/AskUserFormCard.d.ts.map +1 -1
- package/dist/components/SkoponA2uiStreamRenderer.d.ts.map +1 -1
- package/dist/components/SkoponFormProvider.d.ts +11 -0
- package/dist/components/SkoponFormProvider.d.ts.map +1 -0
- package/dist/components/SkoponFormRenderer.d.ts +2 -0
- package/dist/components/SkoponFormRenderer.d.ts.map +1 -1
- package/dist/form-sdk.css +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +981 -857
- package/dist/theme/antd-theme.d.ts +7 -0
- package/dist/theme/antd-theme.d.ts.map +1 -0
- package/dist/theme/brand-colors.d.ts +19 -0
- package/dist/theme/brand-colors.d.ts.map +1 -0
- package/package.json +2 -1
- package/src/adapter/a2uiAdapter.ts +2 -3
- package/src/adapter/formSchema.test.ts +5 -1
- package/src/adapter/formSchema.ts +3 -1
- package/src/catalog/a2uiCustomCatalog.tsx +15 -1
- package/src/catalog/skoponCaseSelect.tsx +2 -1
- package/src/catalog/skoponResumeSelect.tsx +1 -0
- package/src/catalog/skoponSelectLoading.test.tsx +182 -0
- package/src/catalog/useSkoponBoundField.test.ts +14 -1
- package/src/catalog/useSkoponBoundField.ts +14 -0
- package/src/components/AskUserFormCard.tsx +20 -12
- package/src/components/SkoponA2uiStreamRenderer.tsx +5 -2
- package/src/components/SkoponFormProvider.tsx +23 -0
- package/src/components/SkoponFormRenderer.tsx +17 -2
- package/src/index.ts +6 -0
- package/src/styles/index.css +4 -3
- package/src/styles/tokens.css +224 -0
- package/src/theme/antd-theme.ts +93 -0
- package/src/theme/brand-colors.ts +18 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VidTempl 设计令牌
|
|
3
|
+
* 基础色阶:@radix-ui/colors(Gray 中性 + Jade 墨绿品牌)
|
|
4
|
+
* 语义变量:供全局 CSS 与自定义组件使用
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
@import '@radix-ui/colors/gray.css';
|
|
8
|
+
@import '@radix-ui/colors/jade.css';
|
|
9
|
+
@import '@radix-ui/colors/green.css';
|
|
10
|
+
@import '@radix-ui/colors/red.css';
|
|
11
|
+
@import '@radix-ui/colors/amber.css';
|
|
12
|
+
|
|
13
|
+
:root,
|
|
14
|
+
.light,
|
|
15
|
+
.light-theme {
|
|
16
|
+
/* —— 品牌色(墨绿 · Radix Jade)—— */
|
|
17
|
+
--brand-1: var(--jade-1);
|
|
18
|
+
--brand-2: var(--jade-2);
|
|
19
|
+
--brand-3: var(--jade-3);
|
|
20
|
+
--brand-4: var(--jade-4);
|
|
21
|
+
--brand-5: var(--jade-5);
|
|
22
|
+
--brand-6: var(--jade-6);
|
|
23
|
+
--brand-7: var(--jade-7);
|
|
24
|
+
--brand-8: var(--jade-8);
|
|
25
|
+
--brand-9: var(--jade-9);
|
|
26
|
+
--brand-10: var(--jade-10);
|
|
27
|
+
--brand-11: var(--jade-11);
|
|
28
|
+
--brand-12: var(--jade-12);
|
|
29
|
+
|
|
30
|
+
/* —— 中性色(Radix Gray)—— */
|
|
31
|
+
--neutral-1: var(--gray-1);
|
|
32
|
+
--neutral-2: var(--gray-2);
|
|
33
|
+
--neutral-3: var(--gray-3);
|
|
34
|
+
--neutral-4: var(--gray-4);
|
|
35
|
+
--neutral-5: var(--gray-5);
|
|
36
|
+
--neutral-6: var(--gray-6);
|
|
37
|
+
--neutral-7: var(--gray-7);
|
|
38
|
+
--neutral-8: var(--gray-8);
|
|
39
|
+
--neutral-9: var(--gray-9);
|
|
40
|
+
--neutral-10: var(--gray-10);
|
|
41
|
+
--neutral-11: var(--gray-11);
|
|
42
|
+
--neutral-12: var(--gray-12);
|
|
43
|
+
|
|
44
|
+
/* —— 功能色 —— */
|
|
45
|
+
--success-9: var(--green-9);
|
|
46
|
+
--success-11: var(--green-11);
|
|
47
|
+
--danger-9: var(--red-9);
|
|
48
|
+
--danger-11: var(--red-11);
|
|
49
|
+
--danger-3: var(--red-3);
|
|
50
|
+
--warning-9: var(--amber-9);
|
|
51
|
+
--warning-11: var(--amber-11);
|
|
52
|
+
|
|
53
|
+
/* —— 语义色(交互设计统一引用)—— */
|
|
54
|
+
--color-primary: var(--brand-11);
|
|
55
|
+
--color-primary-hover: var(--brand-10);
|
|
56
|
+
--color-primary-active: var(--brand-12);
|
|
57
|
+
/* 实心底:与 --color-primary 同为 Jade 11,供按钮 / Sider 等大面积铺色 */
|
|
58
|
+
--color-primary-solid: var(--brand-11);
|
|
59
|
+
--color-primary-subtle: var(--brand-3);
|
|
60
|
+
--color-primary-muted: var(--brand-4);
|
|
61
|
+
--color-on-primary: #ffffff;
|
|
62
|
+
|
|
63
|
+
--color-bg: var(--neutral-1);
|
|
64
|
+
--color-bg-subtle: var(--neutral-2);
|
|
65
|
+
--color-bg-muted: var(--neutral-3);
|
|
66
|
+
--color-surface: #ffffff;
|
|
67
|
+
--color-surface-raised: var(--neutral-2);
|
|
68
|
+
|
|
69
|
+
--color-border: var(--neutral-6);
|
|
70
|
+
--color-border-subtle: var(--neutral-4);
|
|
71
|
+
--color-border-strong: var(--neutral-8);
|
|
72
|
+
|
|
73
|
+
--color-text: var(--neutral-12);
|
|
74
|
+
--color-text-secondary: var(--neutral-11);
|
|
75
|
+
--color-text-muted: var(--neutral-9);
|
|
76
|
+
--color-text-placeholder: var(--neutral-9);
|
|
77
|
+
--color-text-disabled: var(--neutral-8);
|
|
78
|
+
|
|
79
|
+
--color-success: var(--success-9);
|
|
80
|
+
--color-success-text: var(--success-11);
|
|
81
|
+
--color-danger: var(--danger-9);
|
|
82
|
+
--color-danger-text: var(--danger-11);
|
|
83
|
+
--color-danger-subtle: var(--danger-3);
|
|
84
|
+
--color-warning: var(--warning-9);
|
|
85
|
+
--color-warning-text: var(--warning-11);
|
|
86
|
+
--color-warning-solid: var(--amber-9);
|
|
87
|
+
--color-warning-solid-hover: var(--amber-10);
|
|
88
|
+
--color-on-warning: var(--neutral-12);
|
|
89
|
+
|
|
90
|
+
--color-focus-ring: color-mix(in srgb, var(--brand-11) 35%, transparent);
|
|
91
|
+
|
|
92
|
+
/* —— 间距(4px 基准刻度)—— */
|
|
93
|
+
--space-1: 4px;
|
|
94
|
+
--space-2: 8px;
|
|
95
|
+
--space-3: 12px;
|
|
96
|
+
--space-4: 16px;
|
|
97
|
+
--space-5: 24px;
|
|
98
|
+
--space-6: 32px;
|
|
99
|
+
--space-7: 48px;
|
|
100
|
+
--space-8: 64px;
|
|
101
|
+
/* 语义间距 */
|
|
102
|
+
--space-page-x: var(--space-5);
|
|
103
|
+
--space-page-y: var(--space-5);
|
|
104
|
+
--space-section: var(--space-5);
|
|
105
|
+
--space-card: var(--space-4);
|
|
106
|
+
--space-form-item: var(--space-5);
|
|
107
|
+
--space-inline: var(--space-2);
|
|
108
|
+
--space-stack-sm: var(--space-3);
|
|
109
|
+
--space-stack-md: var(--space-4);
|
|
110
|
+
--space-stack-lg: var(--space-5);
|
|
111
|
+
|
|
112
|
+
/* —— 圆角 —— */
|
|
113
|
+
--radius-sm: 4px;
|
|
114
|
+
--radius-md: 8px;
|
|
115
|
+
--radius-lg: 12px;
|
|
116
|
+
/** 胶囊形(按钮):两侧半圆,等效 border-radius: 50% / 9999px */
|
|
117
|
+
--radius-pill: 9999px;
|
|
118
|
+
--radius-button: var(--radius-pill);
|
|
119
|
+
|
|
120
|
+
/* —— 阴影 —— */
|
|
121
|
+
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.04);
|
|
122
|
+
--shadow-md: 0 2px 8px rgba(0, 0, 0, 0.06);
|
|
123
|
+
--shadow-focus: 0 0 0 2px var(--color-focus-ring);
|
|
124
|
+
|
|
125
|
+
/* —— 字体 —— */
|
|
126
|
+
--font-sans: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
|
127
|
+
'Helvetica Neue', Arial, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei',
|
|
128
|
+
'Noto Sans SC', sans-serif;
|
|
129
|
+
--font-weight-normal: 400;
|
|
130
|
+
--font-weight-medium: 500;
|
|
131
|
+
--font-weight-semibold: 600;
|
|
132
|
+
--font-size-xs: 11px;
|
|
133
|
+
--font-size-sm: 13px;
|
|
134
|
+
--font-size-base: 14px;
|
|
135
|
+
--font-size-lg: 16px;
|
|
136
|
+
--font-size-xl: 20px;
|
|
137
|
+
--font-size-2xl: 24px;
|
|
138
|
+
--line-height-tight: 1.25;
|
|
139
|
+
--line-height-base: 1.5715;
|
|
140
|
+
--line-height-relaxed: 1.6;
|
|
141
|
+
|
|
142
|
+
/* —— 按钮尺寸 —— */
|
|
143
|
+
--button-height-sm: 28px;
|
|
144
|
+
--button-height-md: 36px;
|
|
145
|
+
--button-height-lg: 40px;
|
|
146
|
+
--button-padding-x-sm: 12px;
|
|
147
|
+
--button-padding-x-md: 16px;
|
|
148
|
+
--button-padding-x-lg: 20px;
|
|
149
|
+
--button-font-size-sm: 13px;
|
|
150
|
+
--button-font-size-md: 14px;
|
|
151
|
+
--button-font-size-lg: 16px;
|
|
152
|
+
--button-icon-sm: 14px;
|
|
153
|
+
--button-icon-md: 16px;
|
|
154
|
+
--button-icon-lg: 18px;
|
|
155
|
+
--button-font-weight: var(--font-weight-semibold);
|
|
156
|
+
--button-icon-stroke-width: 2.5px;
|
|
157
|
+
|
|
158
|
+
/* —— 布局(design/ui/UI规范.md §12)—— */
|
|
159
|
+
/* 列表页不设 max-width;流程编辑 1400px;窄表单 800px */
|
|
160
|
+
--layout-sider-width: 60px;
|
|
161
|
+
--layout-sider-width-expanded: 158px;
|
|
162
|
+
--layout-sider-capsule-radius: calc(var(--layout-sider-width) / 2);
|
|
163
|
+
--layout-sider-inset: var(--space-3);
|
|
164
|
+
--layout-sider-rail-width: calc(var(--layout-sider-width) + 2 * var(--layout-sider-inset));
|
|
165
|
+
--layout-sider-rail-width-expanded: calc(
|
|
166
|
+
var(--layout-sider-width-expanded) + 2 * var(--layout-sider-inset)
|
|
167
|
+
);
|
|
168
|
+
--layout-header-height: 56px;
|
|
169
|
+
--layout-bottom-nav-height: 56px;
|
|
170
|
+
--layout-sider-mobile-inset: var(--layout-sider-inset);
|
|
171
|
+
--layout-sider-mobile-padding-y: var(--layout-sider-padding-y);
|
|
172
|
+
--layout-sider-mobile-padding-x: var(--layout-sider-padding-y);
|
|
173
|
+
--layout-sider-mobile-clearance: calc(
|
|
174
|
+
var(--layout-sider-nav-size) + 2 * var(--layout-sider-mobile-padding-y) +
|
|
175
|
+
var(--layout-sider-mobile-inset) + env(safe-area-inset-bottom, 0px)
|
|
176
|
+
);
|
|
177
|
+
--layout-content-gap: var(--space-section);
|
|
178
|
+
--layout-kpi-min-height: 96px;
|
|
179
|
+
--layout-chart-min-height: 320px;
|
|
180
|
+
--layout-sider-logo-size: 36px;
|
|
181
|
+
--layout-sider-padding-y: var(--space-3);
|
|
182
|
+
--layout-sider-padding-x: 0;
|
|
183
|
+
--layout-sider-gap: var(--space-2);
|
|
184
|
+
/** Logo → 首导航项;退出登录 → 头像(须一致) */
|
|
185
|
+
--layout-sider-logo-gap: var(--space-4);
|
|
186
|
+
--layout-sider-nav-size: 36px;
|
|
187
|
+
/** 展开态 icon 与 label 间距 */
|
|
188
|
+
--layout-sider-icon-label-gap: 10px;
|
|
189
|
+
/** 侧栏未选中导航 / 退出图标不透明度 69%(选中、hover 为 1) */
|
|
190
|
+
--layout-sider-nav-icon-opacity-idle: 0.69;
|
|
191
|
+
--color-nav-bg: var(--color-primary-solid);
|
|
192
|
+
--color-nav-icon: var(--color-on-primary);
|
|
193
|
+
--color-nav-logo-bg: #ffffff;
|
|
194
|
+
--color-nav-logo-icon: var(--color-primary);
|
|
195
|
+
|
|
196
|
+
/* —— 动效 —— */
|
|
197
|
+
--duration-fast: 150ms;
|
|
198
|
+
--duration-normal: 200ms;
|
|
199
|
+
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
|
|
200
|
+
|
|
201
|
+
/* 断点参考(design/ui/UI规范.md §8.1):640 / 768 / 992 px */
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@media (max-width: 768px) {
|
|
205
|
+
:root {
|
|
206
|
+
--space-page-x: var(--space-4);
|
|
207
|
+
--space-page-y: var(--space-4);
|
|
208
|
+
--space-section: var(--space-4);
|
|
209
|
+
--space-card: var(--space-3);
|
|
210
|
+
--layout-sider-mobile-inset: var(--space-5);
|
|
211
|
+
--layout-sider-mobile-padding-y: var(--space-3);
|
|
212
|
+
--layout-sider-mobile-padding-x: var(--space-3);
|
|
213
|
+
--layout-sider-mobile-clearance: calc(
|
|
214
|
+
var(--layout-sider-nav-size) + 2 * var(--layout-sider-mobile-padding-y) +
|
|
215
|
+
var(--layout-sider-mobile-inset) + env(safe-area-inset-bottom, 0px)
|
|
216
|
+
);
|
|
217
|
+
--layout-flow-artifact-fab-bottom: calc(
|
|
218
|
+
var(--layout-sider-mobile-clearance) + var(--space-5)
|
|
219
|
+
);
|
|
220
|
+
--layout-flow-artifact-panel-bottom: calc(
|
|
221
|
+
var(--layout-flow-artifact-fab-bottom) + 48px + var(--space-3)
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ThemeConfig } from 'antd'
|
|
2
|
+
import { brandColors } from './brand-colors'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Ant Design 主题映射(与 design/ui/UI规范.md §2.4、§2.5 一致)
|
|
6
|
+
* 品牌主色 hex 仅来自 ./brand-colors.ts
|
|
7
|
+
*/
|
|
8
|
+
export const antdTheme: ThemeConfig = {
|
|
9
|
+
cssVar: { key: 'vidtempl' },
|
|
10
|
+
token: {
|
|
11
|
+
colorPrimary: brandColors.primarySolid,
|
|
12
|
+
colorPrimaryHover: brandColors.primaryHover,
|
|
13
|
+
colorPrimaryActive: brandColors.primaryActive,
|
|
14
|
+
colorLink: brandColors.primary,
|
|
15
|
+
colorLinkHover: brandColors.primaryHover,
|
|
16
|
+
colorSuccess: brandColors.jade9,
|
|
17
|
+
colorWarning: '#f5a623',
|
|
18
|
+
gold6: '#f5a623',
|
|
19
|
+
gold7: '#e6951a',
|
|
20
|
+
colorError: '#e5484d',
|
|
21
|
+
colorInfo: brandColors.primary,
|
|
22
|
+
colorBgLayout: '#f9f9f9',
|
|
23
|
+
colorBgContainer: '#ffffff',
|
|
24
|
+
colorBgElevated: '#ffffff',
|
|
25
|
+
colorBorder: '#d9d9d9',
|
|
26
|
+
colorBorderSecondary: '#f0f0f0',
|
|
27
|
+
colorText: '#202020',
|
|
28
|
+
colorTextSecondary: '#646464',
|
|
29
|
+
colorTextTertiary: '#8d8d8d',
|
|
30
|
+
colorTextQuaternary: '#bbbbbb',
|
|
31
|
+
borderRadius: 8,
|
|
32
|
+
borderRadiusSM: 4,
|
|
33
|
+
borderRadiusLG: 12,
|
|
34
|
+
fontFamily:
|
|
35
|
+
"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', 'Noto Sans SC', sans-serif",
|
|
36
|
+
fontSize: 14,
|
|
37
|
+
fontSizeLG: 16,
|
|
38
|
+
fontSizeSM: 13,
|
|
39
|
+
fontWeightStrong: 600,
|
|
40
|
+
lineHeight: 1.5715,
|
|
41
|
+
lineHeightLG: 1.5,
|
|
42
|
+
lineHeightSM: 1.5715,
|
|
43
|
+
controlHeight: 36,
|
|
44
|
+
controlHeightLG: 40,
|
|
45
|
+
controlHeightSM: 28,
|
|
46
|
+
paddingContentHorizontal: 16,
|
|
47
|
+
paddingContentHorizontalLG: 20,
|
|
48
|
+
paddingContentHorizontalSM: 12,
|
|
49
|
+
marginLG: 24,
|
|
50
|
+
marginMD: 16,
|
|
51
|
+
marginSM: 12,
|
|
52
|
+
marginXS: 8,
|
|
53
|
+
},
|
|
54
|
+
components: {
|
|
55
|
+
Button: {
|
|
56
|
+
borderRadius: 9999,
|
|
57
|
+
borderRadiusSM: 9999,
|
|
58
|
+
borderRadiusLG: 9999,
|
|
59
|
+
controlHeight: 36,
|
|
60
|
+
controlHeightLG: 40,
|
|
61
|
+
controlHeightSM: 28,
|
|
62
|
+
paddingInline: 16,
|
|
63
|
+
paddingInlineLG: 20,
|
|
64
|
+
paddingInlineSM: 12,
|
|
65
|
+
fontSize: 14,
|
|
66
|
+
fontSizeLG: 16,
|
|
67
|
+
fontSizeSM: 13,
|
|
68
|
+
fontWeight: 600,
|
|
69
|
+
primaryShadow: 'none',
|
|
70
|
+
defaultShadow: 'none',
|
|
71
|
+
dangerShadow: 'none',
|
|
72
|
+
},
|
|
73
|
+
Card: {
|
|
74
|
+
borderRadiusLG: 8,
|
|
75
|
+
},
|
|
76
|
+
Layout: {
|
|
77
|
+
headerBg: '#ffffff',
|
|
78
|
+
bodyBg: '#f9f9f9',
|
|
79
|
+
},
|
|
80
|
+
Tag: {
|
|
81
|
+
defaultBg: '#e6f7ed',
|
|
82
|
+
defaultColor: brandColors.primary,
|
|
83
|
+
fontSizeSM: 13,
|
|
84
|
+
},
|
|
85
|
+
Form: {
|
|
86
|
+
itemMarginBottom: 24,
|
|
87
|
+
},
|
|
88
|
+
Typography: {
|
|
89
|
+
titleMarginBottom: 16,
|
|
90
|
+
titleMarginTop: 0,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 品牌墨绿(Jade)唯一 hex 源
|
|
3
|
+
* CSS 侧通过 Radix --jade-* / 语义变量 --color-* 引用;Ant Design 从此文件同步
|
|
4
|
+
* 规范:front/design/ui/UI规范.md §2.2、§2.5
|
|
5
|
+
*/
|
|
6
|
+
export const brandColors = {
|
|
7
|
+
jade9: '#29a383',
|
|
8
|
+
jade10: '#26997b',
|
|
9
|
+
jade11: '#208368',
|
|
10
|
+
jade12: '#1d3b31',
|
|
11
|
+
/** 链接、边框、Logo 图形、实心底(与 primarySolid 同色) */
|
|
12
|
+
primary: '#208368',
|
|
13
|
+
/** Primary 实心按钮、Sider 胶囊、发布等 type="primary" */
|
|
14
|
+
primarySolid: '#208368',
|
|
15
|
+
primaryHover: '#26997b',
|
|
16
|
+
primaryActive: '#1d3b31',
|
|
17
|
+
onPrimary: '#ffffff',
|
|
18
|
+
} as const
|