@fangxinyan/lumina 0.6.1 → 0.6.2

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 (246) hide show
  1. package/dist/Alert.cjs +3 -3
  2. package/dist/Alert.js +2 -2
  3. package/dist/AutoComplete.cjs +5 -4
  4. package/dist/AutoComplete.d.cts +1 -1
  5. package/dist/AutoComplete.d.ts +1 -1
  6. package/dist/AutoComplete.js +4 -3
  7. package/dist/Badge-DPGLV3D3.css +22 -0
  8. package/dist/Badge.cjs +10 -0
  9. package/dist/Badge.d.cts +18 -0
  10. package/dist/Badge.d.ts +18 -0
  11. package/dist/Badge.js +1 -0
  12. package/dist/Button.cjs +3 -7
  13. package/dist/Button.d.cts +5 -10
  14. package/dist/Button.d.ts +5 -10
  15. package/dist/Button.js +2 -2
  16. package/dist/Calendar.cjs +3 -3
  17. package/dist/Calendar.js +2 -2
  18. package/dist/{Card-RG7ECXL2.css → Card-6RMVIHWX.css} +7 -13
  19. package/dist/Card.cjs +2 -6
  20. package/dist/Card.d.cts +7 -11
  21. package/dist/Card.d.ts +7 -11
  22. package/dist/Card.js +1 -1
  23. package/dist/{Cascader-VSYEKQCG.css → Cascader-C2DFSMKJ.css} +64 -0
  24. package/dist/Cascader.cjs +5 -3
  25. package/dist/Cascader.d.cts +18 -2
  26. package/dist/Cascader.d.ts +18 -2
  27. package/dist/Cascader.js +4 -2
  28. package/dist/{Checkbox-SKJATVSN.css → Checkbox-U5EUDSYS.css} +5 -35
  29. package/dist/Checkbox.cjs +3 -7
  30. package/dist/Checkbox.d.cts +1 -18
  31. package/dist/Checkbox.d.ts +1 -18
  32. package/dist/Checkbox.js +2 -2
  33. package/dist/Collapse-66U5YJFY.css +53 -0
  34. package/dist/Collapse.cjs +11 -0
  35. package/dist/Collapse.d.cts +32 -0
  36. package/dist/Collapse.d.ts +32 -0
  37. package/dist/Collapse.js +2 -0
  38. package/dist/CommandPalette.cjs +5 -4
  39. package/dist/CommandPalette.js +4 -3
  40. package/dist/Drawer.cjs +3 -3
  41. package/dist/Drawer.js +2 -2
  42. package/dist/Empty-DC2LPORC.css +28 -0
  43. package/dist/Empty.cjs +2 -10
  44. package/dist/Empty.d.cts +1 -62
  45. package/dist/Empty.d.ts +1 -62
  46. package/dist/Empty.js +1 -1
  47. package/dist/Form.d.cts +1 -1
  48. package/dist/Form.d.ts +1 -1
  49. package/dist/Icon.cjs +179 -3
  50. package/dist/Icon.d.cts +96 -3
  51. package/dist/Icon.d.ts +96 -3
  52. package/dist/Icon.js +1 -1
  53. package/dist/Image.cjs +4 -4
  54. package/dist/Image.js +2 -2
  55. package/dist/{Input-33CAH4O6.css → Input-3G4ONWNU.css} +15 -42
  56. package/dist/Input.cjs +6 -5
  57. package/dist/Input.d.cts +19 -23
  58. package/dist/Input.d.ts +19 -23
  59. package/dist/Input.js +3 -2
  60. package/dist/InputNumber.cjs +5 -4
  61. package/dist/InputNumber.d.cts +1 -1
  62. package/dist/InputNumber.d.ts +1 -1
  63. package/dist/InputNumber.js +4 -3
  64. package/dist/Message-2MZ3LFPU.css +45 -0
  65. package/dist/Message.cjs +23 -0
  66. package/dist/Message.d.cts +54 -0
  67. package/dist/Message.d.ts +54 -0
  68. package/dist/Message.js +2 -0
  69. package/dist/{Modal-XSDMU4XJ.css → Modal-2QNDW4SO.css} +27 -0
  70. package/dist/Modal.cjs +4 -4
  71. package/dist/Modal.d.cts +28 -4
  72. package/dist/Modal.d.ts +28 -4
  73. package/dist/Modal.js +3 -3
  74. package/dist/Pagination.cjs +7 -5
  75. package/dist/Pagination.js +6 -4
  76. package/dist/Popover.cjs +2 -2
  77. package/dist/Popover.d.cts +11 -3
  78. package/dist/Popover.d.ts +11 -3
  79. package/dist/Popover.js +1 -1
  80. package/dist/Radio-GVFDPAZM.css +97 -0
  81. package/dist/Radio.cjs +14 -0
  82. package/dist/Radio.d.cts +36 -0
  83. package/dist/Radio.d.ts +36 -0
  84. package/dist/Radio.js +1 -0
  85. package/dist/{Select-J3CCVFJ7.css → Select-JVBQAZBG.css} +7 -23
  86. package/dist/Select.cjs +6 -4
  87. package/dist/Select.d.cts +25 -4
  88. package/dist/Select.d.ts +25 -4
  89. package/dist/Select.js +5 -3
  90. package/dist/Skeleton-CVWH2VWN.css +40 -0
  91. package/dist/Skeleton.cjs +10 -0
  92. package/dist/Skeleton.d.cts +30 -0
  93. package/dist/Skeleton.d.ts +30 -0
  94. package/dist/Skeleton.js +1 -0
  95. package/dist/Spin-3GJNMSIH.css +94 -0
  96. package/dist/Spin.cjs +10 -0
  97. package/dist/Spin.d.cts +20 -0
  98. package/dist/Spin.d.ts +20 -0
  99. package/dist/Spin.js +1 -0
  100. package/dist/{Table-2LPTOUIR.css → Table-ATJJQLKU.css} +0 -53
  101. package/dist/Table.cjs +9 -11
  102. package/dist/Table.d.cts +2 -21
  103. package/dist/Table.d.ts +2 -21
  104. package/dist/Table.js +8 -6
  105. package/dist/TablePro-3XVHYLSL.css +45 -0
  106. package/dist/TablePro.cjs +19 -0
  107. package/dist/TablePro.d.cts +21 -0
  108. package/dist/TablePro.d.ts +21 -0
  109. package/dist/TablePro.js +10 -0
  110. package/dist/{Tabs-RHK6XAFF.css → Tabs-BLSNI2T5.css} +0 -34
  111. package/dist/Tabs.cjs +2 -6
  112. package/dist/Tabs.d.cts +1 -16
  113. package/dist/Tabs.d.ts +1 -16
  114. package/dist/Tabs.js +1 -1
  115. package/dist/Tag-LB3OOJAO.css +29 -0
  116. package/dist/Tag.cjs +3 -7
  117. package/dist/Tag.d.cts +1 -11
  118. package/dist/Tag.d.ts +1 -11
  119. package/dist/Tag.js +2 -2
  120. package/dist/Textarea-YNET7IBH.css +54 -0
  121. package/dist/Textarea.cjs +15 -0
  122. package/dist/Textarea.d.cts +25 -0
  123. package/dist/Textarea.d.ts +25 -0
  124. package/dist/Textarea.js +2 -0
  125. package/dist/{Timeline-RHZAZKZ7.css → Timeline-3ZHOHPXT.css} +2 -2
  126. package/dist/Timeline.cjs +3 -3
  127. package/dist/Timeline.d.cts +1 -1
  128. package/dist/Timeline.d.ts +1 -1
  129. package/dist/Timeline.js +2 -2
  130. package/dist/Tooltip.cjs +2 -2
  131. package/dist/Tooltip.d.cts +17 -4
  132. package/dist/Tooltip.d.ts +17 -4
  133. package/dist/Tooltip.js +1 -1
  134. package/dist/Typography.cjs +7 -7
  135. package/dist/Typography.js +2 -2
  136. package/dist/{chunk-6Y5WRCPW.js → chunk-33NCTOEB.js} +1 -1
  137. package/dist/{chunk-Q2KG6SQK.cjs → chunk-35ZGBAA3.cjs} +3 -3
  138. package/dist/{chunk-Y3ZSG3SJ.cjs → chunk-3AS5B7MQ.cjs} +11 -30
  139. package/dist/{chunk-X2U7EKCS.cjs → chunk-3YJU3D5S.cjs} +28 -5
  140. package/dist/chunk-45VJGBGN.js +25 -0
  141. package/dist/{chunk-3D77MQHO.js → chunk-46VXFTEC.js} +3 -3
  142. package/dist/{chunk-OFGDUCT7.cjs → chunk-4WTU5P3O.cjs} +3 -3
  143. package/dist/{chunk-5A3RT4KD.js → chunk-5TKC6IEN.js} +4 -55
  144. package/dist/{chunk-62GU4OHH.cjs → chunk-5WAXZJG5.cjs} +12 -19
  145. package/dist/chunk-6ACKL3WH.cjs +138 -0
  146. package/dist/{chunk-32HBMXXV.cjs → chunk-6LZ54NPO.cjs} +70 -74
  147. package/dist/{chunk-UXH5PH3S.js → chunk-7NGMQIST.js} +2 -2
  148. package/dist/{chunk-R6BIF3FF.js → chunk-AWXCSX6J.js} +5 -23
  149. package/dist/chunk-AXZ7ELMA.js +41 -0
  150. package/dist/{chunk-G2XK57I7.cjs → chunk-B2KEZQ6S.cjs} +5 -5
  151. package/dist/chunk-CEJ7VBR6.js +283 -0
  152. package/dist/{chunk-WRDKOSSM.js → chunk-CHMCL7AV.js} +1 -1
  153. package/dist/{chunk-EBNRZRWY.cjs → chunk-CUXV6QNN.cjs} +5 -5
  154. package/dist/{chunk-ULOJ5UEY.js → chunk-CXWEOAVU.js} +1 -1
  155. package/dist/{chunk-TWGQZX2R.js → chunk-DQTSTJ6O.js} +3 -18
  156. package/dist/chunk-EIY7KEJ3.cjs +132 -0
  157. package/dist/{chunk-OI3CWXT3.js → chunk-EJBHR2P5.js} +3 -3
  158. package/dist/chunk-ELNT3CFO.js +64 -0
  159. package/dist/{chunk-TGHBKKSS.js → chunk-EQEJTN3V.js} +3 -43
  160. package/dist/chunk-F6RYCBQG.js +25 -0
  161. package/dist/{chunk-N57NXCNC.cjs → chunk-FBVVRTX2.cjs} +3 -44
  162. package/dist/chunk-FFZ6OMZI.js +110 -0
  163. package/dist/{chunk-73RQBWWW.js → chunk-FJNWUELL.js} +2 -2
  164. package/dist/chunk-GENABQYA.cjs +47 -0
  165. package/dist/chunk-GMN74OEY.cjs +63 -0
  166. package/dist/chunk-GNEZQMKH.js +218 -0
  167. package/dist/{chunk-Y47YTYQ3.cjs → chunk-HPFQXYKG.cjs} +159 -8
  168. package/dist/{chunk-4WRE4HQP.js → chunk-HWFM4MAT.js} +18 -6
  169. package/dist/{chunk-GY3BSHHS.cjs → chunk-HZSIUOCN.cjs} +2 -55
  170. package/dist/{chunk-YRZGXXWA.js → chunk-JD7A6VM3.js} +11 -17
  171. package/dist/chunk-K2KYM7LW.cjs +28 -0
  172. package/dist/{chunk-PWW64ZWO.cjs → chunk-KD4YYIIO.cjs} +1 -32
  173. package/dist/chunk-KGSADAOD.cjs +170 -0
  174. package/dist/{chunk-6ODY6MGL.cjs → chunk-MQV2XN4B.cjs} +5 -5
  175. package/dist/{chunk-OVZTG5CP.cjs → chunk-MT7UWY6T.cjs} +2 -2
  176. package/dist/chunk-MUXP7ASL.js +26 -0
  177. package/dist/{chunk-EEMWQX3C.cjs → chunk-NTS5L4NQ.cjs} +3 -3
  178. package/dist/{chunk-WBK6XIDJ.js → chunk-OBEKX4VR.js} +2 -32
  179. package/dist/chunk-OF3SGLZY.js +385 -0
  180. package/dist/chunk-ON4DEDMI.js +113 -0
  181. package/dist/chunk-OQBDU5I2.cjs +104 -0
  182. package/dist/{chunk-FIO65XYG.cjs → chunk-OYMJVU66.cjs} +48 -37
  183. package/dist/{chunk-5M26OVVY.js → chunk-PH3YECMF.js} +1 -1
  184. package/dist/chunk-Q5SZIU7Z.cjs +47 -0
  185. package/dist/chunk-QGHYQCF3.cjs +240 -0
  186. package/dist/chunk-QKQHZIF3.cjs +86 -0
  187. package/dist/{chunk-KYEY2LIB.cjs → chunk-SKMP2A5O.cjs} +3 -3
  188. package/dist/{chunk-IW5LW6XS.js → chunk-TEEFR2FD.js} +28 -5
  189. package/dist/{chunk-GOBWKQCX.cjs → chunk-TEG7NJHS.cjs} +3 -3
  190. package/dist/{chunk-2MNAZRWE.cjs → chunk-TJII7BQ2.cjs} +261 -2
  191. package/dist/{chunk-3TWNBJFI.cjs → chunk-TZJH5HBT.cjs} +6 -6
  192. package/dist/{chunk-D46EM4EN.js → chunk-UMDGS4BP.js} +1 -1
  193. package/dist/chunk-USQ43DJ5.js +147 -0
  194. package/dist/{chunk-G2K6ETP4.cjs → chunk-UUHFKIWP.cjs} +18 -6
  195. package/dist/chunk-WGZ2KJTZ.js +81 -0
  196. package/dist/{chunk-RPFMQZA5.js → chunk-WKKSAGYH.js} +39 -28
  197. package/dist/{chunk-54YLXXS2.js → chunk-XD3JGL5O.js} +2 -2
  198. package/dist/{chunk-DPNDHNKK.js → chunk-XTIN5545.js} +68 -72
  199. package/dist/{chunk-LZU33BX6.cjs → chunk-ZIP7F4UF.cjs} +4 -20
  200. package/dist/index.cjs +312 -122
  201. package/dist/index.d.cts +23 -17
  202. package/dist/index.d.ts +23 -17
  203. package/dist/index.js +34 -28
  204. package/dist/styles.css +313 -192
  205. package/docs/llms/badge.md +3 -3
  206. package/docs/llms/button.md +7 -38
  207. package/docs/llms/card.md +6 -12
  208. package/docs/llms/cascader.md +19 -0
  209. package/docs/llms/{accordion.md → collapse.md} +13 -11
  210. package/docs/llms/drawer.md +1 -1
  211. package/docs/llms/form.md +1 -1
  212. package/docs/llms/input.md +25 -16
  213. package/docs/llms/message.md +63 -0
  214. package/docs/llms/modal.md +30 -0
  215. package/docs/llms/popover.md +18 -1
  216. package/docs/llms/radio.md +37 -1
  217. package/docs/llms/select.md +20 -0
  218. package/docs/llms/spin.md +59 -0
  219. package/docs/llms/table.md +3 -3
  220. package/docs/llms/tooltip.md +16 -3
  221. package/docs/llms.md +5 -5
  222. package/package.json +17 -52
  223. package/dist/Accordion-REMDCQUD.css +0 -44
  224. package/dist/Accordion.cjs +0 -11
  225. package/dist/Accordion.d.cts +0 -33
  226. package/dist/Accordion.d.ts +0 -33
  227. package/dist/Accordion.js +0 -2
  228. package/dist/Empty-NQ72W3D7.css +0 -160
  229. package/dist/Tag-FGDY3W7E.css +0 -51
  230. package/dist/Toast-YSACW3EM.css +0 -45
  231. package/dist/Toast.cjs +0 -15
  232. package/dist/Toast.d.cts +0 -26
  233. package/dist/Toast.d.ts +0 -26
  234. package/dist/Toast.js +0 -2
  235. package/dist/chunk-3XTHKAEY.js +0 -39
  236. package/dist/chunk-DOMYUGJY.js +0 -132
  237. package/dist/chunk-HBWO3QKW.js +0 -74
  238. package/dist/chunk-JVS5ZALZ.js +0 -123
  239. package/dist/chunk-LIGHV4RC.cjs +0 -121
  240. package/dist/chunk-MCTIA6RZ.js +0 -99
  241. package/dist/chunk-NC4YUEXM.cjs +0 -145
  242. package/dist/chunk-NJ6B22YJ.js +0 -170
  243. package/dist/chunk-W64ARHLJ.cjs +0 -62
  244. package/dist/chunk-ZFW6OYAO.cjs +0 -100
  245. package/docs/llms/spinner.md +0 -58
  246. package/docs/llms/toast.md +0 -51
