@para-ui/core 5.0.1 → 5.0.3-beta.8

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 (94) hide show
  1. package/FieldForm/component.json +22 -1
  2. package/FormItemGroup/component.json +72 -0
  3. package/Menu/component.json +9 -2
  4. package/es/Checkbox/index.js +26 -24
  5. package/es/CheckboxGroup/index.css +1 -1
  6. package/es/CheckboxGroup/style/index.css +1 -1
  7. package/es/ExpressionInput/Popup.js +11 -4
  8. package/es/ExpressionInput/useExpressionInput.js +40 -37
  9. package/es/FieldForm/ErrorList.js +9 -8
  10. package/es/FieldForm/FieldFormItem/ItemHolder.d.ts +2 -0
  11. package/es/FieldForm/FieldFormItem/ItemHolder.js +78 -68
  12. package/es/FieldForm/FieldFormItem/index.d.ts +3 -0
  13. package/es/FieldForm/FieldFormItem/index.js +131 -120
  14. package/es/FieldForm/Form.d.ts +3 -1
  15. package/es/FieldForm/Form.js +54 -50
  16. package/es/FieldForm/compactControlMarker.d.ts +18 -0
  17. package/es/FieldForm/compactControlMarker.js +5 -0
  18. package/es/FieldForm/component.json +22 -1
  19. package/es/FieldForm/context.d.ts +3 -1
  20. package/es/FieldForm/context.js +6 -5
  21. package/es/FieldForm/index.css +1 -1
  22. package/es/FieldForm/index.d.ts +2 -0
  23. package/es/FieldForm/index.js +13 -9
  24. package/es/FieldForm/interface.d.ts +9 -0
  25. package/es/FieldForm/style/index.css +1 -1
  26. package/es/FieldForm/util.d.ts +14 -0
  27. package/es/FieldForm/util.js +41 -17
  28. package/es/FormItemGroup/component.json +72 -0
  29. package/es/FormItemGroup/index.css +1 -0
  30. package/es/FormItemGroup/index.d.ts +14 -0
  31. package/es/FormItemGroup/index.js +27 -0
  32. package/es/FormItemGroup/style/css.js +1 -0
  33. package/es/FormItemGroup/style/index.css +1 -0
  34. package/es/FormItemGroup/style/index.js +1 -0
  35. package/es/HelperText/index.js +15 -13
  36. package/es/Menu/component.json +9 -2
  37. package/es/Menu/index.css +1 -1
  38. package/es/Menu/interface.d.ts +2 -0
  39. package/es/Menu/style/index.css +1 -1
  40. package/es/Menu/verticalMenuList.js +378 -361
  41. package/es/RadioGroup/index.css +1 -1
  42. package/es/RadioGroup/style/index.css +1 -1
  43. package/es/RangeInput/index.js +60 -60
  44. package/es/Switch/index.js +30 -28
  45. package/es/Tag/TagGroup.js +29 -32
  46. package/es/Tag/index.js +5 -5
  47. package/es/index.d.ts +2 -0
  48. package/es/index.js +175 -169
  49. package/lib/Checkbox/index.js +1 -1
  50. package/lib/CheckboxGroup/index.css +1 -1
  51. package/lib/CheckboxGroup/style/index.css +1 -1
  52. package/lib/ExpressionInput/Popup.js +1 -1
  53. package/lib/ExpressionInput/useExpressionInput.js +1 -1
  54. package/lib/FieldForm/ErrorList.js +1 -1
  55. package/lib/FieldForm/FieldFormItem/ItemHolder.d.ts +2 -0
  56. package/lib/FieldForm/FieldFormItem/ItemHolder.js +1 -1
  57. package/lib/FieldForm/FieldFormItem/index.d.ts +3 -0
  58. package/lib/FieldForm/FieldFormItem/index.js +1 -1
  59. package/lib/FieldForm/Form.d.ts +3 -1
  60. package/lib/FieldForm/Form.js +1 -1
  61. package/lib/FieldForm/compactControlMarker.d.ts +18 -0
  62. package/lib/FieldForm/compactControlMarker.js +2 -0
  63. package/lib/FieldForm/component.json +22 -1
  64. package/lib/FieldForm/context.d.ts +3 -1
  65. package/lib/FieldForm/context.js +1 -1
  66. package/lib/FieldForm/index.css +1 -1
  67. package/lib/FieldForm/index.d.ts +2 -0
  68. package/lib/FieldForm/index.js +1 -1
  69. package/lib/FieldForm/interface.d.ts +9 -0
  70. package/lib/FieldForm/style/index.css +1 -1
  71. package/lib/FieldForm/util.d.ts +14 -0
  72. package/lib/FieldForm/util.js +1 -1
  73. package/lib/FormItemGroup/component.json +72 -0
  74. package/lib/FormItemGroup/index.css +1 -0
  75. package/lib/FormItemGroup/index.d.ts +14 -0
  76. package/lib/FormItemGroup/index.js +2 -0
  77. package/lib/FormItemGroup/style/css.js +1 -0
  78. package/lib/FormItemGroup/style/index.css +1 -0
  79. package/lib/FormItemGroup/style/index.js +1 -0
  80. package/lib/HelperText/index.js +1 -1
  81. package/lib/Menu/component.json +9 -2
  82. package/lib/Menu/index.css +1 -1
  83. package/lib/Menu/interface.d.ts +2 -0
  84. package/lib/Menu/style/index.css +1 -1
  85. package/lib/Menu/verticalMenuList.js +1 -1
  86. package/lib/RadioGroup/index.css +1 -1
  87. package/lib/RadioGroup/style/index.css +1 -1
  88. package/lib/RangeInput/index.js +1 -1
  89. package/lib/Switch/index.js +1 -1
  90. package/lib/Tag/TagGroup.js +1 -1
  91. package/lib/Tag/index.js +1 -1
  92. package/lib/index.d.ts +2 -0
  93. package/lib/index.js +1 -1
  94. package/package.json +14 -1
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @description Switch/Checkbox 类矮控件的 compact 间距自动识别标记约定。
3
+ *
4
+ * `FieldForm.Item` 在未显式指定 `spacing` 时,会检查唯一直接子节点是否为矮控件,
5
+ * 自动落 compact 档(见 `util.ts` 的 `isCompactControlChild`)。原生 `Switch`/`Checkbox`
6
+ * 靠类型引用直接比对即可命中;但消费方常见做法是自己再包一层组件(如加 label 布局),
7
+ * 包完之后子节点的类型引用就不再等于 `@para-ui/core` 原生组件,直接比对会失效。
8
+ *
9
+ * 为此原生 `Switch`/`Checkbox` 会在自身函数上挂这个标记,消费方若对它们做二次封装,
10
+ * 只需把标记原样透传到自己的包装组件上(`WrapperComponent[PARA_UI_COMPACT_CONTROL_MARKER] = true`),
11
+ * 包装组件即可继续被识别为矮控件——不需要 `@para-ui/core` 反过来认识具体消费方的包装组件。
12
+ *
13
+ * 独立成文件是为了避免循环依赖:这个标记同时被 `Switch`/`Checkbox`(声明"我是矮控件")
14
+ * 和 `FieldForm/util.ts`(读取标记做判断,同时也直接引用 Switch/Checkbox 做引用相等比对)
15
+ * 引用,若把标记定义放进 `FieldForm/util.ts` 会形成 `Switch → FieldForm/util.ts → Switch`
16
+ * 的循环引用。
17
+ */
18
+ export declare const PARA_UI_COMPACT_CONTROL_MARKER = "__paraUiCompactControl__";
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _="__paraUiCompactControl__";exports.PARA_UI_COMPACT_CONTROL_MARKER=_;
2
+ //# sourceMappingURL=compactControlMarker.js.map
@@ -61,6 +61,20 @@
61
61
  "children": {
62
62
  "type": "ReactNode",
63
63
  "description": "FieldForm 接收任意 ReactNode(包括 FieldForm.Item / Button type=submit / 自定义包装);**但每个 Item 的 child 必须是支持 value/onChange/error/disabled 的自定义组件**(TextField / Select / Checkbox / Switch / DatePicker / InputNumber 等);**不可用原生 input/textarea/select/button — 会触发 React non-boolean-attribute warning**(因 cloneElement 注入 error={false} 给原生 DOM 元素时,React 视 error 为 DOM attr → 报错);见 childrenContract.FormItem"
64
+ },
65
+ "itemDecorator": {
66
+ "type": "ItemDecorator",
67
+ "objectShape": {
68
+ "getItemClassName": {
69
+ "type": "(meta: ItemDecoratorMeta) => string | undefined | false",
70
+ "description": "按字段 namePath/path 返回要合并到该 FieldForm.Item 根节点的 className;返回 undefined/''/false 时不追加,不影响其他状态 class(is-error/is-success 等)"
71
+ },
72
+ "renderItemExtra": {
73
+ "type": "(meta: ItemDecoratorMeta) => ReactNode",
74
+ "description": "按字段 namePath/path 在该 FieldForm.Item 根节点内追加渲染内容(如 diff 命中原因说明);渲染在根节点内、内部间距容器之外,不影响 has-spacing/has-helper-text 的 20px 间距机制"
75
+ }
76
+ },
77
+ "description": "Form 级一次注册、所有子孙 FieldForm.Item 自动生效的字段装饰扩展点;meta.namePath 来自 rc-field-form 的 renderMeta.name(真实的、经过 List 等上下文处理后的最终路径),meta.path 是预拼接字符串(数组下标用方括号,如 'ubr.list[0].x');未传 name 的 Item 固定拿到 { namePath: [], path: '' };典型用法:`<FieldForm itemDecorator={{ getItemClassName: (meta) => isHit(meta.path) ? 'is-hit' : undefined, renderItemExtra: (meta) => isHit(meta.path) ? <span>命中原因</span> : null }}>`"
64
78
  }
