@kne/form-creator 0.1.12 → 0.1.14

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 CHANGED
@@ -1032,6 +1032,206 @@ render(<SchemaToDataSchemaExample />);
1032
1032
 
1033
1033
  ```
1034
1034
 
1035
+ - 扩展添加模块旁的按钮
1036
+ - extraToolbar:在「添加模块」和设置按钮后面追加自定义操作
1037
+ - _FormCreator(@kne/current-lib_form-creator)[import * as _FormCreator from "@kne/form-creator"],(@kne/current-lib_form-creator/dist/index.css)[import "@kne/form-creator/dist/index.css"],antd(antd)[import antd from "antd"]
1038
+
1039
+ ```jsx
1040
+ const { default: FormCreator, defaultSchema, createBlock, createField } = _FormCreator;
1041
+ const { useState } = React;
1042
+ const { Alert, Button, Space, Typography, message } = antd;
1043
+ const { Text } = Typography;
1044
+
1045
+ const ExtraToolbarExample = () => {
1046
+ const [schema, setSchema] = useState(() => ({
1047
+ ...defaultSchema(),
1048
+ blocks: [
1049
+ createBlock('formInfo', {
1050
+ title: '基本信息',
1051
+ column: 2,
1052
+ list: [
1053
+ createField({ type: 'Input', name: 'name', label: '姓名', rule: 'REQ', props: { placeholder: '请输入姓名' } }),
1054
+ createField({ type: 'Input', name: 'mobile', label: '手机号', rule: 'REQ TEL', props: { placeholder: '请输入手机号' } })
1055
+ ]
1056
+ })
1057
+ ]
1058
+ }));
1059
+
1060
+ return (
1061
+ <Space direction="vertical" size={16} style={{ width: '100%' }}>
1062
+ <Alert
1063
+ type="info"
1064
+ showIcon
1065
+ message="扩展工具栏按钮"
1066
+ description={
1067
+ <span>
1068
+ 「添加模块」旁的设置按钮后面可通过 <Text code>extraToolbar</Text> 追加自定义按钮(ReactNode,或
1069
+ <Text code>{'({ schema }) => ReactNode'}</Text>)。
1070
+ </span>
1071
+ }
1072
+ />
1073
+ <FormCreator
1074
+ value={schema}
1075
+ onChange={setSchema}
1076
+ extraToolbar={
1077
+ <Space size={8}>
1078
+ <Button
1079
+ size="small"
1080
+ onClick={() => {
1081
+ const text = JSON.stringify(schema, null, 2);
1082
+ if (navigator.clipboard?.writeText) {
1083
+ navigator.clipboard.writeText(text).then(() => message.success('已复制 Schema JSON'));
1084
+ } else {
1085
+ message.info(text);
1086
+ }
1087
+ }}
1088
+ >
1089
+ 复制 Schema
1090
+ </Button>
1091
+ <Button size="small" onClick={() => message.info('这里可以接导入 / 预览等业务逻辑')}>
1092
+ 导入
1093
+ </Button>
1094
+ </Space>
1095
+ }
1096
+ />
1097
+ </Space>
1098
+ );
1099
+ };
1100
+
1101
+ render(<ExtraToolbarExample />);
1102
+
1103
+ ```
1104
+
1105
+ - 按 Schema 展示提交数据
1106
+ - SchemaContent:根据搭建 Schema 与字段 valueSchema,用 InfoPage(同 FormInfo 布局)展示提交结果
1107
+ - _FormCreator(@kne/current-lib_form-creator)[import * as _FormCreator from "@kne/form-creator"],(@kne/current-lib_form-creator/dist/index.css)[import "@kne/form-creator/dist/index.css"],antd(antd)[import antd from "antd"]
1108
+
1109
+ ```jsx
1110
+ const { SchemaRenderer, SchemaContent, createBlock, createField, createChoiceOption } = _FormCreator;
1111
+ const { useState } = React;
1112
+ const { Alert, Card, Col, Row, Space, Typography } = antd;
1113
+ const { Text } = Typography;
1114
+
1115
+ const demoSchema = {
1116
+ actions: {
1117
+ showSubmit: true,
1118
+ showReset: true,
1119
+ submitText: '提交并展示',
1120
+ resetText: '重置'
1121
+ },
1122
+ blocks: [
1123
+ createBlock('formInfo', {
1124
+ title: '员工信息',
1125
+ subtitle: '提交后按各字段 valueSchema 展示',
1126
+ column: 2,
1127
+ list: [
1128
+ createField({ type: 'Input', name: 'name', label: '姓名', rule: 'REQ', props: { placeholder: '请输入姓名' } }),
1129
+ createField({ type: 'Input', name: 'mobile', label: '手机号', rule: 'REQ TEL', props: { placeholder: '请输入手机号' } }),
1130
+ createField({
1131
+ type: 'Select',
1132
+ name: 'gender',
1133
+ label: '性别',
1134
+ rule: 'REQ',
1135
+ props: {
1136
+ placeholder: '请选择',
1137
+ options: [
1138
+ { label: '男', value: 'male' },
1139
+ { label: '女', value: 'female' }
1140
+ ]
1141
+ }
1142
+ }),
1143
+ createField({ type: 'Switch', name: 'agree', label: '同意协议' }),
1144
+ createField({ type: 'DatePicker', name: 'joinDate', label: '入职日期', props: { placeholder: '请选择日期' } }),
1145
+ createField({ type: 'TextArea', name: 'remark', label: '备注', block: true, props: { rows: 2, placeholder: '选填' } })
1146
+ ]
1147
+ }),
1148
+ createBlock('list', {
1149
+ title: '项目经历',
1150
+ name: 'projects',
1151
+ addText: '添加项目',
1152
+ list: [
1153
+ createField({ type: 'Input', name: 'projectName', label: '项目名', rule: 'REQ' }),
1154
+ createField({ type: 'Input', name: 'role', label: '角色' })
1155
+ ]
1156
+ }),
1157
+ createBlock('choice', {
1158
+ title: '客户类型',
1159
+ mode: 'single',
1160
+ selectorName: 'customerType',
1161
+ selectorInData: true,
1162
+ options: [
1163
+ createChoiceOption({
1164
+ id: 'enterprise',
1165
+ title: '企业',
1166
+ list: [createField({ type: 'Input', name: 'companyName', label: '公司名', rule: 'REQ' })]
1167
+ }),
1168
+ createChoiceOption({
1169
+ id: 'person',
1170
+ title: '个人',
1171
+ list: [createField({ type: 'Input', name: 'idName', label: '姓名', rule: 'REQ' })]
1172
+ })
1173
+ ]
1174
+ })
1175
+ ]
1176
+ };
1177
+
1178
+ const demoData = {
1179
+ name: '张三',
1180
+ mobile: '13800138000',
1181
+ gender: 'male',
1182
+ agree: true,
1183
+ joinDate: '2024-03-01',
1184
+ remark: '可远程办公',
1185
+ projects: [
1186
+ { projectName: '招聘门户改版', role: '前端' },
1187
+ { projectName: '表单搭建器', role: '全栈' }
1188
+ ],
1189
+ customerType: 'enterprise',
1190
+ companyName: '示例科技有限公司'
1191
+ };
1192
+
1193
+ const SchemaContentExample = () => {
1194
+ const [data, setData] = useState(demoData);
1195
+
1196
+ return (
1197
+ <Space direction="vertical" size={16} style={{ width: '100%' }}>
1198
+ <Alert
1199
+ type="info"
1200
+ showIcon
1201
+ message="SchemaContent"
1202
+ description={
1203
+ <span>
1204
+ 按搭建 Schema 的分组结构展示提交数据;字段展示形态由各填写项的 <Text code>valueSchema</Text>
1205
+ (如 string / number / boolean / enum)决定。布局与 FormInfo 相同,使用 InfoPage.Part + Content。
1206
+ </span>
1207
+ }
1208
+ />
1209
+ <Row gutter={[16, 16]}>
1210
+ <Col xs={24} lg={12}>
1211
+ <Card size="small" title="填写并提交" bordered>
1212
+ <SchemaRenderer
1213
+ schema={demoSchema}
1214
+ formProps={{
1215
+ data: demoData,
1216
+ onSubmit: values => setData(values)
1217
+ }}
1218
+ />
1219
+ </Card>
1220
+ </Col>
1221
+ <Col xs={24} lg={12}>
1222
+ <Card size="small" title="数据展示(SchemaContent)" bordered>
1223
+ <SchemaContent schema={demoSchema} data={data} />
1224
+ </Card>
1225
+ </Col>
1226
+ </Row>
1227
+ </Space>
1228
+ );
1229
+ };
1230
+
1231
+ render(<SchemaContentExample />);
1232
+
1233
+ ```
1234
+
1035
1235
  ### API
1036
1236
 
1037
1237
  | 属性 | 类型 | 默认值 | 说明 |
@@ -1043,6 +1243,20 @@ render(<SchemaToDataSchemaExample />);
1043
1243
  | className | string | - | 根节点类名 |
1044
1244
  | formProps | object | {} | 透传给预览区 Form / FormSteps 的属性 |
1045
1245
  | renderModal | function(props) | - | 自定义编辑弹窗渲染,透传给内部 FormModal(同 super-select / form-info) |
1246
+ | extraToolbar | ReactNode \| function({ schema }) | - | 追加在「添加模块」与设置按钮后面的自定义按钮区 |
1247
+
1248
+ ```js
1249
+ <FormCreator
1250
+ value={schema}
1251
+ onChange={setSchema}
1252
+ extraToolbar={
1253
+ <Button size="small" onClick={() => {}}>复制 Schema</Button>
1254
+ }
1255
+ />
1256
+
1257
+ // 需要读当前 Schema 时用函数
1258
+ <FormCreator extraToolbar={({ schema }) => <Button size="small">导出</Button>} />
1259
+ ```
1046
1260
 
1047
1261
  #### SchemaRenderer
1048
1262
 
@@ -1054,6 +1268,10 @@ render(<SchemaToDataSchemaExample />);
1054
1268
  | formProps | object | {} | 透传给内部 `Form`(如 `onSubmit`、`data`) |
1055
1269
  | preview | boolean | false | 预览态(字段预览行为) |
1056
1270
  | className | string | - | 根 Form 类名 |
1271
+ | bodyClassName | string | - | 字段区域(`.schema-body`)额外 className,便于外部改样式 |
1272
+ | footerClassName | string | - | Footer 操作区(`.schema-actions`)额外 className |
1273
+ | buttonFooter | boolean | false | 为 true 时用 `@kne/button-group` 的 `ButtonFooter` 包裹 Footer(移动端贴底);默认关闭 |
1274
+ | buttonFooterProps | object | - | 透传给 `ButtonFooter`(如 `placement`、`target`、`className`) |
1057
1275
  | children | ReactNode | - | 追加到表单内容与操作区之间 |
1058
1276
  | showActions | boolean | true | 是否展示提交/重置操作区(默认开启,可不传) |
1059
1277
  | actions | ReactNode \| false | - | 自定义操作区;不传则按 Schema `actions` / 默认居中「提交/重置」;`false` 隐藏 |
@@ -1086,6 +1304,16 @@ import { SchemaRenderer } from '@kne/form-creator';
1086
1304
  <SchemaRenderer schema={schema} showActions={false} />
1087
1305
  // 或
1088
1306
  <SchemaRenderer schema={schema} actions={false} />
1307
+
1308
+ // 字段区 / Footer 自定义 className;移动端 Footer 贴底(默认关闭)
1309
+ <SchemaRenderer
1310
+ schema={schema}
1311
+ bodyClassName="my-form-fields"
1312
+ footerClassName="my-form-footer"
1313
+ buttonFooter
1314
+ buttonFooterProps={{ placement: 'bottom' }}
1315
+ formProps={{ onSubmit: console.log }}
1316
+ />
1089
1317
  ```