@@ -1,11 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var chunkLZU33BX6_cjs = require('./chunk-LZU33BX6.cjs');
3
+ var chunkZIP7F4UF_cjs = require('./chunk-ZIP7F4UF.cjs');
4
4
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
5
- var chunk2MNAZRWE_cjs = require('./chunk-2MNAZRWE.cjs');
5
+ var chunk6LZ54NPO_cjs = require('./chunk-6LZ54NPO.cjs');
6
+ var chunkTJII7BQ2_cjs = require('./chunk-TJII7BQ2.cjs');
6
7
  require('./tokens-BIIUTPKN.css');
7
8
  require('./shared-NJHRNLRH.css');
8
- require('./Select-J3CCVFJ7.css');
9
+ require('./Select-JVBQAZBG.css');
9
10
  var React = require('react');
10
11
  var reactDom = require('react-dom');
11
12
  var jsxRuntime = require('react/jsx-runtime');
@@ -32,9 +33,10 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
33
 
33
34
  var isGroup = (it) => Array.isArray(it.options);
34
35
  var flatten = (items) => items.flatMap((it) => isGroup(it) ? it.options : [it]);
35
- var defaultFilter = (input, opt) => {
36
+ var defaultFilter = (input, opt, optionFilterProp) => {
36
37
  const q = input.toLowerCase();
37
- const txt = opt.text ?? (typeof opt.label === "string" ? opt.label : String(opt.value));
38
+ const propValue = optionFilterProp ? opt[optionFilterProp] : void 0;
39
+ const txt = propValue != null ? String(propValue) : opt.text ?? (typeof opt.label === "string" ? opt.label : String(opt.value));
38
40
  return txt.toLowerCase().includes(q);
39
41
  };
40
42
  var SelectInner = (props, forwardedRef) => {
@@ -45,8 +47,11 @@ var SelectInner = (props, forwardedRef) => {
45
47
  size = "md",
46
48
  invalid,
47
49
  clearable,
50
+ allowClear,
48
51
  searchable,
52
+ showSearch,
49
53
  filterOption,
54
+ optionFilterProp,
50
55
  loading,
51
56
  emptyContent,
52
57
  open: openProp,
@@ -54,6 +59,8 @@ var SelectInner = (props, forwardedRef) => {
54
59
  onOpenChange,
55
60
  className = "",
56
61
  menuClassName = "",
62
+ popupClassName = "",
63
+ dropdownClassName = "",
57
64
  onKeyDown: onRootKeyDown,
58
65
  multiple,
59
66
  value: _value,
@@ -64,6 +71,9 @@ var SelectInner = (props, forwardedRef) => {
64
71
  ...rest
65
72
  } = props;
66
73
  const isMulti = multiple === true;
74
+ const mergedClearable = clearable ?? !!allowClear;
75
+ const mergedSearchable = searchable ?? !!showSearch;
76
+ const mergedMenuClassName = [menuClassName, popupClassName, dropdownClassName].filter(Boolean).join(" ");
67
77
  const [innerSingle, setInnerSingle] = React__namespace.useState(
68
78
  !isMulti ? props.defaultValue : void 0
69
79
  );
@@ -111,17 +121,18 @@ var SelectInner = (props, forwardedRef) => {
111
121
  return () => document.removeEventListener("mousedown", h);
112
122
  }, [open]);
113
123
  React__namespace.useEffect(() => {
114
- if (open && searchable) {
124
+ if (open && mergedSearchable) {
115
125
  requestAnimationFrame(() => searchRef.current?.focus());
116
126
  }
117
127
  if (!open) setActiveIdx(-1);
118
- }, [open, searchable]);
128
+ }, [open, mergedSearchable]);
119
129
  const allFlat = React__namespace.useMemo(() => flatten(options), [options]);
120
130
  const filteredFlat = React__namespace.useMemo(() => {
121
131
  if (!query.trim()) return allFlat;
122
- const f = filterOption ?? defaultFilter;
132
+ if (filterOption === false) return allFlat;
133
+ const f = typeof filterOption === "function" ? filterOption : (input, option) => defaultFilter(input, option, optionFilterProp);
123
134
  return allFlat.filter((o) => f(query, o));
124
- }, [allFlat, query, filterOption]);
135
+ }, [allFlat, query, filterOption, optionFilterProp]);
125
136
  const filteredItems = React__namespace.useMemo(() => {
126
137
  if (!query.trim()) return options;
127
138
  return options.map((it) => {
@@ -153,8 +164,10 @@ var SelectInner = (props, forwardedRef) => {
153
164
  if (isMulti) {
154
165
  if (!multiControlled) setInnerMulti([]);
155
166
  props.onChange?.([]);
167
+ props.onClear?.();
156
168
  } else {
157
169
  if (!singleControlled) setInnerSingle(void 0);
170
+ props.onChange?.(void 0);
158
171
  props.onClear?.();
159
172
  }
160
173
  };
@@ -203,7 +216,7 @@ var SelectInner = (props, forwardedRef) => {
203
216
  }
204
217
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "select-tags", children: [
205
218
  shown.map((o) => /* @__PURE__ */ jsxRuntime.jsx(
206
- chunkLZU33BX6_cjs.Tag,
219
+ chunkZIP7F4UF_cjs.Tag,
207
220
  {
208
221
  tone: "accent",
209
222
  removable: !disabled,
@@ -218,7 +231,7 @@ var SelectInner = (props, forwardedRef) => {
218
231
  },
219
232
  String(o.value)
220
233
  )),
221
- overflow > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkLZU33BX6_cjs.Tag, { tone: "neutral", children: [
234
+ overflow > 0 && /* @__PURE__ */ jsxRuntime.jsxs(chunkZIP7F4UF_cjs.Tag, { tone: "neutral", children: [
222
235
  "+",
223
236
  overflow
224
237
  ] })
@@ -227,12 +240,12 @@ var SelectInner = (props, forwardedRef) => {
227
240
  const current = allFlat.find((o) => o.value === singleValue);
228
241
  if (!current) return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "placeholder", children: placeholder });
229
242
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "select-value", children: [
230
- current.icon && /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: current.icon, size: 14 }),
243
+ current.icon && /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: current.icon, size: 14 }),
231
244
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: current.label })
232
245
  ] });