65
79
  },
66
80
  "childrenContract": {
@@ -137,7 +151,9 @@
137
151
  "把'仅使用 FieldForm 本身'解读为'整个文件不能 import TextField/Button'(见 interpretivePriority.resolution)",
138
152
  "字段过多不分组",
139
153
  "忽略异步校验",
140
- "在 mount 后修改 initialValues prop(应用 form.setFieldsValue;initialValues 仅 mount 时灌入)"
154
+ "在 mount 后修改 initialValues prop(应用 form.setFieldsValue;initialValues 仅 mount 时灌入)",
155
+ "在 itemDecorator.getItemClassName/renderItemExtra 回调体内调用 useContext/useXxx 等 Hook(回调运行在 ItemHolder 渲染过程中,不在业务组件自身的渲染调用栈里,会违反 Hooks 规则;应在业务组件顶层用 Hook 取数后,用 useMemo 包成闭包再传入 itemDecorator)",
156
+ "期望 itemDecorator 对 noStyle 的 FieldForm.Item 生效(noStyle 不渲染独立 wrapper 节点,没有可挂载 className/额外内容的位置)"
141
157
  ],
142
158
  "events": {
143
159
  "onFinish": {
@@ -187,6 +203,11 @@
187
203
  "issue": "rules 中的 validator 函数签名必须返回 Promise(rc-field-form 约定),不是同步返回",
188
204
  "wrong": "rules={[{ validator: (_, val) => val > 0 ? true : false }]} // 同步返回 boolean 不被识别",
189
205
  "right": "rules={[{ validator: (_, val) => val > 0 ? Promise.resolve() : Promise.reject('必须大于 0') }]}"
206
+ },
207
+ {
208
+ "issue": "itemDecorator 的 getItemClassName/renderItemExtra 回调不能在函数体内调用 React Hook",
209
+ "wrong": "itemDecorator={{ getItemClassName: (meta) => { const hit = useFieldHighlight(meta.path); return hit ? 'is-hit' : undefined; } }} // 在回调体内调用 Hook,违反 Hooks 规则",
210
+ "right": "const highlightMap = useFieldHighlightMap();\nconst itemDecorator = useMemo(() => ({ getItemClassName: (meta) => (highlightMap[meta.path] ? 'is-hit' : undefined) }), [highlightMap]);\n<FieldForm itemDecorator={itemDecorator}>"
190
211
  }
191
212
  ],
