@robot-admin/naive-ui-components 0.9.3 → 0.10.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 (122) hide show
  1. package/CHANGELOG.md +88 -76
  2. package/LICENSE +21 -0
  3. package/README.md +314 -294
  4. package/dist/C_AvatarGroup.cjs +1 -1
  5. package/dist/C_AvatarGroup.d.cts +1 -1
  6. package/dist/C_AvatarGroup.d.ts +1 -1
  7. package/dist/C_AvatarGroup.js +1 -1
  8. package/dist/C_Cascade-CmCrLVft.css.map +1 -0
  9. package/dist/C_Cascade-U6A5AJJb.css.map +1 -0
  10. package/dist/C_Cascade.css +3 -3
  11. package/dist/C_Cascade.d.cts +2 -2
  12. package/dist/C_Cascade.d.ts +2 -2
  13. package/dist/C_Cascade.js.map +1 -1
  14. package/dist/C_Cascade2.js +1 -1
  15. package/dist/C_Cascade2.js.map +1 -1
  16. package/dist/{C_Form-SCq-DZaZ.css.map → C_Form-B_2ql62V.css.map} +1 -1
  17. package/dist/{C_Form-mcd1nKvF.css.map → C_Form-CX-7xsz3.css.map} +1 -1
  18. package/dist/C_Form.css +60 -60
  19. package/dist/C_Form.d.cts +2 -2
  20. package/dist/C_Form.d.ts +2 -2
  21. package/dist/C_Form.js.map +1 -1
  22. package/dist/C_Form2.js +1 -1
  23. package/dist/C_Form2.js.map +1 -1
  24. package/dist/C_FullCalendar.js.map +1 -1
  25. package/dist/C_FullCalendar2.js +1 -1
  26. package/dist/C_FullCalendar2.js.map +1 -1
  27. package/dist/C_Icon.d.cts +1 -1
  28. package/dist/C_Icon.d.ts +1 -1
  29. package/dist/C_Icon.js.map +1 -1
  30. package/dist/C_Icon2.js.map +1 -1
  31. package/dist/C_Language.d.cts +1 -1
  32. package/dist/C_Language.d.ts +1 -1
  33. package/dist/C_Language.js.map +1 -1
  34. package/dist/C_Language2.js.map +1 -1
  35. package/dist/C_Steps-27Exh7PM.css.map +1 -0
  36. package/dist/C_Steps-DU9ZsFrs.css.map +1 -0
  37. package/dist/C_Steps.css +38 -38
  38. package/dist/C_Steps.d.cts +1 -1
  39. package/dist/C_Steps.d.ts +1 -1
  40. package/dist/C_Steps.js.map +1 -1
  41. package/dist/C_Steps2.js +1 -1
  42. package/dist/C_Steps2.js.map +1 -1
  43. package/dist/C_Table.js.map +1 -1
  44. package/dist/C_Table2.js +3 -3
  45. package/dist/C_Table2.js.map +1 -1
  46. package/dist/{C_TagsView-COjGNM9h.css.map → C_TagsView-BN8vMRsY.css.map} +1 -1
  47. package/dist/{C_TagsView-zUDj9S06.css.map → C_TagsView-s1dnSJAV.css.map} +1 -1
  48. package/dist/C_TagsView.css +36 -36
  49. package/dist/C_TagsView.d.cts +1 -1
  50. package/dist/C_TagsView.d.ts +1 -1
  51. package/dist/C_TagsView.js.map +1 -1
  52. package/dist/C_TagsView2.js +1 -1
  53. package/dist/C_TagsView2.js.map +1 -1
  54. package/dist/C_Theme.d.cts +1 -1
  55. package/dist/C_Theme.d.ts +1 -1
  56. package/dist/C_Theme.js.map +1 -1
  57. package/dist/C_Theme2.js.map +1 -1
  58. package/dist/C_Timeline.cjs +1 -1
  59. package/dist/C_Timeline.d.cts +1 -1
  60. package/dist/C_Timeline.d.ts +1 -1
  61. package/dist/C_Timeline.js +1 -1
  62. package/dist/constants.d.ts +5 -5
  63. package/dist/constants2.d.ts +5 -5
  64. package/dist/constants3.d.ts +2 -2
  65. package/dist/constants4.d.ts +5 -5
  66. package/dist/constants5.d.ts +2 -2
  67. package/dist/index.cjs +1 -1
  68. package/dist/index.d.cts +9 -9
  69. package/dist/index.d.ts +9 -9
  70. package/dist/index.js +1 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/index.vue.d.ts +1 -1
  73. package/dist/index10.vue.d.ts +1 -1
  74. package/dist/index11.vue.d.ts +2 -2
  75. package/dist/index12.vue.d.ts +1 -1
  76. package/dist/index13.vue.d.ts +4 -4
  77. package/dist/index15.vue.d.ts +30 -10
  78. package/dist/index16.vue.d.ts +13 -6
  79. package/dist/index17.vue.d.ts +1 -1
  80. package/dist/index18.vue.d.ts +5 -5
  81. package/dist/index2.vue.d.ts +1 -1
  82. package/dist/index20.vue.d.ts +1 -1
  83. package/dist/index21.vue.d.ts +2 -2
  84. package/dist/index22.vue.d.ts +1 -1
  85. package/dist/index23.vue.d.ts +14 -3
  86. package/dist/index24.vue.d.ts +13 -4
  87. package/dist/index25.vue.d.ts +4 -2
  88. package/dist/index26.vue.d.ts +1 -1
  89. package/dist/index27.vue.d.ts +2 -2
  90. package/dist/index28.vue.d.ts +3 -3
  91. package/dist/index3.vue.d.ts +2 -2
  92. package/dist/index4.vue.d.ts +2 -2
  93. package/dist/index6.vue.d.ts +1 -1
  94. package/dist/index7.vue.d.ts +9 -7
  95. package/dist/index8.vue.d.ts +3 -3
  96. package/dist/index9.vue.d.ts +2 -2
  97. package/dist/resolver.cjs +1 -1
  98. package/dist/resolver.cjs.map +1 -1
  99. package/dist/resolver.d.cts +2 -21
  100. package/dist/resolver.d.ts +2 -21
  101. package/dist/resolver.js +1 -1
  102. package/dist/resolver.js.map +1 -1
  103. package/dist/style.css +142 -142
  104. package/dist/useCalendarEvents.d.ts +9 -6
  105. package/dist/useCollapsePanel.d.ts +3 -3
  106. package/dist/useCropperCore.d.ts +6 -6
  107. package/dist/useDraggableLayout.d.ts +2 -2
  108. package/dist/useDynamicFormState.d.ts +29 -3724
  109. package/dist/useEdgeInteraction.d.ts +1 -1
  110. package/dist/useGlobalSearch.d.ts +1 -1
  111. package/dist/useInfiniteScroll.d.ts +1 -1
  112. package/dist/useQRCode.d.ts +4 -4
  113. package/dist/useSignatureHistory.d.ts +3 -3
  114. package/dist/useSplitResize.d.ts +2 -2
  115. package/dist/useTimeSelection.d.ts +2 -2
  116. package/dist/useTreeOperations.d.ts +5 -5
  117. package/dist/useWorkflowValidation.d.ts +3 -3
  118. package/package.json +11 -2
  119. package/dist/C_Cascade-BE7t1OX5.css.map +0 -1
  120. package/dist/C_Cascade-CpDiau1y.css.map +0 -1
  121. package/dist/C_Steps-Buyg7Axn.css.map +0 -1
  122. package/dist/C_Steps-DNY91VbQ.css.map +0 -1
