@lobehub/ui 6.0.0-beta.6 → 6.0.0-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 (682) hide show
  1. package/es/Accordion/Accordion.mjs +3 -3
  2. package/es/Accordion/Accordion.mjs.map +1 -1
  3. package/es/Accordion/atoms.mjs +2 -2
  4. package/es/Accordion/atoms.mjs.map +1 -1
  5. package/es/Accordion/style.d.mts +1 -1
  6. package/es/ActionIcon/ActionIcon.mjs +2 -2
  7. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  8. package/es/Alert/Alert.mjs +5 -5
  9. package/es/Alert/Alert.mjs.map +1 -1
  10. package/es/AutoComplete/AutoComplete.mjs +5 -5
  11. package/es/AutoComplete/AutoComplete.mjs.map +1 -1
  12. package/es/AutoComplete/style.mjs +2 -2
  13. package/es/AutoComplete/style.mjs.map +1 -1
  14. package/es/Avatar/Avatar.mjs +2 -2
  15. package/es/Avatar/Avatar.mjs.map +1 -1
  16. package/es/Avatar/AvatarGroup/index.mjs +2 -2
  17. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  18. package/es/Breadcrumb/Breadcrumb.mjs +2 -2
  19. package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
  20. package/es/Button/Button.mjs +1 -1
  21. package/es/Button/Button.mjs.map +1 -1
  22. package/es/Button/style.d.mts +8 -1
  23. package/es/Button/style.mjs +41 -18
  24. package/es/Button/style.mjs.map +1 -1
  25. package/es/Checkbox/Checkbox.mjs +3 -3
  26. package/es/Checkbox/Checkbox.mjs.map +1 -1
  27. package/es/CodeDiff/DiffPanel.mjs +4 -4
  28. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  29. package/es/CodeEditor/CodeEditor.mjs +4 -4
  30. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  31. package/es/ColorPicker/ColorInputs.mjs +136 -0
  32. package/es/ColorPicker/ColorInputs.mjs.map +1 -0
  33. package/es/ColorPicker/ColorPanel.mjs +145 -0
  34. package/es/ColorPicker/ColorPanel.mjs.map +1 -0
  35. package/es/ColorPicker/ColorPicker.mjs +62 -199
  36. package/es/ColorPicker/ColorPicker.mjs.map +1 -1
  37. package/es/ColorPicker/SaturationArea.mjs +2 -1
  38. package/es/ColorPicker/SaturationArea.mjs.map +1 -1
  39. package/es/ColorPicker/Swatch.mjs +24 -0
  40. package/es/ColorPicker/Swatch.mjs.map +1 -0
  41. package/es/ColorPicker/Swatches.mjs +66 -0
  42. package/es/ColorPicker/Swatches.mjs.map +1 -0
  43. package/es/ColorPicker/Trigger.mjs +112 -0
  44. package/es/ColorPicker/Trigger.mjs.map +1 -0
  45. package/es/ColorPicker/color.mjs +25 -1
  46. package/es/ColorPicker/color.mjs.map +1 -1
  47. package/es/ColorPicker/recent.mjs +25 -0
  48. package/es/ColorPicker/recent.mjs.map +1 -0
  49. package/es/ColorPicker/style.mjs +269 -70
  50. package/es/ColorPicker/style.mjs.map +1 -1
  51. package/es/ColorPicker/type.d.mts +15 -0
  52. package/es/ColorSwatches/type.d.mts +2 -2
  53. package/es/ContextMenu/ContextMenuHost.mjs +2 -2
  54. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  55. package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
  56. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  57. package/es/ContextMenu/renderItems.mjs +3 -3
  58. package/es/ContextMenu/renderItems.mjs.map +1 -1
  59. package/es/DatePicker/DatePicker.d.mts +7 -2
  60. package/es/DatePicker/DatePicker.mjs +13 -85
  61. package/es/DatePicker/DatePicker.mjs.map +1 -1
  62. package/es/DatePicker/DateRangePicker.d.mts +3 -2
  63. package/es/DatePicker/DateRangePicker.mjs +3 -125
  64. package/es/DatePicker/DateRangePicker.mjs.map +1 -1
  65. package/es/DatePicker/PurePanel.mjs +65 -0
  66. package/es/DatePicker/PurePanel.mjs.map +1 -0
  67. package/es/DatePicker/RangePicker.mjs +115 -0
  68. package/es/DatePicker/RangePicker.mjs.map +1 -0
  69. package/es/DatePicker/SinglePicker.mjs +132 -0
  70. package/es/DatePicker/SinglePicker.mjs.map +1 -0
  71. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
  72. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
  73. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
  74. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
  75. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
  76. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
  77. package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
  78. package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
  79. package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
  80. package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
  81. package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
  82. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
  83. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
  84. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
  85. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
  86. package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
  87. package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
  88. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
  89. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
  90. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
  91. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
  92. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
  93. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
  94. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
  95. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
  96. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
  97. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
  98. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
  99. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
  100. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
  101. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
  102. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
  103. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
  104. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
  105. package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
  106. package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
  107. package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
  108. package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
  109. package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
  110. package/es/DatePicker/core/PickerInput/context.mjs +7 -0
  111. package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
  112. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
  113. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
  114. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
  115. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
  116. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
  117. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
  118. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
  119. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
  120. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
  121. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
  122. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
  123. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
  124. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
  125. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
  126. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
  127. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
  128. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
  129. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
  130. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
  131. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
  132. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
  133. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
  134. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
  135. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
  136. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
  137. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
  138. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
  139. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
  140. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
  141. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
  142. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
  143. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
  144. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
  145. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
  146. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
  147. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
  148. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
  149. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
  150. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
  151. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
  152. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
  153. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
  154. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
  155. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
  156. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
  157. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
  158. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
  159. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
  160. package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
  161. package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
  162. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
  163. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
  164. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
  165. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
  166. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
  167. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
  168. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
  169. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
  170. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
  171. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
  172. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
  173. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
  174. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
  175. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
  176. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
  177. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
  178. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
  179. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
  180. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
  181. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
  182. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
  183. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
  184. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
  185. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
  186. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
  187. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
  188. package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
  189. package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
  190. package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
  191. package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
  192. package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
  193. package/es/DatePicker/core/PickerPopup.mjs +118 -0
  194. package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
  195. package/es/DatePicker/core/generate/dayjs.mjs +109 -0
  196. package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
  197. package/es/DatePicker/core/generate/index.d.mts +40 -0
  198. package/es/DatePicker/core/hooks/react.mjs +58 -0
  199. package/es/DatePicker/core/hooks/react.mjs.map +1 -0
  200. package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
  201. package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
  202. package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
  203. package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
  204. package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
  205. package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
  206. package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
  207. package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
  208. package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
  209. package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
  210. package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
  211. package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
  212. package/es/DatePicker/core/index.d.mts +5 -0
  213. package/es/DatePicker/core/index.mjs +9 -0
  214. package/es/DatePicker/core/index.mjs.map +1 -0
  215. package/es/DatePicker/core/interface.d.mts +325 -0
  216. package/es/DatePicker/core/locale/common.mjs +11 -0
  217. package/es/DatePicker/core/locale/common.mjs.map +1 -0
  218. package/es/DatePicker/core/locale/en_US.mjs +39 -0
  219. package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
  220. package/es/DatePicker/core/utils/common.mjs +73 -0
  221. package/es/DatePicker/core/utils/common.mjs.map +1 -0
  222. package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
  223. package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
  224. package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
  225. package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
  226. package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
  227. package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
  228. package/es/DatePicker/generateConfig.mjs +12 -0
  229. package/es/DatePicker/generateConfig.mjs.map +1 -0
  230. package/es/DatePicker/generatePicker.d.mts +12 -0
  231. package/es/DatePicker/generatePicker.mjs +22 -0
  232. package/es/DatePicker/generatePicker.mjs.map +1 -0
  233. package/es/DatePicker/index.d.mts +6 -3
  234. package/es/DatePicker/index.mjs +3 -1
  235. package/es/DatePicker/locale.d.mts +15 -0
  236. package/es/DatePicker/locale.mjs +143 -0
  237. package/es/DatePicker/locale.mjs.map +1 -0
  238. package/es/DatePicker/semantic.mjs +29 -0
  239. package/es/DatePicker/semantic.mjs.map +1 -0
  240. package/es/DatePicker/style.mjs +3 -155
  241. package/es/DatePicker/style.mjs.map +1 -1
  242. package/es/DatePicker/type.d.mts +268 -27
  243. package/es/DatePicker/usePanelKeyboard.mjs +230 -0
  244. package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
  245. package/es/DatePicker/usePickerShared.mjs +106 -0
  246. package/es/DatePicker/usePickerShared.mjs.map +1 -0
  247. package/es/DatePicker/usePresetActive.mjs +48 -0
  248. package/es/DatePicker/usePresetActive.mjs.map +1 -0
  249. package/es/DraggablePanel/atoms.mjs +5 -5
  250. package/es/DraggablePanel/atoms.mjs.map +1 -1
  251. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  252. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  253. package/es/Drawer/Drawer.mjs +2 -2
  254. package/es/Drawer/Drawer.mjs.map +1 -1
  255. package/es/Drawer/atoms.mjs +6 -6
  256. package/es/Drawer/atoms.mjs.map +1 -1
  257. package/es/DropdownMenu/atoms.mjs +22 -22
  258. package/es/DropdownMenu/atoms.mjs.map +1 -1
  259. package/es/DropdownMenu/sharedStyle.mjs +2 -2
  260. package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
  261. package/es/EditableText/EditableText.mjs +1 -1
  262. package/es/EditorSlashMenu/atoms.mjs +12 -12
  263. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  264. package/es/EmojiPicker/EmojiPicker.mjs +7 -7
  265. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  266. package/es/EmojiPicker/loadEmojiData.mjs +6 -0
  267. package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
  268. package/es/FloatingPanel/FloatingPanel.mjs +2 -2
  269. package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
  270. package/es/FormKit/List.mjs +2 -2
  271. package/es/FormKit/List.mjs.map +1 -1
  272. package/es/Highlighter/FullFeatured.mjs +2 -2
  273. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  274. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
  275. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  276. package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
  277. package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
  278. package/es/Highlighter/style.mjs +2 -2
  279. package/es/Highlighter/style.mjs.map +1 -1
  280. package/es/HtmlPreview/HtmlPreview.mjs +2 -2
  281. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  282. package/es/Icon/Icon.mjs +2 -2
  283. package/es/Icon/Icon.mjs.map +1 -1
  284. package/es/List/ListRow.mjs +3 -3
  285. package/es/List/ListRow.mjs.map +1 -1
  286. package/es/Markdown/Markdown.mjs +2 -2
  287. package/es/Markdown/Markdown.mjs.map +1 -1
  288. package/es/Markdown/Typography.mjs +2 -2
  289. package/es/Markdown/Typography.mjs.map +1 -1
  290. package/es/Mermaid/FullFeatured.mjs +2 -2
  291. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  292. package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
  293. package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
  294. package/es/Modal/atoms.mjs +6 -6
  295. package/es/Modal/atoms.mjs.map +1 -1
  296. package/es/Pagination/Pagination.mjs +181 -41
  297. package/es/Pagination/Pagination.mjs.map +1 -1
  298. package/es/Pagination/helpers.mjs +3 -3
  299. package/es/Pagination/helpers.mjs.map +1 -1
  300. package/es/Pagination/index.d.mts +2 -2
  301. package/es/Pagination/marker.stylex.mjs +9 -0
  302. package/es/Pagination/marker.stylex.mjs.map +1 -0
  303. package/es/Pagination/style.mjs +74 -4
  304. package/es/Pagination/style.mjs.map +1 -1
  305. package/es/Pagination/type.d.mts +41 -3
  306. package/es/Popover/PopoverInGroup.mjs +2 -2
  307. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  308. package/es/Popover/atoms.mjs +6 -6
  309. package/es/Popover/atoms.mjs.map +1 -1
  310. package/es/ProTable/ProTable.d.mts +11 -0
  311. package/es/ProTable/ProTable.mjs +208 -0
  312. package/es/ProTable/ProTable.mjs.map +1 -0
  313. package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
  314. package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
  315. package/es/ProTable/hooks/useColumnsState.mjs +37 -0
  316. package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
  317. package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
  318. package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
  319. package/es/ProTable/hooks/useDensity.mjs +15 -0
  320. package/es/ProTable/hooks/useDensity.mjs.map +1 -0
  321. package/es/ProTable/hooks/useFetchData.mjs +97 -0
  322. package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
  323. package/es/ProTable/hooks/useFullscreen.mjs +22 -0
  324. package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
  325. package/es/ProTable/hooks/usePageInfo.mjs +35 -0
  326. package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
  327. package/es/ProTable/hooks/useProColumns.mjs +123 -0
  328. package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
  329. package/es/ProTable/hooks/useProLoading.mjs +19 -0
  330. package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
  331. package/es/ProTable/hooks/useProLocale.mjs +22 -0
  332. package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
  333. package/es/ProTable/hooks/useProRequest.mjs +137 -0
  334. package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
  335. package/es/ProTable/hooks/useRowCache.mjs +11 -0
  336. package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
  337. package/es/ProTable/hooks/useSearchForm.mjs +141 -0
  338. package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
  339. package/es/ProTable/hooks/useTableBindings.mjs +39 -0
  340. package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
  341. package/es/ProTable/hooks/useTableSelection.mjs +14 -0
  342. package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
  343. package/es/ProTable/index.d.mts +4 -0
  344. package/es/ProTable/index.d.ts +1 -0
  345. package/es/ProTable/index.js +1 -0
  346. package/es/ProTable/index.mjs +3 -0
  347. package/es/ProTable/locale.d.mts +15 -0
  348. package/es/ProTable/locale.mjs +66 -0
  349. package/es/ProTable/locale.mjs.map +1 -0
  350. package/es/ProTable/parts/ColumnSetting.mjs +155 -0
  351. package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
  352. package/es/ProTable/parts/FieldControl.mjs +117 -0
  353. package/es/ProTable/parts/FieldControl.mjs.map +1 -0
  354. package/es/ProTable/parts/KeywordInput.mjs +19 -0
  355. package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
  356. package/es/ProTable/parts/LightFilter.mjs +70 -0
  357. package/es/ProTable/parts/LightFilter.mjs.map +1 -0
  358. package/es/ProTable/parts/OptionPopover.mjs +17 -0
  359. package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
  360. package/es/ProTable/parts/SearchForm.mjs +180 -0
  361. package/es/ProTable/parts/SearchForm.mjs.map +1 -0
  362. package/es/ProTable/parts/SearchSection.mjs +33 -0
  363. package/es/ProTable/parts/SearchSection.mjs.map +1 -0
  364. package/es/ProTable/parts/TableAlert.mjs +38 -0
  365. package/es/ProTable/parts/TableAlert.mjs.map +1 -0
  366. package/es/ProTable/parts/Toolbar.mjs +50 -0
  367. package/es/ProTable/parts/Toolbar.mjs.map +1 -0
  368. package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
  369. package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
  370. package/es/ProTable/parts/renderValue.mjs +118 -0
  371. package/es/ProTable/parts/renderValue.mjs.map +1 -0
  372. package/es/ProTable/style.mjs +278 -0
  373. package/es/ProTable/style.mjs.map +1 -0
  374. package/es/ProTable/type.d.mts +397 -0
  375. package/es/ProTable/utils.mjs +152 -0
  376. package/es/ProTable/utils.mjs.map +1 -0
  377. package/es/Radio/Radio.mjs +3 -3
  378. package/es/Radio/Radio.mjs.map +1 -1
  379. package/es/ScrollArea/atoms.mjs +4 -4
  380. package/es/ScrollArea/atoms.mjs.map +1 -1
  381. package/es/Segmented/Segmented.mjs +3 -3
  382. package/es/Segmented/Segmented.mjs.map +1 -1
  383. package/es/Segmented/atoms.mjs +2 -2
  384. package/es/Segmented/atoms.mjs.map +1 -1
  385. package/es/Select/Select.mjs +22 -13
  386. package/es/Select/Select.mjs.map +1 -1
  387. package/es/Select/atoms.mjs +4 -4
  388. package/es/Select/atoms.mjs.map +1 -1
  389. package/es/Select/helpers.mjs +8 -1
  390. package/es/Select/helpers.mjs.map +1 -1
  391. package/es/Select/hooks.mjs +8 -4
  392. package/es/Select/hooks.mjs.map +1 -1
  393. package/es/Select/renderOptions.mjs +2 -2
  394. package/es/Select/renderOptions.mjs.map +1 -1
  395. package/es/Select/type.d.mts +7 -0
  396. package/es/Switch/Switch.mjs +2 -2
  397. package/es/Switch/Switch.mjs.map +1 -1
  398. package/es/Switch/atoms.mjs +2 -2
  399. package/es/Switch/atoms.mjs.map +1 -1
  400. package/es/Table/Column.d.mts +8 -0
  401. package/es/Table/Column.mjs +6 -0
  402. package/es/Table/Column.mjs.map +1 -0
  403. package/es/Table/ColumnGroup.d.mts +11 -0
  404. package/es/Table/ColumnGroup.mjs +6 -0
  405. package/es/Table/ColumnGroup.mjs.map +1 -0
  406. package/es/Table/Table.d.mts +16 -2
  407. package/es/Table/Table.mjs +149 -118
  408. package/es/Table/Table.mjs.map +1 -1
  409. package/es/Table/atoms/cells.d.mts +42 -0
  410. package/es/Table/atoms/cells.mjs +72 -0
  411. package/es/Table/atoms/cells.mjs.map +1 -0
  412. package/es/Table/atoms/index.d.mts +3 -0
  413. package/es/Table/atoms/layout.d.mts +44 -0
  414. package/es/Table/atoms/layout.mjs +62 -0
  415. package/es/Table/atoms/layout.mjs.map +1 -0
  416. package/es/Table/constants.mjs +16 -0
  417. package/es/Table/constants.mjs.map +1 -0
  418. package/es/Table/engine/fixed.d.mts +1 -0
  419. package/es/Table/engine/fixed.mjs +53 -0
  420. package/es/Table/engine/fixed.mjs.map +1 -0
  421. package/es/Table/engine/types.d.mts +1 -0
  422. package/es/Table/engine/useTableEngine.mjs +180 -0
  423. package/es/Table/engine/useTableEngine.mjs.map +1 -0
  424. package/es/Table/index.d.mts +7 -2
  425. package/es/Table/index.mjs +4 -1
  426. package/es/Table/internal.d.mts +3 -0
  427. package/es/Table/pipeline/columnUtils.d.mts +5 -0
  428. package/es/Table/pipeline/columnUtils.mjs +58 -0
  429. package/es/Table/pipeline/columnUtils.mjs.map +1 -0
  430. package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
  431. package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
  432. package/es/Table/pipeline/normalizeColumns.mjs +140 -0
  433. package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
  434. package/es/Table/pipeline/selectionUtils.d.mts +9 -0
  435. package/es/Table/pipeline/selectionUtils.mjs +115 -0
  436. package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
  437. package/es/Table/pipeline/useBreakpoint.mjs +36 -0
  438. package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
  439. package/es/Table/pipeline/useExpandable.mjs +45 -0
  440. package/es/Table/pipeline/useExpandable.mjs.map +1 -0
  441. package/es/Table/pipeline/useFilter.mjs +52 -0
  442. package/es/Table/pipeline/useFilter.mjs.map +1 -0
  443. package/es/Table/pipeline/useSelection.mjs +302 -0
  444. package/es/Table/pipeline/useSelection.mjs.map +1 -0
  445. package/es/Table/pipeline/useSorter.mjs +146 -0
  446. package/es/Table/pipeline/useSorter.mjs.map +1 -0
  447. package/es/Table/pipeline/useTableLocale.mjs +30 -0
  448. package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
  449. package/es/Table/pipeline/useTableState.mjs +118 -0
  450. package/es/Table/pipeline/useTableState.mjs.map +1 -0
  451. package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
  452. package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
  453. package/es/Table/render/Body.mjs +150 -0
  454. package/es/Table/render/Body.mjs.map +1 -0
  455. package/es/Table/render/BodyCell.mjs +87 -0
  456. package/es/Table/render/BodyCell.mjs.map +1 -0
  457. package/es/Table/render/CellShell.mjs +84 -0
  458. package/es/Table/render/CellShell.mjs.map +1 -0
  459. package/es/Table/render/ExpandIcon.mjs +28 -0
  460. package/es/Table/render/ExpandIcon.mjs.map +1 -0
  461. package/es/Table/render/FilterDropdown.mjs +139 -0
  462. package/es/Table/render/FilterDropdown.mjs.map +1 -0
  463. package/es/Table/render/FilterPanel.mjs +152 -0
  464. package/es/Table/render/FilterPanel.mjs.map +1 -0
  465. package/es/Table/render/FixedFrost.mjs +113 -0
  466. package/es/Table/render/FixedFrost.mjs.map +1 -0
  467. package/es/Table/render/FixedHolder.mjs +51 -0
  468. package/es/Table/render/FixedHolder.mjs.map +1 -0
  469. package/es/Table/render/Header.mjs +184 -0
  470. package/es/Table/render/Header.mjs.map +1 -0
  471. package/es/Table/render/LoadingSkeleton.mjs +78 -0
  472. package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
  473. package/es/Table/render/PaginationBar.mjs +71 -0
  474. package/es/Table/render/PaginationBar.mjs.map +1 -0
  475. package/es/Table/render/SelectionCells.mjs +111 -0
  476. package/es/Table/render/SelectionCells.mjs.map +1 -0
  477. package/es/Table/render/StickyScrollBar.mjs +99 -0
  478. package/es/Table/render/StickyScrollBar.mjs.map +1 -0
  479. package/es/Table/render/Summary.d.mts +16 -0
  480. package/es/Table/render/Summary.mjs +58 -0
  481. package/es/Table/render/Summary.mjs.map +1 -0
  482. package/es/Table/render/TableView.mjs +215 -0
  483. package/es/Table/render/TableView.mjs.map +1 -0
  484. package/es/Table/render/VirtualBody.mjs +101 -0
  485. package/es/Table/render/VirtualBody.mjs.map +1 -0
  486. package/es/Table/render/context.mjs +15 -0
  487. package/es/Table/render/context.mjs.map +1 -0
  488. package/es/Table/render/filterUtils.mjs +22 -0
  489. package/es/Table/render/filterUtils.mjs.map +1 -0
  490. package/es/Table/render/tableHelpers.mjs +27 -0
  491. package/es/Table/render/tableHelpers.mjs.map +1 -0
  492. package/es/Table/render/useColGroups.mjs +23 -0
  493. package/es/Table/render/useColGroups.mjs.map +1 -0
  494. package/es/Table/render/useScrollSync.mjs +104 -0
  495. package/es/Table/render/useScrollSync.mjs.map +1 -0
  496. package/es/Table/render/useViewContexts.mjs +134 -0
  497. package/es/Table/render/useViewContexts.mjs.map +1 -0
  498. package/es/Table/semantic.mjs +45 -0
  499. package/es/Table/semantic.mjs.map +1 -0
  500. package/es/Table/store/createTableStore.d.mts +1 -0
  501. package/es/Table/store/createTableStore.mjs +40 -0
  502. package/es/Table/store/createTableStore.mjs.map +1 -0
  503. package/es/Table/store/hooks.mjs +24 -0
  504. package/es/Table/store/hooks.mjs.map +1 -0
  505. package/es/Table/style.mjs +175 -90
  506. package/es/Table/style.mjs.map +1 -1
  507. package/es/Table/type.d.mts +467 -37
  508. package/es/Table/useTableController.mjs +293 -0
  509. package/es/Table/useTableController.mjs.map +1 -0
  510. package/es/Tabs/Tabs.mjs +2 -2
  511. package/es/Tabs/Tabs.mjs.map +1 -1
  512. package/es/Tabs/atoms.mjs +2 -2
  513. package/es/Tabs/atoms.mjs.map +1 -1
  514. package/es/Tabs/style.d.mts +1 -1
  515. package/es/Tag/Tag.mjs +2 -2
  516. package/es/Tag/Tag.mjs.map +1 -1
  517. package/es/Text/Text.mjs +2 -2
  518. package/es/Text/Text.mjs.map +1 -1
  519. package/es/Text/style.d.mts +3 -3
  520. package/es/Text/style.mjs +3 -3
  521. package/es/Text/style.mjs.map +1 -1
  522. package/es/ToggleGroup/ToggleGroup.mjs +3 -3
  523. package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
  524. package/es/ToggleGroup/atoms.mjs +2 -2
  525. package/es/ToggleGroup/atoms.mjs.map +1 -1
  526. package/es/Tooltip/TooltipGroup.mjs +3 -3
  527. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  528. package/es/Tooltip/TooltipStandalone.mjs +3 -3
  529. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  530. package/es/Tree/Tree.mjs +2 -2
  531. package/es/Tree/Tree.mjs.map +1 -1
  532. package/es/Tree/TreeNode.mjs +2 -2
  533. package/es/Tree/TreeNode.mjs.map +1 -1
  534. package/es/Video/Video.mjs +2 -2
  535. package/es/Video/Video.mjs.map +1 -1
  536. package/es/awesome/Features/FeatureItem.mjs +2 -2
  537. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  538. package/es/awesome/Hero/Hero.mjs +3 -3
  539. package/es/awesome/Hero/Hero.mjs.map +1 -1
  540. package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
  541. package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
  542. package/es/awesome/LandingHero/LandingHero.mjs +3 -3
  543. package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
  544. package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
  545. package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
  546. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
  547. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  548. package/es/awesome/landingActions.mjs +2 -2
  549. package/es/awesome/landingActions.mjs.map +1 -1
  550. package/es/chat/ChatItem/ChatItem.mjs +2 -2
  551. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  552. package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
  553. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  554. package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
  555. package/es/chat/MessageInput/MessageInput.mjs +3 -3
  556. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  557. package/es/dashboard/AuthLayout/AuthLayout.mjs +8 -4
  558. package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
  559. package/es/dashboard/AuthLayout/style.mjs +14 -3
  560. package/es/dashboard/AuthLayout/style.mjs.map +1 -1
  561. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +2 -2
  562. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -1
  563. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +2 -2
  564. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -1
  565. package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
  566. package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
  567. package/es/dashboard/ConsoleNav/style.mjs +2 -2
  568. package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
  569. package/es/dashboard/ConsoleShell/style.mjs +1 -1
  570. package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
  571. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
  572. package/es/dashboard/FilterSidebar/style.mjs +2 -2
  573. package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
  574. package/es/dashboard/FilterStrip/style.mjs +1 -1
  575. package/es/dashboard/FilterStrip/style.mjs.map +1 -1
  576. package/es/dashboard/MetricStrip/MetricCell.mjs +25 -14
  577. package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -1
  578. package/es/dashboard/MetricStrip/style.mjs +14 -1
  579. package/es/dashboard/MetricStrip/style.mjs.map +1 -1
  580. package/es/dashboard/MetricStrip/type.d.mts +2 -0
  581. package/es/dashboard/PageSkeleton/style.mjs +2 -1
  582. package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
  583. package/es/dashboard/StatCard/StatCard.d.mts +1 -1
  584. package/es/dashboard/StatCard/StatCard.mjs +2 -1
  585. package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
  586. package/es/dashboard/StatCard/type.d.mts +2 -0
  587. package/es/dashboard/Surface/Surface.mjs +3 -4
  588. package/es/dashboard/Surface/Surface.mjs.map +1 -1
  589. package/es/dashboard/Surface/link.mjs +1 -1
  590. package/es/dashboard/Surface/link.mjs.map +1 -1
  591. package/es/dashboard/Surface/style.mjs +15 -14
  592. package/es/dashboard/Surface/style.mjs.map +1 -1
  593. package/es/dashboard/index.mjs +2 -2
  594. package/es/eslint/noBaseUiSubpath.mjs +2 -1
  595. package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
  596. package/es/i18n/resources/en/colorPicker.d.mts +5 -0
  597. package/es/i18n/resources/en/colorPicker.mjs +5 -0
  598. package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
  599. package/es/i18n/resources/en/datePicker.d.mts +54 -0
  600. package/es/i18n/resources/en/datePicker.mjs +55 -1
  601. package/es/i18n/resources/en/datePicker.mjs.map +1 -1
  602. package/es/i18n/resources/en/index.d.mts +4 -3
  603. package/es/i18n/resources/en/index.mjs +3 -1
  604. package/es/i18n/resources/en/index.mjs.map +1 -1
  605. package/es/i18n/resources/en/table.d.mts +23 -0
  606. package/es/i18n/resources/en/table.mjs +24 -0
  607. package/es/i18n/resources/en/table.mjs.map +1 -0
  608. package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
  609. package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
  610. package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
  611. package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
  612. package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
  613. package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
  614. package/es/i18n/resources/zhCn/index.d.mts +4 -3
  615. package/es/i18n/resources/zhCn/index.mjs +4 -2
  616. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  617. package/es/i18n/resources/zhCn/table.d.mts +23 -0
  618. package/es/i18n/resources/zhCn/table.mjs +24 -0
  619. package/es/i18n/resources/zhCn/table.mjs.map +1 -0
  620. package/es/i18n/types.d.mts +3 -2
  621. package/es/index.d.mts +15 -7
  622. package/es/index.mjs +14 -9
  623. package/es/internal/overflow/OverflowList.mjs +71 -0
  624. package/es/internal/overflow/OverflowList.mjs.map +1 -0
  625. package/es/mdx/Callout/index.mjs +2 -2
  626. package/es/mdx/Callout/index.mjs.map +1 -1
  627. package/es/mdx/Cards/Card.mjs +2 -2
  628. package/es/mdx/Cards/Card.mjs.map +1 -1
  629. package/es/mdx/Cards/index.mjs +2 -2
  630. package/es/mdx/Cards/index.mjs.map +1 -1
  631. package/es/mdx/Mdx/index.mjs +2 -2
  632. package/es/mdx/Mdx/index.mjs.map +1 -1
  633. package/es/mdx/Steps/index.mjs +2 -2
  634. package/es/mdx/Steps/index.mjs.map +1 -1
  635. package/es/mdx/mdxComponents/Pre.mjs +5 -5
  636. package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
  637. package/es/storybook/StoryBook/style.mjs +2 -0
  638. package/es/storybook/StoryBook/style.mjs.map +1 -1
  639. package/es/style.css +2966 -957
  640. package/es/styles/createGlobalStyle.mjs +1 -1
  641. package/es/styles/index.d.mts +3 -2
  642. package/es/styles/index.mjs +5 -4
  643. package/es/styles/stylex/props.mjs +2 -2
  644. package/es/styles/stylex/props.mjs.map +1 -1
  645. package/es/styles/theme/createLobeToken.d.mts +3 -2
  646. package/es/styles/theme/createLobeToken.mjs.map +1 -1
  647. package/es/styles/theme/customPrimary.d.mts +7 -0
  648. package/es/styles/theme/customPrimary.mjs +66 -0
  649. package/es/styles/theme/customPrimary.mjs.map +1 -0
  650. package/es/styles/theme/scope.d.mts +4 -3
  651. package/es/styles/theme/scope.mjs +30 -8
  652. package/es/styles/theme/scope.mjs.map +1 -1
  653. package/es/styles/theme/themeCss.d.mts +2 -0
  654. package/es/styles/theme/themeCss.mjs +24 -2
  655. package/es/styles/theme/themeCss.mjs.map +1 -1
  656. package/es/styles/theme/token/primary.mjs +6 -2
  657. package/es/styles/theme/token/primary.mjs.map +1 -1
  658. package/es/theme.css +8 -0
  659. package/package.json +6 -1
  660. package/es/DatePicker/CalendarPanel.mjs +0 -189
  661. package/es/DatePicker/CalendarPanel.mjs.map +0 -1
  662. package/es/DatePicker/PickerShell.mjs +0 -43
  663. package/es/DatePicker/PickerShell.mjs.map +0 -1
  664. package/es/DatePicker/calendar.d.mts +0 -4
  665. package/es/DatePicker/calendar.mjs +0 -46
  666. package/es/DatePicker/calendar.mjs.map +0 -1
  667. package/es/Table/FilterMenu.mjs +0 -45
  668. package/es/Table/FilterMenu.mjs.map +0 -1
  669. package/es/Table/TableBody.mjs +0 -67
  670. package/es/Table/TableBody.mjs.map +0 -1
  671. package/es/Table/TableHead.mjs +0 -58
  672. package/es/Table/TableHead.mjs.map +0 -1
  673. package/es/Table/features.mjs +0 -12
  674. package/es/Table/features.mjs.map +0 -1
  675. package/es/Table/fixedOffsets.mjs +0 -29
  676. package/es/Table/fixedOffsets.mjs.map +0 -1
  677. package/es/Table/marker.stylex.mjs +0 -9
  678. package/es/Table/marker.stylex.mjs.map +0 -1
  679. package/es/Table/toColumnDefs.mjs +0 -26
  680. package/es/Table/toColumnDefs.mjs.map +0 -1
  681. package/es/Table/useTableState.mjs +0 -99
  682. package/es/Table/useTableState.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"atoms.mjs","names":["BaseScrollArea"],"sources":["../../src/ScrollArea/atoms.tsx"],"sourcesContent":["'use client';\n\nimport './global.css';\n\nimport { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport clsx from 'clsx';\nimport type React from 'react';\nimport type { ReactElement } from 'react';\n\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { styles } from './style';\n\nconst classNameOf = (styles: Parameters<typeof styleProps>[0]) => styleProps(styles).className;\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => clsx(base, className(state));\n return clsx(base, className);\n};\n\nexport type ScrollAreaRootProps = React.ComponentProps<typeof BaseScrollArea.Root>;\n\nexport type ScrollAreaFadeOrientation = 'vertical' | 'horizontal' | 'both';\n\nexport type ScrollAreaViewportProps = React.ComponentProps<typeof BaseScrollArea.Viewport> & {\n /**\n * Enable gradient scroll fade on the viewport edges.\n *\n * - `true` / `'vertical'`: fade top and bottom edges.\n * - `'horizontal'`: fade start and end edges.\n * - `'both'`: fade all four edges (combined via `mask-composite: intersect`).\n * - `false`: no fade.\n *\n * @default false\n */\n scrollFade?: boolean | ScrollAreaFadeOrientation;\n};\nexport type ScrollAreaContentProps = React.ComponentProps<typeof BaseScrollArea.Content>;\nexport type ScrollAreaScrollbarProps = React.ComponentProps<typeof BaseScrollArea.Scrollbar>;\nexport type ScrollAreaThumbProps = React.ComponentProps<typeof BaseScrollArea.Thumb>;\nexport type ScrollAreaCornerProps = React.ComponentProps<typeof BaseScrollArea.Corner>;\n\nexport const ScrollAreaRoot = ({ className, ...rest }: ScrollAreaRootProps) => {\n return (\n <BaseScrollArea.Root\n {...rest}\n className={mergeStateClassName(classNameOf(styles.root), className) as any}\n />\n );\n};\n\nScrollAreaRoot.displayName = 'ScrollAreaRoot';\n\nconst resolveFadeClass = (\n scrollFade: ScrollAreaViewportProps['scrollFade'],\n): string | undefined => {\n if (!scrollFade) return undefined;\n const orientation: ScrollAreaFadeOrientation = scrollFade === true ? 'vertical' : scrollFade;\n if (orientation === 'horizontal') return 'lobe-scroll-area-fade-horizontal';\n if (orientation === 'both') return 'lobe-scroll-area-fade-both';\n return 'lobe-scroll-area-fade';\n};\n\nexport const ScrollAreaViewportImpl = ({\n className,\n scrollFade = false,\n xstyle,\n ...rest\n}: ScrollAreaViewportProps & { xstyle?: Parameters<typeof styleProps>[0] }) => {\n return (\n <BaseScrollArea.Viewport\n {...rest}\n className={\n mergeStateClassName(\n clsx(\n classNameOf([styles.viewport, focusRing.info, xstyle]),\n resolveFadeClass(scrollFade),\n ),\n className,\n ) as any\n }\n />\n );\n};\n\nScrollAreaViewportImpl.displayName = 'ScrollAreaViewport';\n\nexport const ScrollAreaViewport = ScrollAreaViewportImpl as (\n props: ScrollAreaViewportProps,\n) => ReactElement;\n\nexport const ScrollAreaContent = BaseScrollArea.Content;\n\nexport const ScrollAreaScrollbar = ({ className, ...rest }: ScrollAreaScrollbarProps) => {\n return (\n <BaseScrollArea.Scrollbar\n {...rest}\n className={mergeStateClassName(classNameOf(styles.scrollbar), className) as any}\n />\n );\n};\n\nScrollAreaScrollbar.displayName = 'ScrollAreaScrollbar';\n\nexport const ScrollAreaThumb = ({ className, ...rest }: ScrollAreaThumbProps) => {\n return (\n <BaseScrollArea.Thumb\n {...rest}\n className={mergeStateClassName(classNameOf(styles.thumb), className) as any}\n />\n );\n};\n\nScrollAreaThumb.displayName = 'ScrollAreaThumb';\n\nexport const ScrollAreaCorner = ({ className, ...rest }: ScrollAreaCornerProps) => {\n return (\n <BaseScrollArea.Corner\n {...rest}\n className={mergeStateClassName(classNameOf(styles.corner), className) as any}\n />\n );\n};\n\nScrollAreaCorner.displayName = 'ScrollAreaCorner';\n"],"mappings":";;;;;;;;AAcA,MAAM,eAAe,WAA6C,WAAW,MAAM,CAAC,CAAC;AAErF,MAAM,uBACJ,MACA,cACG;CACH,IAAI,OAAO,cAAc,YAAY,QAAQ,UAAkB,KAAK,MAAM,UAAU,KAAK,CAAC;CAC1F,OAAO,KAAK,MAAM,SAAS;AAC7B;AAwBA,MAAa,kBAAkB,EAAE,WAAW,GAAG,WAAgC;CAC7E,OACE,oBAACA,WAAe,MAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,IAAI,GAAG,SAAS;CACnE,CAAA;AAEL;AAEA,eAAe,cAAc;AAE7B,MAAM,oBACJ,eACuB;CACvB,IAAI,CAAC,YAAY,OAAO,KAAA;CACxB,MAAM,cAAyC,eAAe,OAAO,aAAa;CAClF,IAAI,gBAAgB,cAAc,OAAO;CACzC,IAAI,gBAAgB,QAAQ,OAAO;CACnC,OAAO;AACT;AAEA,MAAa,0BAA0B,EACrC,WACA,aAAa,OACb,QACA,GAAG,WAC0E;CAC7E,OACE,oBAACA,WAAe,UAAhB;EACE,GAAI;EACJ,WACE,oBACE,KACE,YAAY;GAAC,OAAO;GAAU,UAAU;GAAM;EAAM,CAAC,GACrD,iBAAiB,UAAU,CAC7B,GACA,SACF;CAEH,CAAA;AAEL;AAEA,uBAAuB,cAAc;AAErC,MAAa,qBAAqB;AAIlC,MAAa,oBAAoBA,WAAe;AAEhD,MAAa,uBAAuB,EAAE,WAAW,GAAG,WAAqC;CACvF,OACE,oBAACA,WAAe,WAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,SAAS,GAAG,SAAS;CACxE,CAAA;AAEL;AAEA,oBAAoB,cAAc;AAElC,MAAa,mBAAmB,EAAE,WAAW,GAAG,WAAiC;CAC/E,OACE,oBAACA,WAAe,OAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,KAAK,GAAG,SAAS;CACpE,CAAA;AAEL;AAEA,gBAAgB,cAAc;AAE9B,MAAa,oBAAoB,EAAE,WAAW,GAAG,WAAkC;CACjF,OACE,oBAACA,WAAe,QAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,MAAM,GAAG,SAAS;CACrE,CAAA;AAEL;AAEA,iBAAiB,cAAc"}
