@baishuyun/ui-base 2.0.0 → 2.2.0

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 (75) hide show
  1. package/dist/Card/{Card-DMXtN2pu.js → Card-CXULQNHa.js} +1 -1
  2. package/dist/Card/index.js +1 -1
  3. package/dist/CheckBox/CheckBox-Bu40TO29.js +84 -0
  4. package/dist/CheckBox/index.js +37 -0
  5. package/dist/ColorPicker/ColorPicker-CwFsihkL.js +207 -0
  6. package/dist/ColorPicker/index.js +1 -1
  7. package/dist/Icon/{Icon-C0bjP9U6.js → Icon-BlkVlKDd.js} +1 -1
  8. package/dist/Icon/index.js +1 -1
  9. package/dist/InputTag/index.js +2 -2
  10. package/dist/Modal/{Modal-C1LEJ6Y0.js → Modal-BZTEGGa0.js} +1 -1
  11. package/dist/Modal/index.js +1 -1
  12. package/dist/NotFoundContent/NotFoundContent-h0-oIXlk.js +6 -0
  13. package/dist/NotFoundContent/index.js +4 -0
  14. package/dist/Radio/index.js +105 -0
  15. package/dist/Segmented/Segmented-UgzW78Ey.js +75 -0
  16. package/dist/Segmented/index.js +4 -0
  17. package/dist/Select/Select-C3abXG27.js +855 -0
  18. package/dist/Select/index.js +6 -0
  19. package/dist/Tree/index.js +4 -0
  20. package/dist/Tree/utils/index.js +40 -0
  21. package/dist/components/CheckBox/CheckBox.d.ts +46 -0
  22. package/dist/components/CheckBox/CheckboxIcon.d.ts +6 -0
  23. package/dist/components/CheckBox/Group.d.ts +30 -0
  24. package/dist/components/CheckBox/constants.d.ts +11 -0
  25. package/dist/components/CheckBox/context/context.d.ts +8 -0
  26. package/dist/components/CheckBox/index.d.ts +9 -0
  27. package/dist/components/NotFoundContent/NotFoundContent.d.ts +9 -0
  28. package/dist/components/NotFoundContent/index.d.ts +1 -0
  29. package/dist/components/Radio/Group.d.ts +3 -0
  30. package/dist/components/Radio/Radio.d.ts +3 -0
  31. package/dist/components/Radio/constants.d.ts +6 -0
  32. package/dist/components/Radio/context/context.d.ts +9 -0
  33. package/dist/components/Radio/index.d.ts +7 -0
  34. package/dist/components/Radio/interface.d.ts +98 -0
  35. package/dist/components/Segmented/Segmented.d.ts +6 -0
  36. package/dist/components/Segmented/Segmented.type.d.ts +31 -0
  37. package/dist/components/Segmented/index.d.ts +2 -0
  38. package/dist/components/Select/HighlightText/HighlightText.d.ts +7 -0
  39. package/dist/components/Select/OptionList/MultOptionList/MultOptionList.d.ts +11 -0
  40. package/dist/components/Select/OptionList/OptionList.d.ts +6 -0
  41. package/dist/components/Select/OptionList/SingleOptionList/SingleOptionList.d.ts +11 -0
  42. package/dist/components/Select/OptionList/TreeOptionList/TreeOptionList.d.ts +21 -0
  43. package/dist/components/Select/OptionList/filter.d.ts +4 -0
  44. package/dist/components/Select/Select.d.ts +3 -0
  45. package/dist/components/Select/SelectInput/SelectInput.d.ts +10 -0
  46. package/dist/components/Select/SelectInput/SelectMultipleInput/OptionTag/OptionTag.d.ts +12 -0
  47. package/dist/components/Select/SelectInput/SelectMultipleInput/SelectMultipleInput.d.ts +8 -0
  48. package/dist/components/Select/SelectInput/SelectSingleInput/SelectSingleInput.d.ts +8 -0
  49. package/dist/components/Select/SelectInputSearch/SelectInputSearch.d.ts +6 -0
  50. package/dist/components/Select/SelectPanel/SelectPanel.d.ts +3 -0
  51. package/dist/components/Select/constants.d.ts +59 -0
  52. package/dist/components/Select/context/SelectContext.d.ts +52 -0
  53. package/dist/components/Select/index.d.ts +3 -0
  54. package/dist/components/Select/interface.d.ts +192 -0
  55. package/dist/components/Select/utils/fieldAccessor.d.ts +30 -0
  56. package/dist/components/Select/utils/tree.d.ts +2 -0
  57. package/dist/components/Tree/Tree.d.ts +6 -0
  58. package/dist/components/Tree/TreeNode/TreeNode.d.ts +21 -0
  59. package/dist/components/Tree/context/TreeContext.d.ts +15 -0
  60. package/dist/components/Tree/index.d.ts +3 -0
  61. package/dist/components/Tree/types/node.d.ts +12 -0
  62. package/dist/components/Tree/types/tree.d.ts +84 -0
  63. package/dist/components/Tree/utils/index.d.ts +11 -0
  64. package/dist/components/index.d.ts +5 -0
  65. package/dist/index.js +45 -35
  66. package/dist/style.css +1 -1
  67. package/dist/vendors/Tree-CCY2gtpG.js +225 -0
  68. package/dist/vendors/fuse.js-D1DCbUBb.js +1022 -0
  69. package/dist/vendors/index-ByQkttKA.js +59 -0
  70. package/dist/vendors/lodash-es-CZfJRWhO.js +305 -0
  71. package/dist/vendors/{simplebar-react-svBEsTVC.js → simplebar-react-Bf9Zq-21.js} +1 -1
  72. package/package.json +9 -7
  73. package/dist/ColorPicker/ColorPicker-CpPLwHR2.js +0 -253
  74. package/dist/vendors/fuse.js-l0sNRNKZ.js +0 -1
  75. package/dist/vendors/lodash-es-DP1ViCXF.js +0 -262
