@sia.soul/sia-react-ui 0.1.22 → 0.1.24

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 (44) hide show
  1. package/dist/Select-O_yY51vc.d.ts +307 -0
  2. package/dist/Select-W_xpkpOW.d.cts +307 -0
  3. package/dist/chart.cjs +1401 -1160
  4. package/dist/chart.css +21 -0
  5. package/dist/chart.js +4 -4
  6. package/dist/{chunk-3TRRBMXY.js → chunk-6R7JY7IY.js} +44 -21
  7. package/dist/{chunk-TZGUBGA4.js → chunk-6WBABNAX.js} +4 -3
  8. package/dist/{chunk-OKP4DIQH.js → chunk-GUXAWU63.js} +29 -26
  9. package/dist/{chunk-QJ4OQNQ4.js → chunk-LA7O3PN4.js} +4 -3
  10. package/dist/{chunk-7RNS52YG.js → chunk-LIYCU2GU.js} +349 -278
  11. package/dist/{chunk-KLI65JVD.js → chunk-LRPQ5FGE.js} +68 -186
  12. package/dist/chunk-NSSPGXNM.js +284 -0
  13. package/dist/{chunk-YT6E3X2K.js → chunk-OH6YILJW.js} +4 -3
  14. package/dist/{chunk-RWGSZW32.js → chunk-RGXVPS37.js} +7 -6
  15. package/dist/{chunk-VN6PIPP7.js → chunk-T2QIW4OO.js} +8 -7
  16. package/dist/{core-DeZknKwc.d.ts → core-BOzLwiXG.d.ts} +40 -158
  17. package/dist/{core-C5OnrCi4.d.cts → core-tbb9ZiBY.d.cts} +40 -158
  18. package/dist/core.cjs +1656 -1443
  19. package/dist/core.css +60 -0
  20. package/dist/core.d.cts +2 -2
  21. package/dist/core.d.ts +2 -2
  22. package/dist/core.js +8 -6
  23. package/dist/index.cjs +3801 -3580
  24. package/dist/index.css +60 -0
  25. package/dist/index.d.cts +33 -16
  26. package/dist/index.d.ts +33 -16
  27. package/dist/index.js +94 -85
  28. package/dist/markdown-editor.cjs +269 -28
  29. package/dist/markdown-editor.css +20 -0
  30. package/dist/markdown-editor.js +2 -2
  31. package/dist/rich-text-editor.cjs +1156 -1031
  32. package/dist/rich-text-editor.css +20 -0
  33. package/dist/rich-text-editor.js +4 -4
  34. package/dist/{select-date-range-CGRb3-W8.d.ts → select-date-range-BjqFUeU6.d.ts} +1 -1
  35. package/dist/{select-date-range-DDmYGDD4.d.cts → select-date-range-C9w8z3G8.d.cts} +1 -1
  36. package/dist/select-date-range.cjs +1209 -1061
  37. package/dist/select-date-range.css +20 -0
  38. package/dist/select-date-range.d.cts +2 -2
  39. package/dist/select-date-range.d.ts +2 -2
  40. package/dist/select-date-range.js +5 -5
  41. package/package.json +2 -2
  42. package/dist/Select-4hGJt3RJ.d.cts +0 -142
  43. package/dist/Select-BNSE67xn.d.ts +0 -142
  44. package/dist/chunk-3VJ4CZDQ.js +0 -43