1
+ {"version":3,"file":"atoms.mjs","names":["clsx","BaseScrollArea"],"sources":["../../src/ScrollArea/atoms.tsx"],"sourcesContent":["'use client';\n\nimport './global.css';\n\nimport { ScrollArea as BaseScrollArea } from '@base-ui/react/scroll-area';\nimport clsx from 'clsx';\nimport type React from 'react';\nimport type { ReactElement } from 'react';\n\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { styles } from './style';\n\nconst classNameOf = (styles: Parameters<typeof styleProps>[0]) => styleProps(styles).className;\n\nconst mergeStateClassName = <TState,>(\n base: string,\n className: string | ((state: TState) => string | undefined) | undefined,\n) => {\n if (typeof className === 'function') return (state: TState) => clsx(base, className(state));\n return clsx(base, className);\n};\n\nexport type ScrollAreaRootProps = React.ComponentProps<typeof BaseScrollArea.Root>;\n\nexport type ScrollAreaFadeOrientation = 'vertical' | 'horizontal' | 'both';\n\nexport type ScrollAreaViewportProps = React.ComponentProps<typeof BaseScrollArea.Viewport> & {\n /**\n * Enable gradient scroll fade on the viewport edges.\n *\n * - `true` / `'vertical'`: fade top and bottom edges.\n * - `'horizontal'`: fade start and end edges.\n * - `'both'`: fade all four edges (combined via `mask-composite: intersect`).\n * - `false`: no fade.\n *\n * @default false\n */\n scrollFade?: boolean | ScrollAreaFadeOrientation;\n};\nexport type ScrollAreaContentProps = React.ComponentProps<typeof BaseScrollArea.Content>;\nexport type ScrollAreaScrollbarProps = React.ComponentProps<typeof BaseScrollArea.Scrollbar>;\nexport type ScrollAreaThumbProps = React.ComponentProps<typeof BaseScrollArea.Thumb>;\nexport type ScrollAreaCornerProps = React.ComponentProps<typeof BaseScrollArea.Corner>;\n\nexport const ScrollAreaRoot = ({ className, ...rest }: ScrollAreaRootProps) => {\n return (\n <BaseScrollArea.Root\n {...rest}\n className={mergeStateClassName(classNameOf(styles.root), className) as any}\n />\n );\n};\n\nScrollAreaRoot.displayName = 'ScrollAreaRoot';\n\nconst resolveFadeClass = (\n scrollFade: ScrollAreaViewportProps['scrollFade'],\n): string | undefined => {\n if (!scrollFade) return undefined;\n const orientation: ScrollAreaFadeOrientation = scrollFade === true ? 'vertical' : scrollFade;\n if (orientation === 'horizontal') return 'lobe-scroll-area-fade-horizontal';\n if (orientation === 'both') return 'lobe-scroll-area-fade-both';\n return 'lobe-scroll-area-fade';\n};\n\nexport const ScrollAreaViewportImpl = ({\n className,\n scrollFade = false,\n xstyle,\n ...rest\n}: ScrollAreaViewportProps & { xstyle?: Parameters<typeof styleProps>[0] }) => {\n return (\n <BaseScrollArea.Viewport\n {...rest}\n className={\n mergeStateClassName(\n clsx(\n classNameOf([styles.viewport, focusRing.info, xstyle]),\n resolveFadeClass(scrollFade),\n ),\n className,\n ) as any\n }\n />\n );\n};\n\nScrollAreaViewportImpl.displayName = 'ScrollAreaViewport';\n\nexport const ScrollAreaViewport = ScrollAreaViewportImpl as (\n props: ScrollAreaViewportProps,\n) => ReactElement;\n\nexport const ScrollAreaContent = BaseScrollArea.Content;\n\nexport const ScrollAreaScrollbar = ({ className, ...rest }: ScrollAreaScrollbarProps) => {\n return (\n <BaseScrollArea.Scrollbar\n {...rest}\n className={mergeStateClassName(classNameOf(styles.scrollbar), className) as any}\n />\n );\n};\n\nScrollAreaScrollbar.displayName = 'ScrollAreaScrollbar';\n\nexport const ScrollAreaThumb = ({ className, ...rest }: ScrollAreaThumbProps) => {\n return (\n <BaseScrollArea.Thumb\n {...rest}\n className={mergeStateClassName(classNameOf(styles.thumb), className) as any}\n />\n );\n};\n\nScrollAreaThumb.displayName = 'ScrollAreaThumb';\n\nexport const ScrollAreaCorner = ({ className, ...rest }: ScrollAreaCornerProps) => {\n return (\n <BaseScrollArea.Corner\n {...rest}\n className={mergeStateClassName(classNameOf(styles.corner), className) as any}\n />\n );\n};\n\nScrollAreaCorner.displayName = 'ScrollAreaCorner';\n"],"mappings":";;;;;;;;AAcA,MAAM,eAAe,WAA6C,WAAW,MAAM,CAAC,CAAC;AAErF,MAAM,uBACJ,MACA,cACG;CACH,IAAI,OAAO,cAAc,YAAY,QAAQ,UAAkBA,OAAK,MAAM,UAAU,KAAK,CAAC;CAC1F,OAAOA,OAAK,MAAM,SAAS;AAC7B;AAwBA,MAAa,kBAAkB,EAAE,WAAW,GAAG,WAAgC;CAC7E,OACE,oBAACC,WAAe,MAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,IAAI,GAAG,SAAS;CACnE,CAAA;AAEL;AAEA,eAAe,cAAc;AAE7B,MAAM,oBACJ,eACuB;CACvB,IAAI,CAAC,YAAY,OAAO,KAAA;CACxB,MAAM,cAAyC,eAAe,OAAO,aAAa;CAClF,IAAI,gBAAgB,cAAc,OAAO;CACzC,IAAI,gBAAgB,QAAQ,OAAO;CACnC,OAAO;AACT;AAEA,MAAa,0BAA0B,EACrC,WACA,aAAa,OACb,QACA,GAAG,WAC0E;CAC7E,OACE,oBAACA,WAAe,UAAhB;EACE,GAAI;EACJ,WACE,oBACED,OACE,YAAY;GAAC,OAAO;GAAU,UAAU;GAAM;EAAM,CAAC,GACrD,iBAAiB,UAAU,CAC7B,GACA,SACF;CAEH,CAAA;AAEL;AAEA,uBAAuB,cAAc;AAErC,MAAa,qBAAqB;AAIlC,MAAa,oBAAoBC,WAAe;AAEhD,MAAa,uBAAuB,EAAE,WAAW,GAAG,WAAqC;CACvF,OACE,oBAACA,WAAe,WAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,SAAS,GAAG,SAAS;CACxE,CAAA;AAEL;AAEA,oBAAoB,cAAc;AAElC,MAAa,mBAAmB,EAAE,WAAW,GAAG,WAAiC;CAC/E,OACE,oBAACA,WAAe,OAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,KAAK,GAAG,SAAS;CACpE,CAAA;AAEL;AAEA,gBAAgB,cAAc;AAE9B,MAAa,oBAAoB,EAAE,WAAW,GAAG,WAAkC;CACjF,OACE,oBAACA,WAAe,QAAhB;EACE,GAAI;EACJ,WAAW,oBAAoB,YAAY,OAAO,MAAM,GAAG,SAAS;CACrE,CAAA;AAEL;AAEA,iBAAiB,cAAc"}
@@ -3,7 +3,7 @@ import { useControlledState } from "../hooks/useControlledState.mjs";
3
3
  import { SegmentedIndicator, SegmentedItem, SegmentedItemIcon, SegmentedItemLabel, SegmentedRoot } from "./atoms.mjs";