233
246
  };
234
247
  const hasSelection = isMulti ? (multiValue?.length ?? 0) > 0 : singleValue !== void 0;
235
- const showClear = clearable && hasSelection && !disabled;
248
+ const showClear = mergedClearable && hasSelection && !disabled;
236
249
  let renderIdx = -1;
237
250
  const renderOption = (o) => {
238
251
  renderIdx += 1;
@@ -250,13 +263,13 @@ var SelectInner = (props, forwardedRef) => {
250
263
  onMouseEnter: () => setActiveIdx(idx),
251
264
  onClick: () => isMulti ? toggleMulti(o) : pickSingle(o),
252
265
  children: [
253
- isMulti && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `menu-check ${sel ? "on" : ""}`, "aria-hidden": true, children: sel && /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "check", size: 11, stroke: 3 }) }),
254
- o.icon && /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: o.icon, size: 14 }),
266
+ isMulti && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `menu-check ${sel ? "on" : ""}`, "aria-hidden": true, children: sel && /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "check", size: 11, stroke: 3 }) }),
267
+ o.icon && /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: o.icon, size: 14 }),
255
268
  /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "menu-item-body", children: [
256
269
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "menu-item-label", children: o.label }),
257
270
  o.description && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "menu-item-desc", children: o.description })