@@ -0,0 +1,192 @@
1
+ import { SelectType } from './constants';
2
+ export interface BaseOptionType {
3
+ /**
4
+ * @description 是否禁用 option
5
+ * @todo 预留,但并未实现该功能
6
+ */
7
+ disabled?: boolean;
8
+ title?: string;
9
+ [name: string]: any;
10
+ }
11
+ export interface DefaultOptionType extends BaseOptionType {
12
+ label?: string;
13
+ value?: string | number;
14
+ children?: Omit<DefaultOptionType, 'children'>[];
15
+ /**
16
+ * @description 是否是 [其他] 选项
17
+ */
18
+ isOther?: boolean;
19
+ /**
20
+ * @description 是否是系统字段
21
+ * @description 系统字段的颜色会比较突出,和其他字段仅文字样式的不同
22
+ */
23
+ systemField?: boolean;
24
+ }
25
+ export interface FieldNames {
26
+ label: string;
27
+ value: string;
28
+ children: string;
29
+ }
30
+ export interface BaseSelectProps {
31
+ /**
32
+ * @description 选择框的占位符
33
+ */
34
+ placeholder?: string;
35
+ /**
36
+ * @description 下拉面板内的搜索框的占位符
37
+ */
38
+ searchPlaceholder?: string;
39
+ /**
40
+ * @description 是否禁用 select
41
+ */
42
+ disabled?: boolean;
43
+ /**
44
+ * @description 是否可清除
45
+ * @default true
46
+ */
47
+ clearable?: boolean;
48
+ /**
49
+ * @description 自定义组件的类名
50
+ */
51
+ className?: string;
52
+ /**
53
+ * @description 自定义组件的样式
54
+ */
55
+ style?: React.CSSProperties;
56
+ }
57
+ export interface SelectProps<ValueType = any, OptionType extends DefaultOptionType = DefaultOptionType> extends BaseSelectProps {
58
+ /**
59
+ * @description 选项列表
60
+ */
61
+ options?: OptionType[];
62
+ /**
63
+ * @description 选择值 (受控)
64
+ */
65
+ value?: ValueType;
66
+ /**
67
+ * @description 默认选择值 (非受控)
68
+ */
69
+ defaultValue?: ValueType;
70
+ /**
71
+ * @description 选择值变化时回调
72
+ */
73
+ onChange?: (value: ValueType, option?: OptionType | OptionType[]) => void;
74
+ /**
75
+ * @description 【其他】选项文本框的值变化时的回调
76
+ */
77
+ onOtherInputChange?: (value: string) => void;
78
+ /**
79
+ * @description 搜索框的值变化时回调
80
+ */
81
+ onSearch?: (value: string) => void;
82
+ /**
83
+ * @description 清除已选时回调
84
+ */
85
+ onClear?: () => void;
86
+ /**
87
+ * @description 展开下拉菜单的回调
88
+ */
89
+ onOpenChange?: (open: boolean) => void;
90
+ /**
91
+ * @description 下拉列表滚动时的回调
92
+ */
93
+ onPopupScroll?: (event: UIEvent) => void;
94
+ /**
95
+ * @description 是否显示搜索框
96
+ */
97
+ showSearch?: boolean;
98
+ /**
99
+ * @description 是否在展示浮层面板的时候,浮层背后显示遮罩层
100
+ */
101
+ showMask?: boolean;
102
+ /**
103
+ * @description 自定义节点 title、key、children 的字段
104
+ */
105
+ fieldNames?: FieldNames;
106
+ /**
107
+ * @description 是否正在远程搜索
108
+ */
109
+ fetching?: boolean;
110
+ /**
111
+ * @description 是否开启过滤选项 (如果要远程搜索,设置为 false)
112
+ * @default true
113
+ */
114
+ filterOption?: boolean;
115
+ /**
116
+ * @description 下拉组件的类型
117
+ */
118
+ type?: SelectType;
119
+ /**
120
+ * @description 开启后,输入框没有边框
121
+ */
122
+ ghost?: boolean;
123
+ /**
124
+ * @description 自定义组件的类名
125
+ */
126
+ inputClassName?: string;
127
+ /**
128
+ * @description 自定义输入框的 prefix (仅单选回填支持)
129
+ */
130
+ prefix?: React.ReactNode;
131
+ /**
132
+ * @description 自定义下拉的切换图标
133
+ */
134
+ suffixIcon?: (isOpen: boolean, disabled: boolean) => React.ReactNode;
135
+ /**
136
+ * @description 自定义渲染回显到输入框的内容,默认是选中项的 label
137
+ * @description 支持单选和多选模式
138
+ * @description 第二个参数为关闭标签的回调,仅在多选模式下有效
139
+ */
140
+ labelRender?: (option: OptionType, closeBtn?: (style?: React.CSSProperties) => React.ReactNode) => React.ReactNode;
141
+ /**
142
+ * @description 自定义渲染下拉选项
143
+ * @description 支持单选和多选模式
144
+ */
145
+ optionRender?: (option: OptionType, info: {
146
+ index: number;
147
+ }, isSelected: boolean) => React.ReactNode;
148
+ /**
149
+ * @description 下拉选项的容器样式覆盖
150
+ */
151
+ optionStyle?: React.CSSProperties;
152
+ /**
153
+ * @description 自定义输入框的值的样式覆盖
154
+ */
155
+ inputValueStyle?: React.CSSProperties;
156
+ /**
157
+ * @description 自定义标签的样式覆盖
158
+ */
159
+ tagStyle?: React.CSSProperties;
160
+ /**
161
+ * @description 下拉面板浮层的 z-index
162
+ */
163
+ zIndex?: number;
164
+ /**
165
+ * @description 遮罩层的 z-index
166
+ */
167
+ zIndexMask?: number;
168
+ /**
169
+ * @description 自定义【其他】选项的渲染
170
+ */
171
+ otherOptionRender?: (value: string, options: OptionType[]) => React.ReactNode;
172
+ /**
173
+ * @description 【其他】选项输入框的展示位置
174
+ * @default 'bottom' - 展示在组件下方
175
+ * @description 'inline' - 展示在【其他】选项的右侧
176
+ */
177
+ otherInputPosition?: 'bottom' | 'inline';
178
+ /**
179
+ * @description 自定义浮层的最小宽度
180
+ */
181
+ popupMinWidth?: string;
182
+ }
183
+ export interface SelectRef {
184
+ /**
185
+ * @description 获取【其他】选项的输入值
186
+ */
187
+ getOtherOptionValue: () => string;
188
+ /**
189
+ * @description 设置【其他】选项的输入值
190
+ */
191
+ setOtherOptionValue: (value: string) => void;
192
+ }
@@ -0,0 +1,30 @@
1
+ import { DefaultOptionType, FieldNames } from '../interface';
2
+ /**
3
+ * 创建字段访问器,用于安全地访问选项的字段
4
+ */
5
+ export declare function createFieldAccessor(fieldNames: FieldNames): {
6
+ /**
7
+ * 获取选项的标签文本
8
+ */
9
+ getLabel: <T extends DefaultOptionType>(option: T) => string;
10
+ /**
11
+ * 获取选项的值
12
+ */
13
+ getValue: <T extends DefaultOptionType>(option: T) => string | number;
14
+ /**
15
+ * 获取选项的子项
16
+ */
17
+ getChildren: <T extends DefaultOptionType>(option: T) => T[] | undefined;
18
+ /**
19
+ * 创建标准化的选项对象(用于向后兼容)
20
+ */
21
+ normalizeOption: <T extends DefaultOptionType>(option: T) => T & {
22
+ label: T[keyof T];
23
+ value: T[keyof T];
24
+ children: T[keyof T] | undefined;
25
+ };
26
+ /**
27
+ * 获取字段名映射
28
+ */
29
+ getFieldNames: () => FieldNames;
30
+ };
@@ -0,0 +1,2 @@
1
+ import { FieldNames, DefaultOptionType } from '../interface';
2
+ export declare const flatTree: (tree: DefaultOptionType[], fieldNames: FieldNames) => DefaultOptionType[];
@@ -0,0 +1,6 @@
1
+ import { TreeProps } from './types/tree';
2
+ declare const Tree: {
3
+ (props: TreeProps): import("react/jsx-runtime").JSX.Element | null;
4
+ displayName: string;
5
+ };
6
+ export default Tree;
@@ -0,0 +1,21 @@
1
+ import { TreeNodeDefine } from '../types/node';
2
+ type BsyTreeNodeProps = {
3
+ /**
4
+ * @description 节点
5
+ */
6
+ node: TreeNodeDefine;
7
+ /**
8
+ * @description 节点层级
9
+ */
10
+ level?: number;
11
+ /**
12
+ * @description 字段名映射
13
+ */
14
+ fieldNames: {
15
+ title: string;
16
+ value: string;
17
+ children: string;
18
+ };
19
+ };
20
+ declare const BsyTreeNode: ({ node, level, fieldNames }: BsyTreeNodeProps) => import("react/jsx-runtime").JSX.Element;
21
+ export default BsyTreeNode;
@@ -0,0 +1,15 @@
1
+ import { TreeNodeDefine } from '../types/node';
2
+ export type CheckType = 'radio' | 'checkbox' | 'default';
3
+ export declare const BsyTreeContext: import('react').Context<{
4
+ searchValue: string;
5
+ selectedKeys: (string | number)[];
6
+ expandedKeys: (string | number)[];
7
+ parentCheckable?: boolean;
8
+ onSelect?: (value: string | number, node: TreeNodeDefine) => void;
9
+ onDeSelect?: (value: string | number) => void;
10
+ onExpand?: (key: string | number, expanded: boolean) => void;
11
+ icon?: (node: TreeNodeDefine) => React.ReactNode;
12
+ switcherIcon?: (expanded: boolean) => React.ReactNode;
13
+ checkType: CheckType;
14
+ showSwitcher: boolean;
15
+ }>;
@@ -0,0 +1,3 @@
1
+ export { default as Tree } from './Tree';
2
+ export type { TreeNodeDefine } from './types/node';
3
+ export type { TreeProps } from './types/tree';
@@ -0,0 +1,12 @@
1
+ type TreeNodeDefine = {
2
+ [key: string]: any;
3
+ icon?: React.ReactNode | ((node: TreeNodeDefine) => React.ReactNode);
4
+ /**
5
+ * @description 节点是否可被选中
6
+ * @description 如果设置为 `false` 点击该节点不会有任何的交互和事件响应(但是如果节点有 children,会自动展开 children)
7
+ * @default true
8
+ */
9
+ checkable?: boolean;
10
+ };
11
+
12
+ export type { TreeNodeDefine };
@@ -0,0 +1,84 @@
1
+ import { TreeNodeDefine } from './node';
2
+
3
+
4
+ export type CheckType = 'radio' | 'checkbox' | 'default';
5
+
6
+ export type TreeProps = {
7
+ data: TreeNodeDefine[];
8
+ /**
9
+ * @description 搜索值 (用于高亮显示)
10
+ */
11
+ searchValue?: string;
12
+
13
+ /**
14
+ * @description 字段名
15
+ */
16
+ fieldNames?: {
17
+ title: string;
18
+ value: string;
19
+ children: string;
20
+ };
21
+
22
+ /**
23
+ * @description 选中的节点 (受控)
24
+ */
25
+ selectedKeys?: (string | number)[];
26
+
27
+ /**
28
+ * @description 默认选中的节点 (非受控)
29
+ */
30
+ defaultSelectedKeys?: (string | number)[];
31
+
32
+ /**
33
+ * @description 展开的节点keys (受控)
34
+ */
35
+ expandedKeys?: (string | number)[];
36
+
37
+ /**
38
+ * @description 默认展开的节点keys (非受控)
39
+ */
40
+ defaultExpandedKeys?: (string | number)[];
41
+
42
+ /**
43
+ * @description 展开/收起节点时的回调
44
+ */
45
+ onExpand?: (expandedKeys: (string | number)[]) => void;
46
+
47
+ /**
48
+ * @description 选中节点回调
49
+ */
50
+ onSelect?: (value: string | number, node?: TreeNodeDefine) => void;
51
+
52
+ /**
53
+ * @description 取消选中节点回调
54
+ */
55
+ onDeSelect?: (value: string | number) => void;
56
+
57
+ /**
58
+ * @description 全局节点图标渲染函数
59
+ */
60
+ icon?: (node: TreeNodeDefine) => React.ReactNode;
61
+
62
+ /**
63
+ * @description 全局下拉箭头图标渲染函数
64
+ */
65
+ switcherIcon?: (expanded: boolean) => React.ReactNode;
66
+
67
+ /**
68
+ * @description 父节点是否可以被选中(如果设置为 true, 则所有节点的展开/折叠必须点击箭头按钮才能正常操作)
69
+ */
70
+ parentCheckable?: boolean;
71
+
72
+ /**
73
+ * @description 树形节点的选择样式
74
+ * @description 如果设置为 `radio`,则只能单选,如果设置为 `checkbox`,则可以多选,如果设置为 `default`,则节点遵循默认行为
75
+ * @default default
76
+ */
77
+ checkType?: CheckType;
78
+
79
+ /**
80
+ * @description 是否显示展开/收起节点时的箭头按钮
81
+ * @default true
82
+ */
83
+ showSwitcher?: boolean;
84
+ };
@@ -0,0 +1,11 @@
1
+ import { TreeNodeDefine } from '../types/node';
2
+ declare const getNodePath: (nodes: TreeNodeDefine[], targetValue: string | number, fieldNames: {
3
+ value: string;
4
+ children: string;
5
+ }, path?: (string | number)[]) => (string | number)[] | null;
6
+ declare const getMatchingNodesPaths: (nodes: TreeNodeDefine[], searchValue: string, fieldNames: {
7
+ title: string;
8
+ value: string;
9
+ children: string;
10
+ }, path?: (string | number)[]) => (string | number)[][];
11
+ export { getNodePath, getMatchingNodesPaths };
@@ -3,3 +3,8 @@ export { LocaleProvider } from '../locale/LocaleProvider';
3
3
  export { default as Card } from './Card';