4
4
  import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
- import clsx from "clsx";
6
+ import clsx$1 from "clsx";
7
7
  //#region src/Segmented/Segmented.tsx
8
8
  const normalizeOption = (option) => typeof option === "string" ? {
9
9
  label: option,
@@ -66,7 +66,7 @@ const Segmented = ({ block = false, className, classNames, defaultValue, disable
66
66
  };
67
67
  return /* @__PURE__ */ jsxs(SegmentedRoot, {
68
68
  block,
69
- className: clsx(classNames?.root, className),
69
+ className: clsx$1(classNames?.root, className),
70
70
  disabled,
71
71
  glass,
72
72
  id,
@@ -86,7 +86,7 @@ const Segmented = ({ block = false, className, classNames, defaultValue, disable
86
86
  }), normalizedOptions.map((opt) => /* @__PURE__ */ jsxs(SegmentedItem, {
87
87
  "aria-label": typeof opt.label === "string" ? opt.label : void 0,
88
88
  block,
89
- className: clsx(classNames?.item, opt.className),
89
+ className: clsx$1(classNames?.item, opt.className),
90
90
  "data-segmented-item": "",
91
91
  disabled: disabled || opt.disabled,
92
92
  name,
@@ -1 +1 @@
1
- {"version":3,"file":"Segmented.mjs","names":[],"sources":["../../src/Segmented/Segmented.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport {\n type CSSProperties,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { useControlledState } from '@/hooks/useControlledState';\n\nimport {\n SegmentedIndicator,\n SegmentedItem,\n SegmentedItemIcon,\n SegmentedItemLabel,\n SegmentedRoot,\n} from './atoms';\nimport type { SegmentedOption, SegmentedProps } from './type';\n\nconst normalizeOption = <Value extends string>(\n option: SegmentedOption<Value> | Value,\n): SegmentedOption<Value> =>\n typeof option === 'string' ? { label: option, value: option } : option;\n\nconst Segmented = <Value extends string = string>({\n block = false,\n className,\n classNames,\n defaultValue,\n disabled = false,\n glass = false,\n id,\n name,\n onChange,\n options,\n ref,\n shadow = false,\n size = 'middle',\n style,\n styles: customStyles,\n value,\n variant = 'filled',\n vertical = false,\n}: SegmentedProps<Value>) => {\n const [innerValue, setInnerValue] = useControlledState<Value | undefined>(defaultValue, {\n defaultValue,\n onChange: (next) => {\n if (next != null) onChange?.(next);\n },\n value,\n });\n\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.RefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n\n const normalizedOptions = useMemo(\n () => (options ?? []).map((o) => normalizeOption<Value>(o)),\n [options],\n );\n\n const updateIndicator = useCallback(() => {\n const list = listRef.current;\n if (!list) return;\n const active = list.querySelector<HTMLElement>('[data-segmented-item][data-pressed]');\n if (!active) {\n list.style.setProperty('--active-item-left', '0px');\n list.style.setProperty('--active-item-top', '0px');\n list.style.setProperty('--active-item-right', '0px');\n list.style.setProperty('--active-item-width', '0px');\n list.style.setProperty('--active-item-height', '0px');\n return;\n }\n list.style.setProperty('--active-item-left', `${active.offsetLeft}px`);\n list.style.setProperty('--active-item-top', `${active.offsetTop}px`);\n list.style.setProperty(\n '--active-item-right',\n `${list.clientWidth - active.offsetLeft - active.offsetWidth}px`,\n );\n list.style.setProperty('--active-item-width', `${active.offsetWidth}px`);\n list.style.setProperty('--active-item-height', `${active.offsetHeight}px`);\n }, []);\n\n useLayoutEffect(() => {\n updateIndicator();\n }, [innerValue, normalizedOptions, vertical, size, block, updateIndicator]);\n\n useEffect(() => {\n const list = listRef.current;\n if (!list || typeof ResizeObserver === 'undefined') return;\n const ro = new ResizeObserver(() => updateIndicator());\n ro.observe(list);\n return () => ro.disconnect();\n }, [updateIndicator]);\n\n const groupValue = useMemo<Value[]>(() => (innerValue != null ? [innerValue] : []), [innerValue]);\n\n const rootStyle: CSSProperties = { ...style, ...customStyles?.root };\n\n return (\n <SegmentedRoot<Value>\n block={block}\n className={clsx(classNames?.root, className)}\n disabled={disabled}\n glass={glass}\n id={id}\n orientation={vertical ? 'vertical' : 'horizontal'}\n ref={mergedRef}\n shadow={shadow}\n style={rootStyle}\n value={groupValue}\n variant={variant}\n onValueChange={(next) => {\n const picked = next[0];\n if (picked != null) setInnerValue(picked);\n }}\n >\n <SegmentedIndicator className={classNames?.indicator} style={customStyles?.indicator} />\n {normalizedOptions.map((opt) => (\n <SegmentedItem<Value>\n aria-label={typeof opt.label === 'string' ? opt.label : undefined}\n block={block}\n className={clsx(classNames?.item, opt.className)}\n data-segmented-item=\"\"\n disabled={disabled || opt.disabled}\n key={opt.value}\n name={name}\n size={size}\n style={customStyles?.item}\n title={opt.title}\n value={opt.value}\n >\n {opt.icon != null && (\n <SegmentedItemIcon className={classNames?.itemIcon} style={customStyles?.itemIcon}>\n {opt.icon}\n </SegmentedItemIcon>\n )}\n {opt.label != null && (\n <SegmentedItemLabel className={classNames?.itemLabel} style={customStyles?.itemLabel}>\n {opt.label}\n </SegmentedItemLabel>\n )}\n </SegmentedItem>\n ))}\n </SegmentedRoot>\n );\n};\n\nSegmented.displayName = 'Segmented';\n\nexport default Segmented;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Segmented.mjs","names":["clsx"],"sources":["../../src/Segmented/Segmented.tsx"],"sourcesContent":["'use client';\n\nimport clsx from 'clsx';\nimport {\n type CSSProperties,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { useControlledState } from '@/hooks/useControlledState';\n\nimport {\n SegmentedIndicator,\n SegmentedItem,\n SegmentedItemIcon,\n SegmentedItemLabel,\n SegmentedRoot,\n} from './atoms';\nimport type { SegmentedOption, SegmentedProps } from './type';\n\nconst normalizeOption = <Value extends string>(\n option: SegmentedOption<Value> | Value,\n): SegmentedOption<Value> =>\n typeof option === 'string' ? { label: option, value: option } : option;\n\nconst Segmented = <Value extends string = string>({\n block = false,\n className,\n classNames,\n defaultValue,\n disabled = false,\n glass = false,\n id,\n name,\n onChange,\n options,\n ref,\n shadow = false,\n size = 'middle',\n style,\n styles: customStyles,\n value,\n variant = 'filled',\n vertical = false,\n}: SegmentedProps<Value>) => {\n const [innerValue, setInnerValue] = useControlledState<Value | undefined>(defaultValue, {\n defaultValue,\n onChange: (next) => {\n if (next != null) onChange?.(next);\n },\n value,\n });\n\n const listRef = useRef<HTMLDivElement | null>(null);\n\n const mergedRef = useCallback(\n (node: HTMLDivElement | null) => {\n listRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as React.RefObject<HTMLDivElement | null>).current = node;\n },\n [ref],\n );\n\n const normalizedOptions = useMemo(\n () => (options ?? []).map((o) => normalizeOption<Value>(o)),\n [options],\n );\n\n const updateIndicator = useCallback(() => {\n const list = listRef.current;\n if (!list) return;\n const active = list.querySelector<HTMLElement>('[data-segmented-item][data-pressed]');\n if (!active) {\n list.style.setProperty('--active-item-left', '0px');\n list.style.setProperty('--active-item-top', '0px');\n list.style.setProperty('--active-item-right', '0px');\n list.style.setProperty('--active-item-width', '0px');\n list.style.setProperty('--active-item-height', '0px');\n return;\n }\n list.style.setProperty('--active-item-left', `${active.offsetLeft}px`);\n list.style.setProperty('--active-item-top', `${active.offsetTop}px`);\n list.style.setProperty(\n '--active-item-right',\n `${list.clientWidth - active.offsetLeft - active.offsetWidth}px`,\n );\n list.style.setProperty('--active-item-width', `${active.offsetWidth}px`);\n list.style.setProperty('--active-item-height', `${active.offsetHeight}px`);\n }, []);\n\n useLayoutEffect(() => {\n updateIndicator();\n }, [innerValue, normalizedOptions, vertical, size, block, updateIndicator]);\n\n useEffect(() => {\n const list = listRef.current;\n if (!list || typeof ResizeObserver === 'undefined') return;\n const ro = new ResizeObserver(() => updateIndicator());\n ro.observe(list);\n return () => ro.disconnect();\n }, [updateIndicator]);\n\n const groupValue = useMemo<Value[]>(() => (innerValue != null ? [innerValue] : []), [innerValue]);\n\n const rootStyle: CSSProperties = { ...style, ...customStyles?.root };\n\n return (\n <SegmentedRoot<Value>\n block={block}\n className={clsx(classNames?.root, className)}\n disabled={disabled}\n glass={glass}\n id={id}\n orientation={vertical ? 'vertical' : 'horizontal'}\n ref={mergedRef}\n shadow={shadow}\n style={rootStyle}\n value={groupValue}\n variant={variant}\n onValueChange={(next) => {\n const picked = next[0];\n if (picked != null) setInnerValue(picked);\n }}\n >\n <SegmentedIndicator className={classNames?.indicator} style={customStyles?.indicator} />\n {normalizedOptions.map((opt) => (\n <SegmentedItem<Value>\n aria-label={typeof opt.label === 'string' ? opt.label : undefined}\n block={block}\n className={clsx(classNames?.item, opt.className)}\n data-segmented-item=\"\"\n disabled={disabled || opt.disabled}\n key={opt.value}\n name={name}\n size={size}\n style={customStyles?.item}\n title={opt.title}\n value={opt.value}\n >\n {opt.icon != null && (\n <SegmentedItemIcon className={classNames?.itemIcon} style={customStyles?.itemIcon}>\n {opt.icon}\n </SegmentedItemIcon>\n )}\n {opt.label != null && (\n <SegmentedItemLabel className={classNames?.itemLabel} style={customStyles?.itemLabel}>\n {opt.label}\n </SegmentedItemLabel>\n )}\n </SegmentedItem>\n ))}\n </SegmentedRoot>\n );\n};\n\nSegmented.displayName = 'Segmented';\n\nexport default Segmented;\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { focusRing } from "../styles/stylex/focusRing.mjs";
4
4
  import { segmentedMarker } from "./marker.stylex.mjs";
5
5
  import { styles } from "./style.mjs";
6
6
  import { jsx } from "react/jsx-runtime";
7
- import clsx from "clsx";
7
+ import clsx$1 from "clsx";
8
8
  import { Toggle } from "@base-ui/react/toggle";
9
9
  import { ToggleGroup } from "@base-ui/react/toggle-group";
10
10
  //#region src/Segmented/atoms.tsx
@@ -56,7 +56,7 @@ const SegmentedItemLabel = ({ children, className, style }) => /* @__PURE__ */ j
56
56
  SegmentedItemLabel.displayName = "SegmentedItemLabel";
57
57
  const SegmentedIndicator = ({ className, style }) => /* @__PURE__ */ jsx("span", {
58
58
  "aria-hidden": true,
59
- ...styleProps(styles.indicator, clsx("lobe-segmented-indicator", className), style)
59
+ ...styleProps(styles.indicator, clsx$1("lobe-segmented-indicator", className), style)
60
60
  });
61
61
  SegmentedIndicator.displayName = "SegmentedIndicator";
62
62
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"atoms.mjs","names":["BaseUIToggleGroup","BaseUIToggle"],"sources":["../../src/Segmented/atoms.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport { Toggle as BaseUIToggle } from '@base-ui/react/toggle';\nimport { ToggleGroup as BaseUIToggleGroup } from '@base-ui/react/toggle-group';\nimport clsx from 'clsx';\nimport { type ComponentProps, type CSSProperties, type FC, type ReactNode } from 'react';\n\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { segmentedMarker } from './marker.stylex';\nimport { styles } from './style';\nimport type { SegmentedSize, SegmentedVariant } from './type';\n\nconst listVariantStyles = { filled: styles.listFilled, outlined: styles.listOutlined };\n\nconst itemSizeStyles = {\n large: styles.itemLarge,\n middle: styles.itemMiddle,\n small: styles.itemSmall,\n};\n\nexport type SegmentedRootProps<Value extends string = string> = Omit<\n ComponentProps<typeof BaseUIToggleGroup<Value>>,\n 'className' | 'render'\n> & {\n block?: boolean;\n className?: string;\n glass?: boolean;\n shadow?: boolean;\n variant?: SegmentedVariant;\n};\n\nexport const SegmentedRoot = <Value extends string = string>({\n block = false,\n className,\n glass = false,\n shadow = false,\n variant = 'filled',\n ...rest\n}: SegmentedRootProps<Value>) => {\n return (\n <BaseUIToggleGroup<Value>\n data-variant={variant}\n className={\n styleProps(\n [\n segmentedMarker,\n styles.list,\n block && styles.listBlock,\n glass && styles.listGlass,\n shadow && styles.listShadow,\n listVariantStyles[variant],\n ],\n className,\n ).className\n }\n {...rest}\n />\n );\n};\n\nSegmentedRoot.displayName = 'SegmentedRoot';\n\nexport type SegmentedItemProps<Value extends string = string> = Omit<\n ComponentProps<typeof BaseUIToggle<Value>>,\n 'className' | 'render'\n> & {\n block?: boolean;\n className?: string;\n size?: SegmentedSize;\n};\n\nexport const SegmentedItem = <Value extends string = string>({\n block = false,\n className,\n size = 'middle',\n ...rest\n}: SegmentedItemProps<Value>) => {\n return (\n <BaseUIToggle<Value>\n className={\n styleProps(\n [styles.item, focusRing.info, block && styles.itemBlock, itemSizeStyles[size]],\n className,\n ).className\n }\n {...rest}\n />\n );\n};\n\nSegmentedItem.displayName = 'SegmentedItem';\n\ninterface SimpleSpanProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const SegmentedItemIcon: FC<SimpleSpanProps> = ({ children, className, style }) => (\n <span {...styleProps(styles.itemIcon, className, style)}>{children}</span>\n);\nSegmentedItemIcon.displayName = 'SegmentedItemIcon';\n\nexport const SegmentedItemLabel: FC<SimpleSpanProps> = ({ children, className, style }) => (\n <span {...styleProps(styles.itemLabel, className, style)}>{children}</span>\n);\nSegmentedItemLabel.displayName = 'SegmentedItemLabel';\n\nexport interface SegmentedIndicatorProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport const SegmentedIndicator: FC<SegmentedIndicatorProps> = ({ className, style }) => (\n <span\n aria-hidden\n {...styleProps(styles.indicator, clsx('lobe-segmented-indicator', className), style)}\n />\n);\nSegmentedIndicator.displayName = 'SegmentedIndicator';\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,oBAAoB;CAAE,QAAQ,OAAO;CAAY,UAAU,OAAO;AAAa;AAErF,MAAM,iBAAiB;CACrB,OAAO,OAAO;CACd,QAAQ,OAAO;CACf,OAAO,OAAO;AAChB;AAaA,MAAa,iBAAgD,EAC3D,QAAQ,OACR,WACA,QAAQ,OACR,SAAS,OACT,UAAU,UACV,GAAG,WAC4B;CAC/B,OACE,oBAACA,aAAD;EACE,gBAAc;EACd,WACE,WACE;GACE;GACA,OAAO;GACP,SAAS,OAAO;GAChB,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,kBAAkB;EACpB,GACA,SACF,CAAC,CAAC;EAEJ,GAAI;CACL,CAAA;AAEL;AAEA,cAAc,cAAc;AAW5B,MAAa,iBAAgD,EAC3D,QAAQ,OACR,WACA,OAAO,UACP,GAAG,WAC4B;CAC/B,OACE,oBAACC,QAAD;EACE,WACE,WACE;GAAC,OAAO;GAAM,UAAU;GAAM,SAAS,OAAO;GAAW,eAAe;EAAK,GAC7E,SACF,CAAC,CAAC;EAEJ,GAAI;CACL,CAAA;AAEL;AAEA,cAAc,cAAc;AAQ5B,MAAa,qBAA0C,EAAE,UAAU,WAAW,YAC5E,oBAAC,QAAD;CAAM,GAAI,WAAW,OAAO,UAAU,WAAW,KAAK;CAAI;AAAe,CAAA;AAE3E,kBAAkB,cAAc;AAEhC,MAAa,sBAA2C,EAAE,UAAU,WAAW,YAC7E,oBAAC,QAAD;CAAM,GAAI,WAAW,OAAO,WAAW,WAAW,KAAK;CAAI;AAAe,CAAA;AAE5E,mBAAmB,cAAc;AAOjC,MAAa,sBAAmD,EAAE,WAAW,YAC3E,oBAAC,QAAD;CACE,eAAA;CACA,GAAI,WAAW,OAAO,WAAW,KAAK,4BAA4B,SAAS,GAAG,KAAK;AACpF,CAAA;AAEH,mBAAmB,cAAc"}
1
+ {"version":3,"file":"atoms.mjs","names":["BaseUIToggleGroup","BaseUIToggle","clsx"],"sources":["../../src/Segmented/atoms.tsx"],"sourcesContent":["'use client';\n\nimport './style.css';\n\nimport { Toggle as BaseUIToggle } from '@base-ui/react/toggle';\nimport { ToggleGroup as BaseUIToggleGroup } from '@base-ui/react/toggle-group';\nimport clsx from 'clsx';\nimport { type ComponentProps, type CSSProperties, type FC, type ReactNode } from 'react';\n\nimport { focusRing } from '@/styles/stylex/focusRing';\nimport { styleProps } from '@/styles/stylex/props';\n\nimport { segmentedMarker } from './marker.stylex';\nimport { styles } from './style';\nimport type { SegmentedSize, SegmentedVariant } from './type';\n\nconst listVariantStyles = { filled: styles.listFilled, outlined: styles.listOutlined };\n\nconst itemSizeStyles = {\n large: styles.itemLarge,\n middle: styles.itemMiddle,\n small: styles.itemSmall,\n};\n\nexport type SegmentedRootProps<Value extends string = string> = Omit<\n ComponentProps<typeof BaseUIToggleGroup<Value>>,\n 'className' | 'render'\n> & {\n block?: boolean;\n className?: string;\n glass?: boolean;\n shadow?: boolean;\n variant?: SegmentedVariant;\n};\n\nexport const SegmentedRoot = <Value extends string = string>({\n block = false,\n className,\n glass = false,\n shadow = false,\n variant = 'filled',\n ...rest\n}: SegmentedRootProps<Value>) => {\n return (\n <BaseUIToggleGroup<Value>\n data-variant={variant}\n className={\n styleProps(\n [\n segmentedMarker,\n styles.list,\n block && styles.listBlock,\n glass && styles.listGlass,\n shadow && styles.listShadow,\n listVariantStyles[variant],\n ],\n className,\n ).className\n }\n {...rest}\n />\n );\n};\n\nSegmentedRoot.displayName = 'SegmentedRoot';\n\nexport type SegmentedItemProps<Value extends string = string> = Omit<\n ComponentProps<typeof BaseUIToggle<Value>>,\n 'className' | 'render'\n> & {\n block?: boolean;\n className?: string;\n size?: SegmentedSize;\n};\n\nexport const SegmentedItem = <Value extends string = string>({\n block = false,\n className,\n size = 'middle',\n ...rest\n}: SegmentedItemProps<Value>) => {\n return (\n <BaseUIToggle<Value>\n className={\n styleProps(\n [styles.item, focusRing.info, block && styles.itemBlock, itemSizeStyles[size]],\n className,\n ).className\n }\n {...rest}\n />\n );\n};\n\nSegmentedItem.displayName = 'SegmentedItem';\n\ninterface SimpleSpanProps {\n children?: ReactNode;\n className?: string;\n style?: CSSProperties;\n}\n\nexport const SegmentedItemIcon: FC<SimpleSpanProps> = ({ children, className, style }) => (\n <span {...styleProps(styles.itemIcon, className, style)}>{children}</span>\n);\nSegmentedItemIcon.displayName = 'SegmentedItemIcon';\n\nexport const SegmentedItemLabel: FC<SimpleSpanProps> = ({ children, className, style }) => (\n <span {...styleProps(styles.itemLabel, className, style)}>{children}</span>\n);\nSegmentedItemLabel.displayName = 'SegmentedItemLabel';\n\nexport interface SegmentedIndicatorProps {\n className?: string;\n style?: CSSProperties;\n}\n\nexport const SegmentedIndicator: FC<SegmentedIndicatorProps> = ({ className, style }) => (\n <span\n aria-hidden\n {...styleProps(styles.indicator, clsx('lobe-segmented-indicator', className), style)}\n />\n);\nSegmentedIndicator.displayName = 'SegmentedIndicator';\n"],"mappings":";;;;;;;;;;AAgBA,MAAM,oBAAoB;CAAE,QAAQ,OAAO;CAAY,UAAU,OAAO;AAAa;AAErF,MAAM,iBAAiB;CACrB,OAAO,OAAO;CACd,QAAQ,OAAO;CACf,OAAO,OAAO;AAChB;AAaA,MAAa,iBAAgD,EAC3D,QAAQ,OACR,WACA,QAAQ,OACR,SAAS,OACT,UAAU,UACV,GAAG,WAC4B;CAC/B,OACE,oBAACA,aAAD;EACE,gBAAc;EACd,WACE,WACE;GACE;GACA,OAAO;GACP,SAAS,OAAO;GAChB,SAAS,OAAO;GAChB,UAAU,OAAO;GACjB,kBAAkB;EACpB,GACA,SACF,CAAC,CAAC;EAEJ,GAAI;CACL,CAAA;AAEL;AAEA,cAAc,cAAc;AAW5B,MAAa,iBAAgD,EAC3D,QAAQ,OACR,WACA,OAAO,UACP,GAAG,WAC4B;CAC/B,OACE,oBAACC,QAAD;EACE,WACE,WACE;GAAC,OAAO;GAAM,UAAU;GAAM,SAAS,OAAO;GAAW,eAAe;EAAK,GAC7E,SACF,CAAC,CAAC;EAEJ,GAAI;CACL,CAAA;AAEL;AAEA,cAAc,cAAc;AAQ5B,MAAa,qBAA0C,EAAE,UAAU,WAAW,YAC5E,oBAAC,QAAD;CAAM,GAAI,WAAW,OAAO,UAAU,WAAW,KAAK;CAAI;AAAe,CAAA;AAE3E,kBAAkB,cAAc;AAEhC,MAAa,sBAA2C,EAAE,UAAU,WAAW,YAC7E,oBAAC,QAAD;CAAM,GAAI,WAAW,OAAO,WAAW,WAAW,KAAK;CAAI;AAAe,CAAA;AAE5E,mBAAmB,cAAc;AAOjC,MAAa,sBAAmD,EAAE,WAAW,YAC3E,oBAAC,QAAD;CACE,eAAA;CACA,GAAI,WAAW,OAAO,WAAWC,OAAK,4BAA4B,SAAS,GAAG,KAAK;AACpF,CAAA;AAEH,mBAAmB,cAAc"}
@@ -4,16 +4,16 @@ import { useThemeMode } from "../styles/theme/scope.mjs";
4
4
  import { menuClassNames, menuStyles } from "../DropdownMenu/style.mjs";
5
5
  import { styles, triggerStyles } from "./style.mjs";
6
6
  import { SelectPositioner } from "./atoms.mjs";
7
- import { isValueEmpty } from "./helpers.mjs";
7
+ import { isValueEmpty, shouldIgnoreRootValueChange } from "./helpers.mjs";
8
8
  import { usePortalContainer, useSelectOpen, useSelectSearch, useSelectValue, useSelectVirtual } from "./hooks.mjs";
9
9
  import { EmptyContent, SelectListSection, SelectSearchInput, SelectTriggerSuffix, createTriggerValueRenderer, resolveIconNode, resolveSuffixIcon } from "./parts.mjs";
10
10
  import { renderOptions } from "./renderOptions.mjs";
11
11
  import { memo, useCallback, useEffect, useMemo, useState } from "react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
- import clsx from "clsx";
13
+ import clsx$1 from "clsx";
14
14
  import { Select } from "@base-ui/react/select";
15
15
  //#region src/Select/Select.tsx
16
- const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOpen, defaultValue, disabled, id, labelRender, listHeight = 512, listItemHeight, loading, mode, name, onChange, onOpenChange, onSelect, open, optionRender, options, placeholder, popupClassName, popupMatchSelectWidth, prefix, readOnly, required, behaviorVariant = "default", selectedIndicatorVariant = "check", shadow, showSearch, size = "middle", style, suffixIcon, suffixIconProps, tokenSeparators, value, variant, virtual }) => {
16
+ const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOpen, defaultValue, disabled, id, labelRender, listHeight = 512, listItemHeight, loading, mode, name, onChange, onOpenChange, onSelect, open, optionRender, options, placeholder, popupClassName, popupMatchSelectWidth, prefix, readOnly, required, behaviorVariant = "default", selectedIndicatorVariant = "check", shadow, showSearch, filterOption, onSearch, size = "middle", style, suffixIcon, suffixIconProps, tokenSeparators, value, variant, virtual }) => {
17
17
  const { isDarkMode } = useThemeMode();
18
18
  const resolvedVariant = variant ?? (isDarkMode ? "filled" : "outlined");
19
19
  const isTags = mode === "tags";
@@ -38,15 +38,10 @@ const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOp
38
38
  onOpenChange,
39
39
  open
40
40
  });
41
- const handleRootValueChange = useCallback((nextValue) => {
42
- if (!(isTags && !mergedOpen)) handleValueChange(nextValue);
43
- }, [
44
- handleValueChange,
45
- isTags,
46
- mergedOpen
47
- ]);
48
41
  const handleRemoveTag = useCallback((index) => handleValueChange(valueArray.filter((_, itemIndex) => itemIndex !== index)), [handleValueChange, valueArray]);
49
42
  const { filteredOptions, handleSearchChange, handleSearchKeyDown, searchValue, shouldShowSearch, stopSearchPropagation } = useSelectSearch({
43
+ filterOption,
44
+ onSearch,
50
45
  appendTagValues,
51
46
  handleOpenChange,
52
47
  mergedOpen,
@@ -56,6 +51,20 @@ const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOp
56
51
  showSearch,
57
52
  tokenSeparators
58
53
  });
54
+ const handleRootValueChange = useCallback((nextValue, eventDetails) => {
55
+ if (isTags && !mergedOpen) return;
56
+ if (shouldIgnoreRootValueChange({
57
+ mergedOpen,
58
+ reason: eventDetails?.reason,
59
+ searchValue
60
+ })) return;
61
+ handleValueChange(nextValue);
62
+ }, [
63
+ handleValueChange,
64
+ isTags,
65
+ mergedOpen,
66
+ searchValue
67
+ ]);
59
68
  const virtualState = useSelectVirtual({
60
69
  filteredOptions,
61
70
  listItemHeight,
@@ -120,9 +129,9 @@ const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOp
120
129
  shadow,
121
130
  size,
122
131
  variant: resolvedVariant
123
- }), clsx(className, classNames?.root, classNames?.trigger), style);
132
+ }), clsx$1(className, classNames?.root, classNames?.trigger), style);
124
133
  const isBoldIndicator = selectedIndicatorVariant === "bold";
125
- const itemTextClassName = styleProps(optionRender ? menuStyles.itemContent : menuStyles.label, clsx(!optionRender && menuClassNames.label, classNames?.itemText)).className;
134
+ const itemTextClassName = styleProps(optionRender ? menuStyles.itemContent : menuStyles.label, clsx$1(!optionRender && menuClassNames.label, classNames?.itemText)).className;
126
135
  const isEmpty = filteredOptions.length === 0;
127
136
  const listContent = isEmpty ? /* @__PURE__ */ jsx(EmptyContent, { classNames }) : renderOptions({
128
137
  classNames,
@@ -186,7 +195,7 @@ const Select$1 = memo(({ allowClear, autoFocus, className, classNames, defaultOp
186
195
  side: "bottom",
187
196
  sideOffset: 6,
188
197
  children: /* @__PURE__ */ jsxs(Select.Popup, {
189
- ...styleProps([menuStyles.popup, styles.popup], clsx(menuClassNames.popup, popupClassName, classNames?.popup, classNames?.dropdown), popupStyle),
198
+ ...styleProps([menuStyles.popup, styles.popup], clsx$1(menuClassNames.popup, popupClassName, classNames?.popup, classNames?.dropdown), popupStyle),
190
199
  children: [shouldShowSearch && !isTags && /* @__PURE__ */ jsx(SelectSearchInput, {
191
200
  classNames,
192
201
  placeholder,
@@ -1 +1 @@
1
- {"version":3,"file":"Select.mjs","names":["Select","BaseSelect"],"sources":["../../src/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { Select as BaseSelect } from '@base-ui/react/select';\nimport clsx from 'clsx';\nimport { type MouseEvent } from 'react';\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { menuClassNames, menuStyles } from '@/DropdownMenu/sharedStyle';\nimport { styleProps } from '@/styles/stylex/props';\nimport { useThemeMode } from '@/styles/theme/scope';\n\nimport { SelectPositioner } from './atoms';\nimport { isValueEmpty } from './helpers';\nimport {\n usePortalContainer,\n useSelectOpen,\n useSelectSearch,\n useSelectValue,\n useSelectVirtual,\n} from './hooks';\nimport {\n createTriggerValueRenderer,\n EmptyContent,\n resolveIconNode,\n resolveSuffixIcon,\n SelectListSection,\n SelectSearchInput,\n SelectTriggerSuffix,\n} from './parts';\nimport { renderOptions } from './renderOptions';\nimport { styles, triggerStyles } from './style';\nimport { type SelectOption, type SelectProps } from './type';\n\nconst Select = memo<SelectProps<any>>(\n ({\n allowClear,\n autoFocus,\n className,\n classNames,\n defaultOpen,\n defaultValue,\n disabled,\n id,\n labelRender,\n listHeight = 512,\n listItemHeight,\n loading,\n mode,\n name,\n onChange,\n onOpenChange,\n onSelect,\n open,\n optionRender,\n options,\n placeholder,\n popupClassName,\n popupMatchSelectWidth,\n prefix,\n readOnly,\n required,\n behaviorVariant = 'default',\n selectedIndicatorVariant = 'check',\n shadow,\n showSearch,\n size = 'middle',\n style,\n suffixIcon,\n suffixIconProps,\n tokenSeparators,\n value,\n variant,\n virtual,\n }) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const isTags = mode === 'tags';\n const isMultiple = mode === 'multiple' || mode === 'tags';\n const isItemAligned = behaviorVariant === 'item-aligned';\n\n const [extraOptions, setExtraOptions] = useState<SelectOption<any>[]>([]);\n\n useEffect(() => {\n if (mode !== 'tags' && extraOptions.length > 0) {\n setExtraOptions([]);\n }\n }, [mode, extraOptions.length]);\n\n const {\n appendTagValues,\n getOption,\n handleValueChange,\n normalizedValue,\n normalizeValue,\n removeLastTagValue,\n resolvedOptions,\n valueArray,\n } = useSelectValue({\n defaultValue,\n extraOptions,\n isMultiple,\n onChange,\n onSelect,\n options,\n setExtraOptions,\n value,\n });\n\n const { handleOpenChange, mergedOpen } = useSelectOpen({ defaultOpen, onOpenChange, open });\n\n const handleRootValueChange = useCallback(\n (nextValue: any) => {\n if (!(isTags && !mergedOpen)) handleValueChange(nextValue);\n },\n [handleValueChange, isTags, mergedOpen],\n );\n\n const handleRemoveTag = useCallback(\n (index: number) =>\n handleValueChange(valueArray.filter((_, itemIndex) => itemIndex !== index)),\n [handleValueChange, valueArray],\n );\n\n const {\n filteredOptions,\n handleSearchChange,\n handleSearchKeyDown,\n searchValue,\n shouldShowSearch,\n stopSearchPropagation,\n } = useSelectSearch({\n appendTagValues,\n handleOpenChange,\n mergedOpen,\n mode,\n removeLastTagValue,\n resolvedOptions,\n showSearch,\n tokenSeparators,\n });\n\n const virtualState = useSelectVirtual({\n filteredOptions,\n listItemHeight,\n size,\n valueArray,\n virtual,\n });\n\n const portalContainer = usePortalContainer();\n\n const renderValue = useMemo(\n () =>\n createTriggerValueRenderer({\n getOption,\n isMultiple,\n isTags,\n labelRender,\n normalizeValue,\n onRemoveValue: handleRemoveTag,\n placeholder: isTags ? undefined : placeholder,\n }),\n [getOption, handleRemoveTag, isMultiple, isTags, labelRender, normalizeValue, placeholder],\n );\n\n const hasValue = isMultiple ? valueArray.length > 0 : !isValueEmpty(normalizedValue);\n const showClear = Boolean(allowClear && hasValue && !disabled && !readOnly);\n\n const handleClear = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n handleValueChange(isMultiple ? [] : null);\n },\n [handleValueChange, isMultiple],\n );\n\n const prefixNode = useMemo(() => resolveIconNode(prefix), [prefix]);\n const suffixIconNode = useMemo(\n () => resolveSuffixIcon(suffixIcon, suffixIconProps, loading),\n [loading, suffixIcon, suffixIconProps],\n );\n\n const popupStyle = useMemo(() => {\n const maxHeight = isItemAligned ? '80vh' : `${listHeight}px`;\n const baseStyle: React.CSSProperties = {\n maxWidth: 'var(--available-width)',\n minWidth: 'var(--anchor-width)',\n ['--lobe-select-popup-max-height' as any]: maxHeight,\n };\n\n if (popupMatchSelectWidth === undefined || popupMatchSelectWidth === true) {\n return baseStyle;\n }\n if (typeof popupMatchSelectWidth === 'number') {\n return {\n ...baseStyle,\n minWidth: popupMatchSelectWidth,\n width: popupMatchSelectWidth,\n };\n }\n return { ...baseStyle, minWidth: 'max-content' };\n }, [isItemAligned, listHeight, popupMatchSelectWidth]);\n\n const triggerProps = styleProps(\n triggerStyles({ shadow, size, variant: resolvedVariant }),\n clsx(className, classNames?.root, classNames?.trigger),\n style,\n );\n\n const isBoldIndicator = selectedIndicatorVariant === 'bold';\n const itemTextClassName = styleProps(\n optionRender ? menuStyles.itemContent : menuStyles.label,\n clsx(!optionRender && menuClassNames.label, classNames?.itemText),\n ).className;\n\n const isEmpty = filteredOptions.length === 0;\n const listContent = isEmpty ? (\n <EmptyContent classNames={classNames} />\n ) : (\n renderOptions({\n classNames,\n isBoldIndicator,\n items: filteredOptions,\n itemTextClassName,\n listItemHeight,\n optionRender,\n })\n );\n\n return (\n <BaseSelect.Root\n disabled={disabled}\n id={id}\n modal={isItemAligned}\n multiple={isMultiple}\n name={name}\n open={mergedOpen}\n readOnly={readOnly}\n required={required}\n value={normalizedValue}\n onOpenChange={handleOpenChange}\n onValueChange={handleRootValueChange}\n >\n <BaseSelect.Trigger\n autoFocus={!isTags && autoFocus}\n {...triggerProps}\n disabled={disabled}\n nativeButton={!isTags}\n render={isTags ? <div /> : undefined}\n >\n {prefixNode !== null && prefixNode !== undefined && (\n <span {...styleProps(styles.prefix, classNames?.prefix)}>{prefixNode}</span>\n )}\n <BaseSelect.Value\n {...styleProps([styles.value, isTags && styles.tagsValue], classNames?.value)}\n >\n {renderValue}\n </BaseSelect.Value>\n {isTags && (\n <SelectSearchInput\n inline\n autoFocus={autoFocus}\n classNames={classNames}\n disabled={disabled}\n placeholder={valueArray.length === 0 ? placeholder : undefined}\n readOnly={readOnly}\n stopPropagation={stopSearchPropagation}\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n />\n )}\n <SelectTriggerSuffix\n classNames={classNames}\n showClear={showClear}\n suffixIconNode={suffixIconNode}\n onClear={handleClear}\n />\n </BaseSelect.Trigger>\n\n <BaseSelect.Portal container={portalContainer}>\n <SelectPositioner\n align=\"start\"\n alignItemWithTrigger={isItemAligned}\n side=\"bottom\"\n sideOffset={6}\n >\n <BaseSelect.Popup\n {...styleProps(\n [menuStyles.popup, styles.popup],\n clsx(menuClassNames.popup, popupClassName, classNames?.popup, classNames?.dropdown),\n popupStyle,\n )}\n >\n {shouldShowSearch && !isTags && (\n <SelectSearchInput\n classNames={classNames}\n placeholder={placeholder}\n stopPropagation={stopSearchPropagation}\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n />\n )}\n <SelectListSection\n classNames={classNames}\n hasSearch={shouldShowSearch && !isTags}\n isEmpty={isEmpty}\n listContent={listContent}\n listItemHeight={listItemHeight}\n virtual={virtual}\n virtualState={virtualState}\n />\n </BaseSelect.Popup>\n </SelectPositioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n },\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
1
+ {"version":3,"file":"Select.mjs","names":["Select","clsx","BaseSelect"],"sources":["../../src/Select/Select.tsx"],"sourcesContent":["'use client';\n\nimport { Select as BaseSelect } from '@base-ui/react/select';\nimport clsx from 'clsx';\nimport { type MouseEvent } from 'react';\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { menuClassNames, menuStyles } from '@/DropdownMenu/sharedStyle';\nimport { styleProps } from '@/styles/stylex/props';\nimport { useThemeMode } from '@/styles/theme/scope';\n\nimport { SelectPositioner } from './atoms';\nimport { isValueEmpty, shouldIgnoreRootValueChange } from './helpers';\nimport {\n usePortalContainer,\n useSelectOpen,\n useSelectSearch,\n useSelectValue,\n useSelectVirtual,\n} from './hooks';\nimport {\n createTriggerValueRenderer,\n EmptyContent,\n resolveIconNode,\n resolveSuffixIcon,\n SelectListSection,\n SelectSearchInput,\n SelectTriggerSuffix,\n} from './parts';\nimport { renderOptions } from './renderOptions';\nimport { styles, triggerStyles } from './style';\nimport { type SelectOption, type SelectProps } from './type';\n\nconst Select = memo<SelectProps<any>>(\n ({\n allowClear,\n autoFocus,\n className,\n classNames,\n defaultOpen,\n defaultValue,\n disabled,\n id,\n labelRender,\n listHeight = 512,\n listItemHeight,\n loading,\n mode,\n name,\n onChange,\n onOpenChange,\n onSelect,\n open,\n optionRender,\n options,\n placeholder,\n popupClassName,\n popupMatchSelectWidth,\n prefix,\n readOnly,\n required,\n behaviorVariant = 'default',\n selectedIndicatorVariant = 'check',\n shadow,\n showSearch,\n filterOption,\n onSearch,\n size = 'middle',\n style,\n suffixIcon,\n suffixIconProps,\n tokenSeparators,\n value,\n variant,\n virtual,\n }) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const isTags = mode === 'tags';\n const isMultiple = mode === 'multiple' || mode === 'tags';\n const isItemAligned = behaviorVariant === 'item-aligned';\n\n const [extraOptions, setExtraOptions] = useState<SelectOption<any>[]>([]);\n\n useEffect(() => {\n if (mode !== 'tags' && extraOptions.length > 0) {\n setExtraOptions([]);\n }\n }, [mode, extraOptions.length]);\n\n const {\n appendTagValues,\n getOption,\n handleValueChange,\n normalizedValue,\n normalizeValue,\n removeLastTagValue,\n resolvedOptions,\n valueArray,\n } = useSelectValue({\n defaultValue,\n extraOptions,\n isMultiple,\n onChange,\n onSelect,\n options,\n setExtraOptions,\n value,\n });\n\n const { handleOpenChange, mergedOpen } = useSelectOpen({ defaultOpen, onOpenChange, open });\n\n const handleRemoveTag = useCallback(\n (index: number) =>\n handleValueChange(valueArray.filter((_, itemIndex) => itemIndex !== index)),\n [handleValueChange, valueArray],\n );\n\n const {\n filteredOptions,\n handleSearchChange,\n handleSearchKeyDown,\n searchValue,\n shouldShowSearch,\n stopSearchPropagation,\n } = useSelectSearch({\n filterOption,\n onSearch,\n appendTagValues,\n handleOpenChange,\n mergedOpen,\n mode,\n removeLastTagValue,\n resolvedOptions,\n showSearch,\n tokenSeparators,\n });\n\n // Base UI prunes selected values that are missing from the registered (filtered) options\n // and reports it with reason 'none'. Ignore it while open or while closing with a stale\n // search term, so searching never mutates the value. Closed typeahead stays valid.\n const handleRootValueChange = useCallback(\n (nextValue: any, eventDetails?: { reason?: string }) => {\n if (isTags && !mergedOpen) return;\n if (shouldIgnoreRootValueChange({ mergedOpen, reason: eventDetails?.reason, searchValue }))\n return;\n handleValueChange(nextValue);\n },\n [handleValueChange, isTags, mergedOpen, searchValue],\n );\n\n const virtualState = useSelectVirtual({\n filteredOptions,\n listItemHeight,\n size,\n valueArray,\n virtual,\n });\n\n const portalContainer = usePortalContainer();\n\n const renderValue = useMemo(\n () =>\n createTriggerValueRenderer({\n getOption,\n isMultiple,\n isTags,\n labelRender,\n normalizeValue,\n onRemoveValue: handleRemoveTag,\n placeholder: isTags ? undefined : placeholder,\n }),\n [getOption, handleRemoveTag, isMultiple, isTags, labelRender, normalizeValue, placeholder],\n );\n\n const hasValue = isMultiple ? valueArray.length > 0 : !isValueEmpty(normalizedValue);\n const showClear = Boolean(allowClear && hasValue && !disabled && !readOnly);\n\n const handleClear = useCallback(\n (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n handleValueChange(isMultiple ? [] : null);\n },\n [handleValueChange, isMultiple],\n );\n\n const prefixNode = useMemo(() => resolveIconNode(prefix), [prefix]);\n const suffixIconNode = useMemo(\n () => resolveSuffixIcon(suffixIcon, suffixIconProps, loading),\n [loading, suffixIcon, suffixIconProps],\n );\n\n const popupStyle = useMemo(() => {\n const maxHeight = isItemAligned ? '80vh' : `${listHeight}px`;\n const baseStyle: React.CSSProperties = {\n maxWidth: 'var(--available-width)',\n minWidth: 'var(--anchor-width)',\n ['--lobe-select-popup-max-height' as any]: maxHeight,\n };\n\n if (popupMatchSelectWidth === undefined || popupMatchSelectWidth === true) {\n return baseStyle;\n }\n if (typeof popupMatchSelectWidth === 'number') {\n return {\n ...baseStyle,\n minWidth: popupMatchSelectWidth,\n width: popupMatchSelectWidth,\n };\n }\n return { ...baseStyle, minWidth: 'max-content' };\n }, [isItemAligned, listHeight, popupMatchSelectWidth]);\n\n const triggerProps = styleProps(\n triggerStyles({ shadow, size, variant: resolvedVariant }),\n clsx(className, classNames?.root, classNames?.trigger),\n style,\n );\n\n const isBoldIndicator = selectedIndicatorVariant === 'bold';\n const itemTextClassName = styleProps(\n optionRender ? menuStyles.itemContent : menuStyles.label,\n clsx(!optionRender && menuClassNames.label, classNames?.itemText),\n ).className;\n\n const isEmpty = filteredOptions.length === 0;\n const listContent = isEmpty ? (\n <EmptyContent classNames={classNames} />\n ) : (\n renderOptions({\n classNames,\n isBoldIndicator,\n items: filteredOptions,\n itemTextClassName,\n listItemHeight,\n optionRender,\n })\n );\n\n return (\n <BaseSelect.Root\n disabled={disabled}\n id={id}\n modal={isItemAligned}\n multiple={isMultiple}\n name={name}\n open={mergedOpen}\n readOnly={readOnly}\n required={required}\n value={normalizedValue}\n onOpenChange={handleOpenChange}\n onValueChange={handleRootValueChange}\n >\n <BaseSelect.Trigger\n autoFocus={!isTags && autoFocus}\n {...triggerProps}\n disabled={disabled}\n nativeButton={!isTags}\n render={isTags ? <div /> : undefined}\n >\n {prefixNode !== null && prefixNode !== undefined && (\n <span {...styleProps(styles.prefix, classNames?.prefix)}>{prefixNode}</span>\n )}\n <BaseSelect.Value\n {...styleProps([styles.value, isTags && styles.tagsValue], classNames?.value)}\n >\n {renderValue}\n </BaseSelect.Value>\n {isTags && (\n <SelectSearchInput\n inline\n autoFocus={autoFocus}\n classNames={classNames}\n disabled={disabled}\n placeholder={valueArray.length === 0 ? placeholder : undefined}\n readOnly={readOnly}\n stopPropagation={stopSearchPropagation}\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n />\n )}\n <SelectTriggerSuffix\n classNames={classNames}\n showClear={showClear}\n suffixIconNode={suffixIconNode}\n onClear={handleClear}\n />\n </BaseSelect.Trigger>\n\n <BaseSelect.Portal container={portalContainer}>\n <SelectPositioner\n align=\"start\"\n alignItemWithTrigger={isItemAligned}\n side=\"bottom\"\n sideOffset={6}\n >\n <BaseSelect.Popup\n {...styleProps(\n [menuStyles.popup, styles.popup],\n clsx(menuClassNames.popup, popupClassName, classNames?.popup, classNames?.dropdown),\n popupStyle,\n )}\n >\n {shouldShowSearch && !isTags && (\n <SelectSearchInput\n classNames={classNames}\n placeholder={placeholder}\n stopPropagation={stopSearchPropagation}\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleSearchKeyDown}\n />\n )}\n <SelectListSection\n classNames={classNames}\n hasSearch={shouldShowSearch && !isTags}\n isEmpty={isEmpty}\n listContent={listContent}\n listItemHeight={listItemHeight}\n virtual={virtual}\n virtualState={virtualState}\n />\n </BaseSelect.Popup>\n </SelectPositioner>\n </BaseSelect.Portal>\n </BaseSelect.Root>\n );\n },\n);\n\nSelect.displayName = 'Select';\n\nexport default Select;\n"],"mappings":"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"}
@@ -10,15 +10,15 @@ import { menuClassNames, menuStyles } from "../DropdownMenu/style.mjs";
10
10
  import { styles, triggerStyles } from "./style.mjs";
11
11
  import { cloneElement, isValidElement } from "react";
12
12
  import { jsx } from "react/jsx-runtime";
13
- import clsx from "clsx";
13
+ import clsx$1 from "clsx";
14
14
  import * as stylex from "@stylexjs/stylex";
15
15
  import { mergeProps } from "@base-ui/react/merge-props";
16
16
  import { Select } from "@base-ui/react/select";
17
17
  //#region src/Select/atoms.tsx
18
18
  const mergeStateClassName = (base, className, extra) => {
19
19
  const baseClassName = styleProps(base, extra).className;
20
- if (typeof className === "function") return (state) => clsx(baseClassName, className(state));
21
- return clsx(baseClassName, className);
20
+ if (typeof className === "function") return (state) => clsx$1(baseClassName, className(state));
21
+ return clsx$1(baseClassName, className);
22
22
  };
23
23
  const SelectRoot = Select.Root;
24
24
  const SelectBackdrop = Select.Backdrop;
@@ -49,7 +49,7 @@ const SelectTrigger = ({ children, className, nativeButton, shadow, size = "midd
49
49
  const extraClassName = typeof className === "function" ? className(state) : className;
50
50
  return cloneElement(children, {
51
51
  ...mergedProps,
52
- className: clsx(baseClassName, childClassName, extraClassName),
52
+ className: clsx$1(baseClassName, childClassName, extraClassName),
53
53
  ref: mergeRefs([
54
54
  children.ref,
55
55
  props.ref,
@@ -1 +1 @@
1
- {"version":3,"file":"atoms.mjs","names":[],"sources":["../../src/Select/atoms.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Select } from '@base-ui/react/select';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport {\n cloneElement,\n type ComponentProps,\n type ComponentPropsWithRef,\n isValidElement,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { menuClassNames, menuStyles } from '@/DropdownMenu/sharedStyle';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { styleProps } from '@/styles/stylex/props';\nimport { useThemeMode } from '@/styles/theme/scope';\nimport { mergeRefs, useMergeRefs } from '@/utils/mergeRefs';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { styles, triggerStyles } from './style';\nimport { type SelectSize, type SelectVariant } from './type';\n\nconst mergeStateClassName = <TState,>(\n base: Parameters<typeof styleProps>[0],\n className: string | ((state: TState) => string | undefined) | undefined,\n extra?: string,\n) => {\n const baseClassName = styleProps(base, extra).className;\n if (typeof className === 'function')\n return (state: TState) => clsx(baseClassName, className(state));\n return clsx(baseClassName, className);\n};\n\nexport const SelectRoot = Select.Root;\nexport const SelectBackdrop = Select.Backdrop;\nexport const SelectSeparator = Select.Separator;\n\nexport type SelectTriggerProps = Omit<\n ComponentPropsWithRef<typeof Select.Trigger>,\n 'children' | 'render'\n> & {\n children: ComponentProps<typeof Select.Trigger>['children'];\n shadow?: boolean;\n size?: SelectSize;\n variant?: SelectVariant;\n};\n\nexport const SelectTrigger = ({\n children,\n className,\n nativeButton,\n shadow,\n size = 'middle',\n variant,\n ref: refProp,\n ...rest\n}: SelectTriggerProps) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const triggerStyle = triggerStyles({ shadow, size, variant: resolvedVariant });\n const baseClassName = stylex.props(triggerStyle).className;\n\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n if (isValidElement(children)) {\n return (\n <Select.Trigger\n {...rest}\n nativeButton={resolvedNativeButton}\n render={(props, state) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n const childClassName =\n typeof (mergedProps as any).className === 'function'\n ? (mergedProps as any).className(state)\n : (mergedProps as any).className;\n const extraClassName = typeof className === 'function' ? className(state) : className;\n\n return cloneElement(children as any, {\n ...mergedProps,\n className: clsx(baseClassName, childClassName, extraClassName),\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <Select.Trigger\n {...rest}\n className={mergeStateClassName([triggerStyle], className) as any}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Select.Trigger>\n );\n};\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport type SelectIconProps = ComponentProps<typeof Select.Icon>;\n\nexport const SelectIcon = ({ className, ...rest }: SelectIconProps) => {\n return <Select.Icon className={mergeStateClassName([styles.icon], className) as any} {...rest} />;\n};\n\nSelectIcon.displayName = 'SelectIcon';\n\nexport type SelectValueProps = ComponentProps<typeof Select.Value>;\n\nexport const SelectValue = ({ className, ...rest }: SelectValueProps) => {\n return (\n <Select.Value className={mergeStateClassName([styles.value], className) as any} {...rest} />\n );\n};\n\nSelectValue.displayName = 'SelectValue';\n\nexport type SelectPortalProps = ComponentProps<typeof Select.Portal> & {\n /**\n * When `container` is not provided, it uses a shared container created by `usePortalContainer`.\n */\n container?: HTMLElement | null;\n};\n\nexport const SelectPortal = ({ container, ...rest }: SelectPortalProps) => {\n const appElement = useAppElement();\n return <Select.Portal container={container ?? appElement ?? undefined} {...rest} />;\n};\n\nSelectPortal.displayName = 'SelectPortal';\n\nexport type SelectPositionerProps = ComponentProps<typeof Select.Positioner>;\n\nexport const SelectPositioner = ({\n align,\n alignItemWithTrigger,\n className,\n collisionPadding,\n side,\n sideOffset,\n style,\n ref: forwardedRef,\n ...rest\n}: SelectPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n const composedRef = useMergeRefs([forwardedRef, zRef]);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <Select.Positioner\n align={align ?? 'start'}\n alignItemWithTrigger={alignItemWithTrigger ?? false}\n className={mergeStateClassName([styles.positioner], className) as any}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={composedRef as any}\n side={side ?? 'bottom'}\n sideOffset={sideOffset ?? 6}\n style={resolvedStyle}\n {...rest}\n />\n );\n};\n\nSelectPositioner.displayName = 'SelectPositioner';\n\nexport type SelectPopupProps = ComponentProps<typeof Select.Popup>;\n\nexport const SelectPopup = ({ className, ...rest }: SelectPopupProps) => {\n return (\n <Select.Popup\n className={\n mergeStateClassName(\n [menuStyles.popup, styles.popup],\n className,\n menuClassNames.popup,\n ) as any\n }\n {...rest}\n />\n );\n};\n\nSelectPopup.displayName = 'SelectPopup';\n\nexport type SelectListProps = ComponentProps<typeof Select.List>;\n\nexport const SelectList = ({ className, ...rest }: SelectListProps) => {\n return <Select.List className={mergeStateClassName([styles.list], className) as any} {...rest} />;\n};\n\nSelectList.displayName = 'SelectList';\n\nexport type SelectItemProps = ComponentProps<typeof Select.Item>;\n\nexport const SelectItem = ({ className, ...rest }: SelectItemProps) => {\n return (\n <Select.Item className={mergeStateClassName([menuStyles.item], className) as any} {...rest} />\n );\n};\n\nSelectItem.displayName = 'SelectItem';\n\nexport type SelectItemTextProps = ComponentProps<typeof Select.ItemText>;\n\nexport const SelectItemText = ({ className, ...rest }: SelectItemTextProps) => {\n return (\n <Select.ItemText\n className={mergeStateClassName([menuStyles.label], className, menuClassNames.label) as any}\n {...rest}\n />\n );\n};\n\nSelectItemText.displayName = 'SelectItemText';\n\nexport type SelectItemIndicatorProps = ComponentProps<typeof Select.ItemIndicator>;\n\nexport const SelectItemIndicator = ({ className, ...rest }: SelectItemIndicatorProps) => {\n return (\n <Select.ItemIndicator\n className={mergeStateClassName([styles.itemIndicator], className) as any}\n {...rest}\n />\n );\n};\n\nSelectItemIndicator.displayName = 'SelectItemIndicator';\n\nexport type SelectGroupProps = ComponentProps<typeof Select.Group>;\n\nexport const SelectGroup = ({ className, ...rest }: SelectGroupProps) => {\n return <Select.Group className={className} {...rest} />;\n};\n\nSelectGroup.displayName = 'SelectGroup';\n\nexport type SelectGroupLabelProps = ComponentProps<typeof Select.GroupLabel>;\n\nexport const SelectGroupLabel = ({ className, ...rest }: SelectGroupLabelProps) => {\n return (\n <Select.GroupLabel\n className={mergeStateClassName([menuStyles.groupLabel], className) as any}\n {...rest}\n />\n );\n};\n\nSelectGroupLabel.displayName = 'SelectGroupLabel';\n\nexport type SelectScrollUpArrowProps = ComponentProps<typeof Select.ScrollUpArrow>;\n\nexport const SelectScrollUpArrow = ({ className, ...rest }: SelectScrollUpArrowProps) => {\n return (\n <Select.ScrollUpArrow\n className={mergeStateClassName([styles.scrollArrow], className) as any}\n {...rest}\n />\n );\n};\n\nSelectScrollUpArrow.displayName = 'SelectScrollUpArrow';\n\nexport type SelectScrollDownArrowProps = ComponentProps<typeof Select.ScrollDownArrow>;\n\nexport const SelectScrollDownArrow = ({ className, ...rest }: SelectScrollDownArrowProps) => {\n return (\n <Select.ScrollDownArrow\n className={mergeStateClassName([styles.scrollArrow], className) as any}\n {...rest}\n />\n );\n};\n\nSelectScrollDownArrow.displayName = 'SelectScrollDownArrow';\n\nexport type SelectArrowProps = ComponentProps<typeof Select.Arrow>;\n\nexport const SelectArrow = ({ className, ...rest }: SelectArrowProps) => {\n return (\n <Select.Arrow\n className={mergeStateClassName([styles.arrow], className, 'lobe-select-arrow') as any}\n {...rest}\n />\n );\n};\n\nSelectArrow.displayName = 'SelectArrow';\n"],"mappings":"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"}
1
+ {"version":3,"file":"atoms.mjs","names":["clsx"],"sources":["../../src/Select/atoms.tsx"],"sourcesContent":["'use client';\n\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { Select } from '@base-ui/react/select';\nimport * as stylex from '@stylexjs/stylex';\nimport clsx from 'clsx';\nimport {\n cloneElement,\n type ComponentProps,\n type ComponentPropsWithRef,\n isValidElement,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\nimport { menuClassNames, menuStyles } from '@/DropdownMenu/sharedStyle';\nimport { useNativeButton } from '@/hooks/useNativeButton';\nimport { getFloatingCollisionPadding } from '@/internal/floating';\nimport { styleProps } from '@/styles/stylex/props';\nimport { useThemeMode } from '@/styles/theme/scope';\nimport { mergeRefs, useMergeRefs } from '@/utils/mergeRefs';\n\nimport { useLayerZIndex } from '../internal/zIndex';\nimport { styles, triggerStyles } from './style';\nimport { type SelectSize, type SelectVariant } from './type';\n\nconst mergeStateClassName = <TState,>(\n base: Parameters<typeof styleProps>[0],\n className: string | ((state: TState) => string | undefined) | undefined,\n extra?: string,\n) => {\n const baseClassName = styleProps(base, extra).className;\n if (typeof className === 'function')\n return (state: TState) => clsx(baseClassName, className(state));\n return clsx(baseClassName, className);\n};\n\nexport const SelectRoot = Select.Root;\nexport const SelectBackdrop = Select.Backdrop;\nexport const SelectSeparator = Select.Separator;\n\nexport type SelectTriggerProps = Omit<\n ComponentPropsWithRef<typeof Select.Trigger>,\n 'children' | 'render'\n> & {\n children: ComponentProps<typeof Select.Trigger>['children'];\n shadow?: boolean;\n size?: SelectSize;\n variant?: SelectVariant;\n};\n\nexport const SelectTrigger = ({\n children,\n className,\n nativeButton,\n shadow,\n size = 'middle',\n variant,\n ref: refProp,\n ...rest\n}: SelectTriggerProps) => {\n const { isDarkMode } = useThemeMode();\n const resolvedVariant = variant ?? (isDarkMode ? 'filled' : 'outlined');\n const triggerStyle = triggerStyles({ shadow, size, variant: resolvedVariant });\n const baseClassName = stylex.props(triggerStyle).className;\n\n const { isNativeButtonTriggerElement, resolvedNativeButton } = useNativeButton({\n children,\n nativeButton,\n });\n\n if (isValidElement(children)) {\n return (\n <Select.Trigger\n {...rest}\n nativeButton={resolvedNativeButton}\n render={(props, state) => {\n // Base UI's trigger props include `type=\"button\"` by default.\n // If we render into a non-<button> element, that prop is invalid and can warn.\n const resolvedProps = (() => {\n if (isNativeButtonTriggerElement) return props as any;\n // eslint-disable-next-line unused-imports/no-unused-vars\n const { type, ref: triggerRef, ...restProps } = props as any;\n return restProps;\n })();\n\n const mergedProps = mergeProps((children as any).props, resolvedProps);\n const childClassName =\n typeof (mergedProps as any).className === 'function'\n ? (mergedProps as any).className(state)\n : (mergedProps as any).className;\n const extraClassName = typeof className === 'function' ? className(state) : className;\n\n return cloneElement(children as any, {\n ...mergedProps,\n className: clsx(baseClassName, childClassName, extraClassName),\n ref: mergeRefs([(children as any).ref, (props as any).ref, refProp]),\n });\n }}\n />\n );\n }\n\n return (\n <Select.Trigger\n {...rest}\n className={mergeStateClassName([triggerStyle], className) as any}\n nativeButton={resolvedNativeButton}\n ref={refProp as any}\n >\n {children}\n </Select.Trigger>\n );\n};\n\nSelectTrigger.displayName = 'SelectTrigger';\n\nexport type SelectIconProps = ComponentProps<typeof Select.Icon>;\n\nexport const SelectIcon = ({ className, ...rest }: SelectIconProps) => {\n return <Select.Icon className={mergeStateClassName([styles.icon], className) as any} {...rest} />;\n};\n\nSelectIcon.displayName = 'SelectIcon';\n\nexport type SelectValueProps = ComponentProps<typeof Select.Value>;\n\nexport const SelectValue = ({ className, ...rest }: SelectValueProps) => {\n return (\n <Select.Value className={mergeStateClassName([styles.value], className) as any} {...rest} />\n );\n};\n\nSelectValue.displayName = 'SelectValue';\n\nexport type SelectPortalProps = ComponentProps<typeof Select.Portal> & {\n /**\n * When `container` is not provided, it uses a shared container created by `usePortalContainer`.\n */\n container?: HTMLElement | null;\n};\n\nexport const SelectPortal = ({ container, ...rest }: SelectPortalProps) => {\n const appElement = useAppElement();\n return <Select.Portal container={container ?? appElement ?? undefined} {...rest} />;\n};\n\nSelectPortal.displayName = 'SelectPortal';\n\nexport type SelectPositionerProps = ComponentProps<typeof Select.Positioner>;\n\nexport const SelectPositioner = ({\n align,\n alignItemWithTrigger,\n className,\n collisionPadding,\n side,\n sideOffset,\n style,\n ref: forwardedRef,\n ...rest\n}: SelectPositionerProps) => {\n const explicitZIndex =\n typeof style !== 'function' && style?.zIndex != null && typeof style.zIndex === 'number'\n ? style.zIndex\n : undefined;\n const { zIndex, ref: zRef } = useLayerZIndex<HTMLDivElement>('floating', explicitZIndex);\n const composedRef = useMergeRefs([forwardedRef, zRef]);\n\n const resolvedStyle =\n typeof style === 'function'\n ? (state: any) => ({ zIndex, ...style(state) })\n : { zIndex, ...style };\n\n return (\n <Select.Positioner\n align={align ?? 'start'}\n alignItemWithTrigger={alignItemWithTrigger ?? false}\n className={mergeStateClassName([styles.positioner], className) as any}\n collisionPadding={collisionPadding ?? getFloatingCollisionPadding()}\n ref={composedRef as any}\n side={side ?? 'bottom'}\n sideOffset={sideOffset ?? 6}\n style={resolvedStyle}\n {...rest}\n />\n );\n};\n\nSelectPositioner.displayName = 'SelectPositioner';\n\nexport type SelectPopupProps = ComponentProps<typeof Select.Popup>;\n\nexport const SelectPopup = ({ className, ...rest }: SelectPopupProps) => {\n return (\n <Select.Popup\n className={\n mergeStateClassName(\n [menuStyles.popup, styles.popup],\n className,\n menuClassNames.popup,\n ) as any\n }\n {...rest}\n />\n );\n};\n\nSelectPopup.displayName = 'SelectPopup';\n\nexport type SelectListProps = ComponentProps<typeof Select.List>;\n\nexport const SelectList = ({ className, ...rest }: SelectListProps) => {\n return <Select.List className={mergeStateClassName([styles.list], className) as any} {...rest} />;\n};\n\nSelectList.displayName = 'SelectList';\n\nexport type SelectItemProps = ComponentProps<typeof Select.Item>;\n\nexport const SelectItem = ({ className, ...rest }: SelectItemProps) => {\n return (\n <Select.Item className={mergeStateClassName([menuStyles.item], className) as any} {...rest} />\n );\n};\n\nSelectItem.displayName = 'SelectItem';\n\nexport type SelectItemTextProps = ComponentProps<typeof Select.ItemText>;\n\nexport const SelectItemText = ({ className, ...rest }: SelectItemTextProps) => {\n return (\n <Select.ItemText\n className={mergeStateClassName([menuStyles.label], className, menuClassNames.label) as any}\n {...rest}\n />\n );\n};\n\nSelectItemText.displayName = 'SelectItemText';\n\nexport type SelectItemIndicatorProps = ComponentProps<typeof Select.ItemIndicator>;\n\nexport const SelectItemIndicator = ({ className, ...rest }: SelectItemIndicatorProps) => {\n return (\n <Select.ItemIndicator\n className={mergeStateClassName([styles.itemIndicator], className) as any}\n {...rest}\n />\n );\n};\n\nSelectItemIndicator.displayName = 'SelectItemIndicator';\n\nexport type SelectGroupProps = ComponentProps<typeof Select.Group>;\n\nexport const SelectGroup = ({ className, ...rest }: SelectGroupProps) => {\n return <Select.Group className={className} {...rest} />;\n};\n\nSelectGroup.displayName = 'SelectGroup';\n\nexport type SelectGroupLabelProps = ComponentProps<typeof Select.GroupLabel>;\n\nexport const SelectGroupLabel = ({ className, ...rest }: SelectGroupLabelProps) => {\n return (\n <Select.GroupLabel\n className={mergeStateClassName([menuStyles.groupLabel], className) as any}\n {...rest}\n />\n );\n};\n\nSelectGroupLabel.displayName = 'SelectGroupLabel';\n\nexport type SelectScrollUpArrowProps = ComponentProps<typeof Select.ScrollUpArrow>;\n\nexport const SelectScrollUpArrow = ({ className, ...rest }: SelectScrollUpArrowProps) => {\n return (\n <Select.ScrollUpArrow\n className={mergeStateClassName([styles.scrollArrow], className) as any}\n {...rest}\n />\n );\n};\n\nSelectScrollUpArrow.displayName = 'SelectScrollUpArrow';\n\nexport type SelectScrollDownArrowProps = ComponentProps<typeof Select.ScrollDownArrow>;\n\nexport const SelectScrollDownArrow = ({ className, ...rest }: SelectScrollDownArrowProps) => {\n return (\n <Select.ScrollDownArrow\n className={mergeStateClassName([styles.scrollArrow], className) as any}\n {...rest}\n />\n );\n};\n\nSelectScrollDownArrow.displayName = 'SelectScrollDownArrow';\n\nexport type SelectArrowProps = ComponentProps<typeof Select.Arrow>;\n\nexport const SelectArrow = ({ className, ...rest }: SelectArrowProps) => {\n return (\n <Select.Arrow\n className={mergeStateClassName([styles.arrow], className, 'lobe-select-arrow') as any}\n {...rest}\n />\n );\n};\n\nSelectArrow.displayName = 'SelectArrow';\n"],"mappings":"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"}
@@ -26,7 +26,14 @@ const normalizeValueFor = (isMultiple) => (nextValue) => {
26
26
  if (Array.isArray(nextValue)) return nextValue[0] ?? null;
27
27
  return nextValue === void 0 ? null : nextValue;
28
28
  };
29
+ /**
30
+ * Base UI reports value changes it derives itself (e.g. pruning selected values that are
31
+ * missing from the filtered options) with reason 'none'. While the popup is open, or while
32
+ * it is closing and the search term has not been reset yet, those are not user selections.
33
+ * A 'none' change on a fully closed select is a typeahead selection and stays valid.
34
+ */
35
+ const shouldIgnoreRootValueChange = ({ mergedOpen, reason, searchValue }) => reason === "none" && (mergedOpen || searchValue !== "");
29
36
  //#endregion
30
- export { countVirtualItems, getOptionSearchText, isGroupOption, isValueEmpty, normalizeValueFor, splitBySeparators };
37
+ export { countVirtualItems, getOptionSearchText, isGroupOption, isValueEmpty, normalizeValueFor, shouldIgnoreRootValueChange, splitBySeparators };
31
38
 
32
39
  //# sourceMappingURL=helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":[],"sources":["../../src/Select/helpers.ts"],"sourcesContent":["import { type SelectOption, type SelectOptionGroup, type SelectOptions } from './type';\n\nexport const isGroupOption = <Value>(\n option: SelectOption<Value> | SelectOptionGroup<Value>,\n): option is SelectOptionGroup<Value> => Boolean((option as SelectOptionGroup<Value>).options);\n\nexport const getOptionSearchText = <Value>(option: SelectOption<Value>) => {\n if (typeof option.label === 'string' || typeof option.label === 'number') {\n return String(option.label);\n }\n if (option.title) return option.title;\n if (typeof option.value === 'string' || typeof option.value === 'number') {\n return String(option.value);\n }\n return '';\n};\n\nconst escapeRegExp = (value: string) => value.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&');\n\nexport const splitBySeparators = (value: string, separators?: string[]) => {\n if (!separators || separators.length === 0) return [value];\n const pattern = separators.map(escapeRegExp).join('|');\n return value.split(new RegExp(pattern, 'g'));\n};\n\nexport const countVirtualItems = (items: SelectOptions) =>\n items.reduce((count, item) => {\n if (isGroupOption(item)) {\n return count + item.options.length + 1;\n }\n return count + 1;\n }, 0);\n\nexport const isValueEmpty = (value: unknown) =>\n value === null || value === undefined || value === '';\n\nexport const normalizeValueFor = (isMultiple: boolean) => (nextValue: any) => {\n if (isMultiple) {\n if (Array.isArray(nextValue)) return nextValue;\n if (nextValue === null || nextValue === undefined) return [];\n return [nextValue];\n }\n if (Array.isArray(nextValue)) return nextValue[0] ?? null;\n return nextValue === undefined ? null : nextValue;\n};\n"],"mappings":";AAEA,MAAa,iBACX,WACuC,QAAS,OAAoC,OAAO;AAE7F,MAAa,uBAA8B,WAAgC;CACzE,IAAI,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,UAAU,UAC9D,OAAO,OAAO,OAAO,KAAK;CAE5B,IAAI,OAAO,OAAO,OAAO,OAAO;CAChC,IAAI,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,UAAU,UAC9D,OAAO,OAAO,OAAO,KAAK;CAE5B,OAAO;AACT;AAEA,MAAM,gBAAgB,UAAkB,MAAM,WAAW,uBAAuB,MAAM;AAEtF,MAAa,qBAAqB,OAAe,eAA0B;CACzE,IAAI,CAAC,cAAc,WAAW,WAAW,GAAG,OAAO,CAAC,KAAK;CACzD,MAAM,UAAU,WAAW,IAAI,YAAY,CAAC,CAAC,KAAK,GAAG;CACrD,OAAO,MAAM,MAAM,IAAI,OAAO,SAAS,GAAG,CAAC;AAC7C;AAEA,MAAa,qBAAqB,UAChC,MAAM,QAAQ,OAAO,SAAS;CAC5B,IAAI,cAAc,IAAI,GACpB,OAAO,QAAQ,KAAK,QAAQ,SAAS;CAEvC,OAAO,QAAQ;AACjB,GAAG,CAAC;AAEN,MAAa,gBAAgB,UAC3B,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU;AAErD,MAAa,qBAAqB,gBAAyB,cAAmB;CAC5E,IAAI,YAAY;EACd,IAAI,MAAM,QAAQ,SAAS,GAAG,OAAO;EACrC,IAAI,cAAc,QAAQ,cAAc,KAAA,GAAW,OAAO,CAAC;EAC3D,OAAO,CAAC,SAAS;CACnB;CACA,IAAI,MAAM,QAAQ,SAAS,GAAG,OAAO,UAAU,MAAM;CACrD,OAAO,cAAc,KAAA,IAAY,OAAO;AAC1C"}
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../../src/Select/helpers.ts"],"sourcesContent":["import { type SelectOption, type SelectOptionGroup, type SelectOptions } from './type';\n\nexport const isGroupOption = <Value>(\n option: SelectOption<Value> | SelectOptionGroup<Value>,\n): option is SelectOptionGroup<Value> => Boolean((option as SelectOptionGroup<Value>).options);\n\nexport const getOptionSearchText = <Value>(option: SelectOption<Value>) => {\n if (typeof option.label === 'string' || typeof option.label === 'number') {\n return String(option.label);\n }\n if (option.title) return option.title;\n if (typeof option.value === 'string' || typeof option.value === 'number') {\n return String(option.value);\n }\n return '';\n};\n\nconst escapeRegExp = (value: string) => value.replaceAll(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&');\n\nexport const splitBySeparators = (value: string, separators?: string[]) => {\n if (!separators || separators.length === 0) return [value];\n const pattern = separators.map(escapeRegExp).join('|');\n return value.split(new RegExp(pattern, 'g'));\n};\n\nexport const countVirtualItems = (items: SelectOptions) =>\n items.reduce((count, item) => {\n if (isGroupOption(item)) {\n return count + item.options.length + 1;\n }\n return count + 1;\n }, 0);\n\nexport const isValueEmpty = (value: unknown) =>\n value === null || value === undefined || value === '';\n\nexport const normalizeValueFor = (isMultiple: boolean) => (nextValue: any) => {\n if (isMultiple) {\n if (Array.isArray(nextValue)) return nextValue;\n if (nextValue === null || nextValue === undefined) return [];\n return [nextValue];\n }\n if (Array.isArray(nextValue)) return nextValue[0] ?? null;\n return nextValue === undefined ? null : nextValue;\n};\n\n/**\n * Base UI reports value changes it derives itself (e.g. pruning selected values that are\n * missing from the filtered options) with reason 'none'. While the popup is open, or while\n * it is closing and the search term has not been reset yet, those are not user selections.\n * A 'none' change on a fully closed select is a typeahead selection and stays valid.\n */\nexport const shouldIgnoreRootValueChange = ({\n mergedOpen,\n reason,\n searchValue,\n}: {\n mergedOpen: boolean;\n reason?: string;\n searchValue: string;\n}) => reason === 'none' && (mergedOpen || searchValue !== '');\n"],"mappings":";AAEA,MAAa,iBACX,WACuC,QAAS,OAAoC,OAAO;AAE7F,MAAa,uBAA8B,WAAgC;CACzE,IAAI,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,UAAU,UAC9D,OAAO,OAAO,OAAO,KAAK;CAE5B,IAAI,OAAO,OAAO,OAAO,OAAO;CAChC,IAAI,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,UAAU,UAC9D,OAAO,OAAO,OAAO,KAAK;CAE5B,OAAO;AACT;AAEA,MAAM,gBAAgB,UAAkB,MAAM,WAAW,uBAAuB,MAAM;AAEtF,MAAa,qBAAqB,OAAe,eAA0B;CACzE,IAAI,CAAC,cAAc,WAAW,WAAW,GAAG,OAAO,CAAC,KAAK;CACzD,MAAM,UAAU,WAAW,IAAI,YAAY,CAAC,CAAC,KAAK,GAAG;CACrD,OAAO,MAAM,MAAM,IAAI,OAAO,SAAS,GAAG,CAAC;AAC7C;AAEA,MAAa,qBAAqB,UAChC,MAAM,QAAQ,OAAO,SAAS;CAC5B,IAAI,cAAc,IAAI,GACpB,OAAO,QAAQ,KAAK,QAAQ,SAAS;CAEvC,OAAO,QAAQ;AACjB,GAAG,CAAC;AAEN,MAAa,gBAAgB,UAC3B,UAAU,QAAQ,UAAU,KAAA,KAAa,UAAU;AAErD,MAAa,qBAAqB,gBAAyB,cAAmB;CAC5E,IAAI,YAAY;EACd,IAAI,MAAM,QAAQ,SAAS,GAAG,OAAO;EACrC,IAAI,cAAc,QAAQ,cAAc,KAAA,GAAW,OAAO,CAAC;EAC3D,OAAO,CAAC,SAAS;CACnB;CACA,IAAI,MAAM,QAAQ,SAAS,GAAG,OAAO,UAAU,MAAM;CACrD,OAAO,cAAc,KAAA,IAAY,OAAO;AAC1C;;;;;;;AAQA,MAAa,+BAA+B,EAC1C,YACA,QACA,kBAKI,WAAW,WAAW,cAAc,gBAAgB"}
@@ -135,7 +135,7 @@ function useSelectOpen({ defaultOpen, onOpenChange, open }) {
135
135
  mergedOpen
136
136
  };
137
137
  }
138
- function useSelectSearch({ appendTagValues, handleOpenChange, mergedOpen, mode, removeLastTagValue, resolvedOptions, showSearch, tokenSeparators }) {
138
+ function useSelectSearch({ filterOption, onSearch, appendTagValues, handleOpenChange, mergedOpen, mode, removeLastTagValue, resolvedOptions, showSearch, tokenSeparators }) {
139
139
  const [searchValue, setSearchValue] = useState("");
140
140
  const shouldShowSearch = Boolean(showSearch || mode === "tags");
141
141
  useEffect(() => {
@@ -153,9 +153,11 @@ function useSelectSearch({ appendTagValues, handleOpenChange, mergedOpen, mode,
153
153
  }
154
154
  }
155
155
  setSearchValue(nextValue);
156
+ onSearch?.(nextValue);
156
157
  }, [
157
158
  appendTagValues,
158
159
  mode,
160
+ onSearch,
159
161
  tokenSeparators
160
162
  ]);
161
163
  const handleSearchKeyDown = useCallback((event) => {
@@ -190,20 +192,22 @@ function useSelectSearch({ appendTagValues, handleOpenChange, mergedOpen, mode,
190
192
  }, []);
191
193
  return {
192
194
  filteredOptions: useMemo(() => {
193
- if (!shouldShowSearch || !searchValue.trim()) return resolvedOptions;
195
+ if (!shouldShowSearch || !searchValue.trim() || filterOption === false) return resolvedOptions;
194
196
  const query = searchValue.trim().toLowerCase();
197
+ const matches = (option) => typeof filterOption === "function" ? filterOption(searchValue, option) : getOptionSearchText(option).toLowerCase().includes(query);
195
198
  return resolvedOptions.map((item) => {
196
199
  if (isGroupOption(item)) {
197
- const groupItems = item.options.filter((option) => getOptionSearchText(option).toLowerCase().includes(query));
200
+ const groupItems = item.options.filter((option) => matches(option));
198
201
  if (!groupItems.length) return null;
199
202
  return {
200
203
  ...item,
201
204
  options: groupItems
202
205
  };
203
206
  }
204
- return getOptionSearchText(item).toLowerCase().includes(query) ? item : null;
207
+ return matches(item) ? item : null;
205
208
  }).filter(Boolean);
206
209
  }, [
210
+ filterOption,
207
211
  resolvedOptions,
208
212
  searchValue,
209
213
  shouldShowSearch
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.mjs","names":[],"sources":["../../src/Select/hooks.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\n\nimport {\n countVirtualItems,\n getOptionSearchText,\n isGroupOption,\n isValueEmpty,\n normalizeValueFor,\n splitBySeparators,\n} from './helpers';\nimport {\n type SelectOption,\n type SelectOptions,\n type SelectProps,\n type SelectRootChangeEventDetails,\n type SelectSize,\n} from './type';\n\ninterface UseSelectValueParams {\n defaultValue: SelectProps['defaultValue'];\n extraOptions: SelectOption<any>[];\n isMultiple: boolean;\n onChange: SelectProps['onChange'];\n onSelect: SelectProps['onSelect'];\n options: SelectOptions<any> | undefined;\n setExtraOptions: React.Dispatch<React.SetStateAction<SelectOption<any>[]>>;\n value: SelectProps['value'];\n}\n\nexport function useSelectValue({\n defaultValue,\n extraOptions,\n isMultiple,\n onChange,\n onSelect,\n options,\n setExtraOptions,\n value,\n}: UseSelectValueParams) {\n const [uncontrolledValue, setUncontrolledValue] = useState<any>(() => {\n if (defaultValue !== undefined) return defaultValue;\n return isMultiple ? [] : null;\n });\n\n const normalizeValue = useMemo(() => normalizeValueFor(isMultiple), [isMultiple]);\n\n const mergedValue = value !== undefined ? value : uncontrolledValue;\n const normalizedValue = useMemo(() => normalizeValue(mergedValue), [mergedValue, normalizeValue]);\n\n const valueArray = useMemo(() => {\n if (isMultiple) return normalizedValue as any[];\n return isValueEmpty(normalizedValue) ? [] : [normalizedValue];\n }, [isMultiple, normalizedValue]);\n\n const { optionMap, resolvedOptions } = useMemo(() => {\n const baseOptions = options ?? [];\n const optionValueMap = new Map<any, SelectOption<any>>();\n\n const addOption = (item: SelectOption<any>) => {\n if (!optionValueMap.has(item.value)) {\n optionValueMap.set(item.value, item);\n }\n };\n\n baseOptions.forEach((item) => {\n if (isGroupOption(item)) {\n item.options.forEach(addOption);\n } else {\n addOption(item);\n }\n });\n\n const filteredExtraOptions = extraOptions.filter((item) => !optionValueMap.has(item.value));\n filteredExtraOptions.forEach(addOption);\n const mergedOptions: SelectOptions<any> = [...baseOptions, ...filteredExtraOptions];\n\n const missingValueOptions: SelectOption<any>[] = valueArray\n .filter((val) => !optionValueMap.has(val))\n .map((val) => ({ label: String(val), value: val }));\n missingValueOptions.forEach(addOption);\n\n return {\n optionMap: optionValueMap,\n resolvedOptions: missingValueOptions.length\n ? [...mergedOptions, ...missingValueOptions]\n : mergedOptions,\n };\n }, [extraOptions, options, valueArray]);\n\n const getOption = useCallback(\n (optionValue: any): SelectOption<any> => {\n const matched = optionMap.get(optionValue);\n if (matched) return matched;\n if (optionValue && typeof optionValue === 'object' && 'label' in optionValue) {\n return { label: (optionValue as any).label, value: optionValue };\n }\n return { label: String(optionValue), value: optionValue };\n },\n [optionMap],\n );\n\n const previousValueRef = useRef<any>(normalizedValue);\n useEffect(() => {\n previousValueRef.current = normalizedValue;\n }, [normalizedValue]);\n\n const handleValueChange = useCallback(\n (nextValue: any) => {\n const normalizedNextValue = normalizeValue(nextValue);\n const previousValue = previousValueRef.current;\n\n if (isMultiple) {\n const prevValues = Array.isArray(previousValue) ? previousValue : [];\n const nextValues = Array.isArray(normalizedNextValue) ? normalizedNextValue : [];\n const addedValues = nextValues.filter(\n (val) => !prevValues.some((prev) => Object.is(prev, val)),\n );\n addedValues.forEach((val) => onSelect?.(val, getOption(val)));\n\n if (value === undefined) setUncontrolledValue(nextValues);\n onChange?.(\n nextValues,\n nextValues.map((val) => getOption(val)),\n );\n } else {\n if (!isValueEmpty(normalizedNextValue) && !Object.is(previousValue, normalizedNextValue)) {\n onSelect?.(normalizedNextValue, getOption(normalizedNextValue));\n }\n if (value === undefined) setUncontrolledValue(normalizedNextValue);\n onChange?.(\n isValueEmpty(normalizedNextValue) ? undefined : normalizedNextValue,\n isValueEmpty(normalizedNextValue) ? undefined : getOption(normalizedNextValue),\n );\n }\n\n previousValueRef.current = normalizedNextValue;\n },\n [getOption, isMultiple, normalizeValue, onChange, onSelect, value],\n );\n\n const appendTagValues = useCallback(\n (rawValues: string[]) => {\n const valuesToAdd = rawValues.map((val) => val.trim()).filter(Boolean);\n if (!valuesToAdd.length) return;\n\n const currentValues = Array.isArray(previousValueRef.current)\n ? previousValueRef.current\n : valueArray;\n const nextValues = [...currentValues];\n const newOptionValues = valuesToAdd.filter((val) => !optionMap.has(val));\n\n if (newOptionValues.length > 0) {\n setExtraOptions((prev) => {\n const existingValues = new Set(prev.map((item) => item.value));\n const merged = [...prev];\n newOptionValues.forEach((val) => {\n if (!existingValues.has(val)) {\n merged.push({ label: val, value: val });\n }\n });\n return merged;\n });\n }\n\n valuesToAdd.forEach((val) => {\n if (!nextValues.some((item) => Object.is(item, val))) {\n nextValues.push(val);\n }\n });\n\n if (nextValues.length !== valueArray.length) {\n handleValueChange(nextValues);\n }\n },\n [handleValueChange, optionMap, setExtraOptions, valueArray],\n );\n\n const removeLastTagValue = useCallback(() => {\n const currentValues = Array.isArray(previousValueRef.current)\n ? previousValueRef.current\n : valueArray;\n if (currentValues.length > 0) handleValueChange(currentValues.slice(0, -1));\n }, [handleValueChange, valueArray]);\n\n return {\n appendTagValues,\n getOption,\n handleValueChange,\n normalizedValue,\n normalizeValue,\n optionMap,\n resolvedOptions,\n removeLastTagValue,\n valueArray,\n };\n}\n\ninterface UseSelectOpenParams {\n defaultOpen: boolean | undefined;\n onOpenChange: SelectProps['onOpenChange'];\n open: boolean | undefined;\n}\n\nexport function useSelectOpen({ defaultOpen, onOpenChange, open }: UseSelectOpenParams) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n useEffect(() => {\n if (open !== undefined) setUncontrolledOpen(open);\n }, [open]);\n\n const mergedOpen = open ?? uncontrolledOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, eventDetails?: SelectRootChangeEventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (open === undefined) setUncontrolledOpen(nextOpen);\n },\n [onOpenChange, open],\n );\n\n return { handleOpenChange, mergedOpen };\n}\n\ninterface UseSelectSearchParams {\n appendTagValues: (values: string[]) => void;\n handleOpenChange: (nextOpen: boolean) => void;\n mergedOpen: boolean;\n mode: SelectProps['mode'];\n removeLastTagValue: () => void;\n resolvedOptions: SelectOptions;\n showSearch: boolean | undefined;\n tokenSeparators: string[] | undefined;\n}\n\nexport function useSelectSearch({\n appendTagValues,\n handleOpenChange,\n mergedOpen,\n mode,\n removeLastTagValue,\n resolvedOptions,\n showSearch,\n tokenSeparators,\n}: UseSelectSearchParams) {\n const [searchValue, setSearchValue] = useState('');\n const shouldShowSearch = Boolean(showSearch || mode === 'tags');\n\n useEffect(() => {\n if (!mergedOpen) setSearchValue('');\n }, [mergedOpen]);\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = event.target.value;\n if (mode === 'tags') {\n const parts = splitBySeparators(nextValue, tokenSeparators);\n if (parts.length > 1) {\n const pending = parts.pop() ?? '';\n appendTagValues(parts.filter(Boolean));\n setSearchValue(pending);\n return;\n }\n }\n setSearchValue(nextValue);\n },\n [appendTagValues, mode, tokenSeparators],\n );\n\n const handleSearchKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n handleOpenChange(false);\n return;\n }\n if (mode !== 'tags') return;\n\n if (event.key === 'Backspace' && !searchValue) {\n event.preventDefault();\n removeLastTagValue();\n return;\n }\n\n const isSeparator = tokenSeparators?.includes(event.key);\n if (event.key === 'Enter' || isSeparator) {\n event.preventDefault();\n event.stopPropagation();\n appendTagValues([searchValue]);\n setSearchValue('');\n }\n },\n [appendTagValues, handleOpenChange, mode, removeLastTagValue, searchValue, tokenSeparators],\n );\n\n // Stop propagation in capture phase + on keyup to block base-ui Popup-level\n // `useTypeahead` (and any ancestor typeahead) from hijacking the search\n // input's first-letter focus behavior. Do not remove.\n const stopSearchPropagation = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n }, []);\n\n const filteredOptions = useMemo(() => {\n if (!shouldShowSearch || !searchValue.trim()) return resolvedOptions;\n const query = searchValue.trim().toLowerCase();\n\n return resolvedOptions\n .map((item) => {\n if (isGroupOption(item)) {\n const groupItems = item.options.filter((option) =>\n getOptionSearchText(option).toLowerCase().includes(query),\n );\n if (!groupItems.length) return null;\n return { ...item, options: groupItems };\n }\n return getOptionSearchText(item).toLowerCase().includes(query) ? item : null;\n })\n .filter(Boolean) as SelectOptions;\n }, [resolvedOptions, searchValue, shouldShowSearch]);\n\n return {\n filteredOptions,\n handleSearchChange,\n handleSearchKeyDown,\n searchValue,\n shouldShowSearch,\n stopSearchPropagation,\n };\n}\n\ninterface UseSelectVirtualParams {\n filteredOptions: SelectOptions;\n listItemHeight: number | undefined;\n size: SelectSize;\n valueArray: any[];\n virtual: boolean | undefined;\n}\n\nexport function useSelectVirtual({\n filteredOptions,\n listItemHeight,\n size,\n valueArray,\n virtual,\n}: UseSelectVirtualParams) {\n const virtualListStyle = useMemo(() => {\n if (!virtual) return undefined;\n const rowCount = countVirtualItems(filteredOptions);\n const maxVisibleRows = 6;\n const estimatedRowHeight =\n listItemHeight ?? (size === 'large' ? 40 : size === 'small' ? 28 : 32);\n const visibleRows = Math.min(Math.max(rowCount, 1), maxVisibleRows);\n const estimatedHeight = visibleRows * estimatedRowHeight + 8;\n\n return {\n height: `min(${estimatedHeight}px, var(--lobe-select-available-height, var(--available-height)))`,\n };\n }, [filteredOptions, listItemHeight, size, virtual]);\n\n const selectedIndices = useMemo(() => {\n if (!virtual || valueArray.length === 0) return undefined;\n const selectedSet = new Set(valueArray);\n const indices: number[] = [];\n let index = 0;\n\n filteredOptions.forEach((item) => {\n if (isGroupOption(item)) {\n if (item.options.some((option) => selectedSet.has(option.value))) {\n indices.push(index);\n }\n index += 1;\n return;\n }\n if (selectedSet.has(item.value)) indices.push(index);\n index += 1;\n });\n\n return indices.length ? indices : undefined;\n }, [filteredOptions, valueArray, virtual]);\n\n return { selectedIndices, virtualListStyle };\n}\n\nexport function usePortalContainer() {\n const appElement = useAppElement();\n // `@base-ui/react/select` fails to mount its Popup into a `display: contents`\n // container in certain hosts (editor/chat inputs with focus traps), so a\n // portal host without a layout box falls back to `document.body`.\n return useMemo(() => {\n if (typeof window === 'undefined') return appElement;\n if (!(appElement instanceof HTMLElement)) return undefined;\n const display = window.getComputedStyle(appElement).display;\n return display === 'contents' ? document.body : appElement;\n }, [appElement]);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.mjs","names":[],"sources":["../../src/Select/hooks.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ChangeEvent,\n type KeyboardEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useAppElement } from '@/ConfigProvider/AppElementContext';\n\nimport {\n countVirtualItems,\n getOptionSearchText,\n isGroupOption,\n isValueEmpty,\n normalizeValueFor,\n splitBySeparators,\n} from './helpers';\nimport {\n type SelectOption,\n type SelectOptions,\n type SelectProps,\n type SelectRootChangeEventDetails,\n type SelectSize,\n} from './type';\n\ninterface UseSelectValueParams {\n defaultValue: SelectProps['defaultValue'];\n extraOptions: SelectOption<any>[];\n isMultiple: boolean;\n onChange: SelectProps['onChange'];\n onSelect: SelectProps['onSelect'];\n options: SelectOptions<any> | undefined;\n setExtraOptions: React.Dispatch<React.SetStateAction<SelectOption<any>[]>>;\n value: SelectProps['value'];\n}\n\nexport function useSelectValue({\n defaultValue,\n extraOptions,\n isMultiple,\n onChange,\n onSelect,\n options,\n setExtraOptions,\n value,\n}: UseSelectValueParams) {\n const [uncontrolledValue, setUncontrolledValue] = useState<any>(() => {\n if (defaultValue !== undefined) return defaultValue;\n return isMultiple ? [] : null;\n });\n\n const normalizeValue = useMemo(() => normalizeValueFor(isMultiple), [isMultiple]);\n\n const mergedValue = value !== undefined ? value : uncontrolledValue;\n const normalizedValue = useMemo(() => normalizeValue(mergedValue), [mergedValue, normalizeValue]);\n\n const valueArray = useMemo(() => {\n if (isMultiple) return normalizedValue as any[];\n return isValueEmpty(normalizedValue) ? [] : [normalizedValue];\n }, [isMultiple, normalizedValue]);\n\n const { optionMap, resolvedOptions } = useMemo(() => {\n const baseOptions = options ?? [];\n const optionValueMap = new Map<any, SelectOption<any>>();\n\n const addOption = (item: SelectOption<any>) => {\n if (!optionValueMap.has(item.value)) {\n optionValueMap.set(item.value, item);\n }\n };\n\n baseOptions.forEach((item) => {\n if (isGroupOption(item)) {\n item.options.forEach(addOption);\n } else {\n addOption(item);\n }\n });\n\n const filteredExtraOptions = extraOptions.filter((item) => !optionValueMap.has(item.value));\n filteredExtraOptions.forEach(addOption);\n const mergedOptions: SelectOptions<any> = [...baseOptions, ...filteredExtraOptions];\n\n const missingValueOptions: SelectOption<any>[] = valueArray\n .filter((val) => !optionValueMap.has(val))\n .map((val) => ({ label: String(val), value: val }));\n missingValueOptions.forEach(addOption);\n\n return {\n optionMap: optionValueMap,\n resolvedOptions: missingValueOptions.length\n ? [...mergedOptions, ...missingValueOptions]\n : mergedOptions,\n };\n }, [extraOptions, options, valueArray]);\n\n const getOption = useCallback(\n (optionValue: any): SelectOption<any> => {\n const matched = optionMap.get(optionValue);\n if (matched) return matched;\n if (optionValue && typeof optionValue === 'object' && 'label' in optionValue) {\n return { label: (optionValue as any).label, value: optionValue };\n }\n return { label: String(optionValue), value: optionValue };\n },\n [optionMap],\n );\n\n const previousValueRef = useRef<any>(normalizedValue);\n useEffect(() => {\n previousValueRef.current = normalizedValue;\n }, [normalizedValue]);\n\n const handleValueChange = useCallback(\n (nextValue: any) => {\n const normalizedNextValue = normalizeValue(nextValue);\n const previousValue = previousValueRef.current;\n\n if (isMultiple) {\n const prevValues = Array.isArray(previousValue) ? previousValue : [];\n const nextValues = Array.isArray(normalizedNextValue) ? normalizedNextValue : [];\n const addedValues = nextValues.filter(\n (val) => !prevValues.some((prev) => Object.is(prev, val)),\n );\n addedValues.forEach((val) => onSelect?.(val, getOption(val)));\n\n if (value === undefined) setUncontrolledValue(nextValues);\n onChange?.(\n nextValues,\n nextValues.map((val) => getOption(val)),\n );\n } else {\n if (!isValueEmpty(normalizedNextValue) && !Object.is(previousValue, normalizedNextValue)) {\n onSelect?.(normalizedNextValue, getOption(normalizedNextValue));\n }\n if (value === undefined) setUncontrolledValue(normalizedNextValue);\n onChange?.(\n isValueEmpty(normalizedNextValue) ? undefined : normalizedNextValue,\n isValueEmpty(normalizedNextValue) ? undefined : getOption(normalizedNextValue),\n );\n }\n\n previousValueRef.current = normalizedNextValue;\n },\n [getOption, isMultiple, normalizeValue, onChange, onSelect, value],\n );\n\n const appendTagValues = useCallback(\n (rawValues: string[]) => {\n const valuesToAdd = rawValues.map((val) => val.trim()).filter(Boolean);\n if (!valuesToAdd.length) return;\n\n const currentValues = Array.isArray(previousValueRef.current)\n ? previousValueRef.current\n : valueArray;\n const nextValues = [...currentValues];\n const newOptionValues = valuesToAdd.filter((val) => !optionMap.has(val));\n\n if (newOptionValues.length > 0) {\n setExtraOptions((prev) => {\n const existingValues = new Set(prev.map((item) => item.value));\n const merged = [...prev];\n newOptionValues.forEach((val) => {\n if (!existingValues.has(val)) {\n merged.push({ label: val, value: val });\n }\n });\n return merged;\n });\n }\n\n valuesToAdd.forEach((val) => {\n if (!nextValues.some((item) => Object.is(item, val))) {\n nextValues.push(val);\n }\n });\n\n if (nextValues.length !== valueArray.length) {\n handleValueChange(nextValues);\n }\n },\n [handleValueChange, optionMap, setExtraOptions, valueArray],\n );\n\n const removeLastTagValue = useCallback(() => {\n const currentValues = Array.isArray(previousValueRef.current)\n ? previousValueRef.current\n : valueArray;\n if (currentValues.length > 0) handleValueChange(currentValues.slice(0, -1));\n }, [handleValueChange, valueArray]);\n\n return {\n appendTagValues,\n getOption,\n handleValueChange,\n normalizedValue,\n normalizeValue,\n optionMap,\n resolvedOptions,\n removeLastTagValue,\n valueArray,\n };\n}\n\ninterface UseSelectOpenParams {\n defaultOpen: boolean | undefined;\n onOpenChange: SelectProps['onOpenChange'];\n open: boolean | undefined;\n}\n\nexport function useSelectOpen({ defaultOpen, onOpenChange, open }: UseSelectOpenParams) {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(Boolean(defaultOpen));\n\n useEffect(() => {\n if (open !== undefined) setUncontrolledOpen(open);\n }, [open]);\n\n const mergedOpen = open ?? uncontrolledOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean, eventDetails?: SelectRootChangeEventDetails) => {\n onOpenChange?.(nextOpen, eventDetails);\n if (open === undefined) setUncontrolledOpen(nextOpen);\n },\n [onOpenChange, open],\n );\n\n return { handleOpenChange, mergedOpen };\n}\n\ninterface UseSelectSearchParams {\n appendTagValues: (values: string[]) => void;\n filterOption?: SelectProps<any>['filterOption'];\n handleOpenChange: (nextOpen: boolean) => void;\n mergedOpen: boolean;\n mode: SelectProps['mode'];\n onSearch?: (value: string) => void;\n removeLastTagValue: () => void;\n resolvedOptions: SelectOptions;\n showSearch: boolean | undefined;\n tokenSeparators: string[] | undefined;\n}\n\nexport function useSelectSearch({\n filterOption,\n onSearch,\n appendTagValues,\n handleOpenChange,\n mergedOpen,\n mode,\n removeLastTagValue,\n resolvedOptions,\n showSearch,\n tokenSeparators,\n}: UseSelectSearchParams) {\n const [searchValue, setSearchValue] = useState('');\n const shouldShowSearch = Boolean(showSearch || mode === 'tags');\n\n useEffect(() => {\n if (!mergedOpen) setSearchValue('');\n }, [mergedOpen]);\n\n const handleSearchChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n const nextValue = event.target.value;\n if (mode === 'tags') {\n const parts = splitBySeparators(nextValue, tokenSeparators);\n if (parts.length > 1) {\n const pending = parts.pop() ?? '';\n appendTagValues(parts.filter(Boolean));\n setSearchValue(pending);\n return;\n }\n }\n setSearchValue(nextValue);\n onSearch?.(nextValue);\n },\n [appendTagValues, mode, onSearch, tokenSeparators],\n );\n\n const handleSearchKeyDown = useCallback(\n (event: KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n\n if (event.key === 'Escape') {\n handleOpenChange(false);\n return;\n }\n if (mode !== 'tags') return;\n\n if (event.key === 'Backspace' && !searchValue) {\n event.preventDefault();\n removeLastTagValue();\n return;\n }\n\n const isSeparator = tokenSeparators?.includes(event.key);\n if (event.key === 'Enter' || isSeparator) {\n event.preventDefault();\n event.stopPropagation();\n appendTagValues([searchValue]);\n setSearchValue('');\n }\n },\n [appendTagValues, handleOpenChange, mode, removeLastTagValue, searchValue, tokenSeparators],\n );\n\n // Stop propagation in capture phase + on keyup to block base-ui Popup-level\n // `useTypeahead` (and any ancestor typeahead) from hijacking the search\n // input's first-letter focus behavior. Do not remove.\n const stopSearchPropagation = useCallback((event: KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n }, []);\n\n const filteredOptions = useMemo(() => {\n if (!shouldShowSearch || !searchValue.trim() || filterOption === false) return resolvedOptions;\n const query = searchValue.trim().toLowerCase();\n const matches = (option: any) =>\n typeof filterOption === 'function'\n ? filterOption(searchValue, option)\n : getOptionSearchText(option).toLowerCase().includes(query);\n\n return resolvedOptions\n .map((item) => {\n if (isGroupOption(item)) {\n const groupItems = item.options.filter((option) => matches(option));\n if (!groupItems.length) return null;\n return { ...item, options: groupItems };\n }\n return matches(item) ? item : null;\n })\n .filter(Boolean) as SelectOptions;\n }, [filterOption, resolvedOptions, searchValue, shouldShowSearch]);\n\n return {\n filteredOptions,\n handleSearchChange,\n handleSearchKeyDown,\n searchValue,\n shouldShowSearch,\n stopSearchPropagation,\n };\n}\n\ninterface UseSelectVirtualParams {\n filteredOptions: SelectOptions;\n listItemHeight: number | undefined;\n size: SelectSize;\n valueArray: any[];\n virtual: boolean | undefined;\n}\n\nexport function useSelectVirtual({\n filteredOptions,\n listItemHeight,\n size,\n valueArray,\n virtual,\n}: UseSelectVirtualParams) {\n const virtualListStyle = useMemo(() => {\n if (!virtual) return undefined;\n const rowCount = countVirtualItems(filteredOptions);\n const maxVisibleRows = 6;\n const estimatedRowHeight =\n listItemHeight ?? (size === 'large' ? 40 : size === 'small' ? 28 : 32);\n const visibleRows = Math.min(Math.max(rowCount, 1), maxVisibleRows);\n const estimatedHeight = visibleRows * estimatedRowHeight + 8;\n\n return {\n height: `min(${estimatedHeight}px, var(--lobe-select-available-height, var(--available-height)))`,\n };\n }, [filteredOptions, listItemHeight, size, virtual]);\n\n const selectedIndices = useMemo(() => {\n if (!virtual || valueArray.length === 0) return undefined;\n const selectedSet = new Set(valueArray);\n const indices: number[] = [];\n let index = 0;\n\n filteredOptions.forEach((item) => {\n if (isGroupOption(item)) {\n if (item.options.some((option) => selectedSet.has(option.value))) {\n indices.push(index);\n }\n index += 1;\n return;\n }\n if (selectedSet.has(item.value)) indices.push(index);\n index += 1;\n });\n\n return indices.length ? indices : undefined;\n }, [filteredOptions, valueArray, virtual]);\n\n return { selectedIndices, virtualListStyle };\n}\n\nexport function usePortalContainer() {\n const appElement = useAppElement();\n // `@base-ui/react/select` fails to mount its Popup into a `display: contents`\n // container in certain hosts (editor/chat inputs with focus traps), so a\n // portal host without a layout box falls back to `document.body`.\n return useMemo(() => {\n if (typeof window === 'undefined') return appElement;\n if (!(appElement instanceof HTMLElement)) return undefined;\n const display = window.getComputedStyle(appElement).display;\n return display === 'contents' ? document.body : appElement;\n }, [appElement]);\n}\n"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { menuStyles } from "../DropdownMenu/style.mjs";
5
5
  import { styles } from "./style.mjs";
6
6
  import { getOptionSearchText, isGroupOption } from "./helpers.mjs";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
- import clsx from "clsx";
8
+ import clsx$1 from "clsx";
9
9
  import { Check } from "lucide-react";
10
10
  import { Select } from "@base-ui/react/select";
11
11
  //#region src/Select/renderOptions.tsx
@@ -15,7 +15,7 @@ function renderItem(option, index, params) {
15
15
  disabled: option.disabled,
16
16
  label: getOptionSearchText(option),
17
17
  value: option.value,
18
- ...styleProps([menuStyles.item, isBoldIndicator && styles.itemBoldSelected], clsx(classNames?.item, classNames?.option, option.className), {
18
+ ...styleProps([menuStyles.item, isBoldIndicator && styles.itemBoldSelected], clsx$1(classNames?.item, classNames?.option, option.className), {
19
19
  minHeight: listItemHeight,
20
20
  ...option.style
21
21
  }),