258
271
  ] }),
259
- !isMulti && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tick", children: /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "check", size: 12, stroke: 3 }) })
272
+ !isMulti && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tick", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "check", size: 12, stroke: 3 }) })
260
273
  ]
261
274
  },
262
275
  String(o.value)
@@ -283,8 +296,8 @@ var SelectInner = (props, forwardedRef) => {
283
296
  onClick: () => !disabled && setOpen(!open),
284
297
  children: [
285
298
  renderTrigger(),
286
- showClear && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "select-clear", role: "button", "aria-label": "Clear", onClick: clearAll, children: /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "x", size: 12 }) }),
287
- /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "chevDown", size: 14, className: "select-caret" })
299
+ showClear && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "select-clear", role: "button", "aria-label": "Clear", onClick: clearAll, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "x", size: 12 }) }),
300
+ /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "chevDown", size: 14, className: "select-caret" })
288
301
  ]
289
302
  }
290
303
  ),
@@ -293,35 +306,33 @@ var SelectInner = (props, forwardedRef) => {
293
306
  "div",
294
307
  {
295
308
  ref: menuRef,
296
- className: `menu ${menuClassName}`,
309
+ className: `menu ${mergedMenuClassName}`,
297
310
  role: "listbox",
298
311
  "aria-multiselectable": isMulti || void 0,
299
312
  style: floatingStyle,
300
313
  children: [
301
- searchable && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "menu-search", children: [
302
- /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "search", size: 13 }),
303
- /* @__PURE__ */ jsxRuntime.jsx(
304
- "input",
305
- {
306
- ref: searchRef,
307
- type: "text",
308
- value: query,
309
- placeholder: "\u641C\u7D22...",
310
- onChange: (e) => setQuery(e.target.value),
311
- onKeyDown: (e) => {
312
- if (e.key === "Escape" || e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter") {
313
- e.preventDefault();
314
- onKeyDown(e);
315
- }
314
+ mergedSearchable && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "menu-search", children: /* @__PURE__ */ jsxRuntime.jsx(
315
+ chunk6LZ54NPO_cjs.Input,
316
+ {
317
+ ref: searchRef,
318
+ size: "sm",
319
+ leadingIcon: "search",
320
+ value: query,
321
+ placeholder: "\u641C\u7D22...",
322
+ onValueChange: setQuery,
323
+ onKeyDown: (e) => {
324
+ if (e.key === "Escape" || e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Enter") {
325
+ e.preventDefault();
326
+ onKeyDown(e);
316
327
  }
317
328
  }
318
- )
319
- ] }),
329
+ }
330
+ ) }),
320
331
  loading ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "menu-state", children: [
321
332
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "menu-state-ico", children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spinner" }) }),
322
333
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u52A0\u8F7D\u4E2D..." })
323
334
  ] }) : filteredItems.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "menu-state", children: [
324
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "menu-state-ico", children: /* @__PURE__ */ jsxRuntime.jsx(chunk2MNAZRWE_cjs.Icon, { name: "search", size: 16 }) }),
335
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "menu-state-ico", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "search", size: 16 }) }),
325
336
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: emptyContent ?? "\u6682\u65E0\u5339\u914D\u9879" })
326
337
  ] }) : filteredItems.map(
327
338
  (it, gi) => isGroup(it) ? /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
@@ -1,4 +1,4 @@
1
- import { Icon } from './chunk-NJ6B22YJ.js';
1
+ import { Icon } from './chunk-OF3SGLZY.js';
2
2
  import './tokens-BIIUTPKN.css';
3
3
  import './shared-NJHRNLRH.css';
4
4
  import './Image-4MN34O6P.css';
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ require('./tokens-BIIUTPKN.css');
4
+ require('./shared-NJHRNLRH.css');
5
+ require('./Badge-DPGLV3D3.css');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ // src/components/Badge/Badge.tsx
30
+ var Badge = React__namespace.forwardRef(({
31
+ count,
32
+ max = 99,
33
+ dot,
34
+ tone = "danger",
35
+ children,
36
+ className = "",
37
+ ...rest
38
+ }, ref) => {
39
+ const show = dot || typeof count === "number" && count > 0;
40
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { ref, className: `badge-wrap ${className}`, ...rest, children: [
41
+ children,
42
+ show && /* @__PURE__ */ jsxRuntime.jsx("span", { className: `badge ${tone} ${dot ? "dot" : ""}`, children: !dot && (count > max ? `${max}+` : count) })
43
+ ] });
44
+ });
45
+ Badge.displayName = "Badge";
46
+
47
+ exports.Badge = Badge;
@@ -0,0 +1,240 @@
1
+ 'use strict';
2
+
3
+ var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
4
+ var chunk6LZ54NPO_cjs = require('./chunk-6LZ54NPO.cjs');
5
+ var chunkTJII7BQ2_cjs = require('./chunk-TJII7BQ2.cjs');
6
+ require('./tokens-BIIUTPKN.css');
7
+ require('./shared-NJHRNLRH.css');
8
+ require('./Cascader-C2DFSMKJ.css');
9
+ var React = require('react');
10
+ var reactDom = require('react-dom');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ function _interopNamespace(e) {
14
+ if (e && e.__esModule) return e;
15
+ var n = Object.create(null);
16
+ if (e) {
17
+ Object.keys(e).forEach(function (k) {
18
+ if (k !== 'default') {
19
+ var d = Object.getOwnPropertyDescriptor(e, k);
20
+ Object.defineProperty(n, k, d.get ? d : {
21
+ enumerable: true,
22
+ get: function () { return e[k]; }
23
+ });
24
+ }
25
+ });
26
+ }
27
+ n.default = e;
28
+ return Object.freeze(n);
29
+ }
30
+
31
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
+
33
+ var collectPaths = (options, prefix = []) => options.flatMap((option) => {
34
+ const next = [...prefix, option];
35
+ if (option.children?.length) return collectPaths(option.children, next);
36
+ return [next];
37
+ });
38
+ var defaultSearchFilter = (inputValue, path) => {
39
+ const q = inputValue.trim().toLowerCase();
40
+ if (!q) return true;
41
+ return path.map((option) => String(option.label ?? option.value)).join(" / ").toLowerCase().includes(q);
42
+ };
43
+ var Cascader = React__namespace.forwardRef(({
44
+ options,
45
+ value,
46
+ defaultValue = [],
47
+ onChange,
48
+ placeholder = "\u8BF7\u9009\u62E9",
49
+ disabled,
50
+ allowClear,
51
+ onClear,
52
+ changeOnSelect,
53
+ showSearch,
54
+ popupClassName = "",
55
+ dropdownClassName = "",
56
+ className = "",
57
+ ...rest
58
+ }, ref) => {
59
+ const [inner, setInner] = React__namespace.useState(defaultValue);
60
+ const isControlled = value !== void 0;
61
+ const cur = isControlled ? value : inner;
62
+ const [open, setOpen] = React__namespace.useState(false);
63
+ const [path, setPath] = React__namespace.useState(cur);
64
+ const [query, setQuery] = React__namespace.useState("");
65
+ const panelRef = React__namespace.useRef(null);
66
+ const searchRef = React__namespace.useRef(null);
67
+ const searchConfig = typeof showSearch === "object" ? showSearch : {};
68
+ const searchable = !!showSearch;
69
+ const { triggerRef, floatingStyle } = chunkYB3IWIOJ_cjs.useFloating({
70
+ open,
71
+ placement: "bottom",
72
+ panelWidth: 520,
73
+ panelHeight: 260
74
+ });
75
+ const setTriggerRef = React__namespace.useCallback(
76
+ (node) => {
77
+ triggerRef.current = node;
78
+ if (typeof ref === "function") ref(node);
79
+ else if (ref) ref.current = node;
80
+ },
81
+ [ref, triggerRef]
82
+ );
83
+ React__namespace.useEffect(() => {
84
+ const h = (e) => {
85
+ const t = e.target;
86
+ if (triggerRef.current?.contains(t)) return;
87
+ if (panelRef.current?.contains(t)) return;
88
+ setOpen(false);
89
+ };
90
+ document.addEventListener("mousedown", h);
91
+ return () => document.removeEventListener("mousedown", h);
92
+ }, []);
93
+ React__namespace.useEffect(() => {
94
+ if (open) setPath(cur);
95
+ if (!open) setQuery("");
96
+ }, [open, cur]);
97
+ React__namespace.useEffect(() => {
98
+ if (!open || !searchable) return;
99
+ requestAnimationFrame(() => searchRef.current?.focus());
100
+ }, [open, searchable]);
101
+ const columns = [options];
102
+ let cursor = options;
103
+ for (const v of path) {
104
+ const match = cursor.find((o) => o.value === v);
105
+ if (match && match.children) {
106
+ cursor = match.children;
107
+ columns.push(cursor);
108
+ } else break;
109
+ }
110
+ const selectedOptionsForPath = (nextPath) => {
111
+ const selected = [];
112
+ let list2 = options;
113
+ for (const item of nextPath) {
114
+ const match = list2.find((option) => option.value === item);
115
+ if (!match) break;
116
+ selected.push(match);
117
+ list2 = match.children ?? [];
118
+ }
119
+ return selected;
120
+ };
121
+ const commit = (nextPath, closeAfterSelect) => {
122
+ if (!isControlled) setInner(nextPath);
123
+ onChange?.(nextPath, selectedOptionsForPath(nextPath));
124
+ if (closeAfterSelect) setOpen(false);
125
+ };
126
+ const pick = (depth, val, hasChildren) => {
127
+ const np = [...path.slice(0, depth), val];
128
+ setPath(np);
129
+ if (!hasChildren || changeOnSelect) commit(np, !hasChildren);
130
+ };
131
+ const clear = (e) => {
132
+ e.stopPropagation();
133
+ if (disabled) return;
134
+ setPath([]);
135
+ if (!isControlled) setInner([]);
136
+ onChange?.([], []);
137
+ onClear?.();
138
+ };
139
+ const labels = [];
140
+ let list = options;
141
+ for (const v of cur) {
142
+ const m = list.find((o) => o.value === v);
143
+ if (!m) break;
144
+ labels.push(m.label);
145
+ if (!m.children) break;
146
+ list = m.children;
147
+ }
148
+ const allPaths = React__namespace.useMemo(() => collectPaths(options), [options]);
149
+ const matchedPaths = React__namespace.useMemo(() => {
150
+ if (!query.trim()) return [];
151
+ const filter = searchConfig.filter ?? defaultSearchFilter;
152
+ const result = allPaths.filter((itemPath) => filter(query, itemPath));
153
+ const limit = searchConfig.limit === false ? result.length : searchConfig.limit ?? 50;
154
+ return result.slice(0, limit);
155
+ }, [allPaths, query, searchConfig.filter, searchConfig.limit]);
156
+ const panelClassName = [
157
+ "cascader-panel",
158
+ searchable && "with-search",
159
+ popupClassName,
160
+ dropdownClassName
161
+ ].filter(Boolean).join(" ");
162
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: setTriggerRef, className: `cascader ${open ? "open" : ""} ${className}`, ...rest, children: [
163
+ /* @__PURE__ */ jsxRuntime.jsxs(
164
+ "button",
165
+ {
166
+ type: "button",
167
+ className: `cascader-trigger ${labels.length === 0 ? "placeholder" : ""}`,
168
+ disabled,
169
+ onClick: () => !disabled && setOpen((o) => !o),
170
+ children: [
171
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { flex: 1 }, children: labels.length ? labels.map((l, i) => /* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
172
+ i > 0 && " / ",
173
+ l
174
+ ] }, i)) : placeholder }),
175
+ !!allowClear && labels.length > 0 && !disabled && /* @__PURE__ */ jsxRuntime.jsx(
176
+ "span",
177
+ {
178
+ className: "cascader-clear",
179
+ role: "button",
180
+ "aria-label": "Clear",
181
+ onClick: clear,
182
+ children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "x", size: 12 })
183
+ }
184
+ ),
185
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { position: "absolute", right: 12, color: "var(--fg-subtle)" }, children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "chevDown", size: 14 }) })
186
+ ]
187
+ }
188
+ ),
189
+ open && typeof document !== "undefined" && reactDom.createPortal(
190
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: panelRef, className: panelClassName, style: floatingStyle, children: [
191
+ searchable && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cascader-search", children: /* @__PURE__ */ jsxRuntime.jsx(
192
+ chunk6LZ54NPO_cjs.Input,
193
+ {
194
+ ref: searchRef,
195
+ size: "sm",
196
+ leadingIcon: "search",
197
+ value: query,
198
+ onValueChange: setQuery,
199
+ placeholder: "\u641C\u7D22..."
200
+ }
201
+ ) }),
202
+ searchable && query.trim() ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cascader-search-list", children: matchedPaths.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cascader-empty", children: "\u6682\u65E0\u5339\u914D\u9879" }) : matchedPaths.map((itemPath) => /* @__PURE__ */ jsxRuntime.jsx(
203
+ "button",
204
+ {
205
+ type: "button",
206
+ className: "cascader-search-item",
207
+ onClick: () => commit(itemPath.map((item) => item.value), true),
208
+ children: searchConfig.render ? searchConfig.render(query, itemPath) : itemPath.map((item) => item.label).map((label, index) => /* @__PURE__ */ jsxRuntime.jsxs(React__namespace.Fragment, { children: [
209
+ index > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "cascader-path-sep", children: "/" }),
210
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
211
+ ] }, index))
212
+ },
213
+ itemPath.map((item) => item.value).join("__")
214
+ )) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cascader-columns", children: columns.map((col, depth) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "cascader-col", children: col.map((o) => {
215
+ const isActive = path[depth] === o.value;
216
+ const hasChildren = !!(o.children && o.children.length);
217
+ return /* @__PURE__ */ jsxRuntime.jsxs(
218
+ "button",
219
+ {
220
+ type: "button",
221
+ className: `cascader-item ${isActive ? "active" : ""}`,
222
+ disabled: o.disabled,
223
+ onClick: () => pick(depth, o.value, hasChildren),
224
+ children: [
225
+ o.icon && /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: o.icon, size: 13 }),
226
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: o.label }),
227
+ hasChildren && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "chev", children: /* @__PURE__ */ jsxRuntime.jsx(chunkTJII7BQ2_cjs.Icon, { name: "chevRight", size: 12 }) })
228
+ ]
229
+ },
230
+ o.value
231
+ );
232
+ }) }, depth)) })
233
+ ] }),
234
+ document.body
235
+ )
236
+ ] });
237
+ });
238
+ Cascader.displayName = "Cascader";
239
+
240
+ exports.Cascader = Cascader;
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ require('./tokens-BIIUTPKN.css');
4
+ require('./shared-NJHRNLRH.css');
5
+ require('./Spin-3GJNMSIH.css');
6
+ var React = require('react');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ function _interopNamespace(e) {
10
+ if (e && e.__esModule) return e;
11
+ var n = Object.create(null);
12
+ if (e) {
13
+ Object.keys(e).forEach(function (k) {
14
+ if (k !== 'default') {
15
+ var d = Object.getOwnPropertyDescriptor(e, k);
16
+ Object.defineProperty(n, k, d.get ? d : {
17
+ enumerable: true,
18
+ get: function () { return e[k]; }
19
+ });
20
+ }
21
+ });
22
+ }
23
+ n.default = e;
24
+ return Object.freeze(n);
25
+ }
26
+
27
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
28
+
29
+ // src/components/Spin/Spin.tsx
30
+ var SIZE_PX = {
31
+ small: 14,
32
+ default: 20,
33
+ large: 32
34
+ };
35
+ var resolveSize = (size) => typeof size === "number" ? size : SIZE_PX[size];
36
+ var Spin = React__namespace.forwardRef(({
37
+ size = "default",
38
+ tone = "accent",
39
+ tip,
40
+ label,
41
+ variant = "ring",
42
+ spinning = true,
43
+ className = "",
44
+ style,
45
+ ...rest
46
+ }, ref) => {
47
+ const text = label ?? tip;
48
+ const px = resolveSize(size);
49
+ const indicatorClass = `spin ${variant} ${tone}`;
50
+ const rootClass = text ? `spin-wrap ${className}`.trim() : `${indicatorClass} ${className}`.trim();
51
+ const indicatorStyle = variant === "dots" ? { fontSize: px } : { width: px, height: px };
52
+ if (!spinning && !text) return null;
53
+ const renderIndicator = (extraProps = {}) => {
54
+ if (!spinning) return null;
55
+ const {
56
+ className: extraClassName,
57
+ style: extraStyle,
58
+ ...indicatorRest
59
+ } = extraProps;
60
+ const finalClassName = extraClassName ?? indicatorClass;
61
+ const finalStyle = { ...indicatorStyle, ...extraStyle };
62
+ if (variant === "dots") {
63
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: finalClassName, style: finalStyle, "aria-label": "Loading", ...indicatorRest, children: [
64
+ /* @__PURE__ */ jsxRuntime.jsx("i", {}),
65
+ /* @__PURE__ */ jsxRuntime.jsx("i", {}),
66
+ /* @__PURE__ */ jsxRuntime.jsx("i", {})
67
+ ] });
68
+ }
69
+ return /* @__PURE__ */ jsxRuntime.jsx("span", { className: finalClassName, style: finalStyle, "aria-label": "Loading", ...indicatorRest });
70
+ };
71
+ if (!text) {
72
+ return renderIndicator({
73
+ ref,
74
+ className: rootClass,
75
+ style: { ...indicatorStyle, ...style },
76
+ ...rest
77
+ });
78
+ }
79
+ return /* @__PURE__ */ jsxRuntime.jsxs("span", { ref, className: rootClass, style, ...rest, children: [
80
+ renderIndicator(),
81
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "spin-label", children: text })
82
+ ] });
83
+ });
84
+ Spin.displayName = "Spin";
85
+
86
+ exports.Spin = Spin;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkYB3IWIOJ_cjs = require('./chunk-YB3IWIOJ.cjs');
4
- var chunk32HBMXXV_cjs = require('./chunk-32HBMXXV.cjs');
4
+ var chunk6LZ54NPO_cjs = require('./chunk-6LZ54NPO.cjs');
5
5
  require('./tokens-BIIUTPKN.css');
6
6
  require('./shared-NJHRNLRH.css');
7
7
  require('./AutoComplete-P5KZMZO5.css');
@@ -168,7 +168,7 @@ var AutoComplete = React__namespace.forwardRef(
168
168
  ) : null;
169
169
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { ref: triggerRef, className: `autocomplete ${className}`, children: [
170
170
  /* @__PURE__ */ jsxRuntime.jsx(
171
- chunk32HBMXXV_cjs.Input,
171
+ chunk6LZ54NPO_cjs.Input,
172
172
  {
173
173
  ref,
174
174
  ...rest,
@@ -180,7 +180,7 @@ var AutoComplete = React__namespace.forwardRef(
180
180
  disabled,
181
181
  allowClear,
182
182
  autoFocus,
183
- onChange: handleInput,
183
+ onValueChange: handleInput,
184
184
  onFocus: (event) => {
185
185
  onFocus?.(event);
186
186
  if (!disabled) setOpen(true);