192
213
  "mapping": {
@@ -1,7 +1,7 @@
1
1
  import { default as React, FC, ReactElement, Key, ReactNode } from 'react';
2
2
  import { FormProviderProps as RcFormProviderProps } from 'rc-field-form/lib/FormContext';
3
3
  import { Meta } from 'rc-field-form/lib/interface';
4
- import { FormLabelAlign } from './interface';
4
+ import { FormLabelAlign, ItemDecorator } from './interface';
5
5
  import { FormInstance, FormLayout } from './Form';
6
6
  import { ValidateStatus } from './FieldFormItem';
7
7
  export declare const FormProvider: FC<RcFormProviderProps>;
@@ -18,6 +18,8 @@ export interface FormContextProps {
18
18
  prefixCls?: string;
19
19
  disabled?: boolean;
20
20
  size?: 'small' | 'medium' | 'large';
21
+ spacing: 'normal' | 'compact';
22
+ itemDecorator?: ItemDecorator;
21
23
  }
22
24
  export declare const FormContext: React.Context<FormContextProps>;
23
25
  /** rc-field-form 在销毁字段时会传入带 destroy 标记的 meta(官方 Meta 类型未声明此字段) */
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../_virtual/jsx-runtime.js"),t=require("react"),n=require("rc-field-form"),i=require("rc-util/lib/omit"),c=e=>{const o=i(e,["prefixCls"]);return r.jsxRuntimeExports.jsx(n.FormProvider,{...o})},m=t.createContext({labelAlign:"left",layout:"vertical",itemRef:()=>()=>{}}),s=t.createContext(null),l=t.createContext({});exports.FormContext=m;exports.FormItemInputContext=l;exports.FormProvider=c;exports.NoStyleItemContext=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../_virtual/jsx-runtime.js"),t=require("react"),n=require("rc-field-form"),i=require("rc-util/lib/omit"),c=e=>{const o=i(e,["prefixCls"]);return r.jsxRuntimeExports.jsx(n.FormProvider,{...o})},m=t.createContext({labelAlign:"left",layout:"vertical",spacing:"normal",itemRef:()=>()=>{}}),s=t.createContext(null),l=t.createContext({});exports.FormContext=m;exports.FormItemInputContext=l;exports.FormProvider=c;exports.NoStyleItemContext=s;
2
2
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- @charset "UTF-8";.paraui-v4-field-form-item{vertical-align:top}.paraui-v4-field-form-item.is-horizontal{display:flex}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label{margin-right:8px;padding:0;flex-shrink:0;text-align:end}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-left{text-align:start}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-multiline .paraui-v4-field-form-label-comp{display:inline-block}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label-comp{width:100%;display:inline-flex;align-items:center;margin:0;max-width:100%;min-height:32px}.paraui-v4-field-form-content{flex:1}.paraui-v4-field-form-content.has-spacing{margin-bottom:20px}.paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-control-input{display:flex;align-items:center;min-height:32px}.paraui-v4-field-form-control-input-content{width:100%}.paraui-v4-field-form-control-input-content .paraui-v4-radio-group>.radio-group-content .radio-item-box{margin-bottom:0}.paraui-v4-field-form-control-input-content .text-field-error-text{display:none}.paraui-v4-field-form-helper-text{line-height:20px;word-break:break-all}.paraui-v4-field-form-helper-text .is-warning>.paraui-v4-helper-text.paraui-v4-helper-text-error{color:#ff9326}
1
+ @charset "UTF-8";.paraui-v4-field-form-item{vertical-align:top}.paraui-v4-field-form-item.is-horizontal{display:flex}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label{flex-shrink:0;padding:0;margin-right:8px;text-align:end}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-left{text-align:start}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-multiline .paraui-v4-field-form-label-comp{display:inline-block}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label-comp{display:inline-flex;align-items:center;width:100%;max-width:100%;min-height:32px;margin:0}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-content.has-spacing{margin-bottom:16px}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-control-input{min-height:24px}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-helper-text{min-height:16px;line-height:16px}.paraui-v4-field-form-content{flex:1}.paraui-v4-field-form-content.has-spacing{margin-bottom:20px}.paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-control-input{display:flex;align-items:center;min-height:32px}.paraui-v4-field-form-control-input-content{width:100%}.paraui-v4-field-form-control-input-content .paraui-v4-radio-group>.radio-group-content .radio-item-box{margin-bottom:0}.paraui-v4-field-form-control-input-content .text-field-error-text:not(.paraui-v4-helper-text-force-visible),.paraui-v4-field-form-control-input-content .select-error-text:not(.paraui-v4-helper-text-force-visible){display:none}.paraui-v4-field-form-helper-text{line-height:20px;word-break:break-all}.paraui-v4-field-form-helper-text .is-warning>.paraui-v4-helper-text.paraui-v4-helper-text-error{color:#ff9326}
@@ -19,3 +19,5 @@ declare const FieldForm: CompoundedComponent;
19
19
  export type { ErrorListProps, FieldFormInstance, FieldFormItemProps, FieldFormListFieldData, FieldFormListOperation, FieldFormListProps, FieldFormProps, Rule, RuleObject, RuleRender };
20
20
  export default FieldForm;
21
21
  export type * from './interface';
22
+ export { joinNamePath } from './util';
23
+ export { PARA_UI_COMPACT_CONTROL_MARKER } from './compactControlMarker';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("./context.js"),t=require("./Form.js"),o=require("./ErrorList.js"),u=require("./FieldFormItem/index.js"),s=require("./FormList.js"),i=require("./hooks/useFormInstance.js");;/* empty css */const c=require("./hooks/useForm.js"),n=require("rc-field-form"),e=t.default;e.Item=u.default;e.List=s.default;e.ErrorList=o.default;e.useForm=c.default;e.useFormInstance=i.default;e.useWatch=n.useWatch;e.Provider=r.FormProvider;exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const r=require("./context.js"),t=require("./Form.js"),o=require("./ErrorList.js"),u=require("./FieldFormItem/index.js"),i=require("./FormList.js"),s=require("./hooks/useFormInstance.js");;/* empty css */const n=require("./util.js"),c=require("./compactControlMarker.js"),a=require("./hooks/useForm.js"),l=require("rc-field-form"),e=t.default;e.Item=u.default;e.List=i.default;e.ErrorList=o.default;e.useForm=a.default;e.useFormInstance=s.default;e.useWatch=l.useWatch;e.Provider=r.FormProvider;exports.joinNamePath=n.joinNamePath;exports.PARA_UI_COMPACT_CONTROL_MARKER=c.PARA_UI_COMPACT_CONTROL_MARKER;exports.default=e;
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,11 @@
1
+ import { ReactNode } from 'react';
1
2
  export type { InternalNamePath, NamePath, Store, StoreValue } from 'rc-field-form/lib/interface';
2
3
  export type FormLabelAlign = 'left' | 'right';
4
+ export interface ItemDecoratorMeta {
5
+ namePath: (string | number)[];
6
+ path: string;
7
+ }
8
+ export interface ItemDecorator {
9
+ getItemClassName?: (meta: ItemDecoratorMeta) => string | undefined | false;
10
+ renderItemExtra?: (meta: ItemDecoratorMeta) => ReactNode;
11
+ }
@@ -1 +1 @@
1
- .paraui-v4-field-form-item{vertical-align:top}.paraui-v4-field-form-item.is-horizontal{display:flex}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label{margin-right:8px;padding:0;flex-shrink:0;text-align:end}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-left{text-align:start}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-multiline .paraui-v4-field-form-label-comp{display:inline-block}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label-comp{width:100%;display:inline-flex;align-items:center;margin:0;max-width:100%;min-height:32px}.paraui-v4-field-form-content{flex:1}.paraui-v4-field-form-content.has-spacing{margin-bottom:20px}.paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-control-input{display:flex;align-items:center;min-height:32px}.paraui-v4-field-form-control-input-content{width:100%}.paraui-v4-field-form-control-input-content .paraui-v4-radio-group>.radio-group-content .radio-item-box{margin-bottom:0}.paraui-v4-field-form-control-input-content .text-field-error-text{display:none}.paraui-v4-field-form-helper-text{line-height:20px;word-break:break-all}.paraui-v4-field-form-helper-text .is-warning>.paraui-v4-helper-text.paraui-v4-helper-text-error{color:#ff9326}
1
+ .paraui-v4-field-form-item{vertical-align:top}.paraui-v4-field-form-item.is-horizontal{display:flex}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label{flex-shrink:0;padding:0;margin-right:8px;text-align:end}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-left{text-align:start}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label.is-multiline .paraui-v4-field-form-label-comp{display:inline-block}.paraui-v4-field-form-item.is-horizontal .paraui-v4-field-form-label-comp{display:inline-flex;align-items:center;width:100%;max-width:100%;min-height:32px;margin:0}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-content.has-spacing{margin-bottom:16px}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-field-form-control-input{min-height:24px}.paraui-v4-field-form-item.is-spacing-compact .paraui-v4-helper-text{min-height:16px;line-height:16px}.paraui-v4-field-form-content{flex:1}.paraui-v4-field-form-content.has-spacing{margin-bottom:20px}.paraui-v4-field-form-content.has-spacing.has-helper-text{margin-bottom:0}.paraui-v4-field-form-control-input{display:flex;align-items:center;min-height:32px}.paraui-v4-field-form-control-input-content{width:100%}.paraui-v4-field-form-control-input-content .paraui-v4-radio-group>.radio-group-content .radio-item-box{margin-bottom:0}.paraui-v4-field-form-control-input-content .text-field-error-text:not(.paraui-v4-helper-text-force-visible),.paraui-v4-field-form-control-input-content .select-error-text:not(.paraui-v4-helper-text-force-visible){display:none}.paraui-v4-field-form-helper-text{line-height:20px;word-break:break-all}.paraui-v4-field-form-helper-text .is-warning>.paraui-v4-helper-text.paraui-v4-helper-text-error{color:#ff9326}
@@ -13,9 +13,23 @@ export declare function toArray<T>(candidate?: T | T[] | false): T[];
13
13
  * @returns string
14
14
  */
15
15
  export declare function getFieldId(namePath: InternalNamePath, formName?: string): string | undefined;
16
+ /**
17
+ * 拼接 namePath 为 path 字符串,数组下标用方括号
18
+ * @example joinNamePath(['ubr', 'list', 0, 'x']) => 'ubr.list[0].x'
19
+ */
20
+ export declare function joinNamePath(namePath: (string | number)[]): string;
16
21
  /**
17
22
  * 通过 meta 或传递的 validateStatus 获取合并后的状态
18
23
  */
19
24
  export declare function getStatus<DefaultValue>(errors: ReactNode[], warnings: ReactNode[], meta: Meta, defaultValidateStatus: ValidateStatus | DefaultValue, hasFeedback?: boolean, validateStatus?: ValidateStatus): ValidateStatus | DefaultValue;
20
25
  export declare function isReactComponent(element: React.ReactElement): boolean;
21
26
  export declare function isDOMElement(element: React.ReactElement): boolean;
27
+ /**
28
+ * 判断表单项的直接子节点是否为 Switch/Checkbox 这类矮控件(含 React.memo 包裹场景,
29
+ * 以及消费方对 Switch/Checkbox 做二次封装、但透传了 PARA_UI_COMPACT_CONTROL_MARKER
30
+ * 标记的包装组件),用于在调用方未显式传 spacing 时自动选中 compact 档,替代此前
31
+ * 完全依赖手写 opt-in 的方式。仅识别单一直接子节点;children 为多个节点、或非合法
32
+ * element(如纯文本)时一律判定为不匹配,交由默认 normal 档处理,避免对组合型字段
33
+ * 做出错误猜测。
34
+ */
35
+ export declare function isCompactControlChild(children: ReactNode): boolean;
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),u=["parentNode"],f="field-form_item";function c(e){return e===void 0||e===!1?[]:Array.isArray(e)?e:[e]}function g(e,r){if(!e.length)return;const t=e.join("_");return r?`${r}_${t}`:u.includes(t)?`${f}_${t}`:t}function a(e,r,t,n,l,o){let i=n;return o!==void 0?i=o:t.validating?i="validating":e.length?i="error":r.length?i="warning":(t.touched||l&&t.validated)&&(i="success"),i}function d(e){return s.isValidElement(e)&&(typeof e.type=="function"||typeof e.type=="object")}exports.getFieldId=g;exports.getStatus=a;exports.isReactComponent=d;exports.toArray=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react"),s=require("../Switch/index.js"),c=require("../Checkbox/index.js"),f=require("./compactControlMarker.js"),a=["parentNode"],d="field-form_item";function C(e){return e===void 0||e===!1?[]:Array.isArray(e)?e:[e]}function y(e,r){if(!e.length)return;const t=e.join("_");return r?`${r}_${t}`:a.includes(t)?`${d}_${t}`:t}function h(e){return e.reduce((r,t)=>typeof t=="number"?`${r}[${t}]`:r?`${r}.${t}`:String(t),"")}function m(e,r,t,i,u,l){let n=i;return l!==void 0?n=l:t.validating?n="validating":e.length?n="error":r.length?n="warning":(t.touched||u&&t.validated)&&(n="success"),n}function _(e){return o.isValidElement(e)&&(typeof e.type=="function"||typeof e.type=="object")}const g=Symbol.for("react.memo");function p(e){return e!==null&&typeof e=="object"&&e.$$typeof===g?e.type:e}const A=[s.Switch,c.Checkbox];function M(e){const r=o.Children.toArray(e);if(r.length!==1)return!1;const t=r[0];if(!o.isValidElement(t))return!1;const i=p(t.type);return A.includes(i)?!0:typeof i=="function"&&i[f.PARA_UI_COMPACT_CONTROL_MARKER]===!0}exports.getFieldId=y;exports.getStatus=m;exports.isCompactControlChild=M;exports.isReactComponent=_;exports.joinNamePath=h;exports.toArray=C;
2
2
  //# sourceMappingURL=util.js.map
@@ -0,0 +1,72 @@
1
+ {
2
+ "name": "FormItemGroup",
3
+ "category": "Layout",
4
+ "description": "表单项堆叠容器:官方推荐的字段间纵向/横向间距方案。字段自带的 20px 间距基线(helper-text 占位)原本要外层手动挂 `.paraui-v4-form` 类名才会生效,容易被忘记导致字段在 flex 布局下零间距;FormItemGroup 把这条基线内置在自己身上,不用再记类名。同时内部 gap 只认自身 CSS 变量(!important),裸写 style.gap 不会生效,用来替代业务/AI 随手在字段外层加 gap 导致的间距叠加问题(基线已经占了 20px,外层再加 gap 会翻倍)。一个组件同时兜住「漏挂基线类→零间距」和「叠加 gap→翻倍」两个方向。",
5
+ "semantic": {
6
+ "intent": ["表单字段堆叠", "受控间距容器", "间距基线兜底"],
7
+ "useCases": [
8
+ "多个 TextField/Select/Switch 等字段手写堆叠(最常见场景,不依赖 Form/FieldForm)",
9
+ "多个 FormItem/FieldFormItem 纵向堆叠(direction='vertical',默认)",
10
+ "少量字段并排展示(direction='horizontal')",
11
+ "需要在字段之间加统一间距的场景(gap 属性)"
12
+ ],
13
+ "riskLevel": "low"
14
+ },
15
+ "variants": {
16
+ "vertical": {
17
+ "meaning": "默认值。`display:flex; flex-direction:column`,字段自上而下堆叠。"
18
+ },
19
+ "horizontal": {
20
+ "meaning": "`display:flex; flex-direction:row`,字段并排展示。"
21
+ }
22
+ },
23
+ "states": ["default"],
24
+ "idealProps": {
25
+ "direction": {
26
+ "type": "enum",
27
+ "values": ["vertical", "horizontal"],
28
+ "default": "vertical",
29
+ "description": "排列方向。表单场景基本用默认的 'vertical'。"
30
+ },
31
+ "gap": {
32
+ "type": "number",
33
+ "default": 0,
34
+ "description": "字段间距(px),默认 0——不额外加间距,完全依赖字段自身已有的间距(如 helper-text 占位)。真正需要更大间距时才传这个值,例如 gap={32}。"
35
+ },
36
+ "children": {
37
+ "type": "ReactNode",
38
+ "description": "子元素,通常是若干个 FormItem / FieldFormItem。"
39
+ },
40
+ "className": {
41
+ "type": "string",
42
+ "description": "外层根 div 的类名。"
43
+ },
44
+ "style": {
45
+ "type": "React.CSSProperties",
46
+ "description": "外层根 div 的内联样式。注意其中的 gap 不会生效(会被组件内部 !important 规则覆盖),间距请用 gap 属性。"
47
+ }
48
+ },
49
+ "do": [
50
+ "字段纵向堆叠用 <FormItemGroup> 替代手写 <div style={{ display:'flex', flexDirection:'column', gap: 16 }}>",
51
+ "用 <FormItemGroup> 包住字段就自动拿到 20px 间距基线,不需要再额外记着给外层容器挂 `.paraui-v4-form` 类名",
52
+ "确实需要比字段自带间距更大的间距时,用 gap 属性:<FormItemGroup gap={32}>",
53
+ "字段并排展示用 direction='horizontal'"
54
+ ],
55
+ "dont": [
56
+ "不要在 style 里直接写 gap,例如 <FormItemGroup style={{ gap: 16 }}>——会被内部规则忽略,且不会有任何视觉效果,请改用 gap 属性",
57
+ "不要在没有堆叠需求的单个字段外面套一层 FormItemGroup,纯粹是多余包裹",
58
+ "确实需要密集布局下零间距(如表格内联编辑),仍可以用更具体的选择器覆盖 min-height(这条基线规则没有 !important),不需要绕开 FormItemGroup"
59
+ ],
60
+ "events": {},
61
+ "typescriptPitfalls": [
62
+ {
63
+ "issue": "style.gap 不会生效,是设计上的行为而不是 bug",
64
+ "wrong": "<FormItemGroup style={{ gap: 16 }}>...</FormItemGroup> // 不生效,且不会报 TS 错误,容易被误以为生效了",
65
+ "right": "<FormItemGroup gap={16}>...</FormItemGroup> // 通过 gap 属性设置,实际生效"
66
+ }
67
+ ],
68
+ "mapping": {
69
+ "realComponent": "FormItemGroup",
70
+ "adapter": null
71
+ }
72
+ }
@@ -0,0 +1 @@
1
+ @charset "UTF-8";.paraui-v4-form-item-group{display:flex;gap:var(--paraui-v4-form-item-group-gap, 0)!important}.paraui-v4-form-item-group.paraui-v4-form-item-group-vertical{flex-direction:column}.paraui-v4-form-item-group.paraui-v4-form-item-group-horizontal{flex-direction:row}.paraui-v4-form-item-group .paraui-v4-helper-text{min-height:20px}
@@ -0,0 +1,14 @@
1
+ import { default as React, FunctionComponent, ReactNode } from 'react';
2
+ export interface FormItemGroupProps {
3
+ /** 样式class */
4
+ className?: string;
5
+ /** style(其中的 gap 不会生效,请用 gap 属性设置间距) */
6
+ style?: React.CSSProperties;
7
+ /** 排列方向,默认 'vertical'(纵向堆叠,最常见的表单场景) */
8
+ direction?: 'vertical' | 'horizontal';
9
+ /** 字段间距(px),默认 0——即完全依赖字段自身已有的间距,不额外加间距 */
10
+ gap?: number;
11
+ children?: ReactNode;
12
+ }
13
+ declare const FormItemGroup: FunctionComponent<FormItemGroupProps>;
14
+ export default FormItemGroup;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const a=require("../_virtual/jsx-runtime.js"),l=require("clsx"),r=require("../GlobalContext/constant.js");;/* empty css */const m=t=>{const{className:o,style:e,children:s,direction:i="vertical",gap:p=0,...u}=t;process.env.NODE_ENV!=="production"&&e&&"gap"in e&&console.warn("[FormItemGroup] style.gap 不会生效,组件内部的 gap 规则带 !important,只认 gap 属性。请使用 <FormItemGroup gap={number}> 设置间距。");const n={...e,[`--${r.$prefixCls}-form-item-group-gap`]:`${p}px`};return a.jsxRuntimeExports.jsx("div",{className:l(`${r.$prefixCls}-form-item-group ${r.$prefixCls}-form-item-group-${i}`,o),style:n,...u,children:s})};exports.default=m;
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ import './index.css';
@@ -0,0 +1 @@
1
+ .paraui-v4-form-item-group{display:flex;gap:var(--paraui-v4-form-item-group-gap, 0) !important}.paraui-v4-form-item-group.paraui-v4-form-item-group-vertical{flex-direction:column}.paraui-v4-form-item-group.paraui-v4-form-item-group-horizontal{flex-direction:row}.paraui-v4-form-item-group .paraui-v4-helper-text{min-height:20px}
@@ -0,0 +1 @@
1
+ import './index.css';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const a=require("../_virtual/jsx-runtime.js"),s=require("../GlobalContext/constant.js");;/* empty css */const c=n=>{const{className:r,style:u,error:t=!1,hideErrorDom:l=!1,helperText:i}=n;if(l===null||!t&&l)return null;const o=()=>{let e=`${s.$prefixCls}-helper-text`;return r&&(e+=` ${r}`),t&&(e+=` ${s.$prefixCls}-helper-text-error`),e};return a.jsxRuntimeExports.jsx("p",{className:o(),style:u,children:i})};exports.default=c;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});require('./index.css');const a=require("../_virtual/jsx-runtime.js"),x=require("react"),t=require("../GlobalContext/constant.js"),f=require("../FieldForm/context.js");;/* empty css */const m=e=>{const{className:l,style:o,error:s=!1,helperText:i}=e,{isFormItemInput:u}=x.useContext(f.FormItemInputContext),n=e.hideErrorDom!==void 0?e.hideErrorDom:u?null:!1;if(n===null||!s&&n)return null;const c=()=>{let r=`${t.$prefixCls}-helper-text`;return l&&(r+=` ${l}`),s&&(r+=` ${t.$prefixCls}-helper-text-error`),e.hideErrorDom===!1&&(r+=` ${t.$prefixCls}-helper-text-force-visible`),r};return a.jsxRuntimeExports.jsx("p",{className:c(),style:o,children:i})};exports.default=m;
2
2
  //# sourceMappingURL=index.js.map
@@ -116,12 +116,14 @@
116
116
  "配置 shrinkOthers 以提升用户查找效率",
117
117
  "使用 icon 辅助识别菜单项",
118
118
  "**菜单数据通过 menuListProps.list 传入**(不是顶层 list prop):`<Menu menuListProps={{ list: menuData }} />`,menuData 是 MenuChildrenProps[] 数组",
119
- "MenuChildrenProps 核心字段(src/Menu/interface.ts:25-63):`label: ReactNode`(菜单名),`path: string`(路径,与 selectMenu 比对高亮),`icon: ReactNode`(图标),`children: MenuChildrenProps[]`(子菜单),`type: 'redirect'|'router'|'iframe'|'snack'|'snackPage'`(菜单类型),`href: string`(a 标签地址),`badge: ReactNode`(标记)"
119
+ "MenuChildrenProps 核心字段(src/Menu/interface.ts:25-63):`label: ReactNode`(菜单名),`path: string`(路径,与 selectMenu 比对高亮),`icon: ReactNode`(图标),`children: MenuChildrenProps[]`(子菜单),`type: 'redirect'|'router'|'iframe'|'snack'|'snackPage'`(菜单类型),`href: string`(a 标签地址),`badge: ReactNode`(标记)",
120
+ "`group: boolean`(仅一级生效,需同时有 children):把该项渲染成不可点击的纯文本分组小标题,children 常驻展开且按顶层菜单项样式渲染(不缩进,可配 icon)。示例:`{ label: '路由管理', group: true, children: [{ label: '路由规则', path: '/router/rule' }, { label: '静态资源', path: '/router/static' }] }`"
120
121
  ],