4
4
  export { default as Modal } from './Modal';
5
5
  export { default as ColorPicker } from './ColorPicker';
6
+ export { default as Segmented } from './Segmented';
7
+ export { Select } from './Select';
8
+ export { Tree } from './Tree';
9
+ export { default as Checkbox } from './CheckBox';
10
+ export { default as Ratio } from './Radio';
package/dist/index.js CHANGED
@@ -1,61 +1,71 @@
1
- import { I as W } from "./Icon/Icon-C0bjP9U6.js";
1
+ import { I as W } from "./Icon/Icon-BlkVlKDd.js";
2
2
  import { jsx as p } from "react/jsx-runtime";
3
- import { useMemo as o, useCallback as u } from "react";
4
- import { z as s, L as f } from "./ColorPicker/ColorPicker-CpPLwHR2.js";
5
- import { C as Y } from "./ColorPicker/ColorPicker-CpPLwHR2.js";
6
- import { C as _ } from "./Card/Card-DMXtN2pu.js";
7
- import { M as te } from "./Modal/Modal-C1LEJ6Y0.js";
8
- const C = "Please select", U = "search", I = "No search data", L = "Select All", k = "Please enter the content", A = "No Data", P = "No Data Found", S = "Data Searching...", h = "Select All by Search", y = "Left Align", N = "Center Align", x = "Right Align", R = "Underline", F = "Link", v = "Hyper Link", z = "Show Content", w = "Link Address", D = "Open in New Tab", M = "Confirm", b = "Cancel", E = "Cancel Link", O = "preset color", T = { linkTip: "Support https://link or @form alias", bold: "Bold", italic: "Italic", fontSize: "Font Size", fontColor: "Font Color", fill: "fill", alignment: "Alignment", centerAlign: "Center Align", rightAlign: "Right Align", uploadImage: "Upload Image", imageUrl: "Image URL", imageUrlPlaceholder: "Please enter image URL", imageUrlRequired: "Please enter image URL", imageUrlInvalid: "Please enter a valid image URL", imageUrlNote: "Note: Enter image URL to insert image", inputImageUrl: "Enter Image URL", uploadImageNote: "Note: Single image size cannot exceed 1MB", uploadImageText: "Click or drag to upload image", previewImage: "Preview Image", underline: "Underline", imageFormatOnly: "Only image formats are supported", uploadImageFirst: "Please upload image first", imageAddSuccess: "Image added successfully", operationFailed: "Operation failed", onlyImageFormatsSupported: "Only image formats are supported", pleaseUploadImageFirst: "Please upload image first", imageSizeNote: "Image size cannot exceed 1MB", clickOrDragToUpload: "Click or drag to upload image", enterImageUrl: "Enter image URL", pleaseEnterImageUrl: "Please enter image URL", pleaseEnterValidImageUrl: "Please enter a valid image URL", linkAddressEmpty: "Link address cannot be empty" }, B = "Picture", V = "Custom Color", j = "Add Picture", q = {
3
+ import { useMemo as a, useCallback as u } from "react";
4
+ import { z as s, L as f } from "./vendors/index-ByQkttKA.js";
5
+ import { C as Y } from "./Card/Card-CXULQNHa.js";
6
+ import { M as _ } from "./Modal/Modal-BZTEGGa0.js";
7
+ import { C as te } from "./ColorPicker/ColorPicker-CwFsihkL.js";
8
+ import { S as ae } from "./Segmented/Segmented-UgzW78Ey.js";
9
+ import { S as re } from "./Select/Select-C3abXG27.js";
10
+ import { T as ie } from "./vendors/Tree-CCY2gtpG.js";
11
+ import { default as ce } from "./CheckBox/index.js";
12
+ import { default as de } from "./Radio/index.js";
13
+ const C = "Please select", U = "search", I = "No search data", S = "Select All", k = "Please enter the content", L = "No Data", h = "No Data Found", x = "Data Searching...", A = "Select All by Search", P = "Left Align", y = "Center Align", N = "Right Align", R = "Underline", F = "Link", v = "Hyper Link", z = "Show Content", b = "Link Address", w = "Open in New Tab", D = "Confirm", M = "Cancel", T = "Cancel Link", E = "preset color", O = { linkTip: "Support https://link or @form alias", bold: "Bold", italic: "Italic", fontSize: "Font Size", fontColor: "Font Color", fill: "fill", alignment: "Alignment", centerAlign: "Center Align", rightAlign: "Right Align", uploadImage: "Upload Image", imageUrl: "Image URL", imageUrlPlaceholder: "Please enter image URL", imageUrlRequired: "Please enter image URL", imageUrlInvalid: "Please enter a valid image URL", imageUrlNote: "Note: Enter image URL to insert image", inputImageUrl: "Enter Image URL", uploadImageNote: "Note: Single image size cannot exceed 1MB", uploadImageText: "Click or drag to upload image", previewImage: "Preview Image", underline: "Underline", imageFormatOnly: "Only image formats are supported", uploadImageFirst: "Please upload image first", imageAddSuccess: "Image added successfully", operationFailed: "Operation failed", onlyImageFormatsSupported: "Only image formats are supported", pleaseUploadImageFirst: "Please upload image first", imageSizeNote: "Image size cannot exceed 1MB", clickOrDragToUpload: "Click or drag to upload image", enterImageUrl: "Enter image URL", pleaseEnterImageUrl: "Please enter image URL", pleaseEnterValidImageUrl: "Please enter a valid image URL", linkAddressEmpty: "Link address cannot be empty" }, B = "Picture", V = "Custom Color", j = "Add Picture", q = {
9
14
  select: C,
10
15
  search: U,
11
16
  noFindData: I,
12
- allSelect: L,
17
+ allSelect: S,
13
18
  context: k,
14
- noData: A,
15
- noDataFound: P,
16
- dataSearching: S,
17
- allSelectedBySearch: h,
18
- leftAlign: y,
19
- centerAlign: N,
20
- rightAlign: x,
19
+ noData: L,
20
+ noDataFound: h,
21
+ dataSearching: x,
22
+ allSelectedBySearch: A,
23
+ leftAlign: P,
24
+ centerAlign: y,
25
+ rightAlign: N,
21
26
  underline: R,
22
27
  link: F,
23
28
  hyperLink: v,
24
29
  showContent: z,
25
- linkAddress: w,
26
- openInNewTab: D,
27
- confirm: M,
28
- cancel: b,
29
- cancelLink: E,
30
- presetColors: O,
31
- editor: T,
30
+ linkAddress: b,
31
+ openInNewTab: w,
32
+ confirm: D,
33
+ cancel: M,
34
+ cancelLink: T,
35
+ presetColors: E,
36
+ editor: O,
32
37
  picture: B,
33
38
  customColor: V,
34
39
  addPicture: j
35
- }, J = ({ children: c, locale: t = "zh-CN", messages: a = {} }) => {
36
- const r = o(() => ({ "zh-CN": s, "en-US": q, ...a }), [a]), l = o(() => r[t] || s, [t, r]), i = u(
37
- (n) => {
38
- const m = n.split(".");
40
+ }, J = ({ children: c, locale: t = "zh-CN", messages: n = {} }) => {
41
+ const r = a(() => ({ "zh-CN": s, "en-US": q, ...n }), [n]), l = a(() => r[t] || s, [t, r]), i = u(
42
+ (o) => {
43
+ const d = o.split(".");
39
44
  let e = l;
40
- for (const d of m)
41
- if (e = e[d], !e)
42
- return console.warn(`[LocaleProvider] Cannot find translation for key: ${n}`), n;
43
- return typeof e == "string" ? e : n;
45
+ for (const g of d)
46
+ if (e = e[g], !e)
47
+ return console.warn(`[LocaleProvider] Cannot find translation for key: ${o}`), o;
48
+ return typeof e == "string" ? e : o;
44
49
  },
45
50
  [l]
46
- ), g = o(
51
+ ), m = a(
47
52
  () => ({
48
53
  locale: t,
49
54
  t: i
50
55
  }),
51
56
  [t, i]
52
57
  );
53
- return /* @__PURE__ */ p(f.Provider, { value: g, children: c });
58
+ return /* @__PURE__ */ p(f.Provider, { value: m, children: c });
54
59
  };
55
60
  export {
56
- _ as Card,
57
- Y as ColorPicker,
61
+ Y as Card,
62
+ ce as Checkbox,
63
+ te as ColorPicker,
58
64
  W as Icon,
59
65
  J as LocaleProvider,
60
- te as Modal
66
+ _ as Modal,
67
+ de as Ratio,
68
+ ae as Segmented,
69
+ re as Select,
70
+ ie as Tree
61
71
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- ._modal__title_klsxr_1{padding:16px 20px;font-weight:700;font-size:18px;display:flex;justify-content:space-between;max-height:60px;border-bottom:1px solid #e0e0e0}._modal__title-text_klsxr_10{font-size:18px;font-weight:700}._modal__actions_klsxr_14,._modal__button_groups_klsxr_18{display:flex;gap:10px}._modal__button_klsxr_18{cursor:pointer;transition:colors .2s ease;display:flex;align-items:center;justify-content:center;height:26px;width:26px;border-radius:4px}._modal__button_klsxr_18:hover{background-color:#f3f3f3}._modal__button--fullscreen_klsxr_35:hover{background-color:#fff}._modal__icon_klsxr_38{color:#666;font-size:18px;transition:color .2s ease}._modal__button_klsxr_18:hover ._modal__icon_klsxr_38{color:#121211}._bsy-color-picker__floating_1kfi6_1{z-index:10}._bsy-color-picker__content_1kfi6_4{background-color:#fff;border-radius:8px;padding:16px;box-shadow:0 25px 50px -12px #00000040;font-size:14px}._bsy-color-picker__grid_1kfi6_11{display:grid;gap:16px}._bsy-color-picker__preset-colors-title_1kfi6_15{color:#91a1b7;margin-bottom:12px}._bsy-color-picker__preset-colors-grid_1kfi6_19{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}._bsy-color-picker__preset-colors-item_1kfi6_24{position:relative;width:30px;aspect-ratio:1;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1}._bsy-color-picker__preset-colors-item_1kfi6_24:after{content:"";top:0;right:0;bottom:0;left:0;position:absolute;z-index:-1;transition:all .25s ease;border-radius:50%}._bsy-color-picker__preset-colors-item_1kfi6_24:hover:after{background:var(--hover-color);transform:scale(1.15)}._bsy-color-picker__custom-color-title_1kfi6_47{color:#91a1b7;margin-bottom:12px}._bsy-color-picker__custom-color-btn_1kfi6_51{display:inline-block;border-radius:50%;cursor:pointer;border:1px solid #e0e0e0;color:#666;padding:6px;font-size:0;transition:.25s ease}._bsy-color-picker__custom-color-btn_1kfi6_51:not(._preview_1kfi6_61):hover,._bsy-color-picker__custom-color-btn_1kfi6_51:not(._preview_1kfi6_61)._bsy-color-picker__custom-color-btn--active_1kfi6_61{border-color:#0265ff;color:#0265ff}._bsy-color-picker__custom-color-btn_1kfi6_51._bsy-color-picker__custom-color-btn--preview_1kfi6_65{border-color:transparent}._bsy-color-picker__custom-color-content_1kfi6_68{display:flex;gap:16px}._bsy-color-picker__check-icon_1kfi6_72{font-size:18px;color:#fff}._bsy-card_myftj_1{padding:10px 12px;background:#fff;border-radius:10px}._bsy-card__header_myftj_6{display:flex;align-items:center;justify-content:space-between;cursor:pointer;line-height:normal}._bsy-card__header_myftj_6:hover ._bsy-card__title_myftj_13{color:#0265ff}._bsy-card__title_myftj_13{color:#121211;font-size:14px;font-weight:700;margin:0;transition:color .2s ease;-webkit-user-select:none;user-select:none}._bsy-card__icon-container_myftj_24{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;cursor:pointer;color:#666}._bsy-card__icon-container_myftj_24:hover{background-color:#f0f6ff;color:#0265ff}._bsy-card__icon_myftj_24{font-size:16px;transition:transform .2s ease}._bsy-card__icon--expanded_myftj_43{transform:rotate(180deg)}._bsy-card__content_myftj_46{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1);overflow:hidden}._bsy-card__content--expanded_myftj_52{grid-template-rows:1fr}._bsy-card__content--expanded_myftj_52 ._bsy-card__content-inner_myftj_55{padding-top:12px}._bsy-card__content-inner_myftj_55{overflow:hidden;transition:padding-top .3s cubic-bezier(.4,0,.2,1)}@keyframes _scale-in_46spj_1{0%{transform:scale(.8);opacity:.5}to{transform:scale(1);opacity:1}}._bsy-inputTag_46spj_11{display:flex;background-color:#fff;border:1px solid #e0e0e0;border-radius:4px;padding:0 4px;font-size:14px;height:34px;color:#121211;transition:all .3s cubic-bezier(.4,0,.2,1)}._bsy-inputTag__container_46spj_22{height:32px;flex-grow:0;overflow:hidden}._bsy-inputTag__inputContainer_46spj_27{flex-shrink:0;min-width:80px;max-width:80px;height:32px;display:inline-flex;align-items:center;font-size:14px;margin-left:4px}._bsy-inputTag__inputContainer--zeroMargin_46spj_37{margin:0}._bsy-inputTag__input_46spj_27{width:100%;padding:0 6px;height:23px;outline:none;border-radius:4px;border:1px dashed #e0e0e0;background-color:transparent}
1
+ ._checkbox_vheru_1{width:16px;height:16px;border-radius:2px;border:1px solid;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}._checkbox--checked_vheru_12{background-color:#0265ff;border-color:#0265ff}._checkbox--unchecked_vheru_16{background-color:#fff0;border-color:#9da2b2}._checkbox--unchecked_vheru_16:hover{border-color:#0265ff}._checkbox--indeterminate_vheru_23{background-color:#fff;border-color:#0265ff}._checkbox--disabled_vheru_27{background-color:#f5f5f5;border-color:#d9d9d9}._checkbox__inner_vheru_32{width:8px;height:8px;border-radius:1px;background-color:#0265ff}._checkbox__inner--disabled_vheru_38{background-color:#b8b8b8}._bsy-checkbox_1372g_1{display:flex;align-items:center;gap:.5rem;cursor:pointer;-webkit-user-select:none;user-select:none}._bsy-checkbox--full-width_1372g_8{width:100%}._bsy-checkbox__button_1372g_11{width:1rem;height:1rem;border-radius:2px;display:flex;align-items:center;justify-content:center;transition:all .2s ease-in-out;border:1px solid;flex-shrink:0}._bsy-checkbox__button--disabled_1372g_22{background-color:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}._bsy-checkbox__button--enabled_1372g_27{cursor:pointer}._bsy-checkbox__button--indeterminate_1372g_30{background-color:#fff;border-color:#0265ff}._bsy-checkbox__button--checked_1372g_34{background-color:#0265ff;border-color:#0265ff}._bsy-checkbox__button--unchecked_1372g_38{background-color:transparent;border-color:#9da2b2}._bsy-checkbox__button--unchecked_1372g_38:hover{border-color:#0265ff}._bsy-checkbox__button--left-label_1372g_45{order:2}._bsy-radio_q02xg_1{display:flex;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}._bsy-radio--disabled_q02xg_8{cursor:not-allowed}._bsy-radio--full-width_q02xg_11{width:100%}._bsy-radio__input_q02xg_14{position:relative;width:16px;height:16px;border-radius:50%;border:1px solid #9da2b2;background-color:#fff;flex-shrink:0;transition:all .25s;cursor:pointer;box-sizing:border-box}._bsy-radio__input_q02xg_14:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:6px;height:6px;border-radius:50%;background-color:#fff;transition:all .25s ease-out}._bsy-radio__input--checked_q02xg_38{background-color:#0265ff;border-color:#0265ff}._bsy-radio__input--checked_q02xg_38:after{transform:translate(-50%,-50%) scale(1)}._bsy-radio__input--disabled_q02xg_45{background-color:#f5f5f5;border-color:#d9d9d9;cursor:not-allowed}._bsy-radio__input--disabled_q02xg_45:after{background-color:#f5f5f5}._bsy-radio__input--disabled_q02xg_45._bsy-radio__input--checked_q02xg_38{background-color:#00000040;border-color:#d9d9d9}._bsy-radio__input--disabled_q02xg_45._bsy-radio__input--checked_q02xg_38:after{background-color:#fff}._bsy-radio__label_q02xg_60{flex:1;font-size:14px;line-height:normal}._bsy-radio__label--left_q02xg_65{order:-1}._bsy-radio--disabled_q02xg_8 ._bsy-radio__label_q02xg_60{color:#00000040}._bsy-radio_q02xg_1:not(._bsy-radio--disabled_q02xg_8):hover ._bsy-radio__input_q02xg_14:not(._bsy-radio__input--disabled_q02xg_45){border-color:#0265ff}._bsy-radio-group_q02xg_75{display:inline-flex}._bsy-radio-group--none_q02xg_78{flex-direction:column}._bsy-radio-group--vertical_q02xg_81{flex-direction:column;gap:8px}._bsy-radio-group--horizontal_q02xg_85{flex-direction:row;flex-wrap:wrap;gap:8px 16px}._bsy-input-tag__container_18guu_1{display:flex;flex-wrap:nowrap;gap:4px;overflow:hidden}._bsy-input-tag__item_18guu_7{flex-grow:0;flex-shrink:0;display:inline-flex;align-items:center;padding:3px 6px;color:#121111;line-height:normal;background-color:#eee;border-radius:2px;max-height:26px;overflow:hidden}._bsy-input-tag__item--disabled_18guu_20{background-color:#e7e7e7;color:#adadad}._bsy-input-tag__item-icon_18guu_24{margin-left:4px;width:12px;aspect-ratio:1}._select_multiple_input__container_8pd2n_1{overflow:hidden;display:flex;align-items:center}._select_multiple_input__measurement_layer_8pd2n_6{position:fixed;top:0;left:0;opacity:0;pointer-events:none;z-index:-1}._select_multiple_input__close_btn_8pd2n_14{color:#666;cursor:pointer}._select_multiple_input__close_btn_8pd2n_14:hover{color:#0265ff}._select_multiple_input__close_btn--disabled_8pd2n_21{cursor:not-allowed}._select_multiple_input__tag_content_8pd2n_24{width:100%;display:inline-flex}.bsy-select-input-container{--border-color: #e0e0e0;--bg-color: #fff;--input-text-color: #121212;--input-placholder-color: #999;-webkit-user-select:none;user-select:none;max-height:34px;min-height:34px;border-radius:4px;line-height:1.4;border:1px solid var(--border-color);background:var(--bg-color);transition:border .25s ease}.bsy-select-input-container:not([class*=disabled]):hover,.bsy-select-input-container:not([class*=disabled])[class*=active]{border:1px solid #0265ff;cursor:pointer}.bsy-select-input-container[class*=disabled]{cursor:not-allowed;--bg-color: #f0f0f0;--border-color: transparent;--input-text-color: #c2c2c2;--input-placholder-color: #c2c2c2}.bsy-select-input-container-input{height:32px;display:flex}.bsy-select-input-container-input-prefix{padding:7px 6px 7px 10px}.bsy-select-input-container-input-prefix+div{padding-left:0}.bsy-select-input-container__input-value{display:flex;flex:1;line-height:normal;padding:7px 10px}.bsy-select-input-container__input-value[class*=multiple]{padding:3px}.bsy-select-input-container__input-value-text{text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:var(--input-text-color)}.bsy-select-input-container__icon{display:flex;align-items:center;justify-content:center;padding-right:10px}.bsy-select-input-container__icon .icon{font-size:16px;transition:transform .25s ease}.bsy-select-input-container__icon .icon[class*=active]{transform:rotate(180deg)}.bsy-select-input-container__input-value-placeholder{flex:1;padding:7px 10px;color:var(--input-placholder-color);font-size:14px}.bsy-select-input-container[class*=ghost-style]{border-color:transparent!important;background:transparent!important}.bsy-select-mask{position:fixed;top:0;right:0;bottom:0;left:0;background-color:transparent}.bsy-select-panel{padding:4px;background-color:#fff;border-radius:8px;color:#121211;font-size:14px;line-height:normal;box-shadow:0 6px 16px #0000000f}.bsy-select-input-search-input{display:flex;gap:8px;padding:6px 10px;border-radius:4px;border:1px solid #e0e0e0;color:#121212;line-height:normal;font-size:14px}.bsy-select-input-search-input__container{flex:1}.bsy-select-input-search-input__icon{color:#666;font-size:16px}.bsy-select-input-search-input__icon:hover{color:#0265ff}.bsy-select-input-search-input input{width:100%;max-height:20px;min-height:20px;border:none;outline:none}.bsy-select-input-search-input input::placeholder{color:#999}._bsy-segmented_ia83v_1{position:relative;display:inline-flex;gap:2px;height:34px;padding:2px;align-items:center;border-radius:4px;background-color:#f3f3f3}._bsy-segmented--block_ia83v_12{display:grid;width:100%}._bsy-segmented__item_ia83v_17{position:relative;display:flex;height:30px;padding:7px 10px;justify-content:center;align-items:center;cursor:pointer;transition:color .3s ease-in-out;font-size:14px;white-space:nowrap;border-radius:4px;border:1px solid transparent}._bsy-segmented__item--disabled_ia83v_31{color:#00000040!important;cursor:not-allowed}._bsy-segmented__item--block_ia83v_36{min-width:0;overflow:hidden;text-overflow:ellipsis;padding-left:0;padding-right:0}._bsy-segmented__item--active_ia83v_44{color:#0265ff}._bsy-segmented__item--inactive_ia83v_48:not(._bsy-segmented__item--disabled_ia83v_31):hover{background-color:#fff;border-color:#e0e0e0}._bsy-segmented__slider_ia83v_53{position:absolute;top:2px;height:30px;border-radius:4px;border:1px solid #e0e0e0;background-color:#fff}._modal__title_klsxr_1{padding:16px 20px;font-weight:700;font-size:18px;display:flex;justify-content:space-between;max-height:60px;border-bottom:1px solid #e0e0e0}._modal__title-text_klsxr_10{font-size:18px;font-weight:700}._modal__actions_klsxr_14,._modal__button_groups_klsxr_18{display:flex;gap:10px}._modal__button_klsxr_18{cursor:pointer;transition:colors .2s ease;display:flex;align-items:center;justify-content:center;height:26px;width:26px;border-radius:4px}._modal__button_klsxr_18:hover{background-color:#f3f3f3}._modal__button--fullscreen_klsxr_35:hover{background-color:#fff}._modal__icon_klsxr_38{color:#666;font-size:18px;transition:color .2s ease}._modal__button_klsxr_18:hover ._modal__icon_klsxr_38{color:#121211}._bsy-color-picker__floating_1kfi6_1{z-index:10}._bsy-color-picker__content_1kfi6_4{background-color:#fff;border-radius:8px;padding:16px;box-shadow:0 25px 50px -12px #00000040;font-size:14px}._bsy-color-picker__grid_1kfi6_11{display:grid;gap:16px}._bsy-color-picker__preset-colors-title_1kfi6_15{color:#91a1b7;margin-bottom:12px}._bsy-color-picker__preset-colors-grid_1kfi6_19{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}._bsy-color-picker__preset-colors-item_1kfi6_24{position:relative;width:30px;aspect-ratio:1;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1}._bsy-color-picker__preset-colors-item_1kfi6_24:after{content:"";top:0;right:0;bottom:0;left:0;position:absolute;z-index:-1;transition:all .25s ease;border-radius:50%}._bsy-color-picker__preset-colors-item_1kfi6_24:hover:after{background:var(--hover-color);transform:scale(1.15)}._bsy-color-picker__custom-color-title_1kfi6_47{color:#91a1b7;margin-bottom:12px}._bsy-color-picker__custom-color-btn_1kfi6_51{display:inline-block;border-radius:50%;cursor:pointer;border:1px solid #e0e0e0;color:#666;padding:6px;font-size:0;transition:.25s ease}._bsy-color-picker__custom-color-btn_1kfi6_51:not(._preview_1kfi6_61):hover,._bsy-color-picker__custom-color-btn_1kfi6_51:not(._preview_1kfi6_61)._bsy-color-picker__custom-color-btn--active_1kfi6_61{border-color:#0265ff;color:#0265ff}._bsy-color-picker__custom-color-btn_1kfi6_51._bsy-color-picker__custom-color-btn--preview_1kfi6_65{border-color:transparent}._bsy-color-picker__custom-color-content_1kfi6_68{display:flex;gap:16px}._bsy-color-picker__check-icon_1kfi6_72{font-size:18px;color:#fff}._bsy-card_myftj_1{padding:10px 12px;background:#fff;border-radius:10px}._bsy-card__header_myftj_6{display:flex;align-items:center;justify-content:space-between;cursor:pointer;line-height:normal}._bsy-card__header_myftj_6:hover ._bsy-card__title_myftj_13{color:#0265ff}._bsy-card__title_myftj_13{color:#121211;font-size:14px;font-weight:700;margin:0;transition:color .2s ease;-webkit-user-select:none;user-select:none}._bsy-card__icon-container_myftj_24{width:20px;height:20px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease;cursor:pointer;color:#666}._bsy-card__icon-container_myftj_24:hover{background-color:#f0f6ff;color:#0265ff}._bsy-card__icon_myftj_24{font-size:16px;transition:transform .2s ease}._bsy-card__icon--expanded_myftj_43{transform:rotate(180deg)}._bsy-card__content_myftj_46{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s cubic-bezier(.4,0,.2,1);overflow:hidden}._bsy-card__content--expanded_myftj_52{grid-template-rows:1fr}._bsy-card__content--expanded_myftj_52 ._bsy-card__content-inner_myftj_55{padding-top:12px}._bsy-card__content-inner_myftj_55{overflow:hidden;transition:padding-top .3s cubic-bezier(.4,0,.2,1)}@keyframes _scale-in_46spj_1{0%{transform:scale(.8);opacity:.5}to{transform:scale(1);opacity:1}}._bsy-inputTag_46spj_11{display:flex;background-color:#fff;border:1px solid #e0e0e0;border-radius:4px;padding:0 4px;font-size:14px;height:34px;color:#121211;transition:all .3s cubic-bezier(.4,0,.2,1)}._bsy-inputTag__container_46spj_22{height:32px;flex-grow:0;overflow:hidden}._bsy-inputTag__inputContainer_46spj_27{flex-shrink:0;min-width:80px;max-width:80px;height:32px;display:inline-flex;align-items:center;font-size:14px;margin-left:4px}._bsy-inputTag__inputContainer--zeroMargin_46spj_37{margin:0}._bsy-inputTag__input_46spj_27{width:100%;padding:0 6px;height:23px;outline:none;border-radius:4px;border:1px dashed #e0e0e0;background-color:transparent}