@@ -0,0 +1,20 @@
1
+ /* src/title-tooltip.css */
2
+ body > .sia-title-tooltip[data-sia-popup-layer] {
3
+ position: fixed;
4
+ z-index: 1800;
5
+ display: block;
6
+ box-sizing: border-box;
7
+ width: max-content;
8
+ max-width: min(320px, calc(100vw - 16px));
9
+ max-height: calc(100vh - 16px);
10
+ padding: 7px 10px;
11
+ color: var(--sia-color-text, #1f2329);
12
+ background: var(--sia-color-surface, #fff);
13
+ border: 1px solid var(--sia-color-border, #d9d9d9);
14
+ border-radius: var(--sia-radius, 6px);
15
+ box-shadow: var(--sia-shadow-popup, 0 4px 16px rgb(0 0 0 / 12%));
16
+ font: 400 13px/1.5 system-ui, sans-serif;
17
+ pointer-events: none;
18
+ overflow-wrap: anywhere;
19
+ white-space: pre-wrap;
20
+ }
@@ -1,4 +1,4 @@
1
- export { S as SelectDateRange, i as SelectDateRangeProps, j as SelectDateRangeValue } from './select-date-range-DDmYGDD4.cjs';
1
+ export { S as SelectDateRange, i as SelectDateRangeProps, j as SelectDateRangeValue } from './select-date-range-C9w8z3G8.cjs';
2
2
  import 'react';
3
3
  import './shared-Bx4B28Wh.cjs';
4
- import './Select-4hGJt3RJ.cjs';
4
+ import './Select-W_xpkpOW.cjs';
@@ -1,4 +1,4 @@
1
- export { S as SelectDateRange, i as SelectDateRangeProps, j as SelectDateRangeValue } from './select-date-range-CGRb3-W8.js';
1
+ export { S as SelectDateRange, i as SelectDateRangeProps, j as SelectDateRangeValue } from './select-date-range-BjqFUeU6.js';
2
2
  import 'react';
3
3
  import './shared-Bx4B28Wh.js';
4
- import './Select-BNSE67xn.js';
4
+ import './Select-O_yY51vc.js';
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SelectDateRange
3
- } from "./chunk-VN6PIPP7.js";
4
- import "./chunk-3TRRBMXY.js";
5
- import "./chunk-KLI65JVD.js";
6
- import "./chunk-TZGUBGA4.js";
7
- import "./chunk-3VJ4CZDQ.js";
3
+ } from "./chunk-T2QIW4OO.js";
4
+ import "./chunk-6R7JY7IY.js";
5
+ import "./chunk-LRPQ5FGE.js";
6
+ import "./chunk-6WBABNAX.js";
7
+ import "./chunk-NSSPGXNM.js";
8
8
  export {
9
9
  SelectDateRange
10
10
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sia.soul/sia-react-ui",
3
- "version": "0.1.22",
3
+ "version": "0.1.24",
4
4
  "description": "Sia Design components and tokens for React",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -53,7 +53,7 @@
53
53
  "scripts": {
54
54
  "build": "tsup src/index.ts src/core.ts src/select-date-range.ts src/rich-text-editor.ts src/markdown-editor.ts src/chart.ts --format esm,cjs --dts --clean",
55
55
  "typecheck": "tsc -p tsconfig.json",
56
- "prepublishOnly": "pnpm typecheck && pnpm build"
56
+ "prepublishOnly": "node ../../scripts/check-api-docs.cjs && pnpm typecheck && pnpm build && node ../../scripts/test-api-docs.cjs"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "react": ">=18",
@@ -1,142 +0,0 @@
1
- import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode } from 'react';
3
- import { I as InputPlaceholderMode, C as ControlSize, a as ControlStatus } from './shared-Bx4B28Wh.cjs';
4
-
5
- /** 选择器的值类型。 */
6
- type SelectValue = string | number;
7
- /** 选择器的模式类型。 */
8
- type SelectMode = "single" | "multiple";
9
- /** 选择变更后的值:单选为字符串、数字或 null,多选为值数组。 */
10
- type SelectChangeValue = SelectValue | SelectValue[] | null;
11
- /** 选择器的候选项定义。 */
12
- type SelectOption = {
13
- /** 展示给用户的名称,可传入文本或 React 节点。 */
14
- label: ReactNode;
15
- /** 该项目对应的数据值,用于标识、选择或计算。 */
16
- value: SelectValue;
17
- /** 是否禁用交互。 */
18
- disabled?: boolean;
19
- /** 弹框模式中的分组标题。 */
20
- group?: string;
21
- };
22
- /** 选择器的属性配置。 */
23
- interface SelectProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "defaultValue" | "onChange" | "value"> {
24
- /** 下拉选项 */
25
- options: readonly SelectOption[];
26
- /**
27
- * 单选或多选模式
28
- * @defaultValue "single"
29
- */
30
- mode?: SelectMode;
31
- /** 显式指定下拉或弹框。未设置时根据 options 总数判断:超过 modalThreshold 使用弹框。显式配置优先于阈值;弹框点击确定才提交。 */
32
- popupMode?: "dropdown" | "modal";
33
- /**
34
- * 未指定 popupMode 时,选项总数超过此值自动使用弹框,等于阈值时仍使用下拉。
35
- * @defaultValue 15
36
- */
37
- modalThreshold?: number;
38
- /** 弹框 title、width、columns、maxHeight 与左下角扩展 footerExtra */
39
- modalConfig?: {
40
- /** 弹框标题,未设置时使用 Select 的 placeholder。 */
41
- title?: ReactNode;
42
- /** 弹框宽度,默认 900px。 */
43
- width?: number | string;
44
- /** 每行选项列数,默认 3 列。 */
45
- columns?: number;
46
- /** 列表最大可视高度,默认 360px。 */
47
- maxHeight?: number;
48
- /** 底部左侧扩展内容,例如维护按钮。 */
49
- footerExtra?: ReactNode;
50
- };
51
- /** 当前值(受控) */
52
- value?: SelectChangeValue;
53
- /** 初始选中值 */
54
- defaultValue?: SelectChangeValue;
55
- /** 确认选择或清空时调用。单选返回单值及对应选项,清空返回 null;多选返回值数组及选项数组。弹框中的草稿变化不会直接触发。 */
56
- onChange?: (value: SelectChangeValue, option: SelectOption | SelectOption[] | null) => void;
57
- /**
58
- * 未选择时的提示
59
- * @defaultValue "请选择"
60
- */
61
- placeholder?: ReactNode;
62
- /** 占位提示的显示模式;floating 为浮动标签。 */
63
- placeholderMode?: InputPlaceholderMode;
64
- /** small / medium / large 高度为 22 / 30 / 38px;默认继承 Form,组件自身 size 优先 */
65
- size?: ControlSize;
66
- /**
67
- * 当前状态,用于选择对应的状态样式。
68
- * @defaultValue "default"
69
- */
70
- status?: ControlStatus;
71
- /**
72
- * 是否允许清空当前选择;单选弹框中同时允许再次点击已选项取消选择。显式设为 false 可禁用。
73
- * @defaultValue true
74
- */
75
- allowClear?: boolean;
76
- /**
77
- * 显示加载状态并禁用展开
78
- * @defaultValue false
79
- */
80
- loading?: boolean;
81
- /**
82
- 是否显示搜索输入框。
83
- * @defaultValue false
84
- */
85
- showSearch?: boolean;
86
- /** 在选项名称下方显示对应的 value。 */
87
- showValue?: boolean;
88
- /** 允许将搜索框内容作为自定义选项提交。 */
89
- allowInput?: boolean;
90
- /** 手动输入内容的最大长度 */
91
- inputMaxLength?: number;
92
- /**
93
- * 搜索框的占位提示文字。
94
- * @defaultValue "搜索选项"
95
- */
96
- searchPlaceholder?: string;
97
- /** 搜索条件变化或提交搜索时调用,具体参数见签名。 */
98
- onSearch?: (query: string) => void;
99
- /**
100
- * 自定义搜索匹配函数,返回 true 时保留该选项。
101
- * @defaultValue defaultFilterOption
102
- */
103
- filterOption?: (query: string, option: SelectOption) => boolean;
104
- /**
105
- * 多选时显示全选、反选;下拉操作栏固定在列表底部
106
- * @defaultValue true
107
- */
108
- showSelectAll?: boolean;
109
- /** 是否显示下拉面板底部的条数统计与操作行;默认单选隐藏、多选显示,不影响弹框模式。 */
110
- showActions?: boolean;
111
- /** 最多显示的标签数;空间不足时会继续折叠,并为 +N 预留宽度。 */
112
- maxTagCount?: number;
113
- /**
114
- * 长列表启用窗口化渲染
115
- * @defaultValue true
116
- */
117
- virtual?: boolean;
118
- /**
119
- * 启用虚拟滚动的选项数量
120
- * @defaultValue 100
121
- */
122
- virtualThreshold?: number;
123
- /**
124
- * 选项列表的最大可视高度,单位为像素。
125
- * @defaultValue 256
126
- */
127
- listHeight?: number;
128
- /**
129
- * 单个选项的高度,虚拟列表据此计算可见区域。
130
- * @defaultValue showValue ? 54 : 34
131
- */
132
- optionHeight?: number;
133
- /**
134
- * 没有匹配选项时的提示内容。
135
- * @defaultValue "暂无数据"
136
- */
137
- notFoundContent?: ReactNode;
138
- }
139
- /** 选择器组件。 */
140
- declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement>>;
141
-
142
- export { type SelectOption as S, type SelectChangeValue as a, type SelectProps as b, Select as c, type SelectMode as d, type SelectValue as e };
@@ -1,142 +0,0 @@
1
- import * as react from 'react';
2
- import { ButtonHTMLAttributes, ReactNode } from 'react';
3
- import { I as InputPlaceholderMode, C as ControlSize, a as ControlStatus } from './shared-Bx4B28Wh.js';
4
-
5
- /** 选择器的值类型。 */
6
- type SelectValue = string | number;
7
- /** 选择器的模式类型。 */
8
- type SelectMode = "single" | "multiple";
9
- /** 选择变更后的值:单选为字符串、数字或 null,多选为值数组。 */
10
- type SelectChangeValue = SelectValue | SelectValue[] | null;
11
- /** 选择器的候选项定义。 */
12
- type SelectOption = {
13
- /** 展示给用户的名称,可传入文本或 React 节点。 */
14
- label: ReactNode;
15
- /** 该项目对应的数据值,用于标识、选择或计算。 */
16
- value: SelectValue;
17
- /** 是否禁用交互。 */
18
- disabled?: boolean;
19
- /** 弹框模式中的分组标题。 */
20
- group?: string;
21
- };
22
- /** 选择器的属性配置。 */
23
- interface SelectProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "defaultValue" | "onChange" | "value"> {
24
- /** 下拉选项 */
25
- options: readonly SelectOption[];
26
- /**
27
- * 单选或多选模式
28
- * @defaultValue "single"
29
- */
30
- mode?: SelectMode;
31
- /** 显式指定下拉或弹框。未设置时根据 options 总数判断:超过 modalThreshold 使用弹框。显式配置优先于阈值;弹框点击确定才提交。 */
32
- popupMode?: "dropdown" | "modal";
33
- /**
34
- * 未指定 popupMode 时,选项总数超过此值自动使用弹框,等于阈值时仍使用下拉。
35
- * @defaultValue 15
36
- */
37
- modalThreshold?: number;
38
- /** 弹框 title、width、columns、maxHeight 与左下角扩展 footerExtra */
39
- modalConfig?: {
40
- /** 弹框标题,未设置时使用 Select 的 placeholder。 */
41
- title?: ReactNode;
42
- /** 弹框宽度,默认 900px。 */
43
- width?: number | string;
44
- /** 每行选项列数,默认 3 列。 */
45
- columns?: number;
46
- /** 列表最大可视高度,默认 360px。 */
47
- maxHeight?: number;
48
- /** 底部左侧扩展内容,例如维护按钮。 */
49
- footerExtra?: ReactNode;
50
- };
51
- /** 当前值(受控) */
52
- value?: SelectChangeValue;
53
- /** 初始选中值 */
54
- defaultValue?: SelectChangeValue;
55
- /** 确认选择或清空时调用。单选返回单值及对应选项,清空返回 null;多选返回值数组及选项数组。弹框中的草稿变化不会直接触发。 */
56
- onChange?: (value: SelectChangeValue, option: SelectOption | SelectOption[] | null) => void;
57
- /**
58
- * 未选择时的提示
59
- * @defaultValue "请选择"
60
- */
61
- placeholder?: ReactNode;
62
- /** 占位提示的显示模式;floating 为浮动标签。 */
63
- placeholderMode?: InputPlaceholderMode;
64
- /** small / medium / large 高度为 22 / 30 / 38px;默认继承 Form,组件自身 size 优先 */
65
- size?: ControlSize;
66
- /**
67
- * 当前状态,用于选择对应的状态样式。
68
- * @defaultValue "default"
69
- */
70
- status?: ControlStatus;
71
- /**
72
- * 是否允许清空当前选择;单选弹框中同时允许再次点击已选项取消选择。显式设为 false 可禁用。
73
- * @defaultValue true
74
- */
75
- allowClear?: boolean;
76
- /**
77
- * 显示加载状态并禁用展开
78
- * @defaultValue false
79
- */
80
- loading?: boolean;
81
- /**
82
- 是否显示搜索输入框。
83
- * @defaultValue false
84
- */
85
- showSearch?: boolean;
86
- /** 在选项名称下方显示对应的 value。 */
87
- showValue?: boolean;
88
- /** 允许将搜索框内容作为自定义选项提交。 */
89
- allowInput?: boolean;
90
- /** 手动输入内容的最大长度 */
91
- inputMaxLength?: number;
92
- /**
93
- * 搜索框的占位提示文字。
94
- * @defaultValue "搜索选项"
95
- */
96
- searchPlaceholder?: string;
97
- /** 搜索条件变化或提交搜索时调用,具体参数见签名。 */
98
- onSearch?: (query: string) => void;
99
- /**
100
- * 自定义搜索匹配函数,返回 true 时保留该选项。
101
- * @defaultValue defaultFilterOption
102
- */
103
- filterOption?: (query: string, option: SelectOption) => boolean;
104
- /**
105
- * 多选时显示全选、反选;下拉操作栏固定在列表底部
106
- * @defaultValue true
107
- */
108
- showSelectAll?: boolean;
109
- /** 是否显示下拉面板底部的条数统计与操作行;默认单选隐藏、多选显示,不影响弹框模式。 */
110
- showActions?: boolean;
111
- /** 最多显示的标签数;空间不足时会继续折叠,并为 +N 预留宽度。 */
112
- maxTagCount?: number;
113
- /**
114
- * 长列表启用窗口化渲染
115
- * @defaultValue true
116
- */
117
- virtual?: boolean;
118
- /**
119
- * 启用虚拟滚动的选项数量
120
- * @defaultValue 100
121
- */
122
- virtualThreshold?: number;
123
- /**
124
- * 选项列表的最大可视高度,单位为像素。
125
- * @defaultValue 256
126
- */
127
- listHeight?: number;
128
- /**
129
- * 单个选项的高度,虚拟列表据此计算可见区域。
130
- * @defaultValue showValue ? 54 : 34
131
- */
132
- optionHeight?: number;
133
- /**
134
- * 没有匹配选项时的提示内容。
135
- * @defaultValue "暂无数据"
136
- */
137
- notFoundContent?: ReactNode;
138
- }
139
- /** 选择器组件。 */
140
- declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement>>;
141
-
142
- export { type SelectOption as S, type SelectChangeValue as a, type SelectProps as b, Select as c, type SelectMode as d, type SelectValue as e };
@@ -1,43 +0,0 @@
1
- // src/components/shared.ts
2
- import { createContext, useCallback, useContext, useState } from "react";
3
- var ControlSizeContext = createContext("medium");
4
- function useControlSize(size) {
5
- const inherited = useContext(ControlSizeContext);
6
- return size ?? inherited;
7
- }
8
- var PlaceholderModeContext = createContext("default");
9
- function usePlaceholderMode(mode) {
10
- const inherited = useContext(PlaceholderModeContext);
11
- return mode ?? inherited;
12
- }
13
- function useControllableState({ value, defaultValue, onChange }) {
14
- const [internalValue, setInternalValue] = useState(defaultValue);
15
- const controlled = value !== void 0;
16
- const currentValue = controlled ? value : internalValue;
17
- const setValue = useCallback((nextValue) => {
18
- if (Object.is(currentValue, nextValue)) return;
19
- if (!controlled) setInternalValue(nextValue);
20
- onChange?.(nextValue);
21
- }, [controlled, currentValue, onChange]);
22
- return [currentValue, setValue];
23
- }
24
-
25
- // src/components/FloatingPlaceholder.tsx
26
- import { jsx } from "react/jsx-runtime";
27
- function useFloatingPlaceholder({ mode, placeholder, filled, active = false }) {
28
- const enabled = usePlaceholderMode(mode) === "floating" && Boolean(placeholder);
29
- return {
30
- enabled,
31
- className: enabled ? ` sia-placeholder-floating${filled ? " sia-placeholder-floating--filled" : ""}${active ? " sia-placeholder-floating--active" : ""}` : "",
32
- label: enabled ? /* @__PURE__ */ jsx("span", { className: "sia-floating-placeholder", "aria-hidden": "true", children: placeholder }) : null
33
- };
34
- }
35
-
36
- export {
37
- ControlSizeContext,
38
- useControlSize,
39
- PlaceholderModeContext,
40
- usePlaceholderMode,
41
- useControllableState,
42
- useFloatingPlaceholder
43
- };