121
122
  "dont": [
122
123
  "在菜单项中放置非导航类的复杂交互组件",
123
124
  "过度使用动态生成的菜单导致性能问题",
124
- "把菜单数据传给顶层 list prop——Menu 没有顶层 list prop,数据必须通过 menuListProps.list 传入"
125
+ "把菜单数据传给顶层 list prop——Menu 没有顶层 list prop,数据必须通过 menuListProps.list 传入",
126
+ "不要在非一级菜单项或没有 children 的项上设置 group: true——不满足条件会被忽略,自动退化为原有渲染(普通叶子节点 / 普通折叠子菜单),不会报错但也不会生效"
125
127
  ],
126
128
  "events": {
127
129
  "onClickMenu": {
@@ -171,6 +173,11 @@
171
173
  "issue": "color prop 只有 'deep' 和 'light' 两个有效值(ColorType),传其他字符串 TS 报错",
172
174
  "wrong": "color='dark' // TS2322: Type '\"dark\"' is not assignable to type 'ColorType'",
173
175
  "right": "color='deep' // 合法值: 'deep'(深色主题) | 'light'(浅色主题)"
176
+ },
177
+ {
178
+ "issue": "group 生效需同时满足两个前提:该项是一级菜单(level 1)且自身有 children;在二级菜单项或没有 children 的项上设置 group: true 会被静默忽略,自动退化为原渲染,容易被误以为是 bug",
179
+ "wrong": "// 二级菜单项上设置 group,不会生效\n{ label: '一级', children: [{ label: '二级', group: true, children: [...] }] }",
180
+ "right": "// group 只能设在一级菜单项上\n{ label: '路由管理', group: true, children: [{ label: '路由规则', path: '/router/rule' }] }"
174
181
  }
175
182
  ],