1090
1318
 
1091
1319
  #### SchemaRendererInner
@@ -1100,6 +1328,7 @@ import { SchemaRenderer } from '@kne/form-creator';
1100
1328
  | children | ReactNode | - | 追加内容 |
1101
1329
  | showActions | boolean | true | 是否展示提交/重置操作区(默认开启,可不传) |
1102
1330
  | actions / showSubmit / showReset / submitText / resetText / \*ButtonProps | - | - | 同 SchemaRenderer |
1331
+ | bodyClassName / footerClassName / buttonFooter / buttonFooterProps | - | - | 同 SchemaRenderer |
1103
1332
 
1104
1333
  ```js
1105
1334
  import { SchemaRendererInner } from '@kne/form-creator';
@@ -1116,6 +1345,29 @@ import { Form, SubmitButton } from '@kne/form-info';
1116
1345
  </Form>
1117
1346
  ```
1118
1347
 
1348
+ #### SchemaContent
1349
+
1350
+ 按搭建 Schema 的分组结构展示**已提交数据**(只读)。字段展示形态由各填写项的 `valueSchema` 决定(boolean → 是/否,enum → 选项文案,日期按 `format`)。布局与 FormInfo 相同,使用 `@kne/info-page` 的 Part + Content。示例见「按 Schema 展示提交数据」。
1351
+
1352
+ | 属性 | 类型 | 默认值 | 说明 |
1353
+ |----|----|-----|----|
1354
+ | schema | object | - | 搭建 Schema |
1355
+ | data | object | - | 提交数据;为 `null` / `undefined` 时展示空状态 |
1356
+ | className | string | - | 根节点类名 |
1357
+ | empty | ReactNode | - | 自定义空状态;不传则用默认 Empty |
1358
+
1359
+ `SchemaContentInner` 只渲染分组内容,**不包**外层 `InfoPage`,便于放入业务已有详情页。
1360
+
1361
+ ```js
1362
+ import { SchemaContent, SchemaContentInner } from '@kne/form-creator';
1363
+
1364
+ <SchemaContent schema={schema} data={submitData} />
1365
+
1366
+ <InfoPage>
1367
+ <SchemaContentInner schema={schema} data={submitData} />
1368
+ </InfoPage>
1369
+ ```
1370
+
1119
1371
  #### Schema 结构
1120
1372
 
1121
1373
  ```js
@@ -1148,7 +1400,7 @@ import { Form, SubmitButton } from '@kne/form-info';
1148
1400
  }
1149
1401
  ```
1150
1402
 
1151
- `actions` 由 FormCreator 顶部「添加模块」旁的设置按钮弹窗配置,写入 Schema;`SchemaRenderer` 会读取并渲染居中操作按钮(组件 props 可覆盖 Schema)。
1403
+ `actions` 由 FormCreator 顶部「添加模块」旁的设置按钮弹窗配置,写入 Schema;`SchemaRenderer` 会读取并渲染居中操作按钮(组件 props 可覆盖 Schema)。设置按钮后面可用 `extraToolbar` 追加自定义按钮。
1152
1404
  #### 区块类型
1153
1405
 
1154
1406
  | kind | 说明 | 主要参数 |
@@ -1174,6 +1426,7 @@ import { Form, SubmitButton } from '@kne/form-info';
1174
1426
 
1175
1427
  - `createBlock(kind)` / `createStep()` / `createChoiceOption()` / `normalizeSchema(schema)`
1176
1428
  - `schemaToDataSchema(schema)` 根据搭建 Schema 生成**提交数据**的 JSON Schema(见下节)
1429
+ - `SchemaContent` / `SchemaContentInner` 按 Schema + 字段 `valueSchema` 只读展示提交数据
1177
1430
  - `preset({ rules, fields })` 一次注册扩展规则与填写项(推荐)
1178
1431
  - `parseRuleString(rule)` / `buildRuleString(config)` 校验规则字符串解析/组装
1179
1432
 
package/dist/index.css CHANGED
@@ -79,6 +79,16 @@
79
79
  margin-bottom: 10px;
80
80
  }
81
81
 
82
+ .kne-form-creator_O22ZM {
83
+ display: inline-flex;
84
+ align-items: center;
85
+ gap: 8px;
86
+ }
87
+
88
+ .kne-form-creator_9bWOD {
89
+ width: 100%;
90
+ }
91
+
82
92
  .kne-form-creator_16Zre {
83
93
  height: 30px !important;
84
94
  padding: 0 14px !important;
@@ -733,13 +743,14 @@
733
743
  box-shadow: none !important;
734
744
  }