@@ -1 +1 @@
1
- import{a as e,i as t,n,r,t as i}from"./C_AvatarGroup2.js";export{i as C_AvatarGroup,n as DEFAULT_AVATAR_GROUP_PROPS,r as STATUS_COLOR_MAP,t as getInitials,e as nameToColor};
1
+ import{a as e,i as t,n,r,t as i}from"./C_AvatarGroup2.js";export{r as AVATAR_STATUS_COLOR_MAP,i as C_AvatarGroup,n as DEFAULT_AVATAR_GROUP_PROPS,t as getInitials,e as nameToColor};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Cascade-CmCrLVft.css","names":[],"sources":["../src/components/C_Cascade/index.vue?vue&type=style&index=0&scoped=cf9c290b&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.n-cascade-selector[data-v-cf9c290b] {\n display: flex;\n gap: 12px;\n}\n.n-cascade-selector .n-select-item[data-v-cf9c290b] {\n min-width: 140px;\n flex: 1;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"C_Cascade-U6A5AJJb.css","names":[],"sources":["../src/components/C_Cascade/index.vue?vue&type=style&index=0&scoped=cf9c290b&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */.n-cascade-selector[data-v-cf9c290b] {\n display: flex;\n gap: 12px;\n}\n.n-cascade-selector .n-select-item[data-v-cf9c290b] {\n min-width: 140px;\n flex: 1;\n}"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1,10 +1,10 @@
1
- /* unplugin-vue-components disabled */.n-cascade-selector[data-v-7219e099] {
1
+ /* unplugin-vue-components disabled */.n-cascade-selector[data-v-cf9c290b] {
2
2
  display: flex;
3
3
  gap: 12px;
4
4
  }
5
- .n-cascade-selector .n-select-item[data-v-7219e099] {
5
+ .n-cascade-selector .n-select-item[data-v-cf9c290b] {
6
6
  min-width: 140px;
7
7
  flex: 1;
8
8
  }
9
9
 
10
- /*# sourceMappingURL=C_Cascade-BE7t1OX5.css.map*/
10
+ /*# sourceMappingURL=C_Cascade-CmCrLVft.css.map*/
@@ -1,2 +1,2 @@
1
- import { n as _default, t as CascadeItem } from "./index7.vue.js";
2
- export { _default as C_Cascade, type CascadeItem };
1
+ import { n as CascadeItem, r as CascadeValue, t as _default } from "./index7.vue.js";
2
+ export { _default as C_Cascade, type CascadeItem, type CascadeValue };
@@ -1,2 +1,2 @@
1
- import { n as _default, t as CascadeItem } from "./index7.vue.js";
2
- export { _default as C_Cascade, type CascadeItem };
1
+ import { n as CascadeItem, r as CascadeValue, t as _default } from "./index7.vue.js";
2
+ export { _default as C_Cascade, type CascadeItem, type CascadeValue };
@@ -1 +1 @@
1
- {"version":3,"file":"C_Cascade.js","names":["placeholders"],"sources":["../src/components/C_Cascade/index.vue","../src/components/C_Cascade/index.vue"],"sourcesContent":["<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch } from \"vue\";\r\nimport { NSelect } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Cascade\" });\r\n\r\nexport interface CascadeItem {\r\n label: string;\r\n value: string | number;\r\n children?: CascadeItem[];\r\n}\r\n\r\ninterface CascadeValue {\r\n primary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n secondary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n tertiary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[];\r\n placeholders?: string[];\r\n modelValue?: CascadeValue;\r\n }>(),\r\n {\r\n placeholders: () => [\"请选择\", \"请选择\", \"请选择\"],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n \"update:modelValue\": [value: CascadeValue];\r\n change: [value: CascadeValue];\r\n}>();\r\n\r\nconst levels = [0, 1, 2];\r\nconst selectedValues = ref<(string | number | null)[]>([null, null, null]);\r\n\r\nconst getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data;\r\n if (!selectedValues.value[level - 1]) return [];\r\n const parentData = getLevelData(level - 1);\r\n return (\r\n parentData.find((x) => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n );\r\n};\r\n\r\nconst levelOptions = computed(() =>\r\n levels.map((level) =>\r\n getLevelData(level).map((item) => ({\r\n label: item.label,\r\n value: item.value,\r\n })),\r\n ),\r\n);\r\n\r\nconst handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null),\r\n );\r\n emitValue();\r\n};\r\n\r\nconst getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index];\r\n if (!value) return null;\r\n const data = getLevelData(index);\r\n const item = data.find((i) => i.value === value);\r\n return item ? { label: item.label, value: item.value } : null;\r\n};\r\n\r\nconst emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n };\r\n emit(\"update:modelValue\", result);\r\n emit(\"change\", result);\r\n};\r\n\r\nwatch(\r\n () => props.modelValue,\r\n (val) => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ];\r\n },\r\n { immediate: true, deep: true },\r\n);\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n}\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch } from \"vue\";\r\nimport { NSelect } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Cascade\" });\r\n\r\nexport interface CascadeItem {\r\n label: string;\r\n value: string | number;\r\n children?: CascadeItem[];\r\n}\r\n\r\ninterface CascadeValue {\r\n primary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n secondary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n tertiary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[];\r\n placeholders?: string[];\r\n modelValue?: CascadeValue;\r\n }>(),\r\n {\r\n placeholders: () => [\"请选择\", \"请选择\", \"请选择\"],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n \"update:modelValue\": [value: CascadeValue];\r\n change: [value: CascadeValue];\r\n}>();\r\n\r\nconst levels = [0, 1, 2];\r\nconst selectedValues = ref<(string | number | null)[]>([null, null, null]);\r\n\r\nconst getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data;\r\n if (!selectedValues.value[level - 1]) return [];\r\n const parentData = getLevelData(level - 1);\r\n return (\r\n parentData.find((x) => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n );\r\n};\r\n\r\nconst levelOptions = computed(() =>\r\n levels.map((level) =>\r\n getLevelData(level).map((item) => ({\r\n label: item.label,\r\n value: item.value,\r\n })),\r\n ),\r\n);\r\n\r\nconst handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null),\r\n );\r\n emitValue();\r\n};\r\n\r\nconst getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index];\r\n if (!value) return null;\r\n const data = getLevelData(index);\r\n const item = data.find((i) => i.value === value);\r\n return item ? { label: item.label, value: item.value } : null;\r\n};\r\n\r\nconst emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n };\r\n emit(\"update:modelValue\", result);\r\n emit(\"change\", result);\r\n};\r\n\r\nwatch(\r\n () => props.modelValue,\r\n (val) => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ];\r\n },\r\n { immediate: true, deep: true },\r\n);\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n}\r\n</style>\r\n"],"mappings":"yUAyCA,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAS,CAAC,EAAG,EAAG,EAAE,CAClB,GAAA,EAAA,EAAA,KAAiD,CAAC,KAAM,KAAM,KAAK,CAAC,CAEpE,EAAgB,GAChB,IAAU,EAAU,EAAM,KACzB,EAAe,MAAM,EAAQ,IACf,EAAa,EAAQ,EAAE,CAE7B,KAAM,GAAM,EAAE,QAAU,EAAe,MAAM,EAAQ,GAAG,EAC/D,UAJuC,EAAE,CAQ3C,GAAA,EAAA,EAAA,cACJ,EAAO,IAAK,GACV,EAAa,EAAM,CAAC,IAAK,IAAU,CACjC,MAAO,EAAK,MACZ,MAAO,EAAK,MACb,EAAE,CACJ,CACF,CAEK,EAAgB,GAAkB,CACtC,EAAe,MAAM,OACnB,EAAQ,EACR,EAAO,OAAS,EAAQ,EACxB,GAAG,MAAM,EAAO,OAAS,EAAQ,EAAE,CAAC,KAAK,KAAK,CAC/C,CACD,GAAW,EAGP,EAAmB,GAAkB,CACzC,IAAM,EAAQ,EAAe,MAAM,GACnC,GAAI,CAAC,EAAO,OAAO,KAEnB,IAAM,EADO,EAAa,EAAM,CACd,KAAM,GAAM,EAAE,QAAU,EAAM,CAChD,OAAO,EAAO,CAAE,MAAO,EAAK,MAAO,MAAO,EAAK,MAAO,CAAG,MAGrD,MAAkB,CACtB,IAAM,EAAuB,CAC3B,QAAS,EAAgB,EAAE,CAC3B,UAAW,EAAgB,EAAE,CAC7B,SAAU,EAAgB,EAAA,CAC3B,CACD,EAAK,oBAAqB,EAAO,CACjC,EAAK,SAAU,EAAO,SAGxB,EAAA,EAAA,WACQ,EAAM,WACX,GAAQ,CACP,EAAe,MAAQ,CACrB,GAAK,SAAS,OAAS,KACvB,GAAK,WAAW,OAAS,KACzB,GAAK,UAAU,OAAS,KACzB,EAEH,CAAE,UAAW,GAAM,KAAM,GAAM,CAChC,oDChGO,MAZN,EAYM,GAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,oBADF,EAAA,SAAA,MAAA,EAAA,EAAA,YATyB,GAAjB,EAAO,kCASf,EAAA,QAAA,CAAA,CARC,IAAK,EACE,MAAO,EAAA,MAAe,wBAAf,EAAA,MAAe,GAAK,EAAA,GAKpB,EAAa,EAAK,CAAA,CAJhC,QAAS,EAAA,MAAa,GACvB,UAAA,GACC,YAAaA,EAAAA,aAAa,GAC1B,SAAU,EAAK,GAAA,CAAS,EAAA,MAAe,EAAK,GAE7C,MAAM"}
1
+ {"version":3,"file":"C_Cascade.js","names":["placeholders"],"sources":["../src/components/C_Cascade/index.vue","../src/components/C_Cascade/index.vue"],"sourcesContent":["<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n import { ref, computed, watch } from 'vue'\r\n import { NSelect } from 'naive-ui'\r\n import type { CascadeItem, CascadeValue } from './types'\r\n\r\n defineOptions({ name: 'C_Cascade' })\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[]\r\n placeholders?: string[]\r\n modelValue?: CascadeValue\r\n }>(),\r\n {\r\n placeholders: () => ['请选择', '请选择', '请选择'],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [value: CascadeValue]\r\n change: [value: CascadeValue]\r\n }>()\r\n\r\n const levels = [0, 1, 2]\r\n const selectedValues = ref<(string | number | null)[]>([null, null, null])\r\n\r\n const getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data\r\n if (!selectedValues.value[level - 1]) return []\r\n const parentData = getLevelData(level - 1)\r\n return (\r\n parentData.find(x => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n )\r\n }\r\n\r\n const levelOptions = computed(() =>\r\n levels.map(level =>\r\n getLevelData(level).map(item => ({\r\n label: item.label,\r\n value: item.value,\r\n }))\r\n )\r\n )\r\n\r\n const handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null)\r\n )\r\n emitValue()\r\n }\r\n\r\n const getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index]\r\n if (!value) return null\r\n const data = getLevelData(index)\r\n const item = data.find(i => i.value === value)\r\n return item ? { label: item.label, value: item.value } : null\r\n }\r\n\r\n const emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n }\r\n emit('update:modelValue', result)\r\n emit('change', result)\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n val => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ]\r\n },\r\n { immediate: true, deep: true }\r\n )\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n .n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n }\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n import { ref, computed, watch } from 'vue'\r\n import { NSelect } from 'naive-ui'\r\n import type { CascadeItem, CascadeValue } from './types'\r\n\r\n defineOptions({ name: 'C_Cascade' })\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[]\r\n placeholders?: string[]\r\n modelValue?: CascadeValue\r\n }>(),\r\n {\r\n placeholders: () => ['请选择', '请选择', '请选择'],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [value: CascadeValue]\r\n change: [value: CascadeValue]\r\n }>()\r\n\r\n const levels = [0, 1, 2]\r\n const selectedValues = ref<(string | number | null)[]>([null, null, null])\r\n\r\n const getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data\r\n if (!selectedValues.value[level - 1]) return []\r\n const parentData = getLevelData(level - 1)\r\n return (\r\n parentData.find(x => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n )\r\n }\r\n\r\n const levelOptions = computed(() =>\r\n levels.map(level =>\r\n getLevelData(level).map(item => ({\r\n label: item.label,\r\n value: item.value,\r\n }))\r\n )\r\n )\r\n\r\n const handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null)\r\n )\r\n emitValue()\r\n }\r\n\r\n const getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index]\r\n if (!value) return null\r\n const data = getLevelData(index)\r\n const item = data.find(i => i.value === value)\r\n return item ? { label: item.label, value: item.value } : null\r\n }\r\n\r\n const emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n }\r\n emit('update:modelValue', result)\r\n emit('change', result)\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n val => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ]\r\n },\r\n { immediate: true, deep: true }\r\n )\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n .n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n }\r\n</style>\r\n"],"mappings":"yUA8BE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAS,CAAC,EAAG,EAAG,EAAE,CAClB,GAAA,EAAA,EAAA,KAAiD,CAAC,KAAM,KAAM,KAAK,CAAC,CAEpE,EAAgB,GAChB,IAAU,EAAU,EAAM,KACzB,EAAe,MAAM,EAAQ,IACf,EAAa,EAAQ,EAAE,CAE7B,KAAK,GAAK,EAAE,QAAU,EAAe,MAAM,EAAQ,GAAG,EAC7D,UAJuC,EAAE,CAQ3C,GAAA,EAAA,EAAA,cACJ,EAAO,IAAI,GACT,EAAa,EAAM,CAAC,IAAI,IAAS,CAC/B,MAAO,EAAK,MACZ,MAAO,EAAK,MACb,EAAE,CACJ,CACF,CAEK,EAAgB,GAAkB,CACtC,EAAe,MAAM,OACnB,EAAQ,EACR,EAAO,OAAS,EAAQ,EACxB,GAAG,MAAM,EAAO,OAAS,EAAQ,EAAE,CAAC,KAAK,KAAK,CAC/C,CACD,GAAW,EAGP,EAAmB,GAAkB,CACzC,IAAM,EAAQ,EAAe,MAAM,GACnC,GAAI,CAAC,EAAO,OAAO,KAEnB,IAAM,EADO,EAAa,EAAM,CACd,KAAK,GAAK,EAAE,QAAU,EAAM,CAC9C,OAAO,EAAO,CAAE,MAAO,EAAK,MAAO,MAAO,EAAK,MAAO,CAAG,MAGrD,MAAkB,CACtB,IAAM,EAAuB,CAC3B,QAAS,EAAgB,EAAE,CAC3B,UAAW,EAAgB,EAAE,CAC7B,SAAU,EAAgB,EAAA,CAC3B,CACD,EAAK,oBAAqB,EAAO,CACjC,EAAK,SAAU,EAAO,SAGxB,EAAA,EAAA,WACQ,EAAM,WACZ,GAAO,CACL,EAAe,MAAQ,CACrB,GAAK,SAAS,OAAS,KACvB,GAAK,WAAW,OAAS,KACzB,GAAK,UAAU,OAAS,KACzB,EAEH,CAAE,UAAW,GAAM,KAAM,GAAM,CAChC,oDCrFK,MAZN,EAYM,GAAA,EAAA,EAAA,YAAA,EAAA,EAAA,EAAA,oBADF,EAAA,SAAA,MAAA,EAAA,EAAA,YATyB,GAAjB,EAAO,kCASf,EAAA,QAAA,CAAA,CARC,IAAK,EACE,MAAO,EAAA,MAAe,wBAAf,EAAA,MAAe,GAAK,EAAA,GAKpB,EAAa,EAAK,CAAA,CAJhC,QAAS,EAAA,MAAa,GACvB,UAAA,GACC,YAAaA,EAAAA,aAAa,GAC1B,SAAU,EAAK,GAAA,CAAS,EAAA,MAAe,EAAK,GAE7C,MAAM"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./export-helper.js";import{NSelect as t}from"naive-ui";import{Fragment as n,computed as r,createElementBlock as i,createVNode as a,defineComponent as o,openBlock as s,ref as c,renderList as l,unref as u,watch as d}from"vue";const f={class:`n-cascade-selector`};var p=e(o({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:o}){let p=e,m=o,h=[0,1,2],g=c([null,null,null]),_=e=>e===0?p.data:g.value[e-1]&&_(e-1).find(t=>t.value===g.value[e-1])?.children||[],v=r(()=>h.map(e=>_(e).map(e=>({label:e.label,value:e.value})))),y=e=>{g.value.splice(e+1,h.length-e-1,...Array(h.length-e-1).fill(null)),x()},b=e=>{let t=g.value[e];if(!t)return null;let n=_(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},x=()=>{let e={primary:b(0),secondary:b(1),tertiary:b(2)};m(`update:modelValue`,e),m(`change`,e)};return d(()=>p.modelValue,e=>{g.value=[e?.primary?.value??null,e?.secondary?.value??null,e?.tertiary?.value??null]},{immediate:!0,deep:!0}),(e,r)=>(s(),i(`div`,f,[(s(),i(n,null,l(h,(n,r)=>a(u(t),{key:r,value:g.value[r],"onUpdate:value":[e=>g.value[r]=e,e=>y(r)],options:v.value[r],clearable:``,placeholder:e.placeholders[r],disabled:r>0&&!g.value[r-1],class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}}),[[`__scopeId`,`data-v-7219e099`]]);export{p as t};
1
+ import{t as e}from"./export-helper.js";import{NSelect as t}from"naive-ui";import{Fragment as n,computed as r,createElementBlock as i,createVNode as a,defineComponent as o,openBlock as s,ref as c,renderList as l,unref as u,watch as d}from"vue";const f={class:`n-cascade-selector`};var p=e(o({name:`C_Cascade`,__name:`index`,props:{data:{},placeholders:{default:()=>[`请选择`,`请选择`,`请选择`]},modelValue:{}},emits:[`update:modelValue`,`change`],setup(e,{emit:o}){let p=e,m=o,h=[0,1,2],g=c([null,null,null]),_=e=>e===0?p.data:g.value[e-1]&&_(e-1).find(t=>t.value===g.value[e-1])?.children||[],v=r(()=>h.map(e=>_(e).map(e=>({label:e.label,value:e.value})))),y=e=>{g.value.splice(e+1,h.length-e-1,...Array(h.length-e-1).fill(null)),x()},b=e=>{let t=g.value[e];if(!t)return null;let n=_(e).find(e=>e.value===t);return n?{label:n.label,value:n.value}:null},x=()=>{let e={primary:b(0),secondary:b(1),tertiary:b(2)};m(`update:modelValue`,e),m(`change`,e)};return d(()=>p.modelValue,e=>{g.value=[e?.primary?.value??null,e?.secondary?.value??null,e?.tertiary?.value??null]},{immediate:!0,deep:!0}),(e,r)=>(s(),i(`div`,f,[(s(),i(n,null,l(h,(n,r)=>a(u(t),{key:r,value:g.value[r],"onUpdate:value":[e=>g.value[r]=e,e=>y(r)],options:v.value[r],clearable:``,placeholder:e.placeholders[r],disabled:r>0&&!g.value[r-1],class:`n-select-item`},null,8,[`value`,`onUpdate:value`,`options`,`placeholder`,`disabled`])),64))]))}}),[[`__scopeId`,`data-v-cf9c290b`]]);export{p as t};
2
2
  //# sourceMappingURL=C_Cascade2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"C_Cascade2.js","names":["placeholders"],"sources":["../src/components/C_Cascade/index.vue","../src/components/C_Cascade/index.vue"],"sourcesContent":["<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch } from \"vue\";\r\nimport { NSelect } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Cascade\" });\r\n\r\nexport interface CascadeItem {\r\n label: string;\r\n value: string | number;\r\n children?: CascadeItem[];\r\n}\r\n\r\ninterface CascadeValue {\r\n primary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n secondary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n tertiary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[];\r\n placeholders?: string[];\r\n modelValue?: CascadeValue;\r\n }>(),\r\n {\r\n placeholders: () => [\"请选择\", \"请选择\", \"请选择\"],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n \"update:modelValue\": [value: CascadeValue];\r\n change: [value: CascadeValue];\r\n}>();\r\n\r\nconst levels = [0, 1, 2];\r\nconst selectedValues = ref<(string | number | null)[]>([null, null, null]);\r\n\r\nconst getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data;\r\n if (!selectedValues.value[level - 1]) return [];\r\n const parentData = getLevelData(level - 1);\r\n return (\r\n parentData.find((x) => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n );\r\n};\r\n\r\nconst levelOptions = computed(() =>\r\n levels.map((level) =>\r\n getLevelData(level).map((item) => ({\r\n label: item.label,\r\n value: item.value,\r\n })),\r\n ),\r\n);\r\n\r\nconst handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null),\r\n );\r\n emitValue();\r\n};\r\n\r\nconst getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index];\r\n if (!value) return null;\r\n const data = getLevelData(index);\r\n const item = data.find((i) => i.value === value);\r\n return item ? { label: item.label, value: item.value } : null;\r\n};\r\n\r\nconst emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n };\r\n emit(\"update:modelValue\", result);\r\n emit(\"change\", result);\r\n};\r\n\r\nwatch(\r\n () => props.modelValue,\r\n (val) => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ];\r\n },\r\n { immediate: true, deep: true },\r\n);\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n}\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\nimport { ref, computed, watch } from \"vue\";\r\nimport { NSelect } from \"naive-ui\";\r\n\r\ndefineOptions({ name: \"C_Cascade\" });\r\n\r\nexport interface CascadeItem {\r\n label: string;\r\n value: string | number;\r\n children?: CascadeItem[];\r\n}\r\n\r\ninterface CascadeValue {\r\n primary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n secondary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n tertiary?: Pick<CascadeItem, \"label\" | \"value\"> | null;\r\n}\r\n\r\nconst props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[];\r\n placeholders?: string[];\r\n modelValue?: CascadeValue;\r\n }>(),\r\n {\r\n placeholders: () => [\"请选择\", \"请选择\", \"请选择\"],\r\n },\r\n);\r\n\r\nconst emit = defineEmits<{\r\n \"update:modelValue\": [value: CascadeValue];\r\n change: [value: CascadeValue];\r\n}>();\r\n\r\nconst levels = [0, 1, 2];\r\nconst selectedValues = ref<(string | number | null)[]>([null, null, null]);\r\n\r\nconst getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data;\r\n if (!selectedValues.value[level - 1]) return [];\r\n const parentData = getLevelData(level - 1);\r\n return (\r\n parentData.find((x) => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n );\r\n};\r\n\r\nconst levelOptions = computed(() =>\r\n levels.map((level) =>\r\n getLevelData(level).map((item) => ({\r\n label: item.label,\r\n value: item.value,\r\n })),\r\n ),\r\n);\r\n\r\nconst handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null),\r\n );\r\n emitValue();\r\n};\r\n\r\nconst getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index];\r\n if (!value) return null;\r\n const data = getLevelData(index);\r\n const item = data.find((i) => i.value === value);\r\n return item ? { label: item.label, value: item.value } : null;\r\n};\r\n\r\nconst emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n };\r\n emit(\"update:modelValue\", result);\r\n emit(\"change\", result);\r\n};\r\n\r\nwatch(\r\n () => props.modelValue,\r\n (val) => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ];\r\n },\r\n { immediate: true, deep: true },\r\n);\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n.n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n}\r\n</style>\r\n"],"mappings":"ucAyCA,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAS,CAAC,EAAG,EAAG,EAAE,CAClB,EAAiB,EAAgC,CAAC,KAAM,KAAM,KAAK,CAAC,CAEpE,EAAgB,GAChB,IAAU,EAAU,EAAM,KACzB,EAAe,MAAM,EAAQ,IACf,EAAa,EAAQ,EAAE,CAE7B,KAAM,GAAM,EAAE,QAAU,EAAe,MAAM,EAAQ,GAAG,EAC/D,UAJuC,EAAE,CAQ3C,EAAe,MACnB,EAAO,IAAK,GACV,EAAa,EAAM,CAAC,IAAK,IAAU,CACjC,MAAO,EAAK,MACZ,MAAO,EAAK,MACb,EAAE,CACJ,CACF,CAEK,EAAgB,GAAkB,CACtC,EAAe,MAAM,OACnB,EAAQ,EACR,EAAO,OAAS,EAAQ,EACxB,GAAG,MAAM,EAAO,OAAS,EAAQ,EAAE,CAAC,KAAK,KAAK,CAC/C,CACD,GAAW,EAGP,EAAmB,GAAkB,CACzC,IAAM,EAAQ,EAAe,MAAM,GACnC,GAAI,CAAC,EAAO,OAAO,KAEnB,IAAM,EADO,EAAa,EAAM,CACd,KAAM,GAAM,EAAE,QAAU,EAAM,CAChD,OAAO,EAAO,CAAE,MAAO,EAAK,MAAO,MAAO,EAAK,MAAO,CAAG,MAGrD,MAAkB,CACtB,IAAM,EAAuB,CAC3B,QAAS,EAAgB,EAAE,CAC3B,UAAW,EAAgB,EAAE,CAC7B,SAAU,EAAgB,EAAA,CAC3B,CACD,EAAK,oBAAqB,EAAO,CACjC,EAAK,SAAU,EAAO,SAGxB,MACQ,EAAM,WACX,GAAQ,CACP,EAAe,MAAQ,CACrB,GAAK,SAAS,OAAS,KACvB,GAAK,WAAW,OAAS,KACzB,GAAK,UAAU,OAAS,KACzB,EAEH,CAAE,UAAW,GAAM,KAAM,GAAM,CAChC,aC5GC,EAYM,MAZN,EAYM,EAAA,GAAA,CAXJ,EAUE,EAAA,KAAA,EATyB,GAAjB,EAAO,IADjB,EAUE,EAAA,EAAA,CAAA,CARC,IAAK,EACE,MAAO,EAAA,MAAe,wBAAf,EAAA,MAAe,GAAK,EAAA,GAKpB,EAAa,EAAK,CAAA,CAJhC,QAAS,EAAA,MAAa,GACvB,UAAA,GACC,YAAaA,EAAAA,aAAa,GAC1B,SAAU,EAAK,GAAA,CAAS,EAAA,MAAe,EAAK,GAE7C,MAAM"}
1
+ {"version":3,"file":"C_Cascade2.js","names":["placeholders"],"sources":["../src/components/C_Cascade/index.vue","../src/components/C_Cascade/index.vue"],"sourcesContent":["<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n import { ref, computed, watch } from 'vue'\r\n import { NSelect } from 'naive-ui'\r\n import type { CascadeItem, CascadeValue } from './types'\r\n\r\n defineOptions({ name: 'C_Cascade' })\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[]\r\n placeholders?: string[]\r\n modelValue?: CascadeValue\r\n }>(),\r\n {\r\n placeholders: () => ['请选择', '请选择', '请选择'],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [value: CascadeValue]\r\n change: [value: CascadeValue]\r\n }>()\r\n\r\n const levels = [0, 1, 2]\r\n const selectedValues = ref<(string | number | null)[]>([null, null, null])\r\n\r\n const getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data\r\n if (!selectedValues.value[level - 1]) return []\r\n const parentData = getLevelData(level - 1)\r\n return (\r\n parentData.find(x => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n )\r\n }\r\n\r\n const levelOptions = computed(() =>\r\n levels.map(level =>\r\n getLevelData(level).map(item => ({\r\n label: item.label,\r\n value: item.value,\r\n }))\r\n )\r\n )\r\n\r\n const handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null)\r\n )\r\n emitValue()\r\n }\r\n\r\n const getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index]\r\n if (!value) return null\r\n const data = getLevelData(index)\r\n const item = data.find(i => i.value === value)\r\n return item ? { label: item.label, value: item.value } : null\r\n }\r\n\r\n const emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n }\r\n emit('update:modelValue', result)\r\n emit('change', result)\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n val => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ]\r\n },\r\n { immediate: true, deep: true }\r\n )\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n .n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n }\r\n</style>\r\n","<!--\r\n * @Author: ChenYu ycyplus@gmail.com\r\n * @Date: 2025-05-28\r\n * @Description: 级联选择组件\r\n * @Migration: naive-ui-components 组件库迁移版本\r\n * Copyright (c) 2025 by CHENY, All Rights Reserved.\r\n-->\r\n<template>\r\n <div class=\"n-cascade-selector\">\r\n <NSelect\r\n v-for=\"(level, index) in levels\"\r\n :key=\"index\"\r\n v-model:value=\"selectedValues[index]\"\r\n :options=\"levelOptions[index]\"\r\n clearable\r\n :placeholder=\"placeholders[index]\"\r\n :disabled=\"index > 0 && !selectedValues[index - 1]\"\r\n @update:value=\"handleChange(index)\"\r\n class=\"n-select-item\"\r\n />\r\n </div>\r\n</template>\r\n\r\n<script lang=\"ts\" setup>\r\n import { ref, computed, watch } from 'vue'\r\n import { NSelect } from 'naive-ui'\r\n import type { CascadeItem, CascadeValue } from './types'\r\n\r\n defineOptions({ name: 'C_Cascade' })\r\n\r\n const props = withDefaults(\r\n defineProps<{\r\n data: CascadeItem[]\r\n placeholders?: string[]\r\n modelValue?: CascadeValue\r\n }>(),\r\n {\r\n placeholders: () => ['请选择', '请选择', '请选择'],\r\n }\r\n )\r\n\r\n const emit = defineEmits<{\r\n 'update:modelValue': [value: CascadeValue]\r\n change: [value: CascadeValue]\r\n }>()\r\n\r\n const levels = [0, 1, 2]\r\n const selectedValues = ref<(string | number | null)[]>([null, null, null])\r\n\r\n const getLevelData = (level: number): CascadeItem[] => {\r\n if (level === 0) return props.data\r\n if (!selectedValues.value[level - 1]) return []\r\n const parentData = getLevelData(level - 1)\r\n return (\r\n parentData.find(x => x.value === selectedValues.value[level - 1])\r\n ?.children || []\r\n )\r\n }\r\n\r\n const levelOptions = computed(() =>\r\n levels.map(level =>\r\n getLevelData(level).map(item => ({\r\n label: item.label,\r\n value: item.value,\r\n }))\r\n )\r\n )\r\n\r\n const handleChange = (index: number) => {\r\n selectedValues.value.splice(\r\n index + 1,\r\n levels.length - index - 1,\r\n ...Array(levels.length - index - 1).fill(null)\r\n )\r\n emitValue()\r\n }\r\n\r\n const getSelectedItem = (index: number) => {\r\n const value = selectedValues.value[index]\r\n if (!value) return null\r\n const data = getLevelData(index)\r\n const item = data.find(i => i.value === value)\r\n return item ? { label: item.label, value: item.value } : null\r\n }\r\n\r\n const emitValue = () => {\r\n const result: CascadeValue = {\r\n primary: getSelectedItem(0),\r\n secondary: getSelectedItem(1),\r\n tertiary: getSelectedItem(2),\r\n }\r\n emit('update:modelValue', result)\r\n emit('change', result)\r\n }\r\n\r\n watch(\r\n () => props.modelValue,\r\n val => {\r\n selectedValues.value = [\r\n val?.primary?.value ?? null,\r\n val?.secondary?.value ?? null,\r\n val?.tertiary?.value ?? null,\r\n ]\r\n },\r\n { immediate: true, deep: true }\r\n )\r\n</script>\r\n\r\n<style scoped lang=\"scss\">\r\n .n-cascade-selector {\r\n display: flex;\r\n gap: 12px;\r\n .n-select-item {\r\n min-width: 140px;\r\n flex: 1;\r\n }\r\n }\r\n</style>\r\n"],"mappings":"ucA8BE,IAAM,EAAQ,EAWR,EAAO,EAKP,EAAS,CAAC,EAAG,EAAG,EAAE,CAClB,EAAiB,EAAgC,CAAC,KAAM,KAAM,KAAK,CAAC,CAEpE,EAAgB,GAChB,IAAU,EAAU,EAAM,KACzB,EAAe,MAAM,EAAQ,IACf,EAAa,EAAQ,EAAE,CAE7B,KAAK,GAAK,EAAE,QAAU,EAAe,MAAM,EAAQ,GAAG,EAC7D,UAJuC,EAAE,CAQ3C,EAAe,MACnB,EAAO,IAAI,GACT,EAAa,EAAM,CAAC,IAAI,IAAS,CAC/B,MAAO,EAAK,MACZ,MAAO,EAAK,MACb,EAAE,CACJ,CACF,CAEK,EAAgB,GAAkB,CACtC,EAAe,MAAM,OACnB,EAAQ,EACR,EAAO,OAAS,EAAQ,EACxB,GAAG,MAAM,EAAO,OAAS,EAAQ,EAAE,CAAC,KAAK,KAAK,CAC/C,CACD,GAAW,EAGP,EAAmB,GAAkB,CACzC,IAAM,EAAQ,EAAe,MAAM,GACnC,GAAI,CAAC,EAAO,OAAO,KAEnB,IAAM,EADO,EAAa,EAAM,CACd,KAAK,GAAK,EAAE,QAAU,EAAM,CAC9C,OAAO,EAAO,CAAE,MAAO,EAAK,MAAO,MAAO,EAAK,MAAO,CAAG,MAGrD,MAAkB,CACtB,IAAM,EAAuB,CAC3B,QAAS,EAAgB,EAAE,CAC3B,UAAW,EAAgB,EAAE,CAC7B,SAAU,EAAgB,EAAA,CAC3B,CACD,EAAK,oBAAqB,EAAO,CACjC,EAAK,SAAU,EAAO,SAGxB,MACQ,EAAM,WACZ,GAAO,CACL,EAAe,MAAQ,CACrB,GAAK,SAAS,OAAS,KACvB,GAAK,WAAW,OAAS,KACzB,GAAK,UAAU,OAAS,KACzB,EAEH,CAAE,UAAW,GAAM,KAAM,GAAM,CAChC,aCjGD,EAYM,MAZN,EAYM,EAAA,GAAA,CAXJ,EAUE,EAAA,KAAA,EATyB,GAAjB,EAAO,IADjB,EAUE,EAAA,EAAA,CAAA,CARC,IAAK,EACE,MAAO,EAAA,MAAe,wBAAf,EAAA,MAAe,GAAK,EAAA,GAKpB,EAAa,EAAK,CAAA,CAJhC,QAAS,EAAA,MAAa,GACvB,UAAA,GACC,YAAaA,EAAAA,aAAa,GAC1B,SAAU,EAAK,GAAA,CAAS,EAAA,MAAe,EAAK,GAE7C,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"C_Form-SCq-DZaZ.css","names":[],"sources":["../src/components/C_Form/layouts/Default/index.vue?vue&type=style&index=0&scoped=3422ba86&lang.css","../src/components/C_Form/layouts/Inline/index.vue?vue&type=style&index=0&scoped=067214c3&lang.scss","../src/components/C_Form/layouts/Grid/index.vue?vue&type=style&index=0&scoped=941b317b&lang.scss","../src/components/C_Form/layouts/Card/index.vue?vue&type=style&index=0&scoped=e4d182af&lang.scss","../src/components/C_Form/layouts/Tabs/index.vue?vue&type=style&index=0&scoped=330de51f&lang.scss","../src/components/C_Form/layouts/Steps/index.vue?vue&type=style&index=0&scoped=20345bf3&lang.scss","../src/components/C_Form/layouts/Dynamic/index.vue?vue&type=style&index=0&scoped=c2b155a1&lang.scss","../src/components/C_Form/layouts/Custom/index.vue?vue&type=style&index=0&scoped=fe093284&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */\n.c-form-default[data-v-3422ba86] {\r\n width: 100%;\n}\r\n","/* unplugin-vue-components disabled *//* Inline 布局样式 */\n.c-form-inline[data-v-067214c3] {\n width: 100%;\n min-height: 0;\n transition: all 0.3s ease;\n}\n.c-form-inline-item[data-v-067214c3] {\n min-width: 0;\n transition: all 0.3s ease;\n}\n\n/* 确保内部所有表单组件都占满容器宽度 */\n.c-form-inline-item[data-v-067214c3] .n-form-item {\n width: 100%;\n margin-bottom: 0;\n}\n.c-form-inline-item[data-v-067214c3] .n-form-item-blank {\n width: 100%;\n}\n.c-form-inline-item[data-v-067214c3] .n-input,\n.c-form-inline-item[data-v-067214c3] .n-select,\n.c-form-inline-item[data-v-067214c3] .n-date-picker,\n.c-form-inline-item[data-v-067214c3] .n-time-picker,\n.c-form-inline-item[data-v-067214c3] .n-input-number,\n.c-form-inline-item[data-v-067214c3] .n-cascader,\n.c-form-inline-item[data-v-067214c3] .n-color-picker,\n.c-form-inline-item[data-v-067214c3] .n-auto-complete,\n.c-form-inline-item[data-v-067214c3] .n-tree-select {\n width: 100% !important;\n}\n\n/* 单选框和复选框组保持自然宽度 */\n.c-form-inline-item[data-v-067214c3] .n-radio-group,\n.c-form-inline-item[data-v-067214c3] .n-checkbox-group {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* 开关组件居左对齐 */\n.c-form-inline-item[data-v-067214c3] .n-switch {\n width: auto;\n}\n\n/* ================= 对齐方式样式增强 ================= */\n/* 当容器使用 center 对齐时,确保表单项也居中 */\n.c-form-inline[style*=\"justify-content: center\"] .c-form-inline-item[data-v-067214c3] {\n text-align: center;\n}\n\n/* 当容器使用 end 对齐时,确保表单项也右对齐 */\n.c-form-inline[style*=\"justify-content: flex-end\"] .c-form-inline-item[data-v-067214c3] {\n text-align: right;\n}\n\n/* 当容器使用 start 对齐时,确保表单项左对齐 */\n.c-form-inline[style*=\"justify-content: flex-start\"] .c-form-inline-item[data-v-067214c3] {\n text-align: left;\n}\n\n/* ================= 响应式设计 ================= */\n/* 移动设备 - 改为垂直布局 */\n@media (max-width: 768px) {\n.c-form-inline[data-v-067214c3] {\n flex-direction: column !important;\n gap: 12px !important;\n justify-content: flex-start !important;\n}\n.c-form-inline-item[data-v-067214c3] {\n width: 100% !important;\n text-align: left !important;\n}\n}\n/* 小屏手机 */\n@media (max-width: 480px) {\n.c-form-inline[data-v-067214c3] {\n gap: 8px !important;\n}\n}","/* unplugin-vue-components disabled *//* Grid 布局样式 */\n/* 变量定义 */\n.c-grid-layout[data-v-941b317b] {\n width: 100%;\n /* 配置面板 */\n /* 网格容器 */\n /* 统计信息 */\n}\n.c-grid-layout .config-panel[data-v-941b317b] {\n margin-bottom: 1rem;\n}\n.c-grid-layout .config-panel .config-header[data-v-941b317b] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.c-grid-layout .config-panel .config-controls[data-v-941b317b] {\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-941b317b] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-941b317b] {\n font-size: 0.875rem;\n white-space: nowrap;\n min-width: 3rem;\n}\n.c-grid-layout .grid-container[data-v-941b317b] {\n width: 100%;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b] {\n /* 进场动画 */\n animation: fadeInUp-941b317b 0.3s ease-out both;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(1) {\n animation-delay: 0.05s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(2) {\n animation-delay: 0.1s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(3) {\n animation-delay: 0.15s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(4) {\n animation-delay: 0.2s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(5) {\n animation-delay: 0.25s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(6) {\n animation-delay: 0.3s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(7) {\n animation-delay: 0.35s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(8) {\n animation-delay: 0.4s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(9) {\n animation-delay: 0.45s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(10) {\n animation-delay: 0.5s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(11) {\n animation-delay: 0.55s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(12) {\n animation-delay: 0.6s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(13) {\n animation-delay: 0.65s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(14) {\n animation-delay: 0.7s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(15) {\n animation-delay: 0.75s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(16) {\n animation-delay: 0.8s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(17) {\n animation-delay: 0.85s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(18) {\n animation-delay: 0.9s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(19) {\n animation-delay: 0.95s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(20) {\n animation-delay: 1s;\n}\n.c-grid-layout .grid-stats[data-v-941b317b] {\n margin-top: 1rem;\n font-size: 0.875rem;\n opacity: 0.8;\n}\n\n/* 动画定义 */\n@keyframes fadeInUp-941b317b {\nfrom {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n}\nto {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n}\n/* 表单控件统一宽度 */\n[data-v-941b317b] .n-form-item .n-form-item-blank {\n /* 统一所有表单控件的宽度 */\n}\n[data-v-941b317b] .n-form-item .n-form-item-blank .n-input,[data-v-941b317b] .n-form-item .n-form-item-blank .n-input-number,[data-v-941b317b] .n-form-item .n-form-item-blank .n-select,[data-v-941b317b] .n-form-item .n-form-item-blank .n-date-picker,[data-v-941b317b] .n-form-item .n-form-item-blank .n-time-picker,[data-v-941b317b] .n-form-item .n-form-item-blank .n-cascader,[data-v-941b317b] .n-form-item .n-form-item-blank .n-tree-select,[data-v-941b317b] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-941b317b] .n-form-item .n-form-item-blank .n-dynamic-tags {\n width: 100% !important;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.c-grid-layout .config-panel .config-controls[data-v-941b317b] {\n flex-direction: column;\n gap: 0.75rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-941b317b] {\n justify-content: space-between;\n}\n.c-grid-layout .grid-container[data-v-941b317b] .n-grid {\n gap: 0.5rem !important;\n}\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-941b317b] {\n padding: 0.125rem;\n}\n.c-grid-layout .grid-stats[data-v-941b317b] {\n margin-top: 0.75rem;\n font-size: 0.875rem;\n}\n}\n@media (max-width: 480px) {\n.c-grid-layout .config-panel[data-v-941b317b] {\n margin-bottom: 0.75rem;\n}\n}\n/* 主题适配 */\n[data-v-941b317b] .n-card {\n --n-border-radius: 8px;\n}\n[data-v-941b317b] .n-input-number {\n --n-width: 100%;\n}\n\n/* 暗色主题 */\n@media (prefers-color-scheme: dark) {\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-941b317b]:hover {\n background-color: rgba(255, 255, 255, 0.05);\n}\n}","/* unplugin-vue-components disabled *//* Card 布局样式 */\n.c-form-card[data-v-e4d182af] {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n/* ================= 配置面板 ================= */\n.layout-config-panel[data-v-e4d182af] {\n margin-bottom: 0;\n}\n.config-controls[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex-wrap: wrap;\n}\n@media (max-width: 768px) {\n.config-controls[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.config-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n}\n@media (max-width: 768px) {\n.config-item[data-v-e4d182af] {\n justify-content: space-between;\n}\n}\n\n/* ================= 表单内容区域 ================= */\n.form-content[data-v-e4d182af] {\n display: flex;\n}\n.layout-single[data-v-e4d182af],\n.layout-vertical[data-v-e4d182af] {\n flex-direction: column;\n}\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n.layout-horizontal .group-card[data-v-e4d182af] {\n flex: 1;\n min-width: 0;\n}\n@media (max-width: 1200px) {\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: column;\n}\n}\n\n/* ================= 卡片样式 ================= */\n.single-card[data-v-e4d182af],\n.group-card[data-v-e4d182af] {\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);\n border-left-width: 4px;\n}\n.single-card[data-v-e4d182af],\n.basic-card[data-v-e4d182af] {\n border-left-color: #3b82f6;\n}\n.contact-card[data-v-e4d182af] {\n border-left-color: #22c55e;\n}\n.preferences-card[data-v-e4d182af] {\n border-left-color: #a855f7;\n}\n.group-card.collapsed .card-content[data-v-e4d182af] {\n display: none;\n}\n\n/* ================= 卡片头部 ================= */\n.card-header[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n.header-info[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.card-icon[data-v-e4d182af] {\n width: 2.5rem;\n height: 2.5rem;\n padding: 0.5rem;\n border-radius: 0.5rem;\n background: linear-gradient(to bottom right, #3b82f6, #9333ea);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n}\n.header-text h3[data-v-e4d182af] {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.25rem;\n}\n.header-text p[data-v-e4d182af] {\n font-size: 0.875rem;\n color: #6b7280;\n margin: 0;\n}\n.header-actions[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.field-stats[data-v-e4d182af] {\n display: flex;\n gap: 0.5rem;\n}\n\n/* ================= 卡片内容 ================= */\n.card-content[data-v-e4d182af] {\n padding-top: 1rem;\n}\n.progress-section[data-v-e4d182af] {\n padding-bottom: 1rem;\n}\n\n/* ================= 操作面板 ================= */\n.action-content[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1.5rem;\n}\n@media (max-width: 768px) {\n.action-content[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.status-summary[data-v-e4d182af] {\n display: flex;\n gap: 1.5rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.status-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.status-item .label[data-v-e4d182af] {\n font-size: 0.875rem;\n}\n.progress-display[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 8rem;\n}\n.action-buttons[data-v-e4d182af] {\n display: flex;\n gap: 0.75rem;\n}","/* unplugin-vue-components disabled *//* Tabs 布局样式 */\n.c-form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.single-panel[data-v-330de51f] {\n width: 100%;\n}\n.tabs-container[data-v-330de51f] {\n width: 100%;\n}\n.form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.tab-icon[data-v-330de51f] {\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.tab-header[data-v-330de51f] {\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.tab-description[data-v-330de51f] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n opacity: 0.8;\n}\n.tab-form-items[data-v-330de51f] {\n width: 100%;\n}\n.tab-empty[data-v-330de51f] {\n padding: 40px 0;\n}\n.tabs-actions[data-v-330de51f] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-border-color);\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.tabs-actions[data-v-330de51f] {\n margin-top: 12px;\n padding-top: 8px;\n}\n.tabs-actions[data-v-330de51f] .n-space {\n flex-wrap: wrap;\n}\n}","/* unplugin-vue-components disabled *//* Steps 布局样式 */\n.c-form-steps[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.single-panel[data-v-20345bf3] {\n width: 100%;\n}\n.steps-container[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.steps-indicator[data-v-20345bf3] {\n padding: 24px;\n border-radius: 8px;\n}\n.steps-content[data-v-20345bf3] {\n min-height: 400px;\n}\n.step-panel[data-v-20345bf3] {\n animation: fadeIn-20345bf3 0.3s ease-in-out;\n}\n.step-header[data-v-20345bf3] {\n margin-bottom: 24px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.step-title[data-v-20345bf3] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n}\n.step-description[data-v-20345bf3] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n.step-form-items[data-v-20345bf3] {\n width: 100%;\n}\n.steps-actions[data-v-20345bf3] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--n-border-color);\n}\n@keyframes fadeIn-20345bf3 {\nfrom {\n opacity: 0;\n transform: translateY(8px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 垂直步骤样式 */\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: row;\n align-items: flex-start;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n flex-shrink: 0;\n width: 250px;\n margin-right: 24px;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-content[data-v-20345bf3] {\n flex: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: column !important;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n width: 100% !important;\n margin-right: 0 !important;\n margin-bottom: 16px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.step-panel[data-v-20345bf3] {\n animation: none !important;\n}\n}","/* unplugin-vue-components disabled *//* Dynamic 布局样式 */\n.c-form-dynamic[data-v-c2b155a1] {\n width: 100%;\n}\n.dynamic-controls[data-v-c2b155a1],\n.dynamic-controls-fallback[data-v-c2b155a1] {\n margin-bottom: 16px;\n}\n.dynamic-stats[data-v-c2b155a1] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-divider-color);\n}\n.dynamic-item-wrapper[data-v-c2b155a1] {\n position: relative;\n transition: all 0.3s ease;\n animation: fadeInUp-c2b155a1 0.3s ease-out;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n border: 1px dashed var(--n-color-primary);\n border-radius: 6px;\n padding: 8px;\n background-color: var(--n-color-primary-suppl);\n}\n.max-fields-config[data-v-c2b155a1] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n.max-fields-config span[data-v-c2b155a1] {\n font-weight: 500;\n white-space: nowrap;\n color: var(--n-text-color-2);\n}\n@keyframes fadeInUp-c2b155a1 {\nfrom {\n opacity: 0;\n transform: translateY(10px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.dynamic-controls[data-v-c2b155a1],\n .dynamic-controls-fallback[data-v-c2b155a1] {\n margin-bottom: 12px;\n}\n.dynamic-stats[data-v-c2b155a1] {\n margin-top: 12px;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n padding: 6px;\n}\n.max-fields-config[data-v-c2b155a1] {\n margin-top: 8px;\n}\n}\n/* 辅助功能 */\n@media (prefers-reduced-motion: reduce) {\n.dynamic-item-wrapper[data-v-c2b155a1] {\n animation: none !important;\n transition: none !important;\n}\n}\n@media (prefers-contrast: high) {\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n border-width: 2px;\n border-color: currentColor;\n}\n}","/* unplugin-vue-components disabled *//* Custom 布局样式 */\n.custom-layout .toolbar-card[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content .mode-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .stats-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .actions-section[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.custom-layout .toolbar-card .toolbar-content .section-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item[data-v-fe093284] {\n text-align: center;\n min-width: 60px;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-value[data-v-fe093284] {\n display: block;\n font-size: 18px;\n font-weight: 600;\n color: var(--n-primary-color);\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-label[data-v-fe093284] {\n font-size: 12px;\n opacity: 0.7;\n margin-top: 4px;\n}\n.custom-layout .design-panel[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .design-panel .design-tools[data-v-fe093284] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n.custom-layout .design-panel .design-tools .tool-group[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .design-panel .design-tools .tool-group .group-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 4px;\n}\n.custom-layout .layout-canvas[data-v-fe093284] {\n min-height: 200px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n border: 2px dashed var(--n-border-color);\n border-radius: 8px;\n padding: 16px;\n background: var(--n-body-color);\n}\n.custom-layout .layout-canvas .canvas-hint[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n text-align: center;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content h3[data-v-fe093284] {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content p[data-v-fe093284] {\n margin: 0;\n opacity: 0.7;\n font-size: 14px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .layout-canvas .custom-area[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 8px;\n background: var(--n-card-color);\n padding: 16px;\n min-height: 120px;\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .custom-area .area-header[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--n-divider-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284] {\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n padding: 2px 6px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284]:hover {\n background: var(--n-button-color-hover);\n color: var(--n-primary-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .title-input[data-v-fe093284] {\n min-width: 120px;\n max-width: 200px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-controls[data-v-fe093284] {\n display: flex;\n gap: 4px;\n}\n.custom-layout .layout-canvas .custom-area .area-fields[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 60px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 60px;\n border: 2px dashed var(--n-border-color);\n border-radius: 6px;\n font-size: 14px;\n opacity: 0.6;\n transition: all 0.2s ease;\n background: var(--n-body-color);\n margin-top: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n opacity: 1;\n}\n.custom-layout .layout-canvas .custom-area.area-horizontal .area-fields[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .custom-area.area-grid .area-fields[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-body-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-item .field-preview[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-label[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-type[data-v-fe093284] {\n font-size: 11px;\n opacity: 0.6;\n background: var(--n-tag-color);\n padding: 2px 6px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .field-pool[data-v-fe093284] {\n margin-top: 16px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-card-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-name[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-type-tag[data-v-fe093284] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--n-tag-color);\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .empty-layout[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n padding: 16px;\n}\n.custom-layout .layout-canvas .form-areas[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-start;\n}\n.custom-layout .layout-canvas .form-areas .form-area[data-v-fe093284] {\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .form-areas .form-area.area-vertical[data-v-fe093284] {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n /* 统一表单项宽度 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank {\n width: 100%;\n /* 统一输入控件宽度 */\n /* 特殊控件的额外处理 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-date-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input-number,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-textarea,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-cascader,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-tree-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-time-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-color-picker {\n width: 100% !important;\n max-width: 100% !important;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] .n-form-item {\n flex: 1;\n min-width: 200px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n\n/* 拖拽状态 */\n.area-ghost[data-v-fe093284],\n.field-ghost[data-v-fe093284] {\n opacity: 0.5;\n background: var(--n-primary-color-suppl);\n border: 2px dashed var(--n-primary-color);\n transform: rotate(2deg);\n}\n\n/* 响应式 */\n@media (max-width: 1024px) {\n.custom-layout .toolbar-content[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n flex-direction: column;\n}\n}\n@media (max-width: 768px) {\n.custom-layout .design-tools[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n padding: 12px;\n}\n.custom-layout .custom-area[data-v-fe093284] {\n padding: 12px;\n min-height: 100px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n grid-template-columns: repeat(2, 1fr);\n}\n}"],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"C_Form-B_2ql62V.css","names":[],"sources":["../src/components/C_Form/layouts/Default/index.vue?vue&type=style&index=0&scoped=3422ba86&lang.css","../src/components/C_Form/layouts/Inline/index.vue?vue&type=style&index=0&scoped=067214c3&lang.scss","../src/components/C_Form/layouts/Grid/index.vue?vue&type=style&index=0&scoped=a7a655a4&lang.scss","../src/components/C_Form/layouts/Card/index.vue?vue&type=style&index=0&scoped=e4d182af&lang.scss","../src/components/C_Form/layouts/Tabs/index.vue?vue&type=style&index=0&scoped=330de51f&lang.scss","../src/components/C_Form/layouts/Steps/index.vue?vue&type=style&index=0&scoped=20345bf3&lang.scss","../src/components/C_Form/layouts/Dynamic/index.vue?vue&type=style&index=0&scoped=a70ec0bb&lang.scss","../src/components/C_Form/layouts/Custom/index.vue?vue&type=style&index=0&scoped=fe093284&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */\n.c-form-default[data-v-3422ba86] {\r\n width: 100%;\n}\r\n","/* unplugin-vue-components disabled *//* Inline 布局样式 */\n.c-form-inline[data-v-067214c3] {\n width: 100%;\n min-height: 0;\n transition: all 0.3s ease;\n}\n.c-form-inline-item[data-v-067214c3] {\n min-width: 0;\n transition: all 0.3s ease;\n}\n\n/* 确保内部所有表单组件都占满容器宽度 */\n.c-form-inline-item[data-v-067214c3] .n-form-item {\n width: 100%;\n margin-bottom: 0;\n}\n.c-form-inline-item[data-v-067214c3] .n-form-item-blank {\n width: 100%;\n}\n.c-form-inline-item[data-v-067214c3] .n-input,\n.c-form-inline-item[data-v-067214c3] .n-select,\n.c-form-inline-item[data-v-067214c3] .n-date-picker,\n.c-form-inline-item[data-v-067214c3] .n-time-picker,\n.c-form-inline-item[data-v-067214c3] .n-input-number,\n.c-form-inline-item[data-v-067214c3] .n-cascader,\n.c-form-inline-item[data-v-067214c3] .n-color-picker,\n.c-form-inline-item[data-v-067214c3] .n-auto-complete,\n.c-form-inline-item[data-v-067214c3] .n-tree-select {\n width: 100% !important;\n}\n\n/* 单选框和复选框组保持自然宽度 */\n.c-form-inline-item[data-v-067214c3] .n-radio-group,\n.c-form-inline-item[data-v-067214c3] .n-checkbox-group {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* 开关组件居左对齐 */\n.c-form-inline-item[data-v-067214c3] .n-switch {\n width: auto;\n}\n\n/* ================= 对齐方式样式增强 ================= */\n/* 当容器使用 center 对齐时,确保表单项也居中 */\n.c-form-inline[style*=\"justify-content: center\"] .c-form-inline-item[data-v-067214c3] {\n text-align: center;\n}\n\n/* 当容器使用 end 对齐时,确保表单项也右对齐 */\n.c-form-inline[style*=\"justify-content: flex-end\"] .c-form-inline-item[data-v-067214c3] {\n text-align: right;\n}\n\n/* 当容器使用 start 对齐时,确保表单项左对齐 */\n.c-form-inline[style*=\"justify-content: flex-start\"] .c-form-inline-item[data-v-067214c3] {\n text-align: left;\n}\n\n/* ================= 响应式设计 ================= */\n/* 移动设备 - 改为垂直布局 */\n@media (max-width: 768px) {\n.c-form-inline[data-v-067214c3] {\n flex-direction: column !important;\n gap: 12px !important;\n justify-content: flex-start !important;\n}\n.c-form-inline-item[data-v-067214c3] {\n width: 100% !important;\n text-align: left !important;\n}\n}\n/* 小屏手机 */\n@media (max-width: 480px) {\n.c-form-inline[data-v-067214c3] {\n gap: 8px !important;\n}\n}","/* unplugin-vue-components disabled *//* Grid 布局样式 */\n/* 变量定义 */\n.c-grid-layout[data-v-a7a655a4] {\n width: 100%;\n /* 配置面板 */\n /* 网格容器 */\n /* 统计信息 */\n}\n.c-grid-layout .config-panel[data-v-a7a655a4] {\n margin-bottom: 1rem;\n}\n.c-grid-layout .config-panel .config-header[data-v-a7a655a4] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.c-grid-layout .config-panel .config-controls[data-v-a7a655a4] {\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-a7a655a4] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-a7a655a4] {\n font-size: 0.875rem;\n white-space: nowrap;\n min-width: 3rem;\n}\n.c-grid-layout .grid-container[data-v-a7a655a4] {\n width: 100%;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4] {\n /* 进场动画 */\n animation: fadeInUp-a7a655a4 0.3s ease-out both;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(1) {\n animation-delay: 0.05s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(2) {\n animation-delay: 0.1s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(3) {\n animation-delay: 0.15s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(4) {\n animation-delay: 0.2s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(5) {\n animation-delay: 0.25s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(6) {\n animation-delay: 0.3s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(7) {\n animation-delay: 0.35s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(8) {\n animation-delay: 0.4s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(9) {\n animation-delay: 0.45s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(10) {\n animation-delay: 0.5s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(11) {\n animation-delay: 0.55s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(12) {\n animation-delay: 0.6s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(13) {\n animation-delay: 0.65s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(14) {\n animation-delay: 0.7s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(15) {\n animation-delay: 0.75s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(16) {\n animation-delay: 0.8s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(17) {\n animation-delay: 0.85s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(18) {\n animation-delay: 0.9s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(19) {\n animation-delay: 0.95s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(20) {\n animation-delay: 1s;\n}\n.c-grid-layout .grid-stats[data-v-a7a655a4] {\n margin-top: 1rem;\n font-size: 0.875rem;\n opacity: 0.8;\n}\n\n/* 动画定义 */\n@keyframes fadeInUp-a7a655a4 {\nfrom {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n}\nto {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n}\n/* 表单控件统一宽度 */\n[data-v-a7a655a4] .n-form-item .n-form-item-blank {\n /* 统一所有表单控件的宽度 */\n}\n[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-input,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-input-number,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-select,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-date-picker,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-time-picker,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-cascader,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-tree-select,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-dynamic-tags {\n width: 100% !important;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.c-grid-layout .config-panel .config-controls[data-v-a7a655a4] {\n flex-direction: column;\n gap: 0.75rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-a7a655a4] {\n justify-content: space-between;\n}\n.c-grid-layout .grid-container[data-v-a7a655a4] .n-grid {\n gap: 0.5rem !important;\n}\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-a7a655a4] {\n padding: 0.125rem;\n}\n.c-grid-layout .grid-stats[data-v-a7a655a4] {\n margin-top: 0.75rem;\n font-size: 0.875rem;\n}\n}\n@media (max-width: 480px) {\n.c-grid-layout .config-panel[data-v-a7a655a4] {\n margin-bottom: 0.75rem;\n}\n}\n/* 主题适配 */\n[data-v-a7a655a4] .n-card {\n --n-border-radius: 8px;\n}\n[data-v-a7a655a4] .n-input-number {\n --n-width: 100%;\n}\n\n/* 暗色主题 */\n@media (prefers-color-scheme: dark) {\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-a7a655a4]:hover {\n background-color: rgba(255, 255, 255, 0.05);\n}\n}","/* unplugin-vue-components disabled *//* Card 布局样式 */\n.c-form-card[data-v-e4d182af] {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n/* ================= 配置面板 ================= */\n.layout-config-panel[data-v-e4d182af] {\n margin-bottom: 0;\n}\n.config-controls[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex-wrap: wrap;\n}\n@media (max-width: 768px) {\n.config-controls[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.config-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n}\n@media (max-width: 768px) {\n.config-item[data-v-e4d182af] {\n justify-content: space-between;\n}\n}\n\n/* ================= 表单内容区域 ================= */\n.form-content[data-v-e4d182af] {\n display: flex;\n}\n.layout-single[data-v-e4d182af],\n.layout-vertical[data-v-e4d182af] {\n flex-direction: column;\n}\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n.layout-horizontal .group-card[data-v-e4d182af] {\n flex: 1;\n min-width: 0;\n}\n@media (max-width: 1200px) {\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: column;\n}\n}\n\n/* ================= 卡片样式 ================= */\n.single-card[data-v-e4d182af],\n.group-card[data-v-e4d182af] {\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);\n border-left-width: 4px;\n}\n.single-card[data-v-e4d182af],\n.basic-card[data-v-e4d182af] {\n border-left-color: #3b82f6;\n}\n.contact-card[data-v-e4d182af] {\n border-left-color: #22c55e;\n}\n.preferences-card[data-v-e4d182af] {\n border-left-color: #a855f7;\n}\n.group-card.collapsed .card-content[data-v-e4d182af] {\n display: none;\n}\n\n/* ================= 卡片头部 ================= */\n.card-header[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n.header-info[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.card-icon[data-v-e4d182af] {\n width: 2.5rem;\n height: 2.5rem;\n padding: 0.5rem;\n border-radius: 0.5rem;\n background: linear-gradient(to bottom right, #3b82f6, #9333ea);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n}\n.header-text h3[data-v-e4d182af] {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.25rem;\n}\n.header-text p[data-v-e4d182af] {\n font-size: 0.875rem;\n color: #6b7280;\n margin: 0;\n}\n.header-actions[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.field-stats[data-v-e4d182af] {\n display: flex;\n gap: 0.5rem;\n}\n\n/* ================= 卡片内容 ================= */\n.card-content[data-v-e4d182af] {\n padding-top: 1rem;\n}\n.progress-section[data-v-e4d182af] {\n padding-bottom: 1rem;\n}\n\n/* ================= 操作面板 ================= */\n.action-content[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1.5rem;\n}\n@media (max-width: 768px) {\n.action-content[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.status-summary[data-v-e4d182af] {\n display: flex;\n gap: 1.5rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.status-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.status-item .label[data-v-e4d182af] {\n font-size: 0.875rem;\n}\n.progress-display[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 8rem;\n}\n.action-buttons[data-v-e4d182af] {\n display: flex;\n gap: 0.75rem;\n}","/* unplugin-vue-components disabled *//* Tabs 布局样式 */\n.c-form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.single-panel[data-v-330de51f] {\n width: 100%;\n}\n.tabs-container[data-v-330de51f] {\n width: 100%;\n}\n.form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.tab-icon[data-v-330de51f] {\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.tab-header[data-v-330de51f] {\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.tab-description[data-v-330de51f] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n opacity: 0.8;\n}\n.tab-form-items[data-v-330de51f] {\n width: 100%;\n}\n.tab-empty[data-v-330de51f] {\n padding: 40px 0;\n}\n.tabs-actions[data-v-330de51f] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-border-color);\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.tabs-actions[data-v-330de51f] {\n margin-top: 12px;\n padding-top: 8px;\n}\n.tabs-actions[data-v-330de51f] .n-space {\n flex-wrap: wrap;\n}\n}","/* unplugin-vue-components disabled *//* Steps 布局样式 */\n.c-form-steps[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.single-panel[data-v-20345bf3] {\n width: 100%;\n}\n.steps-container[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.steps-indicator[data-v-20345bf3] {\n padding: 24px;\n border-radius: 8px;\n}\n.steps-content[data-v-20345bf3] {\n min-height: 400px;\n}\n.step-panel[data-v-20345bf3] {\n animation: fadeIn-20345bf3 0.3s ease-in-out;\n}\n.step-header[data-v-20345bf3] {\n margin-bottom: 24px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.step-title[data-v-20345bf3] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n}\n.step-description[data-v-20345bf3] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n.step-form-items[data-v-20345bf3] {\n width: 100%;\n}\n.steps-actions[data-v-20345bf3] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--n-border-color);\n}\n@keyframes fadeIn-20345bf3 {\nfrom {\n opacity: 0;\n transform: translateY(8px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 垂直步骤样式 */\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: row;\n align-items: flex-start;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n flex-shrink: 0;\n width: 250px;\n margin-right: 24px;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-content[data-v-20345bf3] {\n flex: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: column !important;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n width: 100% !important;\n margin-right: 0 !important;\n margin-bottom: 16px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.step-panel[data-v-20345bf3] {\n animation: none !important;\n}\n}","/* unplugin-vue-components disabled *//* Dynamic 布局样式 */\n.c-form-dynamic[data-v-a70ec0bb] {\n width: 100%;\n}\n.dynamic-controls[data-v-a70ec0bb],\n.dynamic-controls-fallback[data-v-a70ec0bb] {\n margin-bottom: 16px;\n}\n.dynamic-stats[data-v-a70ec0bb] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-divider-color);\n}\n.dynamic-item-wrapper[data-v-a70ec0bb] {\n position: relative;\n transition: all 0.3s ease;\n animation: fadeInUp-a70ec0bb 0.3s ease-out;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n border: 1px dashed var(--n-color-primary);\n border-radius: 6px;\n padding: 8px;\n background-color: var(--n-color-primary-suppl);\n}\n.max-fields-config[data-v-a70ec0bb] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n.max-fields-config span[data-v-a70ec0bb] {\n font-weight: 500;\n white-space: nowrap;\n color: var(--n-text-color-2);\n}\n@keyframes fadeInUp-a70ec0bb {\nfrom {\n opacity: 0;\n transform: translateY(10px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.dynamic-controls[data-v-a70ec0bb],\n .dynamic-controls-fallback[data-v-a70ec0bb] {\n margin-bottom: 12px;\n}\n.dynamic-stats[data-v-a70ec0bb] {\n margin-top: 12px;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n padding: 6px;\n}\n.max-fields-config[data-v-a70ec0bb] {\n margin-top: 8px;\n}\n}\n/* 辅助功能 */\n@media (prefers-reduced-motion: reduce) {\n.dynamic-item-wrapper[data-v-a70ec0bb] {\n animation: none !important;\n transition: none !important;\n}\n}\n@media (prefers-contrast: high) {\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n border-width: 2px;\n border-color: currentColor;\n}\n}","/* unplugin-vue-components disabled *//* Custom 布局样式 */\n.custom-layout .toolbar-card[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content .mode-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .stats-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .actions-section[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.custom-layout .toolbar-card .toolbar-content .section-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item[data-v-fe093284] {\n text-align: center;\n min-width: 60px;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-value[data-v-fe093284] {\n display: block;\n font-size: 18px;\n font-weight: 600;\n color: var(--n-primary-color);\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-label[data-v-fe093284] {\n font-size: 12px;\n opacity: 0.7;\n margin-top: 4px;\n}\n.custom-layout .design-panel[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .design-panel .design-tools[data-v-fe093284] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n.custom-layout .design-panel .design-tools .tool-group[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .design-panel .design-tools .tool-group .group-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 4px;\n}\n.custom-layout .layout-canvas[data-v-fe093284] {\n min-height: 200px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n border: 2px dashed var(--n-border-color);\n border-radius: 8px;\n padding: 16px;\n background: var(--n-body-color);\n}\n.custom-layout .layout-canvas .canvas-hint[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n text-align: center;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content h3[data-v-fe093284] {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content p[data-v-fe093284] {\n margin: 0;\n opacity: 0.7;\n font-size: 14px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .layout-canvas .custom-area[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 8px;\n background: var(--n-card-color);\n padding: 16px;\n min-height: 120px;\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .custom-area .area-header[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--n-divider-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284] {\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n padding: 2px 6px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284]:hover {\n background: var(--n-button-color-hover);\n color: var(--n-primary-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .title-input[data-v-fe093284] {\n min-width: 120px;\n max-width: 200px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-controls[data-v-fe093284] {\n display: flex;\n gap: 4px;\n}\n.custom-layout .layout-canvas .custom-area .area-fields[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 60px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 60px;\n border: 2px dashed var(--n-border-color);\n border-radius: 6px;\n font-size: 14px;\n opacity: 0.6;\n transition: all 0.2s ease;\n background: var(--n-body-color);\n margin-top: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n opacity: 1;\n}\n.custom-layout .layout-canvas .custom-area.area-horizontal .area-fields[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .custom-area.area-grid .area-fields[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-body-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-item .field-preview[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-label[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-type[data-v-fe093284] {\n font-size: 11px;\n opacity: 0.6;\n background: var(--n-tag-color);\n padding: 2px 6px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .field-pool[data-v-fe093284] {\n margin-top: 16px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-card-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-name[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-type-tag[data-v-fe093284] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--n-tag-color);\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .empty-layout[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n padding: 16px;\n}\n.custom-layout .layout-canvas .form-areas[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-start;\n}\n.custom-layout .layout-canvas .form-areas .form-area[data-v-fe093284] {\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .form-areas .form-area.area-vertical[data-v-fe093284] {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n /* 统一表单项宽度 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank {\n width: 100%;\n /* 统一输入控件宽度 */\n /* 特殊控件的额外处理 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-date-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input-number,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-textarea,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-cascader,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-tree-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-time-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-color-picker {\n width: 100% !important;\n max-width: 100% !important;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] .n-form-item {\n flex: 1;\n min-width: 200px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n\n/* 拖拽状态 */\n.area-ghost[data-v-fe093284],\n.field-ghost[data-v-fe093284] {\n opacity: 0.5;\n background: var(--n-primary-color-suppl);\n border: 2px dashed var(--n-primary-color);\n transform: rotate(2deg);\n}\n\n/* 响应式 */\n@media (max-width: 1024px) {\n.custom-layout .toolbar-content[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n flex-direction: column;\n}\n}\n@media (max-width: 768px) {\n.custom-layout .design-tools[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n padding: 12px;\n}\n.custom-layout .custom-area[data-v-fe093284] {\n padding: 12px;\n min-height: 100px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n grid-template-columns: repeat(2, 1fr);\n}\n}"],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"C_Form-mcd1nKvF.css","names":[],"sources":["../src/components/C_Form/layouts/Default/index.vue?vue&type=style&index=0&scoped=3422ba86&lang.css","../src/components/C_Form/layouts/Inline/index.vue?vue&type=style&index=0&scoped=067214c3&lang.scss","../src/components/C_Form/layouts/Grid/index.vue?vue&type=style&index=0&scoped=941b317b&lang.scss","../src/components/C_Form/layouts/Card/index.vue?vue&type=style&index=0&scoped=e4d182af&lang.scss","../src/components/C_Form/layouts/Tabs/index.vue?vue&type=style&index=0&scoped=330de51f&lang.scss","../src/components/C_Form/layouts/Steps/index.vue?vue&type=style&index=0&scoped=20345bf3&lang.scss","../src/components/C_Form/layouts/Dynamic/index.vue?vue&type=style&index=0&scoped=c2b155a1&lang.scss","../src/components/C_Form/layouts/Custom/index.vue?vue&type=style&index=0&scoped=fe093284&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */\n.c-form-default[data-v-3422ba86] {\r\n width: 100%;\n}\r\n","/* unplugin-vue-components disabled *//* Inline 布局样式 */\n.c-form-inline[data-v-067214c3] {\n width: 100%;\n min-height: 0;\n transition: all 0.3s ease;\n}\n.c-form-inline-item[data-v-067214c3] {\n min-width: 0;\n transition: all 0.3s ease;\n}\n\n/* 确保内部所有表单组件都占满容器宽度 */\n.c-form-inline-item[data-v-067214c3] .n-form-item {\n width: 100%;\n margin-bottom: 0;\n}\n.c-form-inline-item[data-v-067214c3] .n-form-item-blank {\n width: 100%;\n}\n.c-form-inline-item[data-v-067214c3] .n-input,\n.c-form-inline-item[data-v-067214c3] .n-select,\n.c-form-inline-item[data-v-067214c3] .n-date-picker,\n.c-form-inline-item[data-v-067214c3] .n-time-picker,\n.c-form-inline-item[data-v-067214c3] .n-input-number,\n.c-form-inline-item[data-v-067214c3] .n-cascader,\n.c-form-inline-item[data-v-067214c3] .n-color-picker,\n.c-form-inline-item[data-v-067214c3] .n-auto-complete,\n.c-form-inline-item[data-v-067214c3] .n-tree-select {\n width: 100% !important;\n}\n\n/* 单选框和复选框组保持自然宽度 */\n.c-form-inline-item[data-v-067214c3] .n-radio-group,\n.c-form-inline-item[data-v-067214c3] .n-checkbox-group {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* 开关组件居左对齐 */\n.c-form-inline-item[data-v-067214c3] .n-switch {\n width: auto;\n}\n\n/* ================= 对齐方式样式增强 ================= */\n/* 当容器使用 center 对齐时,确保表单项也居中 */\n.c-form-inline[style*=\"justify-content: center\"] .c-form-inline-item[data-v-067214c3] {\n text-align: center;\n}\n\n/* 当容器使用 end 对齐时,确保表单项也右对齐 */\n.c-form-inline[style*=\"justify-content: flex-end\"] .c-form-inline-item[data-v-067214c3] {\n text-align: right;\n}\n\n/* 当容器使用 start 对齐时,确保表单项左对齐 */\n.c-form-inline[style*=\"justify-content: flex-start\"] .c-form-inline-item[data-v-067214c3] {\n text-align: left;\n}\n\n/* ================= 响应式设计 ================= */\n/* 移动设备 - 改为垂直布局 */\n@media (max-width: 768px) {\n.c-form-inline[data-v-067214c3] {\n flex-direction: column !important;\n gap: 12px !important;\n justify-content: flex-start !important;\n}\n.c-form-inline-item[data-v-067214c3] {\n width: 100% !important;\n text-align: left !important;\n}\n}\n/* 小屏手机 */\n@media (max-width: 480px) {\n.c-form-inline[data-v-067214c3] {\n gap: 8px !important;\n}\n}","/* unplugin-vue-components disabled *//* Grid 布局样式 */\n/* 变量定义 */\n.c-grid-layout[data-v-941b317b] {\n width: 100%;\n /* 配置面板 */\n /* 网格容器 */\n /* 统计信息 */\n}\n.c-grid-layout .config-panel[data-v-941b317b] {\n margin-bottom: 1rem;\n}\n.c-grid-layout .config-panel .config-header[data-v-941b317b] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.c-grid-layout .config-panel .config-controls[data-v-941b317b] {\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-941b317b] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-941b317b] {\n font-size: 0.875rem;\n white-space: nowrap;\n min-width: 3rem;\n}\n.c-grid-layout .grid-container[data-v-941b317b] {\n width: 100%;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b] {\n /* 进场动画 */\n animation: fadeInUp-941b317b 0.3s ease-out both;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(1) {\n animation-delay: 0.05s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(2) {\n animation-delay: 0.1s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(3) {\n animation-delay: 0.15s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(4) {\n animation-delay: 0.2s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(5) {\n animation-delay: 0.25s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(6) {\n animation-delay: 0.3s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(7) {\n animation-delay: 0.35s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(8) {\n animation-delay: 0.4s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(9) {\n animation-delay: 0.45s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(10) {\n animation-delay: 0.5s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(11) {\n animation-delay: 0.55s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(12) {\n animation-delay: 0.6s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(13) {\n animation-delay: 0.65s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(14) {\n animation-delay: 0.7s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(15) {\n animation-delay: 0.75s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(16) {\n animation-delay: 0.8s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(17) {\n animation-delay: 0.85s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(18) {\n animation-delay: 0.9s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(19) {\n animation-delay: 0.95s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-941b317b]:nth-child(20) {\n animation-delay: 1s;\n}\n.c-grid-layout .grid-stats[data-v-941b317b] {\n margin-top: 1rem;\n font-size: 0.875rem;\n opacity: 0.8;\n}\n\n/* 动画定义 */\n@keyframes fadeInUp-941b317b {\nfrom {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n}\nto {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n}\n/* 表单控件统一宽度 */\n[data-v-941b317b] .n-form-item .n-form-item-blank {\n /* 统一所有表单控件的宽度 */\n}\n[data-v-941b317b] .n-form-item .n-form-item-blank .n-input,[data-v-941b317b] .n-form-item .n-form-item-blank .n-input-number,[data-v-941b317b] .n-form-item .n-form-item-blank .n-select,[data-v-941b317b] .n-form-item .n-form-item-blank .n-date-picker,[data-v-941b317b] .n-form-item .n-form-item-blank .n-time-picker,[data-v-941b317b] .n-form-item .n-form-item-blank .n-cascader,[data-v-941b317b] .n-form-item .n-form-item-blank .n-tree-select,[data-v-941b317b] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-941b317b] .n-form-item .n-form-item-blank .n-dynamic-tags {\n width: 100% !important;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.c-grid-layout .config-panel .config-controls[data-v-941b317b] {\n flex-direction: column;\n gap: 0.75rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-941b317b] {\n justify-content: space-between;\n}\n.c-grid-layout .grid-container[data-v-941b317b] .n-grid {\n gap: 0.5rem !important;\n}\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-941b317b] {\n padding: 0.125rem;\n}\n.c-grid-layout .grid-stats[data-v-941b317b] {\n margin-top: 0.75rem;\n font-size: 0.875rem;\n}\n}\n@media (max-width: 480px) {\n.c-grid-layout .config-panel[data-v-941b317b] {\n margin-bottom: 0.75rem;\n}\n}\n/* 主题适配 */\n[data-v-941b317b] .n-card {\n --n-border-radius: 8px;\n}\n[data-v-941b317b] .n-input-number {\n --n-width: 100%;\n}\n\n/* 暗色主题 */\n@media (prefers-color-scheme: dark) {\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-941b317b]:hover {\n background-color: rgba(255, 255, 255, 0.05);\n}\n}","/* unplugin-vue-components disabled *//* Card 布局样式 */\n.c-form-card[data-v-e4d182af] {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n/* ================= 配置面板 ================= */\n.layout-config-panel[data-v-e4d182af] {\n margin-bottom: 0;\n}\n.config-controls[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex-wrap: wrap;\n}\n@media (max-width: 768px) {\n.config-controls[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.config-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n}\n@media (max-width: 768px) {\n.config-item[data-v-e4d182af] {\n justify-content: space-between;\n}\n}\n\n/* ================= 表单内容区域 ================= */\n.form-content[data-v-e4d182af] {\n display: flex;\n}\n.layout-single[data-v-e4d182af],\n.layout-vertical[data-v-e4d182af] {\n flex-direction: column;\n}\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n.layout-horizontal .group-card[data-v-e4d182af] {\n flex: 1;\n min-width: 0;\n}\n@media (max-width: 1200px) {\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: column;\n}\n}\n\n/* ================= 卡片样式 ================= */\n.single-card[data-v-e4d182af],\n.group-card[data-v-e4d182af] {\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);\n border-left-width: 4px;\n}\n.single-card[data-v-e4d182af],\n.basic-card[data-v-e4d182af] {\n border-left-color: #3b82f6;\n}\n.contact-card[data-v-e4d182af] {\n border-left-color: #22c55e;\n}\n.preferences-card[data-v-e4d182af] {\n border-left-color: #a855f7;\n}\n.group-card.collapsed .card-content[data-v-e4d182af] {\n display: none;\n}\n\n/* ================= 卡片头部 ================= */\n.card-header[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n.header-info[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.card-icon[data-v-e4d182af] {\n width: 2.5rem;\n height: 2.5rem;\n padding: 0.5rem;\n border-radius: 0.5rem;\n background: linear-gradient(to bottom right, #3b82f6, #9333ea);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n}\n.header-text h3[data-v-e4d182af] {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.25rem;\n}\n.header-text p[data-v-e4d182af] {\n font-size: 0.875rem;\n color: #6b7280;\n margin: 0;\n}\n.header-actions[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.field-stats[data-v-e4d182af] {\n display: flex;\n gap: 0.5rem;\n}\n\n/* ================= 卡片内容 ================= */\n.card-content[data-v-e4d182af] {\n padding-top: 1rem;\n}\n.progress-section[data-v-e4d182af] {\n padding-bottom: 1rem;\n}\n\n/* ================= 操作面板 ================= */\n.action-content[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1.5rem;\n}\n@media (max-width: 768px) {\n.action-content[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.status-summary[data-v-e4d182af] {\n display: flex;\n gap: 1.5rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.status-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.status-item .label[data-v-e4d182af] {\n font-size: 0.875rem;\n}\n.progress-display[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 8rem;\n}\n.action-buttons[data-v-e4d182af] {\n display: flex;\n gap: 0.75rem;\n}","/* unplugin-vue-components disabled *//* Tabs 布局样式 */\n.c-form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.single-panel[data-v-330de51f] {\n width: 100%;\n}\n.tabs-container[data-v-330de51f] {\n width: 100%;\n}\n.form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.tab-icon[data-v-330de51f] {\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.tab-header[data-v-330de51f] {\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.tab-description[data-v-330de51f] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n opacity: 0.8;\n}\n.tab-form-items[data-v-330de51f] {\n width: 100%;\n}\n.tab-empty[data-v-330de51f] {\n padding: 40px 0;\n}\n.tabs-actions[data-v-330de51f] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-border-color);\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.tabs-actions[data-v-330de51f] {\n margin-top: 12px;\n padding-top: 8px;\n}\n.tabs-actions[data-v-330de51f] .n-space {\n flex-wrap: wrap;\n}\n}","/* unplugin-vue-components disabled *//* Steps 布局样式 */\n.c-form-steps[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.single-panel[data-v-20345bf3] {\n width: 100%;\n}\n.steps-container[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.steps-indicator[data-v-20345bf3] {\n padding: 24px;\n border-radius: 8px;\n}\n.steps-content[data-v-20345bf3] {\n min-height: 400px;\n}\n.step-panel[data-v-20345bf3] {\n animation: fadeIn-20345bf3 0.3s ease-in-out;\n}\n.step-header[data-v-20345bf3] {\n margin-bottom: 24px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.step-title[data-v-20345bf3] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n}\n.step-description[data-v-20345bf3] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n.step-form-items[data-v-20345bf3] {\n width: 100%;\n}\n.steps-actions[data-v-20345bf3] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--n-border-color);\n}\n@keyframes fadeIn-20345bf3 {\nfrom {\n opacity: 0;\n transform: translateY(8px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 垂直步骤样式 */\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: row;\n align-items: flex-start;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n flex-shrink: 0;\n width: 250px;\n margin-right: 24px;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-content[data-v-20345bf3] {\n flex: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: column !important;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n width: 100% !important;\n margin-right: 0 !important;\n margin-bottom: 16px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.step-panel[data-v-20345bf3] {\n animation: none !important;\n}\n}","/* unplugin-vue-components disabled *//* Dynamic 布局样式 */\n.c-form-dynamic[data-v-c2b155a1] {\n width: 100%;\n}\n.dynamic-controls[data-v-c2b155a1],\n.dynamic-controls-fallback[data-v-c2b155a1] {\n margin-bottom: 16px;\n}\n.dynamic-stats[data-v-c2b155a1] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-divider-color);\n}\n.dynamic-item-wrapper[data-v-c2b155a1] {\n position: relative;\n transition: all 0.3s ease;\n animation: fadeInUp-c2b155a1 0.3s ease-out;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n border: 1px dashed var(--n-color-primary);\n border-radius: 6px;\n padding: 8px;\n background-color: var(--n-color-primary-suppl);\n}\n.max-fields-config[data-v-c2b155a1] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n.max-fields-config span[data-v-c2b155a1] {\n font-weight: 500;\n white-space: nowrap;\n color: var(--n-text-color-2);\n}\n@keyframes fadeInUp-c2b155a1 {\nfrom {\n opacity: 0;\n transform: translateY(10px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.dynamic-controls[data-v-c2b155a1],\n .dynamic-controls-fallback[data-v-c2b155a1] {\n margin-bottom: 12px;\n}\n.dynamic-stats[data-v-c2b155a1] {\n margin-top: 12px;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n padding: 6px;\n}\n.max-fields-config[data-v-c2b155a1] {\n margin-top: 8px;\n}\n}\n/* 辅助功能 */\n@media (prefers-reduced-motion: reduce) {\n.dynamic-item-wrapper[data-v-c2b155a1] {\n animation: none !important;\n transition: none !important;\n}\n}\n@media (prefers-contrast: high) {\n.dynamic-item-wrapper.is-dynamic-field[data-v-c2b155a1] {\n border-width: 2px;\n border-color: currentColor;\n}\n}","/* unplugin-vue-components disabled *//* Custom 布局样式 */\n.custom-layout .toolbar-card[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content .mode-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .stats-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .actions-section[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.custom-layout .toolbar-card .toolbar-content .section-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item[data-v-fe093284] {\n text-align: center;\n min-width: 60px;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-value[data-v-fe093284] {\n display: block;\n font-size: 18px;\n font-weight: 600;\n color: var(--n-primary-color);\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-label[data-v-fe093284] {\n font-size: 12px;\n opacity: 0.7;\n margin-top: 4px;\n}\n.custom-layout .design-panel[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .design-panel .design-tools[data-v-fe093284] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n.custom-layout .design-panel .design-tools .tool-group[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .design-panel .design-tools .tool-group .group-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 4px;\n}\n.custom-layout .layout-canvas[data-v-fe093284] {\n min-height: 200px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n border: 2px dashed var(--n-border-color);\n border-radius: 8px;\n padding: 16px;\n background: var(--n-body-color);\n}\n.custom-layout .layout-canvas .canvas-hint[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n text-align: center;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content h3[data-v-fe093284] {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content p[data-v-fe093284] {\n margin: 0;\n opacity: 0.7;\n font-size: 14px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .layout-canvas .custom-area[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 8px;\n background: var(--n-card-color);\n padding: 16px;\n min-height: 120px;\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .custom-area .area-header[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--n-divider-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284] {\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n padding: 2px 6px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284]:hover {\n background: var(--n-button-color-hover);\n color: var(--n-primary-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .title-input[data-v-fe093284] {\n min-width: 120px;\n max-width: 200px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-controls[data-v-fe093284] {\n display: flex;\n gap: 4px;\n}\n.custom-layout .layout-canvas .custom-area .area-fields[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 60px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 60px;\n border: 2px dashed var(--n-border-color);\n border-radius: 6px;\n font-size: 14px;\n opacity: 0.6;\n transition: all 0.2s ease;\n background: var(--n-body-color);\n margin-top: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n opacity: 1;\n}\n.custom-layout .layout-canvas .custom-area.area-horizontal .area-fields[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .custom-area.area-grid .area-fields[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-body-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-item .field-preview[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-label[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-type[data-v-fe093284] {\n font-size: 11px;\n opacity: 0.6;\n background: var(--n-tag-color);\n padding: 2px 6px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .field-pool[data-v-fe093284] {\n margin-top: 16px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-card-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-name[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-type-tag[data-v-fe093284] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--n-tag-color);\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .empty-layout[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n padding: 16px;\n}\n.custom-layout .layout-canvas .form-areas[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-start;\n}\n.custom-layout .layout-canvas .form-areas .form-area[data-v-fe093284] {\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .form-areas .form-area.area-vertical[data-v-fe093284] {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n /* 统一表单项宽度 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank {\n width: 100%;\n /* 统一输入控件宽度 */\n /* 特殊控件的额外处理 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-date-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input-number,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-textarea,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-cascader,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-tree-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-time-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-color-picker {\n width: 100% !important;\n max-width: 100% !important;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] .n-form-item {\n flex: 1;\n min-width: 200px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n\n/* 拖拽状态 */\n.area-ghost[data-v-fe093284],\n.field-ghost[data-v-fe093284] {\n opacity: 0.5;\n background: var(--n-primary-color-suppl);\n border: 2px dashed var(--n-primary-color);\n transform: rotate(2deg);\n}\n\n/* 响应式 */\n@media (max-width: 1024px) {\n.custom-layout .toolbar-content[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n flex-direction: column;\n}\n}\n@media (max-width: 768px) {\n.custom-layout .design-tools[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n padding: 12px;\n}\n.custom-layout .custom-area[data-v-fe093284] {\n padding: 12px;\n min-height: 100px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n grid-template-columns: repeat(2, 1fr);\n}\n}"],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"file":"C_Form-CX-7xsz3.css","names":[],"sources":["../src/components/C_Form/layouts/Default/index.vue?vue&type=style&index=0&scoped=3422ba86&lang.css","../src/components/C_Form/layouts/Inline/index.vue?vue&type=style&index=0&scoped=067214c3&lang.scss","../src/components/C_Form/layouts/Grid/index.vue?vue&type=style&index=0&scoped=a7a655a4&lang.scss","../src/components/C_Form/layouts/Card/index.vue?vue&type=style&index=0&scoped=e4d182af&lang.scss","../src/components/C_Form/layouts/Tabs/index.vue?vue&type=style&index=0&scoped=330de51f&lang.scss","../src/components/C_Form/layouts/Steps/index.vue?vue&type=style&index=0&scoped=20345bf3&lang.scss","../src/components/C_Form/layouts/Dynamic/index.vue?vue&type=style&index=0&scoped=a70ec0bb&lang.scss","../src/components/C_Form/layouts/Custom/index.vue?vue&type=style&index=0&scoped=fe093284&lang.scss"],"sourcesContent":["/* unplugin-vue-components disabled */\n.c-form-default[data-v-3422ba86] {\r\n width: 100%;\n}\r\n","/* unplugin-vue-components disabled *//* Inline 布局样式 */\n.c-form-inline[data-v-067214c3] {\n width: 100%;\n min-height: 0;\n transition: all 0.3s ease;\n}\n.c-form-inline-item[data-v-067214c3] {\n min-width: 0;\n transition: all 0.3s ease;\n}\n\n/* 确保内部所有表单组件都占满容器宽度 */\n.c-form-inline-item[data-v-067214c3] .n-form-item {\n width: 100%;\n margin-bottom: 0;\n}\n.c-form-inline-item[data-v-067214c3] .n-form-item-blank {\n width: 100%;\n}\n.c-form-inline-item[data-v-067214c3] .n-input,\n.c-form-inline-item[data-v-067214c3] .n-select,\n.c-form-inline-item[data-v-067214c3] .n-date-picker,\n.c-form-inline-item[data-v-067214c3] .n-time-picker,\n.c-form-inline-item[data-v-067214c3] .n-input-number,\n.c-form-inline-item[data-v-067214c3] .n-cascader,\n.c-form-inline-item[data-v-067214c3] .n-color-picker,\n.c-form-inline-item[data-v-067214c3] .n-auto-complete,\n.c-form-inline-item[data-v-067214c3] .n-tree-select {\n width: 100% !important;\n}\n\n/* 单选框和复选框组保持自然宽度 */\n.c-form-inline-item[data-v-067214c3] .n-radio-group,\n.c-form-inline-item[data-v-067214c3] .n-checkbox-group {\n width: 100%;\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n/* 开关组件居左对齐 */\n.c-form-inline-item[data-v-067214c3] .n-switch {\n width: auto;\n}\n\n/* ================= 对齐方式样式增强 ================= */\n/* 当容器使用 center 对齐时,确保表单项也居中 */\n.c-form-inline[style*=\"justify-content: center\"] .c-form-inline-item[data-v-067214c3] {\n text-align: center;\n}\n\n/* 当容器使用 end 对齐时,确保表单项也右对齐 */\n.c-form-inline[style*=\"justify-content: flex-end\"] .c-form-inline-item[data-v-067214c3] {\n text-align: right;\n}\n\n/* 当容器使用 start 对齐时,确保表单项左对齐 */\n.c-form-inline[style*=\"justify-content: flex-start\"] .c-form-inline-item[data-v-067214c3] {\n text-align: left;\n}\n\n/* ================= 响应式设计 ================= */\n/* 移动设备 - 改为垂直布局 */\n@media (max-width: 768px) {\n.c-form-inline[data-v-067214c3] {\n flex-direction: column !important;\n gap: 12px !important;\n justify-content: flex-start !important;\n}\n.c-form-inline-item[data-v-067214c3] {\n width: 100% !important;\n text-align: left !important;\n}\n}\n/* 小屏手机 */\n@media (max-width: 480px) {\n.c-form-inline[data-v-067214c3] {\n gap: 8px !important;\n}\n}","/* unplugin-vue-components disabled *//* Grid 布局样式 */\n/* 变量定义 */\n.c-grid-layout[data-v-a7a655a4] {\n width: 100%;\n /* 配置面板 */\n /* 网格容器 */\n /* 统计信息 */\n}\n.c-grid-layout .config-panel[data-v-a7a655a4] {\n margin-bottom: 1rem;\n}\n.c-grid-layout .config-panel .config-header[data-v-a7a655a4] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n font-weight: 500;\n margin-bottom: 8px;\n}\n.c-grid-layout .config-panel .config-controls[data-v-a7a655a4] {\n display: flex;\n gap: 1rem;\n flex-wrap: wrap;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-a7a655a4] {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item .config-label[data-v-a7a655a4] {\n font-size: 0.875rem;\n white-space: nowrap;\n min-width: 3rem;\n}\n.c-grid-layout .grid-container[data-v-a7a655a4] {\n width: 100%;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4] {\n /* 进场动画 */\n animation: fadeInUp-a7a655a4 0.3s ease-out both;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(1) {\n animation-delay: 0.05s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(2) {\n animation-delay: 0.1s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(3) {\n animation-delay: 0.15s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(4) {\n animation-delay: 0.2s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(5) {\n animation-delay: 0.25s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(6) {\n animation-delay: 0.3s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(7) {\n animation-delay: 0.35s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(8) {\n animation-delay: 0.4s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(9) {\n animation-delay: 0.45s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(10) {\n animation-delay: 0.5s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(11) {\n animation-delay: 0.55s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(12) {\n animation-delay: 0.6s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(13) {\n animation-delay: 0.65s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(14) {\n animation-delay: 0.7s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(15) {\n animation-delay: 0.75s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(16) {\n animation-delay: 0.8s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(17) {\n animation-delay: 0.85s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(18) {\n animation-delay: 0.9s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(19) {\n animation-delay: 0.95s;\n}\n.c-grid-layout .grid-container .grid-item[data-v-a7a655a4]:nth-child(20) {\n animation-delay: 1s;\n}\n.c-grid-layout .grid-stats[data-v-a7a655a4] {\n margin-top: 1rem;\n font-size: 0.875rem;\n opacity: 0.8;\n}\n\n/* 动画定义 */\n@keyframes fadeInUp-a7a655a4 {\nfrom {\n opacity: 0;\n transform: translateY(10px) scale(0.95);\n}\nto {\n opacity: 1;\n transform: translateY(0) scale(1);\n}\n}\n/* 表单控件统一宽度 */\n[data-v-a7a655a4] .n-form-item .n-form-item-blank {\n /* 统一所有表单控件的宽度 */\n}\n[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-input,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-input-number,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-select,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-date-picker,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-time-picker,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-cascader,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-tree-select,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-auto-complete,[data-v-a7a655a4] .n-form-item .n-form-item-blank .n-dynamic-tags {\n width: 100% !important;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.c-grid-layout .config-panel .config-controls[data-v-a7a655a4] {\n flex-direction: column;\n gap: 0.75rem;\n}\n.c-grid-layout .config-panel .config-controls .config-item[data-v-a7a655a4] {\n justify-content: space-between;\n}\n.c-grid-layout .grid-container[data-v-a7a655a4] .n-grid {\n gap: 0.5rem !important;\n}\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-a7a655a4] {\n padding: 0.125rem;\n}\n.c-grid-layout .grid-stats[data-v-a7a655a4] {\n margin-top: 0.75rem;\n font-size: 0.875rem;\n}\n}\n@media (max-width: 480px) {\n.c-grid-layout .config-panel[data-v-a7a655a4] {\n margin-bottom: 0.75rem;\n}\n}\n/* 主题适配 */\n[data-v-a7a655a4] .n-card {\n --n-border-radius: 8px;\n}\n[data-v-a7a655a4] .n-input-number {\n --n-width: 100%;\n}\n\n/* 暗色主题 */\n@media (prefers-color-scheme: dark) {\n.c-grid-layout .grid-container .grid-item .item-wrapper[data-v-a7a655a4]:hover {\n background-color: rgba(255, 255, 255, 0.05);\n}\n}","/* unplugin-vue-components disabled *//* Card 布局样式 */\n.c-form-card[data-v-e4d182af] {\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: 1.5rem;\n}\n\n/* ================= 配置面板 ================= */\n.layout-config-panel[data-v-e4d182af] {\n margin-bottom: 0;\n}\n.config-controls[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1.5rem;\n flex-wrap: wrap;\n}\n@media (max-width: 768px) {\n.config-controls[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.config-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n font-size: 0.875rem;\n}\n@media (max-width: 768px) {\n.config-item[data-v-e4d182af] {\n justify-content: space-between;\n}\n}\n\n/* ================= 表单内容区域 ================= */\n.form-content[data-v-e4d182af] {\n display: flex;\n}\n.layout-single[data-v-e4d182af],\n.layout-vertical[data-v-e4d182af] {\n flex-direction: column;\n}\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: row;\n flex-wrap: wrap;\n}\n.layout-horizontal .group-card[data-v-e4d182af] {\n flex: 1;\n min-width: 0;\n}\n@media (max-width: 1200px) {\n.layout-horizontal[data-v-e4d182af] {\n flex-direction: column;\n}\n}\n\n/* ================= 卡片样式 ================= */\n.single-card[data-v-e4d182af],\n.group-card[data-v-e4d182af] {\n transition: all 300ms cubic-bezier(0.4, 0, 0.2, 1);\n border-left-width: 4px;\n}\n.single-card[data-v-e4d182af],\n.basic-card[data-v-e4d182af] {\n border-left-color: #3b82f6;\n}\n.contact-card[data-v-e4d182af] {\n border-left-color: #22c55e;\n}\n.preferences-card[data-v-e4d182af] {\n border-left-color: #a855f7;\n}\n.group-card.collapsed .card-content[data-v-e4d182af] {\n display: none;\n}\n\n/* ================= 卡片头部 ================= */\n.card-header[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n}\n.header-info[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 1rem;\n}\n.card-icon[data-v-e4d182af] {\n width: 2.5rem;\n height: 2.5rem;\n padding: 0.5rem;\n border-radius: 0.5rem;\n background: linear-gradient(to bottom right, #3b82f6, #9333ea);\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.125rem;\n}\n.header-text h3[data-v-e4d182af] {\n font-size: 1.125rem;\n font-weight: 600;\n margin: 0 0 0.25rem;\n}\n.header-text p[data-v-e4d182af] {\n font-size: 0.875rem;\n color: #6b7280;\n margin: 0;\n}\n.header-actions[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.field-stats[data-v-e4d182af] {\n display: flex;\n gap: 0.5rem;\n}\n\n/* ================= 卡片内容 ================= */\n.card-content[data-v-e4d182af] {\n padding-top: 1rem;\n}\n.progress-section[data-v-e4d182af] {\n padding-bottom: 1rem;\n}\n\n/* ================= 操作面板 ================= */\n.action-content[data-v-e4d182af] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 1.5rem;\n}\n@media (max-width: 768px) {\n.action-content[data-v-e4d182af] {\n flex-direction: column;\n align-items: stretch;\n gap: 1rem;\n}\n}\n.status-summary[data-v-e4d182af] {\n display: flex;\n gap: 1.5rem;\n align-items: center;\n flex-wrap: wrap;\n}\n.status-item[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n}\n.status-item .label[data-v-e4d182af] {\n font-size: 0.875rem;\n}\n.progress-display[data-v-e4d182af] {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n min-width: 8rem;\n}\n.action-buttons[data-v-e4d182af] {\n display: flex;\n gap: 0.75rem;\n}","/* unplugin-vue-components disabled *//* Tabs 布局样式 */\n.c-form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.single-panel[data-v-330de51f] {\n width: 100%;\n}\n.tabs-container[data-v-330de51f] {\n width: 100%;\n}\n.form-tabs[data-v-330de51f] {\n width: 100%;\n}\n.tab-icon[data-v-330de51f] {\n font-size: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.tab-header[data-v-330de51f] {\n margin-bottom: 16px;\n padding-bottom: 12px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.tab-description[data-v-330de51f] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n opacity: 0.8;\n}\n.tab-form-items[data-v-330de51f] {\n width: 100%;\n}\n.tab-empty[data-v-330de51f] {\n padding: 40px 0;\n}\n.tabs-actions[data-v-330de51f] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-border-color);\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.tabs-actions[data-v-330de51f] {\n margin-top: 12px;\n padding-top: 8px;\n}\n.tabs-actions[data-v-330de51f] .n-space {\n flex-wrap: wrap;\n}\n}","/* unplugin-vue-components disabled *//* Steps 布局样式 */\n.c-form-steps[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.single-panel[data-v-20345bf3] {\n width: 100%;\n}\n.steps-container[data-v-20345bf3] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n.steps-indicator[data-v-20345bf3] {\n padding: 24px;\n border-radius: 8px;\n}\n.steps-content[data-v-20345bf3] {\n min-height: 400px;\n}\n.step-panel[data-v-20345bf3] {\n animation: fadeIn-20345bf3 0.3s ease-in-out;\n}\n.step-header[data-v-20345bf3] {\n margin-bottom: 24px;\n padding-bottom: 16px;\n border-bottom: 1px solid var(--n-border-color);\n}\n.step-title[data-v-20345bf3] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 600;\n}\n.step-description[data-v-20345bf3] {\n margin: 0;\n font-size: 14px;\n line-height: 1.5;\n}\n.step-form-items[data-v-20345bf3] {\n width: 100%;\n}\n.steps-actions[data-v-20345bf3] {\n margin-top: 24px;\n padding-top: 16px;\n border-top: 1px solid var(--n-border-color);\n}\n@keyframes fadeIn-20345bf3 {\nfrom {\n opacity: 0;\n transform: translateY(8px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 垂直步骤样式 */\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: row;\n align-items: flex-start;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n flex-shrink: 0;\n width: 250px;\n margin-right: 24px;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-content[data-v-20345bf3] {\n flex: 1;\n}\n\n/* 响应式设计 */\n@media (max-width: 768px) {\n.steps-container[data-v-20345bf3]:has(.steps-indicator:deep(.n-steps--vertical)) {\n flex-direction: column !important;\n}\n.steps-container:has(.steps-indicator:deep(.n-steps--vertical)) .steps-indicator[data-v-20345bf3] {\n width: 100% !important;\n margin-right: 0 !important;\n margin-bottom: 16px;\n}\n}\n@media (prefers-reduced-motion: reduce) {\n.step-panel[data-v-20345bf3] {\n animation: none !important;\n}\n}","/* unplugin-vue-components disabled *//* Dynamic 布局样式 */\n.c-form-dynamic[data-v-a70ec0bb] {\n width: 100%;\n}\n.dynamic-controls[data-v-a70ec0bb],\n.dynamic-controls-fallback[data-v-a70ec0bb] {\n margin-bottom: 16px;\n}\n.dynamic-stats[data-v-a70ec0bb] {\n margin-top: 16px;\n padding-top: 12px;\n border-top: 1px solid var(--n-divider-color);\n}\n.dynamic-item-wrapper[data-v-a70ec0bb] {\n position: relative;\n transition: all 0.3s ease;\n animation: fadeInUp-a70ec0bb 0.3s ease-out;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n border: 1px dashed var(--n-color-primary);\n border-radius: 6px;\n padding: 8px;\n background-color: var(--n-color-primary-suppl);\n}\n.max-fields-config[data-v-a70ec0bb] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n}\n.max-fields-config span[data-v-a70ec0bb] {\n font-weight: 500;\n white-space: nowrap;\n color: var(--n-text-color-2);\n}\n@keyframes fadeInUp-a70ec0bb {\nfrom {\n opacity: 0;\n transform: translateY(10px);\n}\nto {\n opacity: 1;\n transform: translateY(0);\n}\n}\n/* 响应式设计 */\n@media (max-width: 768px) {\n.dynamic-controls[data-v-a70ec0bb],\n .dynamic-controls-fallback[data-v-a70ec0bb] {\n margin-bottom: 12px;\n}\n.dynamic-stats[data-v-a70ec0bb] {\n margin-top: 12px;\n}\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n padding: 6px;\n}\n.max-fields-config[data-v-a70ec0bb] {\n margin-top: 8px;\n}\n}\n/* 辅助功能 */\n@media (prefers-reduced-motion: reduce) {\n.dynamic-item-wrapper[data-v-a70ec0bb] {\n animation: none !important;\n transition: none !important;\n}\n}\n@media (prefers-contrast: high) {\n.dynamic-item-wrapper.is-dynamic-field[data-v-a70ec0bb] {\n border-width: 2px;\n border-color: currentColor;\n}\n}","/* unplugin-vue-components disabled *//* Custom 布局样式 */\n.custom-layout .toolbar-card[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .toolbar-card .toolbar-content .mode-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .stats-section[data-v-fe093284],\n.custom-layout .toolbar-card .toolbar-content .actions-section[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n.custom-layout .toolbar-card .toolbar-content .section-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item[data-v-fe093284] {\n text-align: center;\n min-width: 60px;\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-value[data-v-fe093284] {\n display: block;\n font-size: 18px;\n font-weight: 600;\n color: var(--n-primary-color);\n}\n.custom-layout .toolbar-card .toolbar-content .stat-item .stat-label[data-v-fe093284] {\n font-size: 12px;\n opacity: 0.7;\n margin-top: 4px;\n}\n.custom-layout .design-panel[data-v-fe093284] {\n margin-bottom: 16px;\n}\n.custom-layout .design-panel .design-tools[data-v-fe093284] {\n display: flex;\n gap: 24px;\n flex-wrap: wrap;\n}\n.custom-layout .design-panel .design-tools .tool-group[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .design-panel .design-tools .tool-group .group-label[data-v-fe093284] {\n font-size: 14px;\n font-weight: 500;\n margin-right: 4px;\n}\n.custom-layout .layout-canvas[data-v-fe093284] {\n min-height: 200px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n border: 2px dashed var(--n-border-color);\n border-radius: 8px;\n padding: 16px;\n background: var(--n-body-color);\n}\n.custom-layout .layout-canvas .canvas-hint[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n text-align: center;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content h3[data-v-fe093284] {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.custom-layout .layout-canvas .canvas-hint .hint-content p[data-v-fe093284] {\n margin: 0;\n opacity: 0.7;\n font-size: 14px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n}\n.custom-layout .layout-canvas .custom-area[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 8px;\n background: var(--n-card-color);\n padding: 16px;\n min-height: 120px;\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .custom-area .area-header[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid var(--n-divider-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info[data-v-fe093284] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284] {\n font-weight: 600;\n font-size: 14px;\n cursor: pointer;\n padding: 2px 6px;\n border-radius: 4px;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .area-title[data-v-fe093284]:hover {\n background: var(--n-button-color-hover);\n color: var(--n-primary-color);\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-info .title-input[data-v-fe093284] {\n min-width: 120px;\n max-width: 200px;\n}\n.custom-layout .layout-canvas .custom-area .area-header .area-controls[data-v-fe093284] {\n display: flex;\n gap: 4px;\n}\n.custom-layout .layout-canvas .custom-area .area-fields[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 60px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 60px;\n border: 2px dashed var(--n-border-color);\n border-radius: 6px;\n font-size: 14px;\n opacity: 0.6;\n transition: all 0.2s ease;\n background: var(--n-body-color);\n margin-top: 8px;\n}\n.custom-layout .layout-canvas .custom-area .area-drop-zone[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n opacity: 1;\n}\n.custom-layout .layout-canvas .custom-area.area-horizontal .area-fields[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .custom-area.area-grid .area-fields[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-body-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n}\n.custom-layout .layout-canvas .field-item[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-item .field-preview[data-v-fe093284] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-label[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-item .field-preview .field-type[data-v-fe093284] {\n font-size: 11px;\n opacity: 0.6;\n background: var(--n-tag-color);\n padding: 2px 6px;\n border-radius: 4px;\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .field-pool[data-v-fe093284] {\n margin-top: 16px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 12px;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284] {\n border: 1px solid var(--n-border-color);\n border-radius: 6px;\n background: var(--n-card-color);\n padding: 12px;\n min-height: 40px;\n cursor: move;\n transition: all 0.2s ease;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.custom-layout .layout-canvas .field-pool .pool-field[data-v-fe093284]:hover {\n border-color: var(--n-primary-color);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-name[data-v-fe093284] {\n font-size: 13px;\n font-weight: 500;\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.custom-layout .layout-canvas .field-pool .pool-field .field-type-tag[data-v-fe093284] {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 4px;\n background: var(--n-tag-color);\n flex-shrink: 0;\n}\n.custom-layout .layout-canvas .empty-layout[data-v-fe093284] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 120px;\n padding: 16px;\n}\n.custom-layout .layout-canvas .form-areas[data-v-fe093284] {\n display: flex;\n flex-wrap: wrap;\n gap: 16px;\n align-items: flex-start;\n}\n.custom-layout .layout-canvas .form-areas .form-area[data-v-fe093284] {\n flex: 1;\n min-width: 250px;\n}\n.custom-layout .layout-canvas .form-areas .form-area.area-vertical[data-v-fe093284] {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n /* 统一表单项宽度 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank {\n width: 100%;\n /* 统一输入控件宽度 */\n /* 特殊控件的额外处理 */\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-date-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-input-number,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-textarea,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-cascader,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-tree-select,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-time-picker,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-color-picker {\n width: 100% !important;\n max-width: 100% !important;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-radio-group,\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items[data-v-fe093284] .n-form-item .n-form-item-blank .n-checkbox-group {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] {\n flex-direction: row;\n flex-wrap: wrap;\n gap: 12px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-horizontal[data-v-fe093284] .n-form-item {\n flex: 1;\n min-width: 200px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 16px;\n}\n.custom-layout .layout-canvas .form-areas .form-area .area-form-items.layout-grid[data-v-fe093284] .n-form-item {\n width: 100%;\n}\n\n/* 拖拽状态 */\n.area-ghost[data-v-fe093284],\n.field-ghost[data-v-fe093284] {\n opacity: 0.5;\n background: var(--n-primary-color-suppl);\n border: 2px dashed var(--n-primary-color);\n transform: rotate(2deg);\n}\n\n/* 响应式 */\n@media (max-width: 1024px) {\n.custom-layout .toolbar-content[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas .areas-container[data-v-fe093284] {\n flex-direction: column;\n}\n}\n@media (max-width: 768px) {\n.custom-layout .design-tools[data-v-fe093284] {\n flex-direction: column;\n gap: 12px;\n}\n.custom-layout .layout-canvas.design-mode[data-v-fe093284] {\n padding: 12px;\n}\n.custom-layout .custom-area[data-v-fe093284] {\n padding: 12px;\n min-height: 100px;\n}\n.custom-layout .layout-canvas .field-pool .pool-fields-grid[data-v-fe093284] {\n grid-template-columns: repeat(2, 1fr);\n}\n}"],"mappings":"AAAA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA"}