176
183
  "mapping": {
@@ -1 +1 @@
1
- @charset "UTF-8";.paraui-v4-vertical-menu{width:100%;height:100%;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;font-size:14px;font-weight:400}.paraui-v4-vertical-menu>.menu-logo{width:100%;display:inline-block;padding:20px 16px 0;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;font-size:14px;font-weight:400}.paraui-v4-vertical-menu>.menu-logo.menu-logo-shrink{padding:20px 0 0}.paraui-v4-vertical-menu>.vertical-menu-list{overflow:hidden;height:100%;position:relative}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top{position:absolute;top:0;left:0;width:100%;display:flex;justify-content:center;align-items:center}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top>span{width:24px;height:24px;display:flex;justify-content:center;align-items:center;cursor:pointer}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top>span>svg{transform:rotate(180deg);font-size:18px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box{height:100%;overflow:hidden}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll{transition:all .3s}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item:last-child{margin-bottom:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{cursor:pointer;display:flex;border-radius:4px;text-decoration:none}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon{width:20px;margin-right:10px;display:flex;justify-content:center;align-items:center}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{font-size:18px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{font-size:14px;width:100%;white-space:nowrap;font-weight:400;display:flex;align-items:center;overflow:hidden}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-label{overflow:hidden;text-overflow:ellipsis}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-badge{height:16px;min-width:16px;color:#fff;background:#2e65e6;border-radius:8px;margin-left:10px;margin-right:10px;display:flex;align-items:center;justify-content:center;font-size:12px;padding:0 4px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow{width:16px;display:flex;justify-content:center;align-items:center}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{font-size:16px;transition:all .3s}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.opacity-pos-svg{opacity:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon{opacity:0;line-height:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-open>.vertical-menu-list-item-content>.menu-item-arrow>svg{transform:rotate(180deg)}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom{position:absolute;bottom:0;left:0;width:100%;display:flex;justify-content:center;align-items:center}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom>span{width:24px;height:24px;display:flex;justify-content:center;align-items:center;cursor:pointer}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom>span>svg{font-size:18px}.paraui-v4-vertical-menu>.footer-expansion{display:flex;align-items:center;width:100%;padding-bottom:16px;white-space:nowrap;height:48px;padding-left:16px}.paraui-v4-vertical-menu>.footer-expansion>.icon{display:flex;align-items:center;justify-content:center;cursor:pointer;width:32px;height:32px;border-radius:4px}.paraui-v4-vertical-menu>.footer-expansion>.icon svg{font-size:24px}.paraui-v4-vertical-menu>.footer-expansion>.version{font-size:14px;width:calc(100% - 32px);text-align:right;padding-right:20px;padding-left:12px}.paraui-v4-vertical-menu>.footer-expansion.footer-expansion-shrink{justify-content:center;padding-left:0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box{height:100%;overflow:hidden}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink{display:flex;justify-content:center;align-items:center;position:relative;cursor:pointer;margin-bottom:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:last-child{margin-bottom:0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:after{content:"";position:absolute;width:100%;height:100%;left:0;top:0;z-index:1}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{display:flex;justify-content:center;align-items:center;border-radius:4px;position:relative}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{position:relative;font-size:20px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{position:absolute;height:16px;min-width:16px;color:#fff;background:#2e65e6;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;padding:0 1px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list{padding:24px 16px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item{margin-bottom:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.li-collapse>div>div>.vertical-menu-list-item:first-child{margin-top:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{height:40px;line-height:40px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list{padding:24px 0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{width:40px;height:40px;line-height:40px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{left:20px;top:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list{padding:24px 12px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item{margin-bottom:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.li-collapse>div>div>.vertical-menu-list-item:first-child{margin-top:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{height:36px;line-height:36px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list{padding:24px 0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{width:36px;height:36px;line-height:36px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{left:18px;top:1px}.paraui-v4-vertical-menu-item-popper{padding-left:8px;z-index:1500}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content{box-shadow:1px 1px 10px 2px #d4dae366;border-radius:4px;border:1px solid rgba(212,218,227,.4);padding:4px 0;max-height:320px;overflow-y:auto;overflow-x:hidden}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item{position:relative}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{width:200px;padding:0 10px;display:flex;cursor:pointer;text-decoration:none;height:30px;line-height:30px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:after{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1;content:""}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon{width:16px;display:none;justify-content:center;align-items:center;margin-right:12px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{font-size:20px;position:relative}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg:after{position:absolute;left:0;top:0;width:100%;height:100%;content:"";z-index:1}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{font-size:14px;width:100%;font-weight:400;white-space:nowrap;overflow:hidden;display:flex;align-items:center}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-label{overflow:hidden;text-overflow:ellipsis;flex:1}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-badge{height:16px;min-width:16px;color:#fff;background:#2e65e6;border-radius:8px;margin-left:10px;margin-right:10px;display:flex;align-items:center;justify-content:center;font-size:12px;padding:0 4px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{width:16px;display:flex;justify-content:center;align-items:center}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{font-size:16px;transition:all .3s;position:relative;transform:rotate(270deg)}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg:after{position:absolute;left:0;top:0;width:100%;height:100%;content:"";z-index:1}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.opacity-pos-svg{opacity:0}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{position:relative;z-index:10;opacity:0;line-height:0}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:hover>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-deep{background-color:#1c293c}.paraui-v4-vertical-menu-deep>.menu-logo{color:#fff}.paraui-v4-vertical-menu-deep>.menu-logo svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-top>span>svg,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-bottom>span>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-top>span:hover>svg,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-bottom>span:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover{background-color:#223666}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-last>.vertical-menu-list-item-content,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-retract>.vertical-menu-list-item-content{background-color:#223666}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon{background:#223666}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon svg{color:#fff}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon:hover svg{color:#2e65e6}.paraui-v4-vertical-menu-deep>.footer-expansion>.version{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:hover>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-light{background:#f7f8fa}.paraui-v4-vertical-menu-light>.menu-logo{color:#2e65e6}.paraui-v4-vertical-menu-light>.menu-logo svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-top>span>svg,.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-bottom>span>svg{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-top>span:hover>svg,.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-bottom>span:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover{background-color:#eaecf1}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{color:#5c6573}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon>svg{color:#5c6573}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-last>.vertical-menu-list-item-content,.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-retract>.vertical-menu-list-item-content{background-color:#eaecf1}.paraui-v4-vertical-menu-light>.footer-expansion>.icon{background:#eaecf1}.paraui-v4-vertical-menu-light>.footer-expansion>.icon svg{color:#1d2126}.paraui-v4-vertical-menu-light>.footer-expansion>.icon:hover svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.footer-expansion>.version{color:#1d2126}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:hover>.vertical-menu-list-item-shrink-content{background-color:#eaecf1}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content{background-color:#eaecf1;color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content{background-color:#eaecf1;color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content{background-color:#1d2126e6}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{width:inherit;height:inherit;line-height:inherit;padding:2px 12px}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:none}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:transparent}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:transparent}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:flex;margin-left:8px}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content{background-color:#1c293c;color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:#223666}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:#223666}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content{background-color:#1d2126e6}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{width:inherit;height:inherit;line-height:inherit;padding:2px 12px}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:none}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:transparent}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:transparent}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:flex;margin-left:8px}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content{background-color:#fff;color:#1d2126}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:hover{background-color:#eaecf1}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{color:#1d2126}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#1d2126}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{color:#5c6573}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#5c6573}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:#eaecf1}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:#eaecf1}
1
+ @charset "UTF-8";.paraui-v4-vertical-menu{display:flex;flex-direction:column;width:100%;height:100%;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;font-size:14px;font-weight:400}.paraui-v4-vertical-menu>.menu-logo{display:inline-block;width:100%;padding:20px 16px 0;font-family:-apple-system,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Microsoft YaHei,Source Han Sans SC,Noto Sans CJK SC,WenQuanYi Micro Hei,sans-serif;font-size:14px;font-weight:400}.paraui-v4-vertical-menu>.menu-logo.menu-logo-shrink{padding:20px 0 0}.paraui-v4-vertical-menu>.vertical-menu-list{position:relative;height:100%;overflow:hidden}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;width:100%}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top>span{display:flex;align-items:center;justify-content:center;width:24px;height:24px;cursor:pointer}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-top>span>svg{font-size:18px;transform:rotate(180deg)}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box{height:100%;overflow:hidden}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll{transition:all .3s}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item:last-child{margin-bottom:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{display:flex;text-decoration:none;cursor:pointer;border-radius:4px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon{display:flex;align-items:center;justify-content:center;width:20px;margin-right:10px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{font-size:18px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{display:flex;align-items:center;width:100%;overflow:hidden;font-size:14px;font-weight:400;white-space:nowrap}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-label{overflow:hidden;text-overflow:ellipsis}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-badge{display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-right:10px;margin-left:10px;font-size:12px;color:#fff;background:#2e65e6;border-radius:8px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content>.menu-item-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow{display:flex;align-items:center;justify-content:center;width:16px}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{font-size:16px;transition:all .3s}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.opacity-pos-svg{opacity:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon{line-height:0;opacity:0}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-open>.vertical-menu-list-item-content>.menu-item-arrow>svg{transform:rotate(180deg)}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-group>.vertical-menu-list-group-label{height:20px;padding:0 12px;margin:12px 0 4px;overflow:hidden;font-size:12px;line-height:20px;text-overflow:ellipsis;letter-spacing:.02em;white-space:nowrap;cursor:default;-webkit-user-select:none;user-select:none}.paraui-v4-vertical-menu>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-group:first-child>.vertical-menu-list-group-label{margin-top:0}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom{position:absolute;bottom:0;left:0;display:flex;align-items:center;justify-content:center;width:100%}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom>span{display:flex;align-items:center;justify-content:center;width:24px;height:24px;cursor:pointer}.paraui-v4-vertical-menu>.vertical-menu-list>.scroll-bottom>span>svg{font-size:18px}.paraui-v4-vertical-menu>.footer-expansion{display:flex;align-items:center;width:100%;height:48px;padding-bottom:16px;padding-left:16px;white-space:nowrap}.paraui-v4-vertical-menu>.footer-expansion>.icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;cursor:pointer;border-radius:4px}.paraui-v4-vertical-menu>.footer-expansion>.icon svg{font-size:24px}.paraui-v4-vertical-menu>.footer-expansion>.version{width:calc(100% - 32px);padding-right:20px;padding-left:12px;font-size:14px;text-align:right}.paraui-v4-vertical-menu>.footer-expansion.footer-expansion-shrink{justify-content:center;padding-left:0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box{height:100%;overflow:hidden}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink{position:relative;display:flex;align-items:center;justify-content:center;margin-bottom:8px;cursor:pointer}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:last-child{margin-bottom:0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:after{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;content:""}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{position:relative;display:flex;align-items:center;justify-content:center;border-radius:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{position:relative;font-size:20px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{position:absolute;display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 1px;font-size:12px;color:#fff;background:#2e65e6;border-radius:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list{padding:24px 16px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item{margin-bottom:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.li-collapse>div>div>.vertical-menu-list-item:first-child{margin-top:8px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{height:40px;line-height:40px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list{padding:24px 0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{width:40px;height:40px;line-height:40px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-large.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{top:4px;left:20px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list{padding:24px 12px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item{margin-bottom:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.li-collapse>div>div>.vertical-menu-list-item:first-child{margin-top:4px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content{height:36px;line-height:36px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list{padding:24px 0}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{width:36px;height:36px;line-height:36px}.paraui-v4-vertical-menu.paraui-v4-vertical-menu-small.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>.menu-item-shrink-badge{top:1px;left:18px}.paraui-v4-vertical-menu-item-popper{z-index:1500;padding-left:8px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content{max-height:320px;padding:4px 0;overflow-x:hidden;overflow-y:auto;border:1px solid rgba(212,218,227,.4);border-radius:4px;box-shadow:1px 1px 10px 2px #d4dae366}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item{position:relative}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{display:flex;width:200px;height:30px;padding:0 10px;line-height:30px;text-decoration:none;cursor:pointer}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:after{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;content:""}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon{display:none;align-items:center;justify-content:center;width:16px;margin-right:12px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{position:relative;font-size:20px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg:after{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;content:""}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{display:flex;align-items:center;width:100%;overflow:hidden;font-size:14px;font-weight:400;white-space:nowrap}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-label{flex:1;overflow:hidden;text-overflow:ellipsis}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-badge{display:flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;margin-right:10px;margin-left:10px;font-size:12px;color:#fff;background:#2e65e6;border-radius:8px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content>.menu-item-badge>span{height:16px;line-height:16px;transform:scale(.8)}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:flex;align-items:center;justify-content:center;width:16px}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{position:relative;font-size:16px;transition:all .3s;transform:rotate(270deg)}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg:after{position:absolute;top:0;left:0;z-index:1;width:100%;height:100%;content:""}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.opacity-pos-svg{opacity:0}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{position:relative;z-index:10;line-height:0;opacity:0}.paraui-v4-vertical-menu-item-popper>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:hover>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-deep{background-color:#1c293c}.paraui-v4-vertical-menu-deep>.menu-logo{color:#fff}.paraui-v4-vertical-menu-deep>.menu-logo svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-top>span>svg,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-bottom>span>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-top>span:hover>svg,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.scroll-bottom>span:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover{background-color:#223666}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-last>.vertical-menu-list-item-content,.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-retract>.vertical-menu-list-item-content{background-color:#223666}.paraui-v4-vertical-menu-deep>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-group-label{color:#ffffff4d}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon{background:#223666}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon svg{color:#fff}.paraui-v4-vertical-menu-deep>.footer-expansion>.icon:hover svg{color:#2e65e6}.paraui-v4-vertical-menu-deep>.footer-expansion>.version{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:hover>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{color:#fff}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-deep.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content{background-color:#223666}.paraui-v4-vertical-menu-light{background:#f7f8fa}.paraui-v4-vertical-menu-light>.menu-logo{color:#2e65e6}.paraui-v4-vertical-menu-light>.menu-logo svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-top>span>svg,.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-bottom>span>svg{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-top>span:hover>svg,.paraui-v4-vertical-menu-light>.vertical-menu-list>.scroll-bottom>span:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content:hover{background-color:#eaecf1}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-icon>svg{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-content{color:#1d2126}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>svg{color:#5c6573}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon>svg{color:#5c6573}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item>.vertical-menu-list-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-last>.vertical-menu-list-item-content,.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item.vertical-menu-list-item-select-retract>.vertical-menu-list-item-content{background-color:#eaecf1}.paraui-v4-vertical-menu-light>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-group-label{color:#a1a8b3}.paraui-v4-vertical-menu-light>.footer-expansion>.icon{background:#eaecf1}.paraui-v4-vertical-menu-light>.footer-expansion>.icon svg{color:#1d2126}.paraui-v4-vertical-menu-light>.footer-expansion>.icon:hover svg{color:#2e65e6}.paraui-v4-vertical-menu-light>.footer-expansion>.version{color:#1d2126}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink:hover>.vertical-menu-list-item-shrink-content{background-color:#eaecf1}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content{color:#2e65e6;background-color:#eaecf1}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-select>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content{color:#2e65e6;background-color:#eaecf1}.paraui-v4-vertical-menu-light.paraui-v4-vertical-menu-shrink>.vertical-menu-list>.vertical-menu-list-box>.vertical-menu-list-box-srcoll .vertical-menu-list-item-shrink.vertical-menu-list-item-shrink-hover>.vertical-menu-list-item-shrink-content>svg{color:#2e65e6}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content{background-color:#1d2126e6}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{width:inherit;height:inherit;padding:2px 12px;line-height:inherit}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:none}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:transparent}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:transparent}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:flex;margin-left:8px}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content{color:#fff;background-color:#1c293c}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:#223666}.paraui-v4-vertical-menu-item-popper-deep>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:#223666}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content{background-color:#1d2126e6}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content{width:inherit;height:inherit;padding:2px 12px;line-height:inherit}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#fff}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:none}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:transparent}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:transparent}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow{display:flex;margin-left:8px}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon{opacity:1}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#fff}.paraui-v4-vertical-menu-item-popper-light.paraui-v4-vertical-menu-item-popper-tooltip.paraui-v4-vertical-menu-item-popper-tooltip>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#ffffff80}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content{color:#1d2126;background-color:#fff}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content:hover{background-color:#eaecf1}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-icon>svg{color:#1d2126}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-content{color:#1d2126}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>svg{color:#5c6573}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon>svg{color:#5c6573}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content>.menu-item-arrow>.jump-icon:hover>svg{color:#2e65e6}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item>.menu-item-popper-content-item-content.menu-item-popper-content-item-hover{background-color:#eaecf1}.paraui-v4-vertical-menu-item-popper-light>.menu-item-popper-content>.menu-item-popper-content-item.menu-item-popper-content-item-select>.menu-item-popper-content-item-content{background-color:#eaecf1}
@@ -35,6 +35,8 @@ export interface MenuChildrenProps {
35
35
  component?: React.ComponentType | React.LazyExoticComponent<React.ComponentType>;
36
36
  /** 子菜单 */
37
37
  children?: MenuChildrenProps[];
38
+ /** 是否作为分组小标题展示(仅一级生效,需同时有 children):本身纯文本、不可点击、不参与折叠;children 常驻展开,并按顶层菜单项样式渲染(不缩进、可配 icon,无 icon 时按现有逻辑不占位) */
39
+ group?: boolean;
38
40
  /** 菜单最后一层所有上下级 一条线 */
39
41
  idMenuLast?: Record<string, string[]>;
40
42
  /** 当前选中菜单 */