735
745
  .kne-form-creator_51ZsV .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {
736
- background: var(--ant-color-primary, #1677ff) !important;
746
+ background: var(--primary-color, #1677ff) !important;
737
747
  color: #fff !important;
738
748
  font-weight: 500;
739
749
  }
740
750
  .kne-form-creator_51ZsV .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {
741
751
  color: #fff !important;
742
- background: var(--ant-color-primary-hover, #4096ff) !important;
752
+ background: var(--primary-color, #1677ff) !important;
753
+ filter: brightness(1.08);
743
754
  }
744
755
 
745
756
  .kne-form-creator_hFeiC {
@@ -1 +1 @@
1
- {"version":3,"sources":["style.module.scss"],"names":[],"mappings":"AAAA,gBAAgB;AAChB;EACE,kBAAkB;AACpB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,2BAA2B;EAC3B,6BAA6B;EAC7B,iCAAiC;EACjC,iCAAiC;AACnC;;AAEA;EACE,2BAA2B;EAC3B,6BAA6B;EAC7B,iCAAiC;EACjC,iCAAiC;AACnC;;AAEA;EACE,aAAa;EACb,eAAe;EACf,SAAS;EACT,iBAAiB;EACjB,oBAAoB;EACpB,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;;EAEE,eAAe;EACf,2BAA2B;EAC3B,kBAAkB;EAClB,gBAAgB;AAClB;;AAEA;EACE,iBAAiB;EACjB,2BAA2B;AAC7B;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,sBAAsB;EACtB,SAAS;EACT,aAAa;EACb,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,sBAAsB;EACtB,0BAA0B;EAC1B,uBAAuB;EACvB,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,0BAA0B;EAC1B,+BAA+B;EAC/B,gBAAgB;AAClB;;AAEA,+BAA+B;AAC/B;EACE,uBAAuB;EACvB,0BAA0B;EAC1B,uBAAuB;EACvB,+BAA+B;EAC/B,gDAAgD;EAChD,2BAA2B;EAC3B,qCAAqC;EACrC,0BAA0B;EAC1B,gBAAgB;EAChB,+BAA+B;EAC/B,mBAAmB;EACnB,QAAQ;AACV;AACA;EACE,eAAe;AACjB;AACA;EACE,qCAAqC;EACrC,8BAA8B;AAChC;AACA;EACE,qCAAqC;EACrC,8BAA8B;AAChC;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;AACX;;AAEA,qBAAqB;AACrB;EACE,kBAAkB;EAClB,mBAAmB;EACnB,mBAAmB;EACnB,iCAAiC;AACnC;AACA;EACE,yCAAyC;AAC3C;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;AACrB;AACA;EACE,qCAAqC;AACvC;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,QAAQ;EACR,YAAY;AACd;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,YAAY;EACZ,OAAO;AACT;AACA;EACE,cAAc;AAChB;;AAEA;EACE,cAAc;EACd,YAAY;EACZ,gBAAgB;EAChB,gBAAgB;EAChB,eAAe;AACjB;;AAEA;EACE,cAAc;EACd,gBAAgB;EAChB,oBAAoB;EACpB,oCAAoC;EACpC,0BAA0B;EAC1B,eAAe;EACf,iBAAiB;EACjB,mBAAmB;AACrB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,iBAAiB;EACjB,0CAA0C;AAC5C;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,qCAAqC;EACrC,+CAA+C;AACjD;AACA;EACE,+CAA+C;AACjD;;AAEA;EACE,gBAAgB;EAChB,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;EAClB,oHAAoH;AACtH;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,eAAe;EACf,YAAY;EACZ,iBAAiB;EACjB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,iBAAiB;EACjB,0BAA0B;AAC5B;AACA;EACE,mBAAmB;AACrB;;AAEA;EACE,oBAAoB;EACpB,cAAc;EACd,eAAe;AACjB;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,0BAA0B;EAC1B,eAAe;EACf,iBAAiB;AACnB;;AAEA;EACE,WAAW;EACX,eAAe;EACf,+BAA+B;AACjC;;AAEA;EACE,qBAAqB;EACrB,0BAA0B;EAC1B,eAAe;EACf,iBAAiB;AACnB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,8BAA8B;EAC9B,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,eAAe;AACjB;;AAEA;;EAEE,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA,oBAAoB;AACpB;EACE,kBAAkB;EAClB,mBAAmB;EACnB,qCAAqC;AACvC;AACA;EACE,aAAa;AACf;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,eAAe;EACf,kBAAkB;EAClB,YAAY;AACd;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,cAAc;EACd,oBAAoB;EACpB,mBAAmB;EACnB,eAAe;EACf,QAAQ;AACV;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,mCAAmC;EACnC,cAAc;EACd,eAAe;EACf,gBAAgB;AAClB;;AAEA,YAAY;AACZ;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;EACT,iBAAiB;EACjB,mBAAmB;EACnB,mBAAmB;EACnB,uDAAuD;AACzD;AACA;EACE,mBAAmB;EACnB,6BAA6B;AAC/B;;AAEA;EACE,WAAW;EACX,cAAc;EACd,cAAc;EACd,eAAe;EACf,kBAAkB;AACpB;;AAEA;EACE,OAAO;EACP,YAAY;AACd;;AAEA;EACE,cAAc;EACd,iBAAiB;EACjB,eAAe;EACf,mBAAmB;EACnB,qCAAqC;AACvC;;AAEA,8BAA8B;AAC9B;;EAEE,UAAU;EACV,oBAAoB;EACpB,8BAA8B;AAChC;;AAEA;EACE,oBAAoB;EACpB,mBAAmB;EACnB,cAAc;EACd,YAAY;EACZ,oBAAoB;EACpB,+BAA+B;EAC/B,MAAM;AACR;;AAEA;;;;;;;;;;;;;EAaE,UAAU;EACV,oBAAoB;AACtB;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,uBAAuB;EACvB,+BAA+B;EAC/B,2BAA2B;EAC3B,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;EACvB,0BAA0B;AAC5B;AACA;EACE,eAAe;AACjB;AACA;EACE,0BAA0B;EAC1B,gDAAgD;AAClD;AACA;EACE,0BAA0B;EAC1B,kCAAkC;AACpC;AACA;EACE,cAAc;AAChB;AACA;EACE,cAAc;EACd,+CAA+C;AACjD;;AAEA;EACE,YAAY;EACZ,YAAY;EACZ,mBAAmB;EACnB,kBAAkB;EAClB,oHAAoH;AACtH;;AAEA;EACE,aAAa;EACb,SAAS;EACT,kBAAkB;EAClB,kBAAkB;EAClB,eAAe;EACf,6BAA6B;EAC7B,wDAAwD;AAC1D;AACA;EACE,mBAAmB;EACnB,qBAAqB;AACvB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,mBAAmB;EACnB,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,mBAAmB;EACnB,cAAc;EACd,cAAc;AAChB;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,eAAe;EACf,cAAc;EACd,eAAe;EACf,iBAAiB;EACjB,oBAAoB;EACpB,qBAAqB;EACrB,4BAA4B;EAC5B,gBAAgB;AAClB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,gBAAgB;EAChB,0BAA0B;EAC1B,YAAY;EACZ,eAAe;AACjB;;AAEA;EACE,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,OAAO;EACP,aAAa;EACb,sBAAsB;EACtB,aAAa;EACb,UAAU;AACZ;AACA;EACE,OAAO;EACP,aAAa;EACb,sBAAsB;EACtB,gBAAgB;AAClB;AACA;EACE,WAAW;EACX,YAAY;EACZ,eAAe;EACf,qBAAqB;EACrB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,2BAA2B;EAC3B,8BAA8B;AAChC;AACA;EACE,yBAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,WAAW;EACX,gBAAgB;EAChB,sBAAsB;AACxB;;AAEA;EACE,cAAc;EACd,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,WAAW;EACX,YAAY;AACd;;AAEA,4BAA4B;AAC5B;EACE,WAAW;EACX,sBAAsB;EACtB,gBAAgB;EAChB,eAAe;EACf,yCAAyC;EACzC,cAAc;AAChB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,sBAAsB;AACxB;;AAEA;EACE,kBAAkB;AACpB;AACA;EACE,kBAAkB;AACpB;AACA;EACE,aAAa;EACb,eAAe;EACf,QAAQ;AACV;AACA;EACE,oBAAoB;EACpB,eAAe;AACjB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,WAAW;EACX,gBAAgB;EAChB,iBAAiB;EACjB,yCAAyC;EACzC,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;EAChB,mBAAmB;EACnB,yCAAyC;EACzC,eAAe;EACf,iBAAiB;EACjB,0BAA0B;EAC1B,kBAAkB;AACpB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,kBAAkB;EAClB,qCAAqC;EACrC,kBAAkB;EAClB,mBAAmB;AACrB;AACA;;EAEE,uBAAuB;AACzB;;AAEA;EACE,mBAAmB;EACnB,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,0BAA0B;AAC5B;;AAEA;EACE,aAAa;EACb,eAAe;EACf,QAAQ;EACR,eAAe;AACjB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,gBAAgB;AAClB;AACA;EACE,YAAY;AACd;;AAEA;EACE,gBAAgB;EAChB,aAAa;EACb,mBAAmB;AACrB;;AAEA;EACE,uBAAuB;EACvB,mBAAmB;EACnB,mBAAmB;EACnB,qCAAqC;AACvC;AACA;EACE,kCAAkC;EAClC,uBAAuB;EACvB,2BAA2B;AAC7B;AACA;EACE,aAAa;AACf;AACA;EACE,qBAAqB;AACvB;AACA;EACE,mBAAmB;AACrB;AACA;EACE,gBAAgB;AAClB;;AAEA;EACE,wBAAwB;EACxB,WAAW;EACX,YAAY;EACZ,gBAAgB;EAChB,oBAAoB;EACpB,qCAAqC;EACrC,gBAAgB;AAClB;AACA;EACE,OAAO;EACP,YAAY;EACZ,iBAAiB;EACjB,iBAAiB;EACjB,kBAAkB;EAClB,uBAAuB;EACvB,+BAA+B;EAC/B,kCAAkC;EAClC,2BAA2B;EAC3B,0BAA0B;AAC5B;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,wBAAwB;AAC1B;AACA;EACE,0BAA0B;AAC5B;AACA;EACE,2BAA2B;AAC7B;AACA;EACE,wDAAwD;EACxD,sBAAsB;EACtB,gBAAgB;AAClB;AACA;EACE,sBAAsB;EACtB,8DAA8D;AAChE;;AAEA;EACE,mBAAmB;EACnB,0BAA0B;EAC1B,eAAe;EACf,gBAAgB;EAChB,sBAAsB;AACxB;;AAEA;EACE,4BAA4B;EAC5B,oBAAoB;AACtB;;AAEA;EACE,kBAAkB;AACpB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;;;;;EAKE,cAAc;AAChB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,WAAW;AACb;;AAEA;EACE,0BAA0B;EAC1B,eAAe;AACjB;;AAEA;EACE,aAAa;EACb,sBAAsB;AACxB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,mBAAmB;AACrB;;AAEA;EACE,yBAAyB;EACzB,kBAAkB;EAClB,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,aAAa;EACb,uBAAuB;EACvB,QAAQ;AACV;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,aAAa;EACb,2DAA2D;EAC3D,QAAQ;AACV;;AAEA;EACE,aAAa;EACb,cAAc;EACd,mBAAmB;EACnB,MAAM;AACR;;AAEA;EACE,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,8BAA8B;EAC9B,aAAa;EACb,sBAAsB;EACtB,QAAQ;AACV;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,aAAa;EACb,eAAe;EACf,aAAa;EACb,gBAAgB;AAClB;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,kBAAkB;EAClB,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,UAAU;EACV,0BAA0B;EAC1B,cAAc;AAChB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,cAAc;AAChB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,cAAc;EACd,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA,gBAAgB;AAChB;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE;;IAEE,iBAAiB;EACnB;EACA;IACE,gBAAgB;EAClB;EACA;IACE,SAAS;EACX;EACA;IACE,kBAAkB;IAClB,mBAAmB;EACrB;EACA;IACE,wBAAwB;EAC1B;EACA;;IAEE,UAAU;IACV,oBAAoB;EACtB;EACA;IACE,eAAe;IACf,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,WAAW;IACX,eAAe;EACjB;EACA;IACE,gBAAgB;IAChB,cAAc;EAChB;EACA;IACE,WAAW;IACX,aAAa;IACb,yBAAyB;IACzB,eAAe;IACf,QAAQ;EACV;EACA;IACE,cAAc;EAChB;EACA;IACE,iBAAiB;EACnB;EACA;IACE,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;EACjB;EACA;IACE,WAAW;IACX,yBAAyB;IACzB,QAAQ;EACV;EACA;IACE,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,eAAe;EACjB;EACA;IACE,eAAe;EACjB;EACA;IACE,2BAA2B;IAC3B,YAAY;EACd;EACA;IACE,iBAAiB;EACnB;EACA;IACE,+BAA+B;EACjC;EACA;IACE,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,UAAU;EACZ;EACA;;IAEE,gBAAgB;EAClB;EACA;IACE,eAAe;EACjB;EACA;IACE,gBAAgB;EAClB;AACF","file":"index.css","sourcesContent":["@charset \"UTF-8\";\n.kne-responsive-boundary {\n position: relative;\n}\n\n.kne-responsive-scroll {\n overflow: auto;\n}\n\n:root {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.kne-responsive-boundary {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.form-creator {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n min-height: 480px;\n align-items: stretch;\n box-sizing: border-box;\n padding: 16px;\n background: #f5f5f5;\n border-radius: 12px;\n}\n\n.editor-pane,\n.preview-pane {\n flex: 1 1 360px;\n min-width: min(360px, 100%);\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.editor-pane {\n flex-basis: 420px;\n min-width: min(420px, 100%);\n}\n\n.preview-pane {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n margin: 0;\n padding: 16px;\n background: #fff;\n border-radius: 8px;\n}\n\n.editor-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.block-list-panel {\n padding: 8px 0 0;\n}\n\n.form-actions-setting-btn {\n width: 30px !important;\n min-width: 30px !important;\n height: 30px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n\n.panel-toolbar {\n margin-bottom: 10px;\n}\n\n.add-block-btn {\n height: 30px !important;\n padding: 0 14px !important;\n border-radius: 999px !important;\n font-weight: 500;\n}\n\n/* 添加填写项 / 添加步骤:中性小胶囊,与操作组同语汇 */\n.add-inline-btn {\n height: 26px !important;\n padding: 0 10px !important;\n border: none !important;\n border-radius: 999px !important;\n background: rgba(255, 255, 255, 0.72) !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.55) !important;\n font-size: 12px !important;\n font-weight: 500;\n display: inline-flex !important;\n align-items: center;\n gap: 2px;\n}\n.add-inline-btn :global(.anticon) {\n font-size: 11px;\n}\n.add-inline-btn:hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n.add-inline-btn:global(.ant-btn-text):not(:disabled):not(.ant-btn-disabled):hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n\n.block-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* 模块:类型浅色底区隔,无边框线框 */\n.block-section {\n padding: 12px 14px;\n border-radius: 12px;\n background: #f4f6f9;\n transition: box-shadow 0.15s ease;\n}\n.block-section:hover {\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03);\n}\n\n.block-kind-formInfo {\n background: #eef4ff;\n}\n\n.block-kind-list {\n background: #eafaf8;\n}\n\n.block-kind-tableList {\n background: #eef1ff;\n}\n\n.block-kind-multiField {\n background: #f6f0ff;\n}\n\n.block-kind-steps {\n background: #fff8e8;\n}\n.block-kind-steps .step-section {\n background: rgba(255, 255, 255, 0.72);\n}\n\n.block-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-width: 0;\n}\n\n.block-header-left {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n min-width: 0;\n flex: 1;\n}\n.block-header-left :global(.ant-tag) {\n flex-shrink: 0;\n}\n\n.block-title {\n flex: 0 1 auto;\n min-width: 0;\n max-width: 160px;\n overflow: hidden;\n font-size: 14px;\n}\n\n.block-summary {\n flex-shrink: 0;\n padding: 1px 8px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.7);\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.block-header-actions {\n flex-shrink: 0;\n}\n\n.block-body {\n margin-top: 10px;\n}\n\n.item-blocks-section {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed rgba(0, 0, 0, 0.08);\n}\n\n.nested-block-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.block-section-nested {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.block-section-nested:hover {\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown {\n min-width: 200px;\n max-width: 280px;\n max-height: 280px;\n overflow-y: auto;\n padding: 6px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-field-dropdown-item {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n padding: 8px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.88);\n}\n.add-field-dropdown-item:hover {\n background: #f5f5f5;\n}\n\n.add-field-dropdown-item-icon {\n display: inline-flex;\n color: #4183f0;\n font-size: 14px;\n}\n\n.add-field-dropdown-item-desc {\n flex: 1 0 100%;\n padding-left: 22px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 16px;\n}\n\n.add-field-dropdown-divider {\n height: 1px;\n margin: 4px 6px;\n background: rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown-label {\n padding: 6px 10px 2px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n}\n\n.section-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 28px;\n margin-bottom: 6px;\n}\n\n.section-toolbar-label {\n font-size: 12px;\n}\n\n.field-list,\n.step-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n/* 步骤:半透明白底叠在模块色底上 */\n.step-section {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n.step-section + .step-section {\n margin-top: 0;\n}\n\n.step-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n min-width: 0;\n}\n\n.step-section-title {\n flex: 1;\n min-width: 0;\n max-width: 100%;\n}\n\n.step-section-actions {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.step-index {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(47, 84, 235, 0.12);\n color: #2f54eb;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* 填写项:白底块 */\n.field-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 10px;\n background: #ffffff;\n transition: background 0.15s ease, transform 0.15s ease;\n}\n.field-row:hover {\n background: #fcfdff;\n transform: translateY(-0.5px);\n}\n\n.field-row-index {\n width: 18px;\n flex-shrink: 0;\n color: #bfbfbf;\n font-size: 12px;\n text-align: center;\n}\n\n.field-row-main {\n flex: 1;\n min-width: 0;\n}\n\n.inline-empty {\n display: block;\n padding: 8px 10px;\n font-size: 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n\n/* 操作组 / 添加按钮:默认隐藏,悬停对应容器再显示 */\n.action-group,\n.hover-reveal {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.action-group {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 2px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.06);\n gap: 0;\n}\n\n.block-section:hover > .block-section-header .action-group,\n.block-section:hover > .block-section-header .hover-reveal,\n.block-section:focus-within > .block-section-header .action-group,\n.block-section:focus-within > .block-section-header .hover-reveal,\n.block-section:hover > .block-body > .section-toolbar .hover-reveal,\n.block-section:focus-within > .block-body > .section-toolbar .hover-reveal,\n.step-section:hover > .step-section-header .action-group,\n.step-section:hover > .step-section-header .hover-reveal,\n.step-section:focus-within > .step-section-header .action-group,\n.step-section:focus-within > .step-section-header .hover-reveal,\n.field-row:hover .action-group,\n.field-row:focus-within .action-group,\n.hover-reveal-active {\n opacity: 1;\n pointer-events: auto;\n}\n\n.action-btn {\n width: 26px !important;\n height: 26px !important;\n min-width: 26px !important;\n padding: 0 !important;\n border: none !important;\n border-radius: 999px !important;\n box-shadow: none !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n color: rgba(0, 0, 0, 0.55);\n}\n.action-btn :global(.anticon) {\n font-size: 12px;\n}\n.action-btn:hover:not(:disabled) {\n color: rgba(0, 0, 0, 0.88);\n background: rgba(255, 255, 255, 0.85) !important;\n}\n.action-btn:disabled {\n color: rgba(0, 0, 0, 0.25);\n background: transparent !important;\n}\n.action-btn:global(.ant-btn-dangerous) {\n color: #ff4d4f;\n}\n.action-btn:global(.ant-btn-dangerous):hover:not(:disabled) {\n color: #ff7875;\n background: rgba(255, 255, 255, 0.9) !important;\n}\n\n.add-block-dropdown {\n width: 320px;\n padding: 8px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-block-option {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n border: 1px solid transparent;\n transition: background 0.2s ease, border-color 0.2s ease;\n}\n.add-block-option:hover {\n background: #f7fbff;\n border-color: #dbe7ff;\n}\n\n.add-block-option-icon {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f1f7ff;\n color: #4183f0;\n flex-shrink: 0;\n}\n\n.add-block-option-text {\n min-width: 0;\n}\n\n.add-block-option-title {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.add-block-option-desc {\n margin-top: 2px;\n color: #667085;\n font-size: 12px;\n line-height: 16px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.field-empty {\n padding: 24px 0;\n}\n\n.field-label-tips-icon {\n margin-left: 4px;\n color: rgba(0, 0, 0, 0.45);\n cursor: help;\n font-size: 14px;\n}\n\n.preview-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.preview-title {\n margin-bottom: 4px !important;\n}\n\n.preview-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n padding: 0;\n}\n.preview-body :global form {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 100%;\n}\n.preview-body :global .ant-card-extra .ant-btn.ant-btn-icon-only {\n width: 32px;\n height: 32px;\n min-width: 32px;\n padding: 0 !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-head {\n margin-bottom: 0 !important;\n padding-bottom: 8px !important;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-body {\n padding-top: 0 !important;\n}\n\n.schema-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n}\n\n.schema-body {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n min-width: 0;\n}\n\n/* 表单底部操作区:与内容分隔,固定落在表单最下方 */\n.schema-actions {\n width: 100%;\n box-sizing: border-box;\n margin-top: auto;\n padding: 16px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n flex-shrink: 0;\n}\n\n.schema-actions-inner {\n width: 100%;\n}\n\n.choice-block {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.choice-selector {\n margin-bottom: 4px;\n}\n.choice-selector :global .react-form__field {\n margin-bottom: 8px;\n}\n.choice-selector :global .ant-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.choice-selector :global .ant-radio-group {\n display: inline-flex;\n flex-wrap: wrap;\n}\n\n.choice-panels {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n margin-top: 12px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n box-sizing: border-box;\n}\n\n.choice-panels-empty {\n margin-top: 12px;\n padding: 16px 0 4px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.45);\n text-align: center;\n}\n\n.choice-option-panel {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n padding: 12px 14px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n border-radius: 8px;\n background: #fafafa;\n}\n.choice-option-panel :global(.ant-card),\n.choice-option-panel :global(.ant-card-body) {\n background: transparent;\n}\n\n.choice-option-panel-title {\n margin-bottom: 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.88);\n}\n\n.choice-option-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n\n.field-editor-form {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding-top: 4px;\n}\n\n.form-actions-editor {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding-top: 4px;\n}\n.form-actions-editor :global .ant-row {\n row-gap: 8px;\n}\n\n.form-actions-switch-field :global .react-form__field-main {\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n\n.form-actions-layout-panel {\n padding: 14px 16px 18px;\n border-radius: 10px;\n background: #f7f8fa;\n border: 1px solid rgba(0, 0, 0, 0.04);\n}\n.form-actions-layout-panel :global .ant-card {\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n}\n.form-actions-layout-panel :global .ant-card-head {\n display: none;\n}\n.form-actions-layout-panel :global .ant-card-body {\n padding: 0 !important;\n}\n.form-actions-layout-panel :global .ant-form-item {\n margin-bottom: 14px;\n}\n.form-actions-layout-panel :global .ant-form-item:last-child {\n margin-bottom: 0;\n}\n\n.form-actions-align-group {\n display: flex !important;\n width: 100%;\n padding: 3px;\n background: #fff;\n border-radius: 999px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper {\n flex: 1;\n height: 30px;\n line-height: 30px;\n padding-inline: 0;\n text-align: center;\n border: none !important;\n border-radius: 999px !important;\n background: transparent !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.65);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:not(:first-child)::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:hover {\n color: rgba(0, 0, 0, 0.88);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:focus-within {\n box-shadow: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n background: var(--ant-color-primary, #1677ff) !important;\n color: #fff !important;\n font-weight: 500;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n color: #fff !important;\n background: var(--ant-color-primary-hover, #4096ff) !important;\n}\n\n.form-actions-layout-title {\n margin-bottom: 12px;\n color: rgba(0, 0, 0, 0.65);\n font-size: 13px;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.form-actions-gap-slider {\n margin: 0 6px 8px !important;\n padding-bottom: 12px;\n}\n\n.editor-section {\n margin-bottom: 4px;\n}\n\n.section-divider {\n margin: 16px 0 !important;\n}\n\n.rule-editor,\n.options-editor,\n.super-select-props,\n.field-props-editor,\n.columns-editor {\n padding: 0 2px;\n}\n\n.prop-row {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n}\n\n.prop-label {\n color: rgba(0, 0, 0, 0.88);\n font-size: 14px;\n}\n\n.options-item {\n display: flex;\n flex-direction: column;\n}\n\n.table-row-card {\n background: #fafafa;\n}\n\n.tree-options-editor {\n margin-top: 12px;\n}\n\n.tree-options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.tree-option-node {\n border: 1px solid #eef0f4;\n border-radius: 8px;\n background: #fff;\n padding: 10px 12px;\n}\n\n.tree-option-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.tree-option-fields {\n flex: 1;\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 8px;\n}\n\n.tree-option-actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: 0;\n}\n\n.tree-option-children {\n margin-top: 10px;\n margin-left: 12px;\n padding-left: 12px;\n border-left: 2px solid #e6ebf5;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.tree-add-sibling {\n align-self: flex-start;\n}\n\n.rule-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n margin-top: 12px;\n}\n\n.rule-len-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.rule-len-input {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n.rule-len-sep {\n flex: none;\n color: rgba(0, 0, 0, 0.45);\n line-height: 1;\n}\n\n.options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 12px 0;\n}\n\n.options-row {\n width: 100%;\n}\n\n.options-tip {\n display: block;\n margin-top: 8px;\n color: #8c8c8c;\n font-size: 12px;\n}\n\n/* 纯图标按钮统一为正方形 */\n.icon-square-btn {\n width: 32px !important;\n height: 32px !important;\n min-width: 32px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn :global(.anticon) {\n font-size: 14px;\n}\n\n.icon-square-btn-sm {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn-sm :global(.anticon) {\n font-size: 13px;\n}\n\n@container kne-responsive (max-width: 768px) {\n .form-creator.is-mobile .editor-header,\n .form-creator.is-mobile .preview-header {\n padding: 0 0 10px;\n }\n .form-creator.is-mobile .block-list-panel {\n padding: 6px 0 0;\n }\n .form-creator.is-mobile .block-list {\n gap: 10px;\n }\n .form-creator.is-mobile .block-section {\n padding: 10px 12px;\n border-radius: 10px;\n }\n .form-creator.is-mobile {\n /* 触屏无 hover:操作与添加按钮常显 */\n }\n .form-creator.is-mobile .action-group,\n .form-creator.is-mobile .hover-reveal {\n opacity: 1;\n pointer-events: auto;\n }\n .form-creator.is-mobile .block-section-header {\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile .block-header-left {\n width: 100%;\n flex-wrap: wrap;\n }\n .form-creator.is-mobile .block-title {\n max-width: 160px;\n flex: 0 1 auto;\n }\n .form-creator.is-mobile .block-header-actions {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 6px;\n }\n .form-creator.is-mobile .block-summary {\n margin-left: 0;\n }\n .form-creator.is-mobile .step-section {\n padding: 8px 10px;\n }\n .form-creator.is-mobile .step-section-header {\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile {\n /* 标题独占一行,避免与常显操作栏挤成竖排字 */\n }\n .form-creator.is-mobile .step-section-title {\n flex: 0 0 100%;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n }\n .form-creator.is-mobile .step-section-actions {\n width: 100%;\n justify-content: flex-end;\n gap: 6px;\n }\n .form-creator.is-mobile .field-row {\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px;\n transform: none;\n }\n .form-creator.is-mobile .field-row:hover {\n transform: none;\n }\n .form-creator.is-mobile .field-row-main {\n flex: 1 1 calc(100% - 28px);\n min-width: 0;\n }\n .form-creator.is-mobile .field-row .action-group {\n margin-left: auto;\n }\n .form-creator.is-mobile .add-block-dropdown {\n width: min(320px, 100vw - 32px);\n }\n .form-creator.is-mobile .add-inline-btn {\n height: 28px !important;\n padding: 0 12px !important;\n }\n .form-creator.is-mobile .action-btn {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n }\n .form-creator.is-mobile .preview-body {\n padding: 0;\n }\n .form-creator.is-mobile .preview-body :global form + .part,\n .form-creator.is-mobile .preview-body :global .part + form {\n margin-top: 12px;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps {\n max-width: 100%;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps-horizontal {\n overflow-x: auto;\n }\n}"]}
1
+ {"version":3,"sources":["style.module.scss"],"names":[],"mappings":"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BAAkB;EAClB,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,OAAO;EACP,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,UAAU;EACV,0BAA0B;EAC1B,cAAc;AAChB;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,QAAQ;EACR,cAAc;AAChB;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,cAAc;EACd,eAAe;EACf,cAAc;EACd,eAAe;AACjB;;AAEA,gBAAgB;AAChB;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE,sBAAsB;EACtB,uBAAuB;EACvB,0BAA0B;EAC1B,qBAAqB;EACrB,+BAA+B;EAC/B,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,eAAe;AACjB;;AAEA;EACE;;IAEE,iBAAiB;EACnB;EACA;IACE,gBAAgB;EAClB;EACA;IACE,SAAS;EACX;EACA;IACE,kBAAkB;IAClB,mBAAmB;EACrB;EACA;IACE,wBAAwB;EAC1B;EACA;;IAEE,UAAU;IACV,oBAAoB;EACtB;EACA;IACE,eAAe;IACf,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,WAAW;IACX,eAAe;EACjB;EACA;IACE,gBAAgB;IAChB,cAAc;EAChB;EACA;IACE,WAAW;IACX,aAAa;IACb,yBAAyB;IACzB,eAAe;IACf,QAAQ;EACV;EACA;IACE,cAAc;EAChB;EACA;IACE,iBAAiB;EACnB;EACA;IACE,uBAAuB;IACvB,QAAQ;EACV;EACA;IACE,yBAAyB;EAC3B;EACA;IACE,cAAc;IACd,WAAW;IACX,YAAY;IACZ,eAAe;EACjB;EACA;IACE,WAAW;IACX,yBAAyB;IACzB,QAAQ;EACV;EACA;IACE,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,eAAe;EACjB;EACA;IACE,eAAe;EACjB;EACA;IACE,2BAA2B;IAC3B,YAAY;EACd;EACA;IACE,iBAAiB;EACnB;EACA;IACE,+BAA+B;EACjC;EACA;IACE,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,sBAAsB;IACtB,uBAAuB;IACvB,0BAA0B;EAC5B;EACA;IACE,UAAU;EACZ;EACA;;IAEE,gBAAgB;EAClB;EACA;IACE,eAAe;EACjB;EACA;IACE,gBAAgB;EAClB;AACF","file":"index.css","sourcesContent":["@charset \"UTF-8\";\n.kne-responsive-boundary {\n position: relative;\n}\n\n.kne-responsive-scroll {\n overflow: auto;\n}\n\n:root {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.kne-responsive-boundary {\n --kne-viewport-width: 100vw;\n --kne-viewport-height: 100dvh;\n --kne-viewport-inline-size: 100vw;\n --kne-viewport-block-size: 100dvh;\n}\n\n.form-creator {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n min-height: 480px;\n align-items: stretch;\n box-sizing: border-box;\n padding: 16px;\n background: #f5f5f5;\n border-radius: 12px;\n}\n\n.editor-pane,\n.preview-pane {\n flex: 1 1 360px;\n min-width: min(360px, 100%);\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.editor-pane {\n flex-basis: 420px;\n min-width: min(420px, 100%);\n}\n\n.preview-pane {\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n margin: 0;\n padding: 16px;\n background: #fff;\n border-radius: 8px;\n}\n\n.editor-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.block-list-panel {\n padding: 8px 0 0;\n}\n\n.form-actions-setting-btn {\n width: 30px !important;\n min-width: 30px !important;\n height: 30px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n\n.panel-toolbar {\n margin-bottom: 10px;\n}\n\n.panel-toolbar-extra {\n display: inline-flex;\n align-items: center;\n gap: 8px;\n}\n\n.schema-content {\n width: 100%;\n}\n\n.add-block-btn {\n height: 30px !important;\n padding: 0 14px !important;\n border-radius: 999px !important;\n font-weight: 500;\n}\n\n/* 添加填写项 / 添加步骤:中性小胶囊,与操作组同语汇 */\n.add-inline-btn {\n height: 26px !important;\n padding: 0 10px !important;\n border: none !important;\n border-radius: 999px !important;\n background: rgba(255, 255, 255, 0.72) !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.55) !important;\n font-size: 12px !important;\n font-weight: 500;\n display: inline-flex !important;\n align-items: center;\n gap: 2px;\n}\n.add-inline-btn :global(.anticon) {\n font-size: 11px;\n}\n.add-inline-btn:hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n.add-inline-btn:global(.ant-btn-text):not(:disabled):not(.ant-btn-disabled):hover {\n color: rgba(0, 0, 0, 0.85) !important;\n background: #ffffff !important;\n}\n\n.block-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n/* 模块:类型浅色底区隔,无边框线框 */\n.block-section {\n padding: 12px 14px;\n border-radius: 12px;\n background: #f4f6f9;\n transition: box-shadow 0.15s ease;\n}\n.block-section:hover {\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.03);\n}\n\n.block-kind-formInfo {\n background: #eef4ff;\n}\n\n.block-kind-list {\n background: #eafaf8;\n}\n\n.block-kind-tableList {\n background: #eef1ff;\n}\n\n.block-kind-multiField {\n background: #f6f0ff;\n}\n\n.block-kind-steps {\n background: #fff8e8;\n}\n.block-kind-steps .step-section {\n background: rgba(255, 255, 255, 0.72);\n}\n\n.block-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n min-width: 0;\n}\n\n.block-header-left {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n min-width: 0;\n flex: 1;\n}\n.block-header-left :global(.ant-tag) {\n flex-shrink: 0;\n}\n\n.block-title {\n flex: 0 1 auto;\n min-width: 0;\n max-width: 160px;\n overflow: hidden;\n font-size: 14px;\n}\n\n.block-summary {\n flex-shrink: 0;\n padding: 1px 8px;\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.7);\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n white-space: nowrap;\n}\n\n.block-header-actions {\n flex-shrink: 0;\n}\n\n.block-body {\n margin-top: 10px;\n}\n\n.item-blocks-section {\n margin-top: 12px;\n padding-top: 10px;\n border-top: 1px dashed rgba(0, 0, 0, 0.08);\n}\n\n.nested-block-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.block-section-nested {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);\n}\n.block-section-nested:hover {\n box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown {\n min-width: 200px;\n max-width: 280px;\n max-height: 280px;\n overflow-y: auto;\n padding: 6px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-field-dropdown-item {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px 8px;\n padding: 8px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.88);\n}\n.add-field-dropdown-item:hover {\n background: #f5f5f5;\n}\n\n.add-field-dropdown-item-icon {\n display: inline-flex;\n color: #4183f0;\n font-size: 14px;\n}\n\n.add-field-dropdown-item-desc {\n flex: 1 0 100%;\n padding-left: 22px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 16px;\n}\n\n.add-field-dropdown-divider {\n height: 1px;\n margin: 4px 6px;\n background: rgba(0, 0, 0, 0.06);\n}\n\n.add-field-dropdown-label {\n padding: 6px 10px 2px;\n color: rgba(0, 0, 0, 0.45);\n font-size: 12px;\n line-height: 18px;\n}\n\n.section-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: 28px;\n margin-bottom: 6px;\n}\n\n.section-toolbar-label {\n font-size: 12px;\n}\n\n.field-list,\n.step-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n/* 步骤:半透明白底叠在模块色底上 */\n.step-section {\n padding: 10px 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n.step-section + .step-section {\n margin-top: 0;\n}\n\n.step-section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 6px;\n min-width: 0;\n}\n\n.step-section-title {\n flex: 1;\n min-width: 0;\n max-width: 100%;\n}\n\n.step-section-actions {\n flex-shrink: 0;\n display: inline-flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.step-index {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(47, 84, 235, 0.12);\n color: #2f54eb;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* 填写项:白底块 */\n.field-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 8px 10px;\n border-radius: 10px;\n background: #ffffff;\n transition: background 0.15s ease, transform 0.15s ease;\n}\n.field-row:hover {\n background: #fcfdff;\n transform: translateY(-0.5px);\n}\n\n.field-row-index {\n width: 18px;\n flex-shrink: 0;\n color: #bfbfbf;\n font-size: 12px;\n text-align: center;\n}\n\n.field-row-main {\n flex: 1;\n min-width: 0;\n}\n\n.inline-empty {\n display: block;\n padding: 8px 10px;\n font-size: 12px;\n border-radius: 10px;\n background: rgba(255, 255, 255, 0.55);\n}\n\n/* 操作组 / 添加按钮:默认隐藏,悬停对应容器再显示 */\n.action-group,\n.hover-reveal {\n opacity: 0;\n pointer-events: none;\n transition: opacity 0.15s ease;\n}\n\n.action-group {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 2px;\n border-radius: 999px;\n background: rgba(0, 0, 0, 0.06);\n gap: 0;\n}\n\n.block-section:hover > .block-section-header .action-group,\n.block-section:hover > .block-section-header .hover-reveal,\n.block-section:focus-within > .block-section-header .action-group,\n.block-section:focus-within > .block-section-header .hover-reveal,\n.block-section:hover > .block-body > .section-toolbar .hover-reveal,\n.block-section:focus-within > .block-body > .section-toolbar .hover-reveal,\n.step-section:hover > .step-section-header .action-group,\n.step-section:hover > .step-section-header .hover-reveal,\n.step-section:focus-within > .step-section-header .action-group,\n.step-section:focus-within > .step-section-header .hover-reveal,\n.field-row:hover .action-group,\n.field-row:focus-within .action-group,\n.hover-reveal-active {\n opacity: 1;\n pointer-events: auto;\n}\n\n.action-btn {\n width: 26px !important;\n height: 26px !important;\n min-width: 26px !important;\n padding: 0 !important;\n border: none !important;\n border-radius: 999px !important;\n box-shadow: none !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n color: rgba(0, 0, 0, 0.55);\n}\n.action-btn :global(.anticon) {\n font-size: 12px;\n}\n.action-btn:hover:not(:disabled) {\n color: rgba(0, 0, 0, 0.88);\n background: rgba(255, 255, 255, 0.85) !important;\n}\n.action-btn:disabled {\n color: rgba(0, 0, 0, 0.25);\n background: transparent !important;\n}\n.action-btn:global(.ant-btn-dangerous) {\n color: #ff4d4f;\n}\n.action-btn:global(.ant-btn-dangerous):hover:not(:disabled) {\n color: #ff7875;\n background: rgba(255, 255, 255, 0.9) !important;\n}\n\n.add-block-dropdown {\n width: 320px;\n padding: 8px;\n background: #ffffff;\n border-radius: 8px;\n box-shadow: 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 9px 28px 8px rgba(0, 0, 0, 0.05);\n}\n\n.add-block-option {\n display: flex;\n gap: 12px;\n padding: 10px 12px;\n border-radius: 8px;\n cursor: pointer;\n border: 1px solid transparent;\n transition: background 0.2s ease, border-color 0.2s ease;\n}\n.add-block-option:hover {\n background: #f7fbff;\n border-color: #dbe7ff;\n}\n\n.add-block-option-icon {\n width: 36px;\n height: 36px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #f1f7ff;\n color: #4183f0;\n flex-shrink: 0;\n}\n\n.add-block-option-text {\n min-width: 0;\n}\n\n.add-block-option-title {\n font-size: 14px;\n font-weight: 600;\n line-height: 20px;\n}\n\n.add-block-option-desc {\n margin-top: 2px;\n color: #667085;\n font-size: 12px;\n line-height: 16px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.field-empty {\n padding: 24px 0;\n}\n\n.field-label-tips-icon {\n margin-left: 4px;\n color: rgba(0, 0, 0, 0.45);\n cursor: help;\n font-size: 14px;\n}\n\n.preview-header {\n padding: 0 0 12px;\n margin-bottom: 4px;\n}\n\n.preview-title {\n margin-bottom: 4px !important;\n}\n\n.preview-body {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 0;\n padding: 0;\n}\n.preview-body :global form {\n flex: 1;\n display: flex;\n flex-direction: column;\n min-height: 100%;\n}\n.preview-body :global .ant-card-extra .ant-btn.ant-btn-icon-only {\n width: 32px;\n height: 32px;\n min-width: 32px;\n padding: 0 !important;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-head {\n margin-bottom: 0 !important;\n padding-bottom: 8px !important;\n}\n.preview-body :global form .ant-card.no-title > .ant-card-body {\n padding-top: 0 !important;\n}\n\n.schema-form {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n box-sizing: border-box;\n}\n\n.schema-body {\n flex: 1 1 auto;\n display: flex;\n flex-direction: column;\n gap: 24px;\n width: 100%;\n min-width: 0;\n}\n\n/* 表单底部操作区:与内容分隔,固定落在表单最下方 */\n.schema-actions {\n width: 100%;\n box-sizing: border-box;\n margin-top: auto;\n padding: 16px 0;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n flex-shrink: 0;\n}\n\n.schema-actions-inner {\n width: 100%;\n}\n\n.choice-block {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.choice-selector {\n margin-bottom: 4px;\n}\n.choice-selector :global .react-form__field {\n margin-bottom: 8px;\n}\n.choice-selector :global .ant-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.choice-selector :global .ant-radio-group {\n display: inline-flex;\n flex-wrap: wrap;\n}\n\n.choice-panels {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n margin-top: 12px;\n padding-top: 16px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n box-sizing: border-box;\n}\n\n.choice-panels-empty {\n margin-top: 12px;\n padding: 16px 0 4px;\n border-top: 1px solid rgba(0, 0, 0, 0.06);\n font-size: 13px;\n line-height: 20px;\n color: rgba(0, 0, 0, 0.45);\n text-align: center;\n}\n\n.choice-option-panel {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n padding: 12px 14px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n border-radius: 8px;\n background: #fafafa;\n}\n.choice-option-panel :global(.ant-card),\n.choice-option-panel :global(.ant-card-body) {\n background: transparent;\n}\n\n.choice-option-panel-title {\n margin-bottom: 12px;\n font-size: 14px;\n font-weight: 600;\n line-height: 22px;\n color: rgba(0, 0, 0, 0.88);\n}\n\n.choice-option-summary {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n}\n\n.field-editor-form {\n display: flex;\n flex-direction: column;\n gap: 24px;\n padding-top: 4px;\n}\n\n.form-actions-editor {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding-top: 4px;\n}\n.form-actions-editor :global .ant-row {\n row-gap: 8px;\n}\n\n.form-actions-switch-field :global .react-form__field-main {\n min-height: 32px;\n display: flex;\n align-items: center;\n}\n\n.form-actions-layout-panel {\n padding: 14px 16px 18px;\n border-radius: 10px;\n background: #f7f8fa;\n border: 1px solid rgba(0, 0, 0, 0.04);\n}\n.form-actions-layout-panel :global .ant-card {\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n}\n.form-actions-layout-panel :global .ant-card-head {\n display: none;\n}\n.form-actions-layout-panel :global .ant-card-body {\n padding: 0 !important;\n}\n.form-actions-layout-panel :global .ant-form-item {\n margin-bottom: 14px;\n}\n.form-actions-layout-panel :global .ant-form-item:last-child {\n margin-bottom: 0;\n}\n\n.form-actions-align-group {\n display: flex !important;\n width: 100%;\n padding: 3px;\n background: #fff;\n border-radius: 999px;\n border: 1px solid rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper {\n flex: 1;\n height: 30px;\n line-height: 30px;\n padding-inline: 0;\n text-align: center;\n border: none !important;\n border-radius: 999px !important;\n background: transparent !important;\n box-shadow: none !important;\n color: rgba(0, 0, 0, 0.65);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:not(:first-child)::before {\n display: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:hover {\n color: rgba(0, 0, 0, 0.88);\n}\n.form-actions-align-group :global .ant-radio-button-wrapper:focus-within {\n box-shadow: none !important;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {\n background: var(--primary-color, #1677ff) !important;\n color: #fff !important;\n font-weight: 500;\n}\n.form-actions-align-group :global .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {\n color: #fff !important;\n background: var(--primary-color, #1677ff) !important;\n filter: brightness(1.08);\n}\n\n.form-actions-layout-title {\n margin-bottom: 12px;\n color: rgba(0, 0, 0, 0.65);\n font-size: 13px;\n font-weight: 500;\n letter-spacing: 0.02em;\n}\n\n.form-actions-gap-slider {\n margin: 0 6px 8px !important;\n padding-bottom: 12px;\n}\n\n.editor-section {\n margin-bottom: 4px;\n}\n\n.section-divider {\n margin: 16px 0 !important;\n}\n\n.rule-editor,\n.options-editor,\n.super-select-props,\n.field-props-editor,\n.columns-editor {\n padding: 0 2px;\n}\n\n.prop-row {\n display: flex;\n flex-direction: column;\n gap: 6px;\n width: 100%;\n}\n\n.prop-label {\n color: rgba(0, 0, 0, 0.88);\n font-size: 14px;\n}\n\n.options-item {\n display: flex;\n flex-direction: column;\n}\n\n.table-row-card {\n background: #fafafa;\n}\n\n.tree-options-editor {\n margin-top: 12px;\n}\n\n.tree-options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 12px;\n}\n\n.tree-option-node {\n border: 1px solid #eef0f4;\n border-radius: 8px;\n background: #fff;\n padding: 10px 12px;\n}\n\n.tree-option-row {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n\n.tree-option-fields {\n flex: 1;\n min-width: 0;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));\n gap: 8px;\n}\n\n.tree-option-actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n gap: 0;\n}\n\n.tree-option-children {\n margin-top: 10px;\n margin-left: 12px;\n padding-left: 12px;\n border-left: 2px solid #e6ebf5;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.tree-add-sibling {\n align-self: flex-start;\n}\n\n.rule-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px 16px;\n margin-top: 12px;\n}\n\n.rule-len-row {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 10px;\n padding: 10px 12px;\n background: #fafafa;\n border-radius: 8px;\n}\n\n.rule-len-input {\n flex: 1;\n min-width: 0;\n width: 100%;\n}\n\n.rule-len-sep {\n flex: none;\n color: rgba(0, 0, 0, 0.45);\n line-height: 1;\n}\n\n.options-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin: 12px 0;\n}\n\n.options-row {\n width: 100%;\n}\n\n.options-tip {\n display: block;\n margin-top: 8px;\n color: #8c8c8c;\n font-size: 12px;\n}\n\n/* 纯图标按钮统一为正方形 */\n.icon-square-btn {\n width: 32px !important;\n height: 32px !important;\n min-width: 32px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn :global(.anticon) {\n font-size: 14px;\n}\n\n.icon-square-btn-sm {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n padding: 0 !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n}\n.icon-square-btn-sm :global(.anticon) {\n font-size: 13px;\n}\n\n@container kne-responsive (max-width: 768px) {\n .form-creator.is-mobile .editor-header,\n .form-creator.is-mobile .preview-header {\n padding: 0 0 10px;\n }\n .form-creator.is-mobile .block-list-panel {\n padding: 6px 0 0;\n }\n .form-creator.is-mobile .block-list {\n gap: 10px;\n }\n .form-creator.is-mobile .block-section {\n padding: 10px 12px;\n border-radius: 10px;\n }\n .form-creator.is-mobile {\n /* 触屏无 hover:操作与添加按钮常显 */\n }\n .form-creator.is-mobile .action-group,\n .form-creator.is-mobile .hover-reveal {\n opacity: 1;\n pointer-events: auto;\n }\n .form-creator.is-mobile .block-section-header {\n flex-wrap: wrap;\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile .block-header-left {\n width: 100%;\n flex-wrap: wrap;\n }\n .form-creator.is-mobile .block-title {\n max-width: 160px;\n flex: 0 1 auto;\n }\n .form-creator.is-mobile .block-header-actions {\n width: 100%;\n display: flex;\n justify-content: flex-end;\n flex-wrap: wrap;\n gap: 6px;\n }\n .form-creator.is-mobile .block-summary {\n margin-left: 0;\n }\n .form-creator.is-mobile .step-section {\n padding: 8px 10px;\n }\n .form-creator.is-mobile .step-section-header {\n align-items: flex-start;\n gap: 8px;\n }\n .form-creator.is-mobile {\n /* 标题独占一行,避免与常显操作栏挤成竖排字 */\n }\n .form-creator.is-mobile .step-section-title {\n flex: 0 0 100%;\n width: 100%;\n min-width: 0;\n max-width: 100%;\n }\n .form-creator.is-mobile .step-section-actions {\n width: 100%;\n justify-content: flex-end;\n gap: 6px;\n }\n .form-creator.is-mobile .field-row {\n flex-wrap: wrap;\n gap: 8px;\n padding: 8px;\n transform: none;\n }\n .form-creator.is-mobile .field-row:hover {\n transform: none;\n }\n .form-creator.is-mobile .field-row-main {\n flex: 1 1 calc(100% - 28px);\n min-width: 0;\n }\n .form-creator.is-mobile .field-row .action-group {\n margin-left: auto;\n }\n .form-creator.is-mobile .add-block-dropdown {\n width: min(320px, 100vw - 32px);\n }\n .form-creator.is-mobile .add-inline-btn {\n height: 28px !important;\n padding: 0 12px !important;\n }\n .form-creator.is-mobile .action-btn {\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n }\n .form-creator.is-mobile .preview-body {\n padding: 0;\n }\n .form-creator.is-mobile .preview-body :global form + .part,\n .form-creator.is-mobile .preview-body :global .part + form {\n margin-top: 12px;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps {\n max-width: 100%;\n }\n .form-creator.is-mobile .preview-body :global .ant-steps-horizontal {\n overflow-x: auto;\n }\n}"]}